diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 96494b2..0000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -*.node*.js -node_modules -tests/*.js \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index c3a14d9..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - "env": { - "node": true, - "commonjs": true, - "es2021": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 12 - }, - "rules": {}, - - "ignorePatterns": ["**/examples/**"], - - "overrides": [ - { - "files": ["**/*ForWorkers*.js"], - "env": { - "node": false, - "worker": true, - "commonjs": true, - "es2021": true - }, - } - ] -}; diff --git a/.github/workflows/cloudflare-workers.yml b/.github/workflows/cloudflare-workers.yml index 2a89133..e7b4f53 100644 --- a/.github/workflows/cloudflare-workers.yml +++ b/.github/workflows/cloudflare-workers.yml @@ -16,16 +16,23 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x, 24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - cache: 'yarn' - - run: yarn install + - run: corepack enable + - name: Locate Yarn cache + id: yarn-cache + run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" + - uses: actions/cache@v4 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ matrix.node-version }}-yarn-${{ hashFiles('yarn.lock') }} + - run: yarn install --immutable - run: yarn lint - run: yarn test-workers diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c6c1eb2..f0d80df 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [22.x, 24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: @@ -25,7 +25,14 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - cache: 'yarn' - - run: yarn install + - run: corepack enable + - name: Locate Yarn cache + id: yarn-cache + run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" + - uses: actions/cache@v4 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ matrix.node-version }}-yarn-${{ hashFiles('yarn.lock') }} + - run: yarn install --immutable - run: yarn lint - run: yarn test-node diff --git a/.travis.yml b/.travis.yml index e9190df..b5238fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,12 @@ cache: directories: - node_modules node_js: - - '10' - - '12' - - '14' - - '15' - - '16' + - '22' + - '24' sudo: false install: - - yarn install + - corepack enable + - yarn install --immutable script: - yarn lint - yarn test diff --git a/README.md b/README.md index a0a5c54..5510e6f 100644 --- a/README.md +++ b/README.md @@ -23,31 +23,41 @@ If you have any questions, please contact [hello@listennotes.com](hello@listenno - [Requirements](#requirements) - [Usage](#usage) - [API Reference](#api-reference) - - [Full-text search](#full-text-search) - - [Typeahead search](#typeahead-search) - - [Fetch detailed meta data and episodes for a podcast by id](#fetch-detailed-meta-data-and-episodes-for-a-podcast-by-id) - - [Fetch detailed meta data for an episode by id](#fetch-detailed-meta-data-for-an-episode-by-id) - - [Fetch a list of supported languages for podcasts](#fetch-a-list-of-supported-languages-for-podcasts) - - [Fetch a list of podcast genres](#fetch-a-list-of-podcast-genres) - - [Fetch a list of best podcasts by genre](#fetch-a-list-of-best-podcasts-by-genre) - - [Fetch a list of supported countries/regions for best podcasts](#fetch-a-list-of-supported-countriesregions-for-best-podcasts) - - [Fetch recommendations for a podcast](#fetch-recommendations-for-a-podcast) - - [Fetch recommendations for an episode](#fetch-recommendations-for-an-episode) - - [Batch fetch basic meta data for episodes](#batch-fetch-basic-meta-data-for-episodes) - - [Batch fetch basic meta data for podcasts](#batch-fetch-basic-meta-data-for-podcasts) - - [Fetch a random podcast episode](#fetch-a-random-podcast-episode) - - [Fetch a curated list of podcasts by id](#fetch-a-curated-list-of-podcasts-by-id) - - [Fetch curated lists of podcasts](#fetch-curated-lists-of-podcasts) - - [Submit a podcast to Listen Notes database](#submit-a-podcast-to-listen-notes-database) - - [Request to delete a podcast](#request-to-delete-a-podcast) - - [Fetch a playlist's info and items (i.e., episodes or podcasts).](#fetch-a-playlists-info-and-items-ie-episodes-or-podcasts) - - [Fetch a list of your playlists.](#fetch-a-list-of-your-playlists) - - [Fetch trending search terms](#fetch-trending-search-terms) - - [Fetch related search terms](#fetch-related-search-terms) - - [Spell check on a search term](#spell-check-on-a-search-term) - - [Fetch audience demographics for a podcast](#fetch-audience-demographics-for-a-podcast) - - [Fetch podcasts by a publisher's domain name](#fetch-podcasts-by-a-publishers-domain-name) - - [Find individual episodes by searching for their titles](#find-individual-episodes-by-searching-for-their-titles) + + + +- [`search`](#search) — `GET /search` +- [`typeahead`](#typeahead) — `GET /typeahead` +- [`searchEpisodeTitles`](#searchepisodetitles) — `GET /search_episode_titles` +- [`spellcheck`](#spellcheck) — `GET /spellcheck` +- [`fetchRelatedSearches`](#fetchrelatedsearches) — `GET /related_searches` +- [`fetchTrendingSearches`](#fetchtrendingsearches) — `GET /trending_searches` +- [`fetchBestPodcasts`](#fetchbestpodcasts) — `GET /best_podcasts` +- [`fetchPodcastById`](#fetchpodcastbyid) — `GET /podcasts/{id}` +- [`deletePodcast`](#deletepodcast) — `DELETE /podcasts/{id}` +- [`fetchEpisodeById`](#fetchepisodebyid) — `GET /episodes/{id}` +- [`batchFetchEpisodes`](#batchfetchepisodes) — `POST /episodes` +- [`batchFetchPodcasts`](#batchfetchpodcasts) — `POST /podcasts` +- [`fetchCuratedPodcastsListById`](#fetchcuratedpodcastslistbyid) — `GET /curated_podcasts/{id}` +- [`fetchPodcastGenres`](#fetchpodcastgenres) — `GET /genres` +- [`fetchPodcastRegions`](#fetchpodcastregions) — `GET /regions` +- [`fetchPodcastLanguages`](#fetchpodcastlanguages) — `GET /languages` +- [`justListen`](#justlisten) — `GET /just_listen` +- [`fetchCuratedPodcastsLists`](#fetchcuratedpodcastslists) — `GET /curated_podcasts` +- [`fetchRecommendationsForPodcast`](#fetchrecommendationsforpodcast) — `GET /podcasts/{id}/recommendations` +- [`fetchRecommendationsForEpisode`](#fetchrecommendationsforepisode) — `GET /episodes/{id}/recommendations` +- [`submitPodcast`](#submitpodcast) — `POST /podcasts/submit` +- [`fetchPlaylistById`](#fetchplaylistbyid) — `GET /playlists/{id}` +- [`fetchMyPlaylists`](#fetchmyplaylists) — `GET /playlists` +- [`fetchAudienceForPodcast`](#fetchaudienceforpodcast) — `GET /podcasts/{id}/audience` +- [`fetchPodcastsByDomain`](#fetchpodcastsbydomain) — `GET /podcasts/domains/{domain_name}` +- [`createPlaylist`](#createplaylist) — `POST /playlists` +- [`updatePlaylist`](#updateplaylist) — `PUT /playlists/{id}` +- [`addPlaylistItem`](#addplaylistitem) — `POST /playlists/{id}/items` +- [`deletePlaylistItem`](#deleteplaylistitem) — `DELETE /playlists/{id}/items/{item_id}` +- [`updatePlaylistItemNotes`](#updateplaylistitemnotes) — `PUT /playlists/{id}/items/{item_id}` + + ## Installation @@ -62,7 +72,7 @@ yarn add podcast-api ### Requirements -- Node 18 or higher +- Version 3 requires Node.js 22 or higher. ## Usage @@ -125,2465 +135,167 @@ If `apiKey` is null, then we'll connect to a [mock server](https://www.listennot ## API Reference -Each function is a wrapper to send an HTTP request to the corresponding endpoint on the -[API Docs](https://www.listennotes.com/api/docs/). + +Each method accepts a single parameter object and returns a promise. The examples use Node.js; Workers use the same methods on `ClientForWorkers`. +### search -### Full-text search +Full-text search -Function Name: **search** +`GET /search` Full-text search on episodes, podcasts, or curated lists of podcasts. Use the `offset` parameter to paginate through search results. -The FREE plan allows to see up to 30 search results (or `offset` < 30) per query. -The PRO plan allows to see up to 300 search results (or `offset` < 300) per query. -The ENTERPRISE plan allows to see up to 10,000 search results (or `offset` < 10000) per query. - +The FREE plan allows to see up to 30 search results (or `offset` < 30) per query. +The PRO plan allows to see up to 300 search results (or `offset` < 300) per query. +The ENTERPRISE plan allows to see up to 10,000 search results (or `offset` < 10000) per query. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.search({ q: 'elon musk', sort_by_date: 1, only_in: 'title,description' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.search({ + "q": "star wars", + "sort_by_date": 0, + "type": "episode", + "offset": 0, + "len_min": 10, + "len_max": 30, + "genre_ids": "68,82", + "published_before": 1580172454000, + "published_after": 0, + "only_in": "title,description", + "language": "English", + "region": "", + "safe_mode": 0, + "unique_podcasts": 0, + "interviews_only": 0, + "sponsored_only": 0, + "page_size": 10 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-search). - - -
- Click to see example response - -```json -{ - "took": 0.133, - "count": 10, - "total": 8993, - "results": [ - { - "id": "ea09b575d07341599d8d5b71f205517b", - "rss": "https://theroughcut.libsyn.com/rss", - "link": "http://theroughcutpod.com/?p=786&utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/ea09b575d07341599d8d5b71f205517b/", - "image": "https://production.listennotes.com/podcasts/the-rough-cut-matt-feury-YMha8DxnUbc-53MLh7NpAwm.1400x1400.jpg", - "podcast": { - "id": "8758da9be6c8452884a8cab6373b007c", - "image": "https://production.listennotes.com/podcasts/the-rough-cut-matt-feury-YMha8DxnUbc-53MLh7NpAwm.1400x1400.jpg", - "genre_ids": [ - 264, - 68 - ], - "thumbnail": "https://production.listennotes.com/podcasts/the-rough-cut-matt-feury-DEkF_8ybj6A-53MLh7NpAwm.300x300.jpg", - "listen_score": 40, - "title_original": "The Rough Cut", - "listennotes_url": "https://www.listennotes.com/c/8758da9be6c8452884a8cab6373b007c/", - "title_highlighted": "The Rough Cut", - "publisher_original": "Matt Feury", - "publisher_highlighted": "Matt Feury", - "listen_score_global_rank": "2%" - }, - "itunes_id": 1471556007, - "thumbnail": "https://production.listennotes.com/podcasts/the-rough-cut-matt-feury-DEkF_8ybj6A-53MLh7NpAwm.300x300.jpg", - "pub_date_ms": 1579507216184, - "guid_from_rss": "004f03c8-cdf9-4ff5-9d89-b2147f8d55cf", - "title_original": "Star Wars - The Force Awakens", - "listennotes_url": "https://www.listennotes.com/e/ea09b575d07341599d8d5b71f205517b/", - "audio_length_sec": 1694, - "explicit_content": false, - "title_highlighted": "Star Wars - The Force Awakens", - "description_original": "

In this episode of The Rough Cut we close out our study of the final Skywalker trilogy with a look back on the film that helped the dormant franchise make the jump to lightspeed, Episode VII - The Force Awakens.\u00a0 Recorded in Amsterdam in front of a festival audience in 2018, editor Maryann Brandon ACE recounts her work on The Force Awakens just as she was about to begin editing what would come to be known as Episode IX - The Rise of Skywalker.

\u00a0

Go back to the beginning and listen to our podcast with Star Wars and 'Empire' editor, Paul Hirsch.

Hear editor Bob Ducsay talk about cutting The Last Jedi.

Listen to Maryann Brandon talk about her work on The Rise of Skywalker.

Get your hands on the non-linear editor behind the latest Skywalker trilogy,\u00a0 Avid Media Composer!

Subscribe to The Rough Cut for more great interviews with the heroes of the editing room!

\u00a0

\u00a0

", - "description_highlighted": "...Go back to the beginning and listen to our podcast with Star Wars and 'Empire' editor, Paul Hirsch. \nHear editor Bob Ducsay talk about cutting The Last Jedi....", - "transcripts_highlighted": [] - }, - { - "id": "39746ccfc0d64f62aea8e96641366109", - "rss": "https://www.spreaker.com/show/3200822/episodes/feed", - "link": "https://www.spreaker.com/user/mcucast/star-wars-is-better-than-star-trek?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/39746ccfc0d64f62aea8e96641366109/", - "image": "https://production.listennotes.com/podcasts/marvel-cinematic-universe-podcast-stranded-AlLrRjiNDya-aXR7VuG2z4p.1400x1400.jpg", - "podcast": { - "id": "593c42e343ba44e7b6f8634a946f0b52", - "image": "https://production.listennotes.com/podcasts/marvel-cinematic-universe-podcast-stranded-AlLrRjiNDya-aXR7VuG2z4p.1400x1400.jpg", - "genre_ids": [ - 68, - 99, - 122 - ], - "thumbnail": "https://production.listennotes.com/podcasts/marvel-cinematic-universe-podcast-stranded-F36vtPyanRB-aXR7VuG2z4p.300x300.jpg", - "listen_score": 59, - "title_original": "Marvel Cinematic Universe Podcast", - "listennotes_url": "https://www.listennotes.com/c/593c42e343ba44e7b6f8634a946f0b52/", - "title_highlighted": "Marvel Cinematic Universe Podcast", - "publisher_original": "Stranded Panda", - "publisher_highlighted": "Stranded Panda", - "listen_score_global_rank": "0.5%" - }, - "itunes_id": 907175322, - "thumbnail": "https://production.listennotes.com/podcasts/marvel-cinematic-universe-podcast-stranded-F36vtPyanRB-aXR7VuG2z4p.300x300.jpg", - "pub_date_ms": 1575521386425, - "guid_from_rss": "https://api.spreaker.com/episode/20495415", - "title_original": "Star Wars is better than Star Trek", - "listennotes_url": "https://www.listennotes.com/e/39746ccfc0d64f62aea8e96641366109/", - "audio_length_sec": 734, - "explicit_content": true, - "title_highlighted": "Star Wars is better than Star Trek", - "description_original": "A just for fun episode. Time to punish Matt for his sins against baby yoda

This show is part of the Spreaker Prime Network, if you are interested in advertising on this podcast, contact us at https://www.spreaker.com/show/3200822/advertisement", - "description_highlighted": "...A just for fun episode. Time to punish Matt for his sins against baby yodaThis show is part of the Spreaker Prime Network, if you are interested in advertising on this podcast, contact us at https://www.spreaker.com/show/3200822/advertisement...", - "transcripts_highlighted": [] - }, - { - "id": "42b1898db6a84973b41879618002937b", - "rss": "https://feeds.libsyn.com/125567/rss", - "link": "https://www.vintagerpg.com/2019/12/star-wars-galaxy-guides/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/42b1898db6a84973b41879618002937b/", - "image": "https://production.listennotes.com/podcasts/the-vintage-rpg-podcast-vintage-rpg-aPsHYKgykCR-eq8uGUY6vXN.1400x1400.jpg", - "podcast": { - "id": "f3094a0b14684300a3d6b69a1063e708", - "image": "https://production.listennotes.com/podcasts/the-vintage-rpg-podcast-vintage-rpg-aPsHYKgykCR-eq8uGUY6vXN.1400x1400.jpg", - "genre_ids": [ - 83, - 85, - 82 - ], - "thumbnail": "https://production.listennotes.com/podcasts/the-vintage-rpg-podcast-vintage-rpg-03VBIC7U68Y-eq8uGUY6vXN.300x300.jpg", - "listen_score": 47, - "title_original": "The Vintage RPG Podcast", - "listennotes_url": "https://www.listennotes.com/c/f3094a0b14684300a3d6b69a1063e708/", - "title_highlighted": "The Vintage RPG Podcast", - "publisher_original": "Vintage RPG", - "publisher_highlighted": "Vintage RPG", - "listen_score_global_rank": "1%" - }, - "itunes_id": 1409477830, - "thumbnail": "https://production.listennotes.com/podcasts/the-vintage-rpg-podcast-vintage-rpg-03VBIC7U68Y-eq8uGUY6vXN.300x300.jpg", - "pub_date_ms": 1575867600184, - "guid_from_rss": "9861105d-bf98-4684-871a-5cbe11484159", - "title_original": "Star Wars Galaxy Guides", - "listennotes_url": "https://www.listennotes.com/e/42b1898db6a84973b41879618002937b/", - "audio_length_sec": 1519, - "explicit_content": false, - "title_highlighted": "Star Wars Galaxy Guides", - "description_original": "

Because Star Wars is hitting the critical mass point for 2019, we figured we\u2019d add to the fun with an episode that looks at the Galaxy Guides series of sourcebooks for the West End Games Star Wars Role Playing Game. We take a quick tour through each of the twelve volumes and chat about what they added to the RPG experience and how they formed the backbone of the greater Star Wars Expanded Universe.

", - "description_highlighted": "...Because Star Wars is hitting the critical mass point for 2019, we figured we\u2019d add to the fun with an episode that looks at the Galaxy Guides series of sourcebooks for the West End Games Star Wars Role...", - "transcripts_highlighted": [] - }, - { - "id": "c877bf360bda4c74adea2ba066df6929", - "rss": "https://feeds.megaphone.fm/ROOSTER7199250968", - "link": "https://supercarlinbrothers.libsyn.com/star-wars-theory-the-great-star-wars-ice-cream-conspiracy?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/c877bf360bda4c74adea2ba066df6929/", - "image": "https://production.listennotes.com/podcasts/super-carlin-brothers-j-and-ben-carlin-biwhM2N35Rj-BodDr7iIAR3.1400x1400.jpg", - "podcast": { - "id": "8bdbb906eef04e5d8b391e947998e9af", - "image": "https://production.listennotes.com/podcasts/super-carlin-brothers-j-and-ben-carlin-biwhM2N35Rj-BodDr7iIAR3.1400x1400.jpg", - "genre_ids": [ - 99, - 265, - 214, - 68 - ], - "thumbnail": "https://production.listennotes.com/podcasts/super-carlin-brothers-j-and-ben-carlin-EtH8D7G3Qyq-BodDr7iIAR3.300x300.jpg", - "listen_score": 53, - "title_original": "Super Carlin Brothers", - "listennotes_url": "https://www.listennotes.com/c/8bdbb906eef04e5d8b391e947998e9af/", - "title_highlighted": "Super Carlin Brothers", - "publisher_original": "J and Ben Carlin", - "publisher_highlighted": "J and Ben Carlin", - "listen_score_global_rank": "0.5%" - }, - "itunes_id": 1479112798, - "thumbnail": "https://production.listennotes.com/podcasts/super-carlin-brothers-j-and-ben-carlin-EtH8D7G3Qyq-BodDr7iIAR3.300x300.jpg", - "pub_date_ms": 1574355600377, - "guid_from_rss": "d6549e8f-3718-4cbc-8fa0-6a5ce7c021b7", - "title_original": "Star Wars Theory: The Great Star Wars Ice Cream Conspiracy", - "listennotes_url": "https://www.listennotes.com/e/c877bf360bda4c74adea2ba066df6929/", - "audio_length_sec": 638, - "explicit_content": false, - "title_highlighted": "Star Wars Theory: The Great Star Wars Ice Cream Conspiracy", - "description_original": "

Hurry to http://upstart.com/SCB to find out HOW LOW your Upstart rate is.

\u00a0

The Mandalorian has introduced to us some brand new Star Wars Jargon. In the very first episode we learn about a special metal called Beskar that can be melted down and reinforce the Mandalorian\u2019s armor. We also know that if he can complete his mission he has an ENTIRE CAMONTO of the stuff waiting for him upon delivery of the Young Orphan Darling Asset, aka LIL YODA. But how much is a camtono? And how on TATOOINE could it have anything to do with ICE CREAM!?

", - "description_highlighted": "...The Mandalorian has introduced to us some brand new Star Wars Jargon....", - "transcripts_highlighted": [] - }, - { - "id": "a47ed9e517ed4767a679ac8499f27565", - "rss": "https://filmthreat.libsyn.com/rss", - "link": "https://filmthreat.libsyn.com/the-star-wars-saga-ranked?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/a47ed9e517ed4767a679ac8499f27565/", - "image": "https://production.listennotes.com/podcasts/film-threat-film-threat-podcast-network-qh2IVg58zR6-cBuD3xXjTAG.1400x1400.jpg", - "podcast": { - "id": "f0a8fa8df3d04ec08fba8d317dafdeb0", - "image": "https://production.listennotes.com/podcasts/film-threat-film-threat-podcast-network-qh2IVg58zR6-cBuD3xXjTAG.1400x1400.jpg", - "genre_ids": [ - 68 - ], - "thumbnail": "https://production.listennotes.com/podcasts/film-threat-film-threat-podcast-network-Awkm8hri9Sg-cBuD3xXjTAG.300x300.jpg", - "listen_score": 39, - "title_original": "Film Threat", - "listennotes_url": "https://www.listennotes.com/c/f0a8fa8df3d04ec08fba8d317dafdeb0/", - "title_highlighted": "Film Threat", - "publisher_original": "Film Threat Podcast Network", - "publisher_highlighted": "Film Threat Podcast Network", - "listen_score_global_rank": "2%" - }, - "itunes_id": 1202134377, - "thumbnail": "https://production.listennotes.com/podcasts/film-threat-film-threat-podcast-network-Awkm8hri9Sg-cBuD3xXjTAG.300x300.jpg", - "pub_date_ms": 1577019600037, - "guid_from_rss": "7bbf8fdc-22cb-4e9b-b3cb-edc9cd59a71f", - "title_original": "The Star Wars Saga Ranked", - "listennotes_url": "https://www.listennotes.com/e/a47ed9e517ed4767a679ac8499f27565/", - "audio_length_sec": 1512, - "explicit_content": true, - "title_highlighted": "The Star Wars Saga Ranked", - "description_original": "The circle is now complete. The Film Threat staff discusses all nine episodes of the Star Wars saga and ranks the best films, characters and now that we've seen them all, debates which is the best trilogy.", - "description_highlighted": "...The Film Threat staff discusses all nine episodes of the Star Wars saga and ranks the best films, characters and now that we've seen them all, debates which is the best trilogy....", - "transcripts_highlighted": [] - }, - { - "id": "a5ae21acf75a43538b635cf6b089f0b3", - "rss": "http://feeds.feedburner.com/FramesPerSecondPodcast", - "link": "https://megaphone.link/STU5698215144?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/a5ae21acf75a43538b635cf6b089f0b3/", - "image": "https://production.listennotes.com/podcasts/frames-per-second-studio71-Tk47uwatlcN-J_3zM-VyFvj.1400x1400.jpg", - "podcast": { - "id": "88c28bd52e32422c8f3a71fab45aa77f", - "image": "https://production.listennotes.com/podcasts/frames-per-second-studio71-Tk47uwatlcN-J_3zM-VyFvj.1400x1400.jpg", - "genre_ids": [ - 68 - ], - "thumbnail": "https://production.listennotes.com/podcasts/frames-per-second-studio71-nFjw84GgN7c-J_3zM-VyFvj.300x300.jpg", - "listen_score": 49, - "title_original": "Frames Per Second", - "listennotes_url": "https://www.listennotes.com/c/88c28bd52e32422c8f3a71fab45aa77f/", - "title_highlighted": "Frames Per Second", - "publisher_original": "Studio71", - "publisher_highlighted": "Studio71", - "listen_score_global_rank": "0.5%" - }, - "itunes_id": 1453571424, - "thumbnail": "https://production.listennotes.com/podcasts/frames-per-second-studio71-nFjw84GgN7c-J_3zM-VyFvj.300x300.jpg", - "pub_date_ms": 1576544400542, - "guid_from_rss": "90b15eb4-1fae-11ea-9f65-17cad885ccc2", - "title_original": "Is Star Wars Overrated?", - "listennotes_url": "https://www.listennotes.com/e/a5ae21acf75a43538b635cf6b089f0b3/", - "audio_length_sec": 778, - "explicit_content": true, - "title_highlighted": "Is Star Wars Overrated?", - "description_original": "

In this episode, we discuss whether or not Star Wars is overrated. Let us know your thoughts.

Learn more about your ad choices. Visit megaphone.fm/adchoices

", - "description_highlighted": "...In this episode, we discuss whether or not Star Wars is overrated. Let us know your thoughts. \n \nLearn more about your ad choices. Visit megaphone.fm/adchoices...", - "transcripts_highlighted": [] - }, - { - "id": "6280a11466dd407e99c66130f203167a", - "rss": "https://snlafterparty.libsyn.com/rss", - "link": "https://snlpodcast.com/episodes/2019/12/24/sample-star-wars-tv-talk-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/6280a11466dd407e99c66130f203167a/", - "image": "https://production.listennotes.com/podcasts/saturday-night-live-snl-afterparty-john-sEoTraLnKPB-_iOE4lLZ2pD.1400x1400.jpg", - "podcast": { - "id": "09b986e503d4448ab0b625f6233bdd65", - "image": "https://production.listennotes.com/podcasts/saturday-night-live-snl-afterparty-john-sEoTraLnKPB-_iOE4lLZ2pD.1400x1400.jpg", - "genre_ids": [ - 68, - 133, - 134 - ], - "thumbnail": "https://production.listennotes.com/podcasts/saturday-night-live-snl-afterparty-john-wm1CtQVkRfy-_iOE4lLZ2pD.300x300.jpg", - "listen_score": 43, - "title_original": "Saturday Night Live (SNL) Afterparty", - "listennotes_url": "https://www.listennotes.com/c/09b986e503d4448ab0b625f6233bdd65/", - "title_highlighted": "Saturday Night Live (SNL) Afterparty", - "publisher_original": "John Murray / Spry FM", - "publisher_highlighted": "John Murray / Spry FM", - "listen_score_global_rank": "1%" - }, - "itunes_id": 1133381225, - "thumbnail": "https://production.listennotes.com/podcasts/saturday-night-live-snl-afterparty-john-wm1CtQVkRfy-_iOE4lLZ2pD.300x300.jpg", - "pub_date_ms": 1576989000072, - "guid_from_rss": "98206b6e-fc6e-45a5-85a6-e54eb4657299", - "title_original": "Sample: Star Wars TV Talk Podcast", - "listennotes_url": "https://www.listennotes.com/e/6280a11466dd407e99c66130f203167a/", - "audio_length_sec": 1690, - "explicit_content": false, - "title_highlighted": "Sample: Star Wars TV Talk Podcast", - "description_original": "

While John is hard at work editing our coverage of Eddie Murphy's triumphant return to Studio 8H, please enjoy this excerpt from the Star Wars TV Talk podcast\u2014on which John is regularly featured.

This excerpt is from their discussion of the Disney+ streaming series The Mandalorian chapter 3: \"The Sin\", and contains heavy spoilers.

John's take on all things Star Wars TV, can be heard weekly at starwarstvtalk.com or by subscribing to \"Star Wars TV Talk\" wherever better podcasts can be found.

Get Our Full-Length Episodes on Patreon Notes ", - "description_highlighted": "...John's take on all things Star Wars TV, can be heard weekly at starwarstvtalk.com or by subscribing to \"Star Wars TV Talk\" wherever better podcasts can be found....", - "transcripts_highlighted": [] - }, - { - "id": "428fc8c5d1dc4ea4bfa7197f50dfcbef", - "rss": "https://anchor.fm/s/2e7b510/podcast/rss", - "link": "https://podcasters.spotify.com/pod/show/drzeuspodcast/episodes/Star-Wars-on-Saturday-Night-e9skm5?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/428fc8c5d1dc4ea4bfa7197f50dfcbef/", - "image": "https://production.listennotes.com/podcasts/dr-zeus-podcast-dr-zeus-ietJoCgElyS-uG3iyp0tI89.1400x1400.jpg", - "podcast": { - "id": "2c48295d6e2643ee837896a03920255a", - "image": "https://production.listennotes.com/podcasts/dr-zeus-podcast-dr-zeus-ietJoCgElyS-uG3iyp0tI89.1400x1400.jpg", - "genre_ids": [ - 133, - 68, - 263, - 86, - 82 - ], - "thumbnail": "https://production.listennotes.com/podcasts/dr-zeus-podcast-dr-zeus-EgmZh68AS2r-uG3iyp0tI89.300x300.jpg", - "listen_score": 24, - "title_original": "Dr Zeus Podcast ", - "listennotes_url": "https://www.listennotes.com/c/2c48295d6e2643ee837896a03920255a/", - "title_highlighted": "Dr Zeus Podcast ", - "publisher_original": "Dr Zeus ", - "publisher_highlighted": "Dr Zeus ", - "listen_score_global_rank": "10%" - }, - "itunes_id": 1360921520, - "thumbnail": "https://production.listennotes.com/podcasts/dr-zeus-podcast-dr-zeus-EgmZh68AS2r-uG3iyp0tI89.300x300.jpg", - "pub_date_ms": 1577587068379, - "guid_from_rss": "9298b06d-5ebe-4b87-bccb-39b6b2377962", - "title_original": "Star Wars on Saturday Night.", - "listennotes_url": "https://www.listennotes.com/e/428fc8c5d1dc4ea4bfa7197f50dfcbef/", - "audio_length_sec": 638, - "explicit_content": false, - "title_highlighted": "Star Wars on Saturday Night.", - "description_original": "Snl wars. \n\n--- \n\nSend in a voice message: https://podcasters.spotify.com/pod/show/drzeuspodcast/message", - "description_highlighted": "...Snl wars. \n\n--- \n\nSend in a voice message: https://podcasters.spotify.com/pod/show/drzeuspodcast/message...", - "transcripts_highlighted": [] - }, - { - "id": "abdc7a70194c4d6daaa429b7fc2ec5c6", - "rss": "https://triviawithbudds.libsyn.com/rss", - "link": "https://triviawithbudds.libsyn.com/11-trivia-questions-on-modern-star-wars?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/abdc7a70194c4d6daaa429b7fc2ec5c6/", - "image": "https://production.listennotes.com/podcasts/trivia-with-budds-ryan-budds--K74E8aYCBr-odHDeJf8O5Y.1400x1400.jpg", - "podcast": { - "id": "9229022e1b7e46578d8793b1601f983d", - "image": "https://production.listennotes.com/podcasts/trivia-with-budds-ryan-budds--K74E8aYCBr-odHDeJf8O5Y.1400x1400.jpg", - "genre_ids": [ - 68, - 82, - 133 - ], - "thumbnail": "https://production.listennotes.com/podcasts/trivia-with-budds-ryan-budds-YlFUN1Qs_68-odHDeJf8O5Y.300x300.jpg", - "listen_score": 49, - "title_original": "Trivia With Budds", - "listennotes_url": "https://www.listennotes.com/c/9229022e1b7e46578d8793b1601f983d/", - "title_highlighted": "Trivia With Budds", - "publisher_original": "Ryan Budds", - "publisher_highlighted": "Ryan Budds", - "listen_score_global_rank": "0.5%" - }, - "itunes_id": 1139115219, - "thumbnail": "https://production.listennotes.com/podcasts/trivia-with-budds-ryan-budds-YlFUN1Qs_68-odHDeJf8O5Y.300x300.jpg", - "pub_date_ms": 1577226086879, - "guid_from_rss": "6ab99079-61c0-4fa3-91f0-28cca5d918b0", - "title_original": "11 Trivia Questions on Modern Star Wars", - "listennotes_url": "https://www.listennotes.com/e/abdc7a70194c4d6daaa429b7fc2ec5c6/", - "audio_length_sec": 646, - "explicit_content": false, - "title_highlighted": "11 Trivia Questions on Modern Star Wars", - "description_original": "

With the release of Rise of Skywalker, I just had to include a round on the most recent Star Wars movies at my live events last week, and now, on the podcast! Grab a wookie and play!

Question of the Day brought to you by Funky Monkey Design of San Dimas, CA:\u00a0 What network originally aired Eureka's castle? Tweet me your answer @ryanbudds or email ryanbudds@gmail.com\u00a0to be eligible for a prize!\u00a0

Yesterday's QotD answer:\u00a0 Terry Trivia Team Name of the Day:\u00a0 Bob's Wahlburgers Funky Monkey Designs:\u00a0 http://fmdesignsinc.com/

Save 25% site wide when using the code BUDDS25 on www.DrewBlank.com! This guy makes the best pop culture art around. Grab some Office, Parks and Rec, Big Lebowski, Bill Murray, and Horror Icon coloring books for the ones you love, along with hundreds of other great creations, all for 1/4th off!\u00a0

THE FIRST TRIVIA QUESTION STARTS AT 03:53 Theme song by www.soundcloud.com/Frawsty

Bed Music:\u00a0 \"Misuse\" Kevin MacLeod (incompetech.com) Licensed under Creative Commons: By Attribution 4.0 License http://creativecommons.org/licenses/by/4.0/

http://TriviaWithBudds.comhttp://Facebook.com/TriviaWithBudds http://Twitter.com/ryanbudds http://Instagram.com/ryanbudds

Book a party, corporate event, or fundraiser anytime by emailing ryanbudds@gmail.com or use the contact form here: https://www.triviawithbudds.com/contact

SUPPORT THE SHOW:\u00a0www.Patreon.com/TriviaWithBudds

Send me your questions and I'll read them/answer them on the show. Also send me any topics you'd like me to cover on future episodes, anytime! Cheers.\u00a0

SPECIAL THANKS TO ALL MY PATREON SUBSCRIBERS INCLUDING:\u00a0 Chris Adams, Christopher Callahan, Veronica Baker, Manny Majarian, Greg Bristow, Brenda Martinez, Alex DeSmet, Joe Finnie, Manny Cortez, Sarah McKavetz, Simon Time, Mo Martinez, Randy Tatum, Joan Bryce, Katie Christofferson, Denise Leonard, Jen Wojnar, Sarah Guest, Jess Whitener, Kyle Bonnin, Dan Papallo, Robert Casey, Ian Schulze, Casey O'Connor, Marissa Cuthbertson, Kyle Aumer, Taryn Napolitano, Matthew Frost, Katie Smith, Brian Salyer, Megan Acuna, Anna Evans, Jim Fields, Lauren Ward, Greg Heinz, Wreck My Podcast, Douglas French, Erika Cooper, Mark Haas, Sarah Haas, Katelyn Reik, Casey Becker, Paul McLaughlin, Amy Jeppesen, Melissa Chesser, Shaun Delacruz, Feana Nevel, Cody Welter, Paul Doronila, Kathryn Mott, Luke McKay, Ricky Carney, Kyle Hendrickson, Willy Powell, Myke Edwards, Joe Jermolowicz, Joey Mucha, Mona Bray, and Russ Friedewald! YOU GUYS ROCK!\u00a0

", - "description_highlighted": "...With the release of Rise of Skywalker, I just had to include a round on the most recent Star Wars movies at my live events last week, and now, on the podcast! Grab a wookie and play!...", - "transcripts_highlighted": [] - }, - { - "id": "9cfb4901a891449aa30553cddfa582f8", - "rss": "http://sw7x7.libsyn.com/rss", - "link": "https://sites.libsyn.com/55931/1945-answering-star-wars-questions-from-star-wars-77-patrons?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/9cfb4901a891449aa30553cddfa582f8/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-HN08OoDE7pc-AIg3cZVKCsL.1400x1400.jpg", - "podcast": { - "id": "4d3fe717742d4963a85562e9f84d8c79", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-HN08OoDE7pc-AIg3cZVKCsL.1400x1400.jpg", - "genre_ids": [ - 86, - 68, - 82, - 100, - 101, - 160, - 138 - ], - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-2LryqMj-sGP-AIg3cZVKCsL.300x300.jpg", - "listen_score": 49, - "title_original": "Star Wars 7x7: A Daily Bite-Sized Dose of Star Wars Joy", - "listennotes_url": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "title_highlighted": "Star Wars 7x7: A Daily Bite-Sized Dose of Star Wars Joy", - "publisher_original": "Star Wars 7x7", - "publisher_highlighted": "Star Wars 7x7", - "listen_score_global_rank": "0.5%" - }, - "itunes_id": 896354638, - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-2LryqMj-sGP-AIg3cZVKCsL.300x300.jpg", - "pub_date_ms": 1572505201403, - "guid_from_rss": "dacf14513dd34eddaace4f1b4bc27f86", - "title_original": "1,945. Answering Star Wars Questions from Star Wars 7\u00d77 Patrons!", - "listennotes_url": "https://www.listennotes.com/e/9cfb4901a891449aa30553cddfa582f8/", - "audio_length_sec": 777, - "explicit_content": false, - "title_highlighted": "Answering Star Wars Questions from Star Wars 7\u00d77 Patrons!", - "description_original": "

Patrons of Star Wars 7x7 at the \"Vader's Fist\" level and above can submit questions for me to answer on the show every month! In this installment, we'll be talking about an aspect of the Millennium Falcon as it appears in The Rise of Skywalker; why Ben Solo may or may not have talked to his Force-ghost grandfather; and favorite Star Wars Halloween costumes. Punch it!

***I'm listener supported! Join the community at http://Patreon.com/sw7x7 to get access to bonus episodes and other insider rewards.***\u00a0

", - "description_highlighted": "...Patrons of Star Wars 7x7 at the \"Vader's Fist\" level and above can submit questions for me to answer on the show every month!...", - "transcripts_highlighted": [] - } - ], - "next_offset": 10 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "took": { - "type": "number", - "example": 0.093, - "description": "The time it took to fetch these search results. In seconds." - }, - "count": { - "type": "integer", - "example": 10, - "description": "The number of search results in this page." - }, - "total": { - "type": "integer", - "example": 1989, - "description": "The total number of search results." - }, - "results": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "title_original": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Plain text of podcast name." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "title_highlighted": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Highlighted segment of podcast name." - }, - "publisher_original": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Plain text of this podcast's publisher name." - }, - "publisher_highlighted": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Highlighted segment of this podcast's publisher name." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - }, - "description": "The podcast that this episode belongs to." - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "title_original": { - "type": "string", - "example": "815: Star Wars 2020 Movie and Beyond!", - "description": "Plain text of this episode' title" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "title_highlighted": { - "type": "string", - "example": "815: Star Wars 2020 Movie and Beyond!", - "description": "Highlighted segment of this episode's title" - }, - "description_original": { - "type": "string", - "example": "Yeah, Star Wars Celebration Orlando is 32 days away, but what's the scoop on Celebration 2018? Plus, Rebels Day is Saturday, and much more in our update. Punch it! ***We're listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u00e2\u20ac\u2122ll get some fabulous rewards for your pledge.*** Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast. Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!\n", - "description": "Plain text of this episode's description" - }, - "description_highlighted": { - "type": "string", - "example": "...Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you'll get some fabulous rewards for your pledge.*** Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to\n", - "description": "Highlighted segment of this episode's description" - }, - "transcripts_highlighted": { - "type": "array", - "items": { - "type": "string", - "example": "00:21:27 when Disney bought the Star Wars franchise from George Lucas they had a plan lots of Star Wars movies new Star Wars movies every month another one was just released while I was talking\n" - }, - "description": "Up to 2 highlighted segments of the audio transcript of this episode." - } - }, - "description": "When **type** is *episode*." - }, - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "title_original": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Plain text of podcast name." - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "title_highlighted": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Highlighted segment of podcast name." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "publisher_original": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Plain text of this podcast's publisher name." - }, - "description_original": { - "type": "string", - "example": "The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed! #SW7x7\n", - "description": "Plain text of podcast description" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "publisher_highlighted": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Highlighted segment of this podcast's publisher name." - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "description_highlighted": { - "type": "string", - "example": "...Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more.\n", - "description": "Highlighted segment of podcast description" - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - }, - "description": "When **type** is *podcast*." - }, - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "Vb017Sx3l8F", - "description": "Curated list id, which can be used to further fetch detailed curated list metadata via `GET /curated_podcasts/{id}`." - }, - "total": { - "type": "integer", - "example": 25, - "description": "The total number of podcasts in this curated list." - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "description": "Up to 5 podcasts in this curated list." - }, - "source_url": { - "type": "string", - "example": "https://parade.com/718913/ashley_johnson/7-bookish-podcasts-for-avid-readers-on-the-go/", - "description": "Url of the source of this curated list." - }, - "pub_date_ms": { - "type": "integer", - "example": 1556843484301, - "description": "Published date of this curated list. In milliseconds." - }, - "source_domain": { - "type": "string", - "example": "parade.com", - "description": "The domain name of the source of this curated list." - }, - "title_original": { - "type": "string", - "example": "What are some good Star Wars Podcast to listen to?", - "description": "Plain text of this curated list's title" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/curated-podcasts/7-bookish-podcasts-for-avid-readers-on-H2r-TCWai8K/", - "description": "The url of this curated list on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "title_highlighted": { - "type": "string", - "example": "What are some good Star Wars Podcast to listen to?\n", - "description": "Highlighted segment of this curated list's title" - }, - "description_original": { - "type": "string", - "example": "Star Wars fans in Reddit shared their favorite podcasts.", - "description": "Plain text of this curated list's description" - }, - "description_highlighted": { - "type": "string", - "example": "...Star Wars fans in Reddit shared their favorite podcasts.", - "description": "Highlighted segment of this curated list's description" - } - }, - "description": "When **type** is *curated*." - } - ] - }, - "description": "A list of search results." - }, - "next_offset": { - "type": "integer", - "example": 10, - "description": "Pass this value to the **offset** parameter to do pagination of search results." - } - } -} -``` -
- - +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-search) +### typeahead -### Typeahead search +Typeahead search -Function Name: **typeahead** +`GET /typeahead` Suggest search terms, podcast genres, and podcasts. -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.typeahead({ q: 'startup', show_podcasts: 1 }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.typeahead({ + "q": "star wars", + "show_podcasts": 1, + "show_genres": 1, + "safe_mode": 0 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-typeahead). - - -
- Click to see example response - -```json -{ - "terms": [ - "star wars" - ], - "genres": [ - { - "id": 160, - "name": "Star Wars", - "parent_id": 68 - } - ], - "podcasts": [ - { - "id": "ca3b35271db04291ba56fab8a4f731e4", - "image": "https://production.listennotes.com/podcasts/rebel-force-radio-star-wars-podcast-star-wars-GSQTPOZCqAx-4v5pRaEg1Ub.1400x1400.jpg", - "thumbnail": "https://production.listennotes.com/podcasts/rebel-force-radio-star-wars-podcast-star-wars-Na1ogntxKO_-4v5pRaEg1Ub.300x300.jpg", - "title_original": "Rebel Force Radio: Star Wars Podcast", - "explicit_content": false, - "title_highlighted": "Rebel Force Radio: Star Wars Podcast", - "publisher_original": "Star Wars", - "publisher_highlighted": "Star Wars" - }, - { - "id": "8e90b8f0c9eb4c11b13f9dc331ed747c", - "image": "https://production.listennotes.com/podcasts/inside-star-wars-wondery-F8ZBEqObITM-e8ydUYnAOJv.1400x1400.jpg", - "thumbnail": "https://production.listennotes.com/podcasts/inside-star-wars-wondery-2Ep_n06B8ad-e8ydUYnAOJv.300x300.jpg", - "title_original": "Inside Star Wars", - "explicit_content": false, - "title_highlighted": "Inside Star Wars", - "publisher_original": "Wondery", - "publisher_highlighted": "Wondery" - }, - { - "id": "e8bdeb557c194bb9a97f8e1835a405b0", - "image": "https://production.listennotes.com/podcasts/star-wars-stuff-podcast-star-wars-N2eYaLJWtk8-4-E8Ab7PQ_B.1400x1400.jpg", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-stuff-podcast-star-wars-TOvDUaL7l3m-4-E8Ab7PQ_B.300x300.jpg", - "title_original": "Star Wars STUFF Podcast", - "explicit_content": false, - "title_highlighted": "Star Wars STUFF Podcast", - "publisher_original": "Star Wars", - "publisher_highlighted": "Star Wars" - }, - { - "id": "699701ca2479411f9c0bbf8dd85323e8", - "image": "https://production.listennotes.com/podcasts/star-wars-explained-alex-mollie-MKIbl7dwVTC-zuwl0R2DOjf.1400x1400.jpg", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-explained-alex-mollie-2_yoeSVtXOM-zuwl0R2DOjf.300x300.jpg", - "title_original": "Star Wars Explained", - "explicit_content": false, - "title_highlighted": "Star Wars Explained", - "publisher_original": "Alex & Mollie", - "publisher_highlighted": "Alex & Mollie" - }, - { - "id": "46c50b17a1c6474fb77e21f438ccd78d", - "image": "https://production.listennotes.com/podcasts/skytalkers-charlotte-caitlin-star-wars-S7L8tE_nIaZ--hNC10LzS4A.1400x1400.jpg", - "thumbnail": "https://production.listennotes.com/podcasts/skytalkers-charlotte-caitlin-star-wars-DEIoXLeJOM9--hNC10LzS4A.300x300.jpg", - "title_original": "Skytalkers", - "explicit_content": false, - "title_highlighted": "Skytalkers", - "publisher_original": "Star Wars", - "publisher_highlighted": "Star Wars" - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "terms" - ], - "properties": { - "terms": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "startup sales", - "startup", - "startups", - "star wars" - ], - "description": "Search term suggestions." - }, - "genres": { - "type": "array", - "items": { - "type": "object", - "example": { - "id": 140, - "name": "Web Design", - "parent_id": 127 - }, - "properties": { - "id": { - "type": "integer", - "example": 93, - "description": "Genre id" - }, - "name": { - "type": "string", - "example": "Business", - "description": "Genre name." - }, - "parent_id": { - "type": "integer", - "example": 95, - "description": "Parent genre id." - } - } - }, - "description": "Genre suggestions. It'll show up when the **show_genres** parameter is *1*." - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "title_original": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Plain text of podcast name." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "title_highlighted": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Highlighted segment of podcast name." - }, - "publisher_original": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Plain text of this podcast's publisher name." - }, - "publisher_highlighted": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Highlighted segment of this podcast's publisher name." - } - } - }, - "description": "Podcast suggestions. It'll show up when the **show_podcasts** parameter is 1." - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-typeahead) +### searchEpisodeTitles +Find individual episodes by searching for their titles -### Fetch detailed meta data and episodes for a podcast by id - -Function Name: **fetchPodcastById** - -Fetch detailed meta data and episodes for a specific podcast (up to 10 episodes each time). -You can use the **next_episode_pub_date** parameter to do pagination and fetch more episodes. +`GET /search_episode_titles` +Conduct targeted searches for individual episodes by title and refine results using the podcast id such as +Listen Notes Podcast ID, Apple Podcasts ID, Spotify ID, or RSS feed URL. +This endpoint is specially designed to streamline the import of specific episodes from platforms +like Apple Podcasts and Spotify into your application. +Compared to the GET /search endpoint, which performs full-text searches across multiple fields, +this endpoint focuses solely on episode titles for enhanced accuracy and performance. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchPodcastById({ id: '4d3fe717742d4963a85562e9f84d8c79' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.searchEpisodeTitles({ + "q": "Jerusalem Demsas on The Dispossessed" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id). - - -
- Click to see example response - -```json -{ - "id": "4d3fe717742d4963a85562e9f84d8c79", - "rss": "http://sw7x7.libsyn.com/rss", - "type": "episodic", - "email": "allen@sw7x7.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://play.google.com/music/listen?u=0#/ps/I7gdcrqcmvhfnhh2cyqkcg32tkq", - "spotify_url": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "youtube_url": "https://www.youtube.com/sw7x7", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "sw7x7", - "twitter_handle": "", - "facebook_handle": "sw7x7", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-HN08OoDE7pc-AIg3cZVKCsL.1400x1400.jpg", - "title": "Star Wars 7x7: A Daily Bite-Sized Dose of Star Wars Joy", - "country": "United States", - "website": "https://sw7x7.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "episodes": [ - { - "id": "4e7c59e10e4640b98f2f3cb1777dbb43", - "link": "https://sites.libsyn.com/55931/864-part-2-of-my-new-conversation-with-bobby-roberts?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/4e7c59e10e4640b98f2f3cb1777dbb43/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/864-part-2-of-my-new--vDBMTjY_mK-2WVsxtU0f3m.600x315.jpg", - "title": "864: Part 2 of My (New) Conversation With Bobby Roberts", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/864-part-2-of-my-new-yqjrzNDEXaS-2WVsxtU0f3m.300x157.jpg", - "description": "

The second half of my latest conversation with Bobby Roberts, Podcast Emeritus from Full of Sith and now Star Wars \"Podcast Force Ghost at Large.\" Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1479110402345, - "guid_from_rss": "bbada2b3a99054ce93b0eb95dd762b4d", - "listennotes_url": "https://www.listennotes.com/e/4e7c59e10e4640b98f2f3cb1777dbb43/", - "audio_length_sec": 2447, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/4e7c59e10e4640b98f2f3cb1777dbb43/#edit" - }, - { - "id": "9ae0e2e49a9c477191263df90adf7f3e", - "link": "https://sites.libsyn.com/55931/863-a-new-conversation-with-bobby-roberts-part-1?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/9ae0e2e49a9c477191263df90adf7f3e/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/863-a-new-conversation-with-e_vHo9SM7ft-0YRBTlgiVeU.600x315.jpg", - "title": "863: A (New) Conversation With Bobby Roberts, Part 1", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/863-a-new-conversation-with-lcQsDS5uvYb-0YRBTlgiVeU.300x157.jpg", - "description": "

An in-depth conversation about the Star Wars \"Story\" movies and so much more, featuring Bobby Roberts, Star Wars \"Podcast Force Ghost at Large.\" Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1479024002346, - "guid_from_rss": "2c298fe68246aad30bd5afe0b79fdd76", - "listennotes_url": "https://www.listennotes.com/e/9ae0e2e49a9c477191263df90adf7f3e/", - "audio_length_sec": 2916, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/9ae0e2e49a9c477191263df90adf7f3e/#edit" - }, - { - "id": "98bcfa3fd1b44727913385938788bcc5", - "link": "https://sites.libsyn.com/55931/862-assassin-clone-wars-briefing-season-3-episode-7?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/98bcfa3fd1b44727913385938788bcc5/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/862-assassin-clone-wars-lP94b2q5iOz-jEcMAdTntzs.600x315.jpg", - "title": "862: \"Assassin\" - Clone Wars Briefing, Season 3, Episode 7", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/862-assassin-clone-wars-Uh3E0GwOQRX-jEcMAdTntzs.300x157.jpg", - "description": "

The beginnings of the true power of the Force, revealed in \"Assassin,\" season 3, episode 7 of the Star Wars: The Clone Wars cartoon series. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478937602347, - "guid_from_rss": "6f64d1b37c661bbd066e773ae3b72d5e", - "listennotes_url": "https://www.listennotes.com/e/98bcfa3fd1b44727913385938788bcc5/", - "audio_length_sec": 636, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/98bcfa3fd1b44727913385938788bcc5/#edit" - }, - { - "id": "61d1de72f97e48e887c5d6280d3de384", - "link": "https://sites.libsyn.com/55931/861-rogue-one-international-trailer-breakdown?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/61d1de72f97e48e887c5d6280d3de384/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/861-rogue-one-international-6rZOEiJHPpx-nGxaRC95V6o.600x315.jpg", - "title": "861: Rogue One International Trailer Breakdown", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/861-rogue-one-international-AFlEBXPHG6d-nGxaRC95V6o.300x157.jpg", - "description": "

Surprise! An international trailer for Rogue One has dropped, and it includes new scenes, new dialogue, and some heavy foreshadowing about Jyn Erso's fate. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478851458348, - "guid_from_rss": "10f042cf7346e078e201769b1097d651", - "listennotes_url": "https://www.listennotes.com/e/61d1de72f97e48e887c5d6280d3de384/", - "audio_length_sec": 1082, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/61d1de72f97e48e887c5d6280d3de384/#edit" - }, - { - "id": "53f5d00491134367ac3baf8c75b9a46b", - "link": "https://sites.libsyn.com/55931/860-will-jyn-and-cassian-survive-rogue-one?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/53f5d00491134367ac3baf8c75b9a46b/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/860-will-jyn-and-cassian-VHAJQ1N57hE-l_3qXNfHAU0.600x315.jpg", - "title": "860: Will Jyn and Cassian Survive Rogue One?", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/860-will-jyn-and-cassian-k-2Si6HYjTP-l_3qXNfHAU0.300x157.jpg", - "description": "

Today I conclude a two-episode set looking at the odds of survival for major Rogue One characters. Today: Jyn Erso, Cassian Andor, Bodhi Rook, and K-2SO. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478764802349, - "guid_from_rss": "18062743dbffa4ce293686607ce30af4", - "listennotes_url": "https://www.listennotes.com/e/53f5d00491134367ac3baf8c75b9a46b/", - "audio_length_sec": 651, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/53f5d00491134367ac3baf8c75b9a46b/#edit" - }, - { - "id": "76c00b559f7d4f1c8be3ff1e2d808af9", - "link": "https://sites.libsyn.com/55931/859-the-odds-who-will-survive-rogue-one?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/76c00b559f7d4f1c8be3ff1e2d808af9/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/859-the-odds-who-will-nM7l1BNPbIa-kprAXUCS8uQ.600x315.jpg", - "title": "859: The Odds: Who Will Survive Rogue One?", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/859-the-odds-who-will-RlXojiI5Wm6-kprAXUCS8uQ.300x157.jpg", - "description": "

Will Galen Erso, Lyra Erso, Saw Gerrera, and Orson Krennic survive the events of Rogue One: A Star Wars Story? Starting a mini-series to look at the odds... Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478678402350, - "guid_from_rss": "98e4d31b23bc7f48db490effe4d77e73", - "listennotes_url": "https://www.listennotes.com/e/76c00b559f7d4f1c8be3ff1e2d808af9/", - "audio_length_sec": 483, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/76c00b559f7d4f1c8be3ff1e2d808af9/#edit" - }, - { - "id": "62cdfe0b9ef64d1288a975a659dcf442", - "link": "https://sites.libsyn.com/55931/858-together-new-rogue-one-commercial-dialogue?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/62cdfe0b9ef64d1288a975a659dcf442/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/858-together-new-rogue-one-TsLghBq5enX-WpFSsNUOzcL.600x315.jpg", - "title": "858: \"Together\" - New Rogue One Commercial Dialogue", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/858-together-new-rogue-one-dJF6XLmfYl4-WpFSsNUOzcL.300x157.jpg", - "description": "

A new Rogue One commercial dropped Sunday, with some new dialogue that hints at the relationship between Jyn Erso, Saw Gerrera, the Rebellion, and the Partisans. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478592002351, - "guid_from_rss": "c6dd42254e561130bf891f92e944041b", - "listennotes_url": "https://www.listennotes.com/e/62cdfe0b9ef64d1288a975a659dcf442/", - "audio_length_sec": 448, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/62cdfe0b9ef64d1288a975a659dcf442/#edit" - }, - { - "id": "a98c9cb497f04aec9e09cc50ce25ea59", - "link": "https://sites.libsyn.com/55931/857-imperial-supercommandos-star-wars-rebels-season-3-episode-7?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/a98c9cb497f04aec9e09cc50ce25ea59/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/857-imperial-supercommandos-d0c7L1grbaI-L6bAOKCmyqt.600x315.jpg", - "title": "857: \"Imperial Supercommandos\" - Star Wars Rebels Season 3, Episode 7", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/857-imperial-supercommandos-OFpdNki02M_-L6bAOKCmyqt.300x157.jpg", - "description": "

\"Imperial Supercommandos\" is Season 3, episode 7 of Star Wars Rebels, referring to Mandalorians serving the Empire. But can Fenn Rau be trusted, either? Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478505602352, - "guid_from_rss": "007883a51d5ddc49b8b8d7fee80cb1ba", - "listennotes_url": "https://www.listennotes.com/e/a98c9cb497f04aec9e09cc50ce25ea59/", - "audio_length_sec": 494, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/a98c9cb497f04aec9e09cc50ce25ea59/#edit" - }, - { - "id": "e055bd1750a745a6adfcb70b935c03b7", - "link": "https://sites.libsyn.com/55931/856-the-academy-clone-wars-briefing-season-3-episode-6?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/e055bd1750a745a6adfcb70b935c03b7/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/856-the-academy-clone-wars-6-EXfkbp4Sz-l6QpC-2RDTH.600x315.jpg", - "title": "856: \"The Academy\" - Clone Wars Briefing, Season 3, Episode 6", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/856-the-academy-clone-wars-x6_sqVGe-KS-l6QpC-2RDTH.300x157.jpg", - "description": "

\"The Academy,\" Season 3 Episode 6 of the Clone Wars cartoon series, is a quieter episode that highlights the importance of Mandalore to the Star Wars franchise. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478415602353, - "guid_from_rss": "f346a6e7575ab41197cacc6648070da2", - "listennotes_url": "https://www.listennotes.com/e/e055bd1750a745a6adfcb70b935c03b7/", - "audio_length_sec": 561, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/e055bd1750a745a6adfcb70b935c03b7/#edit" - }, - { - "id": "d602a45cdb524f3fac1effd79a61f828", - "link": "https://sites.libsyn.com/55931/855-episode-viii-and-han-solo-movie-updates?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/d602a45cdb524f3fac1effd79a61f828/", - "image": "https://production.listennotes.com/podcasts/star-wars-7x7-the/855-episode-viii-and-han-3Wkgr82DBxf-9vz38ko_X2s.600x315.jpg", - "title": "855: Episode VIII and Han Solo Movie Updates", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the/855-episode-viii-and-han-naM8NWQxR19-9vz38ko_X2s.300x157.jpg", - "description": "

Daisy Ridley says wait for Episode VIII for answers about Rey's parents. Bradford Young says the Han Solo movie won't be what you expect. Updates here... Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

", - "pub_date_ms": 1478329202354, - "guid_from_rss": "89ac7c92db19f7d06f523eb2c093bde6", - "listennotes_url": "https://www.listennotes.com/e/d602a45cdb524f3fac1effd79a61f828/", - "audio_length_sec": 1103, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/d602a45cdb524f3fac1effd79a61f828/#edit" - } - ], - "language": "English", - "genre_ids": [ - 86, - 67, - 68, - 82, - 100, - 101, - 160, - 138 - ], - "itunes_id": 896354638, - "publisher": "Star Wars 7x7", - "thumbnail": "https://production.listennotes.com/podcasts/star-wars-7x7-the-daily-star-wars-podcast-2LryqMj-sGP-AIg3cZVKCsL.300x300.jpg", - "is_claimed": false, - "description": "The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, generally between 7 and 14 minutes a day, always 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Follow now for your daily dose of Star Wars joy. It's destiny unleashed! #SW7x7", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 49, - "total_episodes": 3415, - "listennotes_url": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "audio_length_sec": 589, - "explicit_content": false, - "latest_episode_id": "3c6127f14bb84d988ae37e7d89e631d7", - "latest_pub_date_ms": 1694071800000, - "earliest_pub_date_ms": 1404637200000, - "next_episode_pub_date": 1478329202354, - "update_frequency_hours": 23, - "listen_score_global_rank": "0.5%" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "episodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } - } - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "next_episode_pub_date": { - "type": "integer", - "example": 1470667902000, - "description": "Passed to the **next_episode_pub_date** parameter of `GET /podcasts/{id}` to paginate through episodes of that podcast." - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-search_episode_titles) +### spellcheck +Spell check on a search term -### Fetch detailed meta data for an episode by id +`GET /spellcheck` -Function Name: **fetchEpisodeById** - -Fetch detailed meta data for a specific episode. +Suggest a list of words that correct the spelling errors of a search term. This endpoint is available only in the PRO/ENTERPRISE plan. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchEpisodeById({ id: '6b6d65930c5a4f71b254465871fed370', show_transcript: 1 }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.spellcheck({ + "q": "microsft stock" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-episodes-id). - - -
- Click to see example response - -```json -{ - "id": "6b6d65930c5a4f71b254465871fed370", - "link": "https://audioboom.com/posts/7742178?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/6b6d65930c5a4f71b254465871fed370/", - "image": "https://production.listennotes.com/podcasts/a-winning-mindset/16-arly-velasquez-on-xPbM1hpZqFK-c5khPVKzowB.1400x1400.jpg", - "title": "S1 Ep16: Arly Velasquez on Managing Risk", - "podcast": { - "id": "073a66b496824a5d9e80d52621f372dc", - "rss": "https://audioboom.com/channels/5031508.rss", - "type": "episodic", - "email": "ipc.media@paralympic.org", - "extra": { - "url1": "https://www.paralympic.org/a-winning-mindset-lessons-from-the-paralympicsz", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9hdWRpb2Jvb20uY29tL2NoYW5uZWxzLzUwMzE1MDgucnNz", - "spotify_url": "https://open.spotify.com/show/5yDllc2ceZxQR7bJqIex5l", - "youtube_url": "https://www.youtube.com/paralympics", - "linkedin_url": "https://www.linkedin.com/company/international-paralympic-committee", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "paralympics", - "facebook_handle": "paralympics", - "amazon_music_url": "", - "instagram_handle": "paralympics" - }, - "image": "https://production.listennotes.com/podcasts/a-winning-mindset-a-winning-mindset-lessons-Kj8u0kgP3Nd-BktA4YUzNbu.1400x1400.jpg", - "title": "A Winning Mindset", - "country": "Germany", - "website": "https://audioboom.com/channels/5031508-a-winning-mindset?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 88, - 181, - 90, - 191, - 217, - 78, - 77, - 111, - 67, - 122, - 124 - ], - "itunes_id": 1527733477, - "publisher": "A Winning Mindset: Lessons From The Paralympics", - "thumbnail": "https://production.listennotes.com/podcasts/a-winning-mindset-a-winning-mindset-lessons-OkvHWfUtEAi-BktA4YUzNbu.300x300.jpg", - "is_claimed": true, - "description": "A Winning Mindset, an award-winning partnership between the International Paralympic Committee and Allianz, is a fascinating journey into the minds of Paralympians, with experiences that can benefit your own personal and professional life.\n\nThe official podcast of the Paralympic Games provides a platform for Para athletes to talk about their empowering and inspirational stories and allows each athlete to showcase their true personalities.\n\nWINNER OF BEST BRANDED PODCAST AT THE 2021 WEBBY AWARDS\nWINNER OF BEST PODCAST AT 2021 DIGIDAY MEDIA EUROPE AWARDS\nWINNER OF BEST SPORT PODCAST AT 2021 SPORT INDUSTRY AWARDS\nWINNER OF BEST BRAND PARTNERSHIP AT 2022 DIGIDAY MEDIA EUROPE AWARDS\n\nEpisodes go beyond Paralympic stories by covering a range of educational, mental health and self-improvement themes.\u00a0 Athletes also tackle subjects that are close to their hearts and of interest to fans. Issues explored include finding purpose, wellbeing, motivation, changing attitudes, overcoming failure, support systems, resilience, positivity, diversity and inclusion, body confidence and many more.\n\nAllianz is a long-standing partner of the International Paralympic Committee. Together, we bring you this series of podcasts. We will introduce you to stories with Paralympians that will spark confidence in your everyday life. Stories of challenges, ups and downs, determination, and excellence. Stories that demonstrate the true power of having the right team behind you. And prepare you for what\u2019s ahead.\n\nThe Paralympic podcast series is presented by British broadcaster Andy Stevenson, who has reported on the Paralympic Games since 2012 for BBC and Channel 4.\n\nFeatured athletes include Tatyana McFadden, Jonnie Peacock and Arly Velasquez. Make sure you subscribe to hear upcoming episodes from athletes including Marcel Hug and Anastasia Pagonis.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": true - }, - "listen_score": 41, - "total_episodes": 36, - "listennotes_url": "https://www.listennotes.com/c/073a66b496824a5d9e80d52621f372dc/", - "audio_length_sec": 1618, - "explicit_content": false, - "latest_episode_id": "ee3e98706e2f4e6b90f47406ca5a2024", - "latest_pub_date_ms": 1643957760000, - "earliest_pub_date_ms": 1598436120035, - "update_frequency_hours": 155, - "listen_score_global_rank": "1.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/a-winning-mindset/16-arly-velasquez-on-ftCxqnUg0Sr-c5khPVKzowB.300x300.jpg", - "transcript": "\nA Paralympic skiier from Mexico isn\u2019t something you expect to see too often. But Arly Velasquez doesn\u2019t believe in expectations. \n\nVelasquez, one of a select few to ever represent Mexico at a Winter Paralympic Games, discusses the role of risk in his life - and how we can all learn to manage it.\u00a0\n\n\u201cI have developed because of taking decisions where I have no idea. It\u2019s a matter of 'does it feel right or not?'\" he said.\n\n\"I don't see it as a risk, I see that when I am in the mountain on a sit ski, I just feel the most free.\u201d\u00a0\n\nThe former BMX champion also discusses the risks he took when leaving Mexico on the spur of a moment, building a new life on the ski slopes in Canada. \u00a0\n\n\u201c(Skiing) gave me the belief to go back to Mexico, sell all my stuff,\u00a0 sell my car and pretty much fly to the border,\" he said.\u00a0\n\n\"It's very, rare that there are moments in your life where you are feeling and your gut tells you that you are in the right place. That you are doing the right thing and that it's something that you want to keep doing in your life. That's what I felt for the first time.\u201d\u00a0\n\nLearning topics for this episode include managing risk, how to build a brand, self-understanding, defiance, thrill-seeking and exploration. \u00a0\n\nAllianz is a long-standing partner of the International Paralympic Committee. Together, we\u2019re proud to bring you A Winning Mindset: Lessons From The Paralympics. We aim to help you move forward in all aspects of your personal and professional life.\u00a0\n\nBy hearing from Paralympic stars, you\u2019ll be introduced to stories that inspire and change the way you think. Stories of facing life\u2019s challenges with confidence, determination and excellence, and the true power of having the right team behind you.\u00a0", - "description": "
\nA Paralympic skiier from Mexico isn\u2019t something you expect to see too often. But Arly Velasquez doesn\u2019t believe in expectations.
\n
\nVelasquez, one of a select few to ever represent Mexico at a Winter Paralympic Games, discusses the role of risk in his life - and how we can all learn to manage it.\u00a0
\n
\n\u201cI have developed because of taking decisions where I have no idea. It\u2019s a matter of 'does it feel right or not?'\" he said.
\n
\n\"I don't see it as a risk, I see that when I am in the mountain on a sit ski, I just feel the most free.\u201d\u00a0
\n
\nThe former BMX champion also discusses the risks he took when leaving Mexico on the spur of a moment, building a new life on the ski slopes in Canada. \u00a0
\n
\n\u201c(Skiing) gave me the belief to go back to Mexico, sell all my stuff,\u00a0 sell my car and pretty much fly to the border,\" he said.\u00a0
\n
\n\"It's very, rare that there are moments in your life where you are feeling and your gut tells you that you are in the right place. That you are doing the right thing and that it's something that you want to keep doing in your life. That's what I felt for the first time.\u201d\u00a0
\n
\nLearning topics for this episode include managing risk, how to build a brand, self-understanding, defiance, thrill-seeking and exploration. \u00a0
\n
\nAllianz is a long-standing partner of the International Paralympic Committee. Together, we\u2019re proud to bring you A Winning Mindset: Lessons From The Paralympics. We aim to help you move forward in all aspects of your personal and professional life.\u00a0
\n
\nBy hearing from Paralympic stars, you\u2019ll be introduced to stories that inspire and change the way you think. Stories of facing life\u2019s challenges with confidence, determination and excellence, and the true power of having the right team behind you.\u00a0
", - "pub_date_ms": 1607054220019, - "guid_from_rss": "tag:audioboom.com,2020-12-02:/posts/7742178", - "listennotes_url": "https://www.listennotes.com/e/6b6d65930c5a4f71b254465871fed370/", - "audio_length_sec": 1637, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/6b6d65930c5a4f71b254465871fed370/#edit" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "transcript": { - "type": "string", - "example": "00:00:07 Welcome to this podcast...\n", - "description": "The transcript of this episode, in plain text (with the newline character \\n). If there's not transcript, it is null. This field is available only in the PRO/ENTERPRISE plan." - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-spellcheck) +### fetchRelatedSearches +Fetch related search terms -### Fetch a list of supported languages for podcasts - -Function Name: **fetchPodcastLanguages** - -Get a list of languages that are supported in Listen Notes database. You can use the language string as query parameter in `GET /search`. +`GET /related_searches` +Suggest related search terms. The results are more comprehensive than from `GET /typeahead`. This endpoint is available only in the PRO/ENTERPRISE plan. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchPodcastLanguages().then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchRelatedSearches({ + "q": "evergrande" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-languages). - - -
- Click to see example response - -```json -{ - "languages": [ - "Any language", - "Afar", - "Abkhazian", - "Afrikaans", - "Akan", - "Albanian", - "Arabic", - "Azerbaijani", - "Bambara", - "Bashkir", - "Basque", - "Belarusian", - "Bengali", - "Bosnian", - "Bulgarian", - "Burmese", - "Catalan", - "Chamorro", - "Chinese", - "Croatian", - "Czech", - "Danish", - "Dutch", - "English", - "Estonian", - "Faeroese", - "Farsi", - "Finnish", - "French", - "Gaelic", - "Galician", - "German", - "Greek", - "Hebrew", - "Hindi", - "Hungarian", - "Icelandic", - "Indonesian", - "Irish", - "Italian", - "Japanese", - "Khmer", - "Kirghiz", - "Korean", - "Latin", - "Latvian", - "Lithuanian", - "Macedonian", - "Malay", - "Malayalam", - "Marathi", - "Mongolian", - "Nepali", - "Northern Sami", - "Norwegian", - "Polish", - "Portuguese", - "Romanian", - "Russian", - "Serbian", - "Singhalese", - "Slovak", - "Slovenian", - "Spanish", - "Swahili", - "Swedish", - "Tamil", - "Telugu", - "Thai", - "Turkish", - "Twi", - "Ukranian", - "Urdu", - "Vietnamese" - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "languages" - ], - "properties": { - "languages": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Any language", - "Afar", - "Abkhazian", - "Afrikaans", - "Akan", - "Albanian", - "Arabic", - "Azerbaijani", - "Bambara", - "Bashkir", - "Basque", - "Belarusian", - "Bulgarian", - "Catalan", - "Chamorro", - "Chinese", - "Croatian", - "Czech", - "Danish", - "Dutch", - "English", - "Estonian", - "Faeroese", - "Finnish", - "French", - "Gaelic", - "Galician", - "German", - "Greek" - ] - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-related_searches) +### fetchTrendingSearches +Fetch trending search terms -### Fetch a list of podcast genres - -Function Name: **fetchPodcastGenres** - -Get a list of podcast genres that are supported in Listen Notes. -The genre id can be passed to other endpoints as a parameter to get podcasts in a specific genre, -e.g., `GET /best_podcasts`, `GET /search`... -You may want to cache the list of genres on the client side. +`GET /trending_searches` +Fetch up to 10 most recent trending search terms on the Listen Notes platform. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchPodcastGenres({ top_level_only: 1 }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchTrendingSearches({}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-genres). - - -
- Click to see example response - -```json -{ - "genres": [ - { - "id": 144, - "name": "Personal Finance", - "parent_id": 67 - }, - { - "id": 151, - "name": "Locally Focused", - "parent_id": 67 - }, - { - "id": 93, - "name": "Business", - "parent_id": 67 - }, - { - "id": 77, - "name": "Sports", - "parent_id": 67 - }, - { - "id": 125, - "name": "History", - "parent_id": 67 - }, - { - "id": 122, - "name": "Society & Culture", - "parent_id": 67 - }, - { - "id": 127, - "name": "Technology", - "parent_id": 67 - }, - { - "id": 132, - "name": "Kids & Family", - "parent_id": 67 - }, - { - "id": 168, - "name": "Fiction", - "parent_id": 67 - }, - { - "id": 88, - "name": "Health & Fitness", - "parent_id": 67 - }, - { - "id": 134, - "name": "Music", - "parent_id": 67 - }, - { - "id": 99, - "name": "News", - "parent_id": 67 - }, - { - "id": 133, - "name": "Comedy", - "parent_id": 67 - }, - { - "id": 100, - "name": "Arts", - "parent_id": 67 - }, - { - "id": 69, - "name": "Religion & Spirituality", - "parent_id": 67 - }, - { - "id": 117, - "name": "Government", - "parent_id": 67 - }, - { - "id": 68, - "name": "TV & Film", - "parent_id": 67 - }, - { - "id": 82, - "name": "Leisure", - "parent_id": 67 - }, - { - "id": 111, - "name": "Education", - "parent_id": 67 - }, - { - "id": 107, - "name": "Science", - "parent_id": 67 - }, - { - "id": 135, - "name": "True Crime", - "parent_id": 67 - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "genres" - ], - "properties": { - "genres": { - "type": "array", - "items": { - "type": "object", - "example": { - "id": 140, - "name": "Web Design", - "parent_id": 127 - }, - "properties": { - "id": { - "type": "integer", - "example": 93, - "description": "Genre id" - }, - "name": { - "type": "string", - "example": "Business", - "description": "Genre name." - }, - "parent_id": { - "type": "integer", - "example": 95, - "description": "Parent genre id." - } - } - } - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-trending_searches) +### fetchBestPodcasts +Fetch a list of best podcasts by genre -### Fetch a list of best podcasts by genre - -Function Name: **fetchBestPodcasts** +`GET /best_podcasts` Get a list of curated best podcasts by genre, which are curated by Listen Notes staffs based on various signals from the Internet, e.g., @@ -2592,10504 +304,574 @@ user activities on listennotes.com... You can get the genre ids from `GET /genres` endpoint. This endpoint returns same data as https://www.listennotes.com/best-podcasts/ - -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchBestPodcasts({ genre_id: 93, page: 2, region: 'us' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.fetchBestPodcasts({ + "genre_id": 93, + "page": 2, + "region": "us", + "sort": "listen_score", + "safe_mode": 0 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-best_podcasts). - - -
- Click to see example response - -```json -{ - "id": 93, - "name": "Business", - "total": 746, - "has_next": true, - "podcasts": [ - { - "id": "34beae8ad8fd4b299196f413b8270a30", - "rss": "https://feeds.feedburner.com/WorklifeWithAdamGrant", - "type": "episodic", - "email": "podcasts@ted.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5mZWVkYnVybmVyLmNvbS9Xb3JrbGlmZVdpdGhBZGFtR3JhbnQ=", - "spotify_url": "https://open.spotify.com/show/4eylg9GZJOVvUhTynt4jjA", - "youtube_url": "", - "linkedin_url": "https://www.linkedin.com/in/adammgrant/", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "AdamMGrant", - "facebook_handle": "AdamMGrant", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/worklife-with-adam-grant-ted-KgaXjFPEoVc.1400x1400.jpg", - "title": "WorkLife with Adam Grant", - "country": "United States", - "website": "https://www.ted.com/podcasts/worklife?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 97, - 111, - 93 - ], - "itunes_id": 1346314086, - "publisher": "TED", - "thumbnail": "https://production.listennotes.com/podcasts/worklife-with-adam-grant-ted-KgaXjFPEoVc.300x300.jpg", - "is_claimed": false, - "description": "\n

You spend a quarter of your life at work. You should enjoy it! Organizational psychologist Adam Grant takes you inside the minds of some of the world\u2019s most unusual professionals to discover the keys to a better work life. From learning how to love your rivals to harnessing the power of frustration, one thing\u2019s for sure: You\u2019ll never see your job the same way again. Produced in partnership with Transmitter Media.

\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 74, - "total_episodes": 131, - "listennotes_url": "https://www.listennotes.com/c/34beae8ad8fd4b299196f413b8270a30/", - "audio_length_sec": 2322, - "explicit_content": false, - "latest_episode_id": "7bc6a4aad20d4219b7c574e7419af605", - "latest_pub_date_ms": 1692676800000, - "earliest_pub_date_ms": 1518044524125, - "update_frequency_hours": 167, - "listen_score_global_rank": "0.01%" - }, - { - "id": "28ba59be5b8346589e910e24d4b3eed7", - "rss": "https://pultepodcast.libsyn.com/rss", - "type": "episodic", - "email": "Bill@pulte.org", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9wdWx0ZXBvZGNhc3QubGlic3luLmNvbS9yc3M=", - "spotify_url": "https://open.spotify.com/show/31g21O5kSlCstxSswwtPzh", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-pulte-podcast-8PvlfCgcR_X-xBWa8_-4MTR.1400x1400.jpg", - "title": "The Pulte Podcast", - "country": "United States", - "website": "http://www.pulte.org?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 171, - 93, - 94, - 67 - ], - "itunes_id": 1525585134, - "publisher": "Bill Pulte | Giving Money and Knowledge", - "thumbnail": "https://production.listennotes.com/podcasts/the-pulte-podcast-gqCft_ZYOIz-xBWa8_-4MTR.300x300.jpg", - "is_claimed": false, - "description": "I'm giving away money, rent, food, and knowledge to people in need. I've built and sold 8 figure companies and now I want to help people.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 73, - "total_episodes": 12, - "listennotes_url": "https://www.listennotes.com/c/28ba59be5b8346589e910e24d4b3eed7/", - "audio_length_sec": 446, - "explicit_content": false, - "latest_episode_id": "e26262d976694428bc1cc8c7af791d1b", - "latest_pub_date_ms": 1621426832000, - "earliest_pub_date_ms": 1596040778010, - "update_frequency_hours": 202, - "listen_score_global_rank": "0.01%" - }, - { - "id": "0d362b13399240de97602ef614acdcbc", - "rss": "https://feeds.megaphone.fm/startup", - "type": "episodic", - "email": "admin@gimletmedia.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://play.google.com/music/m/Ihs2lujac7unjyp2u7hp6ale7hq?t=StartUp_Podcast", - "spotify_url": "https://open.spotify.com/show/5CnDmMUG0S5bSSw612fs8C", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "podcaststartup", - "facebook_handle": "hearstartup", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-14zU0c_MOmv-n9PpCBTQvoJ.1400x1400.jpg", - "title": "StartUp Podcast", - "country": "United States", - "website": "https://www.gimletmedia.com/startup?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 97, - 93, - 157, - 94, - 68, - 127, - 67, - 171 - ], - "itunes_id": 913805339, - "publisher": "Gimlet", - "thumbnail": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-8If7QBKU5jb-n9PpCBTQvoJ.300x300.jpg", - "is_claimed": false, - "description": "A series about what it's really like to start a business.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 73, - "total_episodes": 153, - "listennotes_url": "https://www.listennotes.com/c/0d362b13399240de97602ef614acdcbc/", - "audio_length_sec": 2176, - "explicit_content": false, - "latest_episode_id": "3663e1ba8f944df7956378ab332bf12b", - "latest_pub_date_ms": 1598004000000, - "earliest_pub_date_ms": 1396742400151, - "update_frequency_hours": 253, - "listen_score_global_rank": "0.05%" - }, - { - "id": "5f237b79824e4dfb8355f6dff9b1c542", - "rss": "https://feeds.npr.org/510325/podcast.xml", - "type": "episodic", - "email": "podcasts@npr.org", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5ucHIub3JnLzUxMDMyNS9wb2RjYXN0LnhtbA==", - "spotify_url": "https://open.spotify.com/show/4X3yDKgVTWRjSd6r0vhgo4", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "planetmoney", - "facebook_handle": "planetmoney", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-indicator-from-planet-money-npr-zjaIT2Ovo-r-G2EDjFO-TLA.1400x1400.jpg", - "title": "The Indicator from Planet Money", - "country": "United States", - "website": "https://www.npr.org/podcasts/510325/the-indicator-from-planet-money?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 99, - 98, - 144, - 171, - 93, - 67 - ], - "itunes_id": 1320118593, - "publisher": "NPR", - "thumbnail": "https://production.listennotes.com/podcasts/the-indicator-from-planet-money-npr-pb1-q5f_msG-G2EDjFO-TLA.300x300.jpg", - "is_claimed": false, - "description": "A little show about big ideas. From the people who make Planet Money, The Indicator helps you make sense of what's happening today. It's a quick hit of insight into work, business, the economy, and everything else. Listen weekday afternoons.

Try Planet Money+! a new way to support the show you love, get a sponsor-free feed of the podcast, *and* get access to bonus content. You'll also get access to The Indicator and Planet Money Summer School, both without interruptions. sign up at plus.npr.org/planetmoney", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 73, - "total_episodes": 1329, - "listennotes_url": "https://www.listennotes.com/c/5f237b79824e4dfb8355f6dff9b1c542/", - "audio_length_sec": 573, - "explicit_content": false, - "latest_episode_id": "42996352487a4b07a47d0d76a9ea9823", - "latest_pub_date_ms": 1694127022000, - "earliest_pub_date_ms": 1527108300299, - "update_frequency_hours": 29, - "listen_score_global_rank": "0.01%" - }, - { - "id": "a10d3bea3ffc40329727291321721c11", - "rss": "https://feeds.megaphone.fm/TPG1669083856", - "type": "episodic", - "email": "listen@thepodglomerate.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vVFBHMTY2OTA4Mzg1Ng==", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/money-rehab-with-nicole-lapin-money-news-ixsLZayFUCK-AvJIC3_u-j8.1400x1400.jpg", - "title": "Money Rehab with Nicole Lapin", - "country": "United States", - "website": "https://moneynewsnetwork.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 111, - 181, - 67 - ], - "itunes_id": 1559564016, - "publisher": "Money News Network", - "thumbnail": "https://production.listennotes.com/podcasts/money-rehab-with-nicole-lapin-money-news-v24RloNcmpf-AvJIC3_u-j8.300x300.jpg", - "is_claimed": false, - "description": "Ever notice that we will talk about everything before we talk about money? Sex? No problem. Politics? Bring it on. Money? Totally taboo. But not for long! Nicole Lapin\u2014 the only financial expert you don\u2019t need a dictionary to understand, New York Times best selling author of Rich Bitch, and host of Money Rehab\u2014 is here to rehab your wallet, so you can get your financial life together once and for all. Episodes are just ten minutes-ish... no frills, just bite-sized tips and tricks so you don\u2019t waste any time. And Nicole wants to hear from YOU! Email the money questions you want answered to MoneyRehab@NicoleLapin.com and Nicole will help\u2013and you could even join Nicole on the show for a one-on-one intervention.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 72, - "total_episodes": 608, - "listennotes_url": "https://www.listennotes.com/c/a10d3bea3ffc40329727291321721c11/", - "audio_length_sec": 964, - "explicit_content": true, - "latest_episode_id": "182508ff1cc64ed28c50541605ba9d0c", - "latest_pub_date_ms": 1694070000000, - "earliest_pub_date_ms": 1616593020570, - "update_frequency_hours": 24, - "listen_score_global_rank": "0.05%" - }, - { - "id": "fc6d33e22b7f4db38df3bb64a9a8c227", - "rss": "https://tonyrobbins.libsyn.com/rss", - "type": "episodic", - "email": "tonyrobbins.social@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly90b255cm9iYmlucy5saWJzeW4uY29tL3Jzcw==", - "spotify_url": "https://open.spotify.com/show/6fZXOzehJ9JtOyFjirF3qt", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "tonyrobbins", - "facebook_handle": "TonyRobbins", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-tony-robbins-podcast-tony-robbins-eh9wNFJcP1W.1400x1400.jpg", - "title": "The Tony Robbins Podcast", - "country": "United States", - "website": "http://tonyrobbins.com/podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 97, - 111, - 144, - 181, - 93, - 78, - 157, - 90 - ], - "itunes_id": 1098413063, - "publisher": "Tony Robbins", - "thumbnail": "https://production.listennotes.com/podcasts/the-tony-robbins-podcast-tony-robbins-eh9wNFJcP1W.300x300.jpg", - "is_claimed": false, - "description": "\u201cWhy live an ordinary life, when you can live an extraordinary one?\u201d Tony Robbins, the #1 Life and Business Strategist, has helped over 50 million people from 100 countries create real and lasting change in their lives. In this podcast, he shares proven strategies and tactics so you, too, can achieve massive results in your business, relationships, health and finances. In addition to excerpts from his signature events and other exclusive, never-before-released audio content, Tony and his team also conduct deeply insightful interviews with the most prominent masterminds and experts on the global stage.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 72, - "total_episodes": 162, - "listennotes_url": "https://www.listennotes.com/c/fc6d33e22b7f4db38df3bb64a9a8c227/", - "audio_length_sec": 2846, - "explicit_content": false, - "latest_episode_id": "eac17936c71e4588b96e6e71ecc0db25", - "latest_pub_date_ms": 1688184480000, - "earliest_pub_date_ms": 1459373820099, - "update_frequency_hours": 721, - "listen_score_global_rank": "0.05%" - }, - { - "id": "ed79b615ed074204bc4702b56a264a78", - "rss": "https://thelifecoachschool.libsyn.com/rss", - "type": "episodic", - "email": "brooke@thelifecoachschool.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly90aGVsaWZlY29hY2hzY2hvb2wubGlic3luLmNvbS9yc3M=", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "brookecastillo", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-life-coach-school-podcast-brooke-castillo-xURrlLHEVv--V5of7JlG_RD.1400x1400.jpg", - "title": "The Life Coach School Podcast", - "country": "United States", - "website": "http://www.thelifecoachschool.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 88, - 90, - 93, - 94, - 111, - 115 - ], - "itunes_id": 870239631, - "publisher": "Brooke Castillo", - "thumbnail": "https://production.listennotes.com/podcasts/the-life-coach-school-podcast-brooke-castillo-vTH8ygOuwXd-V5of7JlG_RD.300x300.jpg", - "is_claimed": false, - "description": "The Life Coach School Podcast is your go-to resource for learning, growing, and becoming certified as a Life Coach & Weight Loss Coach. Through this podcast, you'll hear directly from the Master Coach Brooke Castillo to help you better understand life coaching, the required skills and mindsets, and how we focus on serving the client to get them the results they seek. At The Life Coach School, we offer a thorough and intense certification course that produces some of the most successful coaches coaching today. Learn more at TheLifeCoachSchool.com.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 72, - "total_episodes": 526, - "listennotes_url": "https://www.listennotes.com/c/ed79b615ed074204bc4702b56a264a78/", - "audio_length_sec": 1903, - "explicit_content": false, - "latest_episode_id": "2137ca6345dd416aad93d8b811053dad", - "latest_pub_date_ms": 1694077200000, - "earliest_pub_date_ms": 1398606925484, - "update_frequency_hours": 168, - "listen_score_global_rank": "0.05%" - }, - { - "id": "bee3a6eeb43d45d482cff16d7e6eec6d", - "rss": "https://mcsorleys.barstoolsports.com/feed/bffs", - "type": "episodic", - "email": "podcasting@barstoolsports.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9tY3NvcmxleXMuYmFyc3Rvb2xzcG9ydHMuY29tL2ZlZWQvYmZmcw==", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/bffs-with-dave-portnoy-josh-richards-and-c-YmGvaLCjt-UwCtO6PxIiq.1400x1400.jpg", - "title": "BFFs with Dave Portnoy, Josh Richards, and Brianna Chickenfry", - "country": "United States", - "website": "https://www.barstoolsports.com/shows/134/Bffs?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 98, - 67 - ], - "itunes_id": 1534324153, - "publisher": "Barstool Sports", - "thumbnail": "https://production.listennotes.com/podcasts/bffs-with-dave-portnoy-josh-richards-and-0vXYw5UR7ut-UwCtO6PxIiq.300x300.jpg", - "is_claimed": false, - "description": "

The unlikely trio of Josh Richards, Dave Portnoy & Brianna Chickenfry team up to talk all things pop culture, celebrities, influencers & TikTok. You never know what to expect from this trio from breaking entertainment news to generational differences they\u2019re sure to make you laugh while keeping you up to date.


You can find every episode of this show on Apple Podcasts, Spotify or YouTube. Prime Members can listen ad-free on Amazon Music. For more, visit barstool.link/bffspod

", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 143, - "listennotes_url": "https://www.listennotes.com/c/bee3a6eeb43d45d482cff16d7e6eec6d/", - "audio_length_sec": 3713, - "explicit_content": true, - "latest_episode_id": "e8ef82005f084db8a1dc8cbe9aad2b23", - "latest_pub_date_ms": 1694044800000, - "earliest_pub_date_ms": 1601668154000, - "update_frequency_hours": 184, - "listen_score_global_rank": "0.05%" - }, - { - "id": "2184bada602d431689dbb4c6c1bc5839", - "rss": "https://feeds.simplecast.com/atgtihd0", - "type": "episodic", - "email": "interactive@life.church", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9hdGd0aWhkMA==", - "spotify_url": "https://open.spotify.com/show/7tznexFwtbxfPOYF5mxkxI", - "youtube_url": "https://www.youtube.com/@craiggroeschel", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "craiggroeschel", - "facebook_handle": "life.church", - "amazon_music_url": "", - "instagram_handle": "craiggroeschel" - }, - "image": "https://production.listennotes.com/podcasts/craig-groeschel-leadership-podcast-lifechurch--_K8zgsM0x1-dy-uJsHC_9T.1400x1400.jpg", - "title": "Craig Groeschel Leadership Podcast", - "country": "United States", - "website": "https://www.life.church/leadershippodcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 97 - ], - "itunes_id": 1070649025, - "publisher": "Life.Church", - "thumbnail": "https://production.listennotes.com/podcasts/craig-groeschel-leadership-podcast-lifechurch-OU5cY0mgjsb-dy-uJsHC_9T.300x300.jpg", - "is_claimed": false, - "description": "The Craig Groeschel Leadership Podcast offers personal, practical coaching lessons that take the mystery out of leadership. In each episode of the Craig Groeschel Leadership Podcast, Craig brings you empowering insights and easy-to-understand takeaways you can use to lead yourself and lead your team. You\u2019ll learn effective ways to grow as a leader, optimize your time, develop your team, and structure your organization.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 137, - "listennotes_url": "https://www.listennotes.com/c/2184bada602d431689dbb4c6c1bc5839/", - "audio_length_sec": 1770, - "explicit_content": false, - "latest_episode_id": "7183c1c09dcb4654aa7d2d02f916482d", - "latest_pub_date_ms": 1694080800000, - "earliest_pub_date_ms": 1452675180134, - "update_frequency_hours": 391, - "listen_score_global_rank": "0.05%" - }, - { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "rss": "https://feeds.megaphone.fm/marketsnacks-daily", - "type": "episodic", - "email": "iwonder@wondery.com", - "extra": { - "url1": "http://www.marketsnacks.com/", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vbWFya2V0c25hY2tzLWRhaWx5", - "spotify_url": "https://open.spotify.com/show/5RllMBgvDnTau8nnsCUdse", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "marketsnacks", - "facebook_handle": "MarketSnacks", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "country": "United States", - "website": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 98, - 67, - 93, - 95, - 99 - ], - "itunes_id": 1386234384, - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "is_claimed": false, - "description": "\n Feel brighter every day with our 20-minute pop-biz podcast. The 3 business news stories you need, with fresh takes you can pretend you came up with \u2014 Pairs perfectly with your morning oatmeal ritual. Hosted by Jack Crivici-Kramer & Nick Martell.\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 1035, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "audio_length_sec": 1106, - "explicit_content": false, - "latest_episode_id": "80f68b3bc2ba4e1bb96aab1455852d11", - "latest_pub_date_ms": 1694077200000, - "earliest_pub_date_ms": 1553519101033, - "update_frequency_hours": 50, - "listen_score_global_rank": "0.05%" - }, - { - "id": "d863da7f921e435fb35f512b54e774d6", - "rss": "https://rss.art19.com/masters-of-scale", - "type": "episodic", - "email": "hello@mastersofscale.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://play.google.com/music/m/Ify6fvmlw7taa25qkxdricygohe?t=Masters_of_Scale", - "spotify_url": "https://open.spotify.com/show/1bJRgaFZHuzifad4IAApFR", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "mastersofscale", - "facebook_handle": "mastersofscale", - "amazon_music_url": "", - "instagram_handle": "mastersofscale" - }, - "image": "https://production.listennotes.com/podcasts/masters-of-scale-with-reid-hoffman-waitwhat-PJGeHLMmxa6-mYoV0CUyxTD.1400x1400.jpg", - "title": "Masters of Scale", - "country": "United States", - "website": "http://www.mastersofscale.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 122, - 97, - 93, - 149, - 173, - 127, - 157, - 67, - 171 - ], - "itunes_id": 1227971746, - "publisher": "WaitWhat ", - "thumbnail": "https://production.listennotes.com/podcasts/masters-of-scale-with-reid-hoffman-waitwhat-XJs3WwmUrx7-mYoV0CUyxTD.300x300.jpg", - "is_claimed": false, - "description": "\n

Award-winning business advice from Silicon Valley and beyond. Iconic CEOs, from Nike to Netflix, Starbucks to Slack, share the strategies that helped them grow from startups into global brands \u2014 and to weather crisis when it strikes. 

Our two formats help tell the complete story of how a business grows, survives and thrives, and the mindsets of growth that keep leaders in the game.

On each episode of our classic format, host Reid Hoffman \u2014 LinkedIn cofounder, Greylock partner and legendary Silicon Valley investor \u2014 proves an unconventional theory about how businesses scale, asking his guests to share their stories of entrepreneurship, leadership, strategy, management, fundraising. You\u2019ll hear the human journey too \u2014 failures, setbacks, learnings. 

From our Rapid Response format, you can expect real-time wisdom from business leaders in fast-changing situations. Hosted by Bob Safian, past editor in chief of Fast Company, these episodes tackle crisis response, rebuilding, diversity & inclusion, leadership change and much more. 

\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 409, - "listennotes_url": "https://www.listennotes.com/c/d863da7f921e435fb35f512b54e774d6/", - "audio_length_sec": 2029, - "explicit_content": false, - "latest_episode_id": "70afc27ebc4d4aa28528a903d2b945c3", - "latest_pub_date_ms": 1693990800000, - "earliest_pub_date_ms": 1492543297406, - "update_frequency_hours": 146, - "listen_score_global_rank": "0.05%" - }, - { - "id": "5590cb1318054bceb942564a4f067eb6", - "rss": "https://www.marketplace.org/feed/podcast/marketplace", - "type": "episodic", - "email": "marketplacecomments@marketplace.org", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cubWFya2V0cGxhY2Uub3JnL2ZlZWQvcG9kY2FzdC9tYXJrZXRwbGFjZQ==", - "spotify_url": "https://open.spotify.com/show/6zYlX5UGEPmNCWacYUJQGD", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "Marketplace", - "facebook_handle": "marketplaceapm", - "amazon_music_url": "", - "instagram_handle": "marketplaceapm" - }, - "image": "https://production.listennotes.com/podcasts/marketplace-marketplace-WHc17NQy23S-Jing2WtK5UE.1400x1400.jpg", - "title": "Marketplace", - "country": "United States", - "website": "https://www.marketplace.org/shows/marketplace/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 95, - 99, - 173, - 93, - 67 - ], - "itunes_id": 201853034, - "publisher": "Marketplace", - "thumbnail": "https://production.listennotes.com/podcasts/marketplace-marketplace-_YVywHeR0-S-Jing2WtK5UE.300x300.jpg", - "is_claimed": false, - "description": "

Every weekday, host Kai Ryssdal helps you make sense of the day\u2019s business and economic news \u2014 no econ degree or finance background required. \u201cMarketplace\u201d takes you beyond the numbers, bringing you context. Our team of reporters all over the world speak with CEOs, policymakers and regular people just trying to get by.

\n", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 448, - "listennotes_url": "https://www.listennotes.com/c/5590cb1318054bceb942564a4f067eb6/", - "audio_length_sec": 1655, - "explicit_content": false, - "latest_episode_id": "72379b23f2ff4255a4bd67d70e3ad742", - "latest_pub_date_ms": 1694126942000, - "earliest_pub_date_ms": 1640304971049, - "update_frequency_hours": 28, - "listen_score_global_rank": "0.05%" - }, - { - "id": "13a7957aeac34e1c9e004f2a2ced5fb0", - "rss": "https://feeds.megaphone.fm/pivot", - "type": "episodic", - "email": "pivot@voxmedia.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vcGl2b3Q=", - "spotify_url": "https://open.spotify.com/show/4MU3RFGELZxPT9XHVwTNPR", - "youtube_url": "", - "linkedin_url": "https://www.linkedin.com/company/re-code-news/", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "recode", - "facebook_handle": "RecodeDotNet", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/pivot-new-york-magazine-b0XsOSV7WDZ-YyJxq4Dbk67.1400x1400.jpg", - "title": "Pivot", - "country": "United States", - "website": null, - "language": "English", - "genre_ids": [ - 99, - 131, - 97, - 157, - 171, - 94, - 127, - 93, - 67 - ], - "itunes_id": 1073226719, - "publisher": "New York Magazine", - "thumbnail": "https://production.listennotes.com/podcasts/pivot-new-york-magazine-L2FeZNEqKst-YyJxq4Dbk67.300x300.jpg", - "is_claimed": false, - "description": "Every Tuesday and Friday, tech journalist Kara Swisher and NYU Professor Scott Galloway offer sharp, unfiltered insights into the biggest stories in tech, business, and politics. They make bold predictions, pick winners and losers, and bicker and banter like no one else. After all, with great power comes great scrutiny. From New York Magazine and the Vox Media Podcast Network.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 475, - "listennotes_url": "https://www.listennotes.com/c/13a7957aeac34e1c9e004f2a2ced5fb0/", - "audio_length_sec": 3376, - "explicit_content": false, - "latest_episode_id": "ea4b7196b18945d186358fb5176672b7", - "latest_pub_date_ms": 1693908000000, - "earliest_pub_date_ms": 1537812480472, - "update_frequency_hours": 83, - "listen_score_global_rank": "0.05%" - }, - { - "id": "23bd4f3432c2452d93f525e2446a5878", - "rss": "https://feeds.simplecast.com/4YELvXgu", - "type": "episodic", - "email": "rss@earwolf.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS80WUVMdlhndQ==", - "spotify_url": "https://open.spotify.com/show/0Vdp4gyQoY0kkcvaLnIgvx", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/scam-goddess-earwolf-laci-mosley-pMX-87Jicaq-PstEMgqXCUd.1400x1400.jpg", - "title": "Scam Goddess", - "country": "United States", - "website": "https://teamcoco.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 133, - 135, - 67 - ], - "itunes_id": 1479455008, - "publisher": "Earwolf & Laci Mosley", - "thumbnail": "https://production.listennotes.com/podcasts/scam-goddess-earwolf-laci-mosley-fy8Bs4RlT06-PstEMgqXCUd.300x300.jpg", - "is_claimed": false, - "description": "\u201cScam Goddess is a podcast dedicated to fraud and all those who practice it! Each week host Laci Mosley (aka Scam Goddess) keeps listeners up to date on current rackets, digs deep into the latest scams, and breaks down historic hoodwinks alongside some of your favorite comedians! It's like true crime only without all the death! True fun crime!\u201d", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 144, - "listennotes_url": "https://www.listennotes.com/c/23bd4f3432c2452d93f525e2446a5878/", - "audio_length_sec": 4094, - "explicit_content": true, - "latest_episode_id": "6b63f6e8a814455da27997e9487e80b5", - "latest_pub_date_ms": 1693886700000, - "earliest_pub_date_ms": 1420099200036, - "update_frequency_hours": 168, - "listen_score_global_rank": "0.05%" - }, - { - "id": "d1336f3217eb4510bdbcdf021a38de38", - "rss": "https://feeds.megaphone.fm/ADL1740142880", - "type": "episodic", - "email": "hello@cathyheller.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vQURMMTc0MDE0Mjg4MA==", - "spotify_url": "https://open.spotify.com/show/7DFQyVP0hc3d1xnht1U3UI", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-cathy-heller-podcast-manifest-flow-and-LQn1wC_Mdkp-W-XR2oujCdK.1400x1400.jpg", - "title": "The Cathy Heller Podcast: Manifest, Flow, and Align", - "country": "United States", - "website": "https://www.cathyheller.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 100, - 88, - 90, - 94, - 132, - 69, - 244, - 122, - 67, - 70 - ], - "itunes_id": 1191831035, - "publisher": "Cathy Heller", - "thumbnail": "https://production.listennotes.com/podcasts/the-cathy-heller-podcast-manifest-flow-and-sXr8L0A5Bib-W-XR2oujCdK.300x300.jpg", - "is_claimed": false, - "description": "Life is too short to be building someone else's dream.\u00a0On the Cathy Heller Podcast, top ranking podcast host, business and spiritual coach, and bestselling author Cathy Heller gives you the tools to change your frequency, allow in new possibilities, and become the director of your life.\u00a0You'll learn how to get unstuck from your fears and self doubt, find your confidence, change your subconscious program, shift your mindset, and build an abundant dream life where you can make an impact and get paid to be authentically you.\u00a0\n\nThis show features coaching calls and heart-to-heart conversations with successful authors, celebrities, entrepreneurs, spiritual leaders, experts, and everyday heroes about what led them to the biggest moments in their lives, and how you too can create a new reality that you can't wait to wake up to every single day.\u00a0\n\nYou've got so much to contribute and Cathy is here to help you do it.\u00a0\n\nFollow Cathy @cathy.heller on Instagram for daily sparks of inspiration.\u00a0\nSubscribe to the Cathy Heller Podcast and share the show with someone who needs to hear it.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 788, - "listennotes_url": "https://www.listennotes.com/c/d1336f3217eb4510bdbcdf021a38de38/", - "audio_length_sec": 3064, - "explicit_content": false, - "latest_episode_id": "41e772e60381492da0e721bcb03cf37a", - "latest_pub_date_ms": 1694070000000, - "earliest_pub_date_ms": 1483455806748, - "update_frequency_hours": 45, - "listen_score_global_rank": "0.05%" - }, - { - "id": "499661f3589f42aaa1532673e0e0aedf", - "rss": "https://rss.art19.com/smart-passive-income-podcast", - "type": "episodic", - "email": "podcasts@teamspi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL3NtYXJ0LXBhc3NpdmUtaW5jb21lLXBvZGNhc3Q=", - "spotify_url": "https://open.spotify.com/show/7wjv5MRCXWXImqTFhcufLy", - "youtube_url": "https://www.youtube.com/user/smartpassiveincome", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "patflynn", - "facebook_handle": "smartpassiveincome", - "amazon_music_url": "https://music.amazon.com/podcasts/341282a1-cba9-4188-aa58-e09a51ccaa87/the-smart-passive-income-online-business-and-blogging-podcast", - "instagram_handle": "patflynn" - }, - "image": "https://production.listennotes.com/podcasts/the-smart-passive-income-online-business-jN-aR6qdYuo-NDa6-ySp9kw.1400x1400.jpg", - "title": "The Smart Passive Income Online Business and Blogging Podcast", - "country": "United States", - "website": "https://art19.com/shows/smart-passive-income-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 97, - 67, - 94, - 111, - 115, - 127, - 98, - 157, - 171, - 144, - 93, - 173 - ], - "itunes_id": 383084001, - "publisher": "Pat Flynn", - "thumbnail": "https://production.listennotes.com/podcasts/the-smart-passive-income-online-business-sF24owQHYWy-NDa6-ySp9kw.300x300.jpg", - "is_claimed": false, - "description": "\n

Pat Flynn from The Smart Passive Income Blog reveals all of his online business and blogging strategies, income sources and killer marketing tips and tricks so you can be ahead of the curve with your online business or blog. Discover how you can create multiple passive income streams that work for you so that you can have the time and freedom to do what you love, whether it's traveling the world, or just living comfortably at home. Since 2008, he's been supporting his family with his many online businesses, and he's been openly sharing his wins, his losses, and all the lessons in between with the community of energetic but humble entrepreneurs who follow him. Self-proclaimed \"crash test dummy of online business\", you'll learn about building authority online, email marketing, building a team and outsourcing, content marketing, podcasting, search engine optimization, niche sites, social media strategies, how to get more traffic, creating online courses, affiliate marketing, and productivity tips so that you create something amazing without burning yourself out. It's a mix of interviews, special co-hosts and solo shows from Pat you're not going to want to miss. Hit subscribe, and get ready to change your life.


\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 726, - "listennotes_url": "https://www.listennotes.com/c/499661f3589f42aaa1532673e0e0aedf/", - "audio_length_sec": 2476, - "explicit_content": false, - "latest_episode_id": "475bc0fecead42889324c4d58884d64c", - "latest_pub_date_ms": 1693983600000, - "earliest_pub_date_ms": 1279551600722, - "update_frequency_hours": 83, - "listen_score_global_rank": "0.05%" - }, - { - "id": "0da3baee05cc47e4b3222da775573efe", - "rss": "https://rss.art19.com/the-investors-podcast", - "type": "episodic", - "email": "stig@theinvestorspodcast.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL3RoZS1pbnZlc3RvcnMtcG9kY2FzdA==", - "spotify_url": "https://open.spotify.com/show/28RHOkXkuHuotUrkCdvlOP", - "youtube_url": "https://www.youtube.com/user/BuffettsBooks", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "PrestonPysh", - "facebook_handle": "WeStudyBillionaires", - "amazon_music_url": "https://music.amazon.com/podcasts/b42b0171-d75e-4f9a-999f-da3a4db30f45/we-study-billionaires---the-investor%E2%80%99s-podcast-network", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/we-study-billionaires-the-investors-podcast-dufIKDVLEoJ-ZuO23m60ePb.1400x1400.jpg", - "title": "We Study Billionaires - The Investor\u2019s Podcast Network", - "country": "United States", - "website": "https://www.theinvestorspodcast.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 97, - 144, - 93, - 111, - 67, - 98 - ], - "itunes_id": 928933489, - "publisher": "The Investor's Podcast Network", - "thumbnail": "https://production.listennotes.com/podcasts/we-study-billionaires-the-investors-podcast--EpuIXZbUq1-ZuO23m60ePb.300x300.jpg", - "is_claimed": false, - "description": "\n

We interview and study famous financial billionaires, including Warren Buffett, Ray Dalio, and Howard Marks, and teach you what we learn and how you can apply their investment strategies in the stock market.

We Study Billionaires is the largest stock investing podcast show in the world with 100,000,000+ downloads and is hosted by Stig Brodersen and Clay Finck.

This podcast also includes the Richer Wiser Happier series hosted by best-selling author William Green. William regularly interviews legendary investors such as Mohnish Pabrai and Guy Spier, exploring what they can teach us about how to succeed in markets and life.

And finally, our Bitcoin Fundamentals series is hosted by Preston Pysh, where he interviews prominent figures in the Bitcoin and macroeconomic space. To learn more about TIP, you can visit theinvestorspodcast.com or subscribe to our free daily newsletter here.

\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 775, - "listennotes_url": "https://www.listennotes.com/c/0da3baee05cc47e4b3222da775573efe/", - "audio_length_sec": 3434, - "explicit_content": false, - "latest_episode_id": "71f33b37797e40b6aff7077aa9596cd1", - "latest_pub_date_ms": 1693965919000, - "earliest_pub_date_ms": 1411981990769, - "update_frequency_hours": 60, - "listen_score_global_rank": "0.05%" - }, - { - "id": "f4a7bdbef7a84fd0b4a712b70a3c5ec5", - "rss": "https://choosefi.libsyn.com/rss", - "type": "episodic", - "email": "feedback@choosefi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9jaG9vc2VmaS5saWJzeW4uY29tL3Jzcw==", - "spotify_url": "", - "youtube_url": "https://www.youtube.com/choosefi", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "choosefi", - "facebook_handle": "ChooseFi", - "amazon_music_url": "", - "instagram_handle": "choosefiradio" - }, - "image": "https://production.listennotes.com/podcasts/choosefi-jonathan-mendonsa-brad-barrett-Xb8c9pQA_y--e8_g1GAYHIj.1400x1400.jpg", - "title": "ChooseFI", - "country": "United States", - "website": "https://www.choosefi.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93, - 97, - 122, - 123, - 127, - 129, - 144, - 98 - ], - "itunes_id": 1187770032, - "publisher": "ChooseFI", - "thumbnail": "https://production.listennotes.com/podcasts/choosefi-jonathan-mendonsa-brad-barrett-UCfs8WRklv0-e8_g1GAYHIj.300x300.jpg", - "is_claimed": false, - "description": "How would your life change if you reached Financial Independence and got to the point where working is optional? What actions can you take today to make that not just possible but probable. Jonathan & Brad explore the tactics that the FI community uses to reclaim decades of their lives. They discuss reducing expenses, crushing debt, tax optimization, building passive income streams through online businesses and real estate and how to travel the world for free. Every episode is packed with actionable tips and no topic is too big or small as long as it speeds up the process of reaching financial independence.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 69, - "total_episodes": 614, - "listennotes_url": "https://www.listennotes.com/c/f4a7bdbef7a84fd0b4a712b70a3c5ec5/", - "audio_length_sec": 3359, - "explicit_content": false, - "latest_episode_id": "588fdf42c6104aaa8798d3934ea916d5", - "latest_pub_date_ms": 1693803600000, - "earliest_pub_date_ms": 1482062785609, - "update_frequency_hours": 167, - "listen_score_global_rank": "0.05%" - }, - { - "id": "c73271d55ffa4e2d9b529220072fbd79", - "rss": "https://www.omnycontent.com/d/playlist/e73c998e-6e60-432f-8610-ae210140c5b1/3e7f11c6-1170-40a0-be58-ae330037e2f5/dea7cb4c-cbee-49ce-83f0-ae330037e303/podcast.rss", - "type": "episodic", - "email": "michael@earnyourleisure.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvZTczYzk5OGUtNmU2MC00MzJmLTg2MTAtYWUyMTAxNDBjNWIxLzNlN2YxMWM2LTExNzAtNDBhMC1iZTU4LWFlMzMwMDM3ZTJmNS9kZWE3Y2I0Yy1jYmVlLTQ5Y2UtODNmMC1hZTMzMDAzN2UzMDMvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/2S4tSSlT71Z5i8Dt1vlDJc", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/earn-your-leisure-eyl-network--AFWvtrYomD-CSRy4Lz625Y.1400x1400.jpg", - "title": "Earn Your Leisure", - "country": "United States", - "website": "https://redcircle.com/shows/earn-your-leisure7962?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93 - ], - "itunes_id": 1450211392, - "publisher": "EYL Network", - "thumbnail": "https://production.listennotes.com/podcasts/earn-your-leisure-eyl-network-Ni5dRWAQFJc-CSRy4Lz625Y.300x300.jpg", - "is_claimed": false, - "description": "

Welcome to The Earn Your Leisure Podcast. Rashad Bilal and Troy Millings will be your host. Earn Your Leisure will be giving you behind the scenes financial views into the entertainment and sports industries as well as highlighting back stories of entrepreneurs. We will also be breaking down business models and examining the latest trends in finance. Earn Your Leisure is a college business class mixed with pop culture. We blend the two together for a unique and exciting look into the world of business. Let\u2019s go!! #earnyourleisurepodcast

", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 69, - "total_episodes": 735, - "listennotes_url": "https://www.listennotes.com/c/c73271d55ffa4e2d9b529220072fbd79/", - "audio_length_sec": 2303, - "explicit_content": false, - "latest_episode_id": "f825aa2854ff452c8ab57d50d017a16b", - "latest_pub_date_ms": 1694095200000, - "earliest_pub_date_ms": 1548186120653, - "update_frequency_hours": 23, - "listen_score_global_rank": "0.05%" - }, - { - "id": "fbecfdd4116e4e7a954bd6bc4cb0b406", - "rss": "https://amyporterfield.libsyn.com/rss", - "type": "episodic", - "email": "podcast@amyporterfield.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9hbXlwb3J0ZXJmaWVsZC5saWJzeW4uY29tL3Jzcw==", - "spotify_url": "https://open.spotify.com/show/5z7TqC6tll8egI9prMqXhd", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "AmyPorterfield", - "facebook_handle": "AmyPorterfield", - "amazon_music_url": "", - "instagram_handle": "amyporterfield" - }, - "image": "https://production.listennotes.com/podcasts/online-marketing-made-easy-with-amy-HmKNg8E7VI0-jXUyf4vBV20.1400x1400.jpg", - "title": "Online Marketing Made Easy with Amy Porterfield", - "country": "United States", - "website": "https://amyporterfield.com/category/podcast/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 97, - 94, - 157, - 93, - 173 - ], - "itunes_id": 594703545, - "publisher": "Amy Porterfield", - "thumbnail": "https://production.listennotes.com/podcasts/online-marketing-made-easy-with-amy-yMjTufCWtoa-jXUyf4vBV20.300x300.jpg", - "is_claimed": false, - "description": "Ever wish you had a business mentor with over a decade of experience whispering success secrets in your ear? That\u2019s exactly what you\u2019ll get when you tune into the top-ranked Online Marketing Made Easy Podcast with your host, 9 to 5er turned CEO of a multi-million dollar business & NY Times Best Selling Author, Amy Porterfield. Her specialty? Breaking down big ideas and strategies into actionable step-by-step processes designed to get you results with a whole lot less stress. Tune in, get inspired, and get ready to discover why hundreds of thousands of online business owners turn to Amy for guidance when it comes to all things online business including digital courses, list building, social media, content, webinars, and so much more. Whether you're a budding entrepreneur, have a comfy side-hustle, or are looking to take your business to the next level, each episode is designed to help you take immediate action on the most important strategies for starting and growing your online business today.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 69, - "total_episodes": 650, - "listennotes_url": "https://www.listennotes.com/c/fbecfdd4116e4e7a954bd6bc4cb0b406/", - "audio_length_sec": 2259, - "explicit_content": false, - "latest_episode_id": "de0e98a2c1ce48398021b08a687d2725", - "latest_pub_date_ms": 1694070060000, - "earliest_pub_date_ms": 1358200867624, - "update_frequency_hours": 73, - "listen_score_global_rank": "0.05%" - } - ], - "parent_id": 67, - "page_number": 2, - "has_previous": true, - "listennotes_url": "https://www.listennotes.com/best-business-podcasts-93/", - "next_page_number": 3, - "previous_page_number": 1 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "has_next", - "has_previous", - "id", - "listennotes_url", - "name", - "next_page_number", - "page_number", - "parent_id", - "podcasts", - "previous_page_number", - "total" - ], - "properties": { - "id": { - "type": "integer", - "example": 95, - "description": "The id of this genre" - }, - "name": { - "type": "string", - "example": "Business News", - "description": "This genre's name." - }, - "total": { - "type": "integer", - "example": 325 - }, - "has_next": { - "type": "boolean", - "example": true - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - } - }, - "parent_id": { - "type": "integer", - "example": 93, - "description": "The id of parent genre." - }, - "page_number": { - "type": "integer", - "example": 2 - }, - "has_previous": { - "type": "boolean", - "example": true - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/best-business-news-podcasts-95/", - "description": "Url of the list of best podcasts on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "next_page_number": { - "type": "integer", - "example": 3 - }, - "previous_page_number": { - "type": "integer", - "example": 1 - } - } -} -``` -
- - - +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-best_podcasts) -### Fetch a list of supported countries/regions for best podcasts +### fetchPodcastById -Function Name: **fetchPodcastRegions** +Fetch detailed meta data and episodes for a podcast by id -It returns a dictionary of country codes (e.g., us, gb...) & country names (United States, United Kingdom...). The country code is used in the query parameter **region** of `GET /best_podcasts`. +`GET /podcasts/{id}` +Fetch detailed meta data and episodes for a specific podcast (up to 10 episodes each time). +You can use the **next_episode_pub_date** parameter to do pagination and fetch more episodes. +During pagination with **next_episode_pub_date**, an empty **episodes** array in the response signals that no more episodes are available. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchPodcastRegions().then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchPodcastById({ + "id": "4d3fe717742d4963a85562e9f84d8c79", + "next_episode_pub_date": 1479154463000, + "sort": "recent_first" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-regions). - - -
- Click to see example response - -```json -{ - "regions": { - "ae": "United Arab Emirates", - "al": "Albania", - "am": "Armenia", - "ar": "Argentina", - "at": "Austria", - "au": "Australia", - "az": "Azerbaijan", - "be": "Belgium", - "bg": "Bulgaria", - "bh": "Bahrain", - "bn": "Brunei Darussalam", - "bo": "Bolivia", - "br": "Brazil", - "by": "Belarus", - "bz": "Belize", - "ca": "Canada", - "ch": "Switzerland", - "cl": "Chile", - "cn": "China", - "co": "Colombia", - "cr": "Costa Rica", - "cz": "Czech Republic", - "de": "Germany", - "dk": "Denmark", - "do": "Dominican Republic", - "dz": "Algeria", - "ec": "Ecuador", - "ee": "Estonia", - "eg": "Egypt", - "es": "Spain", - "fi": "Finland", - "fr": "France", - "gb": "United Kingdom", - "gr": "Greece", - "gt": "Guatemala", - "hk": "Hong Kong", - "hn": "Honduras", - "hr": "Croatia", - "hu": "Hungary", - "id": "Indonesia", - "ie": "Ireland", - "il": "Israel", - "in": "India", - "is": "Iceland", - "it": "Italy", - "jm": "Jamaica", - "jo": "Jordan", - "jp": "Japan", - "ke": "Kenya", - "kr": "South Korea", - "kw": "Kuwait", - "kz": "Kazakhstan", - "lb": "Lebanon", - "lt": "Lithuania", - "lu": "Luxembourg", - "lv": "Latvia", - "mk": "Macedonia", - "mn": "Mongolia", - "mo": "Macau", - "mt": "Malta", - "mx": "Mexico", - "my": "Malaysia", - "ng": "Nigeria", - "ni": "Nicaragua", - "nl": "Netherlands", - "no": "Norway", - "nz": "New Zealand", - "om": "Oman", - "pa": "Panama", - "pe": "Peru", - "ph": "Philippines", - "pk": "Pakistan", - "pl": "Poland", - "pt": "Portugal", - "py": "Paraguay", - "qa": "Qatar", - "ro": "Romania", - "ru": "Russia", - "sa": "Saudi Arabia", - "se": "Sweden", - "sg": "Singapore", - "si": "Slovenia", - "sk": "Slovakia", - "sv": "El Salvador", - "th": "Thailand", - "tn": "Tunisia", - "tr": "Turkey", - "tw": "Taiwan", - "ua": "Ukraine", - "us": "United States", - "uy": "Uruguay", - "uz": "Uzbekistan", - "ve": "Venezuela", - "vn": "Vietnam", - "ye": "Yemen", - "za": "South Africa", - "zw": "Zimbabwe" - } -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "regions" - ], - "properties": { - "regions": { - "type": "object", - "example": { - "au": "Australia", - "de": "Germany", - "ua": "Ukraine", - "us": "United States" - } - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id) +### deletePodcast +Request to delete a podcast -### Fetch recommendations for a podcast +`DELETE /podcasts/{id}` -Function Name: **fetchRecommendationsForPodcast** +Podcast hosting services can use this endpoint to streamline the process of podcast deletion on behave of their users (podcasters). We will review the deletion request within 12 hours. If the podcast is already deleted, the "status" field in the response will be "deleted". Otherwise, the status field will be "in review". If you want to get a notification once the podcast is deleted, you can configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks -Fetch up to 8 podcast recommendations based on the given podcast id. - -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchRecommendationsForPodcast({ id: '25212ac3c53240a880dd5032e547047b' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.deletePodcast({ + "id": "4d3fe717742d4963a85562e9f84d8c79", + "reason": "the podcaster wants to delete it" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id-recommendations). - - -
- Click to see example response - -```json -{ - "recommendations": [ - { - "id": "73fc48e052674c3dbab02b4b0fa10fe4", - "rss": "https://feeds.simplecast.com/xZuZL16q", - "type": "episodic", - "email": "kevinrose@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS94WnVaTDE2cQ==", - "spotify_url": "https://open.spotify.com/show/7EYh5AcGYbXauYeIsTu2lu", - "youtube_url": "https://www.youtube.com/user/kevinrose", - "linkedin_url": "https://www.linkedin.com/in/kevinrose/", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "kevinrose", - "facebook_handle": "kevinrose", - "amazon_music_url": "", - "instagram_handle": "kevinrose" - }, - "image": "https://production.listennotes.com/podcasts/the-kevin-rose-show-kevin-rose-X6m7gBDpQfx-GtV_fXwadQN.1400x1400.jpg", - "title": "The Kevin Rose Show", - "country": "United States", - "website": "https://podcast.kevinrose.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 127, - 122, - 149, - 93, - 88, - 67 - ], - "itunes_id": 1088864895, - "publisher": "Kevin Rose", - "thumbnail": "https://production.listennotes.com/podcasts/the-kevin-rose-show-kevin-rose-BAnFZeYKp0l-GtV_fXwadQN.300x300.jpg", - "is_claimed": false, - "description": "Join entrepreneur, technology investor, and self-experimenter Kevin Rose as he explores new ways to reach peak personal and professional performance. In this \"podcast for the curious,\" Kevin interviews technologists, scientists, meditators, self-experimenters, and productivity hackers to discover insights that you can incorporate into daily life. Time Magazine calls him one of the \"Top 25 Most Influential People on the Web,\" and Bloomberg lists him as a \"Top 25 Angel Investor.\" Kevin has appeared on the Jimmy Fallon Show, Charlie Rose Show, as well as the covers of Businessweek and Inc. Magazine.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 64, - "total_episodes": 64, - "listennotes_url": "https://www.listennotes.com/c/73fc48e052674c3dbab02b4b0fa10fe4/", - "audio_length_sec": 4217, - "explicit_content": false, - "latest_episode_id": "a62af28c2540442cb50e11faaa42e77b", - "latest_pub_date_ms": 1640920114000, - "earliest_pub_date_ms": 1456759020063, - "update_frequency_hours": 1191, - "listen_score_global_rank": "0.05%" - }, - { - "id": "805535e1de5a4c7991f4f323e82ce9e7", - "rss": "https://bryankramer.libsyn.com/rss", - "type": "episodic", - "email": "bryan.kramer@purematter.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9icnlhbmtyYW1lci5saWJzeW4uY29tL3Jzcw==", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "bryankramer", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-bryan-kramer-show-bryan-kramer-Br0M_IayKc3-0SCl91ZT-bU.1400x1400.jpg", - "title": "The Bryan Kramer Show", - "country": "United States", - "website": "http://bryankramer.libsyn.com/podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 88, - 90, - 93, - 97 - ], - "itunes_id": 1078655111, - "publisher": "Bryan Kramer", - "thumbnail": "https://production.listennotes.com/podcasts/the-bryan-kramer-show-bryan-kramer-E7o80typv_b-0SCl91ZT-bU.300x300.jpg", - "is_claimed": false, - "description": "Join us as Bryan Kramer deconstructs human behavior and digs deep to share tactics, tools and tricks you can use every day to help you reach peak performance. In each show, Bryan interviews high-profile guests hitting consistent home runs in business, entrepreneurialism marketing and social. Bryan is a TED speaker, USA Today best-selling author, and CEO who consults Fortune 500 clients such as IBM, Cisco, NFL, Harvard University and NASA. He's known for his books Human to Human, #H2H and Shareology. Forbes calls him a \"Zen master to digital marketers.\"", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 35, - "total_episodes": 64, - "listennotes_url": "https://www.listennotes.com/c/805535e1de5a4c7991f4f323e82ce9e7/", - "audio_length_sec": 1695, - "explicit_content": false, - "latest_episode_id": "99eb35864e2242a480f4709ded9471b5", - "latest_pub_date_ms": 1502287200000, - "earliest_pub_date_ms": 1453246535000, - "update_frequency_hours": 327, - "listen_score_global_rank": "3%" - }, - { - "id": "7060b5d48b3440ba9668f9af2a90fa7f", - "rss": "https://www.spreaker.com/show/4920844/episodes/feed", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy80ZjJjNjZmMC9wb2RjYXN0L3Jzcw==", - "spotify_url": "https://open.spotify.com/show/62soqGPhnYJBRrP2vSAk6b", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-5-minute-podcast-mpqMa73u08D-mYx8LcSkhz1.1400x1400.jpg", - "title": "The Tim Ferriss Show | 5 minute podcast summaries", - "country": "United States", - "website": "https://www.spreaker.com/show/the-tim-ferriss-show-5-minute-podcast-su?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 111, - 181, - 67 - ], - "itunes_id": 1556286643, - "publisher": "5 minute podcast summaries", - "thumbnail": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-5-minute-podcast-XMuN8q2Jorb-mYx8LcSkhz1.300x300.jpg", - "is_claimed": false, - "description": "5 minute summaries of The Tim Ferriss Show's podcast episodes. Get the best insights and ideas in much less time, more at owltail.com

Written summaries: https://www.owltail.com/summaries/75553-the-tim-ferriss-show

Other podcast summaries in Apple Podcasts: http://bit.ly/5-min-summaries

Other podcast summaries In other apps, search 'podcast summaries'.

Tim Ferriss is a self-experimenter and bestselling author, best known for The 4-Hour Workweek, which has been translated into 40+ languages. Newsweek calls him \"the world's best human guinea pig,\" and The New York Times calls him \"a cross between Jack Welch and a Buddhist monk.\" In this show, he deconstructs world-class performers from eclectic areas (investing, chess, pro sports, etc.), digging deep to find the tools, tactics, and tricks that listeners can use.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 35, - "total_episodes": 12, - "listennotes_url": "https://www.listennotes.com/c/7060b5d48b3440ba9668f9af2a90fa7f/", - "audio_length_sec": 221, - "explicit_content": false, - "latest_episode_id": "9163fe8fdfc34710af8d41b575023e07", - "latest_pub_date_ms": 1625881044000, - "earliest_pub_date_ms": 1619229600011, - "update_frequency_hours": 165, - "listen_score_global_rank": "3%" - }, - { - "id": "f9d5885d7cf7485d891e82dea3186640", - "rss": "https://rss.art19.com/how-i-built-this", - "type": "episodic", - "email": "iwonder@wondery.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2hvdy1pLWJ1aWx0LXRoaXM=", - "spotify_url": "https://open.spotify.com/show/6E709HRH7XaiZrMfgtNCun", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "HowIBuiltThis", - "facebook_handle": "howibuiltthis", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/how-i-built-this-with-guy-raz-guy-raz-wondery-I8nbimW4uEZ-UC0qH23iP9T.1400x1400.jpg", - "title": "How I Built This with Guy Raz", - "country": "United States", - "website": "https://wondery.com/shows/how-i-built-this/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 157, - 90, - 173, - 94, - 106, - 127, - 93, - 67, - 171 - ], - "itunes_id": 1150510297, - "publisher": "Guy Raz | Wondery", - "thumbnail": "https://production.listennotes.com/podcasts/how-i-built-this-with-guy-raz-guy-raz-wondery-6hPxKdwGUe0-UC0qH23iP9T.300x300.jpg", - "is_claimed": false, - "description": "\n

Guy Raz interviews the world\u2019s best-known entrepreneurs to learn how they built their iconic brands. In each episode, founders reveal deep, intimate moments of doubt and failure, and share insights on their eventual success. How I Built This is a master-class on innovation, creativity, leadership and how to navigate challenges of all kinds.

New episodes on Mondays and Thursdays for free. Listen 1-week early and to all episodes ad-free with Wondery+ or Amazon Music with a Prime membership or Amazon Music Unlimited subscription.

Get your How I Built This merch at WonderyShop.com/HowIBuiltThis


\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 83, - "total_episodes": 555, - "listennotes_url": "https://www.listennotes.com/c/f9d5885d7cf7485d891e82dea3186640/", - "audio_length_sec": 2988, - "explicit_content": false, - "latest_episode_id": "20befd47de804137a0dc08185b4ddf9d", - "latest_pub_date_ms": 1694070600000, - "earliest_pub_date_ms": 1472828160531, - "update_frequency_hours": 79, - "listen_score_global_rank": "0.01%" - }, - { - "id": "fe6864628066420c8103c94e91e72eb3", - "rss": "https://anchor.fm/s/f39a864/podcast/rss", - "type": "episodic", - "email": "justin.schnell@vaynermedia.com", - "extra": { - "url1": "https://medium.com/@garyvee", - "url2": "https://www.snapchat.com/add/garyvee", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cDovL2Fza2dhcnl2ZWUuZ2FyeXZlZS5saWJzeW5wcm8uY29tL3Jzcw==", - "spotify_url": "https://open.spotify.com/show/6SZVsPIxPfVs6aavqM1peY", - "youtube_url": "https://www.youtube.com/user/garyvaynerchuk", - "linkedin_url": "https://www.linkedin.com/in/garyvaynerchuk/", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "garyvee", - "facebook_handle": "gary", - "amazon_music_url": "https://music.amazon.com/podcasts/97113abf-5c18-4c7e-8d2b-efcf161f4848/the-garyvee-audio-experience", - "instagram_handle": "garyvee" - }, - "image": "https://production.listennotes.com/podcasts/the-garyvee-audio-experience-gary-vaynerchuk-jr4PQcHaude-X0Dfm7O_o3y.1400x1400.jpg", - "title": "The GaryVee Audio Experience", - "country": "United States", - "website": "http://www.garyvaynerchuk.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 95, - 127, - 169, - 78, - 157, - 97, - 98, - 173, - 93, - 67, - 171 - ], - "itunes_id": 928159684, - "publisher": "Gary Vaynerchuk", - "thumbnail": "https://production.listennotes.com/podcasts/the-garyvee-audio-experience-gary-vaynerchuk-MEzT5ukd8Qo-X0Dfm7O_o3y.300x300.jpg", - "is_claimed": false, - "description": "Welcome to The GaryVee Audio Experience, hosted by entrepreneur, CEO, investor, content creator, and public speaker Gary Vaynerchuk. On this podcast you'll find a mix of the #AskGaryVee show episodes, keynote speeches on marketing and business, segments from my DAILYVEE video series, interviews and fireside chats I've given, as well as new and current thoughts I record originally for this audio experience!\n\n", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 80, - "total_episodes": 2725, - "listennotes_url": "https://www.listennotes.com/c/fe6864628066420c8103c94e91e72eb3/", - "audio_length_sec": 1864, - "explicit_content": true, - "latest_episode_id": "2edd81a31c2c4301832bff5fb7b44c97", - "latest_pub_date_ms": 1694070000000, - "earliest_pub_date_ms": 1412179202542, - "update_frequency_hours": 22, - "listen_score_global_rank": "0.01%" - }, - { - "id": "9f6ee51adfb046cc9936490abd2666ce", - "rss": "https://feeds.simplecast.com/AAvup9Zz", - "type": "episodic", - "email": "podcast@schoolofgreatness.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9BQXZ1cDlaeg==", - "spotify_url": "https://open.spotify.com/show/07GQhOZboEZOE1ysnFLipT", - "youtube_url": "https://www.youtube.com/user/lewishowes", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "lewishowes", - "facebook_handle": "lewishowes", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-school-of-greatness-lewis-howes-Ggb9PDwVr63-H1zdqljixbp.1400x1400.jpg", - "title": "The School of Greatness", - "country": "United States", - "website": "https://www.stitcher.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 77, - 78, - 90, - 89, - 97, - 94, - 171, - 93, - 181, - 111, - 91, - 67, - 88 - ], - "itunes_id": 596047499, - "publisher": "Lewis Howes", - "thumbnail": "https://production.listennotes.com/podcasts/the-school-of-greatness-lewis-howes-jyfMSXd41U8-H1zdqljixbp.300x300.jpg", - "is_claimed": false, - "description": "Lewis Howes is a New York Times best-selling author, 2x All-American athlete, keynote speaker, and entrepreneur. The School of Greatness shares inspiring interviews from the most successful people on the planet\u2014world-renowned leaders in business, entertainment, sports, science, health, and literature\u2014to inspire YOU to unlock your inner greatness and live your best life.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 78, - "total_episodes": 1502, - "listennotes_url": "https://www.listennotes.com/c/9f6ee51adfb046cc9936490abd2666ce/", - "audio_length_sec": 3154, - "explicit_content": false, - "latest_episode_id": "4fe64ce81bcd411d8d4cd0f5c6d47521", - "latest_pub_date_ms": 1693983600000, - "earliest_pub_date_ms": 1358928001491, - "update_frequency_hours": 50, - "listen_score_global_rank": "0.01%" - }, - { - "id": "a409b8bb93f44054a7be2d6b30843899", - "rss": "https://entrepreneuronfire.libsyn.com/rss", - "type": "episodic", - "email": "John@EntrepreneurOnFire.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9lbnRyZXByZW5ldXJvbmZpcmUubGlic3luLmNvbS9yc3M=", - "spotify_url": "https://open.spotify.com/show/25wgHxrQY2e7WNeV4UtECI", - "youtube_url": "https://www.youtube.com/channel/UCXfzpliAfdjParawJljHo2g", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "johnleedumas", - "facebook_handle": "johnleedumas1", - "amazon_music_url": "https://music.amazon.com/podcasts/4728a7fc-731f-4b18-971b-85b0b8c2e784/entrepreneurs-on-fire", - "instagram_handle": "johnleedumas" - }, - "image": "https://production.listennotes.com/podcasts/entrepreneurs-on-fire-john-lee-dumas-of-DekxRsp0tNA-1WOhT7u6VQb.1400x1400.jpg", - "title": "Entrepreneurs on Fire", - "country": "United States", - "website": "https://www.eofire.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 88, - 111, - 90, - 94, - 97, - 169, - 157, - 173, - 93, - 67, - 171 - ], - "itunes_id": 564001633, - "publisher": "John Lee Dumas of EOFire", - "thumbnail": "https://production.listennotes.com/podcasts/entrepreneurs-on-fire-john-lee-dumas-of-o7xODP0r6-Q-1WOhT7u6VQb.300x300.jpg", - "is_claimed": true, - "description": "John Lee Dumas is the founder and host of the award winning podcast, Entrepreneurs On Fire. With over 100 million listens of his 3000+ episodes, JLD has turned Entrepreneurs On Fire into a media empire that generates over a million listens every month and 7-figures of NET annual revenue 8-years in a row. His first traditionally published book, The Common Path to Uncommon Success is the modern day version of Think and Grow Rich with a revolutionary 17-step roadmap to financial freedom and fulfillment. Learn more at UncommonSuccessBook.com", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 69, - "total_episodes": 3465, - "listennotes_url": "https://www.listennotes.com/c/a409b8bb93f44054a7be2d6b30843899/", - "audio_length_sec": 1804, - "explicit_content": false, - "latest_episode_id": "0d5bd83679304284a7f3205104d9cbc2", - "latest_pub_date_ms": 1694075400000, - "earliest_pub_date_ms": 1348297203456, - "update_frequency_hours": 24, - "listen_score_global_rank": "0.05%" - }, - { - "id": "499661f3589f42aaa1532673e0e0aedf", - "rss": "https://rss.art19.com/smart-passive-income-podcast", - "type": "episodic", - "email": "podcasts@teamspi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL3NtYXJ0LXBhc3NpdmUtaW5jb21lLXBvZGNhc3Q=", - "spotify_url": "https://open.spotify.com/show/7wjv5MRCXWXImqTFhcufLy", - "youtube_url": "https://www.youtube.com/user/smartpassiveincome", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "patflynn", - "facebook_handle": "smartpassiveincome", - "amazon_music_url": "https://music.amazon.com/podcasts/341282a1-cba9-4188-aa58-e09a51ccaa87/the-smart-passive-income-online-business-and-blogging-podcast", - "instagram_handle": "patflynn" - }, - "image": "https://production.listennotes.com/podcasts/the-smart-passive-income-online-business-jN-aR6qdYuo-NDa6-ySp9kw.1400x1400.jpg", - "title": "The Smart Passive Income Online Business and Blogging Podcast", - "country": "United States", - "website": "https://art19.com/shows/smart-passive-income-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 97, - 67, - 94, - 111, - 115, - 127, - 98, - 157, - 171, - 144, - 93, - 173 - ], - "itunes_id": 383084001, - "publisher": "Pat Flynn", - "thumbnail": "https://production.listennotes.com/podcasts/the-smart-passive-income-online-business-sF24owQHYWy-NDa6-ySp9kw.300x300.jpg", - "is_claimed": false, - "description": "\n

Pat Flynn from The Smart Passive Income Blog reveals all of his online business and blogging strategies, income sources and killer marketing tips and tricks so you can be ahead of the curve with your online business or blog. Discover how you can create multiple passive income streams that work for you so that you can have the time and freedom to do what you love, whether it's traveling the world, or just living comfortably at home. Since 2008, he's been supporting his family with his many online businesses, and he's been openly sharing his wins, his losses, and all the lessons in between with the community of energetic but humble entrepreneurs who follow him. Self-proclaimed \"crash test dummy of online business\", you'll learn about building authority online, email marketing, building a team and outsourcing, content marketing, podcasting, search engine optimization, niche sites, social media strategies, how to get more traffic, creating online courses, affiliate marketing, and productivity tips so that you create something amazing without burning yourself out. It's a mix of interviews, special co-hosts and solo shows from Pat you're not going to want to miss. Hit subscribe, and get ready to change your life.


\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 70, - "total_episodes": 726, - "listennotes_url": "https://www.listennotes.com/c/499661f3589f42aaa1532673e0e0aedf/", - "audio_length_sec": 2476, - "explicit_content": false, - "latest_episode_id": "475bc0fecead42889324c4d58884d64c", - "latest_pub_date_ms": 1693983600000, - "earliest_pub_date_ms": 1279551600722, - "update_frequency_hours": 83, - "listen_score_global_rank": "0.05%" - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "recommendations" - ], - "properties": { - "recommendations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - } - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#delete-api-v2-podcasts-id) +### fetchEpisodeById +Fetch detailed meta data for an episode by id -### Fetch recommendations for an episode +`GET /episodes/{id}` -Function Name: **fetchRecommendationsForEpisode** - -Fetch up to 8 episode recommendations based on the given episode id. +Fetch detailed meta data for a specific episode. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchRecommendationsForEpisode({ id: '914a9deafa5340eeaa2859c77f275799' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchEpisodeById({ + "id": "6b6d65930c5a4f71b254465871fed370", + "show_transcript": 1 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-episodes-id-recommendations). - - -
- Click to see example response - -```json -{ - "recommendations": [ - { - "id": "3a2016291aaa415abb9563bf8192ade7", - "link": "https://foundersproject.inc.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/3a2016291aaa415abb9563bf8192ade7/", - "image": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-kmUz9vWdufn-M25bgqtK8-I.1400x1400.jpg", - "title": "How to Build Community Through Ownership with Roham Gharegozlou of Dapper Labs", - "podcast": { - "id": "0694a18b25354ce593c3aeba7fb94d67", - "image": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-kmUz9vWdufn-M25bgqtK8-I.1400x1400.jpg", - "title": "Inc. Founders Project with Alexa von Tobel ", - "publisher": "Inc. Magazine", - "thumbnail": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-2jsPht5pNkI-M25bgqtK8-I.300x300.jpg", - "listen_score": 38, - "listennotes_url": "https://www.listennotes.com/c/0694a18b25354ce593c3aeba7fb94d67/", - "listen_score_global_rank": "2%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-2jsPht5pNkI-M25bgqtK8-I.300x300.jpg", - "description": "

If you've heard of NFTs (non-fungible tokens), it's likely thanks to the work of Roham Gharegozlou. Roham is the Co-Founder and CEO of Dapper Labs, the NFT company that has created some of the most viral brands out there, from CryptoKitties to NBA Top Shot. Through his venture studio Axiom Zen, he started looking into crypto back in 2014. With a mission to bring play to crypto, Dapper Labs has been named one of the most innovative gaming companies by Fast Company and has created some of the most broadly used applications in the history of crypto. Roham shares how NBA Top Shot scaled to over one million users, why he thinks of NFTs as the next evolution of social media, and why entrepreneurship requires a healthy balance of optimism and paranoia.\u00a0

", - "pub_date_ms": 1646215200067, - "guid_from_rss": "09eb05a6-996e-11ec-9f17-ef743a58b593", - "listennotes_url": "https://www.listennotes.com/e/3a2016291aaa415abb9563bf8192ade7/", - "audio_length_sec": 1792, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/3a2016291aaa415abb9563bf8192ade7/#edit" - }, - { - "id": "221ff88340b941148ad90749f0c745e7", - "link": "https://foundersproject.inc.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/221ff88340b941148ad90749f0c745e7/", - "image": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-kmUz9vWdufn-M25bgqtK8-I.1400x1400.jpg", - "title": "Flashback Episode: How to Build Community Through Ownership with Roham Gharegozlou of Dapper Labs", - "podcast": { - "id": "0694a18b25354ce593c3aeba7fb94d67", - "image": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-kmUz9vWdufn-M25bgqtK8-I.1400x1400.jpg", - "title": "Inc. Founders Project with Alexa von Tobel ", - "publisher": "Inc. Magazine", - "thumbnail": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-2jsPht5pNkI-M25bgqtK8-I.300x300.jpg", - "listen_score": 38, - "listennotes_url": "https://www.listennotes.com/c/0694a18b25354ce593c3aeba7fb94d67/", - "listen_score_global_rank": "2%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/inc-founders-project-with-alexa-von-tobel-2jsPht5pNkI-M25bgqtK8-I.300x300.jpg", - "description": "

If you've heard of NFTs (non-fungible tokens), it's likely thanks to the work of Roham Gharegozlou. Roham is the Co-Founder and CEO of Dapper Labs, the NFT company that has created some of the most viral brands out there, from CryptoKitties to NBA Top Shot. Through his venture studio Axiom Zen, he started looking into crypto back in 2014. With a mission to bring play to crypto, Dapper Labs has been named one of the most innovative gaming companies by Fast Company and has created some of the most broadly used applications in the history of crypto. Roham shares how NBA Top Shot scaled to over one million users, why he thinks of NFTs as the next evolution of social media, and why entrepreneurship requires a healthy balance of optimism and paranoia.\u00a0

", - "pub_date_ms": 1655888400051, - "guid_from_rss": "ff7cc4d0-f172-11ec-b560-e703d370d4d3", - "listennotes_url": "https://www.listennotes.com/e/221ff88340b941148ad90749f0c745e7/", - "audio_length_sec": 1792, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/221ff88340b941148ad90749f0c745e7/#edit" - }, - { - "id": "774e65cead6e4b548f09a1a7bf7c55af", - "link": "https://www.coindesk.com/podcasts/markets-daily?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/774e65cead6e4b548f09a1a7bf7c55af/", - "image": "https://production.listennotes.com/podcasts/markets-daily-crypto-roundup-coindesk-xEObzQi6qJr-VTiDtLAInyo.1400x1400.jpg", - "title": "Most Influential 2021: Roham Gharegozlou (Pt. 2)", - "podcast": { - "id": "6c7ed315628b441c8a1bf0e331da2ba9", - "image": "https://production.listennotes.com/podcasts/markets-daily-crypto-roundup-coindesk-xEObzQi6qJr-VTiDtLAInyo.1400x1400.jpg", - "title": "Markets Daily Crypto Roundup", - "publisher": "CoinDesk", - "thumbnail": "https://production.listennotes.com/podcasts/markets-daily-crypto-roundup-coindesk-q7QR_ynu6Hv-VTiDtLAInyo.300x300.jpg", - "listen_score": 43, - "listennotes_url": "https://www.listennotes.com/c/6c7ed315628b441c8a1bf0e331da2ba9/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/markets-daily-crypto-roundup-coindesk-q7QR_ynu6Hv-VTiDtLAInyo.300x300.jpg", - "description": "

On today's show CoinDesk Columnist and author of 7 books, Jeff Wilser, picks Roham Gharegozlou as one of CoinDesk's Most Influential in 2021. The man behind CryptoKitties and NBA Top Shot has big plans for digital sports and the open metaverse. (Part 2)

Read the story here.


This episode is sponsored by Kava, Nexo.io and Market Intel by Chainalysis.


This episode was edited & produced by Adrian Blust.  

-

Kava lets you mint stablecoins, lend, borrow, earn and swap safely across the world\u2019s biggest crypto assets. Connect to the world's largest cryptocurrencies, ecosystems and financial applications on DeFi\u2019s most trusted, scalable and secure earning platform with kava.io.

-

Nexo is a powerful, all-in-one crypto platform where you can securely store your assets. Invest, borrow, exchange and earn up to 12% APR on Bitcoin and 20+ other top coins. Insured for $375M and audited in real-time by Armanino, Nexo is rated excellent on Trustpilot. Get started today at nexo.io.

-

Market Intel by Chainalysis\u2014the Blockchain Data Platform\u2014arms your team with the most complete on-chain dataset to make informed crypto investments, deliver original research, and identify and confidently fund emerging players in the market. See Chainalysis Market Intel in action now.

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

", - "pub_date_ms": 1640516400557, - "guid_from_rss": "gid://art19-episode-locator/V0/r2o71PPmrHUyC-poZTVb_1aRNHd2tBCgIe_UrksQ3Gk", - "listennotes_url": "https://www.listennotes.com/e/774e65cead6e4b548f09a1a7bf7c55af/", - "audio_length_sec": 733, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/774e65cead6e4b548f09a1a7bf7c55af/#edit" - }, - { - "id": "2afa18fe81b64fae9a178ea4e6ea1b78", - "link": "http://samsungnext.com/podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/2afa18fe81b64fae9a178ea4e6ea1b78/", - "image": "https://production.listennotes.com/podcasts/whats-next-samsung-next-BOU80jWegKh-kG8U3EdxHWo.1400x1400.jpg", - "title": "Building blockchain collectibles with Dapper Labs founder Roham Gharegozlou", - "podcast": { - "id": "0615f79f64de4f1989d4ad1bac7cbc9e", - "image": "https://production.listennotes.com/podcasts/whats-next-samsung-next-BOU80jWegKh-kG8U3EdxHWo.1400x1400.jpg", - "title": "What's NEXT", - "publisher": "Samsung NEXT", - "thumbnail": "https://production.listennotes.com/podcasts/whats-next-samsung-next-RaNEz68Vhc0-kG8U3EdxHWo.300x300.jpg", - "listen_score": 26, - "listennotes_url": "https://www.listennotes.com/c/0615f79f64de4f1989d4ad1bac7cbc9e/", - "listen_score_global_rank": "10%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/whats-next-samsung-next-RaNEz68Vhc0-kG8U3EdxHWo.300x300.jpg", - "description": "

Welcome back to What\u2019s NEXT, the podcast exploring the technology of the future. This is the last in our series of conversations from the Web Summit conference last year.

In this episode, Samsung NEXT\u2019s Haley Lancaster speaks with Roham Gharegozlou, the founder and CEO of Dapper Labs, which made CryptoKitties and a number of other decentralized apps. Roham speaks about the early success of CryptoKitties, how his company works with partners like the NBA and Ubisoft, and why Dapper Labs is building a new, developer-friendly blockchain platform called Flow.

", - "pub_date_ms": 1580972400005, - "guid_from_rss": "8efdfab2-46e8-11ea-9483-0e1facdaf5fd", - "listennotes_url": "https://www.listennotes.com/e/2afa18fe81b64fae9a178ea4e6ea1b78/", - "audio_length_sec": 851, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/2afa18fe81b64fae9a178ea4e6ea1b78/#edit" - }, - { - "id": "8c9fcee265fc4f54bbca6afafcb8c28c", - "link": "https://podcasters.spotify.com/pod/show/thefirstmint/episodes/Roham-e15g29r?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/8c9fcee265fc4f54bbca6afafcb8c28c/", - "image": "https://production.listennotes.com/podcasts/the-first-mint-podcast-the-first-mint-Gr3QBqaS-co-NuBwOlnV0bt.1400x1400.jpg", - "title": "Roham", - "podcast": { - "id": "fbdf83bb46ac4e0b9e807991719e210f", - "image": "https://production.listennotes.com/podcasts/the-first-mint-podcast-the-first-mint-Gr3QBqaS-co-NuBwOlnV0bt.1400x1400.jpg", - "title": "The First Mint Podcast", - "publisher": "The First Mint", - "thumbnail": "https://production.listennotes.com/podcasts/the-first-mint-podcast-the-first-mint-SyV02rj4mN5-NuBwOlnV0bt.300x300.jpg", - "listen_score": 47, - "listennotes_url": "https://www.listennotes.com/c/fbdf83bb46ac4e0b9e807991719e210f/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-first-mint-podcast-the-first-mint-SyV02rj4mN5-NuBwOlnV0bt.300x300.jpg", - "description": "

Episode 83 of The First Mint.

\n

Roham.

\n

To kick off First Mint Fest, LG Doucet sat down with Roham Gharegozlou, the Founder & CEO of Dapper Labs, the company behind NBA Top Shot and the Flow Blockchain. 

", - "pub_date_ms": 1628143512162, - "guid_from_rss": "f148e49b-dfbf-4a94-8e3a-19bcb4ff1c17", - "listennotes_url": "https://www.listennotes.com/e/8c9fcee265fc4f54bbca6afafcb8c28c/", - "audio_length_sec": 3738, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/8c9fcee265fc4f54bbca6afafcb8c28c/#edit" - }, - { - "id": "3663e1ba8f944df7956378ab332bf12b", - "link": "https://www.gimletmedia.com/startup?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/3663e1ba8f944df7956378ab332bf12b/", - "image": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-14zU0c_MOmv-n9PpCBTQvoJ.1400x1400.jpg", - "title": "Introducing How to Save a Planet", - "podcast": { - "id": "0d362b13399240de97602ef614acdcbc", - "image": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-14zU0c_MOmv-n9PpCBTQvoJ.1400x1400.jpg", - "title": "StartUp Podcast", - "publisher": "Gimlet", - "thumbnail": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-8If7QBKU5jb-n9PpCBTQvoJ.300x300.jpg", - "listen_score": 73, - "listennotes_url": "https://www.listennotes.com/c/0d362b13399240de97602ef614acdcbc/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/startup-podcast-gimlet-8If7QBKU5jb-n9PpCBTQvoJ.300x300.jpg", - "description": "

Does climate change freak you out? Want to know what we, collectively, can do about it? Us too. How to Save a Planet is a podcast that asks the big questions: what do we need to do to solve the climate crisis, and how do we get it done?

Join us, journalist Alex Blumberg and scientist and policy nerd Dr. Ayana Elizabeth Johnson, as we scour the Earth for solutions, talk to people who are making a difference, ask hard questions, crack dumb jokes and \u2014 episode by episode \u2014 figure out how to build the future we want.

", - "pub_date_ms": 1598004000000, - "guid_from_rss": "25666464-e19c-11ea-bb5d-b3b5dc0bbdef", - "listennotes_url": "https://www.listennotes.com/e/3663e1ba8f944df7956378ab332bf12b/", - "audio_length_sec": 714, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/3663e1ba8f944df7956378ab332bf12b/#edit" - }, - { - "id": "b03b9f59a5df4d31bf44e1828353c8e6", - "link": "https://www.softwaredefinedinterviews.com/ma4?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/b03b9f59a5df4d31bf44e1828353c8e6/", - "image": "https://production.listennotes.com/podcasts/software-defined-interviews-software-yFixmv_8KZq-y7KRi_flj8t.1400x1400.jpg", - "title": "Misaligned Incentives Episode 4: You get what you pay for - compensating tech staff is often done poorly", - "podcast": { - "id": "13350cb77ad548bc8991dac9657f45b7", - "image": "https://production.listennotes.com/podcasts/software-defined-interviews-software-yFixmv_8KZq-y7KRi_flj8t.1400x1400.jpg", - "title": "Software Defined Interviews", - "publisher": "Software Defined Talk", - "thumbnail": "https://production.listennotes.com/podcasts/software-defined-interviews-software-N8fPcvt0JmU-y7KRi_flj8t.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/13350cb77ad548bc8991dac9657f45b7/", - "listen_score_global_rank": null - }, - "thumbnail": "https://production.listennotes.com/podcasts/software-defined-interviews-software-N8fPcvt0JmU-y7KRi_flj8t.300x300.jpg", - "description": "
    <p>We discuss compensation, particularly how people in the IT department (&quot;developers,&quot; etc.) are so disconnected from the actual business that compensating them based on business performance is near impossible. Not good if you&#39;re an IT person and like money.</p>\n
\n\n

There's other types of comp. then money, obviously, and those are fine too. In particular, we discuss participation in open source and more recognition. But, still: money is the best.

", - "pub_date_ms": 1594980000000, - "guid_from_rss": "efb05656-d9ef-4fe7-b583-3c49d929fb6c", - "listennotes_url": "https://www.listennotes.com/e/b03b9f59a5df4d31bf44e1828353c8e6/", - "audio_length_sec": 3057, - "explicit_content": true, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/b03b9f59a5df4d31bf44e1828353c8e6/#edit" - }, - { - "id": "653da187c8fc4d17adee39ecc64e0658", - "link": null, - "audio": "https://www.listennotes.com/e/p/653da187c8fc4d17adee39ecc64e0658/", - "image": "https://production.listennotes.com/podcasts/she-did-it-her-way/sdh-476-im-doing-it-my-way-gZBesUx8hH_-OUp-kAj5It7.1400x1400.jpg", - "title": "SDH 476: I'm Doing It My Way (Special Announcement) with Amanda Boleyn", - "podcast": { - "id": "baf59c165baf441d881b39ec3cc1f320", - "image": "https://production.listennotes.com/podcasts/she-did-it-her-way-amanda-boleyn-m7n-RzQBvEC-jsD5bCh1vo2.1400x1400.jpg", - "title": "She Did It Her Way", - "publisher": "Amanda Boleyn ", - "thumbnail": "https://production.listennotes.com/podcasts/she-did-it-her-way-amanda-boleyn-ck2Y4SdwDM1-jsD5bCh1vo2.300x300.jpg", - "listen_score": 47, - "listennotes_url": "https://www.listennotes.com/c/baf59c165baf441d881b39ec3cc1f320/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/she-did-it-her-way/sdh-476-im-doing-it-my-way-36NVPdTkKzI-OUp-kAj5It7.300x300.jpg", - "description": "

Hello my beautiful listeners! Welcome back to another episode of the She Did It Her Way podcast. This episode is going to be a little bit different in that I have some news to share and I am going to do it in a very full-circle way, joined by my very first podcast guest ever and dear friend, Shauna VanBogart.

This news has been some time in the making and while it certainly is bittersweet and definitely not the easiest to share it\u2019s important to remember that sometimes the things that aren\u2019t the easiest are actually the most necessary.\u00a0

The purpose of having Shauna on the show is that she will actually be interviewing me and pulling some things out of me, as opposed to me being on the other side of the mic, so to speak.\u00a0

I hope that this episode gives you permission to pivot, or potentially close a chapter that no longer feels aligned with you, no matter how challenging the transition may be. Especially when you know, in your gut, that it's time for a change.

As always, my beautiful friends, keep doing it your way.\u00a0
\u00a0

\u00a0

Insights:

\u00a0

Resources:

", - "pub_date_ms": 1640001600000, - "guid_from_rss": "4ba9006a-73e0-4e78-969e-251495a7bd44", - "listennotes_url": "https://www.listennotes.com/e/653da187c8fc4d17adee39ecc64e0658/", - "audio_length_sec": 3002, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/653da187c8fc4d17adee39ecc64e0658/#edit" - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "recommendations" - ], - "properties": { - "recommendations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } - } - } - } -} -``` -
+[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-episodes-id) +### batchFetchEpisodes +Batch fetch basic meta data for episodes - -### Batch fetch basic meta data for episodes - -Function Name: **batchFetchEpisodes** +`POST /episodes` Batch fetch basic meta data for up to 10 episodes. This endpoint could be used to implement custom playlists for individual episodes. For detailed meta data of an individual episode, you need to use `GET /episodes/{id}`. This endpoint is available only in the PRO/ENTERPRISE plan. - -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.batchFetchEpisodes({ ids: 'c577d55b2b2b483c969fae3ceb58e362,0f34a9099579490993eec9e8c8cebb82' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.batchFetchEpisodes({ + "ids": "c577d55b2b2b483c969fae3ceb58e362,0f34a9099579490993eec9e8c8cebb82" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#post-api-v2-episodes). - - -
- Click to see example response - -```json -{ - "episodes": [ - { - "id": "0f34a9099579490993eec9e8c8cebb82", - "link": "https://cms.megaphone.fm/channel/business-unusual-with-barbara-corcoran?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/0f34a9099579490993eec9e8c8cebb82/", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "35: Don\u2019t Make Your Landlord Rich", - "podcast": { - "id": "68faf62be97149c280ebcc25178aa731", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "Business Unusual with Barbara Corcoran", - "publisher": "Barbara Corcoran", - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/68faf62be97149c280ebcc25178aa731/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "description": "

If you\u2019re starting a new business, you need to keep costs low \u2013 so renting is the way to go, right?\n\nI say no! I\u2019ll tell you why you should scrape together the cash to buy your business headquarters from the get-go.\u00a0\n\nAlso, I\u2019ll answer some more of your great questions about how to get the press to pay attention to your little mom and pop shop and what to do about a toxic work environment.\n\nGot a business question you want to ask me? Tweet it @BarbaraCorcoran and I may just answer it on a future episode!\n\nFollow Business Unusual with Barbara Corcoran on iHeartRadio, or subscribe wherever you listen to podcasts.\n\nThis episode of Business Unusual with Barbara Corcoran is presented by\u00a0On Deck Business Loans\u00a0(http://www.ondeck.com/barbara).\u00a0\u00a0\u00a0

", - "pub_date_ms": 1546232460164, - "guid_from_rss": "gid://art19-episode-locator/V0/Q3wpi1LpU7b7vFqc3_T1BsaIqZJruq-YWy3Ud4sJnJo", - "listennotes_url": "https://www.listennotes.com/e/0f34a9099579490993eec9e8c8cebb82/", - "audio_length_sec": 486, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/0f34a9099579490993eec9e8c8cebb82/#edit" - }, - { - "id": "c577d55b2b2b483c969fae3ceb58e362", - "link": "https://www.listenmoneymatters.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/c577d55b2b2b483c969fae3ceb58e362/", - "image": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-lPXW7V_6n0C-SJEHNr84kVg.1400x1400.jpg", - "title": "Do Things That Scale: Starting a Business That Will Take Off", - "podcast": { - "id": "3302bc71139541baa46ecb27dbf6071a", - "image": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-lPXW7V_6n0C-SJEHNr84kVg.1400x1400.jpg", - "title": "Listen Money Matters - Free your inner financial badass. All the stuff you should know about personal finance.", - "publisher": "ListenMoneyMatters.com | Andrew Fiebert and Matt Giovanisci", - "thumbnail": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-d5If074qkhz-SJEHNr84kVg.300x300.jpg", - "listen_score": 63, - "listennotes_url": "https://www.listennotes.com/c/3302bc71139541baa46ecb27dbf6071a/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-d5If074qkhz-SJEHNr84kVg.300x300.jpg", - "description": "

There are only so many hours in a day so you need to build a business that can grow while you\u2019re sleeping, on vacation, or working on your next business. You have to do things that scale when starting a business that will take off. While we are discussing scaling a business, there are plenty of other areas of life that you can scale including investing and video games. To scale a business means to create a system, product, or service that can generate more money through some resource that isn\u2019t your time. Scale is a concept that is meant to support infinite growth. When starting a business, you want to find ways to apply your time and money that are scalable and to shift your focus from things with a hard maximum return to things that have the potential to be infinitely scalable.

\u00a0

Full Article Here

Show Notes

Board Meeting: A coffee flavored brown ale.

Tool Box: All the best stuff to manage your money.

Do Things That Don't Scale: The essay Andrew mentioned by Paul Graham.

Learn more about your ad choices. Visit megaphone.fm/adchoices

", - "pub_date_ms": 1528088400089, - "guid_from_rss": "https://www.listenmoneymatters.com/?p=46659", - "listennotes_url": "https://www.listennotes.com/e/c577d55b2b2b483c969fae3ceb58e362/", - "audio_length_sec": 3683, - "explicit_content": true, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/c577d55b2b2b483c969fae3ceb58e362/#edit" - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "episodes" - ], - "properties": { - "episodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } - } - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#post-api-v2-episodes) +### batchFetchPodcasts +Batch fetch basic meta data for podcasts -### Batch fetch basic meta data for podcasts - -Function Name: **batchFetchPodcasts** +`POST /podcasts` Batch fetch basic meta data for up to 10 podcasts. This endpoint could be used to build something like OPML import, allowing users to import a bunch of podcasts via rss urls. For detailed meta data (including episodes) of an individual podcast, you need to use `GET /podcasts/{id}`. This endpoint is available only in the PRO/ENTERPRISE plan. - -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); client.batchFetchPodcasts({ - ids: '3302bc71139541baa46ecb27dbf6071a,68faf62be97149c280ebcc25178aa731,9cf19c590ff0484d97b18b329fed0c6a', - itunes_ids: '1457514703,1386234384,659155419', show_latest_episodes: 1, -}).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - + "ids": "3302bc71139541baa46ecb27dbf6071a,68faf62be97149c280ebcc25178aa731,37589a3e121e40debe4cef3d9638932a,9cf19c590ff0484d97b18b329fed0c6a", + "rsses": "https://rss.art19.com/recode-decode,https://rss.art19.com/the-daily,https://www.npr.org/rss/podcast.php?id=510331,https://www.npr.org/rss/podcast.php?id=510331", + "itunes_ids": "1457514703,1386234384,659155419", + "spotify_ids": "3DDfEsKDIDrTlnPOiG4ZF4,4qDNe5Gvl1XxdLinUGEXrC,23NZCM4ik6o3UYkM473Itz", + "show_latest_episodes": 1, + "next_episode_pub_date": 1557394247000 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#post-api-v2-podcasts). - - -
- Click to see example response - -```json -{ - "podcasts": [ - { - "id": "37589a3e121e40debe4cef3d9638932a", - "rss": "https://exponent.fm/feed/", - "type": "episodic", - "email": "bjthompson@mac.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9leHBvbmVudC5mbS9mZWVkLw==", - "spotify_url": "https://open.spotify.com/show/1do6Oa0fxKFyw1Yt1IlBIk", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "exponentfm", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-xZm7IMnq5bR-OaJSjb4xQv3.1400x1400.jpg", - "title": "Exponent", - "country": "United States", - "website": "https://exponent.fm?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 149, - 157, - 93, - 129, - 67, - 127 - ], - "itunes_id": 826420969, - "publisher": "Ben Thompson / James Allworth", - "thumbnail": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-8sx24A_0Jlk-OaJSjb4xQv3.300x300.jpg", - "is_claimed": false, - "description": "A podcast about tech and society, hosted by Ben Thompson and James Allworth", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 59, - "total_episodes": 198, - "listennotes_url": "https://www.listennotes.com/c/37589a3e121e40debe4cef3d9638932a/", - "audio_length_sec": 3740, - "explicit_content": false, - "latest_episode_id": "dc09fd798802477b8dba0ca1e10134fa", - "latest_pub_date_ms": 1670628575000, - "earliest_pub_date_ms": 1392899826198, - "update_frequency_hours": 1250, - "listen_score_global_rank": "0.1%" - }, - { - "id": "68faf62be97149c280ebcc25178aa731", - "rss": "https://feeds.megaphone.fm/business-unusual-with-barbara-corcoran", - "type": "episodic", - "email": "businessunusual@barbaracorcoran.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vYnVzaW5lc3MtdW51c3VhbC13aXRoLWJhcmJhcmEtY29yY29yYW4=", - "spotify_url": "https://open.spotify.com/show/1bElk5alSOMk6sya929A6r", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "BarbaraCorcoran", - "facebook_handle": "TheBarbaraCorcoran", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "Business Unusual with Barbara Corcoran", - "country": "United States", - "website": "https://cms.megaphone.fm/channel/business-unusual-with-barbara-corcoran?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93, - 94, - 98, - 157 - ], - "itunes_id": 1378685290, - "publisher": "Barbara Corcoran", - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "is_claimed": false, - "description": "I\u2019m smart at getting to where I want to go, and I can teach you how to do it! I had 22 jobs before starting my real estate company with a $1000 loan and built it into a $5 billion business. Today I\u2019m a \u2019Shark\u2019 on ABC\u2019s hit show \"Shark Tank.\" It didn\u2019t take a fancy degree to get here but took street smarts and a lot of courage. Life is too short to waste your time practicing someone else\u2019s fancy theory on success. I give you the straight talk and the confidence to get there. Got a question? Call me at 888-BARBARA. Subscribe to Business Unusual with Barbara Corcoran wherever you listen to podcasts.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 56, - "total_episodes": 200, - "listennotes_url": "https://www.listennotes.com/c/68faf62be97149c280ebcc25178aa731/", - "audio_length_sec": 1442, - "explicit_content": false, - "latest_episode_id": "b97b1bb8df2d46e284d8af955c928ace", - "latest_pub_date_ms": 1679371200000, - "earliest_pub_date_ms": 1525202794199, - "update_frequency_hours": 336, - "listen_score_global_rank": "0.5%" - }, - { - "id": "9cf19c590ff0484d97b18b329fed0c6a", - "rss": "https://feeds.megaphone.fm/binge-mode", - "type": "serial", - "email": "info@theringer.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vYmluZ2UtbW9kZQ==", - "spotify_url": "https://open.spotify.com/show/6u8aqT4yaqnXiAwSHQP0NN", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "binge_mode", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/binge-mode-marvel-the-ringer-QZoDCyP6hev-BdPpshCaFDu.1400x1400.jpg", - "title": "Binge Mode: Marvel", - "country": "United States", - "website": "https://art19.com/shows/binge-mode-game-of-thrones?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 68, - 162, - 122 - ], - "itunes_id": 1243247464, - "publisher": "The Ringer", - "thumbnail": "https://production.listennotes.com/podcasts/binge-mode-marvel-the-ringer-bqVntBmw3ij-BdPpshCaFDu.300x300.jpg", - "is_claimed": false, - "description": "The Ringer\u2019s Mallory Rubin and Jason Concepcion return to take their signature deep dives into the Marvel Cinematic Universe, covering all 23 films!", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 76, - "total_episodes": 41, - "listennotes_url": "https://www.listennotes.com/c/9cf19c590ff0484d97b18b329fed0c6a/", - "audio_length_sec": 7086, - "explicit_content": true, - "latest_episode_id": "349b3385606147b8b29d5aa653563669", - "latest_pub_date_ms": 1616634120000, - "earliest_pub_date_ms": 1496277060040, - "update_frequency_hours": 103, - "listen_score_global_rank": "0.01%" - }, - { - "id": "3302bc71139541baa46ecb27dbf6071a", - "rss": "https://feeds.megaphone.fm/listen-money-matters", - "type": "episodic", - "email": "listenmoneymatters@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vbGlzdGVuLW1vbmV5LW1hdHRlcnM=", - "spotify_url": "https://open.spotify.com/show/54VydTdMDHkfqPqzlwRJFa", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "MoneyMattersMan", - "facebook_handle": "ListenMoneyMatters", - "amazon_music_url": "", - "instagram_handle": "listenmoneymatters" - }, - "image": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-lPXW7V_6n0C-SJEHNr84kVg.1400x1400.jpg", - "title": "Listen Money Matters - Free your inner financial badass. All the stuff you should know about personal finance.", - "country": "United States", - "website": "https://www.listenmoneymatters.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93, - 127, - 128, - 144, - 111, - 98 - ], - "itunes_id": 736826307, - "publisher": "ListenMoneyMatters.com | Andrew Fiebert and Matt Giovanisci", - "thumbnail": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-d5If074qkhz-SJEHNr84kVg.300x300.jpg", - "is_claimed": false, - "description": "Honest and uncensored - this is not your father\u2019s boring finance show. This show brings much needed ACTIONABLE advice to a people who hate being lectured about personal finance from the out-of-touch one percent. Andrew and Matt are relatable, funny, and brash. Their down-to-earth discussions about money are entertaining whether you\u2019re a financial whiz or just starting out. To be a part of the show and get your financial questions answered, send an email to listenmoneymatters@gmail.com.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 63, - "total_episodes": 505, - "listennotes_url": "https://www.listennotes.com/c/3302bc71139541baa46ecb27dbf6071a/", - "audio_length_sec": 2787, - "explicit_content": true, - "latest_episode_id": "d044a9f0fb304c148f4f4e9e3ad27dd6", - "latest_pub_date_ms": 1589169600000, - "earliest_pub_date_ms": 1383138000504, - "update_frequency_hours": 201, - "listen_score_global_rank": "0.1%" - }, - { - "id": "613aa80ec729409ea0db4265cf3e3899", - "rss": "https://www.npr.org/rss/podcast.php?id=510331", - "type": "serial", - "email": "podcasts@npr.org", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "nprlifekit", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-WuHnh0Poiyb-IDT1XPkq4rb.1400x1400.jpg", - "title": "Find Money You Didn't Know You Had", - "country": "United States", - "website": "https://www.npr.org/lifekit?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93 - ], - "itunes_id": 1446899299, - "publisher": "NPR", - "thumbnail": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-Dl7VZ86KyNA-IDT1XPkq4rb.300x300.jpg", - "is_claimed": false, - "description": "Don't let your money disappear into a whirlpool of bank fees, takeout orders, and lattes! We'll learn how to free up more money so you can spend it on \u2014 and save it for \u2014 the things you value most.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 8, - "listennotes_url": "https://www.listennotes.com/c/613aa80ec729409ea0db4265cf3e3899/", - "audio_length_sec": 520, - "explicit_content": false, - "latest_episode_id": "42cd0929582f4856bcca0fa98dce9119", - "latest_pub_date_ms": 1574665259000, - "earliest_pub_date_ms": 1544800017000, - "update_frequency_hours": 736, - "listen_score_global_rank": null - }, - { - "id": "3a2a6ddd549f4df0b876e7315fa1a319", - "rss": "https://philosophizethis.libsyn.com/rss", - "type": "episodic", - "email": "steve@stephenwestshow.com", - "extra": { - "url1": "http://philosophizethis.org/", - "url2": "", - "url3": "", - "google_url": "https://play.google.com/music/listen?u=0&gclid=COmlsNrWmc0CFcimfgodxAYFGw&gclsrc=ds#/ps/Iszi3nzoe3p22hsxpoe3i2jmxxy", - "spotify_url": "https://open.spotify.com/show/2Shpxw7dPoxRJCdfFXTWLE", - "youtube_url": "https://www.youtube.com/channel/UCjnpuIGovFFUBLG5BeHzTag", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "philosophizethis", - "twitter_handle": "iamstephenwest", - "facebook_handle": "Philosophizethisshow", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-Y2PvRelyrIN-ivQCfmkqM_h.1400x1400.jpg", - "title": "Philosophize This!", - "country": "United States", - "website": "http://www.philosophizethis.org?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 133, - 67, - 125, - 122, - 126, - 111 - ], - "itunes_id": 659155419, - "publisher": "Stephen West", - "thumbnail": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-oSuiCW7Bz8T-ivQCfmkqM_h.300x300.jpg", - "is_claimed": false, - "description": "Beginner friendly if listened to in order! For anyone interested in an educational podcast about philosophy where you don't need to be a graduate-level philosopher to understand it. In chronological order, the thinkers and ideas that forged the world we live in are broken down and explained.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 77, - "total_episodes": 188, - "listennotes_url": "https://www.listennotes.com/c/3a2a6ddd549f4df0b876e7315fa1a319/", - "audio_length_sec": 1767, - "explicit_content": false, - "latest_episode_id": "3977d26976ef40a886c704439a710337", - "latest_pub_date_ms": 1694052420000, - "earliest_pub_date_ms": 1370556600187, - "update_frequency_hours": 365, - "listen_score_global_rank": "0.01%" - }, - { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "rss": "https://feeds.megaphone.fm/marketsnacks-daily", - "type": "episodic", - "email": "iwonder@wondery.com", - "extra": { - "url1": "http://www.marketsnacks.com/", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5tZWdhcGhvbmUuZm0vbWFya2V0c25hY2tzLWRhaWx5", - "spotify_url": "https://open.spotify.com/show/5RllMBgvDnTau8nnsCUdse", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "marketsnacks", - "facebook_handle": "MarketSnacks", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "country": "United States", - "website": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 98, - 67, - 93, - 95, - 99 - ], - "itunes_id": 1386234384, - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "is_claimed": false, - "description": "\n Feel brighter every day with our 20-minute pop-biz podcast. The 3 business news stories you need, with fresh takes you can pretend you came up with \u2014 Pairs perfectly with your morning oatmeal ritual. Hosted by Jack Crivici-Kramer & Nick Martell.\n ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 71, - "total_episodes": 1035, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "audio_length_sec": 1106, - "explicit_content": false, - "latest_episode_id": "80f68b3bc2ba4e1bb96aab1455852d11", - "latest_pub_date_ms": 1694077200000, - "earliest_pub_date_ms": 1553519101033, - "update_frequency_hours": 50, - "listen_score_global_rank": "0.05%" - }, - { - "id": "bacb2f7ca7a04ed0b21efd21192f5014", - "rss": "https://feeds.megaphone.fm/espionage", - "type": "episodic", - "email": "support@parcast.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "ParcastNetwork", - "facebook_handle": "parcast", - "amazon_music_url": "", - "instagram_handle": "parcast" - }, - "image": "https://production.listennotes.com/podcasts/espionage-parcast-network-X9AT-uYo8Nq-ReK0QUN-VP_.1400x1400.jpg", - "title": "Espionage", - "country": "United States", - "website": "https://www.parcast.com/espionage?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 99 - ], - "itunes_id": 1457514703, - "publisher": "Parcast Network", - "thumbnail": "https://production.listennotes.com/podcasts/espionage-parcast-network-j-WLEmNQ4PB-ReK0QUN-VP_.300x300.jpg", - "is_claimed": false, - "description": "Not all spies look like James Bond and Ethan Hunt. Most of them look like ordinary people, which makes them all the more dangerous... So what does it really take to be a spy? Every week, we cover a real-life spy mission: the stakes, the deception, the gadgets, and how it changed the course of history. Each two-part series follows one mission of a historic spy, and if they made it out alive. Espionage is a production of Cutler Media and part of the Parcast Network.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 62, - "total_episodes": 85, - "listennotes_url": "https://www.listennotes.com/c/bacb2f7ca7a04ed0b21efd21192f5014/", - "audio_length_sec": 2354, - "explicit_content": false, - "latest_episode_id": "46a1263abac242959fab3e4e14f98763", - "latest_pub_date_ms": 1623049260000, - "earliest_pub_date_ms": 1553471173023, - "update_frequency_hours": 482, - "listen_score_global_rank": "0.1%" - }, - { - "id": "f46aac143841488b89c76923e5812846", - "rss": "https://anchor.fm/s/cd0e434/podcast/rss", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy9jZDBlNDM0L3BvZGNhc3QvcnNz", - "spotify_url": "https://open.spotify.com/show/3DDfEsKDIDrTlnPOiG4ZF4", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/sports-card-investor-sports-card-investor-GmY_9vaPHMi-vZSFLzx3p10.1400x1400.jpg", - "title": "Sports Card Investor", - "country": "United States", - "website": "https://www.sportscardinvestor.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 82 - ], - "itunes_id": 1473711424, - "publisher": "Sports Card Investor", - "thumbnail": "https://production.listennotes.com/podcasts/sports-card-investor-sports-card-investor-1oWHa8cJfRk-vZSFLzx3p10.300x300.jpg", - "is_claimed": false, - "description": "Profit from the hobby you love. What are the best baseball, basketball and football cards to invest in today? How is the market trending? How can you profit? In each episode, we tackle these questions and more.\n\nSports Card Investor is brought to you by eBay, your number one spot for cards and collectibles. With the largest inventory of sports cards from basketball to soccer, and buyers from all over the globe, eBay is the leading place to buy, sell and invest your cards. Search eBay trading cards here: https://www.ebay.com/b/Trading-Cards/bn_7116496578", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 46, - "total_episodes": 475, - "listennotes_url": "https://www.listennotes.com/c/f46aac143841488b89c76923e5812846/", - "audio_length_sec": 1313, - "explicit_content": false, - "latest_episode_id": "ea042ef03a8841629b7671b590a2ae4d", - "latest_pub_date_ms": 1693949400000, - "earliest_pub_date_ms": 1563549867472, - "update_frequency_hours": 91, - "listen_score_global_rank": "1%" - }, - { - "id": "1c956b42302a488bbac0595e1922ea86", - "rss": "https://www.omnycontent.com/d/playlist/bc559b08-358b-442a-81b6-a96000559829/c5fae094-0e75-4840-8b0d-a9ad0116ba3b/cf505041-2f72-4502-b876-a9ad0116ba3b/podcast.rss", - "type": "episodic", - "email": "host@alreadygonepodcast.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvYmM1NTliMDgtMzU4Yi00NDJhLTgxYjYtYTk2MDAwNTU5ODI5L2M1ZmFlMDk0LTBlNzUtNDg0MC04YjBkLWE5YWQwMTE2YmEzYi9jZjUwNTA0MS0yZjcyLTQ1MDItYjg3Ni1hOWFkMDExNmJhM2IvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/4qDNe5Gvl1XxdLinUGEXrC", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-M_4QcFrhTuI-MoexDp6EKra.1400x1400.jpg", - "title": "Already Gone", - "country": "United States", - "website": "https://alreadygonepodcast.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 99, - 122, - 67, - 135 - ], - "itunes_id": 1335405710, - "publisher": "Nina Innsted", - "thumbnail": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-B9RX5TE2moM-MoexDp6EKra.300x300.jpg", - "is_claimed": false, - "description": "Great Lakes. True Crime. Host Nina Innsted covers lesser known crimes, digging beneath the media and back page to tell their stories and find the truth. #Michigan #Ohio #Pennsylvania #NewYork #Wisconsin #Illinois #TrueCrime\u00a0\n\nFind me on Twitter: @Alreadygonepod (https://twitter.com/alreadygonepod) and Instagram https://www.instagram.com/ninainnsted/", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 263, - "listennotes_url": "https://www.listennotes.com/c/1c956b42302a488bbac0595e1922ea86/", - "audio_length_sec": 1963, - "explicit_content": false, - "latest_episode_id": "4ff053277f604a71ab3474279da9c714", - "latest_pub_date_ms": 1693555440000, - "earliest_pub_date_ms": 1463950769204, - "update_frequency_hours": 261, - "listen_score_global_rank": null - }, - { - "id": "8579c3f5d11f479d939396b1f36f30a4", - "rss": "https://anchor.fm/s/55f4e200/podcast/rss", - "type": "episodic", - "email": "formosafiles@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy81NWY0ZTIwMC9wb2RjYXN0L3Jzcw==", - "spotify_url": "https://open.spotify.com/show/23NZCM4ik6o3UYkM473Itz", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/formosa-files-lh-INvDesSm-EV8ID9SeJ1d.1400x1400.jpg", - "title": " Formosa Files:\nThe History of Taiwan ", - "country": "United States", - "website": "https://www.formosafiles.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 125 - ], - "itunes_id": 1588477096, - "publisher": "John Ross and Eryk Michael Smith", - "thumbnail": "https://production.listennotes.com/podcasts/formosa-files-qMZyeXN3uxL-EV8ID9SeJ1d.300x300.jpg", - "is_claimed": false, - "description": "The history of Taiwan (1600 C.E. - 2000) told through interesting stories in a non-chronological order. John Ross is an author and publisher of works on Taiwan and China, while Eryk Michael Smith has worked as a writer and journalist for several media outlets in Taiwan. Both hosts have lived in Taiwan for well over 20 years and call the island home. Email: formosafiles@gmail.com ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 35, - "total_episodes": 115, - "listennotes_url": "https://www.listennotes.com/c/8579c3f5d11f479d939396b1f36f30a4/", - "audio_length_sec": 1532, - "explicit_content": false, - "latest_episode_id": "740a4e0080244a4db6fc0b923d0d99a9", - "latest_pub_date_ms": 1694060709000, - "earliest_pub_date_ms": 1630893086110, - "update_frequency_hours": 134, - "listen_score_global_rank": "3%" - } - ], - "latest_episodes": [ - { - "id": "9447ce07dd2345618054b04b733e4ad5", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/9447ce07dd2345618054b04b733e4ad5/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Google\u2019s $399 smartphone, Crocs\u2019 comeback, and GM\u2019s robotaxi Cruise snags $1B", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Google\u2019s I/O event day enjoyed protests, AI tech to screen fake\u00a0calls, and a $399 Pixel phone. General Motors acquired self-driving car startup Cruise when it was worth $1B \u2014 Now it\u2019s worth $19B, and wants robotaxis on streets this year. And Crocs shares have nearly doubled in the past year, so we look at why.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1557309361002, - "guid_from_rss": "cc706928-7143-11e9-94ec-bf6cee57c71d", - "listennotes_url": "https://www.listennotes.com/e/9447ce07dd2345618054b04b733e4ad5/", - "audio_length_sec": 916, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/9447ce07dd2345618054b04b733e4ad5/#edit" - }, - { - "id": "68d378e5b029431dbaca6acf7ce396f2", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/68d378e5b029431dbaca6acf7ce396f2/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Big Trade War update, Apple\u2019s bought 20+ companies in 6 months, and the largest VC investment in Latin America ever", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "The Trade War was supposed to end this week with a peace\u00a0deal. That\u2019s not looking likely, and we\u2019ll tell you why. Apple\u2019s CEO casually dropped that the company\u2019s bought over 20 startups over the last six months. And super delivery app Rappi just raised $1B from Softbank, making it the biggest Latin American venture\u00a0investment ever.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1557222961003, - "guid_from_rss": "e46adbce-705f-11e9-baa5-1779edf441e3", - "listennotes_url": "https://www.listennotes.com/e/68d378e5b029431dbaca6acf7ce396f2/", - "audio_length_sec": 1039, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/68d378e5b029431dbaca6acf7ce396f2/#edit" - }, - { - "id": "402e67e65e2a4575ab2704a977a2b4b5", - "link": "https://cms.megaphone.fm/channel/business-unusual-with-barbara-corcoran?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/402e67e65e2a4575ab2704a977a2b4b5/", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "53: Something About Mary", - "podcast": { - "id": "68faf62be97149c280ebcc25178aa731", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "Business Unusual with Barbara Corcoran", - "publisher": "Barbara Corcoran", - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/68faf62be97149c280ebcc25178aa731/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "description": "

CNBC Producer Mary Hanan has the TV business dream job. I met Mary when she interviewed me for CNBC's \"The Brave Ones\" and I knew immediately I had to have her on the show. So I turned the tables on Mary and put her in the hot seat to learn how she worked her way up to the top, and she shared many of the interesting situations she found herself in along the way.Got a question for me? Call me at 888-BARBARA to ask a question for a future episode. Follow Business Unusual with Barbara Corcoran on iHeartRadio, or subscribe wherever you listen to podcasts. \u00a0This episode of Business Unusual with Barbara Corcoran is presented by OnDeck Business Loans (http://www.ondeck.com/Barbara)

", - "pub_date_ms": 1557201660146, - "guid_from_rss": "b3ac56b2-2342-11e9-8178-17dec3a673e9", - "listennotes_url": "https://www.listennotes.com/e/402e67e65e2a4575ab2704a977a2b4b5/", - "audio_length_sec": 2188, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/402e67e65e2a4575ab2704a977a2b4b5/#edit" - }, - { - "id": "d6ff153d632f428195dfd54f002b0990", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/d6ff153d632f428195dfd54f002b0990/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Warren Buffett\u2019s epic annual event, Planet Fitness\u2019 innovative real estate strategy, and almond milk vs. Dean Foods dairy", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "The annual Berkshire Hathaway shareholder meeting showcased\u00a088-year-old legendary investor Warren Buffett, so we broke down his 6 hours of one-liner business takeaways. Planet Fitness shares are up 75% in the last year, so we\u2019re focused on its innovative real estate strategy that feeds off the retail-pocalypse. And Dean Foods is America\u2019s biggest dairy company, but the stock is down 62% in 2019 because of alt-milk.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1557136561004, - "guid_from_rss": "de6a8f92-6f94-11e9-a2be-2bb85bb3ed24", - "listennotes_url": "https://www.listennotes.com/e/d6ff153d632f428195dfd54f002b0990/", - "audio_length_sec": 986, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/d6ff153d632f428195dfd54f002b0990/#edit" - }, - { - "id": "5ad170a60e76467e9d6b2453bd44fda6", - "link": "https://www.listenmoneymatters.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/5ad170a60e76467e9d6b2453bd44fda6/", - "image": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-lPXW7V_6n0C-SJEHNr84kVg.1400x1400.jpg", - "title": "All Things Gold", - "podcast": { - "id": "3302bc71139541baa46ecb27dbf6071a", - "image": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-lPXW7V_6n0C-SJEHNr84kVg.1400x1400.jpg", - "title": "Listen Money Matters - Free your inner financial badass. All the stuff you should know about personal finance.", - "publisher": "ListenMoneyMatters.com | Andrew Fiebert and Matt Giovanisci", - "thumbnail": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-d5If074qkhz-SJEHNr84kVg.300x300.jpg", - "listen_score": 63, - "listennotes_url": "https://www.listennotes.com/c/3302bc71139541baa46ecb27dbf6071a/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/listen-money-matters-free-your-inner-d5If074qkhz-SJEHNr84kVg.300x300.jpg", - "description": "

Some people who are hesitant to invest in the stock market are willing to invest in gold. Why? Gold is tangible, you can see it, hold it, and keep it right in your own house (or bunker). You can buy it from some guy in a late night infomercial. You can buy it with images of the fallen Twin Towers on it. Or an American eagle.

You can\u2019t say any of that about investing in the stock market! When you own stock, you don\u2019t own a tangible thing. You have to deal with some slick stockbroker if you want to buy and sell it (you don\u2019t). And stocks don\u2019t come in a limited edition collector\u2019s box.

LMM hasn\u2019t discussed gold very much in the past and like a lot of you, thought it was something only Doomsday preppers were interested in so not really relevant to us or our audience. But while doing research for the Golden Butterfly episode, we learned some legitimate reasons for investing in gold and none of them are related to the zombie apocalypse that is surely coming.

Many of our listeners wanted to know more about it too, why and how to invest in gold. We got a lot of emails asking questions. You asked and we answered. This is all things gold.

Full Article Here

Show Notes

Northwestern University CFP Program - Prepare for a career as a financial planner\u00a0

Learn more about your ad choices. Visit megaphone.fm/adchoices

", - "pub_date_ms": 1557115200044, - "guid_from_rss": "ca27ef12-d240-11e8-8c50-ab85da8ff643", - "listennotes_url": "https://www.listennotes.com/e/5ad170a60e76467e9d6b2453bd44fda6/", - "audio_length_sec": 2677, - "explicit_content": true, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/5ad170a60e76467e9d6b2453bd44fda6/#edit" - }, - { - "id": "e2e15dc3f99745818872e71f7c828f89", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/e2e15dc3f99745818872e71f7c828f89/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Taser CEO gets $246M in stock comp, Beyond Meat surges 163%, and Wayfair drops 7% because you\u2019re expensive", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Axon Enterprises is the company behind the taser, and it just awarded its CEO $246M in compensation \u2014 So we look in to how it\u2019s set up to incentivize him. Beyond Meat surged 163% on its IPO day. And Wayfair is the biggest online furniture platform whose stock fell 7%, but it\u2019s got a fascinating relationship with 80 \u201chouse brands.\u201d\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1556877361005, - "guid_from_rss": "fee4b324-6d3c-11e9-a4bf-c3f62ea29894", - "listennotes_url": "https://www.listennotes.com/e/e2e15dc3f99745818872e71f7c828f89/", - "audio_length_sec": 893, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/e2e15dc3f99745818872e71f7c828f89/#edit" - }, - { - "id": "2bc29c5d8ceb405c942bc13049784703", - "link": "https://www.parcast.com/espionage?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/2bc29c5d8ceb405c942bc13049784703/", - "image": "https://production.listennotes.com/podcasts/espionage-parcast-network-X9AT-uYo8Nq-ReK0QUN-VP_.1400x1400.jpg", - "title": "Henri D\u00e9ricourt Pt. 2: Triple Agent", - "podcast": { - "id": "bacb2f7ca7a04ed0b21efd21192f5014", - "image": "https://production.listennotes.com/podcasts/espionage-parcast-network-X9AT-uYo8Nq-ReK0QUN-VP_.1400x1400.jpg", - "title": "Espionage", - "publisher": "Parcast Network", - "thumbnail": "https://production.listennotes.com/podcasts/espionage-parcast-network-j-WLEmNQ4PB-ReK0QUN-VP_.300x300.jpg", - "listen_score": 62, - "listennotes_url": "https://www.listennotes.com/c/bacb2f7ca7a04ed0b21efd21192f5014/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/espionage-parcast-network-j-WLEmNQ4PB-ReK0QUN-VP_.300x300.jpg", - "description": "Paris, 1943. World War II was in full swing, and triple-agent Henri D\u00e9ricourt was right in the middle of it. His mission: secure an Allied victory before his carefully-spun web of lies comes unraveled.

Parcasters - When it comes to transporting drugs, you can't do much better than a jetliner flying across international boundaries. Amado Carrillo Fuentes figured that out, earning his title as \"Lord of the Skies\" - learn his story on this week's episode of Kingpins at parcast.com/kingpins
", - "pub_date_ms": 1556866860019, - "guid_from_rss": "d8310352-3a17-11e9-acdb-535fa62c91fa", - "listennotes_url": "https://www.listennotes.com/e/2bc29c5d8ceb405c942bc13049784703/", - "audio_length_sec": 3218, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/2bc29c5d8ceb405c942bc13049784703/#edit" - }, - { - "id": "f0f2cc1d772c4ae4aef5bd1d1c8fb834", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/f0f2cc1d772c4ae4aef5bd1d1c8fb834/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Molson Coors falls 8% on mid-beer crisis, Royal Caribbean becomes pricing power superhero, and Fitbit is our \u201cSurvivor of the Day\u201d", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "With beer sales slowing, Molson Coors is desperately\u00a0focused on innovation (aka non-alcohol drinks), but shares fell because of its beer battles. Fitbit used to be profitable, now it\u2019s using partnerships to survive. And Royal Caribbean jumped 7% as it realizes it can charge a lot more for cruises.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1556790961006, - "guid_from_rss": "ae282d24-6c71-11e9-a7ab-eff35f170a02", - "listennotes_url": "https://www.listennotes.com/e/f0f2cc1d772c4ae4aef5bd1d1c8fb834/", - "audio_length_sec": 1000, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/f0f2cc1d772c4ae4aef5bd1d1c8fb834/#edit" - }, - { - "id": "79811cc9a5704e32881699b0b93356ab", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/79811cc9a5704e32881699b0b93356ab/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Facebook\u2019s new \u201cFB5\u201d redesign (and dating feature), Apple\u2019s past-dependent business model, and Merck\u2019s profits quadruple", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Apple\u2019s earnings report was critical for what it didn\u2019t say, just as much as what it did \u2014 And it reveals that Apple\u2019s transformation. Facebook\u2019s F8 event revealed new features (dating and crushes), but the big focus was its app redesign. And Merck\u2019s profits quadrupled because a measles vaccine and a new cancer drug have become its profit puppies.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1556704561007, - "guid_from_rss": "ad35b722-6bb0-11e9-8988-bfa74a4a2234", - "listennotes_url": "https://www.listennotes.com/e/79811cc9a5704e32881699b0b93356ab/", - "audio_length_sec": 888, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/79811cc9a5704e32881699b0b93356ab/#edit" - }, - { - "id": "82290b02fa4e48d7bda7d9a4ee0b47bc", - "link": "https://omny.fm/shows/already-gone/the-mothers-day-murders?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/82290b02fa4e48d7bda7d9a4ee0b47bc/", - "image": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-M_4QcFrhTuI-MoexDp6EKra.1400x1400.jpg", - "title": "The Mother's Day Murders", - "podcast": { - "id": "1c956b42302a488bbac0595e1922ea86", - "image": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-M_4QcFrhTuI-MoexDp6EKra.1400x1400.jpg", - "title": "Already Gone", - "publisher": "Nina Innsted", - "thumbnail": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-B9RX5TE2moM-MoexDp6EKra.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/1c956b42302a488bbac0595e1922ea86/", - "listen_score_global_rank": null - }, - "thumbnail": "https://production.listennotes.com/podcasts/already-gone-nina-innsted-B9RX5TE2moM-MoexDp6EKra.300x300.jpg", - "description": "

Mother's Day 1982, high school students David Cole and Timothy Fowler die in a fiery blaze at the Cole home in Deerfield Michigan. This episode features an interview with the sister of Tim Fowler.\u00a0 https://www.facebook.com/timfowlerdavidcole/

If you have information on this unsolved case, please contact the Lenawee County Sheriff's Department at 517-266-6161 or, submit an anonymous tip via CrimeStoppers, Online at:\u00a0www.tipsubmit.com or via text \u00a0274637 Start Tip \"LENAWEE\"

\n

Additional Music provided by RFM: https://youtu.be/dPEoasBHNiA

Support the show: https://www.patreon.com/AlreadyGone

See omnystudio.com/listener for privacy information.

", - "pub_date_ms": 1556683500113, - "guid_from_rss": "7081a388-0ebe-4d75-98c0-aa3e01475606", - "listennotes_url": "https://www.listennotes.com/e/82290b02fa4e48d7bda7d9a4ee0b47bc/", - "audio_length_sec": 2001, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/82290b02fa4e48d7bda7d9a4ee0b47bc/#edit" - }, - { - "id": "6f4b561b98c4489f94673bd709fa0c85", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/6f4b561b98c4489f94673bd709fa0c85/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Spotify hits 217M profitless users, Airbnb & Marriott\u2019s twin announcements, and Chewy.com\u2019s \u201cpet humanization\u201d IPO", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Spotify now boasts 100M paying subscribers, so we looked\u00a0into why it\u2019s still losing so much money (hint: It\u2019s betting on podcasts). Airbnb and Marriott both revealed new services that look a lot like each other (awkward). And PetSmart\u2019s digital brand Chewy.com will IPO thanks to \u201cpet humanization\u201d trends.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1556618161008, - "guid_from_rss": "6499bd3a-6aeb-11e9-a4ca-1b74330fa7a7", - "listennotes_url": "https://www.listennotes.com/e/6f4b561b98c4489f94673bd709fa0c85/", - "audio_length_sec": 1025, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/6f4b561b98c4489f94673bd709fa0c85/#edit" - }, - { - "id": "94bc56fb18cf4ef28a4e6cef6db1000d", - "link": "https://cms.megaphone.fm/channel/business-unusual-with-barbara-corcoran?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/94bc56fb18cf4ef28a4e6cef6db1000d/", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "52: What I Learned From Bad Bosses", - "podcast": { - "id": "68faf62be97149c280ebcc25178aa731", - "image": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-YDiw-IQe4S8-aZPn3Ic47rx.1400x1400.jpg", - "title": "Business Unusual with Barbara Corcoran", - "publisher": "Barbara Corcoran", - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/68faf62be97149c280ebcc25178aa731/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/business-unusual-with-barbara-corcoran-_A9638PicW1-aZPn3Ic47rx.300x300.jpg", - "description": "

I had 23 bosses before starting my business and I know that a bad one is sure to kill your confidence. So what do you do when you don't see eye to eye? I answer your questions about dealing with a bad boss and becoming a better leader. \u00a0Want to hear your question on Business Unusual? Call me at 888-BARBARA or tweet at @barbaracorcoran to ask a question for a future episode. Follow Business Unusual with Barbara Corcoran on iHeartRadio, or subscribe wherever you listen to podcasts. \u00a0This episode of Business Unusual with Barbara Corcoran is presented by OnDeck Business Loans (http://www.ondeck.com/Barbara)\u00a0

", - "pub_date_ms": 1556596860147, - "guid_from_rss": "b3a725ac-2342-11e9-8178-7fb1e262e428", - "listennotes_url": "https://www.listennotes.com/e/94bc56fb18cf4ef28a4e6cef6db1000d/", - "audio_length_sec": 972, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/94bc56fb18cf4ef28a4e6cef6db1000d/#edit" - }, - { - "id": "8823f69978ac40899d4e7264206db89f", - "link": "https://philosophizethis.libsyn.com/episode-130-dewey-and-lippman-on-democracy?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/8823f69978ac40899d4e7264206db89f/", - "image": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-Y2PvRelyrIN-ivQCfmkqM_h.1400x1400.jpg", - "title": "Episode #130 ... Dewey and Lippman on Democracy", - "podcast": { - "id": "3a2a6ddd549f4df0b876e7315fa1a319", - "image": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-Y2PvRelyrIN-ivQCfmkqM_h.1400x1400.jpg", - "title": "Philosophize This!", - "publisher": "Stephen West", - "thumbnail": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-oSuiCW7Bz8T-ivQCfmkqM_h.300x300.jpg", - "listen_score": 77, - "listennotes_url": "https://www.listennotes.com/c/3a2a6ddd549f4df0b876e7315fa1a319/", - "listen_score_global_rank": "0.01%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/philosophize-this-stephen-west-oSuiCW7Bz8T-ivQCfmkqM_h.300x300.jpg", - "description": "

Today we talk about a famous debate from the early 20th century.\u00a0

", - "pub_date_ms": 1556594432058, - "guid_from_rss": "09cea1e8a32c49b383f85fff0f172a2e", - "listennotes_url": "https://www.listennotes.com/e/8823f69978ac40899d4e7264206db89f/", - "audio_length_sec": 1298, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/8823f69978ac40899d4e7264206db89f/#edit" - }, - { - "id": "d8ad1f1994654319a041e23d76d6b599", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/d8ad1f1994654319a041e23d76d6b599/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "Beyond Meat boots its meat-focused investor, Comcast (shockingly) hits record high, and one startup\u2019s worst 1st week", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Plant-based meat innovator Beyond Meat had an awkward investor: The world\u2019s 2nd biggest meat producer, Tyson Foods -- So Beyond Meat kicked it out before its upcoming IPO. Old school cable throwback Comcast is winning even though you cut the cord. And Luminary was supposed to be the future of podcasting, but its 1st week went really badly.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1556531761009, - "guid_from_rss": "76ae24a6-6a24-11e9-a711-dbdc65a73778", - "listennotes_url": "https://www.listennotes.com/e/d8ad1f1994654319a041e23d76d6b599/", - "audio_length_sec": 803, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/d8ad1f1994654319a041e23d76d6b599/#edit" - }, - { - "id": "117e3b5027f14fb9842591aaa4b794eb", - "link": "https://www.npr.org/2019/04/25/717075560/special-announcement-from-life-kit?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/117e3b5027f14fb9842591aaa4b794eb/", - "image": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-WuHnh0Poiyb-IDT1XPkq4rb.1400x1400.jpg", - "title": "Special Announcement From Life Kit", - "podcast": { - "id": "613aa80ec729409ea0db4265cf3e3899", - "image": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-WuHnh0Poiyb-IDT1XPkq4rb.1400x1400.jpg", - "title": "Find Money You Didn't Know You Had", - "publisher": "NPR", - "thumbnail": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-Dl7VZ86KyNA-IDT1XPkq4rb.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/613aa80ec729409ea0db4265cf3e3899/", - "listen_score_global_rank": null - }, - "thumbnail": "https://production.listennotes.com/podcasts/find-money-you-didnt-know-you-had-npr-Dl7VZ86KyNA-IDT1XPkq4rb.300x300.jpg", - "description": "Based on your feedback, we've created new ways to listen to Life Kit. If you never want to miss an episode, subscribe to Life Kit: All Guides. We also divided our guides by subject \u2014 health, money and parenting - and more to come in the future \u2014 so you can subscribe to only the topics you want to learn about.", - "pub_date_ms": 1556519451000, - "guid_from_rss": "f0925b4c-fc2f-494d-acf1-0c2fb96627ff", - "listennotes_url": "https://www.listennotes.com/e/117e3b5027f14fb9842591aaa4b794eb/", - "audio_length_sec": 53, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/117e3b5027f14fb9842591aaa4b794eb/#edit" - } - ], - "next_episode_pub_date": 1556519451000 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "podcasts" - ], - "properties": { - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - } - }, - "latest_episodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } - }, - "description": "Up to 10 latest episodes from these podcasts, sorted by **pub_date**. This field shows up only when **show_latest_episodes** is 1.\n" - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#post-api-v2-podcasts) +### fetchCuratedPodcastsListById +Fetch a curated list of podcasts by id -### Fetch a random podcast episode +`GET /curated_podcasts/{id}` -Function Name: **justListen** - -Recently published episodes are more likely to be fetched. Good luck! +Get detailed meta data of all podcasts in a specific curated list. +This endpoint returns same data as https://www.listennotes.com/curated-podcasts/ -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.justListen().then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchCuratedPodcastsListById({ + "id": "SDFKduyJ47r" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-just_listen). - - -
- Click to see example response - -```json -{ - "id": "35fa22a2bba54b7f866c9844f98fc7be", - "link": "https://giftsofthewyrd.podbean.com/e/irisanya-moon/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/35fa22a2bba54b7f866c9844f98fc7be/", - "image": "https://production.listennotes.com/podcasts/gifts-of-the-wyrd-j-hijatt-Nj2sVmbe-4u-C3oUOXQLNT1.384x292.jpg", - "title": "69 Gifts of the Wyrd: Irisanya Moon - The Norns", - "podcast": { - "id": "e2f5859d8344467289ea2b917f08dd66", - "image": "https://production.listennotes.com/podcasts/gifts-of-the-wyrd-j-hijatt-Nj2sVmbe-4u-C3oUOXQLNT1.384x292.jpg", - "title": "Gifts of the Wyrd", - "publisher": "J Hijatt", - "thumbnail": "https://production.listennotes.com/podcasts/gifts-of-the-wyrd-j-hijatt-zTy0Ru5rGDf-C3oUOXQLNT1.300x228.jpg", - "listen_score": 34, - "listennotes_url": "https://www.listennotes.com/c/e2f5859d8344467289ea2b917f08dd66/", - "listen_score_global_rank": "5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/gifts-of-the-wyrd-j-hijatt-zTy0Ru5rGDf-C3oUOXQLNT1.300x228.jpg", - "description": "

Irisanya Moon joins me this episode to talk about her latest book in the Pagan Portals series from Moon Books - The Norns: Weavers of Fate and Magick.\u00a0

\n

We talk about the most well known of the Norns - Urd, Verdandi, and Skuld, and talk about how we can work with them to connect with the threads of our web of Wyrd.\u00a0

\n

There isn't much material out about working with the Norns, and this book is a great starting point for a beginner and also a great resource for those who are familiar with the Norns to help invigorate or take a fresh approach to working with them.\u00a0

\n

Get the book through your books store, from Moon Books (Collective Ink) , or from your preferred online seller.\u00a0

\n

Follow Irisanya at Instagram: @irisanya.moon or Facebook: @irisanyamoon

\n

# # #

\n

Follow my channel on Instagram: @wyrdgifts1

\n

Facebook: @GiftsoftheWyrd Email: giftsofthwyrd@gmail.com\u00a0

\n

Please leave feedback on Apple and other podcast providers. This helps the podcast to be found easier.

\n

Music.\u00a0\u00a0Intro:\u00a0Silly Bank Heist. Royalty free music from https://www.fesliyanstudios.com\u00a0\u00a0Please do not add this audio content to the YouTube Content ID System. I have used background music which is owned by FesliyanStudios.

\n

Outgoing: Voluspa 57-59 (\"the Norns\") by Tonya Threet

\n

Logo Created by Xan Folmer.\u00a0

\n

Logo based on the Vanic boar created by Vanatru Priestess Ember of the Vanic Conspiracy.

\n

Studio recordings by Zencastr and Audacity.

", - "pub_date_ms": 1694076676000, - "guid_from_rss": "GiftsoftheWyrd.podbean.com/8a05934d-65fe-3437-8773-97645fcf104e", - "listennotes_url": "https://www.listennotes.com/e/35fa22a2bba54b7f866c9844f98fc7be/", - "audio_length_sec": 2988, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/35fa22a2bba54b7f866c9844f98fc7be/#edit" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } -} -``` -
- - +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-curated_podcasts-id) +### fetchPodcastGenres -### Fetch a curated list of podcasts by id +Fetch a list of podcast genres -Function Name: **fetchCuratedPodcastsListById** - -Get detailed meta data of all podcasts in a specific curated list. -This endpoint returns same data as https://www.listennotes.com/curated-podcasts/ +`GET /genres` +Get a list of podcast genres that are supported in Listen Notes. +The genre id can be passed to other endpoints as a parameter to get podcasts in a specific genre, +e.g., `GET /best_podcasts`, `GET /search`... +You may want to cache the list of genres on the client side. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +client.fetchPodcastGenres({ + "top_level_only": 1 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -client.fetchCuratedPodcastsListById({ id: 'SDFKduyJ47r' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-genres) -``` +### fetchPodcastRegions -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-curated_podcasts-id). - - -
- Click to see example response - -```json -{ - "id": "SDFKduyJ47r", - "title": "16 Brilliant Indian Podcasts That'll Make You A Funner, Smarter, Better Informed Person", - "total": 16, - "podcasts": [ - { - "id": "c463d5980b8e480fb78db6b3ed6be115", - "rss": "https://www.omnycontent.com/d/playlist/5d315e00-1c8d-435b-9a31-af0f01302c17/ffc313b5-b60e-492b-9db0-af1a0027aaf9/21999f5d-eb98-4f19-82f9-af1a0027ab0c/podcast.rss", - "type": "episodic", - "email": "maedinindia@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvNWQzMTVlMDAtMWM4ZC00MzViLTlhMzEtYWYwZjAxMzAyYzE3L2ZmYzMxM2I1LWI2MGUtNDkyYi05ZGIwLWFmMWEwMDI3YWFmOS8yMTk5OWY1ZC1lYjk4LTRmMTktODJmOS1hZjFhMDAyN2FiMGMvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/0QhzjA2zKdKgIQsd2ltHtp?si=1G6nu1YnRKiM9XPgjs3fyw", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "maedinindia", - "facebook_handle": "maedinindia", - "amazon_music_url": "", - "instagram_handle": "maedinindia" - }, - "image": "https://production.listennotes.com/podcasts/maed-in-india-maed-in-india-cC8sOFyVQzE-y2oQTwMN73p.1400x1400.jpg", - "title": "Maed in India", - "country": "United States", - "website": "https://www.maedinindia.in/maed-in-india?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 100, - 101, - 134 - ], - "itunes_id": 1009197596, - "publisher": "Maed in India", - "thumbnail": "https://production.listennotes.com/podcasts/maed-in-india-maed-in-india-8mQ5zrupi0T-y2oQTwMN73p.300x300.jpg", - "is_claimed": true, - "description": "Maed in India - India's first indie music podcast that showcases the best Indian independent musicians from India and abroad. Each episode presents an interview with an artist/band along with an exclusive stripped down session or acoustic renditions of their original music. The weekly show prides itself on being the destination for new music, little known stories, and unreleased music never heard before.\n\nIt features all kinds of artists from new-comers to veterans and under a variety of genres from hip hop, blues, soul, to folk, punk, rock, and everything in between.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 43, - "total_episodes": 334, - "listennotes_url": "https://www.listennotes.com/c/c463d5980b8e480fb78db6b3ed6be115/", - "audio_length_sec": 3019, - "explicit_content": false, - "latest_episode_id": "c4aeee6ef2174766869ed384479f97a5", - "latest_pub_date_ms": 1693773000000, - "earliest_pub_date_ms": 1434346200322, - "update_frequency_hours": 218, - "listen_score_global_rank": "1%" - }, - { - "id": "f8752dd03e3a4f8d838fc07cab953c0b", - "rss": "http://feeds.feedburner.com/theintersectionIN", - "type": "episodic", - "email": "theintersection@audiomatic.in", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-intersection-the-intersection-is1CILODdqm-LTmzMb05tFB.150x150.jpg", - "title": "The Intersection", - "country": "United States", - "website": "http://soundcloud.com/user-495845543?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 122, - 125 - ], - "itunes_id": 981456156, - "publisher": "The Intersection", - "thumbnail": "https://production.listennotes.com/podcasts/the-intersection-the-intersection-is1CILODdqm-LTmzMb05tFB.150x150.jpg", - "is_claimed": false, - "description": "Podcast by The Intersection", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 59, - "listennotes_url": "https://www.listennotes.com/c/f8752dd03e3a4f8d838fc07cab953c0b/", - "audio_length_sec": 938, - "explicit_content": false, - "latest_episode_id": "a9e4b2872a3746c8a8df50f5fc53f9fa", - "latest_pub_date_ms": 1545121747000, - "earliest_pub_date_ms": 1427975825000, - "update_frequency_hours": 751, - "listen_score_global_rank": null - }, - { - "id": "10a1ff15904548978355ff69166b2578", - "rss": "https://www.arre.co.in/apple-podcast-rss/", - "type": "serial", - "email": "trialbyerror@arre.co.in", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cuYXJyZS5jby5pbi9hcHBsZS1wb2RjYXN0LXJzcy8=", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/trial-by-error-the-aarushi-files-arre-HW5-PMrpJ6g--hleb0zIEPC.1400x1400.jpg", - "title": "Trial by Error | The Aarushi Files", - "country": "United States", - "website": "https://www.arre.co.in/series/aarushi?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 122 - ], - "itunes_id": 1437504601, - "publisher": "Arre", - "thumbnail": "https://production.listennotes.com/podcasts/trial-by-error-the-aarushi-files-arre-PdHUYLlQq1T--hleb0zIEPC.300x300.jpg", - "is_claimed": false, - "description": "Trial by Error, An Arr\u00e9-Saavn Original, produced by Jamun, is adapted from Avirook Sen\u2019s haunting book Aarushi, is an eight-part investigative audio series that narrates the story of the Noida double murder, and the controversial trial that convicted the Talwars. Follow investigative journalist Nishita Jha as she turns a lens on the murky details of the case to see whether justice truly has been served. \n\n", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 39, - "total_episodes": 16, - "listennotes_url": "https://www.listennotes.com/c/10a1ff15904548978355ff69166b2578/", - "audio_length_sec": 1276, - "explicit_content": false, - "latest_episode_id": "7d084c19d0184e30ade557a74af585fa", - "latest_pub_date_ms": 1468183671000, - "earliest_pub_date_ms": 1462135535000, - "update_frequency_hours": 100, - "listen_score_global_rank": "2%" - }, - { - "id": "00c5d061be3d42bb954b7a05dc044166", - "rss": "https://feeds.soundcloud.com/users/soundcloud:users:152973991/sounds.rss", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zb3VuZGNsb3VkLmNvbS91c2Vycy9zb3VuZGNsb3VkOnVzZXJzOjE1Mjk3Mzk5MS9zb3VuZHMucnNz", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "cheapadventures", - "facebook_handle": "theadventuresofcheapbeer", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/adventures-of-cheap-beer-adventures-of-_JAB4btwguP-vkZfSh-TJCt.1400x1400.jpg", - "title": "Adventures of Cheap Beer", - "country": "India", - "website": "http://www.adventuresofcheapbeer.in?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 100, - 102, - 122, - 133 - ], - "itunes_id": 1035169168, - "publisher": "Adventures of Cheap Beer", - "thumbnail": "https://production.listennotes.com/podcasts/adventures-of-cheap-beer-adventures-of-tszxiBTflqc-vkZfSh-TJCt.300x300.jpg", - "is_claimed": false, - "description": "Welcome to a podcast where Siddhant Mehta, Karan Agarwal and Suyash Barve head out into the city of Mumbai and review some awesome cheap bars | Hosts: Siddhant Mehta, Karan Agarwal and Suyash Barve | Opening Theme: Fog + Strobe by Blek | Music: Aman Agarwal | Produced by Hit, Kitanu & Sandwich", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 5, - "listennotes_url": "https://www.listennotes.com/c/00c5d061be3d42bb954b7a05dc044166/", - "audio_length_sec": 1979, - "explicit_content": true, - "latest_episode_id": "2ff91dbbf6e544468501e1af5c4b8e66", - "latest_pub_date_ms": 1515393130000, - "earliest_pub_date_ms": 1504590119004, - "update_frequency_hours": 638, - "listen_score_global_rank": null - }, - { - "id": "ff180c271be249e9b94a8bc3d80bb094", - "rss": "https://www.omnycontent.com/d/playlist/e0dce4b3-2eb8-48cb-822c-af1d00e03e20/5ed87087-3717-42b7-97e0-af4700e1cd68/cc529bce-5357-420f-9495-af4700e1cd84/podcast.rss", - "type": "episodic", - "email": "ivmshows@pratilipi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvZTBkY2U0YjMtMmViOC00OGNiLTgyMmMtYWYxZDAwZTAzZTIwLzVlZDg3MDg3LTM3MTctNDJiNy05N2UwLWFmNDcwMGUxY2Q2OC9jYzUyOWJjZS01MzU3LTQyMGYtOTQ5NS1hZjQ3MDBlMWNkODQvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/7tvnxtkeAYAtys53aqYAVs", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/watcha-ivm-podcasts-WxQHviSVUhn-HEvn-LS7uyo.1400x1400.jpg", - "title": "Watcha!", - "country": "United States", - "website": "http://ivmpodcasts.com/watcha?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 68, - 100, - 101, - 103 - ], - "itunes_id": 1076223958, - "publisher": "IVM Podcasts", - "thumbnail": "https://production.listennotes.com/podcasts/watcha-ivm-podcasts-zO4KIJ-Ei85-HEvn-LS7uyo.300x300.jpg", - "is_claimed": true, - "description": "

Film critic and writer Aniruddha Guha talks about the films and TV shows currently on his playlist, and recommends the best of them. Feature films, documentaries, television shows, web series, YouTube videos; come, Watcha! with @AniGuha.

", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 10, - "listennotes_url": "https://www.listennotes.com/c/ff180c271be249e9b94a8bc3d80bb094/", - "audio_length_sec": 2374, - "explicit_content": false, - "latest_episode_id": "71ef8a25d040413bb6ea4bd5cb7e57a7", - "latest_pub_date_ms": 1459143000000, - "earliest_pub_date_ms": 1453095676009, - "update_frequency_hours": 167, - "listen_score_global_rank": null - }, - { - "id": "c40188a1a51249a3bafb11793a011359", - "rss": "https://feeds.soundcloud.com/users/soundcloud:users:90732272/sounds.rss", - "type": "episodic", - "email": "synthesistalk@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zb3VuZGNsb3VkLmNvbS91c2Vycy9zb3VuZGNsb3VkOnVzZXJzOjkwNzMyMjcyL3NvdW5kcy5yc3M=", - "spotify_url": "https://open.spotify.com/show/3X8PKcM3Z5PTkWaw1H6Pua", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/syntalk-syntalk-O_8qKgy0eWd-j2nFBUVDzq_.1006x1006.jpg", - "title": "SynTalk", - "country": "United States", - "website": "https://appsto.re/in/sb7rlb.i?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 122, - 126 - ], - "itunes_id": 898573870, - "publisher": "SynTalk", - "thumbnail": "https://production.listennotes.com/podcasts/syntalk-syntalk-AscbMPzh92d-j2nFBUVDzq_.300x300.jpg", - "is_claimed": false, - "description": "f(q) = What gets demolished? (#TPLB)\n\nSynTalk is a freewheeling interdisciplinary talk show with a philosophical approach to understanding the world from a long term perspective.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 31, - "total_episodes": 183, - "listennotes_url": "https://www.listennotes.com/c/c40188a1a51249a3bafb11793a011359/", - "audio_length_sec": 4095, - "explicit_content": false, - "latest_episode_id": "e364134266ec484282c9bee360aa06f8", - "latest_pub_date_ms": 1693271235000, - "earliest_pub_date_ms": 1405191856180, - "update_frequency_hours": 1540, - "listen_score_global_rank": "5%" - }, - { - "id": "24ece1d0922d4d9a9659e9e6cb2b241e", - "rss": "https://feeds.simplecast.com/6dj1W8C2", - "type": "episodic", - "email": "hello@neilpatel.co", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS82ZGoxVzhDMg==", - "spotify_url": "https://open.spotify.com/show/0bZESriuxQ3XUVVN9EpsMw", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "Indianstartupsh", - "facebook_handle": "indianstartupshow", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-indian-startup-show-neil-patel-QWdjyCBTwPr-9574y1CKU8j.1400x1400.jpg", - "title": "The Indian Startup Show", - "country": "United States", - "website": "http://www.indianstartupshow.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 93, - 95, - 127, - 129, - 131 - ], - "itunes_id": 1031590716, - "publisher": "Neil Patel", - "thumbnail": "https://production.listennotes.com/podcasts/the-indian-startup-show-neil-patel-etrHT24KoXq-9574y1CKU8j.300x300.jpg", - "is_claimed": false, - "description": "A Weekly Podcast Show About Indian Startups\nEntrepreneurs & More !\nHosted by Neil Patel & Friends", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 40, - "total_episodes": 197, - "listennotes_url": "https://www.listennotes.com/c/24ece1d0922d4d9a9659e9e6cb2b241e/", - "audio_length_sec": 2241, - "explicit_content": false, - "latest_episode_id": "49765932639d452aac10672a82eba33a", - "latest_pub_date_ms": 1678060800000, - "earliest_pub_date_ms": 1439366880196, - "update_frequency_hours": 688, - "listen_score_global_rank": "1.5%" - }, - { - "id": "b9aa8bbb9e3c426980275b8b052a1215", - "rss": "http://ishaanlalit.com/sixthworldradio/?feed=podcast", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/sixth-world-radio-TofYFXxGOKn.600x600.jpg", - "title": "Sixth World Radio", - "country": null, - "website": "http://ishaanlalit.com/sixthworldradio?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 99, - 127, - 131, - 133 - ], - "itunes_id": 942966985, - "publisher": null, - "thumbnail": "https://production.listennotes.com/podcasts/sixth-world-radio-TofYFXxGOKn.300x300.jpg", - "is_claimed": false, - "description": "", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 30, - "listennotes_url": "https://www.listennotes.com/c/b9aa8bbb9e3c426980275b8b052a1215/", - "audio_length_sec": 776, - "explicit_content": false, - "latest_episode_id": "c32a23ea5c624ca8a0d65a20cf554390", - "latest_pub_date_ms": 1481272467000, - "earliest_pub_date_ms": 1446055111000, - "update_frequency_hours": 121, - "listen_score_global_rank": null - }, - { - "id": "4151ce9377a6435c8aac7d23f306243d", - "rss": "https://www.omnycontent.com/d/playlist/e0dce4b3-2eb8-48cb-822c-af1d00e03e20/c66968a2-4e7e-4bb8-8f20-af470099a6a3/c4612d0e-b2f1-4547-95a1-af470099a6ad/podcast.rss", - "type": "episodic", - "email": "ivmshows@pratilipi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvZTBkY2U0YjMtMmViOC00OGNiLTgyMmMtYWYxZDAwZTAzZTIwL2M2Njk2OGEyLTRlN2UtNGJiOC04ZjIwLWFmNDcwMDk5YTZhMy9jNDYxMmQwZS1iMmYxLTQ1NDctOTVhMS1hZjQ3MDA5OWE2YWQvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/4ief9N2sznclDDHeqKZXqz", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "GeekFruitHQ", - "facebook_handle": "ivmpodcasts", - "amazon_music_url": "", - "instagram_handle": "ivmpodcasts" - }, - "image": "https://production.listennotes.com/podcasts/geek-fruit-podcast-ivm-podcasts-3oaUMvOB8Iy-hNgR81AbBO4.1400x1400.jpg", - "title": "Geek Fruit Podcast", - "country": "United States", - "website": "http://ivmpodcasts.com/geekfruit?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 68, - 100, - 103, - 122 - ], - "itunes_id": 1070891121, - "publisher": "IVM Podcasts", - "thumbnail": "https://production.listennotes.com/podcasts/geek-fruit-podcast-ivm-podcasts-9xwEC2muNqW-hNgR81AbBO4.300x300.jpg", - "is_claimed": true, - "description": "We spend way too much time discussing minuscule facts, character dynamics, story arcs and unique concepts in the wonderful world of science-fiction and overall nerd culture. Think you do that too? Find us and become one with the geeks! And believe it; the Force is totally strong with us.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 33, - "total_episodes": 342, - "listennotes_url": "https://www.listennotes.com/c/4151ce9377a6435c8aac7d23f306243d/", - "audio_length_sec": 2489, - "explicit_content": false, - "latest_episode_id": "07bdb16df6d04ba783895ae96b941963", - "latest_pub_date_ms": 1595810106000, - "earliest_pub_date_ms": 1450868870341, - "update_frequency_hours": 160, - "listen_score_global_rank": "5%" - }, - { - "id": "2641ed2ce5524b3da43b8f19fe0f5ae9", - "rss": "https://www.omnycontent.com/d/playlist/e0dce4b3-2eb8-48cb-822c-af1d00e03e20/9baef9c9-4ff2-4b4e-a3dd-af540094e334/270ddb3d-16c8-4190-81d4-af540094e347/podcast.rss", - "type": "episodic", - "email": "ivmshows@pratilipi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvZTBkY2U0YjMtMmViOC00OGNiLTgyMmMtYWYxZDAwZTAzZTIwLzliYWVmOWM5LTRmZjItNGI0ZS1hM2RkLWFmNTQwMDk0ZTMzNC8yNzBkZGIzZC0xNmM4LTQxOTAtODFkNC1hZjU0MDA5NGUzNDcvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/4Njctb1AY3cTv0wOKZkRXE", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "cyrussaysin", - "facebook_handle": "ivmpodcasts", - "amazon_music_url": "", - "instagram_handle": "ivmpodcasts" - }, - "image": "https://production.listennotes.com/podcasts/cyrus-says-ivm-podcasts-uXBWJFhsMpU-1q2UDTO6ztZ.1400x1400.jpg", - "title": "Cyrus Says", - "country": "United States", - "website": "http://ivmpodcasts.com/cyrussays?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 77, - 99, - 133 - ], - "itunes_id": 979118845, - "publisher": "IVM Podcasts", - "thumbnail": "https://production.listennotes.com/podcasts/cyrus-says-ivm-podcasts-viLbUGYkS0x-1q2UDTO6ztZ.300x300.jpg", - "is_claimed": true, - "description": "

Broadcasting through the week with a rotating panel of guests, Cyrus Says is the definitive show on life in urban India, politics, sports, civic sense, traffic, kids, food, and everything that matters. Mostly.

", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 53, - "total_episodes": 1200, - "listennotes_url": "https://www.listennotes.com/c/2641ed2ce5524b3da43b8f19fe0f5ae9/", - "audio_length_sec": 3225, - "explicit_content": false, - "latest_episode_id": "9501c53153ed400ba5a1452bd7820f83", - "latest_pub_date_ms": 1693919337000, - "earliest_pub_date_ms": 1426829401189, - "update_frequency_hours": 73, - "listen_score_global_rank": "0.5%" - }, - { - "id": "b25da297f2cc434097773ac1da57b1ea", - "rss": "http://feeds.feedburner.com/therealfoodpodcast", - "type": "episodic", - "email": "realfood@audiomatic.in", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-real-food-podcast-audiomatic-Kb91aMGW8JA.1400x1400.jpg", - "title": "The Real Food Podcast", - "country": "United States", - "website": "http://soundcloud.com/the-real-food-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 100, - 102 - ], - "itunes_id": 986251025, - "publisher": "Audiomatic", - "thumbnail": "https://production.listennotes.com/podcasts/the-real-food-podcast-audiomatic-Kb91aMGW8JA.300x300.jpg", - "is_claimed": false, - "description": "If you have an adventurous palate, join Vikram Doctor every fortnight as he indulges in his appetite for the stories of food. Taste the origins, legends and practical magic of ingredients and recipes that range from the everyday to the extraordinary.\nThrough ancestral kitchens, gourmet restaurants, exotic vegetable farms, modern agriculturists, heirloom aficionados... One of India\u2019s most respected food writers has been there, eaten that and knows that there is no love more sincere than the love of food.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 44, - "listennotes_url": "https://www.listennotes.com/c/b25da297f2cc434097773ac1da57b1ea/", - "audio_length_sec": 911, - "explicit_content": false, - "latest_episode_id": "1271132f42784834b9a176e8b497b066", - "latest_pub_date_ms": 1485346229000, - "earliest_pub_date_ms": 1429793450000, - "update_frequency_hours": 355, - "listen_score_global_rank": null - }, - { - "id": "bdeb94c7f7164b14837dcd0449f4a5ee", - "rss": "https://feeds.feedburner.com/Allindiabakchod", - "type": "episodic", - "email": "Allindiabakchod@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL0FsbGluZGlhYmFrY2hvZA==", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/all-india-bakchod-all-india-bakchod-3MYkKPLD2fw-kgcdJ-xKmAL.1023x990.jpg", - "title": "All India Bakchod", - "country": "United States", - "website": "http://www.allindiabakchod.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 133 - ], - "itunes_id": 533140007, - "publisher": "All India Bakchod", - "thumbnail": "https://production.listennotes.com/podcasts/all-india-bakchod-all-india-bakchod-iS6oz1HF-A8-kgcdJ-xKmAL.300x290.jpg", - "is_claimed": false, - "description": "All India Bakchod is India's most widely heard, edgiest, comedy podcast - run by comedians Tanmay Bhat (www.tanmaybhat.com) and Gursimranjeet Khamba (www.gkhamba.com) - It's their take on everything that made it to the news. It's your fortnightly dose of entirely uncensored bakchod. Subscribe away! ", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 44, - "total_episodes": 8, - "listennotes_url": "https://www.listennotes.com/c/bdeb94c7f7164b14837dcd0449f4a5ee/", - "audio_length_sec": 1135, - "explicit_content": true, - "latest_episode_id": "7b21625d3ca6411da3c5dff86243a87d", - "latest_pub_date_ms": 1506436886000, - "earliest_pub_date_ms": 1488805724007, - "update_frequency_hours": 476, - "listen_score_global_rank": "1%" - }, - { - "id": "d203864a67fb43b1a98b7107cabeaa4b", - "rss": "http://feeds.feedburner.com/OurLastWeek", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL091ckxhc3RXZWVr", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/our-last-week-audiomatic-ed96Q4pHgsE.1400x1400.jpg", - "title": "Our Last Week", - "country": "United States", - "website": "http://soundcloud.com/our-last-week?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 133 - ], - "itunes_id": 992068781, - "publisher": "Our Last Week", - "thumbnail": "https://production.listennotes.com/podcasts/our-last-week-audiomatic-ed96Q4pHgsE.300x300.jpg", - "is_claimed": false, - "description": "Podcast by Our Last Week", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 35, - "total_episodes": 45, - "listennotes_url": "https://www.listennotes.com/c/d203864a67fb43b1a98b7107cabeaa4b/", - "audio_length_sec": 1259, - "explicit_content": false, - "latest_episode_id": "75a2ece4538149e3bda45a163059496d", - "latest_pub_date_ms": 1579417200000, - "earliest_pub_date_ms": 1431062738044, - "update_frequency_hours": 343, - "listen_score_global_rank": "3%" - }, - { - "id": "83907f1577724ac1b2c6ab154f8e0566", - "rss": "https://historyofindiapodcast.libsyn.com/rss", - "type": "episodic", - "email": "thehistoryofindiapodcasts@gmail.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9oaXN0b3J5b2ZpbmRpYXBvZGNhc3QubGlic3luLmNvbS9yc3M=", - "spotify_url": "https://open.spotify.com/show/4hCiisdImoP3csky5i13zE", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "historyofindiapodcast", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-history-of-india-podcast-kit-patrick-rpU53uF0ckj-lE64kqFsTHC.1400x1400.jpg", - "title": "The History of India Podcast", - "country": "United States", - "website": "http://www.historyofindiapodcast.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 111, - 113, - 122, - 125 - ], - "itunes_id": 1041684187, - "publisher": "Kit Patrick", - "thumbnail": "https://production.listennotes.com/podcasts/the-history-of-india-podcast-kit-patrick-kCpZW6V-tnP-lE64kqFsTHC.300x300.jpg", - "is_claimed": false, - "description": "A light weekly podcast covering the history of India, from 6th century B.C. Enjoying the podcast? Please consider donating to the Snehal Sidhu Memorial Fund (http://tinyurl.com/prkvwll)", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 56, - "total_episodes": 143, - "listennotes_url": "https://www.listennotes.com/c/83907f1577724ac1b2c6ab154f8e0566/", - "audio_length_sec": 2624, - "explicit_content": false, - "latest_episode_id": "c00ce90558954dfca4a0bb4aa36a5387", - "latest_pub_date_ms": 1685620800000, - "earliest_pub_date_ms": 1437820995141, - "update_frequency_hours": 1210, - "listen_score_global_rank": "0.5%" - }, - { - "id": "ff7abc5c7a4d4d01913760375058dead", - "rss": "http://feeds.feedburner.com/KaanMasti", - "type": "episodic", - "email": null, - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/kaanmasti-hoezaay-flIyRD8c4VU.600x600.jpg", - "title": "KaanMasti", - "country": null, - "website": null, - "language": "English", - "genre_ids": [ - 67, - 133 - ], - "itunes_id": 524560373, - "publisher": "Hoezaay", - "thumbnail": "https://production.listennotes.com/podcasts/kaanmasti-hoezaay-flIyRD8c4VU.300x300.jpg", - "is_claimed": false, - "description": "", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 33, - "listennotes_url": "https://www.listennotes.com/c/ff7abc5c7a4d4d01913760375058dead/", - "audio_length_sec": 2321, - "explicit_content": false, - "latest_episode_id": "8473fbfb1c764b7f95169abfb497ec9c", - "latest_pub_date_ms": 1495259445000, - "earliest_pub_date_ms": 1337444762000, - "update_frequency_hours": 1568, - "listen_score_global_rank": null - }, - { - "id": "1daa2a04171f44f58f4fba42b77a8203", - "rss": "https://www.omnycontent.com/d/playlist/e0dce4b3-2eb8-48cb-822c-af1d00e03e20/7dffa21c-335a-45ce-8a28-af54012282fe/0c6730be-d749-4234-a795-af540122831e/podcast.rss", - "type": "episodic", - "email": "ivmshows@pratilipi.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly93d3cub21ueWNvbnRlbnQuY29tL2QvcGxheWxpc3QvZTBkY2U0YjMtMmViOC00OGNiLTgyMmMtYWYxZDAwZTAzZTIwLzdkZmZhMjFjLTMzNWEtNDVjZS04YTI4LWFmNTQwMTIyODJmZS8wYzY3MzBiZS1kNzQ5LTQyMzQtYTc5NS1hZjU0MDEyMjgzMWUvcG9kY2FzdC5yc3M=", - "spotify_url": "https://open.spotify.com/show/0lEkSBHhsiNnWeIWGajTjV", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/tfg-sports-podcast-ivm-podcasts-2Nw-chDqY1O-5Mq0usV3E84.1400x1400.jpg", - "title": "TFG Sports Podcast", - "country": "United States", - "website": "http://ivmpodcasts.com/tfgsportspodcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 77, - 78, - 81 - ], - "itunes_id": 1062166975, - "publisher": "IVM Podcasts", - "thumbnail": "https://production.listennotes.com/podcasts/tfg-sports-podcast-ivm-podcasts-IQLjvr7Y6R8-5Mq0usV3E84.300x300.jpg", - "is_claimed": true, - "description": "

TFG Sports podcast is the place to check in for discussion on Indian sports. We talk about Cricket, Football, Kabaddi, Hockey, Athletics and more with a variety of guests and regular contributors.

", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": null, - "total_episodes": 563, - "listennotes_url": "https://www.listennotes.com/c/1daa2a04171f44f58f4fba42b77a8203/", - "audio_length_sec": 1700, - "explicit_content": false, - "latest_episode_id": "c4e61b1f5dd84fd399e0bdb6a86acbdb", - "latest_pub_date_ms": 1559867400000, - "earliest_pub_date_ms": 1448286726562, - "update_frequency_hours": 24, - "listen_score_global_rank": null - } - ], - "source_url": "https://www.buzzfeed.com/andreborges/17-brilliant-indian-podcasts-thatll-make-you-a-funner-smarte?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Think about how much you can soak in on those long commutes.\"", - "pub_date_ms": 1556561928161, - "source_domain": "www.buzzfeed.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/16-brilliant-indian-podcasts-thatll-SDFKduyJ47r/" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "Vb017Sx3l8F", - "description": "Curated list id, which can be used to further fetch detailed curated list metadata via `GET /curated_podcasts/{id}`." - }, - "title": { - "type": "string", - "example": "7 Bookish Podcasts for Avid Readers On the Go", - "description": "Curated list name." - }, - "total": { - "type": "integer", - "example": 25, - "description": "The total number of podcasts in this curated list." - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "description": "Complete meta data of all podcasts in this curated list." - }, - "source_url": { - "type": "string", - "example": "https://parade.com/718913/ashley_johnson/7-bookish-podcasts-for-avid-readers-on-the-go/", - "description": "Url of the source of this curated list." - }, - "description": { - "type": "string", - "example": "Commuting to work is always better when you have a great new podcast to listen to, and this year, we have discovered some of our favorite podcasts yet for readers and book-lovers. These podcasts for readers entertain us and provide no shortage of new book recommendations too.", - "description": "This curated list's description." - }, - "pub_date_ms": { - "type": "integer", - "example": 1556843484301, - "description": "Published date of this curated list. In milliseconds." - }, - "source_domain": { - "type": "string", - "example": "parade.com", - "description": "The domain name of the source of this curated list." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/curated-podcasts/7-bookish-podcasts-for-avid-readers-on-H2r-TCWai8K/", - "description": "The url of this curated list on [ListenNotes.com](https://www.ListenNotes.com)." - } - } -} -``` -
+Fetch a list of supported countries/regions for best podcasts + +`GET /regions` +It returns a dictionary of country codes (e.g., us, gb...) & country names (United States, United Kingdom...). The country code is used in the query parameter **region** of `GET /best_podcasts`. +```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); +client.fetchPodcastRegions({}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -### Fetch curated lists of podcasts +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-regions) -Function Name: **fetchCuratedPodcastsLists** +### fetchPodcastLanguages -A bunch of curated lists from online media. For each list, you'll get basic info of up to 5 podcasts. To get detailed meta data of all podcasts in a specific list, you need to use `GET /curated_podcasts/{id}`. We add new curated lists to the database on a daily basis. +Fetch a list of supported languages for podcasts +`GET /languages` -Example: -```javascript +Get a list of languages that are supported in Listen Notes database. You can use the language string as query parameter in `GET /search`. +```javascript const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +client.fetchPodcastLanguages({}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -client.fetchCuratedPodcastsLists({ page: 2 }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-languages) -``` +### justListen -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-curated_podcasts). - - -
- Click to see example response - -```json -{ - "total": 4712, - "has_next": true, - "page_number": 2, - "has_previous": true, - "curated_lists": [ - { - "id": "A1mz0ZKu473", - "title": "The Best Art Podcasts To Add To Your Queue", - "total": 8, - "podcasts": [ - { - "id": "3ddcb6e93a8b47e3a95b4cf7e6e2ca1c", - "image": "https://production.listennotes.com/podcasts/artcurious-podcast-jennifer-dasalartcurious-zmjvr7W19IO-Q2GWkaPsw7J.1400x1400.jpg", - "title": "ArtCurious Podcast", - "publisher": "Jennifer Dasal/ArtCurious", - "thumbnail": "https://production.listennotes.com/podcasts/artcurious-podcast-jennifer-dasalartcurious-M92WqaFQzSH-Q2GWkaPsw7J.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/3ddcb6e93a8b47e3a95b4cf7e6e2ca1c/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "1b2adc7d04644cb3b52a9454c37e36f6", - "image": "https://production.listennotes.com/podcasts/talk-art-russell-tovey-and-robert-diament-u_UVtrEBjeq-AovYj5Z4hqg.1400x1400.jpg", - "title": "Talk Art", - "publisher": "Russell Tovey and Robert Diament", - "thumbnail": "https://production.listennotes.com/podcasts/talk-art-russell-tovey-and-robert-diament-_hRdIX86e5--AovYj5Z4hqg.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/1b2adc7d04644cb3b52a9454c37e36f6/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "8e48106cbedb49cca409dcfd8fbc5d45", - "image": "https://production.listennotes.com/podcasts/the-sculptors-funeral-jason-arkles-c9HEzQjtk6F-PKx_w1eg5Ev.1400x1400.jpg", - "title": "The Sculptor's Funeral", - "publisher": "Jason Arkles", - "thumbnail": "https://production.listennotes.com/podcasts/the-sculptors-funeral-jason-arkles-LOMJG-v_UsW-PKx_w1eg5Ev.300x300.jpg", - "listen_score": 45, - "listennotes_url": "https://www.listennotes.com/c/8e48106cbedb49cca409dcfd8fbc5d45/", - "listen_score_global_rank": "1%" - }, - { - "id": "8ad2a5f28070406d98a34dbe9e399f65", - "image": "https://production.listennotes.com/podcasts/the-week-in-art-by-the-art-newspaper-the-Xc2ZqEMiyuL-WK-Xcmef3wP.1400x1400.jpg", - "title": "The Week in Art", - "publisher": "The Art Newspaper", - "thumbnail": "https://production.listennotes.com/podcasts/the-week-in-art-by-the-art-newspaper-the-eIU4lQ6cz5d-WK-Xcmef3wP.300x300.jpg", - "listen_score": 50, - "listennotes_url": "https://www.listennotes.com/c/8ad2a5f28070406d98a34dbe9e399f65/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "dc62e31b4eec4e7596ea2e61e4c268b5", - "image": "https://production.listennotes.com/podcasts/the-lonely-palette-tamar-avishai-RbL6_CTE7ci-S9_PQbKdFkg.1028x1028.jpg", - "title": "The Lonely Palette", - "publisher": "Tamar Avishai", - "thumbnail": "https://production.listennotes.com/podcasts/the-lonely-palette-tamar-avishai-A0h695IMxcL-S9_PQbKdFkg.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/dc62e31b4eec4e7596ea2e61e4c268b5/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.thehandbook.com/the-best-art-podcasts/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Love art? Want to know more about the history behind some of the world\u2019s greatest painters, but don\u2019t know where to start? Sometimes the world of canvases and sculptures can be daunting, but it doesn\u2019t have to be. We\u2019ve rounded up the best art podcasts where the experts reveal all there is to know about great women artists, art history and more.\"", - "pub_date_ms": 1692718697858, - "source_domain": "www.thehandbook.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/the-best-art-podcasts-to-add-to-your-A1mz0ZKu473/" - }, - { - "id": "NthlLgSc0d4", - "title": "The 13 Best Tech Podcasts, According to Us", - "total": 13, - "podcasts": [ - { - "id": "8063db4878224449b0588bfb0a22ba5f", - "image": "https://production.listennotes.com/podcasts/bad-blood-the-final-chapter-three-uncanny-CHm089VjMcE-vMTrJ6L2Bic.1400x1400.jpg", - "title": "Bad Blood: The Final Chapter", - "publisher": "Three Uncanny Four", - "thumbnail": "https://production.listennotes.com/podcasts/bad-blood-the-final-chapter-three-uncanny-auqlHgAfz62-vMTrJ6L2Bic.300x300.jpg", - "listen_score": 65, - "listennotes_url": "https://www.listennotes.com/c/8063db4878224449b0588bfb0a22ba5f/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "535815a492a941d79b95be6ae1c5cc9c", - "image": "https://production.listennotes.com/podcasts/radiolab-wnyc-studios-BgiSzGyUIXx-LcwYyVzfJx9.1400x1400.jpg", - "title": "Radiolab", - "publisher": "WNYC Studios", - "thumbnail": "https://production.listennotes.com/podcasts/radiolab-wnyc-studios--AczeRs3UEK-LcwYyVzfJx9.300x300.jpg", - "listen_score": 85, - "listennotes_url": "https://www.listennotes.com/c/535815a492a941d79b95be6ae1c5cc9c/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "cfeaa7a758a94e069ba087f323ffa225", - "image": "https://production.listennotes.com/podcasts/the-vergecast-the-verge-CXnK7DEQBN_-n6zR1v83Ejt.1400x1400.jpg", - "title": "The Vergecast", - "publisher": "The Verge", - "thumbnail": "https://production.listennotes.com/podcasts/the-vergecast-the-verge-48gxEm7coLX-n6zR1v83Ejt.300x300.jpg", - "listen_score": 67, - "listennotes_url": "https://www.listennotes.com/c/cfeaa7a758a94e069ba087f323ffa225/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "ecac001513b94919bdc68b0b9277cc90", - "image": "https://production.listennotes.com/podcasts/ologies-with-alie-ward-alie-ward-KfHcnoSrNTY-k0n1jbDJigN.1400x1400.jpg", - "title": "Ologies with Alie Ward", - "publisher": "Alie Ward", - "thumbnail": "https://production.listennotes.com/podcasts/ologies-with-alie-ward-alie-ward-hU8wJsrtyDb-k0n1jbDJigN.300x300.jpg", - "listen_score": 80, - "listennotes_url": "https://www.listennotes.com/c/ecac001513b94919bdc68b0b9277cc90/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "2e800d2ddd26463a9453487c49268edc", - "image": "https://production.listennotes.com/podcasts/spellcaster-the-fall-of-sam-bankman-fried-m8hFR97nGkY-NDdJpRatBy1.1400x1400.jpg", - "title": "Spellcaster: The Fall of Sam Bankman-Fried", - "publisher": "Wondery | Bloomberg", - "thumbnail": "https://production.listennotes.com/podcasts/spellcaster-the-fall-of-sam-bankman-fried-mWQNqDHFG1P-NDdJpRatBy1.300x300.jpg", - "listen_score": 49, - "listennotes_url": "https://www.listennotes.com/c/2e800d2ddd26463a9453487c49268edc/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://gizmodo.com.au/2023/08/best-tech-podcasts/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Podcasts are a dime a dozen, but too much choice can be a bad thing. So, we decided to round up suggestions from the team \u2013 here are the best tech podcasts, according to us.\"", - "pub_date_ms": 1692552661409, - "source_domain": "gizmodo.com.au", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/the-13-best-tech-podcasts-according-to-NthlLgSc0d4/" - }, - { - "id": "DaEKOlT-yZc", - "title": "Best walking podcasts: 9 brilliant series that will keep your mind busy on long hikes", - "total": 9, - "podcasts": [ - { - "id": "c72b95c240714fb38627a1e24259ee65", - "image": "https://production.listennotes.com/podcasts/walk-to-wellbeing-the-wellness-and-walking-wp4e_S13Ofx-gT_yr-i7lQ1.1400x1400.jpg", - "title": "Walk To Wellbeing: The wellness and walking podcast by Health & Wellbeing", - "publisher": "DC Thomson", - "thumbnail": "https://production.listennotes.com/podcasts/walk-to-wellbeing-the-wellness-and-walking-LSkmW2alCvQ-gT_yr-i7lQ1.300x300.jpg", - "listen_score": 30, - "listennotes_url": "https://www.listennotes.com/c/c72b95c240714fb38627a1e24259ee65/", - "listen_score_global_rank": "5%" - }, - { - "id": "3f349c8c74a544c79908274b733969be", - "image": "https://production.listennotes.com/podcasts/national-trust-podcast-national-trust-f-c38GF2BWL-hjQ9VKotJrU.1400x1400.jpg", - "title": "National Trust Podcast", - "publisher": "National Trust", - "thumbnail": "https://production.listennotes.com/podcasts/national-trust-podcast-national-trust-KEuMhY_oCUJ-hjQ9VKotJrU.300x300.jpg", - "listen_score": 50, - "listennotes_url": "https://www.listennotes.com/c/3f349c8c74a544c79908274b733969be/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "e1c66a542b8d4acfbc95b898c7ac710f", - "image": "https://production.listennotes.com/podcasts/feel-better-live-more-with-dr-rangan-HCVm172lNcX-JKmSp6BXHVk.1400x1400.jpg", - "title": "Feel Better, Live More with Dr Rangan Chatterjee", - "publisher": "Dr Rangan Chatterjee: GP & Author", - "thumbnail": "https://production.listennotes.com/podcasts/feel-better-live-more-with-dr-rangan-H1l2zKIPydb-JKmSp6BXHVk.300x300.jpg", - "listen_score": 73, - "listennotes_url": "https://www.listennotes.com/c/e1c66a542b8d4acfbc95b898c7ac710f/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "2c619ccac19943a7af53fa04a58ad2ef", - "image": "https://production.listennotes.com/podcasts/walking-the-dog-with-emily-dean-the-times-ywVxQCJhPN2-bFLhfgYpAPm.1400x1400.jpg", - "title": "Walking The Dog with Emily Dean", - "publisher": "The Times", - "thumbnail": "https://production.listennotes.com/podcasts/walking-the-dog-with-emily-dean-the-times-l3IZLGS5y0r-bFLhfgYpAPm.300x300.jpg", - "listen_score": 62, - "listennotes_url": "https://www.listennotes.com/c/2c619ccac19943a7af53fa04a58ad2ef/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "4be7fc6864854199812237804f489a2e", - "image": "https://production.listennotes.com/podcasts/sliced-bread-bbc-radio-4-tCUGfOB0L59-PY2HKWuLVcg.1400x1400.jpg", - "title": "Sliced Bread", - "publisher": "BBC Radio 4", - "thumbnail": "https://production.listennotes.com/podcasts/sliced-bread-bbc-radio-4-IMJAvN7unZo-PY2HKWuLVcg.300x300.jpg", - "listen_score": 50, - "listennotes_url": "https://www.listennotes.com/c/4be7fc6864854199812237804f489a2e/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.stylist.co.uk/entertainment/podcasts/best-walking-hiking-podcasts/812779?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Is a lack of entertainment putting you off going for long walks? Try listening to one of these engaging podcasts to keep you busy and boost your motivation levels.\"", - "pub_date_ms": 1692552425288, - "source_domain": "www.stylist.co.uk", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-walking-podcasts-9-brilliant-DaEKOlT-yZc/" - }, - { - "id": "jFXH91_5Txw", - "title": "7 of the Best Star-Studded Rewatch Podcasts to Listen to Amidst the Hollywood Strikes", - "total": 8, - "podcasts": [ - { - "id": "767212ac574c4912bbaadab795b7fef5", - "image": "https://production.listennotes.com/podcasts/pod-meets-world-iheartpodcasts-uI8O31Lhb6k-Dbtv8dGgFzY.1400x1400.jpg", - "title": "Pod Meets World", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/pod-meets-world-iheartpodcasts-3WcwUlfinvI-Dbtv8dGgFzY.300x300.jpg", - "listen_score": 64, - "listennotes_url": "https://www.listennotes.com/c/767212ac574c4912bbaadab795b7fef5/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "fb692671e0a64506a0b272f6054cd760", - "image": "https://production.listennotes.com/podcasts/full-house-rewind-D1Xmx8fVbBo--OiJqgQ8WCn.1400x1400.jpg", - "title": "Full House Rewind", - "publisher": "PodCo", - "thumbnail": "https://production.listennotes.com/podcasts/full-house-rewind-mLMbzXe5Cfp--OiJqgQ8WCn.300x300.jpg", - "listen_score": 46, - "listennotes_url": "https://www.listennotes.com/c/fb692671e0a64506a0b272f6054cd760/", - "listen_score_global_rank": "1%" - }, - { - "id": "af5858c544634421a47dd7c99ee9a20e", - "image": "https://production.listennotes.com/podcasts/how-rude-tanneritos-iheartpodcasts-SfFjneWBsId-Kn1Z97d8Ris.1400x1400.jpg", - "title": "How Rude, Tanneritos!", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/how-rude-tanneritos-iheartpodcasts-wr6n97ti8mF-Kn1Z97d8Ris.300x300.jpg", - "listen_score": 51, - "listennotes_url": "https://www.listennotes.com/c/af5858c544634421a47dd7c99ee9a20e/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "6f8b58216aed4e8fb8d84f3d579c2864", - "image": "https://production.listennotes.com/podcasts/drama-queens-iheartpodcasts-xTFVm1Bkzvu-Wfs0aE92byP.1400x1400.jpg", - "title": "Drama Queens", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/drama-queens-iheartpodcasts-7GqrPIhvyaw-Wfs0aE92byP.300x300.jpg", - "listen_score": 75, - "listennotes_url": "https://www.listennotes.com/c/6f8b58216aed4e8fb8d84f3d579c2864/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "44155df378c24577bfe906248368d82d", - "image": "https://production.listennotes.com/podcasts/90210mg-iheartpodcasts-MfCZY9uFVoE-ysE8WUFoX4M.1400x1400.jpg", - "title": "90210MG", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/90210mg-iheartpodcasts-nzsmpXRKreZ-ysE8WUFoX4M.300x300.jpg", - "listen_score": 61, - "listennotes_url": "https://www.listennotes.com/c/44155df378c24577bfe906248368d82d/", - "listen_score_global_rank": "0.1%" - } - ], - "source_url": "https://popculture.com/tv-shows/news/7-of-the-best-star-studded-rewatch-podcasts-to-listen-to-amidst-the-hollywood-strikes/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "'With the WGA and SAG-AFTRA strikes, almost all of Hollywood is at a standstill. Only a select few will be airing new episodes this fall. Maybe instead of looking forward to something new, fans can look forward to something old. While there are many rewatch podcasts, we have narrowed it down, so take a look at some of the best star-studded rewatch podcasts to listen to.'", - "pub_date_ms": 1692552333948, - "source_domain": "popculture.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/7-of-the-best-star-studded-rewatch-jFXH91_5Txw/" - }, - { - "id": "mIChM6YAxsu", - "title": "Five Best Self-Help Podcasts for Teens 2023", - "total": 5, - "podcasts": [ - { - "id": "c7b48218be8e48ec9791a60c1795ac7b", - "image": "https://production.listennotes.com/podcasts/anything-goes-with-emma-chamberlain-emma-b0Q6-Ej5dMw-7z1YesgG3Pf.1400x1400.jpg", - "title": "anything goes with emma chamberlain", - "publisher": "emma chamberlain", - "thumbnail": "https://production.listennotes.com/podcasts/anything-goes-with-emma-chamberlain-emma-WU8iSf5uq-9-7z1YesgG3Pf.300x300.jpg", - "listen_score": 85, - "listennotes_url": "https://www.listennotes.com/c/c7b48218be8e48ec9791a60c1795ac7b/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "adbabfe5dfe24d16831a50be66e6dbd0", - "image": "https://production.listennotes.com/podcasts/things-could-be-worse-2qKsyeoCS5k-b7zJSE3dNyB.1400x1400.jpg", - "title": "Things Could Be Worse", - "publisher": "Bailey Dedrick", - "thumbnail": "https://production.listennotes.com/podcasts/things-could-be-worse-GvUuWrxKgL--b7zJSE3dNyB.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/adbabfe5dfe24d16831a50be66e6dbd0/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "98e4ce04e0de4606bc407127d4a1488c", - "image": "https://production.listennotes.com/podcasts/call-your-friends-madison-and-lauren-orlando-cCM2sQUwBD3-abjTmEhBAfG.1400x1400.jpg", - "title": "Call Your Friends", - "publisher": "Madison and Lauren Orlando", - "thumbnail": "https://production.listennotes.com/podcasts/call-your-friends-madison-and-lauren-orlando-j1YsoX0ZNLM-abjTmEhBAfG.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/98e4ce04e0de4606bc407127d4a1488c/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "795d876d4f114f368630aec49aab03a0", - "image": "https://production.listennotes.com/podcasts/on-purpose-with-jay-shetty-iheartpodcasts-yxTRzc7LHZP-gnyHELJ0usD.1400x1400.jpg", - "title": "On Purpose with Jay Shetty", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/on-purpose-with-jay-shetty-iheartpodcasts-dsVoPaCB2mW-gnyHELJ0usD.300x300.jpg", - "listen_score": 83, - "listennotes_url": "https://www.listennotes.com/c/795d876d4f114f368630aec49aab03a0/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "3c180ebf93b3408f89b62600d00b8eab", - "image": "https://production.listennotes.com/podcasts/high-low-with-emrata-emrata-sony-music-RxViyrYebqX-LEGndbzpcSP.1400x1400.jpg", - "title": "High Low with EmRata", - "publisher": "EmRata / Sony Music Entertainment", - "thumbnail": "https://production.listennotes.com/podcasts/high-low-with-emrata-emrata-sony-music-uWS-8eNKsYU-LEGndbzpcSP.300x300.jpg", - "listen_score": 55, - "listennotes_url": "https://www.listennotes.com/c/3c180ebf93b3408f89b62600d00b8eab/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.theteenmagazine.com/five-best-self-help-podcasts-for-teens-2023?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"To help you guys out, I have compiled a list of the five best self-help podcasts for teens in 2023 according to my experience, reviews that I've gathered from the internet, and an immense amount of research that I've done to put all of the fragments of information that I've found helpful together, which are truly the cream of the crop! These podcasts cover mental health, personal development, career advice, and more.\"", - "pub_date_ms": 1692551021846, - "source_domain": "www.theteenmagazine.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/five-best-self-help-podcasts-for-teens-mIChM6YAxsu/" - }, - { - "id": "7jHf6pV2W1v", - "title": "The Best Podcasts to Represent Every US State (Plus DC)", - "total": 51, - "podcasts": [ - { - "id": "d3528487ea4045f9927d0ef8bf94a149", - "image": "https://production.listennotes.com/podcasts/alabama-astronaut-W7hTFxbS9k--m45LQRiydqa.1400x1400.jpg", - "title": "Alabama Astronaut", - "publisher": "Abe Partridge & Ferrill Gibbs", - "thumbnail": "https://production.listennotes.com/podcasts/alabama-astronaut-wHEqm0PaoF2-m45LQRiydqa.300x300.jpg", - "listen_score": 43, - "listennotes_url": "https://www.listennotes.com/c/d3528487ea4045f9927d0ef8bf94a149/", - "listen_score_global_rank": "1%" - }, - { - "id": "98f78d96c1e5458f8c36932486775f19", - "image": "https://production.listennotes.com/podcasts/iditapod-alaska-public-media-_LtHwo6Y8OF-_Ys4if1qkP5.1400x1400.jpg", - "title": "Iditapod", - "publisher": "Alaska Public Media", - "thumbnail": "https://production.listennotes.com/podcasts/iditapod-alaska-public-media-d-gSneYFAE3-_Ys4if1qkP5.300x300.jpg", - "listen_score": 44, - "listennotes_url": "https://www.listennotes.com/c/98f78d96c1e5458f8c36932486775f19/", - "listen_score_global_rank": "1%" - }, - { - "id": "1bb3c46ee67e401180c1f959abcba5e8", - "image": "https://production.listennotes.com/podcasts/behind-the-scenery-9qL8fCydoJ7-GxSgU09DuAn.1400x1400.jpg", - "title": "Behind the Scenery", - "publisher": "National Park Service", - "thumbnail": "https://production.listennotes.com/podcasts/behind-the-scenery-AJS2B4bftvk-GxSgU09DuAn.300x300.jpg", - "listen_score": 27, - "listennotes_url": "https://www.listennotes.com/c/1bb3c46ee67e401180c1f959abcba5e8/", - "listen_score_global_rank": "10%" - }, - { - "id": "852f79600d3840e487195bdb45cc8915", - "image": "https://production.listennotes.com/podcasts/ozark-whispers-vincent-vangetti-5LZiWdewpmB-VMEa2nHdy_j.1400x1400.jpg", - "title": "Ozark Whispers", - "publisher": "Vincent Vangetti", - "thumbnail": "https://production.listennotes.com/podcasts/ozark-whispers-vincent-vangetti-jJUVZmotlay-VMEa2nHdy_j.300x300.jpg", - "listen_score": 28, - "listennotes_url": "https://www.listennotes.com/c/852f79600d3840e487195bdb45cc8915/", - "listen_score_global_rank": "10%" - }, - { - "id": "26512878acb24d589c7088b3c7045e6e", - "image": "https://production.listennotes.com/podcasts/california-love-laist-studios-3NvrBXq4m1V-xNiGon0uhrC.1400x1400.jpg", - "title": "California Love", - "publisher": "LAist Studios", - "thumbnail": "https://production.listennotes.com/podcasts/california-love-laist-studios-QXogFJMx8t2-xNiGon0uhrC.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/26512878acb24d589c7088b3c7045e6e/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://lifehacker.com/best-podcast-for-every-us-state-1850741030?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Each one celebrates the voices and stories that make the United States so diverse. If you\u2019re taking a cross-country road trip, you could blast state-specific podcasts the whole way. Here\u2019s a list to get you started.\"", - "pub_date_ms": 1692309919935, - "source_domain": "lifehacker.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/the-best-podcasts-to-represent-every-7jHf6pV2W1v/" - }, - { - "id": "ZatwYU8Aqib", - "title": "Best podcasts of the week: Join Sara Pascoe and Cariad Lloyd\u2019s book club with a difference", - "total": 8, - "podcasts": [ - { - "id": "6e893f63911c4c278de7aa5947676323", - "image": "https://production.listennotes.com/podcasts/sara-cariads-weirdos-book-club-plosive-yNSIsVMbOPk-ZUqT1HjaVGw.1400x1400.jpg", - "title": "Sara & Cariad's Weirdos Book Club", - "publisher": "Plosive", - "thumbnail": "https://production.listennotes.com/podcasts/sara-cariads-weirdos-book-club-plosive-aPO5_3d7kBQ-ZUqT1HjaVGw.300x300.jpg", - "listen_score": 40, - "listennotes_url": "https://www.listennotes.com/c/6e893f63911c4c278de7aa5947676323/", - "listen_score_global_rank": "1.5%" - }, - { - "id": "ded8f6fce1c946e89053259c60ed8200", - "image": "https://production.listennotes.com/podcasts/serpentine-podcast-serpentine-y-Ur64K0oDx-b-ZhB0ovfPK.1400x1400.jpg", - "title": "Serpentine Podcast", - "publisher": "Serpentine", - "thumbnail": "https://production.listennotes.com/podcasts/serpentine-podcast-serpentine-g9kGdqKrHfB-b-ZhB0ovfPK.300x300.jpg", - "listen_score": 38, - "listennotes_url": "https://www.listennotes.com/c/ded8f6fce1c946e89053259c60ed8200/", - "listen_score_global_rank": "2%" - }, - { - "id": "f0573955f1bb437ab4eab076e65bc69f", - "image": "https://production.listennotes.com/podcasts/the-red-carpet-treatment-with-jordan-MwJpLaSyi9t-LRg2THXaBfO.1400x1400.jpg", - "title": "The Red Carpet Treatment with Jordan Stephens", - "publisher": "s:e creative studio ", - "thumbnail": "https://production.listennotes.com/podcasts/the-red-carpet-treatment-with-jordan-RB4rtEasxz6-LRg2THXaBfO.300x300.jpg", - "listen_score": 28, - "listennotes_url": "https://www.listennotes.com/c/f0573955f1bb437ab4eab076e65bc69f/", - "listen_score_global_rank": "10%" - }, - { - "id": "8ff0306ffef641948118318eb05d3dec", - "image": "https://production.listennotes.com/podcasts/where-is-alex-a-5-news-podcast-9K_rmu4zcxv-oZL_SW5zbgI.1400x1400.jpg", - "title": "\u2018Where is Alex?\u2019 - a 5 News podcast", - "publisher": "Julian Druker", - "thumbnail": "https://production.listennotes.com/podcasts/where-is-alex-a-5-news-podcast-S69yPXaBz-u-oZL_SW5zbgI.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/8ff0306ffef641948118318eb05d3dec/", - "listen_score_global_rank": null - }, - { - "id": "dd5821bb41734e669169d6c01c97cf91", - "image": "https://production.listennotes.com/podcasts/cocktails-and-takeaways-cocktails-and-ndgqF9zpM5l-GgsF02DMJmO.1400x1400.jpg", - "title": "COCKTAILS AND TAKEAWAYS", - "publisher": "cocktails and takeaways", - "thumbnail": "https://production.listennotes.com/podcasts/cocktails-and-takeaways-cocktails-and-qPRCXVK7ZeM-GgsF02DMJmO.300x300.jpg", - "listen_score": 49, - "listennotes_url": "https://www.listennotes.com/c/dd5821bb41734e669169d6c01c97cf91/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.theguardian.com/tv-and-radio/2023/aug/17/hear-here-sara-cariad-weirdos-book-club?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"The comedians promise \u2018a space for the lonely outsider to feel accepted\u2019 in Sara & Cariad\u2019s Weirdos Book Club. Plus: five of the best podcasts with multitasking hosts.\"", - "pub_date_ms": 1692309524021, - "source_domain": "www.theguardian.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-podcasts-of-the-week-join-sara-ZatwYU8Aqib/" - }, - { - "id": "YTA_Nwm69lb", - "title": "Top 10 Most Popular Podcast Series in 2023", - "total": 11, - "podcasts": [ - { - "id": "441f4f517fa44d38aaa95bb72e1fc37a", - "image": "https://production.listennotes.com/podcasts/blackout-qcode-endeavor-content-SEQXzolMu1W-AK2fNL8tWmP.1400x1400.jpg", - "title": "Blackout", - "publisher": "QCODE & Endeavor Content", - "thumbnail": "https://production.listennotes.com/podcasts/blackout-qcode-endeavor-content-1uKCHGIvRcq-AK2fNL8tWmP.300x300.jpg", - "listen_score": 78, - "listennotes_url": "https://www.listennotes.com/c/441f4f517fa44d38aaa95bb72e1fc37a/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "4e1f73af5f4e4e5aa51e351f3c3f39fe", - "image": "https://production.listennotes.com/podcasts/batman-the-animated-series-podcast-NH7os9Yq6pc-GrdUWAO-e1H.1400x1400.jpg", - "title": "Batman the Animated Series Podcast", - "publisher": "Alex & Will Robson", - "thumbnail": "https://production.listennotes.com/podcasts/batman-the-animated-series-podcast-ENA97DbKrnL-GrdUWAO-e1H.300x300.jpg", - "listen_score": 36, - "listennotes_url": "https://www.listennotes.com/c/4e1f73af5f4e4e5aa51e351f3c3f39fe/", - "listen_score_global_rank": "2.5%" - }, - { - "id": "3ac868ea6ecb4c52ad6dc2a999cb8927", - "image": "https://production.listennotes.com/podcasts/bridgewater-iheartpodcasts-and-grim-mild-z39e_vFrTsU-1OYpZlVzmKd.1400x1400.jpg", - "title": "Bridgewater", - "publisher": "iHeartPodcasts and Grim & Mild", - "thumbnail": "https://production.listennotes.com/podcasts/bridgewater-iheartpodcasts-and-grim-mild-6Te_wo3KB1n-1OYpZlVzmKd.300x300.jpg", - "listen_score": 67, - "listennotes_url": "https://www.listennotes.com/c/3ac868ea6ecb4c52ad6dc2a999cb8927/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "9ac767bb2dee4cd396e55ddf2753acb4", - "image": "https://production.listennotes.com/podcasts/the-wolverine-podcast-thewolverinecom-e5SurEm4I1b-nXPI9zpA7QY.1400x1400.jpg", - "title": "The Wolverine Podcast", - "publisher": "TheWolverine.com", - "thumbnail": "https://production.listennotes.com/podcasts/the-wolverine-podcast-thewolverinecom-Do-LB2xqMza-nXPI9zpA7QY.300x300.jpg", - "listen_score": 48, - "listennotes_url": "https://www.listennotes.com/c/9ac767bb2dee4cd396e55ddf2753acb4/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "b68e20af0aad415da1045be573927062", - "image": "https://production.listennotes.com/podcasts/marvels-wolverine-the-long-night-TUt4YZivDkR--CQ9NEh1kIX.1400x1400.jpg", - "title": "Marvel's Wolverine: The Long Night", - "publisher": "Marvel & SiriusXM", - "thumbnail": "https://production.listennotes.com/podcasts/marvels-wolverine-the-long-night-uFTJirOALNx--CQ9NEh1kIX.300x300.jpg", - "listen_score": 52, - "listennotes_url": "https://www.listennotes.com/c/b68e20af0aad415da1045be573927062/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://technosports.co.in/top-10-most-popular-podcast-series/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Podcasts have become a popular way to consume audio content in recent years and with good reason. They offer a wide variety of topics and styles, from educational to entertaining, and can be listened to on the go or in the comfort of your own home.\"", - "pub_date_ms": 1692135828264, - "source_domain": "technosports.co.in", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/top-10-most-popular-podcast-series-in-YTA_Nwm69lb/" - }, - { - "id": "qtAZhrimlBJ", - "title": "12 Comedy Podcasts As Smart as SmartLess", - "total": 12, - "podcasts": [ - { - "id": "fa07bed1958840ca89c4c7d2536ab701", - "image": "https://production.listennotes.com/podcasts/family-trips-with-the-meyers-brothers-p2Kxr1EiX6--2j4-Oyeu0TK.1400x1400.jpg", - "title": "Family Trips with the Meyers Brothers", - "publisher": "Seth Meyers and Josh Meyers", - "thumbnail": "https://production.listennotes.com/podcasts/family-trips-with-the-meyers-brothers-eCzgUAX_vYK-2j4-Oyeu0TK.300x300.jpg", - "listen_score": 52, - "listennotes_url": "https://www.listennotes.com/c/fa07bed1958840ca89c4c7d2536ab701/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "170ba77c435a4faeaf41f93a1ffa1971", - "image": "https://production.listennotes.com/podcasts/baby-this-is-keke-palmer-j6kNzpt41qi-u2MSNy3hXxK.1400x1400.jpg", - "title": "Baby, This is Keke Palmer", - "publisher": "Wondery", - "thumbnail": "https://production.listennotes.com/podcasts/baby-this-is-keke-palmer-PyijXYsgFEQ-u2MSNy3hXxK.300x300.jpg", - "listen_score": 51, - "listennotes_url": "https://www.listennotes.com/c/170ba77c435a4faeaf41f93a1ffa1971/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "8038647a5e1c49e2934d3dea401aaf6b", - "image": "https://production.listennotes.com/podcasts/all-fantasy-everything-headgum-gdz1T3yokef-hGkLxfsg1To.1400x1400.jpg", - "title": "All Fantasy Everything", - "publisher": "Headgum", - "thumbnail": "https://production.listennotes.com/podcasts/all-fantasy-everything-headgum-OtygIaobpuE-hGkLxfsg1To.300x300.jpg", - "listen_score": 66, - "listennotes_url": "https://www.listennotes.com/c/8038647a5e1c49e2934d3dea401aaf6b/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "81ab79ffad794edab15e5b616d196650", - "image": "https://production.listennotes.com/podcasts/straightiolab-big-money-players-network-and-8XThz1-_0Ov-vnYD5R87bPe.1400x1400.jpg", - "title": "StraightioLab", - "publisher": "Big Money Players Network and iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/straightiolab-big-money-players-network-and-J62I1wf4v9G-vnYD5R87bPe.300x300.jpg", - "listen_score": 55, - "listennotes_url": "https://www.listennotes.com/c/81ab79ffad794edab15e5b616d196650/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "de5f2712de804c9fb6c60db35e64d3c5", - "image": "https://production.listennotes.com/podcasts/do-you-need-a-ride-exactly-right-mpAGMZCfrSW-mRz6LDytGMh.1400x1400.jpg", - "title": "Do You Need A Ride?", - "publisher": "Exactly Right", - "thumbnail": "https://production.listennotes.com/podcasts/do-you-need-a-ride-exactly-right-yIUF-NX9OzH-mRz6LDytGMh.300x300.jpg", - "listen_score": 68, - "listennotes_url": "https://www.listennotes.com/c/de5f2712de804c9fb6c60db35e64d3c5/", - "listen_score_global_rank": "0.05%" - } - ], - "source_url": "https://www.lifehacker.com.au/2023/08/12-comedy-podcasts-as-smart-as-smartless/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"That means if you\u2019re reading this you probably know all about the show, and maybe you\u2019re in the market for something with the same vibes: funny, offbeat, conversational. Here are 12 podcasts that might not be in the top five just yet, but are sure to bring you lots of laughs.\"", - "pub_date_ms": 1691947919171, - "source_domain": "www.lifehacker.com.au", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/12-comedy-podcasts-as-smart-as-smartless-qtAZhrimlBJ/" - }, - { - "id": "2Kogx1clwMW", - "title": "Fifteen Parenting Podcasts That Don\u2019t Preach or Judge", - "total": 15, - "podcasts": [ - { - "id": "61c1e648111e49d685c3c6abab0ef8f3", - "image": "https://production.listennotes.com/podcasts/what-fresh-hell-laughing-in-the-face-of-lSdqxtW7Ebn-750HD-Cd_ZL.1400x1400.jpg", - "title": "What Fresh Hell: Laughing in the Face of Motherhood", - "publisher": "Margaret Ables and Amy Wilson", - "thumbnail": "https://production.listennotes.com/podcasts/what-fresh-hell-laughing-in-the-face-of-V08M5iIoGeu-750HD-Cd_ZL.300x300.jpg", - "listen_score": 55, - "listennotes_url": "https://www.listennotes.com/c/61c1e648111e49d685c3c6abab0ef8f3/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "74ce7a91a84a4bba8899ba5cff5ab922", - "image": "https://production.listennotes.com/podcasts/didnt-i-just-feed-you-stacie-billis-and-p-HWbOAstYJ-OWkDLgpb0di.1400x1400.jpg", - "title": "Didn't I Just Feed You", - "publisher": "Stacie Billis and Meghan Splawn", - "thumbnail": "https://production.listennotes.com/podcasts/didnt-i-just-feed-you-stacie-billis-and-WisuKR-QhO6-OWkDLgpb0di.300x300.jpg", - "listen_score": 52, - "listennotes_url": "https://www.listennotes.com/c/74ce7a91a84a4bba8899ba5cff5ab922/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "0ab0a0438fea428d92f46e775dd7fad1", - "image": "https://production.listennotes.com/podcasts/the-girl-next-door-podcast-kelsey-wharton-HqWXlEgTu07-vDj0c_HfIsa.1400x1400.jpg", - "title": "The Girl Next Door Podcast", - "publisher": "Kelsey Wharton and Erica Ladd", - "thumbnail": "https://production.listennotes.com/podcasts/the-girl-next-door-podcast-kelsey-wharton-ClMmNqkO6t9-vDj0c_HfIsa.300x300.jpg", - "listen_score": 51, - "listennotes_url": "https://www.listennotes.com/c/0ab0a0438fea428d92f46e775dd7fad1/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "39c0ad8b4f2d4e0888fe56312557b35d", - "image": "https://production.listennotes.com/podcasts/best-of-both-worlds-podcast-laura-vanderkam-sEA9dBfSWHx-xXbtjyMOgBA.1400x1400.jpg", - "title": "Best of Both Worlds Podcast", - "publisher": "Laura Vanderkam and Sarah Hart-Unger", - "thumbnail": "https://production.listennotes.com/podcasts/best-of-both-worlds-podcast-laura-vanderkam-aA1rWEs4Oyl-xXbtjyMOgBA.300x300.jpg", - "listen_score": 54, - "listennotes_url": "https://www.listennotes.com/c/39c0ad8b4f2d4e0888fe56312557b35d/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "0316b11c9ddd4f19be98c6e12b3df0bb", - "image": "https://production.listennotes.com/podcasts/motherhood-in-black-white-kaanji-and-tara-ywaXrDPb3uE-4UdLF0tgGJK.1400x1400.jpg", - "title": "Motherhood in Black & White ", - "publisher": "Kaanji and Tara", - "thumbnail": "https://production.listennotes.com/podcasts/motherhood-in-black-white-kaanji-and-tara-VO0IwpGkhsF-4UdLF0tgGJK.300x300.jpg", - "listen_score": 41, - "listennotes_url": "https://www.listennotes.com/c/0316b11c9ddd4f19be98c6e12b3df0bb/", - "listen_score_global_rank": "1.5%" - } - ], - "source_url": "https://www.independent.com/2023/08/07/fifteen-parenting-podcasts-that-dont-preach-or-judge/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Today, there are so many options to choose from. There\u2019s no one right way to be a great parent, and the perfect podcast for you is one that reminds you of that. Here are 15 shows that don\u2019t preach or judge, and that just might make your next sleepless night a little less lonely.\"", - "pub_date_ms": 1691948111370, - "source_domain": "www.independent.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/fifteen-parenting-podcasts-that-dont-2Kogx1clwMW/" - }, - { - "id": "gYLOfRvVq_3", - "title": "Best Podcasts Hosted by Famous Actors", - "total": 10, - "podcasts": [ - { - "id": "9663cd4f309c4bf99e56c5cc63246a5c", - "image": "https://production.listennotes.com/podcasts/the-lohdown-with-lindsay-lohan-6q4UbBNM31L-J6obqeyhH8F.1400x1400.jpg", - "title": "The Lohdown with Lindsay Lohan", - "publisher": "Lindsay Lohan & Studio71", - "thumbnail": "https://production.listennotes.com/podcasts/the-lohdown-with-lindsay-lohan-AvKgj75wiZU-J6obqeyhH8F.300x300.jpg", - "listen_score": 45, - "listennotes_url": "https://www.listennotes.com/c/9663cd4f309c4bf99e56c5cc63246a5c/", - "listen_score_global_rank": "1%" - }, - { - "id": "fe60eeeb10394a41b1b0fbdb21a5a9a4", - "image": "https://production.listennotes.com/podcasts/smartless-jason-bateman-sean-hayes-will-u23xwCAJ4Np-uMrHzgVoN8O.1400x1400.jpg", - "title": "SmartLess", - "publisher": "Jason Bateman, Sean Hayes, Will Arnett", - "thumbnail": "https://production.listennotes.com/podcasts/smartless-jason-bateman-sean-hayes-will-AvK9UqtwCkD-uMrHzgVoN8O.300x300.jpg", - "listen_score": 83, - "listennotes_url": "https://www.listennotes.com/c/fe60eeeb10394a41b1b0fbdb21a5a9a4/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "fda58aa1372d4aa59a7597c152cb08e0", - "image": "https://production.listennotes.com/podcasts/the-left-ear-dakota-johnson-spoke-media-Z6q5AmC7fwU--gF07RcBQMs.1400x1400.jpg", - "title": "The Left Ear", - "publisher": "Dakota Johnson & Spoke Media", - "thumbnail": "https://production.listennotes.com/podcasts/the-left-ear-dakota-johnson-spoke-media-FXzVfnNWwut--gF07RcBQMs.300x300.jpg", - "listen_score": 51, - "listennotes_url": "https://www.listennotes.com/c/fda58aa1372d4aa59a7597c152cb08e0/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "042aa7bd3c7f4226914a9fa6c891d2ef", - "image": "https://production.listennotes.com/podcasts/bunny-ears-studio71-Qa0KBJM9vkr-UDVywxA76uv.1400x1400.jpg", - "title": "Bunny Ears", - "publisher": "Studio71", - "thumbnail": "https://production.listennotes.com/podcasts/bunny-ears-studio71-tn1z9EPTj4L-UDVywxA76uv.300x300.jpg", - "listen_score": 59, - "listennotes_url": "https://www.listennotes.com/c/042aa7bd3c7f4226914a9fa6c891d2ef/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "db3736c71b5a41b9a3798359e79a7def", - "image": "https://production.listennotes.com/podcasts/oprahs-super-soul-oprah-Lh7Z-faYkzI-Gv-_hNgTmac.1400x1400.jpg", - "title": "Oprah's Super Soul", - "publisher": "Oprah", - "thumbnail": "https://production.listennotes.com/podcasts/oprahs-super-soul-oprah-x6t_GSzc7mN-Gv-_hNgTmac.300x300.jpg", - "listen_score": 83, - "listennotes_url": "https://www.listennotes.com/c/db3736c71b5a41b9a3798359e79a7def/", - "listen_score_global_rank": "0.01%" - } - ], - "source_url": "https://movieweb.com/podcast-actors-host/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Especially after COVID struck, many A-listers have turned to audio platforms like podcasts as a new way of reaching their fans. Here's a closer look.\"", - "pub_date_ms": 1691948260146, - "source_domain": "movieweb.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-podcasts-hosted-by-famous-actors-gYLOfRvVq_3/" - }, - { - "id": "cVS5C1t4dRL", - "title": "Best Podcasts For Your Mental Health", - "total": 6, - "podcasts": [ - { - "id": "10a012ebebe6453199c6e46174ad29c6", - "image": "https://production.listennotes.com/podcasts/the-friend-zone-loud-speakers-network-oZWlKkcUn9w-krsBLThdIgJ.1400x1400.jpg", - "title": "The Friend Zone", - "publisher": "Loud Speakers Network", - "thumbnail": "https://production.listennotes.com/podcasts/the-friend-zone-loud-speakers-network-K8coa2wPjh9-krsBLThdIgJ.300x300.jpg", - "listen_score": 68, - "listennotes_url": "https://www.listennotes.com/c/10a012ebebe6453199c6e46174ad29c6/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "1701e6bab88b4f21b3ebb885bf1a020b", - "image": "https://production.listennotes.com/podcasts/black-girls-heal-shena-lashey-FMJvDUqmd8G-TQZ6UispOLI.1400x1400.jpg", - "title": "Black Girls Heal", - "publisher": "Shena Lashey", - "thumbnail": "https://production.listennotes.com/podcasts/black-girls-heal-shena-lashey-MFWgAcr-6mL-TQZ6UispOLI.300x300.jpg", - "listen_score": 59, - "listennotes_url": "https://www.listennotes.com/c/1701e6bab88b4f21b3ebb885bf1a020b/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "adb2026fb84746719c4ed3103b5b7793", - "image": "https://production.listennotes.com/podcasts/lets-talk-bruh-lets-talk-bruh-podcast-XdTwgfLsnz7-D2yleFK1TNx.1400x1400.jpg", - "title": "Let's Talk Bruh", - "publisher": "Let's Talk Bruh Podcast", - "thumbnail": "https://production.listennotes.com/podcasts/lets-talk-bruh-lets-talk-bruh-podcast-5MX8wA2fxKc-D2yleFK1TNx.300x300.jpg", - "listen_score": 47, - "listennotes_url": "https://www.listennotes.com/c/adb2026fb84746719c4ed3103b5b7793/", - "listen_score_global_rank": "1%" - }, - { - "id": "6d01c4e63c5349099ea5c6e617c646e6", - "image": "https://production.listennotes.com/podcasts/therapy-for-black-girls-iheartpodcasts-and-oMShBw6KgJj-Jw_CUaBj1GI.1400x1400.jpg", - "title": "Therapy for Black Girls", - "publisher": "iHeartPodcasts and Joy Harden Bradford, Ph.D.", - "thumbnail": "https://production.listennotes.com/podcasts/therapy-for-black-girls-iheartpodcasts-and-y-NG0kfoReq-Jw_CUaBj1GI.300x300.jpg", - "listen_score": 70, - "listennotes_url": "https://www.listennotes.com/c/6d01c4e63c5349099ea5c6e617c646e6/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "df42896b0081410bbaeaa436253e882f", - "image": "https://production.listennotes.com/podcasts/the-faith-mental-wellness-podcast-with-15MKmVgTGfj-CiqFAa4h59f.1400x1400.jpg", - "title": "The Faith & Mental Wellness Podcast with Brittney Moses", - "publisher": "Brittney Moses", - "thumbnail": "https://production.listennotes.com/podcasts/the-faith-mental-wellness-podcast-with-asnqBwQuE7L-CiqFAa4h59f.300x300.jpg", - "listen_score": 42, - "listennotes_url": "https://www.listennotes.com/c/df42896b0081410bbaeaa436253e882f/", - "listen_score_global_rank": "1.5%" - } - ], - "source_url": "https://blackdoctor.org/best-podcasts-for-your-mental-health/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Even if you just like to hear relatable stories from people who are like you, there\u2019s a podcast for you. Here are some of the top podcasts of 2023 that are guaranteed to boost your mental health.\"", - "pub_date_ms": 1691948349634, - "source_domain": "blackdoctor.org", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-podcasts-for-your-mental-health-cVS5C1t4dRL/" - }, - { - "id": "EpnqoMGdyVc", - "title": "The Best and Most Replay-Worthy Podcasts for Women by Women", - "total": 12, - "podcasts": [ - { - "id": "150b9bda9a3a4025b84a44249916423b", - "image": "https://production.listennotes.com/podcasts/the-cutting-room-floor-omondi-ha9sTwEF5gn-axoV1UvAeFz.1400x1400.jpg", - "title": "The Cutting Room Floor", - "publisher": "OMONDI", - "thumbnail": "https://production.listennotes.com/podcasts/the-cutting-room-floor-omondi-75Zv0py1NeP-axoV1UvAeFz.300x300.jpg", - "listen_score": 49, - "listennotes_url": "https://www.listennotes.com/c/150b9bda9a3a4025b84a44249916423b/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "e3ed6bd88fa9464c823319024baa946c", - "image": "https://production.listennotes.com/podcasts/female-founder-world-female-founder-world-9-YqZVLH7is-GlDITBfJdrY.1400x1400.jpg", - "title": "Female Founder World", - "publisher": "Female Founder World", - "thumbnail": "https://production.listennotes.com/podcasts/female-founder-world-female-founder-world-h-RUPT3IBEX-GlDITBfJdrY.300x300.jpg", - "listen_score": 41, - "listennotes_url": "https://www.listennotes.com/c/e3ed6bd88fa9464c823319024baa946c/", - "listen_score_global_rank": "1.5%" - }, - { - "id": "30695bfb270e475ca066a0bb0af31c3a", - "image": "https://production.listennotes.com/podcasts/where-should-we-begin-with-esther-perel-kLqFyjNT1PH-_qXi51hfacb.1400x1400.jpg", - "title": "Where Should We Begin? with Esther Perel", - "publisher": "Esther Perel Global Media", - "thumbnail": "https://production.listennotes.com/podcasts/where-should-we-begin-with-esther-perel-EnZi41x-P2_-_qXi51hfacb.300x300.jpg", - "listen_score": 78, - "listennotes_url": "https://www.listennotes.com/c/30695bfb270e475ca066a0bb0af31c3a/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "5eeb8130da324b71802d2f94814262f9", - "image": "https://production.listennotes.com/podcasts/its-a-lot-with-abbie-chatfield-listnr--NfMEPpHxbJ-OIlswEpiB1R.1400x1400.jpg", - "title": "It's A Lot with Abbie Chatfield", - "publisher": "LiSTNR", - "thumbnail": "https://production.listennotes.com/podcasts/its-a-lot-with-abbie-chatfield-listnr-nyWfkFHg_Qj-OIlswEpiB1R.300x300.jpg", - "listen_score": 61, - "listennotes_url": "https://www.listennotes.com/c/5eeb8130da324b71802d2f94814262f9/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "9fc0aaa255704368a98c7b99056c9942", - "image": "https://production.listennotes.com/podcasts/fat-mascara-jennifer-sullivan-jessica-matlin-ys58F9O_KJD-tmMdf5wFklo.1400x1400.jpg", - "title": "Fat Mascara", - "publisher": "Jennifer Sullivan & Jessica Matlin", - "thumbnail": "https://production.listennotes.com/podcasts/fat-mascara-jennifer-sullivan-jessica-matlin-0Igut9xrRMN-tmMdf5wFklo.300x300.jpg", - "listen_score": 61, - "listennotes_url": "https://www.listennotes.com/c/9fc0aaa255704368a98c7b99056c9942/", - "listen_score_global_rank": "0.1%" - } - ], - "source_url": "https://www.ellecanada.com/culture/society/podcasts-for-women?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Here are some brilliant, clever, eye-opening, life-improving podcasts made by women for women.\"", - "pub_date_ms": 1691796273101, - "source_domain": "www.ellecanada.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/the-best-and-most-replay-worthy-EpnqoMGdyVc/" - }, - { - "id": "P1Sy_L5VjIC", - "title": "The best comedy podcasts for light relief listening", - "total": 10, - "podcasts": [ - { - "id": "d32e07048d134d4fb8e81204df6f1c64", - "image": "https://production.listennotes.com/podcasts/off-menu-with-ed-gamble-and-james-acaster-QiHRzslYXTy-Cs9v-FhUS7l.1400x1400.jpg", - "title": "Off Menu with Ed Gamble and James Acaster", - "publisher": "Plosive", - "thumbnail": "https://production.listennotes.com/podcasts/off-menu-with-ed-gamble-and-james-acaster-ls5W87SVI6i-Cs9v-FhUS7l.300x300.jpg", - "listen_score": 77, - "listennotes_url": "https://www.listennotes.com/c/d32e07048d134d4fb8e81204df6f1c64/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "e18c9662eb7f451b9298a726c531af9c", - "image": "https://production.listennotes.com/podcasts/my-dad-wrote-a-porno-my-dad-wrote-a-porno-Msi1SfwL3RZ-2qLhKps0IM8.1400x1400.jpg", - "title": "My Dad Wrote A Porno", - "publisher": "My Dad Wrote A Porno", - "thumbnail": "https://production.listennotes.com/podcasts/my-dad-wrote-a-porno-my-dad-wrote-a-porno-SInP1dKuo6b-2qLhKps0IM8.300x300.jpg", - "listen_score": 83, - "listennotes_url": "https://www.listennotes.com/c/e18c9662eb7f451b9298a726c531af9c/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "be6b21ba8c1a49d1973df83a122699a6", - "image": "https://production.listennotes.com/podcasts/how-did-this-get-made-earwolf-and-paul-JUagowIb7FC-Gdzh1-KwH27.1400x1400.jpg", - "title": "How Did This Get Made?", - "publisher": "Earwolf and Paul Scheer, June Diane Raphael, Jason Mantzoukas", - "thumbnail": "https://production.listennotes.com/podcasts/how-did-this-get-made-earwolf-and-paul-NfjF8mHCh3n-Gdzh1-KwH27.300x300.jpg", - "listen_score": 81, - "listennotes_url": "https://www.listennotes.com/c/be6b21ba8c1a49d1973df83a122699a6/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "318c0919e1d44a409c8d7e6df3879585", - "image": "https://production.listennotes.com/podcasts/beach-too-sandy-water-too-wet-forever-dog-6IFTGu9l0xj-eXcHhl2EMAF.1400x1400.jpg", - "title": "Beach Too Sandy, Water Too Wet", - "publisher": "Forever Dog", - "thumbnail": "https://production.listennotes.com/podcasts/beach-too-sandy-water-too-wet-forever-dog-MziK3NWYaTe-eXcHhl2EMAF.300x300.jpg", - "listen_score": 68, - "listennotes_url": "https://www.listennotes.com/c/318c0919e1d44a409c8d7e6df3879585/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "08f1a9ff5d254044b5c1fa685aa7d428", - "image": "https://production.listennotes.com/podcasts/queers-gone-by-caitlin-powell-and-kate-butch-tUyg_hiY1XQ-zshDxnYb-J1.1400x1400.jpg", - "title": "Queers Gone By", - "publisher": "Caitlin Powell and Kate Butch", - "thumbnail": "https://production.listennotes.com/podcasts/queers-gone-by-caitlin-powell-and-kate-butch-2-kdTYPoFB6-zshDxnYb-J1.300x300.jpg", - "listen_score": 40, - "listennotes_url": "https://www.listennotes.com/c/08f1a9ff5d254044b5c1fa685aa7d428/", - "listen_score_global_rank": "1.5%" - } - ], - "source_url": "https://www.gq-magazine.co.uk/article/best-comedy-podcasts?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"So, to get you started, or just to add to your collection, here\u2019s 10 of the best comedy podcasts.\"", - "pub_date_ms": 1691796119000, - "source_domain": "www.gq-magazine.co.uk", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/the-best-comedy-podcasts-for-light-P1Sy_L5VjIC/" - }, - { - "id": "xPBOmvU0up_", - "title": "14 podcasts to teach kids about history, identity, and current events", - "total": 14, - "podcasts": [ - { - "id": "01059f5766134c94b46de87d7b644025", - "image": "https://production.listennotes.com/podcasts/flyest-fables-morgan-givens-esEJ4yZdM9g.1400x1396.jpg", - "title": "Flyest Fables", - "publisher": "Morgan Givens", - "thumbnail": "https://production.listennotes.com/podcasts/flyest-fables-morgan-givens-esEJ4yZdM9g.300x299.jpg", - "listen_score": 50, - "listennotes_url": "https://www.listennotes.com/c/01059f5766134c94b46de87d7b644025/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "14099bacce894db19f10ff1f1f51d848", - "image": "https://production.listennotes.com/podcasts/so-get-me-the-alphabet-rockers-podcast-for-vFGlY2AzBZs-sJroNCcWItd.1400x1400.jpg", - "title": "So Get Me: the Alphabet Rockers\u2019 podcast for families making change!", - "publisher": "Alphabet Rockers", - "thumbnail": "https://production.listennotes.com/podcasts/so-get-me-the-alphabet-rockers-podcast-for-wH_A42FEbhr-sJroNCcWItd.300x300.jpg", - "listen_score": 36, - "listennotes_url": "https://www.listennotes.com/c/14099bacce894db19f10ff1f1f51d848/", - "listen_score_global_rank": "2.5%" - }, - { - "id": "7aa7f0b533884f76a435600ff5b3935c", - "image": "https://production.listennotes.com/podcasts/kidnuz-news-for-kids-starglow-media-uCixvUeDayo-kNo8xgZuGqj.1400x1400.jpg", - "title": "KidNuz: News for Kids", - "publisher": "Starglow Media", - "thumbnail": "https://production.listennotes.com/podcasts/kidnuz-news-for-kids-starglow-media-B_DaNHQpxuY-kNo8xgZuGqj.300x300.jpg", - "listen_score": 60, - "listennotes_url": "https://www.listennotes.com/c/7aa7f0b533884f76a435600ff5b3935c/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "6a8d9581f3b444bf94c72284870672fd", - "image": "https://production.listennotes.com/podcasts/the-past-and-the-curious-a-history-podcast-i0EtMcI6uve-cRYL3imxkfu.1400x1400.jpg", - "title": "The Past and The Curious: A History Podcast for Kids and Families", - "publisher": "Mick Sullivan", - "thumbnail": "https://production.listennotes.com/podcasts/the-past-and-the-curious-a-history-podcast-PoF5LuyRbtq-cRYL3imxkfu.300x300.jpg", - "listen_score": 64, - "listennotes_url": "https://www.listennotes.com/c/6a8d9581f3b444bf94c72284870672fd/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "50f9d56f477847daaff2ab3ac1d841d4", - "image": "https://production.listennotes.com/podcasts/but-why-a-podcast-for-curious-kids-vermont-XbnZvGABNdL-Sp2Zcqdj1n8.1400x1400.jpg", - "title": "But Why: A Podcast for Curious Kids", - "publisher": "Vermont Public", - "thumbnail": "https://production.listennotes.com/podcasts/but-why-a-podcast-for-curious-kids-vermont-GyXW-pNgLut-Sp2Zcqdj1n8.300x300.jpg", - "listen_score": 69, - "listennotes_url": "https://www.listennotes.com/c/50f9d56f477847daaff2ab3ac1d841d4/", - "listen_score_global_rank": "0.05%" - } - ], - "source_url": "https://mashable.com/article/educational-podcasts-children-back-to-school?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Mashable spoke with Elgersma and scoured Common Sense Media's review guides to get the top recommendations for child-friendly and thought-provoking podcasts that cover a range of topics from history to politics to identity.\"", - "pub_date_ms": 1691795673275, - "source_domain": "mashable.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/14-podcasts-to-teach-kids-about-xPBOmvU0up_/" - }, - { - "id": "5w1e_Tm8VW6", - "title": "Best podcasts of the week: Gary Lineker and friends team up for a new football show", - "total": 10, - "podcasts": [ - { - "id": "66b182559a35499db1f7d70a43855b84", - "image": "https://production.listennotes.com/podcasts/dear-alana-tenderfoot-tv-iheartpodcasts-02tiR6vdxqy-TMfjwrVzFg0.1400x1400.jpg", - "title": "Dear Alana,", - "publisher": "Tenderfoot TV & iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/dear-alana-tenderfoot-tv-iheartpodcasts-ZgOBQknS6lj-TMfjwrVzFg0.300x300.jpg", - "listen_score": 53, - "listennotes_url": "https://www.listennotes.com/c/66b182559a35499db1f7d70a43855b84/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "4c0bce6ed7a14cd99f9f78a05976b6d9", - "image": "https://production.listennotes.com/podcasts/tiny-huge-decisions-t05BXjS7l8I-_Xhsz4NecxC.1400x1400.jpg", - "title": "Tiny Huge Decisions", - "publisher": "America Public Media", - "thumbnail": "https://production.listennotes.com/podcasts/tiny-huge-decisions-qrdIbEstVgv-_Xhsz4NecxC.300x300.jpg", - "listen_score": 30, - "listennotes_url": "https://www.listennotes.com/c/4c0bce6ed7a14cd99f9f78a05976b6d9/", - "listen_score_global_rank": "5%" - }, - { - "id": "0fde021b31ab427795edc482f82ed151", - "image": "https://production.listennotes.com/podcasts/speidis-16th-minute-oqfuOCW3gzX-Oy12dC7n6uh.1400x1400.jpg", - "title": "Speidi's 16th Minute", - "publisher": "The Ringer", - "thumbnail": "https://production.listennotes.com/podcasts/speidis-16th-minute-kd043cbmwAH-Oy12dC7n6uh.300x300.jpg", - "listen_score": 46, - "listennotes_url": "https://www.listennotes.com/c/0fde021b31ab427795edc482f82ed151/", - "listen_score_global_rank": "1%" - }, - { - "id": "0e58d93e69e84e5083040e5ec0675bff", - "image": "https://production.listennotes.com/podcasts/over-my-dead-body-wondery-ZYgWXc_ITl5-ca54oTHGPx-.1400x1400.jpg", - "title": "Over My Dead Body", - "publisher": "Wondery", - "thumbnail": "https://production.listennotes.com/podcasts/over-my-dead-body-wondery-R1opfxn4MAC-ca54oTHGPx-.300x300.jpg", - "listen_score": 79, - "listennotes_url": "https://www.listennotes.com/c/0e58d93e69e84e5083040e5ec0675bff/", - "listen_score_global_rank": "0.01%" - }, - { - "id": "9f7ae1afc32c4db18e27de9cd97648ed", - "image": "https://production.listennotes.com/podcasts/the-rest-is-football-goalhanger-podcasts-1svEbzL39PJ-LDpj85uEyoO.1400x1400.jpg", - "title": "The Rest Is Football", - "publisher": "Goalhanger Podcasts", - "thumbnail": "https://production.listennotes.com/podcasts/the-rest-is-football-goalhanger-podcasts-zarNL8vKuZh-LDpj85uEyoO.300x300.jpg", - "listen_score": 52, - "listennotes_url": "https://www.listennotes.com/c/9f7ae1afc32c4db18e27de9cd97648ed/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.theguardian.com/tv-and-radio/2023/aug/10/hear-here-gary-lineker-alan-shearer-micah-richards-the-rest-is-football?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"In this week\u2019s newsletter: The Match of the Day presenter joins Alan Shearer and Micah Richards for The Rest Is Football, just in time for the new season. Plus: five of the best summer podcasts.\"", - "pub_date_ms": 1691795235735, - "source_domain": "www.theguardian.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-podcasts-of-the-week-gary-lineker-5w1e_Tm8VW6/" - }, - { - "id": "krzscifRDqu", - "title": "12 Comedy Podcasts As Smart as SmartLess", - "total": 12, - "podcasts": [ - { - "id": "fa07bed1958840ca89c4c7d2536ab701", - "image": "https://production.listennotes.com/podcasts/family-trips-with-the-meyers-brothers-p2Kxr1EiX6--2j4-Oyeu0TK.1400x1400.jpg", - "title": "Family Trips with the Meyers Brothers", - "publisher": "Seth Meyers and Josh Meyers", - "thumbnail": "https://production.listennotes.com/podcasts/family-trips-with-the-meyers-brothers-eCzgUAX_vYK-2j4-Oyeu0TK.300x300.jpg", - "listen_score": 52, - "listennotes_url": "https://www.listennotes.com/c/fa07bed1958840ca89c4c7d2536ab701/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "170ba77c435a4faeaf41f93a1ffa1971", - "image": "https://production.listennotes.com/podcasts/baby-this-is-keke-palmer-j6kNzpt41qi-u2MSNy3hXxK.1400x1400.jpg", - "title": "Baby, This is Keke Palmer", - "publisher": "Wondery", - "thumbnail": "https://production.listennotes.com/podcasts/baby-this-is-keke-palmer-PyijXYsgFEQ-u2MSNy3hXxK.300x300.jpg", - "listen_score": 51, - "listennotes_url": "https://www.listennotes.com/c/170ba77c435a4faeaf41f93a1ffa1971/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "8038647a5e1c49e2934d3dea401aaf6b", - "image": "https://production.listennotes.com/podcasts/all-fantasy-everything-headgum-gdz1T3yokef-hGkLxfsg1To.1400x1400.jpg", - "title": "All Fantasy Everything", - "publisher": "Headgum", - "thumbnail": "https://production.listennotes.com/podcasts/all-fantasy-everything-headgum-OtygIaobpuE-hGkLxfsg1To.300x300.jpg", - "listen_score": 66, - "listennotes_url": "https://www.listennotes.com/c/8038647a5e1c49e2934d3dea401aaf6b/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "81ab79ffad794edab15e5b616d196650", - "image": "https://production.listennotes.com/podcasts/straightiolab-big-money-players-network-and-8XThz1-_0Ov-vnYD5R87bPe.1400x1400.jpg", - "title": "StraightioLab", - "publisher": "Big Money Players Network and iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/straightiolab-big-money-players-network-and-J62I1wf4v9G-vnYD5R87bPe.300x300.jpg", - "listen_score": 55, - "listennotes_url": "https://www.listennotes.com/c/81ab79ffad794edab15e5b616d196650/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "de5f2712de804c9fb6c60db35e64d3c5", - "image": "https://production.listennotes.com/podcasts/do-you-need-a-ride-exactly-right-mpAGMZCfrSW-mRz6LDytGMh.1400x1400.jpg", - "title": "Do You Need A Ride?", - "publisher": "Exactly Right", - "thumbnail": "https://production.listennotes.com/podcasts/do-you-need-a-ride-exactly-right-yIUF-NX9OzH-mRz6LDytGMh.300x300.jpg", - "listen_score": 68, - "listennotes_url": "https://www.listennotes.com/c/de5f2712de804c9fb6c60db35e64d3c5/", - "listen_score_global_rank": "0.05%" - } - ], - "source_url": "https://lifehacker.com/best-funny-conversation-podcasts-like-smartless-1850722663?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"That means if you\u2019re reading this you probably know all about the show, and maybe you\u2019re in the market for something with the same vibes: funny, offbeat, conversational. Here are 12 podcasts that might not be in the top five just yet, but are sure to bring you lots of laughs.\"", - "pub_date_ms": 1691795056963, - "source_domain": "lifehacker.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/12-comedy-podcasts-as-smart-as-smartless-krzscifRDqu/" - }, - { - "id": "eZzoBAE1HCr", - "title": "From art history to museum tours: these are 9 of the best podcasts for art lovers", - "total": 9, - "podcasts": [ - { - "id": "d63fd3fad2a941d8be4057bf41211aed", - "image": "https://production.listennotes.com/podcasts/the-banksy-story-bbc-radio-4-ODilU0gAaHk-ub0icr1pZVR.1400x1400.jpg", - "title": "The Banksy Story", - "publisher": "BBC Radio 4", - "thumbnail": "https://production.listennotes.com/podcasts/the-banksy-story-bbc-radio-4-NiRMVosYCEk-ub0icr1pZVR.300x300.jpg", - "listen_score": 36, - "listennotes_url": "https://www.listennotes.com/c/d63fd3fad2a941d8be4057bf41211aed/", - "listen_score_global_rank": "2.5%" - }, - { - "id": "1b2adc7d04644cb3b52a9454c37e36f6", - "image": "https://production.listennotes.com/podcasts/talk-art-russell-tovey-and-robert-diament-u_UVtrEBjeq-AovYj5Z4hqg.1400x1400.jpg", - "title": "Talk Art", - "publisher": "Russell Tovey and Robert Diament", - "thumbnail": "https://production.listennotes.com/podcasts/talk-art-russell-tovey-and-robert-diament-_hRdIX86e5--AovYj5Z4hqg.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/1b2adc7d04644cb3b52a9454c37e36f6/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "4920c16f39fd49479a711ff7b014435b", - "image": "https://production.listennotes.com/podcasts/the-great-women-artists-katy-hessel-e6jTPvwNDCQ-0sGkgXU5P3W.1400x1400.jpg", - "title": "The Great Women Artists", - "publisher": "Katy Hessel", - "thumbnail": "https://production.listennotes.com/podcasts/the-great-women-artists-katy-hessel-poerDJA1Mfh-0sGkgXU5P3W.300x300.jpg", - "listen_score": 56, - "listennotes_url": "https://www.listennotes.com/c/4920c16f39fd49479a711ff7b014435b/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "6c5eee8129cf42658f32eef25a046fe9", - "image": "https://production.listennotes.com/podcasts/meet-me-at-the-museum-art-fund-xvyDIBgHw4i-y2GOHSNtbi5.1400x1400.jpg", - "title": "Meet Me at the Museum", - "publisher": "Art Fund", - "thumbnail": "https://production.listennotes.com/podcasts/meet-me-at-the-museum-art-fund-X9ZeQHNvVd8-y2GOHSNtbi5.300x300.jpg", - "listen_score": 45, - "listennotes_url": "https://www.listennotes.com/c/6c5eee8129cf42658f32eef25a046fe9/", - "listen_score_global_rank": "1%" - }, - { - "id": "dc62e31b4eec4e7596ea2e61e4c268b5", - "image": "https://production.listennotes.com/podcasts/the-lonely-palette-tamar-avishai-RbL6_CTE7ci-S9_PQbKdFkg.1028x1028.jpg", - "title": "The Lonely Palette", - "publisher": "Tamar Avishai", - "thumbnail": "https://production.listennotes.com/podcasts/the-lonely-palette-tamar-avishai-A0h695IMxcL-S9_PQbKdFkg.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/dc62e31b4eec4e7596ea2e61e4c268b5/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.stylist.co.uk/entertainment/podcasts/best-podcasts-art-lovers/810375?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"With shows hosted by artists from across the world and a few famous faces, these nine podcasts are the ideal listening partner for both art lovers and the art curious.\"", - "pub_date_ms": 1691642762886, - "source_domain": "www.stylist.co.uk", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/from-art-history-to-museum-tours-these-eZzoBAE1HCr/" - }, - { - "id": "q4wANu8UVds", - "title": "Best podcasts of the week: LeBron James\u2019s relentless rise from hyped prospect to king of the NBA", - "total": 9, - "podcasts": [ - { - "id": "af1362f74e7c4a5ea5d392df62741580", - "image": "https://production.listennotes.com/podcasts/first-dates-the-podcast-podimo-twenty-twenty-CLOQ1G9qo7D-_HLi4KAb-1c.1400x1400.jpg", - "title": "First Dates: The Podcast", - "publisher": "Podimo & Twenty Twenty", - "thumbnail": "https://production.listennotes.com/podcasts/first-dates-the-podcast-podimo-twenty-twenty-YaNzW1kdcxH-_HLi4KAb-1c.300x300.jpg", - "listen_score": 34, - "listennotes_url": "https://www.listennotes.com/c/af1362f74e7c4a5ea5d392df62741580/", - "listen_score_global_rank": "3%" - }, - { - "id": "16f2d5cb05fe4e4fa934160fd73600d7", - "image": "https://production.listennotes.com/podcasts/ghosted-by-roz-hernandez-exactly-right-UMaYGwvKQRk-gFyP4t3cQJn.1400x1400.jpg", - "title": "Ghosted! by Roz Hernandez", - "publisher": "Exactly Right", - "thumbnail": "https://production.listennotes.com/podcasts/ghosted-by-roz-hernandez-exactly-right-1uIRyW-F_l6-gFyP4t3cQJn.300x300.jpg", - "listen_score": 60, - "listennotes_url": "https://www.listennotes.com/c/16f2d5cb05fe4e4fa934160fd73600d7/", - "listen_score_global_rank": "0.1%" - }, - { - "id": "ef3719d40d194ceb957c5665a0cbd966", - "image": "https://production.listennotes.com/podcasts/the-athletic-nba-show-the-athletic-Jf8w7AjBpCv-yfPt3xGWVKU.1400x1400.jpg", - "title": "The Athletic NBA Show", - "publisher": "The Athletic", - "thumbnail": "https://production.listennotes.com/podcasts/the-athletic-nba-show-the-athletic-BAkVEvFLYK8-yfPt3xGWVKU.300x300.jpg", - "listen_score": 59, - "listennotes_url": "https://www.listennotes.com/c/ef3719d40d194ceb957c5665a0cbd966/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "a9690dea70af49ffbc90cadbc8702703", - "image": "https://production.listennotes.com/podcasts/fiasco-leon-neyfakh-7xFXAydgqt8-hwDeVSLXRcM.1400x1400.jpg", - "title": "Fiasco", - "publisher": "Leon Neyfakh", - "thumbnail": "https://production.listennotes.com/podcasts/fiasco-leon-neyfakh-3xS7Ib8TfRG-hwDeVSLXRcM.300x300.jpg", - "listen_score": 48, - "listennotes_url": "https://www.listennotes.com/c/a9690dea70af49ffbc90cadbc8702703/", - "listen_score_global_rank": "0.5%" - }, - { - "id": "ecac001513b94919bdc68b0b9277cc90", - "image": "https://production.listennotes.com/podcasts/ologies-with-alie-ward-alie-ward-KfHcnoSrNTY-k0n1jbDJigN.1400x1400.jpg", - "title": "Ologies with Alie Ward", - "publisher": "Alie Ward", - "thumbnail": "https://production.listennotes.com/podcasts/ologies-with-alie-ward-alie-ward-hU8wJsrtyDb-k0n1jbDJigN.300x300.jpg", - "listen_score": 80, - "listennotes_url": "https://www.listennotes.com/c/ecac001513b94919bdc68b0b9277cc90/", - "listen_score_global_rank": "0.01%" - } - ], - "source_url": "https://www.theguardian.com/tv-and-radio/2023/jul/27/hear-here-lebron-james-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"In this week\u2019s newsletter: How did the most talked-up teenager of a generation become maybe the greatest of all time? Find out in A King\u2019s Reign.\"", - "pub_date_ms": 1691082099689, - "source_domain": "www.theguardian.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/best-podcasts-of-the-week-lebron-q4wANu8UVds/" - }, - { - "id": "xkZWSFApLCg", - "title": "Edinburgh Festival Fringe 2023: 5 of the best live podcasts to see this August including Clive Anderson", - "total": 4, - "podcasts": [ - { - "id": "2fd47e2b9aab4a6bb1a1d3653f2c2b2d", - "image": "https://production.listennotes.com/podcasts/all-killa-no-filla-kiri-pritchard-mclean-r9BhVp1A0qn-uiaqj30HzrV.1400x1400.jpg", - "title": "All Killa No Filla", - "publisher": "Kiri Pritchard - McLean", - "thumbnail": "https://production.listennotes.com/podcasts/all-killa-no-filla-kiri-pritchard-mclean-2tAaWT9fNis-uiaqj30HzrV.300x300.jpg", - "listen_score": 70, - "listennotes_url": "https://www.listennotes.com/c/2fd47e2b9aab4a6bb1a1d3653f2c2b2d/", - "listen_score_global_rank": "0.05%" - }, - { - "id": "d5a710015002438e95e0f02480d6a0a2", - "image": "https://production.listennotes.com/podcasts/darren-mcgarveys-common-people-hJFPW4l7s5z-5gyiUNGBbOd.1400x1400.jpg", - "title": "Darren McGarvey's Common People", - "publisher": "Darren McGarvey", - "thumbnail": "https://production.listennotes.com/podcasts/darren-mcgarveys-common-people-rIoaBV3xh6F-5gyiUNGBbOd.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/d5a710015002438e95e0f02480d6a0a2/", - "listen_score_global_rank": null - }, - { - "id": "bb1da955b3d14494a97271879fc2ed90", - "image": "https://production.listennotes.com/podcasts/my-seven-wonders-with-clive-anderson-stak-b13tpAu5-RI-civuzk5_Uj0.1400x1400.jpg", - "title": "My Seven Wonders with Clive Anderson", - "publisher": "Stak", - "thumbnail": "https://production.listennotes.com/podcasts/my-seven-wonders-with-clive-anderson-stak-3eY8mtcXk4Z-civuzk5_Uj0.300x300.jpg", - "listen_score": 38, - "listennotes_url": "https://www.listennotes.com/c/bb1da955b3d14494a97271879fc2ed90/", - "listen_score_global_rank": "2%" - }, - { - "id": "34af1fef70014d3ba05f27fe22c364b7", - "image": "https://production.listennotes.com/podcasts/drunk-women-solving-crime-drunk-women-LIiDGbs58uW-ia9Llxu1EFV.1400x1400.jpg", - "title": "Drunk Women Solving Crime", - "publisher": "Drunk Women Solving Crime", - "thumbnail": "https://production.listennotes.com/podcasts/drunk-women-solving-crime-drunk-women-B_kyiWJZwOe-ia9Llxu1EFV.300x300.jpg", - "listen_score": 58, - "listennotes_url": "https://www.listennotes.com/c/34af1fef70014d3ba05f27fe22c364b7/", - "listen_score_global_rank": "0.5%" - } - ], - "source_url": "https://www.scotsman.com/arts-and-culture/edinburgh-festivals/edinburgh-festival-fringe-2023-5-of-the-best-live-podcasts-to-see-this-august-including-clive-anderson-4242369?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "description": "\"Podcast fans will be spoilt for choice at this year\u2019s Edinburgh Festival Fringe, with the chance to see some of their favourites recorded live.\"", - "pub_date_ms": 1691081891753, - "source_domain": "www.scotsman.com", - "listennotes_url": "https://www.listennotes.com/curated-podcasts/edinburgh-festival-fringe-2023-5-of-xkZWSFApLCg/" - } - ], - "next_page_number": 3, - "previous_page_number": 1 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "curated_lists", - "has_next", - "has_previous", - "next_page_number", - "page_number", - "previous_page_number", - "total" - ], - "properties": { - "total": { - "type": "integer", - "example": 25 - }, - "has_next": { - "type": "boolean", - "example": true - }, - "page_number": { - "type": "integer", - "example": 2 - }, - "has_previous": { - "type": "boolean", - "example": true - }, - "curated_lists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "Vb017Sx3l8F", - "description": "Curated list id, which can be used to further fetch detailed curated list metadata via `GET /curated_podcasts/{id}`." - }, - "title": { - "type": "string", - "example": "7 Bookish Podcasts for Avid Readers On the Go", - "description": "Curated list name." - }, - "total": { - "type": "integer", - "example": 25, - "description": "The total number of podcasts in this curated list." - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "description": "Minimum meta data of up to 5 podcasts in this curated list." - }, - "source_url": { - "type": "string", - "example": "https://parade.com/718913/ashley_johnson/7-bookish-podcasts-for-avid-readers-on-the-go/", - "description": "Url of the source of this curated list." - }, - "description": { - "type": "string", - "example": "Commuting to work is always better when you have a great new podcast to listen to, and this year, we have discovered some of our favorite podcasts yet for readers and book-lovers. These podcasts for readers entertain us and provide no shortage of new book recommendations too.", - "description": "This curated list's description." - }, - "pub_date_ms": { - "type": "integer", - "example": 1556843484301, - "description": "Published date of this curated list. In milliseconds." - }, - "source_domain": { - "type": "string", - "example": "parade.com", - "description": "The domain name of the source of this curated list." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/curated-podcasts/7-bookish-podcasts-for-avid-readers-on-H2r-TCWai8K/", - "description": "The url of this curated list on [ListenNotes.com](https://www.ListenNotes.com)." - } - } - } - }, - "next_page_number": { - "type": "integer", - "example": 3 - }, - "previous_page_number": { - "type": "integer", - "example": 1 - } - } -} -``` -
+Fetch a random podcast episode + +`GET /just_listen` +Recently published episodes are more likely to be fetched. Good luck! + +```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); +client.justListen({}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-just_listen) -### Submit a podcast to Listen Notes database +### fetchCuratedPodcastsLists -Function Name: **submitPodcast** +Fetch curated lists of podcasts -Podcast hosting services can use this endpoint to help your users directly submit a new podcast to Listen Notes database. If the podcast doesn't exist in the database, "status" in the response will be "in review", and we'll review it within 12 hours. If the podcast exists, "status" in the response will be "found". If this submission is rejected, "status" in the response will be "rejected". You can use `POST /podcasts` to check if multiple podcasts exist in the database. If you want to get a notification once the podcast is accepted, you can either specify the "email" parameter or configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks +`GET /curated_podcasts` +A bunch of curated lists from online media. For each list, you'll get basic info of up to 5 podcasts. To get detailed meta data of all podcasts in a specific list, you need to use `GET /curated_podcasts/{id}`. We add new curated lists to the database on a daily basis. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +client.fetchCuratedPodcastsLists({ + "page": 2 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -client.submitPodcast({ rss: 'https://feeds.megaphone.fm/committed' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-curated_podcasts) -``` +### fetchRecommendationsForPodcast -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#post-api-v2-podcasts-submit). - - -
- Click to see example response - -```json -{ - "status": "found", - "podcast": { - "id": "85a313213a6647909863f5f4aaffa703", - "image": "https://production.listennotes.com/podcasts/committed-_WuNZkL0v5x-JWSU49X_pnZ.1400x1400.jpg", - "title": "Committed", - "publisher": "iHeartPodcasts", - "thumbnail": "https://production.listennotes.com/podcasts/committed-GF3TtxOvPVb-JWSU49X_pnZ.300x300.jpg", - "listen_score": null, - "listennotes_url": "https://www.listennotes.com/c/85a313213a6647909863f5f4aaffa703/", - "listen_score_global_rank": null - } -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "podcast", - "status" - ], - "properties": { - "status": { - "enum": [ - "found", - "in review", - "rejected" - ], - "type": "string", - "example": "found", - "description": "The status of this submission." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - } - } -} -``` -
+Fetch recommendations for a podcast +`GET /podcasts/{id}/recommendations` +Fetch up to 8 podcast recommendations based on the given podcast id. +```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.fetchRecommendationsForPodcast({ + "id": "25212ac3c53240a880dd5032e547047b", + "safe_mode": 0 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -### Request to delete a podcast +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id-recommendations) -Function Name: **deletePodcast** +### fetchRecommendationsForEpisode -Podcast hosting services can use this endpoint to streamline the process of podcast deletion on behave of their users (podcasters). We will review the deletion request within 12 hours. If the podcast is already deleted, the "status" field in the response will be "deleted". Otherwise, the status field will be "in review". If you want to get a notification once the podcast is deleted, you can configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks +Fetch recommendations for an episode +`GET /episodes/{id}/recommendations` -Example: -```javascript +Fetch up to 8 episode recommendations based on the given episode id. +```javascript const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.fetchRecommendationsForEpisode({ + "id": "254444fa6cf64a43a95292a70eb6869b", + "safe_mode": 0 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-episodes-id-recommendations) -client.deletePodcast({ id: '4d3fe717742d4963a85562e9f84d8c79' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +### submitPodcast -``` +Submit a podcast to Listen Notes database -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#delete-api-v2-podcasts-id). - - -
- Click to see example response - -```json -{ - "status": "in review" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "status" - ], - "properties": { - "status": { - "enum": [ - "deleted", - "in review" - ], - "type": "string", - "example": "deleted", - "description": "The status of this podcast deletion request." - } - } -} -``` -
+`POST /podcasts/submit` +Podcast hosting services can use this endpoint to help your users directly submit a new podcast to Listen Notes database. If the podcast doesn't exist in the database, "status" in the response will be "in review", and we'll review it within 12 hours. If the podcast exists, "status" in the response will be "found". If this submission is rejected, "status" in the response will be "rejected". You can use `POST /podcasts` to check if multiple podcasts exist in the database. If you want to get a notification once the podcast is accepted, you can either specify the "email" parameter or configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks +```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.submitPodcast({ + "rss": "https://feeds.megaphone.fm/committed", + "email": "hello@example.com" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` +[Full API documentation](https://www.listennotes.com/api/docs/#post-api-v2-podcasts-submit) -### Fetch a playlist's info and items (i.e., episodes or podcasts). +### fetchPlaylistById -Function Name: **fetchPlaylistById** +Fetch a playlist's info and items (i.e., episodes or podcasts). -A playlist can be an episode list (i.e., all items are episodes) or a podcast list (i.e., all items are podcasts), -which is essentially the same as those created via listennotes.com/listen/. -This endpoint fetches a list of items (i.e., episodes or podcasts) in the playlist. +`GET /playlists/{id}` + +A playlist can contain both episodes and podcasts, shown in separate views, +just like playlists created via listennotes.com/listen/. +This endpoint fetches items from the saved default view unless **type** is specified. +The response type and listennotes_url describe the selected view. You can use the **last_pub_date_ms** parameter to do pagination and fetch more items. A playlist can be **public** (discoverable on ListenNotes.com), **unlisted** (accessible to anyone who knows the playlist id), -or **private** (accessible to its owner). -You can fetch all playlists created by you, and **public** / **unlisted** playlists created by others. - +or **private** (accessible when the API admin has active playlist membership). +Public and unlisted playlists can also be fetched by ID regardless of their owner. -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); client.fetchPlaylistById({ - id: 'm1pe7z60bsw', type: 'episode_list', sort: 'recent_published_first', -}).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - -``` - -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-playlists-id). - - -
- Click to see example response - -```json -{ "id": "m1pe7z60bsw", - "name": "Podcasts about podcasting", "type": "episode_list", - "image": "https://production.listennotes.com/podcast-playlists/podcasts-about-podcasting-4bU7MZIlEVO-m1pe7z60bsw.1600x1600.jpg", - "items": [ - { - "id": 846112, - "data": { - "id": "f4d0feb5bed64c8fac67306e7ed6c6e3", - "link": "https://podcasters.spotify.com/pod/show/thisweekinstartups/episodes/Revolutionizing-podcasting--standards-vs--innovation-with-Anchor-Co-Founder-Mike-Mignano--E1520-e1lqm2g?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/f4d0feb5bed64c8fac67306e7ed6c6e3/", - "image": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-d9kz8SVeAwn-EKckR36zrnA.1400x1400.jpg", - "title": "Revolutionizing podcasting + standards vs. innovation with Anchor Co-Founder Mike Mignano | E1520", - "podcast": { - "id": "9a62e2581908415185dee35d2d19f9b5", - "image": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-d9kz8SVeAwn-EKckR36zrnA.1400x1400.jpg", - "title": "This Week in Startups", - "publisher": "Jason Calacanis", - "thumbnail": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-LZCcPIajWVQ-EKckR36zrnA.300x300.jpg", - "listen_score": 64, - "listennotes_url": "https://www.listennotes.com/c/9a62e2581908415185dee35d2d19f9b5/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-LZCcPIajWVQ-EKckR36zrnA.300x300.jpg", - "description": "

Today's show is a CLASSIC TWiST founder interview. Anchor Co-Founder Mike Mignano joins to tell Anchor's founding story (1:40), break down what it's like getting acquired by Spotify (15:32), and talk about how RSS standards might be stunting innovation in the podcasting space. (33:17)

\n


\n

0:00 Jason intros today's guest: Anchor Co-Founder Mike Mignano

\n

1:40 Mike explains why he started Anchor, the original inspiration and first versions, finding PMF, building the nuts and bolts of a great podcast publishing experience

\n

14:23 Helpware - Go to https://helpware.com/TWIST to get $1000 off your first invoice

\n

15:32 Why Anchor sold to Spotify, the Series B term sheet they were considering at the time of acquisition, getting courted by Spotify CEO Daniel Ek, Anchor's first check story

\n

24:44 LinkedIn Jobs - Post your first job for free at https://linkedin.com/twist

\n

25:58 Why Apple hasn't innovated in podcasting, paid podcasts vs. advertising

\n

31:59 Babbel - Save up to 60% off your language learning subscription at https://babbel.com/twist 

\n

33:17 Why Mike wrote his recent article: \u201cThe Standards Innovation Paradox\u201d, evolving standards to increase innovation, the Substack example

\n


\n

Read Mike's article:

\n

https://mignano.medium.com/the-standards-innovation-paradox-e14cab521391

", - "pub_date_ms": 1659036538192, - "guid_from_rss": "44bc2eb9-2f3a-415e-9f7e-e8e4e16b30c8", - "listennotes_url": "https://www.listennotes.com/e/f4d0feb5bed64c8fac67306e7ed6c6e3/", - "audio_length_sec": 3220, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/f4d0feb5bed64c8fac67306e7ed6c6e3/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1659049802678 - }, - { - "id": 830890, - "data": { - "id": "b6965b7bcdab4df1b108a93309cedfc6", - "link": "https://podcasters.spotify.com/pod/show/anthony-pompliano3/episodes/1014-Oscar-Merry-On-Pioneering-Listen-To-Earn-With-Bitcoin-e1nag1l?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/b6965b7bcdab4df1b108a93309cedfc6/", - "image": "https://production.listennotes.com/podcasts/the-pomp-podcast/1014-oscar-merry-on-0_Nv4FrTdO5-s5SUXWPM2IZ.1400x1400.jpg", - "title": "#1014 Oscar Merry On Pioneering Listen To Earn With Bitcoin", - "podcast": { - "id": "537c372ad9c7470cb2be897a14a7c7f9", - "image": "https://production.listennotes.com/podcasts/the-pomp-podcast-anthony-pompliano-HcF7NfuJCGE-f1na5MVD_Qz.1400x1400.jpg", - "title": "The Pomp Podcast", - "publisher": "Anthony Pompliano", - "thumbnail": "https://production.listennotes.com/podcasts/the-pomp-podcast-anthony-pompliano-Fe1dRA7_gUW-f1na5MVD_Qz.300x300.jpg", - "listen_score": 64, - "listennotes_url": "https://www.listennotes.com/c/537c372ad9c7470cb2be897a14a7c7f9/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-pomp-podcast/1014-oscar-merry-on-W-qrn7XULpm-s5SUXWPM2IZ.300x300.jpg", - "description": "Oscar Merry is the Co-Founder of Fountain, a new podcast platform where viewers can get paid to listen to their favorite podcasts and is powered by the Bitcoin Lightning Network.\n\nIn this conversation, we talk about podcasting 2.0, how the Fountain product works, why podcasters should be interested in paying their listeners, and on-boarding people to the Bitcoin network through Fountain.\n=======================\nLMAX Digital - the market-leading solution for institutional crypto trading & custodial services - offers clients a regulated, transparent and secure trading environment, together with the deepest pool of crypto liquidity. LMAX Digital is also a primary price discovery venue, streaming real-time market data to the industry\u2019s leading analytics platforms. LMAX Digital - secure, liquid, trusted. Learn more at LMAXdigital.com/pomp\n=======================\nThe Pod Pro Cover by Eight Sleep is the most advanced solution on the market for thermoregulation. It pairs dynamic cooling and heating with biometric tracking. Go to https://www.eightsleep.com/Pomp to check out the Pod Pro Cover and save $150 at checkout. Eight Sleep currently ships within the USA, Canada, and the UK.\n=======================\nDeFi Technologies represents what\u2019s next in the digital economy -- providing simplified, trusted access to crypto, decentralized finance and Web 3.0 investment opportunities. Institutions and investors can gain diversified, secure, compliant, and easily tradable access to a diversified set of industry-leading equity products and protocols, through a single stock purchase on a regulated exchange. Currently listed on U.S. (OTC: DEFTF) and Canadian (NEO:DEFI) exchanges.\n\u00a0\nFor more information or to subscribe to receive company updates and financial information, visit our website at http://defi.tech\u00a0\n=======================", - "pub_date_ms": 1655835471224, - "guid_from_rss": "210c3350-f192-11ec-9037-036c07c848a8", - "listennotes_url": "https://www.listennotes.com/e/b6965b7bcdab4df1b108a93309cedfc6/", - "audio_length_sec": 1788, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/b6965b7bcdab4df1b108a93309cedfc6/#edit" - }, - "type": "episode", - "notes": "Listen Notes API powers this app :) Awesome to see another success story of our podcast api!", - "added_at_ms": 1655882791242 - }, - { - "id": 827612, - "data": { - "id": "202d91e59bd8460492a220886d177eea", - "link": "https://www.vox.com/recode-media-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/202d91e59bd8460492a220886d177eea/", - "image": "https://production.listennotes.com/podcasts/recode-media-recode-SNw3MlTLqjC-1iPwTajLXlS.1400x1400.jpg", - "title": "Bill Simmons on podcasts, celebrity interviews and life at Spotify", - "podcast": { - "id": "2aba49dc3fc04e3e96fe89f79a261798", - "image": "https://production.listennotes.com/podcasts/recode-media-recode-SNw3MlTLqjC-1iPwTajLXlS.1400x1400.jpg", - "title": "Recode Media with Peter Kafka", - "publisher": "Recode", - "thumbnail": "https://production.listennotes.com/podcasts/recode-media-recode-ReV9rxkUvST-1iPwTajLXlS.300x300.jpg", - "listen_score": 54, - "listennotes_url": "https://www.listennotes.com/c/2aba49dc3fc04e3e96fe89f79a261798/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/recode-media-recode-ReV9rxkUvST-1iPwTajLXlS.300x300.jpg", - "description": "

The Bill Simmons Podcast is, by its own description, \"the most downloaded sports podcast of all time.\" This week, it hits its 1,000th episode.

Bill Simmons began his career as a Boston sportswriter and went on to found ESPN's sports and pop culture blog Grantland. After ESPN shut down the site, Simmons started the Ringer \u2014 which he sold to Spotify in 2020.

In this wide-ranging conversation, Recode\u2019s Peter Kafka talks to Simmons about how he became a podcasting pioneer, and when he realized nerditry about the NBA and Game of Thrones could both live under the same roof. Simmons also reflects on what he learned from his time as an employee of The Walt Disney Corporation and how things are different at Spotify. Plus, he reveals the number one dream guest he\u2019d love to have on his show.


Featuring: Bill Simmons (@BillSimmons), Founder of The Ringer

Host: Peter Kafka\u00a0(@pkafka), Senior Editor at Recode

More to explore: Subscribe for free to Recode Media, Peter Kafka, one of the media industry's most acclaimed reporters, talks to business titans, journalists, comedians, and more to get their take on today's media landscape.

About Recode by Vox: Recode by Vox helps you understand how tech is changing the world \u2014 and changing us.

Learn more about your ad choices. Visit podcastchoices.com/adchoices

", - "pub_date_ms": 1655266568017, - "guid_from_rss": "72fffa04-5221-11ec-ae31-23e900b8cde4", - "listennotes_url": "https://www.listennotes.com/e/202d91e59bd8460492a220886d177eea/", - "audio_length_sec": 3626, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/202d91e59bd8460492a220886d177eea/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1655274047437 - }, - { - "id": 764336, - "data": { - "id": "aba7f2dd81a5408f96da8d70dfbefe36", - "error": "This episode has been deleted from the podcast database. Possible reasons: 1) Podcast producers sometimes delete their old episodes. 2) Copyright issues.", - "title": "Spotify\u2019s ad-tech acquisitions to take on YouTube with The Verge\u2019s Ashley Carman + Founder University Pitches | E1389", - "status": "deleted" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1645211291773 - }, - { - "id": 678931, - "data": { - "id": "af19ceda98d84d3c92eafe7e7f63b6dd", - "link": "https://tim.blog/podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/af19ceda98d84d3c92eafe7e7f63b6dd/", - "image": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-tim-ferriss-7NwMpUz5o0S.1400x1400.jpg", - "title": "#538: How I Built The Tim Ferriss Show to 700+ Million Downloads \u2014 An Immersive Explanation of All Aspects and Key Decisions (Featuring Chris Hutchins)", - "podcast": { - "id": "25212ac3c53240a880dd5032e547047b", - "image": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-tim-ferriss-7NwMpUz5o0S.1400x1400.jpg", - "title": "The Tim Ferriss Show", - "publisher": "Tim Ferriss: Bestselling Author, Human Guinea Pig", - "thumbnail": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-tim-ferriss-7NwMpUz5o0S.300x300.jpg", - "listen_score": 81, - "listennotes_url": "https://www.listennotes.com/c/25212ac3c53240a880dd5032e547047b/", - "listen_score_global_rank": "0.01%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-tim-ferriss-show-tim-ferriss-7NwMpUz5o0S.300x300.jpg", - "description": "

How I Built The Tim Ferriss Show to 700+ Million Downloads \u2014 An Immersive Explanation of All Aspects and Key Decisions (Featuring Chris Hutchins) | Brought to you by LinkedIn Jobs recruitment platform with 770M+ users, Athletic Greens all-in-one nutritional supplement, and Helix Sleep premium mattresses. More on all three below.

Chris Hutchins (@hutchins) is an avid life hacker and financial optimizer. He\u2019s the host of All the Hacks podcast and the Head of New Product Strategy at Wealthfront.

Previously, Chris was co-founder and CEO of Grove (acquired by Wealthfront), co-founder of Milk (acquired by Google), and a partner at Google Ventures, where he focused on seed and early stage investments.

Chris reached out with many questions about podcasting. He had already read much of what I had written and listened to several interviews, and this is intended to be an updated guide to all things podcasting.

Please enjoy!

This episode is brought to you by Athletic Greens. I get asked all the time, \u201cIf you could only use one supplement, what would it be?\u201d My answer is usually Athletic Greens, my all-in-one nutritional insurance. I recommended it in The 4-Hour Body in 2010 and did not get paid to do so. I do my best with nutrient-dense meals, of course, but AG further covers my bases with vitamins, minerals, and whole-food-sourced micronutrients that support gut health and the immune system. 

Right now, Athletic Greens is offering you their Vitamin D Liquid Formula free with your first subscription purchase\u2014a vital nutrient for a strong immune system and strong bones. Visit AthleticGreens.com/Tim to claim this special offer today and receive the free Vitamin D Liquid Formula (and five free travel packs) with your first subscription purchase! That\u2019s up to a one-year supply of Vitamin D as added value when you try their delicious and comprehensive all-in-one daily greens product.

*

This episode is also brought to you by Helix Sleep! Helix was selected as the #1 overall mattress of 2020 by GQ magazine, Wired, Apartment Therapy, and many others. With Helix, there\u2019s a specific mattress to meet each and every body\u2019s unique comfort needs. Just take their quiz\u2014only two minutes to complete\u2014that matches your body type and sleep preferences to the perfect mattress for you. They have a 10-year warranty, and you get to try it out for a hundred nights, risk free. They\u2019ll even pick it up from you if you don\u2019t love it. 

And now, to my dear listeners, Helix is offering up to 200 dollars off all mattress orders plus two free pillows at HelixSleep.com/Tim.

*

This episode is also brought to you by LinkedIn Jobs. Whether you are looking to hire now for a critical role or thinking about needs that you may have in the future, LinkedIn Jobs can help. LinkedIn screens candidates for the hard and soft skills you\u2019re looking for and puts your job in front of candidates looking for job opportunities that match what you have to offer.

Using LinkedIn\u2019s active community of more than 770 million professionals worldwide, LinkedIn Jobs can help you find and hire the right person faster. When your business is ready to make that next hire, find the right person with LinkedIn Jobs. And now, you can post a job for free. Just visit LinkedIn.com/Tim.

*

If you enjoy the podcast, would you please consider leaving a short review on Apple Podcasts? It takes less than 60 seconds, and it really makes a difference in helping to convince hard-to-get guests. I also love reading the reviews!

For show notes and past guests, please visit tim.blog/podcast.

Sign up for Tim\u2019s email newsletter (\u201c5-Bullet Friday\u201d) at tim.blog/friday.

For transcripts of episodes, go to tim.blog/transcripts.

Discover Tim\u2019s books: tim.blog/books.

Follow Tim:

Twitter: twitter.com/tferriss 

Instagram: instagram.com/timferriss

Facebook: facebook.com/timferriss 

YouTube: youtube.com/timferriss

Past guests on The Tim Ferriss Show include Jerry Seinfeld, Hugh Jackman, Dr. Jane Goodall, LeBron James, Kevin Hart, Doris Kearns Goodwin, Jamie Foxx, Matthew McConaughey, Esther Perel, Elizabeth Gilbert, Terry Crews, Sia, Yuval Noah Harari, Malcolm Gladwell, Madeleine Albright, Cheryl Strayed, Jim Collins, Mary Karr, Maria Popova, Sam Harris, Michael Phelps, Bob Iger, Edward Norton, Arnold Schwarzenegger, Neil Strauss, Ken Burns, Maria Sharapova, Marc Andreessen, Neil Gaiman, Neil de Grasse Tyson, Jocko Willink, Daniel Ek, Kelly Slater, Dr. Peter Attia, Seth Godin, Howard Marks, Dr. Bren\u00e9 Brown, Eric Schmidt, Michael Lewis, Joe Gebbia, Michael Pollan, Dr. Jordan Peterson, Vince Vaughn, Brian Koppelman, Ramit Sethi, Dax Shepard, Tony Robbins, Jim Dethmer, Dan Harris, Ray Dalio, Naval Ravikant, Vitalik Buterin, Elizabeth Lesser, Amanda Palmer, Katie Haun, Sir Richard Branson, Chuck Palahniuk, Arianna Huffington, Reid Hoffman, Bill Burr, Whitney Cummings, Rick Rubin, Dr. Vivek Murthy, Darren Aronofsky, and many more.

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

", - "pub_date_ms": 1634222633143, - "guid_from_rss": "gid://art19-episode-locator/V0/BtqNd8i7Fya-HhzGx_0SKu-ZiX1V8AB2Te4M0bCkakQ", - "listennotes_url": "https://www.listennotes.com/e/af19ceda98d84d3c92eafe7e7f63b6dd/", - "audio_length_sec": 10927, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/af19ceda98d84d3c92eafe7e7f63b6dd/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1634779096596 - }, - { - "id": 580202, - "data": { - "id": "463b7db874c04c3ca66cefda3e9d4679", - "link": "https://exponent.fm/episode-194-back-on-spotify/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/463b7db874c04c3ca66cefda3e9d4679/", - "image": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-xZm7IMnq5bR-OaJSjb4xQv3.1400x1400.jpg", - "title": "Episode 194 \u2014 Back on Spotify", - "podcast": { - "id": "37589a3e121e40debe4cef3d9638932a", - "image": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-xZm7IMnq5bR-OaJSjb4xQv3.1400x1400.jpg", - "title": "Exponent", - "publisher": "Ben Thompson / James Allworth", - "thumbnail": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-8sx24A_0Jlk-OaJSjb4xQv3.300x300.jpg", - "listen_score": 59, - "listennotes_url": "https://www.listennotes.com/c/37589a3e121e40debe4cef3d9638932a/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-8sx24A_0Jlk-OaJSjb4xQv3.300x300.jpg", - "description": "

Ben and James discuss the history of podcasts and why Spotify’s recent announcements are so compelling for creators.

\n

Links

\n\n

Hosts

\n

\u00a0

\n\n

\u00a0

\n

Podcast Information

\n

\u00a0

\n", - "pub_date_ms": 1619771580003, - "guid_from_rss": "https://exponent.fm/?p=429", - "listennotes_url": "https://www.listennotes.com/e/463b7db874c04c3ca66cefda3e9d4679/", - "audio_length_sec": 3978, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/463b7db874c04c3ca66cefda3e9d4679/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1619799889806 - }, - { - "id": 475797, - "data": { - "id": "4c72c4dfac004ffca0867a70361f77ab", - "link": "https://jamesaltuchershow.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/4c72c4dfac004ffca0867a70361f77ab/", - "image": "https://production.listennotes.com/podcasts/the-james-altucher/side-hustle-friday-why-x-OdlkHPweS-jDmTs6Nl-tr.1400x1400.jpg", - "title": "Side Hustle Friday: Why should you START a podcast and MONETIZE your podcast through Ads and Patreon!", - "podcast": { - "id": "6dabf2f65c384e1f897bb606859309f4", - "image": "https://production.listennotes.com/podcasts/the-james-altucher-show-james-altucher-50EFuIdlcY4-sSHocv8YjIe.1400x1400.jpg", - "title": "The James Altucher Show", - "publisher": "James Altucher", - "thumbnail": "https://production.listennotes.com/podcasts/the-james-altucher-show-james-altucher-6q58dRHpmvW-sSHocv8YjIe.300x300.jpg", - "listen_score": 67, - "listennotes_url": "https://www.listennotes.com/c/6dabf2f65c384e1f897bb606859309f4/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-james-altucher/side-hustle-friday-why-BpGUVA-oL_v-jDmTs6Nl-tr.300x300.jpg", - "description": "

Another Side Hustle Friday! I sat down with Jay Yow, the Sound Engineer/ Producer of The James Altucher, to discuss ways to monetize a podcast, we spoke about why this is the best time to launch a podcast and our equipment set up for remote recording and interview. In this episode, we break down that's the different ways you can monetize through Ads, sponsors, affiliate deals, and Patreon! Part 2 will be coming soon Monday!

\n
\n

I write about all my podcasts! Check out the full post and learn what I learned at jamesaltucher.com/podcast.

\n

Thanks so much for listening! If you like this episode, please subscribe to \u201cThe James Altucher Show\u201d and rate and review wherever you get your podcasts:

\n

Apple Podcasts

\n

Stitcher

\n

iHeart Radio

\n

Spotify

\n

\n

Follow me on Social Media:

\n

YouTube

\n

Twitter

\n

Facebook

\n

Linkedin

", - "pub_date_ms": 1602831600455, - "guid_from_rss": "fae163b1-dcc2-4600-b040-ac5600102349", - "listennotes_url": "https://www.listennotes.com/e/4c72c4dfac004ffca0867a70361f77ab/", - "audio_length_sec": 3007, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/4c72c4dfac004ffca0867a70361f77ab/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1603256538471 - }, - { - "id": 475796, - "data": { - "id": "d5e2112643ac4d01baaa8eab6c7b7cae", - "link": "https://jamesaltuchershow.com/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/d5e2112643ac4d01baaa8eab6c7b7cae/", - "image": "https://production.listennotes.com/podcasts/the-james-altucher/side-hustle-friday-monetize-nJaycZ39zdH-vZt0gi5hoDN.1400x1400.jpg", - "title": "Side Hustle Friday: Monetize your podcast right now!", - "podcast": { - "id": "6dabf2f65c384e1f897bb606859309f4", - "image": "https://production.listennotes.com/podcasts/the-james-altucher-show-james-altucher-50EFuIdlcY4-sSHocv8YjIe.1400x1400.jpg", - "title": "The James Altucher Show", - "publisher": "James Altucher", - "thumbnail": "https://production.listennotes.com/podcasts/the-james-altucher-show-james-altucher-6q58dRHpmvW-sSHocv8YjIe.300x300.jpg", - "listen_score": 67, - "listennotes_url": "https://www.listennotes.com/c/6dabf2f65c384e1f897bb606859309f4/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-james-altucher/side-hustle-friday-monetize-TGCj-9qP0Nw-vZt0gi5hoDN.300x300.jpg", - "description": "

Part 2 on monetizing your podcast! In this episode, we talked about ways to monetize your podcast via merchandising, getting hired as a consultant through your podcast, speaking gigs, on and on! Also, enjoy Jay's episodic debut on the podcast! (Technically a second since this is a part of Friday's podcast!)

\n
\n

I write about all my podcasts! Check out the full post and learn what I learned at jamesaltucher.com/podcast.

\n

Thanks so much for listening! If you like this episode, please subscribe to \u201cThe James Altucher Show\u201d and rate and review wherever you get your podcasts:

\n

Apple Podcasts

\n

Stitcher

\n

iHeart Radio

\n

Spotify

\n

\n

Follow me on Social Media:

\n

YouTube

\n

Twitter

\n

Facebook

\n

Linkedin

", - "pub_date_ms": 1603090800453, - "guid_from_rss": "7e70863f-ebf1-4641-b151-ac5800ea8773", - "listennotes_url": "https://www.listennotes.com/e/d5e2112643ac4d01baaa8eab6c7b7cae/", - "audio_length_sec": 2617, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/d5e2112643ac4d01baaa8eab6c7b7cae/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1603256526157 - }, - { - "id": 434674, - "data": { - "id": "3c311c8cf83448dea0463c69bfe61c75", - "link": "https://podcasters.spotify.com/pod/show/thisweekinstartups/episodes/E1096-Podcasting-State-of-the-Union-featuring-Overcasts-Marco-Arment--Oxford-Roads-Dan-Granger-e1cgtk4?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/3c311c8cf83448dea0463c69bfe61c75/", - "image": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-d9kz8SVeAwn-EKckR36zrnA.1400x1400.jpg", - "title": "E1096: Podcasting State of the Union featuring Overcast\u2019s Marco Arment & Oxford Road\u2019s Dan Granger", - "podcast": { - "id": "9a62e2581908415185dee35d2d19f9b5", - "image": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-d9kz8SVeAwn-EKckR36zrnA.1400x1400.jpg", - "title": "This Week in Startups", - "publisher": "Jason Calacanis", - "thumbnail": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-LZCcPIajWVQ-EKckR36zrnA.300x300.jpg", - "listen_score": 64, - "listennotes_url": "https://www.listennotes.com/c/9a62e2581908415185dee35d2d19f9b5/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/this-week-in-startups-jason-calacanis-LZCcPIajWVQ-EKckR36zrnA.300x300.jpg", - "description": "Follow Marco: https://twitter.com/marcoarment
\n
\nDownload Overcast: https://overcast.fm
\n
\nFollow Oxford Road: https://twitter.com/Oxford_Road
\n
\nFollow Jason: https://linktr.ee/calacanis
\n
\nThanks to our partners...
\nSendPro Online from Pitney Bowes - Try it free for 30 days and get a free 10-pound scale at https://pb.com/twist
\nLinkedIn Marketing - Get $100 off your first advertising campaign at https://linkedin.com/thisweekinstartups
\nVanta - $1k off your SOC 2 at https://vanta.com/twist", - "pub_date_ms": 1597416466670, - "guid_from_rss": "https://thisweekinstartups.com/?p=41080", - "listennotes_url": "https://www.listennotes.com/e/3c311c8cf83448dea0463c69bfe61c75/", - "audio_length_sec": 5249, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/3c311c8cf83448dea0463c69bfe61c75/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1597421395248 - }, - { - "id": 424141, - "data": { - "id": "50d0110bec79414eac61cb472c3c1de2", - "link": "https://anchor.fm/caseyadams/episodes/Elise-Hu---Hosting-TED-Talks-Daily--The-Future-of-Podcasting-ecfp5b?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/50d0110bec79414eac61cb472c3c1de2/", - "image": "https://production.listennotes.com/podcasts/the-casey-adams-show/elise-hu-hosting-ted-talks-Y6q40Ejr-ZX-wUV0p1Rd3zs.1400x1400.jpg", - "title": "Elise Hu - Hosting \"TED Talks Daily\" & The Future of Podcasting", - "podcast": { - "id": "11362a0682e744b29ce5ea73c920132e", - "image": "https://production.listennotes.com/podcasts/the-casey-adams-show-casey-adams-YOIqNyvrFbD-YuarHs5lfDI.1400x1400.jpg", - "title": "The Casey Adams Show", - "publisher": "Casey Adams", - "thumbnail": "https://production.listennotes.com/podcasts/the-casey-adams-show-casey-adams-th_uNjDYGoE-YuarHs5lfDI.300x300.jpg", - "listen_score": 53, - "listennotes_url": "https://www.listennotes.com/c/11362a0682e744b29ce5ea73c920132e/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-casey-adams-show/elise-hu-hosting-ted-talks-FbSdafYDC9N-wUV0p1Rd3zs.300x300.jpg", - "description": "

Elise Hu is a host-at-large based at NPR West in Culver City, Calif. Previously, she explored the future with her video series, Future You with Elise Hu, and served as the founding bureau chief and International Correspondent for NPR's Seoul office. She was based in Seoul for nearly four years, responsible for the network's coverage of both Koreas and Japan, and filed from a dozen countries across Asia. Before joining NPR, she was one of the founding reporters at The Texas Tribune, a non-profit digital news startup devoted to politics and public policy. While at the Tribune, Hu oversaw television partnerships and multimedia projects, contributed to The New York Times' expanded Texas coverage, and pushed for editorial innovation across platforms.Her work at NPR has earned a DuPont-Columbia award and a Gracie Award from the Alliance for Women in Media for her video series, Elise Tries. Her previous work has earned a Gannett Foundation Award for Innovation in Watchdog Journalism, a National Edward R. Murrow award for best online video, and beat reporting awards from the Texas Associated Press. The Austin Chronicle once dubiously named her the \"Best TV Reporter Who Can Write.\"

\n

Follow Elise Hu on Instagram: https://www.instagram.com/elisewho/?hl=en

\n

Learn more about Elise Hu: https://elisehu.com/

\n

Listen to \"TED Talks Daily\" https://podcasts.apple.com/us/podcast/ted-talks-daily/id160904630

\n

Learn more about your ad choices. Visit podcastchoices.com/adchoices

", - "pub_date_ms": 1586266731179, - "guid_from_rss": "9aeee818-e72c-4928-8149-7cae42595d82", - "listennotes_url": "https://www.listennotes.com/e/50d0110bec79414eac61cb472c3c1de2/", - "audio_length_sec": 2445, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/50d0110bec79414eac61cb472c3c1de2/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1595791871517 - }, - { - "id": 423865, - "data": { - "id": "8f51c8e8b19a4c638ecbce12f9322ba8", - "link": "https://sites.libsyn.com/45546/167-cleanfeed-with-a-side-of-google-podcasts?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/8f51c8e8b19a4c638ecbce12f9322ba8/", - "image": "https://production.listennotes.com/podcasts/the-feed-the/167-cleanfeed-with-a-side-of-_HxANWiUlRk-OS-PBaQKcgl.1400x1400.jpg", - "title": "167 Cleanfeed With A Side of Google Podcasts", - "podcast": { - "id": "ce3754058c7a44a0abd574f86ff5c719", - "image": "https://production.listennotes.com/podcasts/the-feed-the-official-libsyn-podcast-elsie-vpSizOJdtuG-2kOexVdGJIv.1400x1400.jpg", - "title": "The Feed The Official Libsyn Podcast", - "publisher": "Elsie Escobar and Rob Walch", - "thumbnail": "https://production.listennotes.com/podcasts/the-feed-the-official-libsyn-podcast-elsie-1gCfKIP5XVy-2kOexVdGJIv.300x300.jpg", - "listen_score": 44, - "listennotes_url": "https://www.listennotes.com/c/ce3754058c7a44a0abd574f86ff5c719/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-feed-the/167-cleanfeed-with-a-side-of-KEMJ65zVY4x-OS-PBaQKcgl.300x300.jpg", - "description": "

Tons of details on all things Google Podcasts Manager! It\u2019s like Apple Podcasts connect but of course Google. Then, we move on to jobs in podcasting, so much about feedback about Cleanfeed, some very interesting Facebook updates, Libsyn player automation, what if someone uses YOUR podcast name, a massive breakdown of the podfader types and of course we\u2019ve got a crazy amount of stats!

Audience feedback drives the show. We\u2019d love for you to email us and keep the conversation going! Email thefeed@libsyn.com or call 412\u2013573\u20131934. We\u2019d love to hear from you!

Quick Episode Summary Featured Podcast Promos + Audio

Thank you to Nick from MicMe for our awesome intro!

Podcasting Articles and Links mentioned by Rob and Elsie

HELP US SPREAD THE WORD!

We\u2019d love it if you could please share #TheFeed with your twitter followers. Click here to post a tweet!

If you dug this episode head on over to Apple Podcasts and kindly leave us a rating, a review and subscribe!

Ways to subscribe to The Feed: The Official Libsyn Podcast FEEDBACK + PROMOTION

You can ask your questions, make comments and create a segment about podcasting for podcasters! Let your voice be heard.

", - "pub_date_ms": 1588694700075, - "guid_from_rss": "7d758875-6443-4260-a57f-f31e35d21ec8", - "listennotes_url": "https://www.listennotes.com/e/8f51c8e8b19a4c638ecbce12f9322ba8/", - "audio_length_sec": 4337, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/8f51c8e8b19a4c638ecbce12f9322ba8/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1595731343450 - }, - { - "id": 345601, - "data": { - "id": "dbd3d477dfc94128982b79e8152301b4", - "link": "http://mschool.libsyn.com/spotify-acquired-the-ringer-podcast-15m-in-revenues-heres-what-it-means-ep-1306?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/dbd3d477dfc94128982b79e8152301b4/", - "image": "https://production.listennotes.com/podcasts/marketing-school-digital-marketing-and-fY51JWywOLF-pHyiIJT4Lxl.1400x1400.jpg", - "title": "Spotify Acquired 'The Ringer' Podcast ($15M In Revenues) - Here's What It Means | Ep. #1306", - "podcast": { - "id": "9a2abf6b68b54554a60a32a2932febcb", - "image": "https://production.listennotes.com/podcasts/marketing-school-digital-marketing-and-fY51JWywOLF-pHyiIJT4Lxl.1400x1400.jpg", - "title": "Marketing School - Digital Marketing and Online Marketing Tips", - "publisher": "Eric Siu & Neil Patel", - "thumbnail": "https://production.listennotes.com/podcasts/marketing-school-digital-marketing-and-G-dNQec3V08-pHyiIJT4Lxl.300x300.jpg", - "listen_score": 62, - "listennotes_url": "https://www.listennotes.com/c/9a2abf6b68b54554a60a32a2932febcb/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/marketing-school-digital-marketing-and-G-dNQec3V08-pHyiIJT4Lxl.300x300.jpg", - "description": "

In episode #1306, we discuss Spotify\u2019s acquisition of The Ringer. The podcasting industry is growing exponentially and Spotify wanted to make an aggressive move toward growing its market share. Tune in to hear why this was a super smart decision on their part!

TIME-STAMPED SHOW NOTES:

Links Mentioned in Today\u2019s Episode:

Leave Some Feedback:

\u00a0

\u00a0

Connect with Us:\u00a0

", - "pub_date_ms": 1582812001176, - "guid_from_rss": "bf073240-9680-42e7-89aa-82a2338840dc", - "listennotes_url": "https://www.listennotes.com/e/dbd3d477dfc94128982b79e8152301b4/", - "audio_length_sec": 464, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/dbd3d477dfc94128982b79e8152301b4/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1582824661788 - }, - { - "id": 337223, - "data": { - "id": "5b8b9d5851ad4634812798d25553d8d7", - "link": "https://www.vox.com/recode-media-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/5b8b9d5851ad4634812798d25553d8d7/", - "image": "https://production.listennotes.com/podcasts/recode-media-recode-SNw3MlTLqjC-1iPwTajLXlS.1400x1400.jpg", - "title": "Spotify, The Ringer and the future of podcasts", - "podcast": { - "id": "2aba49dc3fc04e3e96fe89f79a261798", - "image": "https://production.listennotes.com/podcasts/recode-media-recode-SNw3MlTLqjC-1iPwTajLXlS.1400x1400.jpg", - "title": "Recode Media with Peter Kafka", - "publisher": "Recode", - "thumbnail": "https://production.listennotes.com/podcasts/recode-media-recode-ReV9rxkUvST-1iPwTajLXlS.300x300.jpg", - "listen_score": 54, - "listennotes_url": "https://www.listennotes.com/c/2aba49dc3fc04e3e96fe89f79a261798/", - "listen_score_global_rank": "0.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/recode-media-recode-ReV9rxkUvST-1iPwTajLXlS.300x300.jpg", - "description": "

Spotify is buying Bill Simmons\u2019 sports and pop culture website and podcast network, The Ringer. It\u2019s Spotify\u2019s fourth podcast acquisition in a year. Recode\u2019s Peter Kafka (who broke the story) sits down with Vox Media Podcast Network producer and former Ringer staff member Zach Mack to discuss what this deal means for Spotify, The Ringer and the future of podcasts.


Featuring: Zach Mack (@zachthemack), Senior Podcast Producer at Vox Media Podcast Network

Host: Peter Kafka\u00a0(@pkafka), Senior Editor at Recode

More to explore: Subscribe for free to Recode Media, Peter Kafka, one of the media industry's most acclaimed reporters, talks to business titans, journalists, comedians, and more to get their take on today's media landscape.

About Recode by Vox: Recode by Vox helps you understand how tech is changing the world \u2014 and changing us.

Learn more about your ad choices. Visit podcastchoices.com/adchoices

", - "pub_date_ms": 1581021870154, - "guid_from_rss": "984d87fe-491d-11ea-a150-ab286b86e563", - "listennotes_url": "https://www.listennotes.com/e/5b8b9d5851ad4634812798d25553d8d7/", - "audio_length_sec": 1216, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/5b8b9d5851ad4634812798d25553d8d7/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1581032059508 - }, - { - "id": 312262, - "data": { - "id": "eaa81f7bba344ae78bcf228b88e102a7", - "link": "https://a16z.simplecast.com/episodes/a16z-podcast-how-what-why-500th-episode-behind-the-scenes-XgOK8aBT?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/eaa81f7bba344ae78bcf228b88e102a7/", - "image": "https://production.listennotes.com/podcasts/a16z-podcast-andreessen-horowitz-XN2jKrnD8Pt-IWF2alEr-9h.1400x1400.jpg", - "title": "How We Podcast", - "podcast": { - "id": "7c20388d8d7e45d6ae4b770c1fe36b6f", - "image": "https://production.listennotes.com/podcasts/a16z-podcast-andreessen-horowitz-XN2jKrnD8Pt-IWF2alEr-9h.1400x1400.jpg", - "title": "a16z Podcast", - "publisher": "Andreessen Horowitz", - "thumbnail": "https://production.listennotes.com/podcasts/a16z-podcast-andreessen-horowitz-7EDtgpiHdwl-IWF2alEr-9h.300x300.jpg", - "listen_score": 62, - "listennotes_url": "https://www.listennotes.com/c/7c20388d8d7e45d6ae4b770c1fe36b6f/", - "listen_score_global_rank": "0.1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/a16z-podcast-andreessen-horowitz-7EDtgpiHdwl-IWF2alEr-9h.300x300.jpg", - "description": "

\"Hi everyone, welcome to the a16z Podcast...\" ... and welcome to our 500th episode, where, for the first time, we reveal behind-the-scenes details and the backstory of how we built this show, and the broader editorial operation. [You can also listen to episode 499, with head of marketing Margit Wennmachers, on building the a16z brand, here.]

We've talked a lot about the podcasting industry, and even done podcasts about podcasting, so for this special episode, editor-in-chief and showrunner Sonal Chokshi reveals the how, what, and why in conversation with a16z general partner (and guest-host for this special episode) podcasting fan Connie Chan. We also answer some frequently asked questions that we often get (and recently got via Twitter), such as:

...and much more. In fact, much of the conversation goes beyond the a16z Podcast and towards Sonal's broader principles of 'editorial content marketing', which hopefully helps those thinking about their own content operations and podcasts, too. Including where podcasting may be going.

Finally, we share some unexpected moments, and lessons learned along the way; our positions on \"tics\", swear-words, and talking too fast; failed experiments, and new directions. But most importantly, we share some of the people behind the scenes who help make the a16z Podcast what it was, is, and can be... with thanks most of all to *you*, our wonderful fans!

", - "pub_date_ms": 1574838000232, - "guid_from_rss": "2307c44b-8b88-4348-b4f5-3deaa204135e", - "listennotes_url": "https://www.listennotes.com/e/eaa81f7bba344ae78bcf228b88e102a7/", - "audio_length_sec": 2864, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/eaa81f7bba344ae78bcf228b88e102a7/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1574917254490 - }, - { - "id": 312259, - "data": { - "id": "1ca5d330311d4808a4dbc668680f565b", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/1ca5d330311d4808a4dbc668680f565b/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "*Live* at Spotify - Part II: Why Spotify is doing podcasts \u2014 Our interview with Max Cutler, Founder & MD of podcasts at Spotify", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "The 2nd half of our Snacks recording live from Spotify. We sit down with Max Cutler, the Founder & MD of Parcast Studios at Spotify \u2014 his startup was acquired by Spotify earlier this year. We\u2019re asking about how he first pitched his company, whether podcasts will follow the Netflix strategy, and what his favorite pod is. Ever.\n\n\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1574852400867, - "guid_from_rss": "b1210966-10a8-11ea-a5b5-6fb6124a64cd", - "listennotes_url": "https://www.listennotes.com/e/1ca5d330311d4808a4dbc668680f565b/", - "audio_length_sec": 1020, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/1ca5d330311d4808a4dbc668680f565b/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1574917188846 - }, - { - "id": 310664, - "data": { - "id": "df11c9fde8234140a705c4aedff2561e", - "link": "https://wondery.com/shows/the-best-one-yet/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/df11c9fde8234140a705c4aedff2561e/", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "*Live* at Spotify - Part I: How we build this (every day)", - "podcast": { - "id": "c5ce6c02cbf1486496206829f7d42e8e", - "image": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-U_rQkCOW5Zp-kmx0XIZTAys.1400x1400.jpg", - "title": "The Best One Yet", - "publisher": "Nick & Jack Studios", - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "listen_score": 71, - "listennotes_url": "https://www.listennotes.com/c/c5ce6c02cbf1486496206829f7d42e8e/", - "listen_score_global_rank": "0.05%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/the-best-one-yet-nick-jack-studios-Q8pCEFw0caJ-kmx0XIZTAys.300x300.jpg", - "description": "Spotify invited us to their NYC offices to record a live podcast \u2014 it\u2019s a podcast about podcasts for our podcast listening Snackers. We introduce to the Snackers how we got into podcasting, how we built this podcast (every day), and the 5 ingredients for a podcast that people will actually listen to.\u00a0\nLearn more about your ad choices. Visit podcastchoices.com/adchoices\n\nSee Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.", - "pub_date_ms": 1574420400870, - "guid_from_rss": "b1632e3a-0ccb-11ea-82ce-6fd47d59f86e", - "listennotes_url": "https://www.listennotes.com/e/df11c9fde8234140a705c4aedff2561e/", - "audio_length_sec": 1226, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/df11c9fde8234140a705c4aedff2561e/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1574445406609 - }, - { - "id": 309738, - "data": { - "id": "756203eef51f488fa990fda9daa3c54b", - "link": "https://product-hunt-radio.simplecast.com/episodes/the-future-of-podcasting-with-andrew-mason-trD3wUwe?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/756203eef51f488fa990fda9daa3c54b/", - "image": "https://production.listennotes.com/podcasts/product-hunt-radio-product-hunt-GWVKjh-0kgs-4qPNklrZI93.1400x1400.jpg", - "title": "The future of podcasting with Andrew Mason", - "podcast": { - "id": "40426582e3cd4dd2bf931f880e7374aa", - "image": "https://production.listennotes.com/podcasts/product-hunt-radio-product-hunt-GWVKjh-0kgs-4qPNklrZI93.1400x1400.jpg", - "title": "Product Hunt Radio", - "publisher": "Product Hunt", - "thumbnail": "https://production.listennotes.com/podcasts/product-hunt-radio-product-hunt--QOpzec69YV-4qPNklrZI93.300x300.jpg", - "listen_score": 44, - "listennotes_url": "https://www.listennotes.com/c/40426582e3cd4dd2bf931f880e7374aa/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/product-hunt-radio-product-hunt--QOpzec69YV-4qPNklrZI93.300x300.jpg", - "description": "

On this episode Abadesi talks to Andrew Mason, founder and CEO of Descript. He was formerly founder of Detour, which Descript emerged within before it was spun out into its own company when Bose bought the technology behind Detour. Andrew was also founder of Groupon.

In this episode they talk about...

Descript\u2019s origin as part of Detour, and how to know when it\u2019s the right time to pivot from your original idea

\u201cWe would have been over-investing in Descript if all we were using it for was for Detour, but we knew there was a potential business there and were treating it like a kind of a backup plan when you\u2019re pre-product-market fit, like we were. You\u2019re staying open to different paths.\u201d

Descript actually emerged as a part of Detour, the company Andrew founded to create local audio tours. The team built themselves a better workflow for editing audio and realized that the internal product they had created could be much larger than Detour itself. They also recognized that a confluence of factors in tech were going to allow them to create the next generation of audio editing tools. Andrew explains how he went through the process of figuring out when to \u201ccut bait\u201d on Detour. He previously had pivoted The Point into Groupon, so he has some insightful things to say about when and how to pivot.

\u201cWe tried every last possible approach that we could think of and eventually it was like, it\u2019s not supposed to be this hard. Having been through this before, it felt like we were doing the most elaborate things to market the product and reach customers, and at some point it just clicked that it\u2019s not supposed to be this hard and we should move on.\u201d

Andrew\u2019s advice on managing people and scaling a company

\u201cIn a lot of companies the way that people get into management is they'll be individual contributors who have great ideas and nobody wants to listen to their ideas because it's the people in management that get to have those conversations. So people say 'okay, I guess I'll become a manager' and then they become a manager for completely the wrong reasons \u2014 not because they care about people or unlocking the best possible incarnation of their teams, but because they care about having their ideas listened to.\u201d

He gives a rundown of the history of the company and where they are at now, after having raised a large Series A round and made the acquisition of Lyrebird. He talks about what the next stage of growth will hold for them, and how he is managing the scaling process by putting into place processes and protocols that will provide structure for the company as it grows. He also talks about the importance of delegating the work that the founder has been doing in a growing company.

Personal development as a leader and helping your team grow

Andrew explains what a typical day looks like for the team at Descript. He explains how they manage internal tools and how he tries to create an environment where feedback can flow freely among the team members. He talks about some of the best ways to grow as a leader, including some of the events that he attends and why he reads a lot. He also says that they have created an internal podcast for the team, a cool idea which you might expect from the company given what Descript is typically used for!

Andrew also tells us about one of his favorite products that he uses to build tools for the team.

We\u2019ll be back next week so be sure to subscribe on Apple Podcasts, Google Podcasts, Spotify, Breaker, Overcast, or wherever you listen to your favorite podcasts. \ud83d\ude38

Companies and Products Mentioned In This Episode

Retool \u2014 Customized internal tools in minutes.

", - "pub_date_ms": 1574226009020, - "guid_from_rss": "30b4169f-c117-4530-b416-e057e16c3f30", - "listennotes_url": "https://www.listennotes.com/e/756203eef51f488fa990fda9daa3c54b/", - "audio_length_sec": 1816, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/756203eef51f488fa990fda9daa3c54b/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1574273649602 - }, - { - "id": 294620, - "data": { - "id": "44017cd438a24139a913a3e288a518fe", - "link": "https://demandgenradio.com/e/129-how-to-build-your-brand-with-podcasting/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/44017cd438a24139a913a3e288a518fe/", - "image": "https://production.listennotes.com/podcasts/demandgen-radio-bdo-digital-llc-HQsKlnZm_2T-oVByO3tuFwR.1400x1400.jpg", - "title": "#129 How to Build your Brand with Podcasting", - "podcast": { - "id": "f446a0eaac2e481991e36467e4a4f96f", - "image": "https://production.listennotes.com/podcasts/demandgen-radio-bdo-digital-llc-HQsKlnZm_2T-oVByO3tuFwR.1400x1400.jpg", - "title": "DemandGen Radio", - "publisher": "BDO Digital, LLC", - "thumbnail": "https://production.listennotes.com/podcasts/demandgen-radio-bdo-digital-llc-dsf5BPZyLFi-oVByO3tuFwR.300x300.jpg", - "listen_score": 35, - "listennotes_url": "https://www.listennotes.com/c/f446a0eaac2e481991e36467e4a4f96f/", - "listen_score_global_rank": "3%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/demandgen-radio-bdo-digital-llc-dsf5BPZyLFi-oVByO3tuFwR.300x300.jpg", - "description": "

\n

Jordan Paris is a 21-year-old entrepreneur who runs a wildly successful podcast. In this episode, he shares how and why he started his podcast and how podcasting propelled the growth of his business and personal brand. Tune in as Jordan shares how he remains so driven and accomplished at an early age, what lessons he\u2019s learned from starting his podcast, and how you can benefit from starting your own podcast.

", - "pub_date_ms": 1569146400140, - "guid_from_rss": "demandgen.podbean.com/129-how-to-build-your-brand-with-podcasting-b3619189abc76e1d857a35d5ff3062d9", - "listennotes_url": "https://www.listennotes.com/e/44017cd438a24139a913a3e288a518fe/", - "audio_length_sec": 2329, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/44017cd438a24139a913a3e288a518fe/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1570177564050 - }, - { - "id": 293809, - "data": { - "id": "9df23a4053c940fa8762cc94d08c4836", - "link": "https://hbr.org/podcast/2019/10/can-gimlet-turn-a-podcast-network-into-a-disruptive-platform?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/9df23a4053c940fa8762cc94d08c4836/", - "image": "https://production.listennotes.com/podcasts/cold-call-hbr-presents-brian-kenny-UepvPhNmMFV-sC2kfX7gM0D.1400x1400.jpg", - "title": "Can Gimlet Turn a Podcast Network Into a Disruptive Platform?", - "podcast": { - "id": "841eca7a25c64420b2bd0b536d35108d", - "image": "https://production.listennotes.com/podcasts/cold-call-hbr-presents-brian-kenny-UepvPhNmMFV-sC2kfX7gM0D.1400x1400.jpg", - "title": "Cold Call", - "publisher": "HBR Presents / Brian Kenny", - "thumbnail": "https://production.listennotes.com/podcasts/cold-call-hbr-presents-brian-kenny-egRtK2b1Odo-sC2kfX7gM0D.300x300.jpg", - "listen_score": 48, - "listennotes_url": "https://www.listennotes.com/c/841eca7a25c64420b2bd0b536d35108d/", - "listen_score_global_rank": "1%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/cold-call-hbr-presents-brian-kenny-egRtK2b1Odo-sC2kfX7gM0D.300x300.jpg", - "description": "

Harvard Business School professors John Deighton and Jeffrey Rayport discuss their case, “Gimlet Media: A Podcasting Startup,” and how two former public radio producers launch a podcast network, entering the last frontier of digital media. Can they turn a content supplier into a disruptive platform?

", - "pub_date_ms": 1569948476104, - "guid_from_rss": "tag:audio.hbr.org,2016-09-16:cold-call.0104", - "listennotes_url": "https://www.listennotes.com/e/9df23a4053c940fa8762cc94d08c4836/", - "audio_length_sec": 1584, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/9df23a4053c940fa8762cc94d08c4836/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1569971844390 - }, - { - "id": 274212, - "data": { - "id": "00d8c43df3f94eb7b409135fcba6a083", - "link": "https://glitch.com/culture/function-episode-6/?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/00d8c43df3f94eb7b409135fcba6a083/", - "image": "https://production.listennotes.com/podcasts/function-with-anil/the-wild-world-of-podcast-ads--OEJf2RUIkX-igyS-B5r24A.1400x1400.jpg", - "title": "The Wild World of Podcast Ads", - "podcast": { - "id": "3b7c6c851ec14f40bb062b918942aa15", - "image": "https://production.listennotes.com/podcasts/function-with-anil-dash-vox-media-3DjNoAIGtV_-pfqIzGD4odn.1400x1400.jpg", - "title": "Function with Anil Dash", - "publisher": "Vox Media", - "thumbnail": "https://production.listennotes.com/podcasts/function-with-anil-dash-vox-media-yYP_8KQFk06-pfqIzGD4odn.300x300.jpg", - "listen_score": 42, - "listennotes_url": "https://www.listennotes.com/c/3b7c6c851ec14f40bb062b918942aa15/", - "listen_score_global_rank": "1.5%" - }, - "thumbnail": "https://production.listennotes.com/podcasts/function-with-anil/the-wild-world-of-podcast-ads-Rj6u3btNrmq-igyS-B5r24A.300x300.jpg", - "description": "

Squarespace. Mailchimp. Casper. Blue Apron. If you're a regular podcast listener, then there's no doubt you've heard ads from these companies, among many others. Podcasting's reach has grown exponentially over the past few years, and companies like these are spending millions of dollars to reach listeners whenever, wherever and however they tune in. But is this truly effective? What type of ads work best? And if you're not a podcast from a big media organization, how can\u00a0you\u00a0can get a piece of the pie?

This week on Function, we examine the world of podcast advertising. Anil sits down with\u00a0Francesco Baschieri, president of Voxnest, and talks about some of the trends and technology behind podcast ads. We also hear from New York City podcasting duo\u00a0Jade + XD\u00a0and pull back the curtain on advertising and monetization from an independent media perspective.

How does podcast advertising stay ahead of tech like adblockers? What happens when an ad is automatically placed in your podcast by the network that goes against both the host and the audience? You'll find out the answers to all this and more on this week's episode!

But first, a word from our sponsors....

Guests

Other Links

", - "pub_date_ms": 1543834800017, - "guid_from_rss": "gid://art19-episode-locator/V0/3NB2Qv5duR9Q5DGswnGa7R31to3M60gmiXhPD6Ou1Fk", - "listennotes_url": "https://www.listennotes.com/e/00d8c43df3f94eb7b409135fcba6a083/", - "audio_length_sec": 3338, - "explicit_content": false, - "maybe_audio_invalid": false, - "listennotes_edit_url": "https://www.listennotes.com/e/00d8c43df3f94eb7b409135fcba6a083/#edit" - }, - "type": "episode", - "notes": "", - "added_at_ms": 1565460047367 - } - ], - "total": 38, - "thumbnail": "https://production.listennotes.com/podcast-playlists/podcasts-about-podcasting-0LlKxjtQnf1-m1pe7z60bsw.300x300.jpg", - "visibility": "public", - "description": "A curated playlist of podcasts by Wenbin Fang.", - "listennotes_url": "https://www.listennotes.com/playlists/podcasts-about-podcasting-m1pe7z60bsw/episodes/", - "last_timestamp_ms": 1565460047367, - "total_audio_length_sec": 112194 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "m1pe7z60bsw", - "description": "A 11-character playlist id, which can be used to further fetch detailed playlist metadata via `GET /playlists/{id}`." - }, - "name": { - "type": "string", - "example": "My podcast playlist", - "description": "Playlist name." - }, - "type": { - "enum": [ - "episode_list", - "podcast_list" - ], - "type": "string", - "example": "episode_list", - "description": "The type of this playlist, which should be either **episode_list** or **podcast_list**.\n" - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/playlist/image/6907e8ff6b6c45df94cc059753f369cc.JPEG", - "description": "High resolution image url of the playlist." - }, - "items": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "integer", - "example": 23, - "description": "Playlist item id." - }, - "data": { - "oneOf": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Celebration Recap, Jason Fry and Christian Blauvelt Interviews \u2013 SWBW #101", - "description": "Episode name." - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "description": { - "type": "string", - "example": "

Disney chief Bob Iger shared news about Star Wars movies in 2020 and beyond, but some media outlets gave conflicting reports about it. Here's the real scoop. Punch it!

***We\u2019re listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u2019ll get some fabulous rewards for your pledge.***\u00a0

Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast.

Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!

\n", - "description": "Html of this episode's full description" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "maybe_audio_invalid": { - "type": "boolean", - "example": false, - "description": "Whether or not this episode's audio is invalid. Podcasters may delete the original audio." - }, - "listennotes_edit_url": { - "type": "string", - "example": "https://www.listennotes.com/e/11b34041e804491b9704d11f283c74de/#edit", - "description": "Edit url of this episode where you can update the audio url if you find the audio is broken." - } - } - }, - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - }, - { - "type": "object", - "properties": { - "audio": { - "type": "string", - "example": "https://example.com/audio.mp3", - "description": "Audio url, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/playlist/image/6907e8ff6b6c45df94cc059753f369cc.JPEG", - "description": "High resolution image url of this custom audio." - }, - "title": { - "type": "string", - "example": "An awesome audio to listen.", - "description": "Custom audio title." - }, - "thumbnail": { - "type": "string", - "example": "https://d3sv2eduhewoas.cloudfront.net/playlist/image/48477deae02649d7ab9d3f1b3966af38.JPEG", - "description": "Low resolution image url of this custom audio." - }, - "pub_date_ms": { - "type": "integer", - "example": 1595567028133, - "description": "Published date (in milliseconds) of this custom audio.\nFor now, it's the same as **added_at_ms** of this playlist item.\n" - }, - "audio_length_sec": { - "type": "integer", - "example": 253, - "description": "Audio length in seconds." - } - }, - "description": "A custom audio in a playlist, which is a type of playlist item." - }, - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "96fc400171364e32897b25d84a8ed8ec", - "description": "Episode id or podcast id." - }, - "error": { - "type": "string", - "example": "This episode is deleted from the podcast database, because...", - "description": "Why this episode or podcast is deleted?" - }, - "title": { - "type": "string", - "example": "This is a test episode", - "description": "Episode title or podcast title." - }, - "status": { - "type": "string", - "example": "deleted", - "description": "The status of this episode or podcast. For now, the only possible value is **deleted**." - } - }, - "description": "A deleted episode or podcast.\nAn episode or a podcast could be deleted from our podcast database.\nPossible reasons: 1) Podcast producers sometimes delete their old episodes. 2) Copyright issues.\n" - } - ] - }, - "type": { - "enum": [ - "episode", - "custom_audio", - "podcast" - ], - "type": "string", - "example": "episode", - "description": "The type of this playlist item.\nIf a playlist is **episode_list**, then an item could be either **episode** or **custom_audio**.\nIf it's **podcast_list**, then an item can only be **podcast**.\n" - }, - "notes": { - "type": "string", - "example": "This is a good episode.", - "description": "Notes for this item." - }, - "added_at_ms": { - "type": "integer", - "example": 1595567004958, - "description": "Timestamp (in milliseconds) when this item is added." - } - }, - "description": "An item in a playlist" - }, - "description": "A list of playlist items." - }, - "total": { - "type": "integer", - "example": 325, - "description": "Total number of items in this playlist." - }, - "thumbnail": { - "type": "string", - "example": "https://d3sv2eduhewoas.cloudfront.net/playlist/image/48477deae02649d7ab9d3f1b3966af38.JPEG", - "description": "Low resolution image url of the playlist." - }, - "visibility": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string", - "example": "public", - "description": "Visibility of this playlist." - }, - "description": { - "type": "string", - "example": "A curated playlist of podcasts about podcasting.", - "description": "Playlist description." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/listen/podcasts-about-podcasting-m1pe7z60bsw/?display=episode", - "description": "The url of this playlist on ListenNotes.com." - }, - "last_timestamp_ms": { - "type": "integer", - "example": 1595641092907, - "description": "Passed to the **last_timestamp_ms** parameter of `GET /playlists/{id}` to paginate through items of that playlist.\n" - }, - "total_audio_length_sec": { - "type": "integer", - "example": 234567, - "description": "Total audio length of all episodes in this playlist, in seconds. It will have a valid value only when type is **episode_list**. In other words, it will be 0 if type is **podcast_list**." - } - } -} -``` -
- + "last_timestamp_ms": 0, + "sort": "recent_added_first" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-playlists-id) +### fetchMyPlaylists -### Fetch a list of your playlists. +Fetch a list of your playlists. -Function Name: **fetchMyPlaylists** +`GET /playlists` -This endpoint returns same data as listennotes.com/listen under your account. +This endpoint lists playlists with an active membership for the API admin, including playlists they created or joined. +Each playlist includes its saved default **type** and a **listennotes_url** for that view. You can use the **page** parameter to do pagination and fetch more playlists. - -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchMyPlaylists({ page: 1, sort: 'name_a_to_z', }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.fetchMyPlaylists({ + "sort": "recent_added_first", + "page": 1 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-playlists). - - -
- Click to see example response - -```json -{ - "total": 3, - "has_next": false, - "playlists": [ - { - "id": "kr3-ta28cJu", - "name": "Wenbin Fang's Podcast Playlist", - "image": "https://production.listennotes.com/podcast-playlists/wenbin-fangs-podcast-playlist-aIykg5GvmcA-kr3-ta28cJu.300x299.jpg", - "thumbnail": "https://production.listennotes.com/podcast-playlists/wenbin-fangs-podcast-playlist-aIykg5GvmcA-kr3-ta28cJu.300x299.jpg", - "visibility": "public", - "description": "Wenbin Fang\u2019s master playlist. Just listen to individual episodes, rather than subscribing to tons of podcasts. How I listen to podcasts: https://lnns.co/6ArPszTwvDE", - "episode_count": 6310, - "podcast_count": 90, - "listennotes_url": "https://www.listennotes.com/playlists/wenbin-fangs-podcast-playlist-kr3-ta28cJu/episodes/", - "total_audio_length_sec": 19114953 - }, - { - "id": "m1pe7z60bsw", - "name": "Podcasts about podcasting", - "image": "https://production.listennotes.com/podcast-playlists/podcasts-about-podcasting-4bU7MZIlEVO-m1pe7z60bsw.1600x1600.jpg", - "thumbnail": "https://production.listennotes.com/podcast-playlists/podcasts-about-podcasting-0LlKxjtQnf1-m1pe7z60bsw.300x300.jpg", - "visibility": "public", - "description": "A curated playlist of podcasts by Wenbin Fang.", - "episode_count": 38, - "podcast_count": 2, - "listennotes_url": "https://www.listennotes.com/playlists/podcasts-about-podcasting-m1pe7z60bsw/episodes/", - "total_audio_length_sec": 112194 - }, - { - "id": "uIK85BM6EWJ", - "name": "There's a podcast for that!", - "image": "https://production.listennotes.com/podcast-playlists/theres-a-podcast-for-that-ROmWwgXrJhc-uIK85BM6EWJ.300x300.jpg", - "thumbnail": "https://production.listennotes.com/podcast-playlists/theres-a-podcast-for-that-ROmWwgXrJhc-uIK85BM6EWJ.300x300.jpg", - "visibility": "public", - "description": "Inspired by \"There's an app for that\". Email me if you want to become a contributor of this list: hello@listennotes.com", - "episode_count": 0, - "podcast_count": 133, - "listennotes_url": "https://www.listennotes.com/playlists/theres-a-podcast-for-that-uIK85BM6EWJ/podcasts/", - "total_audio_length_sec": 0 - } - ], - "page_number": 1, - "has_previous": false, - "next_page_number": 2, - "previous_page_number": 0 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "total": { - "type": "integer", - "example": 325 - }, - "has_next": { - "type": "boolean", - "example": true - }, - "playlists": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "m1pe7z60bsw", - "description": "A 11-character playlist id, which can be used to further fetch detailed playlist metadata via `GET /playlists/{id}`." - }, - "name": { - "type": "string", - "example": "My podcast playlist", - "description": "Playlist name." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/playlist/image/6907e8ff6b6c45df94cc059753f369cc.JPEG", - "description": "High resolution image url of the playlist." - }, - "thumbnail": { - "type": "string", - "example": "https://d3sv2eduhewoas.cloudfront.net/playlist/image/48477deae02649d7ab9d3f1b3966af38.JPEG", - "description": "Low resolution image url of the playlist." - }, - "visibility": { - "enum": [ - "public", - "unlisted", - "private" - ], - "type": "string", - "example": "public", - "description": "Visibility of this playlist." - }, - "description": { - "type": "string", - "example": "A curated playlist of podcasts about podcasting.", - "description": "Playlist description." - }, - "episode_count": { - "type": "integer", - "example": 23, - "description": "The number of episodes (including custom audio) in this playlist." - }, - "podcast_count": { - "type": "integer", - "example": 10, - "description": "The number of podcasts in this playlist." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/listen/podcasts-about-podcasting-m1pe7z60bsw/?display=episode", - "description": "The url of this playlist on ListenNotes.com." - }, - "last_timestamp_ms": { - "type": "integer", - "example": 1595641092907, - "description": "Passed to the **last_timestamp_ms** parameter of `GET /playlists/{id}` to paginate through items of that playlist.\n" - }, - "total_audio_length_sec": { - "type": "integer", - "example": 234567, - "description": "Total audio length of all episodes in this playlist, in seconds." - } - }, - "description": "A playlist" - } - }, - "page_number": { - "type": "integer", - "example": 2 - }, - "has_previous": { - "type": "boolean", - "example": true - }, - "next_page_number": { - "type": "integer", - "example": 3 - }, - "previous_page_number": { - "type": "integer", - "example": 1 - } - } -} -``` -
- - +[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-playlists) +### fetchAudienceForPodcast -### Fetch trending search terms +Fetch audience demographics for a podcast -Function Name: **fetchTrendingSearches** +`GET /podcasts/{id}/audience` -Fetch up to 10 most recent trending search terms on the Listen Notes platform. +Fetch audience demographics for a podcast - 1) directly measured on the Listen Notes platform; 2) only supports audience breakdown by regions for now; 3) not every podcast has data. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchTrendingSearches().then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.fetchAudienceForPodcast({ + "id": "25212ac3c53240a880dd5032e547047b" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-trending_searches). - - -
- Click to see example response - -```json -{ - "terms": [ - "Vivek Ramaswamy", - "\"Mindset Coach\"", - "Holden Karnofsky", - "Natalee Holloway", - "Oppenheimer", - "Julie Lythcott-Haims", - "Bill Perkins", - "Affirmative Action", - "\"Robert F. Kennedy Jr\"", - "Richard Hanania" - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "terms" - ], - "properties": { - "terms": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "Taliban", - "Andrew Cuomo", - "john McAfee" - ], - "description": "Trending search terms" - } - } -} -``` -
+[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id-audience) +### fetchPodcastsByDomain +Fetch podcasts by a publisher's domain name +`GET /podcasts/domains/{domain_name}` -### Fetch related search terms - -Function Name: **fetchRelatedSearches** - -Suggest related search terms. The results are more comprehensive than from `GET /typeahead`. This endpoint is available only in the PRO/ENTERPRISE plan. +Fetch podcasts by a publisher's domain name, e.g., nytimes.com, wondery.com, npr.org... +Each request will return up to 10 podcasts. You can use the `page` parameter to paginate. -Example: ```javascript - const { Client } = require('podcast-api'); - -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchRelatedSearches({ q: 'evergrande' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); + +client.fetchPodcastsByDomain({ + "domain_name": "nytimes.com", + "page": 1 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-related_searches). - - -
- Click to see example response - -```json -{ - "terms": [ - "evergrande group", - "evergrande news", - "evergrande stock", - "evergrande china", - "evergrande default", - "evergrande collapse", - "evergrande debt", - "evergrande crisis" - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "terms" - ], - "properties": { - "terms": { - "type": "array", - "items": { - "type": "string" - }, - "example": [ - "evergrande stock", - "evergrande china", - "evergrande group", - "evergrande news" - ], - "description": "Related search terms" - } - } -} -``` -
+[Full API documentation](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-domains-domain_name) +### createPlaylist +Create a playlist. +`POST /playlists` -### Spell check on a search term +Create an empty playlist owned by the API admin. Name is required; description defaults to an empty string, visibility defaults to public, and type defaults to episode_list. Set type to podcast_list to make podcasts the default view. The response includes the saved type and its listennotes_url. -Function Name: **spellcheck** +Only playlists owned by your admin API account can be modified; contributor membership does not grant write access. -Suggest a list of words that correct the spelling errors of a search term. This endpoint is available only in the PRO/ENTERPRISE plan. - -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.spellcheck({ q: 'evergrand stok' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.createPlaylist({ + "name": "My favorite podcasts", + "description": "Podcasts and episodes to revisit.", + "visibility": "public", + "type": "episode_list" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-spellcheck). - - -
- Click to see example response - -```json -{ - "tokens": [ - { - "token": "evergrand", - "offset": 0, - "suggestion": "evergrande" - }, - { - "token": "stok", - "offset": 10, - "suggestion": "stock" - } - ], - "corrected_text_html": "evergrande stock" -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "required": [ - "tokens", - "corrected_text_html" - ], - "properties": { - "tokens": { - "type": "array", - "items": { - "type": "object", - "properties": { - "token": { - "type": "string", - "example": "evergrand", - "description": "The misspelled word" - }, - "offset": { - "type": "integer", - "example": 5, - "description": "The zero-based offset from the beginning of the text query string to the word that is misspelled" - }, - "suggestion": { - "type": "string", - "example": "evergrande", - "description": "A word that corrects the spelling error" - } - } - }, - "description": "The word in the text query string that is not spelled correctly" - }, - "corrected_text_html": { - "type": "string", - "example": "evergrande stock", - "description": "The corrected text for the entire search term (multiple words/tokens), where misspelled tokens are replaced with the correct texts and html tags " - } - } -} -``` -
- +[Full API documentation](https://www.listennotes.com/api/docs/#post-api-v2-playlists) +### updatePlaylist +Update playlist metadata. -### Fetch audience demographics for a podcast +`PUT /playlists/{id}` -Function Name: **fetchAudienceForPodcast** +Update any subset of name, description, visibility, and type. Omitted fields remain unchanged; at least one field is required. Switching to private rotates the playlist RSS secret. Type selects the saved default view (episode_list or podcast_list) and the returned listennotes_url; changing it preserves all existing episodes and podcasts. -Fetch audience demographics for a podcast - 1) directly measured on the Listen Notes platform; 2) only supports audience breakdown by regions for now; 3) not every podcast has data. +Only playlists owned by your admin API account can be modified; contributor membership does not grant write access. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); - -client.fetchAudienceForPodcast({ id: '25212ac3c53240a880dd5032e547047b' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); - +client.updatePlaylist({ + "id": "m1pe7z60bsw", + "name": "My favorite podcasts", + "description": "Podcasts and episodes to revisit.", + "visibility": "public", + "type": "podcast_list" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); ``` -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-id-audience). - - -
- Click to see example response - -```json -{ - "by_regions": [ - { - "ratio": "52.53%", - "region": "us" - }, - { - "ratio": "6.53%", - "region": "ca" - }, - { - "ratio": "5.90%", - "region": "gb" - }, - { - "ratio": "4.55%", - "region": "in" - }, - { - "ratio": "4.06%", - "region": "au" - }, - { - "ratio": "3.27%", - "region": "de" - }, - { - "ratio": "1.24%", - "region": "fr" - }, - { - "ratio": "1.17%", - "region": "nl" - }, - { - "ratio": "1.11%", - "region": "sg" - }, - { - "ratio": "0.89%", - "region": "es" - }, - { - "ratio": "0.78%", - "region": "za" - }, - { - "ratio": "0.77%", - "region": "br" - }, - { - "ratio": "0.77%", - "region": "pl" - }, - { - "ratio": "0.70%", - "region": "se" - }, - { - "ratio": "0.66%", - "region": "hk" - }, - { - "ratio": "0.62%", - "region": "nz" - }, - { - "ratio": "0.58%", - "region": "kr" - }, - { - "ratio": "0.57%", - "region": "ie" - }, - { - "ratio": "0.56%", - "region": "id" - }, - { - "ratio": "0.55%", - "region": "it" - }, - { - "ratio": "0.51%", - "region": "ch" - }, - { - "ratio": "0.48%", - "region": "ph" - }, - { - "ratio": "0.47%", - "region": "no" - }, - { - "ratio": "0.44%", - "region": "jp" - }, - { - "ratio": "0.43%", - "region": "be" - }, - { - "ratio": "0.42%", - "region": "tw" - }, - { - "ratio": "0.42%", - "region": "pt" - }, - { - "ratio": "0.41%", - "region": "mx" - }, - { - "ratio": "0.39%", - "region": "gr" - }, - { - "ratio": "0.36%", - "region": "ro" - }, - { - "ratio": "0.34%", - "region": "ru" - }, - { - "ratio": "0.34%", - "region": "at" - }, - { - "ratio": "0.32%", - "region": "il" - }, - { - "ratio": "0.32%", - "region": "fi" - }, - { - "ratio": "0.30%", - "region": "pk" - }, - { - "ratio": "0.29%", - "region": "dk" - }, - { - "ratio": "0.28%", - "region": "cz" - }, - { - "ratio": "0.26%", - "region": "th" - }, - { - "ratio": "0.25%", - "region": "vn" - }, - { - "ratio": "0.23%", - "region": "ae" - }, - { - "ratio": "0.22%", - "region": "ua" - }, - { - "ratio": "0.21%", - "region": "hr" - }, - { - "ratio": "0.20%", - "region": "bg" - }, - { - "ratio": "0.20%", - "region": "my" - }, - { - "ratio": "0.19%", - "region": "tr" - }, - { - "ratio": "0.18%", - "region": "sa" - }, - { - "ratio": "0.17%", - "region": "ar" - }, - { - "ratio": "0.17%", - "region": "sk" - }, - { - "ratio": "0.15%", - "region": "ee" - }, - { - "ratio": "0.14%", - "region": "hu" - }, - { - "ratio": "0.14%", - "region": "co" - }, - { - "ratio": "0.13%", - "region": "si" - }, - { - "ratio": "0.11%", - "region": "ng" - }, - { - "ratio": "0.10%", - "region": "eg" - }, - { - "ratio": "0.10%", - "region": "cl" - }, - { - "ratio": "0.10%", - "region": "rs" - }, - { - "ratio": "0.10%", - "region": "ke" - }, - { - "ratio": "2.32%", - "region": "others" - } - ] -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "by_regions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "ratio": { - "type": "string", - "example": "20.22%", - "description": "percentage of audience from this specific region" - }, - "region": { - "type": "string", - "example": "us", - "description": "2-letter country code of a region." - } - } - } - } - } -} -``` -
+[Full API documentation](https://www.listennotes.com/api/docs/#put-api-v2-playlists-id) +### addPlaylistItem +Add an episode or podcast to a playlist. +`POST /playlists/{id}/items` -### Fetch podcasts by a publisher's domain name +Provide exactly one non-empty episode_id or podcast_id; an empty unused ID field is ignored. Invalid ID formats return 400 and identify the field. A missing episode or podcast returns 404 with an error such as "Episode not found: {episode_id}." or "Podcast not found: {podcast_id}.". Existing active items are reused (200); new or restored items return 201. Omitted notes preserve existing notes, including when restoring a deleted item; supplied notes replace them. -Function Name: **fetchPodcastsByDomain** +```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -Fetch podcasts by a publisher's domain name, e.g., nytimes.com, wondery.com, npr.org... -Each request will return up to 10 podcasts. You can use the `page` parameter to paginate. +client.addPlaylistItem({ + "id": "m1pe7z60bsw", + "episode_id": "e53e6992a5b7492f9ea6fcd85d9ad95f", + "notes": "Worth a listen." +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` +[Full API documentation](https://www.listennotes.com/api/docs/#post-api-v2-playlists-id-items) -Example: -```javascript +### deletePlaylistItem -const { Client } = require('podcast-api'); +Remove an item from a playlist. -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +`DELETE /playlists/{id}/items/{item_id}` -client.fetchPodcastsByDomain({ domain_name: 'nytimes.com' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +Delete a playlist item. Repeating deletion of the same item succeeds. This does not delete the episode or podcast from the podcast database. -``` +Only playlists owned by your admin API account can be modified; contributor membership does not grant write access. -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-podcasts-domains-domain_name). - - -
- Click to see example response - -```json -{ - "has_next": true, - "podcasts": [ - { - "id": "b1091fb5382e4112b0f260b242e22b07", - "rss": "https://feeds.simplecast.com/2xzUiHxw", - "type": "episodic", - "email": "matterofopinion@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS8yeHpVaUh4dw==", - "spotify_url": "https://open.spotify.com/show/6bmhSFLKtApYClEuSH8q42", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/matter-of-opinion-new-york-times-opinion-wC_ORf2yG97-Xn9BoFDx4ZR.1400x1400.jpg", - "title": "Matter of Opinion", - "country": "United States", - "website": "https://www.nytimes.com/column/matter-of-opinion?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 99, - 122, - 216 - ], - "itunes_id": 1438024613, - "publisher": "New York Times Opinion", - "thumbnail": "https://production.listennotes.com/podcasts/matter-of-opinion-new-york-times-opinion-qbElpzjgGen-Xn9BoFDx4ZR.300x300.jpg", - "is_claimed": false, - "description": "Thoughts, aloud. Hosted by Michelle Cottle, Ross Douthat, Carlos Lozada and Lydia Polgreen. Every Thursday, from New York Times Opinion.\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 69, - "total_episodes": 236, - "listennotes_url": "https://www.listennotes.com/c/b1091fb5382e4112b0f260b242e22b07/", - "audio_length_sec": 2121, - "explicit_content": false, - "latest_episode_id": "744266c3d79e4a2892ca568490e4cec2", - "latest_pub_date_ms": 1694077200000, - "earliest_pub_date_ms": 1538652714213, - "update_frequency_hours": 170, - "listen_score_global_rank": "0.05%" - }, - { - "id": "c527eca3ab2a4fde91756c937bc077ef", - "rss": "https://feeds.simplecast.com/Z81L_Fet", - "type": "episodic", - "email": "tbrandpodcasts@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9aODFMX0ZldA==", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-next-chapter-by-american-express-IrR9KqDCk4w-rn4UHT2iD8G.1400x1400.jpg", - "title": "The Next Chapter by American Express Business Class", - "country": "United States", - "website": "https://the-next-chapter-by-american-express-business-class.simplecast.com?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 171, - 94, - 104, - 93, - 67, - 100 - ], - "itunes_id": 1627810508, - "publisher": "American Express", - "thumbnail": "https://production.listennotes.com/podcasts/the-next-chapter-by-american-express-Oe5HoYQABJx-rn4UHT2iD8G.300x300.jpg", - "is_claimed": false, - "description": "Join the host Cardiff Garcia as he speaks with best-selling business authors. Each episode will focus on an essential work in our guest\u2019s career and culminate in a look ahead to their next chapter. The series will offer inspiration for those looking to expand their business or elevate their career. This season, our guests will include Maria Konnikova, Mashama Bailey and John O. Morisano, David Epstein, Susan Cain, Julie Zhuo and James Clear.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 43, - "total_episodes": 14, - "listennotes_url": "https://www.listennotes.com/c/c527eca3ab2a4fde91756c937bc077ef/", - "audio_length_sec": 1735, - "explicit_content": false, - "latest_episode_id": "389ecd244fe14d8f808cdf439f54691d", - "latest_pub_date_ms": 1690963200000, - "earliest_pub_date_ms": 1654289098013, - "update_frequency_hours": 336, - "listen_score_global_rank": "1.5%" - }, - { - "id": "f2eb196b20884b0490cc60a58b05bbb6", - "rss": "https://feeds.simplecast.com/54nAGcIl", - "type": "episodic", - "email": "thedaily@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS81NG5BR2NJbA==", - "spotify_url": "https://open.spotify.com/show/3IM0lmZxpFAY7CwMuv9H4g", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "mikiebarb", - "facebook_handle": "nytimes", - "amazon_music_url": "https://music.amazon.com/podcasts/65957f22-45da-431f-8090-83fae75e505a/the-daily", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-daily-the-new-york-times-wLJZBNmd5_Y-xp7nhsmSkX2.1400x1400.jpg", - "title": "The Daily", - "country": "United States", - "website": "https://www.nytimes.com/the-daily?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 93, - 216, - 213, - 99, - 67 - ], - "itunes_id": 1200361736, - "publisher": "The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/the-daily-the-new-york-times-lDnVGaIf7Ks-xp7nhsmSkX2.300x300.jpg", - "is_claimed": true, - "description": "This is what the news should sound like. The biggest stories of our time, told by the best journalists in the world. Hosted by Michael Barbaro and Sabrina Tavernise. Twenty minutes a day, five days a week, ready by 6 a.m.\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 90, - "total_episodes": 1934, - "listennotes_url": "https://www.listennotes.com/c/f2eb196b20884b0490cc60a58b05bbb6/", - "audio_length_sec": 1713, - "explicit_content": false, - "latest_episode_id": "15ecd9abef6641ab88154bdd46ee98b7", - "latest_pub_date_ms": 1694079900000, - "earliest_pub_date_ms": 1484687988900, - "update_frequency_hours": 26, - "listen_score_global_rank": "0.01%" - }, - { - "id": "5c6bf053fa6c4d03b4729dbf9cecdfef", - "rss": "https://feeds.simplecast.com/W1rB_kgL", - "type": "episodic", - "email": "popcast@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9XMXJCX2tnTA==", - "spotify_url": "https://open.spotify.com/show/3ugDIELXIU7erW5Xp49tWp", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "nytimesarts", - "facebook_handle": "ParelesNYTimes", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/popcast-the-new-york-times-nlOhfJ9TAt8-dVnjvqYg8ah.1400x1400.jpg", - "title": "Popcast", - "country": "United States", - "website": "https://www.nytimes.com/column/popcast-pop-music-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 122, - 134 - ], - "itunes_id": 120315823, - "publisher": "The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/popcast-the-new-york-times-6UPvZJzsd9e-dVnjvqYg8ah.300x300.jpg", - "is_claimed": false, - "description": "The Popcast is hosted by Jon Caramanica, a pop music critic for The New York Times. It covers the latest in popular music criticism, trends and news. \n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 58, - "total_episodes": 430, - "listennotes_url": "https://www.listennotes.com/c/5c6bf053fa6c4d03b4729dbf9cecdfef/", - "audio_length_sec": 3076, - "explicit_content": false, - "latest_episode_id": "0e2ea7063e0446fd93f32233997bc43a", - "latest_pub_date_ms": 1694029038000, - "earliest_pub_date_ms": 1406865600413, - "update_frequency_hours": 91, - "listen_score_global_rank": "0.5%" - }, - { - "id": "4685e82279e84054a608c6364912ad73", - "rss": "https://feeds.simplecast.com/Kctn1RDB", - "type": "episodic", - "email": "therunup@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9LY3RuMVJEQg==", - "spotify_url": "https://open.spotify.com/show/6mWcEpRBJ3hCMtcBQiKYVv", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-run-up-the-new-york-times-Qe1i-onFph5--Yp_oy2DA8J.1400x1400.jpg", - "title": "The Run-Up", - "country": "United States", - "website": "https://www.nytimes.com/column/election-run-up-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 99 - ], - "itunes_id": 1142083165, - "publisher": "The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/the-run-up-the-new-york-times-RYloHdW6KEA--Yp_oy2DA8J.300x300.jpg", - "is_claimed": false, - "description": "The Run-Up will be back in the fall of 2023 \u2014 and we will be coming back as a weekly show as the presidential election heats up. Stay tuned!\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 56, - "total_episodes": 70, - "listennotes_url": "https://www.listennotes.com/c/4685e82279e84054a608c6364912ad73/", - "audio_length_sec": 2190, - "explicit_content": false, - "latest_episode_id": "62ab12a3d10c4896b1c315155e31215f", - "latest_pub_date_ms": 1687510800000, - "earliest_pub_date_ms": 1470715200044, - "update_frequency_hours": 167, - "listen_score_global_rank": "0.5%" - }, - { - "id": "f9f8aa526f1e498286f205d66cf9e524", - "rss": "https://feeds.simplecast.com/82FI35Px", - "type": "episodic", - "email": "ezrakleinshow@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS84MkZJMzVQeA==", - "spotify_url": "https://open.spotify.com/show/3oB5noYIwEB2dMAREj2F7S", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "ezraklein", - "facebook_handle": "", - "amazon_music_url": "https://music.amazon.com/podcasts/c4a3b1da-5433-49e6-8c14-0e1da53be78c/the-ezra-klein-show", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-ezra-klein-show-new-york-times-opinion-wo89m7aPWxu-uirbhjX_SZ9.1400x1400.jpg", - "title": "The Ezra Klein Show", - "country": "United States", - "website": "https://www.nytimes.com/ezra-klein-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 99, - 122, - 67 - ], - "itunes_id": 1548604447, - "publisher": "New York Times Opinion", - "thumbnail": "https://production.listennotes.com/podcasts/the-ezra-klein-show-new-york-times-opinion-TqWs8-_zMvn-uirbhjX_SZ9.300x300.jpg", - "is_claimed": false, - "description": "*** Named a best podcast of 2021 by Time, Vulture, Esquire and The Atlantic. ***\nEach Tuesday and Friday, Ezra Klein invites you into a conversation on something that matters. How do we address climate change if the political system fails to act? Has the logic of markets infiltrated too many aspects of our lives? What is the future of the Republican Party? What do psychedelics teach us about consciousness? What does sci-fi understand about our present that we miss? Can our food system be just to humans and animals alike?\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 72, - "total_episodes": 261, - "listennotes_url": "https://www.listennotes.com/c/f9f8aa526f1e498286f205d66cf9e524/", - "audio_length_sec": 4103, - "explicit_content": false, - "latest_episode_id": "0b9506adda7b4283bc56bf3781a8eefa", - "latest_pub_date_ms": 1693904400000, - "earliest_pub_date_ms": 1610502169251, - "update_frequency_hours": 127, - "listen_score_global_rank": "0.05%" - }, - { - "id": "92d189ce198c4112a23b600b196662c5", - "rss": "https://feeds.simplecast.com/iAH8x82K", - "type": "serial", - "email": "serialshows@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "", - "spotify_url": "", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-retrievals-serial-productions-the-new-5iqbaQTN4GI-z_CqYrIa8lo.1400x1400.jpg", - "title": "The Retrievals", - "country": "United States", - "website": "https://nytimes.com/theretrievals?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 99, - 67, - 135 - ], - "itunes_id": 1691599042, - "publisher": "Serial Productions & The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/the-retrievals-serial-productions-the-new-GhjqpwzcfWb-z_CqYrIa8lo.300x300.jpg", - "is_claimed": false, - "description": "Dozens of women seeking to become mothers came to a fertility clinic at Yale. A (five-part) narrative series about the shocking events that unfolded there. From Serial Productions and The New York Times.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 68, - "total_episodes": 7, - "listennotes_url": "https://www.listennotes.com/c/92d189ce198c4112a23b600b196662c5/", - "audio_length_sec": 2018, - "explicit_content": false, - "latest_episode_id": "1cb9e35aeadc406c992d65f5ca403d88", - "latest_pub_date_ms": 1691056800000, - "earliest_pub_date_ms": 1687399200006, - "update_frequency_hours": 167, - "listen_score_global_rank": "0.05%" - }, - { - "id": "c3c933b6d22d4a06b236e5493b4603cc", - "rss": "https://feeds.simplecast.com/l2i9YnTd", - "type": "episodic", - "email": "hardfork@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9sMmk5WW5UZA==", - "spotify_url": "https://open.spotify.com/show/44fllCS2FTFr2x2kjP9xeT", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/hard-fork-the-new-york-times-vEr0edDkOFp-M2AZCUFvHzY.1400x1400.jpg", - "title": "Hard Fork", - "country": "United States", - "website": "https://www.nytimes.com/column/hard-fork?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 122, - 67, - 127 - ], - "itunes_id": 1528594034, - "publisher": "The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/hard-fork-the-new-york-times-mwetHTuP2Az-M2AZCUFvHzY.300x300.jpg", - "is_claimed": false, - "description": "\u201cHard Fork\u201d is a show about the future that\u2019s already here. Each week, journalists Kevin Roose and Casey Newton explore and make sense of the latest in the rapidly changing world of tech. \n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 67, - "total_episodes": 243, - "listennotes_url": "https://www.listennotes.com/c/c3c933b6d22d4a06b236e5493b4603cc/", - "audio_length_sec": 2456, - "explicit_content": false, - "latest_episode_id": "15a4d8e9a4584106af9ddf7112a84f6e", - "latest_pub_date_ms": 1693558800000, - "earliest_pub_date_ms": 1599624000194, - "update_frequency_hours": 168, - "listen_score_global_rank": "0.05%" - }, - { - "id": "10904b22ae9a4311b2060002562b94aa", - "rss": "https://feeds.simplecast.com/J6oAIHuK", - "type": "episodic", - "email": "tbrandpodcasts@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9KNm9BSUh1Sw==", - "spotify_url": "https://open.spotify.com/show/3U20MqXwrI3fZpDYquwH6m", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/built-for-change-accenture-ru_Si-c8pxC-sRZa48ULEk6.1400x1400.jpg", - "title": "Built for Change", - "country": "United States", - "website": "https://www.accenture.com/us-en/insights/company/built-for-change-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 122, - 244, - 127, - 67, - 97, - 93 - ], - "itunes_id": 1561378348, - "publisher": "Accenture", - "thumbnail": "https://production.listennotes.com/podcasts/built-for-change-accenture-nCDqeVuGzYP-sRZa48ULEk6.300x300.jpg", - "is_claimed": false, - "description": "The modern business landscape is constantly evolving, presenting unprecedented challenges for leaders. The Built for Change podcast, hosted by journalist Elise Hu and technologist Josh Klein, explores these challenges and how leaders can adapt to thrive in this environment.\n\nThrough insightful conversations with industry thought leaders, the podcast explores innovative approaches to meeting customer needs, the relationship between employee well-being and company success, and the role of technology and sustainability in driving business transformation.\n\nWhether you're a business leader seeking to stay ahead of the curve or simply interested in the latest developments in the world of business, Built for Change offers valuable insights and actionable advice. Subscribe to the podcast today and join the conversation on how to thrive in an ever-changing business landscape.", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 44, - "total_episodes": 32, - "listennotes_url": "https://www.listennotes.com/c/10904b22ae9a4311b2060002562b94aa/", - "audio_length_sec": 1620, - "explicit_content": false, - "latest_episode_id": "7deef80c60a94dbdaa6a282434ed5758", - "latest_pub_date_ms": 1693382400000, - "earliest_pub_date_ms": 1617375600031, - "update_frequency_hours": 537, - "listen_score_global_rank": "1%" - }, - { - "id": "ea36396fab7d47a8b6c578decfc81834", - "rss": "https://feeds.simplecast.com/MssIhx9y", - "type": "episodic", - "email": "books@nytimes.com", - "extra": { - "url1": "", - "url2": "", - "url3": "", - "google_url": "https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9Nc3NJaHg5eQ==", - "spotify_url": "https://open.spotify.com/show/1q3tsOS9XhqgSslnyZyKV6", - "youtube_url": "", - "linkedin_url": "", - "wechat_handle": "", - "patreon_handle": "", - "twitter_handle": "nytimesbooks", - "facebook_handle": "", - "amazon_music_url": "", - "instagram_handle": "" - }, - "image": "https://production.listennotes.com/podcasts/the-book-review-the-new-york-times-K0shf57H1FS-nbG5CgVhJKz.1400x1400.jpg", - "title": "The Book Review", - "country": "United States", - "website": "https://www.nytimes.com/column/book-review-podcast?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "language": "English", - "genre_ids": [ - 67, - 100, - 122, - 104 - ], - "itunes_id": 120315179, - "publisher": "The New York Times", - "thumbnail": "https://production.listennotes.com/podcasts/the-book-review-the-new-york-times-EmN1vCyg95q-nbG5CgVhJKz.300x300.jpg", - "is_claimed": false, - "description": "The world's top authors and critics join host Gilbert Cruz and editors at The New York Times Book Review to talk about the week's top books, what we're reading and what's going on in the literary world.\n\nListen to this podcast in New York Times Audio, our new iOS app for news subscribers. Download now at nytimes.com/audioapp", - "looking_for": { - "guests": false, - "cohosts": false, - "sponsors": false, - "cross_promotion": false - }, - "listen_score": 66, - "total_episodes": 456, - "listennotes_url": "https://www.listennotes.com/c/ea36396fab7d47a8b6c578decfc81834/", - "audio_length_sec": 3083, - "explicit_content": false, - "latest_episode_id": "b3704fbf9ad445f39c914781ac6aeb16", - "latest_pub_date_ms": 1692381111000, - "earliest_pub_date_ms": 1418360400434, - "update_frequency_hours": 168, - "listen_score_global_rank": "0.05%" - } - ], - "page_number": 1, - "has_previous": false, - "next_page_number": 2 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "has_next": { - "type": "boolean", - "example": true - }, - "podcasts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "type": { - "enum": [ - "episodic", - "serial" - ], - "type": "string", - "example": "episodic", - "description": "The type of this podcast - episodic or serial." - }, - "email": { - "type": "string", - "example": "hello@example.com", - "description": "The email of this podcast's producer. This field is available only in the PRO/ENTERPRISE plan." - }, - "extra": { - "type": "object", - "properties": { - "url1": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url2": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "url3": { - "type": "string", - "description": "Url affiliated with this podcast" - }, - "google_url": { - "type": "string", - "example": "https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuYXJ0MTkuY29tL2pvaG4tc29sb21vbi1yZXBvcnRz", - "description": "Google Podcasts url for this podcast" - }, - "spotify_url": { - "type": "string", - "example": "https://open.spotify.com/show/2rQJUP9Y3HxemiW3JHt9WV", - "description": "Spotify url for this podcast" - }, - "youtube_url": { - "type": "string", - "example": "https://www.youtube.com/sw7x7", - "description": "YouTube url affiliated with this podcast" - }, - "linkedin_url": { - "type": "string", - "description": "LinkedIn url affiliated with this podcast" - }, - "wechat_handle": { - "type": "string", - "description": "WeChat username affiliated with this podcast" - }, - "patreon_handle": { - "type": "string", - "example": "sw7x7", - "description": "Patreon username affiliated with this podcast" - }, - "twitter_handle": { - "type": "string", - "example": "SW7x7podcast", - "description": "Twitter username affiliated with this podcast" - }, - "facebook_handle": { - "type": "string", - "example": "sw7x7", - "description": "Facebook username affiliated with this podcast" - }, - "amazon_music_url": { - "type": "string", - "example": "https://music.amazon.com/podcasts/6fc6d683-9ef3-4850-9c35-8e8b1a42a147/the-lock-sportscast", - "description": "Amazon Music url for this podcast" - }, - "instagram_handle": { - "type": "string", - "example": "sw7x7", - "description": "Instagram username affiliated with this podcast" - } - } - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "title": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Podcast name." - }, - "country": { - "type": "string", - "example": "United States", - "description": "The country where this podcast is produced." - }, - "website": { - "type": "string", - "example": "http://sw7x7.com/", - "description": "Website url of this podcast." - }, - "language": { - "type": "string", - "example": "English", - "description": "The language of this podcast. You can get all supported languages from `GET /languages`." - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "publisher": { - "type": "string", - "example": "Planet Broadcasting", - "description": "Podcast publisher name." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "is_claimed": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is claimed by its producer on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "description": { - "type": "string", - "example": "

The Star Wars 7x7 Podcast is Rebel-rousing fun for everyday Jedi, between 7 and 14 minutes a day, 7 days a week. Join host Allen Voivod for Star Wars news, history, interviews, trivia, and deep dives into the Star Wars story as told in movies, books, comics, games, cartoons, and more. Subscribe now for your daily dose of Star Wars joy. It's destiny unleashed!

", - "description": "Html of this episode's full description" - }, - "looking_for": { - "type": "object", - "properties": { - "guests": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for guests." - }, - "cohosts": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cohosts." - }, - "sponsors": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for sponsors." - }, - "cross_promotion": { - "type": "boolean", - "example": true, - "description": "Whether this podcast is looking for cross promotion opportunities with other podcasts." - } - } - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "total_episodes": { - "type": "integer", - "example": 324, - "description": "Total number of episodes in this podcast." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 1291, - "description": "Average audio length of all episodes of this podcast. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "latest_episode_id": { - "type": "string", - "example": "d057092e57cc4ced80e0efaa196593d9", - "description": "The id of the most recently published episode of this podcast, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "latest_pub_date_ms": { - "type": "integer", - "example": 1557499770000, - "description": "The published date of the latest episode of this podcast. In milliseconds" - }, - "earliest_pub_date_ms": { - "type": "integer", - "example": 1470667902000, - "description": "The published date of the oldest episode of this podcast. In milliseconds" - }, - "update_frequency_hours": { - "type": "integer", - "example": 168, - "description": "How frequently does this podcast release a new episode? In hours. For example, if the value is 166, then it's every 166 hours (or weekly)." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - } - } - }, - "page_number": { - "type": "integer", - "example": 2 - }, - "has_previous": { - "type": "boolean", - "example": true - }, - "next_page_number": { - "type": "integer", - "example": 3 - }, - "previous_page_number": { - "type": "integer", - "example": 1 - } - } -} -``` -
+```javascript +const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); +client.deletePlaylistItem({ + "id": "m1pe7z60bsw", + "item_id": 23 +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` +[Full API documentation](https://www.listennotes.com/api/docs/#delete-api-v2-playlists-id-items-item_id) +### updatePlaylistItemNotes -### Find individual episodes by searching for their titles +Update notes for a playlist item. -Function Name: **searchEpisodeTitles** +`PUT /playlists/{id}/items/{item_id}` -Conduct targeted searches for individual episodes by title and refine results using the podcast id such as -Listen Notes Podcast ID, Apple Podcasts ID, Spotify ID, or RSS feed URL. -This endpoint is specially designed to streamline the import of specific episodes from platforms -like Apple Podcasts and Spotify into your application. -Compared to the GET /search endpoint, which performs full-text searches across multiple fields, -this endpoint focuses solely on episode titles for enhanced accuracy and performance. +Replace item notes, or send an empty string to clear them. The item ID and added_at_ms remain unchanged. +Only playlists owned by your admin API account can be modified; contributor membership does not grant write access. -Example: ```javascript - const { Client } = require('podcast-api'); +const client = Client({ apiKey: process.env.LISTEN_API_KEY || null }); -// If api_key is null, the sdk will connect to a mock server that'll -// return fake data for testing purpose -const client = Client({ - apiKey: process.env.LISTEN_API_KEY || null, -}); +client.updatePlaylistItemNotes({ + "id": "m1pe7z60bsw", + "item_id": 23, + "notes": "" +}) + .then((response) => console.log(response.data)) + .catch((error) => console.error(error)); +``` -client.searchEpisodeTitles({ q: 'Jerusalem Demsas on The Dispossessed' }).then((response) => { - console.log(response.data); -}).catch((error) => { - console.log(error); -}); +[Full API documentation](https://www.listennotes.com/api/docs/#put-api-v2-playlists-id-items-item_id) -``` + -See all available parameters on the [API Docs page](https://www.listennotes.com/api/docs/#get-api-v2-search_episode_titles). - - -
- Click to see example response - -```json -{ - "took": 0.214, - "count": 1, - "total": 1, - "results": [ - { - "id": "9df80c4856e641568f75cb98b653ab5e", - "rss": "https://cowenconvos.libsyn.com/rss", - "link": "https://cowenconvos.libsyn.com/jerusalem-demsas-on-the-dispossessed-gullivers-travels-and-of-boys-and-menjerusalem-demsas-on-the-dispossessed-gullivers-travels-and-of-boys-and-menjerusalem-demsas-on-the-dispossessed-gullivers-travels-and-of-boys-and-men?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website", - "audio": "https://www.listennotes.com/e/p/9df80c4856e641568f75cb98b653ab5e/", - "image": "https://production.listennotes.com/podcasts/conversations-with-tyler-mercatus-center-at-z-TDdAxC3RO-LRMWNKAThUg.1400x1400.jpg", - "podcast": { - "id": "cda18f20f1be4ac7b3cce7d0eb168fff", - "image": "https://production.listennotes.com/podcasts/conversations-with-tyler-mercatus-center-at-z-TDdAxC3RO-LRMWNKAThUg.1400x1400.jpg", - "genre_ids": [ - 122 - ], - "thumbnail": "https://production.listennotes.com/podcasts/conversations-with-tyler-mercatus-center-at-6rAZtD2EleW-LRMWNKAThUg.300x300.jpg", - "listen_score": 63, - "title_original": "Conversations with Tyler", - "listennotes_url": "https://www.listennotes.com/c/cda18f20f1be4ac7b3cce7d0eb168fff/", - "title_highlighted": "Conversations with Tyler", - "publisher_original": "Mercatus Center at George Mason University", - "publisher_highlighted": "Mercatus Center at George Mason University", - "listen_score_global_rank": "0.1%" - }, - "itunes_id": 983795625, - "thumbnail": "https://production.listennotes.com/podcasts/conversations-with-tyler-mercatus-center-at-6rAZtD2EleW-LRMWNKAThUg.300x300.jpg", - "pub_date_ms": 1694001600000, - "guid_from_rss": "5c548120-153e-4abf-bd82-b81450ff685b", - "title_original": "Jerusalem Demsas on The Dispossessed, Gulliver's Travels, and Of Boys and Men", - "listennotes_url": "https://www.listennotes.com/e/9df80c4856e641568f75cb98b653ab5e/", - "audio_length_sec": 3788, - "explicit_content": false, - "title_highlighted": "Jerusalem Demsas on The Dispossessed, Gulliver's Travels, and Of Boys and Men", - "description_original": "

In this special episode, Tyler sat down with Jerusalem Demsas, staff writer at The Atlantic, to discuss three books: The Dispossessed by Ursula K. Le Guin, Gulliver's Travels by Jonathan Swift, and Of Boys and Men by Richard V. Reeves.

Spanning centuries and genres and yet provoking similar questions, these books prompted Tyler and Jerusalem to wrestle with enduring questions about human nature, gender dynamics, the purpose of travel, and moral progress, including debating whether Le Guin prefers the anarchist utopia she depicts, dissecting Swift's stance on science and slavery, questioning if travel makes us happier or helps us understand ourselves, comparing Gulliver and Shevek's alienation and restlessness, considering Swift\u2019s views on the difficulty of moral progress, reflecting on how feminism links to moral progress and gender equality, contemplating whether imaginative fiction or policy analysis is more likely to spur social change, and more.

Read a\u00a0full transcript enhanced with helpful links, or watch the full video.

Recorded May 22nd, 2023.

Other ways to connect

", - "description_highlighted": "...In this special episode, Tyler sat down with Jerusalem Demsas, staff writer at The Atlantic, to discuss three books: The Dispossessed by Ursula K. Le Guin, Gulliver's Travels by Jonathan Swift, and Of Boys and Men by Richard V. Reeves. \nSpanning centuries and genres and yet provoking similar questions, these books prompted Tyler and Jerusalem to wrestle with enduring questions about human nature, gender dynamics, the purpose of travel, and moral progress, including debating whether Le Guin prefers the anarchist utopia she depicts, dissecting Swift's stance on science and slavery, questioning if travel makes us happier or helps us understand ourselves, comparing Gulliver and Shevek's alienation and restlessness, considering Swift\u2019s views on the difficulty of moral progress, reflecting on how feminism links to moral progress and gender equality, contemplating whether imaginative fiction or policy analysis is more likely to spur social change, and more. \nRead a\u00a0full transcript enhanced with helpful links, or watch the full video. \nRecorded May 22nd, 2023. \nOther ways to connect \n \nFollow us on\u00a0X\u00a0and\u00a0Instagram \nFollow\u00a0Tyler on X \nFollow Jerusalem on X \nJoin our\u00a0Discord \nEmail us:\u00a0cowenconvos@mercatus.gmu.edu \nLearn more about Conversations with Tyler and other Mercatus Center podcasts\u00a0here. ...", - "transcripts_highlighted": [] - } - ], - "next_offset": 1 -} -``` -
- - - -
- Click to see response schema - -```json -{ - "type": "object", - "properties": { - "took": { - "type": "number", - "example": 0.093, - "description": "The time it took to fetch these search results. In seconds." - }, - "count": { - "type": "integer", - "example": 10, - "description": "The number of search results in this page." - }, - "total": { - "type": "integer", - "example": 1989, - "description": "The total number of search results." - }, - "results": { - "type": "array", - "items": [ - { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d82e50314174754a3b603912448e812", - "description": "Episode id, which can be used to further fetch detailed episode metadata via `GET /episodes/{id}`." - }, - "rss": { - "type": "string", - "example": "https://sw7x7.libsyn.com/rss", - "description": "RSS url of this podcast. This field is available only in the PRO/ENTERPRISE plan." - }, - "link": { - "type": "string", - "example": "https://www.npr.org/2020/01/22/798532179/soleimanis-iran", - "description": "Web link of this episode." - }, - "audio": { - "type": "string", - "example": "https://www.listennotes.com/e/p/11b34041e804491b9704d11f283c74de/", - "description": "Audio url of this episode, which can be played directly." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork image.\nIf you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "podcast": { - "type": "object", - "properties": { - "id": { - "type": "string", - "example": "4d3fe717742d4963a85562e9f84d8c79", - "description": "Podcast id, which can be used to further fetch detailed podcast metadata via `GET /podcasts/{id}`." - }, - "image": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.1400x1400.jpg", - "description": "Image url for this podcast's artwork. If you are using PRO/ENTERPRISE plan, then it's\na high resolution image (1400x1400). If you are using FREE plan, then it's the same as **thumbnail**,\nlow resolution image (300x300).\n" - }, - "genre_ids": { - "type": "array", - "items": { - "type": "integer", - "description": "Genre ids." - }, - "example": [ - 138, - 86, - 160, - 68, - 82, - 100, - 101 - ] - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image url for this podcast's artwork (300x300)." - }, - "listen_score": { - "type": "integer", - "example": 81, - "description": "The estimated popularity score of a podcast compared to all other rss-based public podcasts in the world on a scale from 0 to 100.\nIf the score is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - }, - "title_original": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Plain text of podcast name." - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/c/4d3fe717742d4963a85562e9f84d8c79/", - "description": "The url of this podcast on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "title_highlighted": { - "type": "string", - "example": "Star Wars 7x7 | Star Wars News, Interviews, and More!", - "description": "Highlighted segment of podcast name." - }, - "publisher_original": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Plain text of this podcast's publisher name." - }, - "publisher_highlighted": { - "type": "string", - "example": "Star Wars Daily, by Allen Voivod", - "description": "Highlighted segment of this podcast's publisher name." - }, - "listen_score_global_rank": { - "type": "string", - "example": "0.5%", - "description": "The estimated popularity ranking of a podcast compared to all other rss-based public podcasts in the world.\nFor example, if the value is 0.5%, then this podcast is one of the top 0.5% most popular shows out of all podcasts globally, ranked by Listen Score.\nIf the ranking is not available, it'll be null. Learn more at listennotes.com/listen-score\n" - } - }, - "description": "The podcast that this episode belongs to." - }, - "itunes_id": { - "type": "integer", - "example": 896354638, - "description": "iTunes id for this podcast." - }, - "thumbnail": { - "type": "string", - "example": "https://cdn-images-1.listennotes.com/podcasts/exponent-ben-thompson-james-allworth-OaJSjb4xQv3.300x300.jpg", - "description": "Thumbnail image (300x300) url for this episode.\nIf an episode doesn't have its own image, then this field would be the url of the podcast artwork thumbnail image.\n" - }, - "pub_date_ms": { - "type": "integer", - "example": 1474873200000, - "description": "Published date for this episode. In millisecond." - }, - "title_original": { - "type": "string", - "example": "815: Star Wars 2020 Movie and Beyond!", - "description": "Plain text of this episode' title" - }, - "listennotes_url": { - "type": "string", - "example": "https://www.listennotes.com/e/4d82e50314174754a3b603912448e812/", - "description": "The url of this episode on [ListenNotes.com](https://www.ListenNotes.com)." - }, - "audio_length_sec": { - "type": "integer", - "example": 567, - "description": "Audio length of this episode. In seconds." - }, - "explicit_content": { - "type": "boolean", - "example": false, - "description": "Whether this podcast contains explicit language." - }, - "title_highlighted": { - "type": "string", - "example": "815: Star Wars 2020 Movie and Beyond!", - "description": "Highlighted segment of this episode's title" - }, - "description_original": { - "type": "string", - "example": "Yeah, Star Wars Celebration Orlando is 32 days away, but what's the scoop on Celebration 2018? Plus, Rebels Day is Saturday, and much more in our update. Punch it! ***We're listener supported! Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you\u00e2\u20ac\u2122ll get some fabulous rewards for your pledge.*** Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to comment on any of the content of this episode! If you like what you've heard, please leave us a rating or review on iTunes or Stitcher, which will also help more people discover this Star Wars podcast. Don't forget to join the Star Wars 7x7 fun on Facebook at Facebook.com/SW7x7, and follow the breaking news Twitter feed at Twitter.com/SW7x7Podcast. We're also on Pinterest and Instagram as \"SW7x7\" too, and we'd love to connect with you there!\n", - "description": "Plain text of this episode's description" - }, - "description_highlighted": { - "type": "string", - "example": "...Go to http://Patreon.com/sw7x7 to donate to the Star Wars 7x7 podcast, and you'll get some fabulous rewards for your pledge.*** Check out SW7x7.com for full Star Wars 7x7 show notes and links, and to\n", - "description": "Highlighted segment of this episode's description" - }, - "transcripts_highlighted": { - "type": "array", - "items": { - "type": "string", - "example": "00:21:27 when Disney bought the Star Wars franchise from George Lucas they had a plan lots of Star Wars movies new Star Wars movies every month another one was just released while I was talking\n" - }, - "description": "Up to 2 highlighted segments of the audio transcript of this episode." - } - }, - "description": "When **type** is *episode*." - } - ], - "description": "A list of search results." - }, - "next_offset": { - "type": "integer", - "example": 10, - "description": "Pass this value to the **offset** parameter to do pagination of search results." - } - } -} -``` -
+## Development +Use Node.js 22.13+ or 24+ and Yarn 3.3.1 for development and CI. +```sh +yarn install --immutable +yarn test-node --runInBand +yarn test-workers --runInBand +yarn lint +``` +Tests use local mocked transports and do not call the API. Generated methods, +`src/api-contract.json`, and marked README sections are maintained by +`devtools/api-sdks/sync.py` in the Listen Notes monorepo. See its +`devtools/api-sdks/README.md` for synchronization and release instructions. +Edit the canonical OpenAPI specification or SDK registry there, then regenerate. +The transport implementations and README content outside generation markers +remain handwritten. The package and tests run independently of that generator. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..fa1b757 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,25 @@ +const js = require('@eslint/js'); + +module.exports = [ + { ignores: ['examples/**', '**/*.node*.js'] }, + js.configs.recommended, + { + files: ['**/*.js'], + languageOptions: { + ecmaVersion: 2021, + sourceType: 'commonjs', + globals: { + console: 'readonly', + URL: 'readonly', + URLSearchParams: 'readonly', + __dirname: 'readonly', + }, + }, + }, + { + files: ['**/*ForWorkers*.js'], + languageOptions: { + globals: { fetch: 'readonly', Response: 'readonly' }, + }, + }, +]; diff --git a/package.json b/package.json index 6b2be9f..beaf4cd 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "podcast-api", - "version": "2.0.4", + "version": "3.0.0", "description": "JavaScript bindings for the Listen Notes Podcast API", "main": "src/PodcastApiClient.js", "scripts": { "clean": "rm -rf ./.nyc_output ./node_modules/.cache", - "lint": "eslint --ext .js,.jsx .", + "lint": "eslint .", "test": "jest --config jest.config.node.json && jest --config jest.config.minifare.json", "test-node": "jest --config jest.config.node.json", "test-workers": "jest --config jest.config.minifare.json" @@ -24,7 +24,7 @@ "Node.js" ], "engines": { - "node": ">=10.*" + "node": ">=22" }, "author": "Listen Notes, Inc. (https://www.listennotes.com/)", "license": "MIT", @@ -33,15 +33,14 @@ }, "homepage": "https://www.listennotes.com/api/", "dependencies": { - "axios": "^0.21.1" + "axios": "1.19.0" }, "devDependencies": { - "eslint": "^7.25.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsx-a11y": "^6.4.1", - "jest": "^26.6.3", - "jest-environment-miniflare": "^2.10.0", - "mocha": "^8.3.2", - "prettier": "^2.2.1" - } + "@eslint/js": "10.0.1", + "eslint": "10.10.0", + "jest": "30.5.1", + "jest-environment-miniflare": "2.14.3", + "prettier": "3.9.8" + }, + "packageManager": "yarn@3.3.1" } diff --git a/src/PodcastApiClientForNode.js b/src/PodcastApiClientForNode.js index f1a6d91..e1e6623 100644 --- a/src/PodcastApiClientForNode.js +++ b/src/PodcastApiClientForNode.js @@ -3,24 +3,25 @@ const { addApiMethodsToClient } = require('./PodcastApiMethods'); const ClientForNode = (config = {}) => { const axios = require('axios'); - - axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; - this.httpClient = axios.create({ + const httpClient = axios.create({ baseURL: config.apiKey ? API_BASE_PROD : API_BASE_TEST, timeout: 30000, headers: { 'X-ListenAPI-Key': config.apiKey || '', 'User-Agent': config.userAgent || defaultUserAgent, }, + // Use the same standard encoding as the Workers transport. + paramsSerializer: (params) => new URLSearchParams(params).toString(), }); - - this.httpClient._get = (path, params) => this.httpClient.get(path, { params }); - this.httpClient._post = (path, params) => this.httpClient.post(path, new URLSearchParams(params).toString()); - this.httpClient._delete = (path) => this.httpClient.delete(path); - - return addApiMethodsToClient(this); + const formConfig = (params) => ({ + params, + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + }); + httpClient._get = (path, params) => httpClient.get(path, { params }); + httpClient._post = (path, params, query) => httpClient.post(path, new URLSearchParams(params).toString(), formConfig(query)); + httpClient._put = (path, params, query) => httpClient.put(path, new URLSearchParams(params).toString(), formConfig(query)); + httpClient._delete = (path, params) => httpClient.delete(path, { params }); + return addApiMethodsToClient({ httpClient }); }; -module.exports = { - ClientForNode, -}; +module.exports = { ClientForNode }; diff --git a/src/PodcastApiClientForWorkers.js b/src/PodcastApiClientForWorkers.js index 3dff57c..842681d 100644 --- a/src/PodcastApiClientForWorkers.js +++ b/src/PodcastApiClientForWorkers.js @@ -1,85 +1,41 @@ -const {API_BASE_PROD, API_BASE_TEST, defaultUserAgent} = require('./Constants'); -const {addApiMethodsToClient} = require('./PodcastApiMethods'); +const { API_BASE_PROD, API_BASE_TEST, defaultUserAgent } = require('./Constants'); +const { addApiMethodsToClient } = require('./PodcastApiMethods'); -const _fetch = (path, config, method = 'GET', queryParams = {}, formParams = null) => { +const _fetch = async (path, config, method, queryParams = {}, formParams = null) => { let url = `${config.apiKey ? API_BASE_PROD : API_BASE_TEST}${path}`; const headers = { 'X-ListenAPI-Key': config.apiKey || '', 'User-Agent': config.userAgent || defaultUserAgent, }; - const fetchConfig = { - method, - headers, - }; - let formParamsString = null; - if (formParams) { - fetchConfig.body = formParams; - formParamsString = [...formParams.entries()].map( - x => `${encodeURIComponent(x[0])}=${encodeURIComponent(x[1])}`).join('&'); + const query = new URLSearchParams(queryParams).toString(); + if (query) url += `?${query}`; + const body = formParams === null ? null : new URLSearchParams(formParams).toString(); + const fetchConfig = { method, headers }; + if (body !== null) { + fetchConfig.body = body; + headers['Content-Type'] = 'application/x-www-form-urlencoded'; } - if (queryParams) { - url = `${url}?${new URLSearchParams(queryParams).toString()}` + const responseConfig = { params: queryParams, data: body, url: path, method: method.toLowerCase() }; + const response = await fetch(url, fetchConfig); + const responseHeaders = Object.fromEntries(response.headers.entries()); + if (!response.ok) { + const error = new Error(`HTTP ${response.status}`); + error.response = { status: response.status, config: responseConfig, headers: responseHeaders }; + throw error; } - const responseConfig = { - params: queryParams, - data: formParamsString, - url: path, - method: method.toLowerCase(), - }; - const responseHeaders = {}; - return fetch(url, fetchConfig).then((response) => { - if (response.headers) { - for (const pair of response.headers.entries()) { - responseHeaders[pair[0]] = pair[1]; - } - } - - if (response.ok) { - return response; - } else { - const err = new Error(`HTTP ${response.status}`); - err.response = { - status: response.status, - config: responseConfig, - headers: responseHeaders, - }; - throw err; - } - }).then((response) => { - return response.json(); - }).then((data) => { - return { - config: responseConfig, - headers: responseHeaders, - data, - } - }); + return { config: responseConfig, headers: responseHeaders, data: await response.json() }; }; const ClientForWorkers = (config = {}) => { - this.httpClient = { - _get: (path, params) => { - return _fetch(path, config, 'GET', params); - }, - - _post: (path, params) => { - let formData = null; - if (params && Object.keys(params).length > 0) { - formData = new FormData(); - Object.keys(params).forEach(function (key) { - formData.append(key, params[key]); - }); - } - return _fetch(path, config, 'POST', {}, formData) - }, - - _delete: (path) => { - return _fetch(path, config, 'DELETE') - }, + // Snapshot configuration so later clients or caller mutations cannot change it. + const settings = { ...config }; + const httpClient = { + _get: (path, params) => _fetch(path, settings, 'GET', params), + _post: (path, params, query) => _fetch(path, settings, 'POST', query, params), + _put: (path, params, query) => _fetch(path, settings, 'PUT', query, params), + _delete: (path, params) => _fetch(path, settings, 'DELETE', params), }; - return addApiMethodsToClient(this); + return addApiMethodsToClient({ httpClient }); }; -module.exports = { - ClientForWorkers, -}; +module.exports = { ClientForWorkers }; diff --git a/src/PodcastApiMethods.js b/src/PodcastApiMethods.js index 39c29bf..5b61aad 100644 --- a/src/PodcastApiMethods.js +++ b/src/PodcastApiMethods.js @@ -1,84 +1,98 @@ -const addApiMethodsToClient = (client) => { - client.search = (params) => client.httpClient._get('/search', params); - - client.searchEpisodeTitles = (params) => client.httpClient._get('/search_episode_titles', params); - - client.typeahead = (params) => client.httpClient._get('/typeahead', params); - - client.spellcheck = (params) => client.httpClient._get('/spellcheck', params); - - client.fetchRelatedSearches = (params) => client.httpClient._get('/related_searches', params); - - client.fetchTrendingSearches = (params) => client.httpClient._get('/trending_searches', params); - - client.fetchBestPodcasts = (params) => client.httpClient._get('/best_podcasts', params); - - client.fetchPodcastById = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/podcasts/${id}`, otherParams); - }; - - client.fetchEpisodeById = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/episodes/${id}`, otherParams); - }; - - client.batchFetchPodcasts = (params) => client.httpClient._post('/podcasts', params); - - client.batchFetchEpisodes = (params) => client.httpClient._post('/episodes', params); - - client.fetchCuratedPodcastsListById = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/curated_podcasts/${id}`, otherParams); - }; - - client.fetchCuratedPodcastsLists = (params) => client.httpClient._get('/curated_podcasts', params); - - client.fetchPodcastGenres = (params) => client.httpClient._get('/genres', params); - - client.fetchPodcastRegions = (params) => client.httpClient._get('/regions', params); - - client.fetchPodcastLanguages = (params) => client.httpClient._get('/languages', params); - - client.justListen = (params) => client.httpClient._get('/just_listen', params); - - client.fetchRecommendationsForPodcast = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/podcasts/${id}/recommendations`, otherParams); - }; - - client.fetchRecommendationsForEpisode = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/episodes/${id}/recommendations`, otherParams); - }; - - client.fetchPlaylistById = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/playlists/${id}`, otherParams); - }; - - client.fetchMyPlaylists = (params) => client.httpClient._get('/playlists', params); - - client.submitPodcast = (params) => client.httpClient._post('/podcasts/submit', params); - - client.deletePodcast = (params) => { - const { id, reason } = params; - return client.httpClient._delete(`/podcasts/${id}?reason=${reason || ''}`); - }; - - client.fetchAudienceForPodcast = (params) => { - const { id, ...otherParams } = params; - return client.httpClient._get(`/podcasts/${id}/audience`, otherParams); - }; - - client.fetchPodcastsByDomain = (params) => { - const { domain_name, ...otherParams } = params; - return client.httpClient._get(`/podcasts/domains/${domain_name}`, otherParams); - }; +// Generated by listennotes/devtools/api-sdks/sync.py javascript. Do not edit. +const { request } = require('./Request'); +const addApiMethodsToClient = (client) => { + client.search = (params = {}) => request( + client.httpClient, "GET", "/search", + {"path": [], "query": ["q", "sort_by_date", "type", "offset", "len_min", "len_max", "episode_count_min", "episode_count_max", "update_freq_min", "update_freq_max", "genre_ids", "published_before", "published_after", "only_in", "language", "region", "ocid", "ncid", "safe_mode", "unique_podcasts", "interviews_only", "sponsored_only", "page_size"], "body": []}, params); + client.typeahead = (params = {}) => request( + client.httpClient, "GET", "/typeahead", + {"path": [], "query": ["q", "show_podcasts", "show_genres", "safe_mode"], "body": []}, params); + client.searchEpisodeTitles = (params = {}) => request( + client.httpClient, "GET", "/search_episode_titles", + {"path": [], "query": ["q", "podcast_id", "podcast_id_type"], "body": []}, params); + client.spellcheck = (params = {}) => request( + client.httpClient, "GET", "/spellcheck", + {"path": [], "query": ["q"], "body": []}, params); + client.fetchRelatedSearches = (params = {}) => request( + client.httpClient, "GET", "/related_searches", + {"path": [], "query": ["q"], "body": []}, params); + client.fetchTrendingSearches = (params = {}) => request( + client.httpClient, "GET", "/trending_searches", + {"path": [], "query": [], "body": []}, params); + client.fetchBestPodcasts = (params = {}) => request( + client.httpClient, "GET", "/best_podcasts", + {"path": [], "query": ["genre_id", "page", "region", "publisher_region", "language", "sort", "safe_mode"], "body": []}, params); + client.fetchPodcastById = (params = {}) => request( + client.httpClient, "GET", "/podcasts/{id}", + {"path": ["id"], "query": ["next_episode_pub_date", "sort"], "body": []}, params); + client.deletePodcast = (params = {}) => request( + client.httpClient, "DELETE", "/podcasts/{id}", + {"path": ["id"], "query": ["reason"], "body": []}, params); + client.fetchEpisodeById = (params = {}) => request( + client.httpClient, "GET", "/episodes/{id}", + {"path": ["id"], "query": ["show_transcript"], "body": []}, params); + client.batchFetchEpisodes = (params = {}) => request( + client.httpClient, "POST", "/episodes", + {"path": [], "query": [], "body": ["ids"]}, params); + client.batchFetchPodcasts = (params = {}) => request( + client.httpClient, "POST", "/podcasts", + {"path": [], "query": [], "body": ["ids", "rsses", "itunes_ids", "spotify_ids", "show_latest_episodes", "next_episode_pub_date"]}, params); + client.fetchCuratedPodcastsListById = (params = {}) => request( + client.httpClient, "GET", "/curated_podcasts/{id}", + {"path": ["id"], "query": [], "body": []}, params); + client.fetchPodcastGenres = (params = {}) => request( + client.httpClient, "GET", "/genres", + {"path": [], "query": ["top_level_only"], "body": []}, params); + client.fetchPodcastRegions = (params = {}) => request( + client.httpClient, "GET", "/regions", + {"path": [], "query": [], "body": []}, params); + client.fetchPodcastLanguages = (params = {}) => request( + client.httpClient, "GET", "/languages", + {"path": [], "query": [], "body": []}, params); + client.justListen = (params = {}) => request( + client.httpClient, "GET", "/just_listen", + {"path": [], "query": [], "body": []}, params); + client.fetchCuratedPodcastsLists = (params = {}) => request( + client.httpClient, "GET", "/curated_podcasts", + {"path": [], "query": ["page"], "body": []}, params); + client.fetchRecommendationsForPodcast = (params = {}) => request( + client.httpClient, "GET", "/podcasts/{id}/recommendations", + {"path": ["id"], "query": ["safe_mode"], "body": []}, params); + client.fetchRecommendationsForEpisode = (params = {}) => request( + client.httpClient, "GET", "/episodes/{id}/recommendations", + {"path": ["id"], "query": ["safe_mode"], "body": []}, params); + client.submitPodcast = (params = {}) => request( + client.httpClient, "POST", "/podcasts/submit", + {"path": [], "query": [], "body": ["rss", "email"]}, params); + client.fetchPlaylistById = (params = {}) => request( + client.httpClient, "GET", "/playlists/{id}", + {"path": ["id"], "query": ["type", "last_timestamp_ms", "sort"], "body": []}, params); + client.fetchMyPlaylists = (params = {}) => request( + client.httpClient, "GET", "/playlists", + {"path": [], "query": ["sort", "page"], "body": []}, params); + client.fetchAudienceForPodcast = (params = {}) => request( + client.httpClient, "GET", "/podcasts/{id}/audience", + {"path": ["id"], "query": [], "body": []}, params); + client.fetchPodcastsByDomain = (params = {}) => request( + client.httpClient, "GET", "/podcasts/domains/{domain_name}", + {"path": ["domain_name"], "query": ["page"], "body": []}, params); + client.createPlaylist = (params = {}) => request( + client.httpClient, "POST", "/playlists", + {"path": [], "query": [], "body": ["name", "description", "visibility", "type"]}, params); + client.updatePlaylist = (params = {}) => request( + client.httpClient, "PUT", "/playlists/{id}", + {"path": ["id"], "query": [], "body": ["name", "description", "visibility", "type"]}, params); + client.addPlaylistItem = (params = {}) => request( + client.httpClient, "POST", "/playlists/{id}/items", + {"path": ["id"], "query": [], "body": ["episode_id", "podcast_id", "notes"]}, params); + client.deletePlaylistItem = (params = {}) => request( + client.httpClient, "DELETE", "/playlists/{id}/items/{item_id}", + {"path": ["id", "item_id"], "query": [], "body": []}, params); + client.updatePlaylistItemNotes = (params = {}) => request( + client.httpClient, "PUT", "/playlists/{id}/items/{item_id}", + {"path": ["id", "item_id"], "query": [], "body": ["notes"]}, params); return client; }; -module.exports = { - addApiMethodsToClient, -}; +module.exports = { addApiMethodsToClient }; diff --git a/src/Request.js b/src/Request.js new file mode 100644 index 0000000..b29f5b2 --- /dev/null +++ b/src/Request.js @@ -0,0 +1,24 @@ +// Shared transport dispatch. Endpoint locations come from the generated methods. +const request = (httpClient, method, template, locations, params) => { + const query = {}; + const body = {}; + const path = template.replace(/\{([^}]+)\}/g, (_, name) => { + if (params[name] === undefined || params[name] === null || params[name] === '') { + throw new Error(`Missing path parameter: ${name}`); + } + return encodeURIComponent(params[name]); + }); + Object.keys(params).forEach((name) => { + const value = params[name]; + if (locations.path.includes(name) || value === undefined || value === null) return; + // Unknown fields retain the historical query/body behavior for forward compatibility. + const target = locations.query.includes(name) || method === 'GET' || method === 'DELETE' ? query : body; + target[name] = value; + }); + if (method === 'POST' || method === 'PUT') { + return httpClient[`_${method.toLowerCase()}`](path, body, query); + } + return httpClient[`_${method.toLowerCase()}`](path, query); +}; + +module.exports = { request }; diff --git a/src/api-contract.json b/src/api-contract.json new file mode 100644 index 0000000..91e464c --- /dev/null +++ b/src/api-contract.json @@ -0,0 +1,911 @@ +{ + "schema_version": 1, + "version": "3.0.0", + "operations": [ + { + "operationId": "search", + "func": "search", + "available_from": "2.0.4", + "method": "GET", + "path": "/search", + "parameters": [ + { + "name": "q", + "in": "query", + "required": true + }, + { + "name": "sort_by_date", + "in": "query", + "required": false + }, + { + "name": "type", + "in": "query", + "required": false + }, + { + "name": "offset", + "in": "query", + "required": false + }, + { + "name": "len_min", + "in": "query", + "required": false + }, + { + "name": "len_max", + "in": "query", + "required": false + }, + { + "name": "episode_count_min", + "in": "query", + "required": false + }, + { + "name": "episode_count_max", + "in": "query", + "required": false + }, + { + "name": "update_freq_min", + "in": "query", + "required": false + }, + { + "name": "update_freq_max", + "in": "query", + "required": false + }, + { + "name": "genre_ids", + "in": "query", + "required": false + }, + { + "name": "published_before", + "in": "query", + "required": false + }, + { + "name": "published_after", + "in": "query", + "required": false + }, + { + "name": "only_in", + "in": "query", + "required": false + }, + { + "name": "language", + "in": "query", + "required": false + }, + { + "name": "region", + "in": "query", + "required": false + }, + { + "name": "ocid", + "in": "query", + "required": false + }, + { + "name": "ncid", + "in": "query", + "required": false + }, + { + "name": "safe_mode", + "in": "query", + "required": false + }, + { + "name": "unique_podcasts", + "in": "query", + "required": false + }, + { + "name": "interviews_only", + "in": "query", + "required": false + }, + { + "name": "sponsored_only", + "in": "query", + "required": false + }, + { + "name": "page_size", + "in": "query", + "required": false + } + ], + "example_params": { + "q": "star wars", + "sort_by_date": 0, + "type": "episode", + "offset": 0, + "len_min": 10, + "len_max": 30, + "genre_ids": "68,82", + "published_before": 1580172454000, + "published_after": 0, + "only_in": "title,description", + "language": "English", + "region": "", + "safe_mode": 0, + "unique_podcasts": 0, + "interviews_only": 0, + "sponsored_only": 0, + "page_size": 10 + }, + "summary": "Full-text search", + "description": "Full-text search on episodes, podcasts, or curated lists of podcasts.\nUse the `offset` parameter to paginate through search results.\nThe FREE plan allows to see up to 30 search results (or `offset` < 30) per query.\nThe PRO plan allows to see up to 300 search results (or `offset` < 300) per query.\nThe ENTERPRISE plan allows to see up to 10,000 search results (or `offset` < 10000) per query." + }, + { + "operationId": "typeahead", + "func": "typeahead", + "available_from": "2.0.4", + "method": "GET", + "path": "/typeahead", + "parameters": [ + { + "name": "q", + "in": "query", + "required": true + }, + { + "name": "show_podcasts", + "in": "query", + "required": false + }, + { + "name": "show_genres", + "in": "query", + "required": false + }, + { + "name": "safe_mode", + "in": "query", + "required": false + } + ], + "example_params": { + "q": "star wars", + "show_podcasts": 1, + "show_genres": 1, + "safe_mode": 0 + }, + "summary": "Typeahead search", + "description": "Suggest search terms, podcast genres, and podcasts." + }, + { + "operationId": "searchEpisodeTitles", + "func": "searchEpisodeTitles", + "available_from": "2.0.4", + "method": "GET", + "path": "/search_episode_titles", + "parameters": [ + { + "name": "q", + "in": "query", + "required": true + }, + { + "name": "podcast_id", + "in": "query", + "required": false + }, + { + "name": "podcast_id_type", + "in": "query", + "required": false + } + ], + "example_params": { + "q": "Jerusalem Demsas on The Dispossessed" + }, + "summary": "Find individual episodes by searching for their titles", + "description": "Conduct targeted searches for individual episodes by title and refine results using the podcast id such as\nListen Notes Podcast ID, Apple Podcasts ID, Spotify ID, or RSS feed URL.\nThis endpoint is specially designed to streamline the import of specific episodes from platforms\nlike Apple Podcasts and Spotify into your application.\nCompared to the GET /search endpoint, which performs full-text searches across multiple fields,\nthis endpoint focuses solely on episode titles for enhanced accuracy and performance." + }, + { + "operationId": "spellcheck", + "func": "spellcheck", + "available_from": "2.0.4", + "method": "GET", + "path": "/spellcheck", + "parameters": [ + { + "name": "q", + "in": "query", + "required": true + } + ], + "example_params": { + "q": "microsft stock" + }, + "summary": "Spell check on a search term", + "description": "Suggest a list of words that correct the spelling errors of a search term. This endpoint is available only in the PRO/ENTERPRISE plan." + }, + { + "operationId": "getRelatedSearches", + "func": "fetchRelatedSearches", + "available_from": "2.0.4", + "method": "GET", + "path": "/related_searches", + "parameters": [ + { + "name": "q", + "in": "query", + "required": true + } + ], + "example_params": { + "q": "evergrande" + }, + "summary": "Fetch related search terms", + "description": "Suggest related search terms. The results are more comprehensive than from `GET /typeahead`. This endpoint is available only in the PRO/ENTERPRISE plan." + }, + { + "operationId": "getTrendingSearches", + "func": "fetchTrendingSearches", + "available_from": "2.0.4", + "method": "GET", + "path": "/trending_searches", + "parameters": [], + "example_params": {}, + "summary": "Fetch trending search terms", + "description": "Fetch up to 10 most recent trending search terms on the Listen Notes platform." + }, + { + "operationId": "getBestPodcasts", + "func": "fetchBestPodcasts", + "available_from": "2.0.4", + "method": "GET", + "path": "/best_podcasts", + "parameters": [ + { + "name": "genre_id", + "in": "query", + "required": false + }, + { + "name": "page", + "in": "query", + "required": false + }, + { + "name": "region", + "in": "query", + "required": false + }, + { + "name": "publisher_region", + "in": "query", + "required": false + }, + { + "name": "language", + "in": "query", + "required": false + }, + { + "name": "sort", + "in": "query", + "required": false + }, + { + "name": "safe_mode", + "in": "query", + "required": false + } + ], + "example_params": { + "genre_id": 93, + "page": 2, + "region": "us", + "sort": "listen_score", + "safe_mode": 0 + }, + "summary": "Fetch a list of best podcasts by genre", + "description": "Get a list of curated best podcasts by genre,\nwhich are curated by Listen Notes staffs based on various signals from the Internet, e.g.,\ntop charts on other podcast platforms, recommendations from mainstream media,\nuser activities on listennotes.com...\nYou can get the genre ids from `GET /genres` endpoint.\nThis endpoint returns same data as https://www.listennotes.com/best-podcasts/" + }, + { + "operationId": "getPodcastById", + "func": "fetchPodcastById", + "available_from": "2.0.4", + "method": "GET", + "path": "/podcasts/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "next_episode_pub_date", + "in": "query", + "required": false + }, + { + "name": "sort", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "4d3fe717742d4963a85562e9f84d8c79", + "next_episode_pub_date": 1479154463000, + "sort": "recent_first" + }, + "summary": "Fetch detailed meta data and episodes for a podcast by id", + "description": "Fetch detailed meta data and episodes for a specific podcast (up to 10 episodes each time).\nYou can use the **next_episode_pub_date** parameter to do pagination and fetch more episodes.\nDuring pagination with **next_episode_pub_date**, an empty **episodes** array in the response signals that no more episodes are available." + }, + { + "operationId": "deletePodcastById", + "func": "deletePodcast", + "available_from": "2.0.4", + "method": "DELETE", + "path": "/podcasts/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "reason", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "4d3fe717742d4963a85562e9f84d8c79", + "reason": "the podcaster wants to delete it" + }, + "summary": "Request to delete a podcast", + "description": "Podcast hosting services can use this endpoint to streamline the process of podcast deletion on behave of their users (podcasters). We will review the deletion request within 12 hours. If the podcast is already deleted, the \"status\" field in the response will be \"deleted\". Otherwise, the status field will be \"in review\". If you want to get a notification once the podcast is deleted, you can configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks" + }, + { + "operationId": "getEpisodeById", + "func": "fetchEpisodeById", + "available_from": "2.0.4", + "method": "GET", + "path": "/episodes/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "show_transcript", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "6b6d65930c5a4f71b254465871fed370", + "show_transcript": 1 + }, + "summary": "Fetch detailed meta data for an episode by id", + "description": "Fetch detailed meta data for a specific episode." + }, + { + "operationId": "getEpisodesInBatch", + "func": "batchFetchEpisodes", + "available_from": "2.0.4", + "method": "POST", + "path": "/episodes", + "parameters": [ + { + "name": "ids", + "in": "body", + "required": true + } + ], + "example_params": { + "ids": "c577d55b2b2b483c969fae3ceb58e362,0f34a9099579490993eec9e8c8cebb82" + }, + "summary": "Batch fetch basic meta data for episodes", + "description": "Batch fetch basic meta data for up to 10 episodes. This endpoint could be used to implement custom playlists for individual episodes. For detailed meta data of an individual episode, you need to use `GET /episodes/{id}`. This endpoint is available only in the PRO/ENTERPRISE plan." + }, + { + "operationId": "getPodcastsInBatch", + "func": "batchFetchPodcasts", + "available_from": "2.0.4", + "method": "POST", + "path": "/podcasts", + "parameters": [ + { + "name": "ids", + "in": "body", + "required": false + }, + { + "name": "rsses", + "in": "body", + "required": false + }, + { + "name": "itunes_ids", + "in": "body", + "required": false + }, + { + "name": "spotify_ids", + "in": "body", + "required": false + }, + { + "name": "show_latest_episodes", + "in": "body", + "required": false + }, + { + "name": "next_episode_pub_date", + "in": "body", + "required": false + } + ], + "example_params": { + "ids": "3302bc71139541baa46ecb27dbf6071a,68faf62be97149c280ebcc25178aa731,37589a3e121e40debe4cef3d9638932a,9cf19c590ff0484d97b18b329fed0c6a", + "rsses": "https://rss.art19.com/recode-decode,https://rss.art19.com/the-daily,https://www.npr.org/rss/podcast.php?id=510331,https://www.npr.org/rss/podcast.php?id=510331", + "itunes_ids": "1457514703,1386234384,659155419", + "spotify_ids": "3DDfEsKDIDrTlnPOiG4ZF4,4qDNe5Gvl1XxdLinUGEXrC,23NZCM4ik6o3UYkM473Itz", + "show_latest_episodes": 1, + "next_episode_pub_date": 1557394247000 + }, + "summary": "Batch fetch basic meta data for podcasts", + "description": "Batch fetch basic meta data for up to 10 podcasts.\nThis endpoint could be used to build something like OPML import,\nallowing users to import a bunch of podcasts via rss urls.\nFor detailed meta data (including episodes) of an individual podcast, you need to use `GET /podcasts/{id}`. This endpoint is available only in the PRO/ENTERPRISE plan." + }, + { + "operationId": "getCuratedPodcastById", + "func": "fetchCuratedPodcastsListById", + "available_from": "2.0.4", + "method": "GET", + "path": "/curated_podcasts/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + } + ], + "example_params": { + "id": "SDFKduyJ47r" + }, + "summary": "Fetch a curated list of podcasts by id", + "description": "Get detailed meta data of all podcasts in a specific curated list.\nThis endpoint returns same data as https://www.listennotes.com/curated-podcasts/" + }, + { + "operationId": "getGenres", + "func": "fetchPodcastGenres", + "available_from": "2.0.4", + "method": "GET", + "path": "/genres", + "parameters": [ + { + "name": "top_level_only", + "in": "query", + "required": false + } + ], + "example_params": { + "top_level_only": 1 + }, + "summary": "Fetch a list of podcast genres", + "description": "Get a list of podcast genres that are supported in Listen Notes.\nThe genre id can be passed to other endpoints as a parameter to get podcasts in a specific genre,\ne.g., `GET /best_podcasts`, `GET /search`...\nYou may want to cache the list of genres on the client side." + }, + { + "operationId": "getRegions", + "func": "fetchPodcastRegions", + "available_from": "2.0.4", + "method": "GET", + "path": "/regions", + "parameters": [], + "example_params": {}, + "summary": "Fetch a list of supported countries/regions for best podcasts", + "description": "It returns a dictionary of country codes (e.g., us, gb...) & country names (United States, United Kingdom...). The country code is used in the query parameter **region** of `GET /best_podcasts`." + }, + { + "operationId": "getLanguages", + "func": "fetchPodcastLanguages", + "available_from": "2.0.4", + "method": "GET", + "path": "/languages", + "parameters": [], + "example_params": {}, + "summary": "Fetch a list of supported languages for podcasts", + "description": "Get a list of languages that are supported in Listen Notes database. You can use the language string as query parameter in `GET /search`." + }, + { + "operationId": "justListen", + "func": "justListen", + "available_from": "2.0.4", + "method": "GET", + "path": "/just_listen", + "parameters": [], + "example_params": {}, + "summary": "Fetch a random podcast episode", + "description": "Recently published episodes are more likely to be fetched. Good luck!" + }, + { + "operationId": "getCuratedPodcasts", + "func": "fetchCuratedPodcastsLists", + "available_from": "2.0.4", + "method": "GET", + "path": "/curated_podcasts", + "parameters": [ + { + "name": "page", + "in": "query", + "required": false + } + ], + "example_params": { + "page": 2 + }, + "summary": "Fetch curated lists of podcasts", + "description": "A bunch of curated lists from online media. For each list, you'll get basic info of up to 5 podcasts. To get detailed meta data of all podcasts in a specific list, you need to use `GET /curated_podcasts/{id}`. We add new curated lists to the database on a daily basis." + }, + { + "operationId": "getPodcastRecommendations", + "func": "fetchRecommendationsForPodcast", + "available_from": "2.0.4", + "method": "GET", + "path": "/podcasts/{id}/recommendations", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "safe_mode", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "25212ac3c53240a880dd5032e547047b", + "safe_mode": 0 + }, + "summary": "Fetch recommendations for a podcast", + "description": "Fetch up to 8 podcast recommendations based on the given podcast id." + }, + { + "operationId": "getEpisodeRecommendations", + "func": "fetchRecommendationsForEpisode", + "available_from": "2.0.4", + "method": "GET", + "path": "/episodes/{id}/recommendations", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "safe_mode", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "254444fa6cf64a43a95292a70eb6869b", + "safe_mode": 0 + }, + "summary": "Fetch recommendations for an episode", + "description": "Fetch up to 8 episode recommendations based on the given episode id." + }, + { + "operationId": "submitPodcast", + "func": "submitPodcast", + "available_from": "2.0.4", + "method": "POST", + "path": "/podcasts/submit", + "parameters": [ + { + "name": "rss", + "in": "body", + "required": true + }, + { + "name": "email", + "in": "body", + "required": false + } + ], + "example_params": { + "rss": "https://feeds.megaphone.fm/committed", + "email": "hello@example.com" + }, + "summary": "Submit a podcast to Listen Notes database", + "description": "Podcast hosting services can use this endpoint to help your users directly submit a new podcast to Listen Notes database. If the podcast doesn't exist in the database, \"status\" in the response will be \"in review\", and we'll review it within 12 hours. If the podcast exists, \"status\" in the response will be \"found\". If this submission is rejected, \"status\" in the response will be \"rejected\". You can use `POST /podcasts` to check if multiple podcasts exist in the database. If you want to get a notification once the podcast is accepted, you can either specify the \"email\" parameter or configure a webhook url in the dashboard: listennotes.com/api/dashboard/#webhooks" + }, + { + "operationId": "getPlaylistById", + "func": "fetchPlaylistById", + "available_from": "2.0.4", + "method": "GET", + "path": "/playlists/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "type", + "in": "query", + "required": false + }, + { + "name": "last_timestamp_ms", + "in": "query", + "required": false + }, + { + "name": "sort", + "in": "query", + "required": false + } + ], + "example_params": { + "id": "m1pe7z60bsw", + "type": "episode_list", + "last_timestamp_ms": 0, + "sort": "recent_added_first" + }, + "summary": "Fetch a playlist's info and items (i.e., episodes or podcasts).", + "description": "A playlist can contain both episodes and podcasts, shown in separate views,\njust like playlists created via listennotes.com/listen/.\nThis endpoint fetches items from the saved default view unless **type** is specified.\nThe response type and listennotes_url describe the selected view.\nYou can use the **last_pub_date_ms** parameter to do pagination and fetch more items.\nA playlist can be **public** (discoverable on ListenNotes.com),\n**unlisted** (accessible to anyone who knows the playlist id),\nor **private** (accessible when the API admin has active playlist membership).\nPublic and unlisted playlists can also be fetched by ID regardless of their owner." + }, + { + "operationId": "getPlaylists", + "func": "fetchMyPlaylists", + "available_from": "2.0.4", + "method": "GET", + "path": "/playlists", + "parameters": [ + { + "name": "sort", + "in": "query", + "required": false + }, + { + "name": "page", + "in": "query", + "required": false + } + ], + "example_params": { + "sort": "recent_added_first", + "page": 1 + }, + "summary": "Fetch a list of your playlists.", + "description": "This endpoint lists playlists with an active membership for the API admin, including playlists they created or joined.\nEach playlist includes its saved default **type** and a **listennotes_url** for that view.\nYou can use the **page** parameter to do pagination and fetch more playlists." + }, + { + "operationId": "getPodcastAudience", + "func": "fetchAudienceForPodcast", + "available_from": "2.0.4", + "method": "GET", + "path": "/podcasts/{id}/audience", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + } + ], + "example_params": { + "id": "25212ac3c53240a880dd5032e547047b" + }, + "summary": "Fetch audience demographics for a podcast", + "description": "Fetch audience demographics for a podcast - 1) directly measured on the Listen Notes platform; 2) only supports audience breakdown by regions for now; 3) not every podcast has data." + }, + { + "operationId": "getPodcastsByDomainName", + "func": "fetchPodcastsByDomain", + "available_from": "2.0.4", + "method": "GET", + "path": "/podcasts/domains/{domain_name}", + "parameters": [ + { + "name": "domain_name", + "in": "path", + "required": true + }, + { + "name": "page", + "in": "query", + "required": false + } + ], + "example_params": { + "domain_name": "nytimes.com", + "page": 1 + }, + "summary": "Fetch podcasts by a publisher's domain name", + "description": "Fetch podcasts by a publisher's domain name, e.g., nytimes.com, wondery.com, npr.org...\nEach request will return up to 10 podcasts. You can use the `page` parameter to paginate." + }, + { + "operationId": "createPlaylist", + "func": "createPlaylist", + "available_from": "3.0.0", + "method": "POST", + "path": "/playlists", + "parameters": [ + { + "name": "name", + "in": "body", + "required": true + }, + { + "name": "description", + "in": "body", + "required": false + }, + { + "name": "visibility", + "in": "body", + "required": false + }, + { + "name": "type", + "in": "body", + "required": false + } + ], + "example_params": { + "name": "My favorite podcasts", + "description": "Podcasts and episodes to revisit.", + "visibility": "public", + "type": "episode_list" + }, + "summary": "Create a playlist.", + "description": "Create an empty playlist owned by the API admin. Name is required; description defaults to an empty string, visibility defaults to public, and type defaults to episode_list. Set type to podcast_list to make podcasts the default view. The response includes the saved type and its listennotes_url.\n\nOnly playlists owned by your admin API account can be modified; contributor membership does not grant write access." + }, + { + "operationId": "updatePlaylist", + "func": "updatePlaylist", + "available_from": "3.0.0", + "method": "PUT", + "path": "/playlists/{id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "name", + "in": "body", + "required": false + }, + { + "name": "description", + "in": "body", + "required": false + }, + { + "name": "visibility", + "in": "body", + "required": false + }, + { + "name": "type", + "in": "body", + "required": false + } + ], + "example_params": { + "id": "m1pe7z60bsw", + "name": "My favorite podcasts", + "description": "Podcasts and episodes to revisit.", + "visibility": "public", + "type": "podcast_list" + }, + "summary": "Update playlist metadata.", + "description": "Update any subset of name, description, visibility, and type. Omitted fields remain unchanged; at least one field is required. Switching to private rotates the playlist RSS secret. Type selects the saved default view (episode_list or podcast_list) and the returned listennotes_url; changing it preserves all existing episodes and podcasts.\n\nOnly playlists owned by your admin API account can be modified; contributor membership does not grant write access." + }, + { + "operationId": "addPlaylistItem", + "func": "addPlaylistItem", + "available_from": "3.0.0", + "method": "POST", + "path": "/playlists/{id}/items", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "episode_id", + "in": "body", + "required": false + }, + { + "name": "podcast_id", + "in": "body", + "required": false + }, + { + "name": "notes", + "in": "body", + "required": false + } + ], + "example_params": { + "id": "m1pe7z60bsw", + "episode_id": "e53e6992a5b7492f9ea6fcd85d9ad95f", + "notes": "Worth a listen." + }, + "summary": "Add an episode or podcast to a playlist.", + "description": "Provide exactly one non-empty episode_id or podcast_id; an empty unused ID field is ignored. Invalid ID formats return 400 and identify the field. A missing episode or podcast returns 404 with an error such as \"Episode not found: {episode_id}.\" or \"Podcast not found: {podcast_id}.\". Existing active items are reused (200); new or restored items return 201. Omitted notes preserve existing notes, including when restoring a deleted item; supplied notes replace them." + }, + { + "operationId": "deletePlaylistItem", + "func": "deletePlaylistItem", + "available_from": "3.0.0", + "method": "DELETE", + "path": "/playlists/{id}/items/{item_id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "item_id", + "in": "path", + "required": true + } + ], + "example_params": { + "id": "m1pe7z60bsw", + "item_id": 23 + }, + "summary": "Remove an item from a playlist.", + "description": "Delete a playlist item. Repeating deletion of the same item succeeds. This does not delete the episode or podcast from the podcast database.\n\nOnly playlists owned by your admin API account can be modified; contributor membership does not grant write access." + }, + { + "operationId": "updatePlaylistItemNotes", + "func": "updatePlaylistItemNotes", + "available_from": "3.0.0", + "method": "PUT", + "path": "/playlists/{id}/items/{item_id}", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true + }, + { + "name": "item_id", + "in": "path", + "required": true + }, + { + "name": "notes", + "in": "body", + "required": true + } + ], + "example_params": { + "id": "m1pe7z60bsw", + "item_id": 23, + "notes": "" + }, + "summary": "Update notes for a playlist item.", + "description": "Replace item notes, or send an empty string to clear them. The item ID and added_at_ms remain unchanged.\n\nOnly playlists owned by your admin API account can be modified; contributor membership does not grant write access." + } + ] +} diff --git a/tests/PodcastApiForNodeTest.js b/tests/PodcastApiForNodeTest.js index 553f81c..d3685d1 100644 --- a/tests/PodcastApiForNodeTest.js +++ b/tests/PodcastApiForNodeTest.js @@ -1,4 +1,57 @@ -const {ClientForNode} = require('../src/PodcastApiClient'); -const {runTests} = require('./TestsLib'); +/* global test, expect, beforeAll, afterAll, jest */ +const http = require('http'); +const https = require('https'); +const fs = require('fs'); +const path = require('path'); +const { Client, ClientForNode, ClientForWorkers } = require('../src/PodcastApiClient'); +const { runTests } = require('./TestsLib'); +const contract = require('../src/api-contract.json'); +const recorded = []; +let status = 200; -runTests(ClientForNode); +// An accidental unmocked request must fail instead of reaching any API server. +beforeAll(() => { + jest.spyOn(http, 'request').mockImplementation(() => { throw new Error('Network disabled in SDK tests'); }); + jest.spyOn(https, 'request').mockImplementation(() => { throw new Error('Network disabled in SDK tests'); }); +}); +afterAll(() => jest.restoreAllMocks()); + +runTests({ + createClient: (config) => { + const client = ClientForNode(config); + client.httpClient.defaults.adapter = async (request) => { + recorded.push({ + url: client.httpClient.getUri(request), + method: request.method.toUpperCase(), body: request.data, headers: request.headers, + }); + const response = { status, data: { ok: true }, headers: { 'x-listenapi-usage': '42' }, config: request }; + if (status >= 400) { + const error = new Error(`HTTP ${status}`); + error.response = response; + throw error; + } + return response; + }; + return client; + }, + reset: () => { recorded.length = 0; status = 200; }, + calls: () => recorded, + setStatus: (value) => { status = value; }, +}); + +test('public client exports are preserved', () => { + expect(Client).toBe(ClientForNode); + expect(typeof ClientForWorkers).toBe('function'); +}); + +test('README covers precisely the generated methods and examples', () => { + const readme = fs.readFileSync(path.join(__dirname, '../README.md'), 'utf8'); + const names = contract.operations.map(op => op.func); + expect([...readme.matchAll(/^### (\w+)$/gm)].map(match => match[1]).filter(name => name !== 'Requirements')).toEqual(names); + for (const name of names) { + expect(readme).toContain(`client.${name}(`); + expect(readme).toContain(`- [\`${name}\`](#${name.toLowerCase()})`); + } + const example = contract.operations.find(op => op.func === 'addPlaylistItem').example_params; + expect(Boolean(example.episode_id) !== Boolean(example.podcast_id)).toBe(true); +}); diff --git a/tests/PodcastApiForWorkersTest.js b/tests/PodcastApiForWorkersTest.js index 65df921..f6a0d60 100644 --- a/tests/PodcastApiForWorkersTest.js +++ b/tests/PodcastApiForWorkersTest.js @@ -1,4 +1,22 @@ -const {ClientForWorkers} = require('../src/PodcastApiClient'); -const {runTests} = require('./TestsLib'); +/* global beforeAll, afterAll, jest */ +const { ClientForWorkers } = require('../src/PodcastApiClient'); +const { runTests } = require('./TestsLib'); +const recorded = []; +let status = 200; -runTests(ClientForWorkers); +beforeAll(() => { + jest.spyOn(globalThis, 'fetch').mockImplementation(async (url, config) => { + recorded.push({ url, method: config.method, body: config.body, headers: config.headers }); + return new Response(JSON.stringify({ ok: true }), { + status, headers: { 'Content-Type': 'application/json', 'x-listenapi-usage': '42' }, + }); + }); +}); +afterAll(() => jest.restoreAllMocks()); + +runTests({ + createClient: ClientForWorkers, + reset: () => { recorded.length = 0; status = 200; }, + calls: () => recorded, + setStatus: (value) => { status = value; }, +}); diff --git a/tests/TestsLib.js b/tests/TestsLib.js index 8d1e165..291599a 100644 --- a/tests/TestsLib.js +++ b/tests/TestsLib.js @@ -1,385 +1,108 @@ -const runTests = (Client) => { - test('Test search endpoint with mock', () => { - const client = Client(); - const term = 'elon musk'; - return client.search({ - q: term, - }).then((response) => { - expect(response.config.params.q).toBe(term); - expect(response.config.url).toBe('/search'); - expect(response.config.method).toBe('get'); - expect(response.data.count > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test search endpoint with authentication error', () => { - const client = Client({ - apiKey: 'wrong key', - }); - return client.search({ - q: 'elon musk', - }).then((response) => { - fail('It should not have come here!') - }).catch((error) => { - if (error.response) { - switch (error.response.status) { - case 401: - // PASS - break; - default: - fail('It should not have come here!') - break; - } - } else { - fail('It should not have come here!') +/* global test, expect, beforeEach */ +const contract = require('../src/api-contract.json'); +const { request } = require('../src/Request'); + +// Both transports run this contract suite. All responses are supplied locally. +const runTests = ({ createClient, reset, calls, setStatus }) => { + beforeEach(reset); + + test.each(contract.operations.map(op => [op.func, op]))('%s follows its generated API contract', async (_, operation) => { + const client = createClient({ apiKey: 'test-key' }); + const params = { ...operation.example_params }; + const expectedQuery = {}; + const expectedBody = {}; + for (const parameter of operation.parameters) { + if (parameter.in === 'path') params[parameter.name] = `a/b ?&é:${parameter.name}`; + if (params[parameter.name] !== undefined && parameter.in !== 'path') { + const target = parameter.in === 'query' ? expectedQuery : expectedBody; + target[parameter.name] = String(params[parameter.name]); } + } + const original = { ...params }; + const response = await client[operation.func](params); + const call = calls()[0]; + const path = operation.path.replace(/\{([^}]+)\}/g, (_, name) => encodeURIComponent(params[name])); + const url = new URL(call.url); + expect(url.origin).toBe('https://listen-api.listennotes.com'); + expect(url.pathname).toBe(`/api/v2${path}`); + expect(Object.fromEntries(url.searchParams)).toEqual(expectedQuery); + expect(Object.fromEntries(new URLSearchParams(call.body))).toEqual(expectedBody); + expect(call.method).toBe(operation.method); + expect(call.headers['X-ListenAPI-Key']).toBe('test-key'); + if (['POST', 'PUT'].includes(operation.method)) { + expect(call.headers['Content-Type']).toBe('application/x-www-form-urlencoded'); + } + expect(response.data).toEqual({ ok: true }); + expect(response.headers['x-listenapi-usage']).toBe('42'); + expect(response.config.method).toBe(operation.method.toLowerCase()); + expect(response.config.url).toBe(path); + expect(params).toEqual(original); + }); + + test('clients and their settings remain independent, including the mock base URL', async () => { + const config = { apiKey: 'first-key', userAgent: 'first-app' }; + const first = createClient(config); + const second = createClient({ apiKey: 'second-key', userAgent: 'second-app' }); + const mock = createClient(); + config.apiKey = 'changed'; + config.userAgent = 'changed'; + expect(first).not.toBe(second); + expect(first.httpClient).not.toBe(second.httpClient); + await first.search({ q: 'first' }); + await second.search({ q: 'second' }); + await mock.fetchPodcastLanguages(); + await first.search({ q: 'again' }); + expect(calls().map(call => call.headers['X-ListenAPI-Key'])).toEqual(['first-key', 'second-key', '', 'first-key']); + expect(calls().map(call => call.headers['User-Agent'])).toEqual(['first-app', 'second-app', 'podcasts-api-js', 'first-app']); + expect(calls()[2].url).toBe('https://listen-api-test.listennotes.com/api/v2/languages'); + }); + + test('empty notes and descriptions are sent while omitted fields stay omitted', async () => { + const client = createClient(); + await client.updatePlaylist({ id: 'abc', description: '', name: undefined }); + await client.updatePlaylistItemNotes({ id: 'abc', item_id: 42, notes: '' }); + await client.addPlaylistItem({ id: 'abc', podcast_id: 'podcast', notes: '' }); + await client.addPlaylistItem({ id: 'abc', episode_id: 'episode' }); + expect(calls().map(call => call.body)).toEqual([ + 'description=', 'notes=', 'podcast_id=podcast¬es=', 'episode_id=episode', + ]); + expect(calls()[1].url).toMatch(/\/playlists\/abc\/items\/42$/); + }); + + test('query and body values preserve special characters and zero', async () => { + const client = createClient(); + const value = 'space + & / ? # café'; + await client.search({ q: value, offset: 0 }); + await client.deletePodcast({ id: 'a/b', reason: value }); + await client.updatePlaylistItemNotes({ id: 'abc', item_id: 42, notes: value }); + expect(new URL(calls()[0].url).searchParams.get('q')).toBe(value); + expect(new URL(calls()[0].url).searchParams.get('offset')).toBe('0'); + expect(new URL(calls()[1].url).searchParams.get('reason')).toBe(value); + expect(new URLSearchParams(calls()[2].body).get('notes')).toBe(value); + expect(calls()[1].body).toBeFalsy(); + }); + + test('a request with path, query and body parameters keeps them separate', async () => { + const client = createClient(); + await request(client.httpClient, 'PUT', '/playlists/{id}', + { path: ['id'], query: ['page'], body: ['description'] }, + { id: 'a/b', page: 0, description: '' }); + expect(new URL(calls()[0].url).search).toBe('?page=0'); + expect(calls()[0].body).toBe('description='); + }); + + test('missing nested identifiers fail before any request', () => { + const client = createClient(); + expect(() => client.deletePlaylistItem({ id: 'abc' })).toThrow('Missing path parameter: item_id'); + expect(calls()).toHaveLength(0); + }); + + test.each([400, 401, 403, 404, 429, 500])('HTTP %i preserves the error response envelope', async (status) => { + setStatus(status); + await expect(createClient({ apiKey: 'test-key' }).search({ q: 'test' })).rejects.toMatchObject({ + response: { status, headers: { 'x-listenapi-usage': '42' }, config: { method: 'get', url: '/search' } }, }); }); - - test('Test searchEpisodeTitles endpoint with mock', () => { - const client = Client(); - const term = 'elon musk'; - return client.searchEpisodeTitles({ - q: term, - podcast_id: 'abcdef', - }).then((response) => { - expect(response.config.params.q).toBe(term); - expect(response.config.url).toBe('/search_episode_titles'); - expect(response.config.method).toBe('get'); - expect(response.data.count > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test typeahead with mock', () => { - const client = Client(); - const term = 'elon musk2'; - return client.typeahead({ - q: term, - show_podcasts: 1, - }).then((response) => { - expect(response.config.params.q).toBe(term); - expect(response.config.params.show_podcasts).toBe(1); - expect(response.config.url).toBe('/typeahead'); - expect(response.config.method).toBe('get'); - expect(response.data.terms.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test spellcheck with mock', () => { - const client = Client(); - const term = 'evergrand stok'; - return client.spellcheck({ - q: term, - }).then((response) => { - expect(response.config.params.q).toBe(term); - expect(response.config.url).toBe('/spellcheck'); - expect(response.config.method).toBe('get'); - expect(response.data.tokens.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test related searches with mock', () => { - const client = Client(); - const term = 'evergrande'; - return client.fetchRelatedSearches({ - q: term, - }).then((response) => { - expect(response.config.params.q).toBe(term); - expect(response.config.url).toBe('/related_searches'); - expect(response.config.method).toBe('get'); - expect(response.data.terms.length > 0).toBe(true); - }).catch((e) => { - fail('Failed!'); - }); - }); - - test('Test trending searches with mock', () => { - const client = Client(); - return client.fetchTrendingSearches().then((response) => { - expect(response.config.url).toBe('/trending_searches'); - expect(response.config.method).toBe('get'); - expect(response.data.terms.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchBestPodcasts with mock', () => { - const client = Client(); - const genreId = 123; - return client.fetchBestPodcasts({ - genre_id: genreId, - }).then((response) => { - expect(response.config.params.genre_id).toBe(genreId); - expect(response.config.url).toBe('/best_podcasts'); - expect(response.config.method).toBe('get'); - expect(response.data.total > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPodcastById with mock', () => { - const client = Client(); - const podcastId = 'abcde'; - return client.fetchPodcastById({ - id: podcastId, - sort: 'oldest_first', - }).then((response) => { - expect(response.config.params.sort).toBe('oldest_first'); - expect(response.config.url).toBe(`/podcasts/${podcastId}`); - expect(response.config.method).toBe('get'); - expect(response.data.episodes.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchEpisodeById with mock', () => { - const client = Client(); - const episodeId = 'abc222de'; - return client.fetchEpisodeById({ - id: episodeId, - show_transcript: 1, - }).then((response) => { - expect(response.config.url).toBe(`/episodes/${episodeId}`); - expect(response.config.params.show_transcript).toBe(1); - expect(response.config.method).toBe('get'); - expect(response.data.podcast.rss.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test batchFetchPodcasts with mock', () => { - const client = Client(); - const ids = '996,777,888,1000'; - return client.batchFetchPodcasts({ - ids, - }).then((response) => { - expect(response.config.url).toBe('/podcasts'); - expect(response.config.method).toBe('post'); - expect(new URLSearchParams(response.config.data).get('ids')).toBe(ids); - expect(response.data.podcasts.length > 0).toBe(true); - }).catch((e) => { - fail('Failed!'); - }); - }); - - test('Test batchFetchEpisodes with mock', () => { - const client = Client(); - const ids = '996,777,222,888,1000'; - return client.batchFetchEpisodes({ - ids, - }).then((response) => { - expect(response.config.url).toBe('/episodes'); - expect(response.config.method).toBe('post'); - expect(new URLSearchParams(response.config.data).get('ids')).toBe(ids); - expect(response.data.episodes.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchCuratedPodcastsListById with mock', () => { - const client = Client(); - const curatedListId = '23232'; - return client.fetchCuratedPodcastsListById({ - id: curatedListId, - }).then((response) => { - expect(response.config.url).toBe(`/curated_podcasts/${curatedListId}`); - expect(response.config.method).toBe('get'); - expect(response.data.podcasts.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchCuratedPodcastsLists with mock', () => { - const client = Client(); - const page = 2; - return client.fetchCuratedPodcastsLists({ - page: 2, - }).then((response) => { - expect(response.config.url).toBe('/curated_podcasts'); - expect(response.config.params.page).toBe(page); - expect(response.config.method).toBe('get'); - expect(response.data.total > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPodcastGenres with mock', () => { - const client = Client(); - const topLevelOnly = 1; - return client.fetchPodcastGenres({ - top_level_only: topLevelOnly, - }).then((response) => { - expect(response.config.url).toBe('/genres'); - expect(response.config.params.top_level_only).toBe(topLevelOnly); - expect(response.config.method).toBe('get'); - expect(response.data.genres.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPodcastRegions with mock', () => { - const client = Client(); - return client.fetchPodcastRegions({}).then((response) => { - expect(response.config.url).toBe('/regions'); - expect(response.config.method).toBe('get'); - expect(response.data.regions).not.toBeNull(); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPodcastLanguages with mock', () => { - const client = Client(); - return client.fetchPodcastLanguages({}).then((response) => { - expect(response.config.url).toBe('/languages'); - expect(response.config.method).toBe('get'); - expect(response.data.languages.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test justListen with mock', () => { - const client = Client(); - return client.justListen({}).then((response) => { - expect(response.config.url).toBe('/just_listen'); - expect(response.config.method).toBe('get'); - expect(response.data.audio_length_sec > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchRecommendationsForPodcast with mock', () => { - const client = Client(); - const podcastId = 'abcde'; - return client.fetchRecommendationsForPodcast({ - id: podcastId, - }).then((response) => { - expect(response.config.url).toBe(`/podcasts/${podcastId}/recommendations`); - expect(response.config.method).toBe('get'); - expect(response.data.recommendations.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchRecommendationsForEpisode with mock', () => { - const client = Client(); - const episodeId = 'abc222de'; - return client.fetchRecommendationsForEpisode({ - id: episodeId, - }).then((response) => { - expect(response.config.url).toBe(`/episodes/${episodeId}/recommendations`); - expect(response.config.method).toBe('get'); - expect(response.data.recommendations.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPlaylistById with mock', () => { - const client = Client(); - const playlistId = 'abddc222de'; - return client.fetchPlaylistById({ - id: playlistId, - }).then((response) => { - expect(response.config.url).toBe(`/playlists/${playlistId}`); - expect(response.config.method).toBe('get'); - expect(response.data.items.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchMyPlaylists with mock', () => { - const client = Client(); - return client.fetchMyPlaylists({}).then((response) => { - expect(response.config.url).toBe('/playlists'); - expect(response.config.method).toBe('get'); - expect(response.data.total > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test submitPodcast with mock', () => { - const client = Client(); - const rss = 'http://myrss.com/rss'; - return client.submitPodcast({ - rss, - }).then((response) => { - expect(response.config.url).toBe('/podcasts/submit'); - expect(response.config.method).toBe('post'); - expect(new URLSearchParams(response.config.data).get('rss')).toBe(rss); - expect(response.data.status.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test deletePodcast with mock', () => { - const client = Client(); - const podcastId = 'asdfasdf'; - const reason = 'abv'; - return client.deletePodcast({ - id: podcastId, - reason, - }).then((response) => { - expect(response.config.url).toBe(`/podcasts/${podcastId}?reason=${reason}`); - expect(response.config.method).toBe('delete'); - expect(response.data.status.length > 0).toBe(true); - }).catch((error) => { - console.log(error); - fail('Failed!'); - }); - }); - - test('Test fetchAudienceForPodcast with mock', () => { - const client = Client(); - const podcastId = 'abcdef'; - return client.fetchAudienceForPodcast({ - id: podcastId, - }).then((response) => { - expect(response.config.url).toBe(`/podcasts/${podcastId}/audience`); - expect(response.config.method).toBe('get'); - expect(response.data.by_regions.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); - - test('Test fetchPodcastsByDomain with mock', () => { - const client = Client(); - const domain = 'nytimes.com'; - return client.fetchPodcastsByDomain({ - domain_name: domain, - }).then((response) => { - expect(response.config.url).toBe(`/podcasts/domains/${domain}`); - expect(response.config.method).toBe('get'); - expect(response.data.podcasts.length > 0).toBe(true); - }).catch(() => { - fail('Failed!'); - }); - }); }; -module.exports = { - runTests, -} +module.exports = { runTests }; diff --git a/yarn.lock b/yarn.lock index 46757fb..048bd7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,26 +5,7 @@ __metadata: version: 6 cacheKey: 8 -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@babel/code-frame@npm:7.12.11": - version: 7.12.11 - resolution: "@babel/code-frame@npm:7.12.11" - dependencies: - "@babel/highlight": ^7.10.4 - checksum: 3963eff3ebfb0e091c7e6f99596ef4b258683e4ba8a134e4e95f77afe85be5c931e184fff6435fb4885d12eba04a5e25532f7fbc292ca13b48e7da943474e2f3 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13": +"@babel/code-frame@npm:^7.0.0": version: 7.12.13 resolution: "@babel/code-frame@npm:7.12.13" dependencies: @@ -33,118 +14,100 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" +"@babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/code-frame@npm:7.29.7" dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + "@babel/helper-validator-identifier": ^7.29.7 + js-tokens: ^4.0.0 + picocolors: ^1.1.1 + checksum: 21b12fe2356e36f6cc3cd8a3721f878bfeea80ce38356979a0518b47b3aafdcc0bd263da75ccc9d51c64d40b1b6df00e768ce2446acb0b7cbec0ae8f905663ad languageName: node linkType: hard -"@babel/compat-data@npm:^7.19.3": - version: 7.19.4 - resolution: "@babel/compat-data@npm:7.19.4" - checksum: 757fdaeb6756c2d323ff56f60fb8e670292108cda6abf762a56c0d40910ecc4d2c7e283dbdfbcee6bc28c74ad659144352609e1cb49d31e101ab13ea5ce90072 - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.5": - version: 7.19.3 - resolution: "@babel/core@npm:7.19.3" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.3 - "@babel/helper-compilation-targets": ^7.19.3 - "@babel/helper-module-transforms": ^7.19.0 - "@babel/helpers": ^7.19.0 - "@babel/parser": ^7.19.3 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.3 - "@babel/types": ^7.19.3 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: dd883311209ad5a2c65b227daeb7247d90a382c50f4c6ad60c5ee40927eb39c34f0690d93b775c0427794261b72fa8f9296589a2dbda0782366a9f1c6de00c08 +"@babel/compat-data@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/compat-data@npm:7.29.7" + checksum: 4424f8fb72f61657c8e811bdf7e5c69af212a15fe362711162b2e00b82f0e0588fb8259ecd9a70c5490562bf51d408b0cb92f277ead71a2390ddddfe7283b35d languageName: node linkType: hard -"@babel/generator@npm:^7.19.3, @babel/generator@npm:^7.19.4": - version: 7.19.5 - resolution: "@babel/generator@npm:7.19.5" +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": + version: 7.29.7 + resolution: "@babel/core@npm:7.29.7" dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: a66eafc540f80fc36c1b009b28bde1d12aff85e7916e7f5adf49c5a8866fecee4906b3c3c6db315d2723ea54e4e5ddfb2913fe6ab424f51dbccf753000930eaf + "@babel/code-frame": ^7.29.7 + "@babel/generator": ^7.29.7 + "@babel/helper-compilation-targets": ^7.29.7 + "@babel/helper-module-transforms": ^7.29.7 + "@babel/helpers": ^7.29.7 + "@babel/parser": ^7.29.7 + "@babel/template": ^7.29.7 + "@babel/traverse": ^7.29.7 + "@babel/types": ^7.29.7 + "@jridgewell/remapping": ^2.3.5 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 95149e98ffde5b9d903459c284fbcf1f9ad8b3a833d69fdfe1aa7185821a102af1925324fe2892caf4b643b151c1dc948510d1e25a5e3c6c6c6f17f6712eb38e languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.19.3": - version: 7.19.3 - resolution: "@babel/helper-compilation-targets@npm:7.19.3" +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.29.7, @babel/generator@npm:^7.29.8": + version: 7.29.8 + resolution: "@babel/generator@npm:7.29.8" dependencies: - "@babel/compat-data": ^7.19.3 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aafcb4490c98cddb3255fff98bfbdb881b4def85a1935fd9b1f9b1f0f8b502696839f6b387fb508ca991ea72ba82ce6913bab99f21df4ce80bda2b79e91a09f5 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 + "@babel/parser": ^7.29.8 + "@babel/types": ^7.29.8 + "@jridgewell/gen-mapping": ^0.3.12 + "@jridgewell/trace-mapping": ^0.3.28 + jsesc: ^3.0.2 + checksum: e3d80ad2ce45ca974cb14e084350d590aa62e840d5028bb7771e910b1727b6646afcc9815560e3c6e3526f115b71b18a7f7139ada76a80287d5bd25b84c17e8d languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" +"@babel/helper-compilation-targets@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-compilation-targets@npm:7.29.7" dependencies: - "@babel/template": ^7.18.10 - "@babel/types": ^7.19.0 - checksum: eac1f5db428ba546270c2b8d750c24eb528b8fcfe50c81de2e0bdebf0e20f24bec688d4331533b782e4a907fad435244621ca2193cfcf80a86731299840e0f6e + "@babel/compat-data": ^7.29.7 + "@babel/helper-validator-option": ^7.29.7 + browserslist: ^4.24.0 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: f60a943937f4eba0e671aa28551cb45569fd081c1e30a52ede167860475dc0417f3dbdf2a0fa3f086965595c7070aa76308da60cc0319860de05db4ed2a431f7 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f +"@babel/helper-globals@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-globals@npm:7.29.7" + checksum: 6deaf9846a415c7f110ac153e8c3d81e3543c9b685aa9fd9a59b4235f402e2b760129d3df49466daea9162f0cf73ff98a0ec7f180448a3449ca14ae5e1117b42 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" +"@babel/helper-module-imports@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-imports@npm:7.29.7" dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def + "@babel/traverse": ^7.29.7 + "@babel/types": ^7.29.7 + checksum: ad5a768fc9c162620b7f5b7645c6c2efee1e6f9df432bb79651888661a7e4cd91dac7192f3ddcfd6de4778a089e9fb30fafae768156aa73a07eeca425f64e849 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-module-transforms@npm:7.19.0" +"@babel/helper-module-transforms@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-module-transforms@npm:7.29.7" dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.0 - "@babel/types": ^7.19.0 - checksum: 4483276c66f56cf3b5b063634092ad9438c2593725de5c143ba277dda82f1501e6d73b311c1b28036f181dbe36eaeff29f24726cde37a599d4e735af294e5359 + "@babel/helper-module-imports": ^7.29.7 + "@babel/helper-validator-identifier": ^7.29.7 + "@babel/traverse": ^7.29.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 484f6d02975d304f680d44e331d4b832d67e51917483985eab7b853664452b5a627366e7a9d421200ec772a123213a591e28b40636566afeac189411ba3f45a8 languageName: node linkType: hard @@ -155,21 +118,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.18.6": - version: 7.19.4 - resolution: "@babel/helper-simple-access@npm:7.19.4" - dependencies: - "@babel/types": ^7.19.4 - checksum: 964cb1ec36b69aabbb02f8d5ee1d680ebbb628611a6740958d9b05107ab16c0492044e430618ae42b1f8ea73e4e1bafe3750e8ebc959d6f3277d9cfbe1a94880 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b +"@babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-plugin-utils@npm:7.29.7" + checksum: b0a183abcc6670afa4861425fa428217d8ebadce062d5b43117919e8715f820080fd63bbfcf0e43c6e0e7d21a96b21f635c46dda80bdb0ce7e8a762ebee1d8d9 languageName: node linkType: hard @@ -180,10 +132,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.12.11": - version: 7.12.11 - resolution: "@babel/helper-validator-identifier@npm:7.12.11" - checksum: e604c6bf890704fc46c1ae13bf23afb242b810224ec3403bba67cdbf0d8dabfec4b82123d6dfb18135a0ee3f7f79218583c819363ebb5e04a0a49d8418db7fce +"@babel/helper-string-parser@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-string-parser@npm:7.29.7" + checksum: 4c229d2c2296b6c94439e87ecddf3a93cee3ffd2d4cee0b4c28079275bed3de4e02cd943e4cb06036d1d9407549c4e3423006b61a46215c482fce902ee02bc0b languageName: node linkType: hard @@ -194,39 +146,34 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": +"@babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: f9cc6eb7cc5d759c5abf006402180f8d5e4251e9198197428a97e05d65eb2f8ae5a0ce73b1dfd2d35af41d0eb780627a64edf98a4e71f064eeeacef8de58f2cf +"@babel/helper-validator-identifier@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-identifier@npm:7.29.7" + checksum: cc7779e96fe9c9478c96ca4bf04fc338b95b501aa5abe78178307dea282d4a5dc23d443efb12dde8e8c5636d03dd00e443532e6ed7f15fa7977349af1f87ba4d languageName: node linkType: hard -"@babel/helpers@npm:^7.19.0": - version: 7.19.4 - resolution: "@babel/helpers@npm:7.19.4" - dependencies: - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.19.4 - "@babel/types": ^7.19.4 - checksum: e2684e9a79d45b95db05c7e14628e8dd1d91ad59433a3afd715bdf19d4683d9e9f84382bcc82316b678aa609ecfc41b07be0b9c49eed07c444f82a6b9e501186 +"@babel/helper-validator-option@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helper-validator-option@npm:7.29.7" + checksum: aeb6aa966f59300d3cc2fea7c68e1dfd7ad011fc10e535c8e2b2de3094b27c859428dc7220f16420350f8b1cde99da120b673be04bcb0c2f37b56258c96bed58 languageName: node linkType: hard -"@babel/highlight@npm:^7.10.4": - version: 7.13.10 - resolution: "@babel/highlight@npm:7.13.10" +"@babel/helpers@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/helpers@npm:7.29.7" dependencies: - "@babel/helper-validator-identifier": ^7.12.11 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 2f33624c8e0947101fd72ca8d2af291cd9560bcb3ed63299e5f95a70e64c2a435922d915ede6760f30ff23942589fe42b962b6b8138f868abaa6f7abd4d4f5e9 + "@babel/template": ^7.29.7 + "@babel/types": ^7.29.7 + checksum: b5c4ed0ce5983c5599cd01b3948444b77ba2fa47bf6282a82afdcbe45eb8cc5b7986194e3920ef2760f533c6a775504e6b00a66960c0a3bc52909920b8433908 languageName: node linkType: hard @@ -241,18 +188,7 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13": +"@babel/parser@npm:^7.1.0": version: 7.14.0 resolution: "@babel/parser@npm:7.14.0" bin: @@ -261,12 +197,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.3, @babel/parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/parser@npm:7.19.4" +"@babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.29.7, @babel/parser@npm:^7.29.8": + version: 7.29.9 + resolution: "@babel/parser@npm:7.29.9" + dependencies: + "@babel/types": ^7.29.8 bin: parser: ./bin/babel-parser.js - checksum: 5ef97da97915085ff3b9c562b04fb6316074ece52d20de95f44c47b46abf87fd754cbcae769a69570a84652b736afe5bb2cb7dc117aa7ad6d81ab40eed0c613b + checksum: e6a9c2dfade8c81b842d1db89fc9fac7258890b3de0f9a7e4b294b178ba698b900382d09d79862444a7dc6777cd153d70ebef59b966f0eb6e810b8f03933aa35 languageName: node linkType: hard @@ -292,7 +230,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -303,7 +241,29 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.29.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": ^7.29.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9f47345d09aae16b7ab52ecaf541cde3e3ae1e57e3eb2d4088e062b29dfbd67db55d42d529840557583d66121e2a98788df7a455401cc6d635c8b7700a02efc9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -325,7 +285,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.29.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.29.7" + dependencies: + "@babel/helper-plugin-utils": ^7.29.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 84150d27c553a1d3d921354437f6725ca1d63b49514c25591bfcaaafa6ea4d6c10715b66fe7245e4ad7ab7c6cf4b6e1de7373defd3df00877ab12638170d7772 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -347,7 +318,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -391,77 +362,66 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" dependencies: - "@babel/helper-plugin-utils": ^7.12.13 + "@babel/helper-plugin-utils": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 74cf8c8b8715ec0de6c55b96af4907cfa3bbf87dbaecdc4c30acac8c30d281d62c578001faf8f99e1884e1ccb933f5a919eb184c542b92fcef7bdefe64482c39 + checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.13.17 - resolution: "@babel/runtime-corejs3@npm:7.13.17" +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: - core-js-pure: ^3.0.0 - regenerator-runtime: ^0.13.4 - checksum: f2d4afa65f9c81f76474136cc4db6e13ce5758c89a4de7276a62f792bfcdf6a0cbd114b311e8658604f069cd335314e76ee859a341dfa25f1f55e7225fc981fd + "@babel/helper-plugin-utils": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e languageName: node linkType: hard -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2": - version: 7.13.17 - resolution: "@babel/runtime@npm:7.13.17" +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.29.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.29.7" dependencies: - regenerator-runtime: ^0.13.4 - checksum: d15a6a690e814617e448805be95f676d1e1ac02172123cf0902db129a498f76a75e2802070597267f796420e3411a359ca0f622677011b02e6017eaa34471973 + "@babel/helper-plugin-utils": ^7.29.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ef454d2a7a6209dd4255361c072c94ab1293e7ad4b06e7e744d08bb308065d4d6544964eae9b2357c3b33d8d939f9e32d4aa95905bc464407cd8f7101dee4443 languageName: node linkType: hard -"@babel/template@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/template@npm:7.18.10" +"@babel/template@npm:^7.29.7": + version: 7.29.7 + resolution: "@babel/template@npm:7.29.7" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.18.10 - "@babel/types": ^7.18.10 - checksum: 93a6aa094af5f355a72bd55f67fa1828a046c70e46f01b1606e6118fa1802b6df535ca06be83cc5a5e834022be95c7b714f0a268b5f20af984465a71e28f1473 + "@babel/code-frame": ^7.29.7 + "@babel/parser": ^7.29.7 + "@babel/types": ^7.29.7 + checksum: 521eb6a1fd4735074ca8dac0d70810860a80edf3bf78105851571993cd13701a2041987e7398ccc9376eb6235ea1258bf494ccaccf3b67fa98dbe954154a2e93 languageName: node linkType: hard -"@babel/template@npm:^7.3.3": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" +"@babel/traverse@npm:^7.29.7": + version: 7.29.8 + resolution: "@babel/traverse@npm:7.29.8" dependencies: - "@babel/code-frame": ^7.12.13 - "@babel/parser": ^7.12.13 - "@babel/types": ^7.12.13 - checksum: e0377316317ff55c794ec79f70d8f27b5cd3323ce76278ade525c264af669952b09613288221c76ee4abd49626a5f014a60ec4a637694c9121a1b77f820792d0 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.3, @babel/traverse@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/traverse@npm:7.19.4" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.4 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 8ae1ac3dace181620cd0e3078aec99604a48302fb873193a171e37a7cc4f8909ed496f286bf08c6473f9692db36423e2601eb9c771493d19f6a5fd1a56745af5 + "@babel/code-frame": ^7.29.7 + "@babel/generator": ^7.29.8 + "@babel/helper-globals": ^7.29.7 + "@babel/parser": ^7.29.8 + "@babel/template": ^7.29.7 + "@babel/types": ^7.29.8 + debug: ^4.3.1 + checksum: 7c33eb59db5c67411305ed1d29fe50dbde74b220f4500840951d776fbcc3fbddca09f57302e8961d2533871ef4719ec0f2f05969870263b180d6ff4217f7acee languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.13, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.3.0": version: 7.14.0 resolution: "@babel/types@npm:7.14.0" dependencies: @@ -471,14 +431,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.3, @babel/types@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/types@npm:7.19.4" +"@babel/types@npm:^7.20.7, @babel/types@npm:^7.27.3, @babel/types@npm:^7.29.7, @babel/types@npm:^7.29.8": + version: 7.29.8 + resolution: "@babel/types@npm:7.29.8" dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: 4032f6407093f80dd4f4764be676f7527d2a5c0381586967cd79683cf8af01cdc16745a381b9cef045f702f0c9b0dffd880d84ee55dad59ba01bd23d5d52a8e0 + "@babel/helper-string-parser": ^7.29.7 + "@babel/helper-validator-identifier": ^7.29.7 + checksum: 9ac45d1fc702bce8e51f74566c85211f4a5d06b6f921c297e07f05742ac0eb9660d4380f96ac18d882415e4e1172e92a3fc7a20b29afd2277b713efc5b3c7cf6 languageName: node linkType: hard @@ -500,32 +459,143 @@ __metadata: languageName: node linkType: hard -"@cnakazawa/watch@npm:^1.0.3": - version: 1.0.4 - resolution: "@cnakazawa/watch@npm:1.0.4" +"@cacheable/memory@npm:^2.2.0": + version: 2.2.0 + resolution: "@cacheable/memory@npm:2.2.0" dependencies: - exec-sh: ^0.3.2 - minimist: ^1.2.0 - bin: - watch: cli.js - checksum: 88f395ca0af2f3c0665b8ce7bb29e83647ec5d141e8735712aeeee4117081555436712966b6957aa1c461f6f826a4d23b0034e379c443a10e919f81c8748bf29 + "@cacheable/utils": ^2.5.0 + "@keyv/bigmap": ^1.3.1 + hookified: ^1.15.1 + keyv: ^5.6.0 + checksum: 5ccb1680b1fb57f8aad55d6564ec71da93d63ff46b16f3a9e00fa35bff0e2febb5b3b03d416900556862398b6f60a0742d840286962c42f981be610544cd0145 languageName: node linkType: hard -"@eslint/eslintrc@npm:^0.4.0": - version: 0.4.0 - resolution: "@eslint/eslintrc@npm:0.4.0" +"@cacheable/utils@npm:^2.5.0": + version: 2.5.0 + resolution: "@cacheable/utils@npm:2.5.0" dependencies: - ajv: ^6.12.4 - debug: ^4.1.1 - espree: ^7.3.0 - globals: ^12.1.0 - ignore: ^4.0.6 - import-fresh: ^3.2.1 - js-yaml: ^3.13.1 - minimatch: ^3.0.4 - strip-json-comments: ^3.1.1 - checksum: c4e7a5021bfdd293aff47b1993a66aee3d7a71a6b13bc8036028c71aa08bdac232c8683f5bb55090d0f260ecf81f4159e1a28554c8ad242a372ee89583dc75af + hashery: ^1.5.1 + keyv: ^5.6.0 + checksum: e458e8b8dda9e1bcec8bb8373d852d57d66cca81b9eb8d67f8cc227cc63153d06addc7604b8cd5cc9d15e745ef7cbfff894d06447059009f423b71f21d58a128 + languageName: node + linkType: hard + +"@cloudflare/workers-types@npm:^4.20221111.1": + version: 4.20260702.1 + resolution: "@cloudflare/workers-types@npm:4.20260702.1" + checksum: 6233d5c284da49103e795cc7e57ccd0a779416aa5bcb8dfac139aa7e23a70a0f4a946a5149d0ec7bd4b6c76aaede5202bcee9b09aa5c9bc0d553f3fb9be0d6b8 + languageName: node + linkType: hard + +"@emnapi/core@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/core@npm:1.10.0" + dependencies: + "@emnapi/wasi-threads": 1.2.1 + tslib: ^2.4.0 + checksum: d8cf0d6e0668db456190dda05bffb299395e58e814bacfbe78e6306aea9df8c48c0c276ad9ca787d5bbd4272e765fcc879e8156c0fc40398d5f43658819b7314 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:1.10.0": + version: 1.10.0 + resolution: "@emnapi/runtime@npm:1.10.0" + dependencies: + tslib: ^2.4.0 + checksum: cc403db36a6875495f4f4a776eea8379c028d83d7d37a018b50079db226e7484f269a0447fc1e49235216d4fb2378bf2c61fa7f047d9f9c50e21698ce9b6e531 + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" + dependencies: + tslib: ^2.4.0 + checksum: a2360553f8056e3e676f708b7e1639bae84212714ace6ee13b6e0ce667b3057bea6d120c7a4f5b32851f93d287fd4b5a0fd58b14f43363d365cb83bc538254d1 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.8.0": + version: 4.10.1 + resolution: "@eslint-community/eslint-utils@npm:4.10.1" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: ac9da8475207591237f79462fef7f201611b22481df1972e6b81bd2a05dc546e0b69b0094771d23b7a3075d7d69d413c955989473abc0e227f9473108124ded4 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 1770bc81f676a72f65c7200b5675ff7a349786521f30e66125faaf767fde1ba1c19c3790e16ba8508a62a3933afcfc806a893858b3b5906faf693d862b9e4120 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.23.5": + version: 0.23.5 + resolution: "@eslint/config-array@npm:0.23.5" + dependencies: + "@eslint/object-schema": ^3.0.5 + debug: ^4.3.1 + minimatch: ^10.2.4 + checksum: 2cb8c3d3450f2b1c91dcc21109bfee58356915cbfa1429b9e82efc04c2acf7ccdf12ef20734989afdb1e676b8bf5f2e10548405efc6b8b2c89bbd9e89e5a8e49 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.7.0": + version: 0.7.0 + resolution: "@eslint/config-helpers@npm:0.7.0" + dependencies: + "@eslint/core": ^1.2.1 + checksum: 4367648fb52061a7142404eab8c4f5d7406a75c0e6aa6f90fd38846f7f07b8be3755c05b1e7d601fabbbb4e5a95f97e3b4aa865ab359e80dcc24d659489f1173 + languageName: node + linkType: hard + +"@eslint/core@npm:^1.2.1": + version: 1.2.1 + resolution: "@eslint/core@npm:1.2.1" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 430f53c5c6bcfabe54d7232d6b74bf9f6f62b0337f73ca0db70a0a0dbe4843243ce24577df61619fcbc0ef45cc6e2872074bed3295538acd72361b69f3b5eb47 + languageName: node + linkType: hard + +"@eslint/js@npm:10.0.1": + version: 10.0.1 + resolution: "@eslint/js@npm:10.0.1" + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 5e60b80ec48d303c9273d5c2803ae3fe12fd5335d57d889d4f9df9249910a97e2921118403765bff26a00b734182437f91a0f6f552654cf12ad73bb49995e22e + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^3.0.5": + version: 3.0.5 + resolution: "@eslint/object-schema@npm:3.0.5" + checksum: 4e9aee969d73a5c12c06dcf9e3a7903d441cdc946b3768099dba1937f2af58bd8ed4b1bcf34bbc54432440cdd00dfab970edd5ce2b4fb1afd2d0e6018c87aa0b + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.7.3": + version: 0.7.3 + resolution: "@eslint/plugin-kit@npm:0.7.3" + dependencies: + "@eslint/core": ^1.2.1 + levn: ^0.4.1 + checksum: 8607a3067fde69ebd644e2f8af7d2f8a75c0bc16bac6697c524ff2d3fd5ee3cf99419d2ac40f3af26b5cca4c0a6e3e8419a741610d8eb16d3d253f7b315b6674 + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 42c32ef75e906c9a4809c1e1930a5ca6d4ddc8d138e1a8c8ba5ea07f997db32210617d23b2e4a85fe376316a41a1a0439fc6ff2dedf5126d96f45a9d80754fb2 languageName: node linkType: hard @@ -536,6 +606,47 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.2": + version: 0.19.2 + resolution: "@humanfs/core@npm:0.19.2" + dependencies: + "@humanfs/types": ^0.15.0 + checksum: cfcf57302dafe41eadd900b30da5e10f8b4e51fac635c834c03ae11933d1911c131ef3cfa3ff14c47b17dd23524180c69f50cfe0b68c152034c2f6ba0ec2ccae + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.8 + resolution: "@humanfs/node@npm:0.16.8" + dependencies: + "@humanfs/core": ^0.19.2 + "@humanfs/types": ^0.15.0 + "@humanwhocodes/retry": ^0.4.0 + checksum: 179d1dae12c5d1330c262b79b037e4db3e98d870f4827a56c1eb8a6bc32a6d2b4c32603a5b13c4f2e11882239276ed2a559cf465dfba33a3ac37bc7d9f5c1e9b + languageName: node + linkType: hard + +"@humanfs/types@npm:^0.15.0": + version: 0.15.0 + resolution: "@humanfs/types@npm:0.15.0" + checksum: fe8abe73e36ded7bf854addd48a5a7defe3aa77af9e92a95195bc6abd7d2a22c193bbac38d47982c198e2683e5108acba691cd859c4e1104b94d76651139e2da + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: d423455b9d53cf01f778603404512a4246fb19b83e74fe3e28c70d9a80e9d4ae147d2411628907ca983e91a855a52535859a8bb218050bc3f6dbd7a553b7b442 + languageName: node + linkType: hard + "@iarna/toml@npm:^2.2.5": version: 2.2.5 resolution: "@iarna/toml@npm:2.2.5" @@ -543,6 +654,20 @@ __metadata: languageName: node linkType: hard +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -563,483 +688,551 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/console@npm:26.6.2" +"@istanbuljs/schema@npm:^0.1.3": + version: 0.1.6 + resolution: "@istanbuljs/schema@npm:0.1.6" + checksum: e0700df94e5eee184a64e9712d28a4aa8a0918f01e01e6fe50b93e12c2415c6930065c1622306a3bb28f8774e5aa3291671597826a71fa38f4b5667566e87bba + languageName: node + linkType: hard + +"@jest/console@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/console@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 + "@jest/types": 30.5.1 "@types/node": "*" - chalk: ^4.0.0 - jest-message-util: ^26.6.2 - jest-util: ^26.6.2 + chalk: ^4.1.2 + jest-message-util: 30.5.1 + jest-util: 30.5.1 slash: ^3.0.0 - checksum: 69a9ca6ba357d7634fd537e3b87c64369865ffb59f57fe6661223088bd62273d0c1d660fefce3625a427f42a37d32590f6b291e1295ea6d6b7cb31ddae36a737 + checksum: 9bce4d59137072462466152512f0c8d2128479f10b2fc9bf9be737fe15e4296c171d28b6835a03714fac118d49258761a94e5055fbf53cfcec8f98bee9395cd4 languageName: node linkType: hard -"@jest/core@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/core@npm:26.6.3" +"@jest/core@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/core@npm:30.5.1" dependencies: - "@jest/console": ^26.6.2 - "@jest/reporters": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": 30.5.1 + "@jest/pattern": 30.5.0 + "@jest/reporters": 30.5.1 + "@jest/test-result": 30.5.1 + "@jest/transform": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - jest-changed-files: ^26.6.2 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-resolve-dependencies: ^26.6.3 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - jest-watcher: ^26.6.2 - micromatch: ^4.0.2 - p-each-series: ^2.1.0 - rimraf: ^3.0.0 + ansi-escapes: ^4.3.2 + chalk: ^4.1.2 + ci-info: ^4.2.0 + exit-x: ^0.2.2 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.11 + jest-changed-files: 30.5.1 + jest-config: 30.5.1 + jest-haste-map: 30.5.1 + jest-message-util: 30.5.1 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-resolve-dependencies: 30.5.1 + jest-runner: 30.5.1 + jest-runtime: 30.5.1 + jest-snapshot: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 + jest-watcher: 30.5.1 + pretty-format: 30.5.1 slash: ^3.0.0 - strip-ansi: ^6.0.0 - checksum: f52b26ffe9b923ed67b3ff30e170b3a434d4263990f78d96cd43acbd0aa8ad36aecad2f1822f376da3a80228714fd6b7f7acd51744133cfcd2780ba0e3da537b + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 139ec5c735dca0bf2c6c2fbfaad8a0f045a747d1328d9cf15c23cada5a2262b9251e4d909dac7aad32a2c0ebf89bfe1b43a272805a3dd611870b7b30f6d74d80 + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.5.0": + version: 30.5.0 + resolution: "@jest/diff-sequences@npm:30.5.0" + checksum: f6afafc9245e0326e03fa2136d9023b93ed4f3e491eb740c4ae66e267b2a47690ff61094a84ebc0a2e5fa9e0ae036ca24636176298698907d6848b89d85677e4 languageName: node linkType: hard -"@jest/environment@npm:>=27": - version: 29.2.0 - resolution: "@jest/environment@npm:29.2.0" +"@jest/environment@npm:30.5.1, @jest/environment@npm:>=27": + version: 30.5.1 + resolution: "@jest/environment@npm:30.5.1" dependencies: - "@jest/fake-timers": ^29.2.0 - "@jest/types": ^29.2.0 + "@jest/fake-timers": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - jest-mock: ^29.2.0 - checksum: 1ddac48da360d59efec1e671e9351fbe24c6ec7976b5704e9d4dfe3e31e1af0851b20b05a94cc0a03709a85e3dc9bf6ae66fde6ecc4a6d36d97623a8b0265af0 + jest-mock: 30.5.1 + checksum: 0a291171c9f57e84a68e3c175e8f852533d4558b77e354fb981e1bb64215a5b3736c8df46b8e9a84460a7d930b9a736c4e6e8e72b86a1e5af6e94cf791bdef80 languageName: node linkType: hard -"@jest/environment@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/environment@npm:26.6.2" +"@jest/expect-utils@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/expect-utils@npm:30.5.1" dependencies: - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - checksum: 7748081b2a758161785aff161780b05084dccaff908c8ed82c04f7da5d5e5439e77b5eb667306d5c4e1422653c7a67ed2955f26704f48c65c404195e1e21780a + "@jest/get-type": 30.5.0 + checksum: ebf68d80421eb806fffb9a82357da28ad8d9b612d33a9a8882b7b1266b6339e4fa4fbbad00e2377179550bc39ae71ee6a59ebc85fd3e74f4e6c617c091244bb9 languageName: node linkType: hard -"@jest/fake-timers@npm:>=27, @jest/fake-timers@npm:^29.2.0": - version: 29.2.0 - resolution: "@jest/fake-timers@npm:29.2.0" +"@jest/expect@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/expect@npm:30.5.1" dependencies: - "@jest/types": ^29.2.0 - "@sinonjs/fake-timers": ^9.1.2 - "@types/node": "*" - jest-message-util: ^29.2.0 - jest-mock: ^29.2.0 - jest-util: ^29.2.0 - checksum: f1ff640365695d64440d12f92c55d40e372fa46d9974089bf2a4cbc43464d2f9e04615caecda7c074b0f0abc072e334e11611df8915b323d0010ed9c2d151bf6 + expect: 30.5.1 + jest-snapshot: 30.5.1 + checksum: c3e244b0ce9c046b5513f980b7eec6650b8454c7cdfe6e1d2057b582654e1d4778a2b1768e3fa5ac314443858f1a6d8308b4468af672fa6d3da07bf0b7684915 languageName: node linkType: hard -"@jest/fake-timers@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/fake-timers@npm:26.6.2" +"@jest/fake-timers@npm:30.5.1, @jest/fake-timers@npm:>=27": + version: 30.5.1 + resolution: "@jest/fake-timers@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - "@sinonjs/fake-timers": ^6.0.1 + "@jest/types": 30.5.1 + "@sinonjs/fake-timers": ^15.4.0 "@types/node": "*" - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: c732658fac4014a424e6629495296c3b2e8697787518df34c74539ec139625e7141ad792b8a4d3c8392b47954ad01be9846b7c57cc8c631490969e7cafa84e6a + jest-message-util: 30.5.1 + jest-mock: 30.5.1 + jest-util: 30.5.1 + checksum: 910a2c2736ac3894223f56658cbdb183a8d7635dada2aab5f39df114ef5a186a7848df1ae887ebde839f0483886368b26ae29afec2e5a250b8ad31160e7c8421 languageName: node linkType: hard -"@jest/globals@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/globals@npm:26.6.2" +"@jest/get-type@npm:30.5.0": + version: 30.5.0 + resolution: "@jest/get-type@npm:30.5.0" + checksum: 6b67e70f6c1cca6da153814542903b4c385447c7c5e029f8911402ca8a75fbd33a14cc0fff4c6ed7c6c629f6425fade605d6f32eb9516b52146a8640fd899773 + languageName: node + linkType: hard + +"@jest/globals@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/globals@npm:30.5.1" + dependencies: + "@jest/environment": 30.5.1 + "@jest/expect": 30.5.1 + "@jest/types": 30.5.1 + jest-mock: 30.5.1 + checksum: 19e5d3ec4a51f2fe336f6d4da392ad707ef8cc67017e9a3ef202658c6c7715ec6756c797210e47138f347b96524f832b9a8d5cf4750ab2de2e26fd9131c0eebf + languageName: node + linkType: hard + +"@jest/pattern@npm:30.5.0": + version: 30.5.0 + resolution: "@jest/pattern@npm:30.5.0" dependencies: - "@jest/environment": ^26.6.2 - "@jest/types": ^26.6.2 - expect: ^26.6.2 - checksum: 49b28d0cc7e99898eeaf23e6899e3c9ee25a2a4831caa3eb930ec1722de2e92a0e8a6a6f649438fdd20ff0c0d5e522dd78cb719466a57f011a88d60419b903c5 + "@types/node": "*" + jest-regex-util: 30.5.0 + checksum: 4f6d71371fc53b3fb0a3f9e095e2af5a7cb98f733cd8643d135e77d729d66afefbf1428dff5b124bef9a0720eed54f577c0ab4bd0681cdcf019b39508948781f languageName: node linkType: hard -"@jest/reporters@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/reporters@npm:26.6.2" +"@jest/react-is-18@npm:react-is@^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 + languageName: node + linkType: hard + +"@jest/react-is-19@npm:react-is@^19.2.5": + version: 19.3.0 + resolution: "react-is@npm:19.3.0" + checksum: c7170b2f1f8bc91cb14c94849a5463a84360b8737d9829aa48c9ef314c1442bc87a2e93e167da45c74ebdbf5b912bdc2fab3c993df495adde3223d533edd6f3b + languageName: node + linkType: hard + +"@jest/reporters@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/reporters@npm:30.5.1" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.2 - graceful-fs: ^4.2.4 + "@jest/console": 30.5.1 + "@jest/test-result": 30.5.1 + "@jest/transform": 30.5.1 + "@jest/types": 30.5.1 + "@jridgewell/trace-mapping": ^0.3.31 + "@types/node": "*" + chalk: ^4.1.2 + collect-v8-coverage: ^1.0.2 + exit-x: ^0.2.2 + glob: ^13.0.6 + graceful-fs: ^4.2.11 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^4.0.3 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 - istanbul-lib-source-maps: ^4.0.0 - istanbul-reports: ^3.0.2 - jest-haste-map: ^26.6.2 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - node-notifier: ^8.0.0 + istanbul-lib-source-maps: ^5.0.0 + istanbul-reports: ^3.1.3 + jest-message-util: 30.5.1 + jest-util: 30.5.1 + jest-worker: 30.5.1 slash: ^3.0.0 - source-map: ^0.6.0 - string-length: ^4.0.1 - terminal-link: ^2.0.0 - v8-to-istanbul: ^7.0.0 - dependenciesMeta: + string-length: ^4.0.2 + v8-to-istanbul: ^9.0.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: node-notifier: optional: true - checksum: 53c7a697c562becb7682a9a6248ea553013bf7048c08ddce5bf9fb53b975fc9f799ca163f7494e0be6c4d3cf181c8bc392976268da52b7de8ce4470b971ed84e + checksum: a9a192560550aa5e0403f75f9b3e259cd78aec654901f2f65086976c2241ce7731a33b0ca2b2f358b0d7647f86d73914efcef88e606d479ceedddb5c8bc723f9 languageName: node linkType: hard -"@jest/schemas@npm:^29.0.0": - version: 29.0.0 - resolution: "@jest/schemas@npm:29.0.0" +"@jest/schemas@npm:30.5.0": + version: 30.5.0 + resolution: "@jest/schemas@npm:30.5.0" dependencies: - "@sinclair/typebox": ^0.24.1 - checksum: 41355c78f09eb1097e57a3c5d0ca11c9099e235e01ea5fa4e3953562a79a6a9296c1d300f1ba50ca75236048829e056b00685cd2f1ff8285e56fd2ce01249acb + "@sinclair/typebox": ^0.34.0 + checksum: 9cce773d1e749e5a0c542321e5a3cd7593d9e29fde4f661996c2fbcdb14c2160a631428e04cd6619827c809c34607d1a388a571df9ee0997026782d098e80735 languageName: node linkType: hard -"@jest/source-map@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/source-map@npm:26.6.2" +"@jest/snapshot-utils@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/snapshot-utils@npm:30.5.1" dependencies: - callsites: ^3.0.0 - graceful-fs: ^4.2.4 - source-map: ^0.6.0 - checksum: b171cef442738887dda85527ab78229996db5946c6435ddb56d442c2851889ba493729a9de73100f1a31b9a31a91207b55bc75656ae7df9843d65078b925385e + "@jest/types": 30.5.1 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + natural-compare: ^1.4.0 + checksum: a8d68234d6d9e6ba2bda1a55d0f82c48ce0d9f0605e1fd4b632e60be954c98bef7d909bb02744d9fd1754b89891490a8d1d125a850b87e141abe9ab1bc44a34a languageName: node linkType: hard -"@jest/test-result@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/test-result@npm:26.6.2" +"@jest/source-map@npm:30.5.0": + version: 30.5.0 + resolution: "@jest/source-map@npm:30.5.0" dependencies: - "@jest/console": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/istanbul-lib-coverage": ^2.0.0 - collect-v8-coverage: ^1.0.0 - checksum: dcb6175825231e9377e43546aed4edd6acc22f1788d5f099bbba36bb55b9115a92f760e88426c076bcdeff5a50d8f697327a920db0cd1fb339781fc3713fa8c7 + "@jridgewell/trace-mapping": ^0.3.31 + callsites: ^3.1.0 + convert-source-map: ^2.0.0 + graceful-fs: ^4.2.11 + checksum: 282534aea997f5253552d25e89ebc85c75f2960c27b0d73ccdcff48edca173c58ab037dbdad4c452a369f4f2262294a997d3f20e5fa680a80d871724bdf04304 languageName: node linkType: hard -"@jest/test-sequencer@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/test-sequencer@npm:26.6.3" +"@jest/test-result@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/test-result@npm:30.5.1" dependencies: - "@jest/test-result": ^26.6.2 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-runner: ^26.6.3 - jest-runtime: ^26.6.3 - checksum: a3450b3d7057f74da1828bb7b3658f228a7c049dc4082c5c49b8bafbd8f69d102a8a99007b7ed5d43464712f7823f53fe3564fda17787f178c219cccf329a461 + "@jest/console": 30.5.1 + "@jest/types": 30.5.1 + "@types/istanbul-lib-coverage": ^2.0.6 + collect-v8-coverage: ^1.0.2 + checksum: 9b906879fb5b5582f00d5fb30147e9a88a21077db9adf2fc568c55c670678f36fc5ab3c799d32d70cc34600af8393de98d7d5c1f9c95e370999cb5dddaee9799 languageName: node linkType: hard -"@jest/transform@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/transform@npm:26.6.2" +"@jest/test-sequencer@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/test-sequencer@npm:30.5.1" dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^26.6.2 - babel-plugin-istanbul: ^6.0.0 - chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 - graceful-fs: ^4.2.4 - jest-haste-map: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-util: ^26.6.2 - micromatch: ^4.0.2 - pirates: ^4.0.1 + "@jest/test-result": 30.5.1 + graceful-fs: ^4.2.11 + jest-haste-map: 30.5.1 slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: 31667b925a2f3b310d854495da0ab67be8f5da24df76ecfc51162e75f1140aed5d18069ba190cb5e0c7e492b04272c8c79076ddf5bbcff530ee80a16a02c4545 + checksum: d0a0198411293cf325a84ee8d685e7a6f3247e2d4e753ba3f3fc991ea498284d50e93a1464b93114628e5445bcb0bea39e68bbca30a99ef5de85394c97fc2516 + languageName: node + linkType: hard + +"@jest/transform@npm:30.5.1": + version: 30.5.1 + resolution: "@jest/transform@npm:30.5.1" + dependencies: + "@babel/core": ^7.27.4 + "@jest/types": 30.5.1 + "@jridgewell/trace-mapping": ^0.3.31 + babel-plugin-istanbul: ^8.0.0 + chalk: ^4.1.2 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.11 + jest-haste-map: 30.5.1 + jest-regex-util: 30.5.0 + jest-util: 30.5.1 + pirates: ^4.0.7 + slash: ^3.0.0 + write-file-atomic: ^5.0.1 + checksum: aafd76e8ac087b60f070b19d8b7f2a426eb414c89d0deb98c5d65786a95cbdcdde03b174c277e99c61ce1e4f1aec4cec8c8f9fbc04b0d4fc0d3927cb3fc10b59 languageName: node linkType: hard -"@jest/types@npm:>=27, @jest/types@npm:^29.2.0": - version: 29.2.0 - resolution: "@jest/types@npm:29.2.0" +"@jest/types@npm:30.5.1, @jest/types@npm:>=27": + version: 30.5.1 + resolution: "@jest/types@npm:30.5.1" dependencies: - "@jest/schemas": ^29.0.0 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 + "@jest/pattern": 30.5.0 + "@jest/schemas": 30.5.0 + "@types/istanbul-lib-coverage": ^2.0.6 + "@types/istanbul-reports": ^3.0.4 "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: 6b04cbb23306f16eaf4f0d158cfcb7cc905b352e2e44a0a4618c46cf3bdf7a1da64cea8fbc731a19e8a86dc5b80a75aec985cf8764b3178939b5d850ccc68b57 + "@types/yargs": ^17.0.33 + chalk: ^4.1.2 + checksum: 6d08a098a91a19bfe6ba9c11ba66f8b4a9c328c1b7dd91e528a7affaa82431ddf0f658d5c51d4180885c73d2021bff9166e8aa7a44774b707245e360cb90cc29 languageName: node linkType: hard -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.13 + resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 + "@jridgewell/sourcemap-codec": ^1.5.0 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: f2105acefc433337145caa3c84bba286de954f61c0bc46279bbd85a9e6a02871089717fa060413cfb6a9d44189fe8313b2d1cabf3a2eb3284d208fd5f75c54ff languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" +"@jridgewell/remapping@npm:^2.3.5": + version: 2.3.5 + resolution: "@jridgewell/remapping@npm:2.3.5" dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: 4a66a7397c3dc9c6b5c14a0024b1f98c5e1d90a0dbc1e5955b5038f2db339904df2a0ee8a66559fafb4fc23ff33700a2639fd40bbdd2e9e82b58b3bdf83738e3 languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": + version: 1.6.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.6.0" + checksum: d49b0547385f352ae1955d47cc4c7bb3595000df69469b7382da05bda3277cb0b80ccf776b402306ffcd16424c194e117ca24a3d6ac7d3e796a2361c9a264608 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": + version: 0.3.31 + resolution: "@jridgewell/trace-mapping@npm:0.3.31" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: af8fda2431348ad507fbddf8e25f5d08c79ecc94594061ce402cf41bc5aba1a7b3e59bf0fd70a619b35f33983a3f488ceeba8faf56bff784f98bb5394a8b7d47 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 +"@keyv/bigmap@npm:^1.3.1": + version: 1.3.1 + resolution: "@keyv/bigmap@npm:1.3.1" + dependencies: + hashery: ^1.4.0 + hookified: ^1.15.0 + peerDependencies: + keyv: ^5.6.0 + checksum: 943fdd8bd30ca9a8f4f425c3d1bd7e9cdc7d8ca4c55a7db2d5291b572b9b6f60af3796bd12b6eda2769b2dd8e93686d3580d3f5656f100b87fb571691658b432 languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 +"@keyv/serialize@npm:^1.1.1": + version: 1.1.1 + resolution: "@keyv/serialize@npm:1.1.1" + checksum: 2963ba90a6ca1cad7e4c1ff2de09326841eba4bca90dc52508fdc92ef88972ffd8ae8be48de80cfa9a864617955f146bb6dca700f5790118fefd74880d432ca7 languageName: node linkType: hard -"@miniflare/cache@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/cache@npm:2.10.0" +"@miniflare/cache@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/cache@npm:2.14.2" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 http-cache-semantics: ^4.1.0 - undici: 5.9.1 - checksum: 29d1d97438098180c8604a11553cefd47029ace46652fce1c95d5d8ca7f1d2d35f6fc82a60e581e21c0e6cbce2700d07d3d028debd03fe40f098f5234022e79a + undici: 5.28.2 + checksum: 7c5ad247c35354d50174428333a5ecc3effd239cdb4efc76c4b0dc9bcb399bb79dd3c5b1458b524986710ba49d7b2eca7309494d44c7375da61355806f6749a6 languageName: node linkType: hard -"@miniflare/core@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/core@npm:2.10.0" +"@miniflare/core@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/core@npm:2.14.2" dependencies: "@iarna/toml": ^2.2.5 - "@miniflare/queues": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/watcher": 2.10.0 + "@miniflare/queues": 2.14.2 + "@miniflare/shared": 2.14.2 + "@miniflare/watcher": 2.14.2 busboy: ^1.6.0 dotenv: ^10.0.0 kleur: ^4.1.4 set-cookie-parser: ^2.4.8 - undici: 5.9.1 + undici: 5.28.2 urlpattern-polyfill: ^4.0.3 - checksum: ff096a1e5c21229d717fe86ec04bcafda658447b22236118df54a5476d7ac01406396b6f4c67050d0a2ec01138ae5c30b65912a09979991ab5ab54c7c064b039 + checksum: 77028c990743d98ca364e159ab7cdd60cfdd074a5a966d60a52d410c5390a5a8943d058b2e82680139e7687008390431926c69fd77456511e73f69973c173b17 languageName: node linkType: hard -"@miniflare/d1@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/d1@npm:2.10.0" +"@miniflare/d1@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/d1@npm:2.14.2" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - checksum: 84df69e495195da0797febde2420eca6c3d422f4a120a7e3ce0de415eb634849495a3bcadd9f5b6f7305ee78762b69bab96bd6dec59a07a566999b7867a2ba3c + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 + checksum: 603f75f83986b7b1800c9fe170d8507276c40458a8a426b6c3605cb40c679df1cafc634f0d8bd95156535228ce42516066542b0cc70cb87f5fe8dd2fe0613f38 languageName: node linkType: hard -"@miniflare/durable-objects@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/durable-objects@npm:2.10.0" +"@miniflare/durable-objects@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/durable-objects@npm:2.14.2" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/storage-memory": 2.10.0 - undici: 5.9.1 - checksum: b6267de24df2cf88c40602c3005460a2b552749335c8380bef9406093edfe7cf11192b090f91b44fd4ee47596dc533a74e651c5513eadaf10bd91e3dc6bb849a + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 + "@miniflare/storage-memory": 2.14.2 + undici: 5.28.2 + checksum: 95fa088add73d19110400466c11106f904900f0610bc8b85ea957656669a58704caf6ac3e8afea7934f1db5a63576781c44228ed2adbf501ad1f359b88a94008 languageName: node linkType: hard -"@miniflare/html-rewriter@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/html-rewriter@npm:2.10.0" +"@miniflare/html-rewriter@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/html-rewriter@npm:2.14.2" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 html-rewriter-wasm: ^0.4.1 - undici: 5.9.1 - checksum: 35e925e35f2482a4c052488f0a1a443f7b0f901f1e0502e2fceba4a6f1fb125012eea328e3bba11b47ff9aea0ac29c00cfc8d41cb773531d87e80352b1c4413a + undici: 5.28.2 + checksum: 3ac34a4ea5952c64051a2916470ab0dfd2c52fb7fd9f269586fc4964cd9ec02ef16e2bfacef8d0dab5b02e27c7caea3ac32b7719c3eb0bab3271ceb26fa27d44 languageName: node linkType: hard -"@miniflare/kv@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/kv@npm:2.10.0" +"@miniflare/kv@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/kv@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - checksum: 1e6b4719ec9a2413a8e56c721b413ed74475862b710d88b0ae93d4b04515cdc0076bf6ac766fcca2637d281c00c6bc61b37d73d214699dc6c45fc19298218d39 + "@miniflare/shared": 2.14.2 + checksum: cd38d49eb12ad8730db005e4ec743e28283d4e60a848948ea2bdf99765bcaee0617ce8fff560f40bcaf76dfb4ccc1be6eccd0c89230681eb94973f519591f8b5 languageName: node linkType: hard -"@miniflare/queues@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/queues@npm:2.10.0" +"@miniflare/queues@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/queues@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - checksum: 4a9496cb2be7d715209e4b99b5d98ebfa0f30f7635e67009bfa238018820ba85c18b97296dc133ccd98478efc71b5af7396361f1f50aaff5fa4ca398c872d662 + "@miniflare/shared": 2.14.2 + checksum: 23eaf7e3b23ae3915e03e559891bff8ed5dc2892d281d3ee0160e463872bab6e7c86c4b7f1d759caa7004ebf84596d332e865246e68a5cca05c3b36777861dfb languageName: node linkType: hard -"@miniflare/r2@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/r2@npm:2.10.0" +"@miniflare/r2@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/r2@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - undici: 5.9.1 - checksum: 69a52d614ef81981275097270831ee6af9ad642d40dea4078c12fc94f62e060e3872c6ae394bca41cb94630a499cd0cdfaefeb26e7fa78483b9f9ac239640733 + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 + undici: 5.28.2 + checksum: 75a7a70713b93f4bc3ed30054392d52f712ba02fd105785031873e829ae6b4594bcdfc86e1c7e869eaeb78f233930bd760222057c6b761d68ee8dee0dc7f5340 languageName: node linkType: hard -"@miniflare/runner-vm@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/runner-vm@npm:2.10.0" +"@miniflare/runner-vm@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/runner-vm@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - checksum: 4c4ab8460762cb5957661234e8bc54f022159accd0845b7b2094e47e70b9428c9a053f998dedf5a00ade537148ea7695c9198f1f43760492d522a1798e6348ad + "@miniflare/shared": 2.14.2 + checksum: c91f96d359973bb4ed80f29aac23dca3865ecebca4a66f76401552c50e845a90b822c184e02d6bc9275cc25e86414a1d20e174725f9578647f695b53a0f2bd9f languageName: node linkType: hard -"@miniflare/shared-test-environment@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/shared-test-environment@npm:2.10.0" +"@miniflare/shared-test-environment@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/shared-test-environment@npm:2.14.2" dependencies: - "@miniflare/cache": 2.10.0 - "@miniflare/core": 2.10.0 - "@miniflare/d1": 2.10.0 - "@miniflare/durable-objects": 2.10.0 - "@miniflare/html-rewriter": 2.10.0 - "@miniflare/kv": 2.10.0 - "@miniflare/queues": 2.10.0 - "@miniflare/r2": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/sites": 2.10.0 - "@miniflare/storage-memory": 2.10.0 - "@miniflare/web-sockets": 2.10.0 - checksum: 65e1dc32d585e8fa5d16eb813834af0101ef2bd7bdc2f5886685261fc490288be0c4659d518f3d88ac7b1148a2e34b240e40a686df4f17df617304485aca2acd + "@cloudflare/workers-types": ^4.20221111.1 + "@miniflare/cache": 2.14.2 + "@miniflare/core": 2.14.2 + "@miniflare/d1": 2.14.2 + "@miniflare/durable-objects": 2.14.2 + "@miniflare/html-rewriter": 2.14.2 + "@miniflare/kv": 2.14.2 + "@miniflare/queues": 2.14.2 + "@miniflare/r2": 2.14.2 + "@miniflare/shared": 2.14.2 + "@miniflare/sites": 2.14.2 + "@miniflare/storage-memory": 2.14.2 + "@miniflare/web-sockets": 2.14.2 + checksum: 2a3b15f76801101d5470d505aaff7fa126517bc0f837b1937ccb1d960fbbd4c5f2a551895ec37649aa656f7c56d5f27999589174866158ad1439b18dd82e701b languageName: node linkType: hard -"@miniflare/shared@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/shared@npm:2.10.0" +"@miniflare/shared@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/shared@npm:2.14.2" dependencies: "@types/better-sqlite3": ^7.6.0 kleur: ^4.1.4 - npx-import: ^1.1.3 + npx-import: ^1.1.4 picomatch: ^2.3.1 - checksum: ec610c597d3d7c6d94687f956fb9dee9549e4a5f8f5ceacabbc1d840329d45bdd831926691c13aa9f91b816518a9caac7c3702ad432a9f049fa6a27cdeb90a49 + checksum: a51329296ec68d294c37e89f16bea926f30c7e2f6fb5538ba4dbf49509fc254de3af80a3e4fe0045d859a5b736bf07436be6eec27b9c77ab283cdfdf581c38bf languageName: node linkType: hard -"@miniflare/sites@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/sites@npm:2.10.0" +"@miniflare/sites@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/sites@npm:2.14.2" dependencies: - "@miniflare/kv": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/storage-file": 2.10.0 - checksum: f2de5fba0e5ccbdf210bd30930813700ec6929d2564ba4a17ea13759fe5648dfe5f72bb69e4b2debd655e66a18adc73d67f44478e5858d05acab835cf286ad72 + "@miniflare/kv": 2.14.2 + "@miniflare/shared": 2.14.2 + "@miniflare/storage-file": 2.14.2 + checksum: e3b2f31ff5ac64d68435a0c8980aedc1767e36634dd08719e0697ae101ac3e8714d68d839f11c419c2381232ff228d332c80dbcb37f636fcd1556547a41b7c34 languageName: node linkType: hard -"@miniflare/storage-file@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/storage-file@npm:2.10.0" +"@miniflare/storage-file@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/storage-file@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - "@miniflare/storage-memory": 2.10.0 - checksum: f4e3496b4783acf34af3b43bce21e41def1aaf4eec2ac51f35006f4d3c655e4eadc7f8a42f11b9846925c4519839858f5b7c080c2222c759b497ae8d36ce4f0b + "@miniflare/shared": 2.14.2 + "@miniflare/storage-memory": 2.14.2 + checksum: ecb55f771a4d78736e44bc5b5f5414807ef3b8a27f2c1b66cc6bcf772600dd77fac8e34c9ea98130832b2fdbc7c134d1d1d6e3d526e692f892d5e00404317e46 languageName: node linkType: hard -"@miniflare/storage-memory@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/storage-memory@npm:2.10.0" +"@miniflare/storage-memory@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/storage-memory@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - checksum: 03190729308497a4d1a948661f0afc6f9c9b39396fd99703e69378f18108581363629313fb52680a5b468eb0f43de486844afbe727afc81032dfae0458d8637c + "@miniflare/shared": 2.14.2 + checksum: 01a839ceed4f902a5363ba30c4ff166c43ee3afcc9a0b15e33f9a9d32751df57953729a17c522addfc6199afa109e0e5351366abc2f4087a0c5cb156394ad471 languageName: node linkType: hard -"@miniflare/watcher@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/watcher@npm:2.10.0" +"@miniflare/watcher@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/watcher@npm:2.14.2" dependencies: - "@miniflare/shared": 2.10.0 - checksum: ee4c4f1e0ce3fcc8cbd4be32579efffac33f00a48dcc546558f699450dbe6d818ab9df9594fe76836dc2c5138df36359d554bd3e79d9ac45b01bf60986ca8c59 + "@miniflare/shared": 2.14.2 + checksum: aaf9ac7f4212dd29b1da600fd4b2c87c6d3c1904d47e3a73fcb0fc86cd680fd453771b19fe0be7b5e4e63e407ebce47b3800c60c947b35eba0cb4445f8ea76f1 languageName: node linkType: hard -"@miniflare/web-sockets@npm:2.10.0": - version: 2.10.0 - resolution: "@miniflare/web-sockets@npm:2.10.0" +"@miniflare/web-sockets@npm:2.14.2": + version: 2.14.2 + resolution: "@miniflare/web-sockets@npm:2.14.2" dependencies: - "@miniflare/core": 2.10.0 - "@miniflare/shared": 2.10.0 - undici: 5.9.1 + "@miniflare/core": 2.14.2 + "@miniflare/shared": 2.14.2 + undici: 5.28.2 ws: ^8.2.2 - checksum: 1a030939211926ddc9769174b8939e37348bb5d08f67227ba691ef7aad65bcb368cf217d8478d01b15d85427d16d8e94af08a27189d5a5c965fcfa0934be2eff + checksum: 77f0ac911c3cd67ae84d285bcee97e0410d13fdae5f1eca2df74bc8b7dc85d406b922951af6509ba358f55b910e4cfcfffd9bc19bd5e498d6881d20090f71c15 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^1.1.4": + version: 1.2.4 + resolution: "@napi-rs/wasm-runtime@npm:1.2.4" + dependencies: + "@tybys/wasm-util": ^0.10.3 + peerDependencies: + "@emnapi/core": ^1.7.1 || ^2.0.0-alpha.4 + "@emnapi/runtime": ^1.7.1 || ^2.0.0-alpha.4 + checksum: 9ff112320dbce51ddacde2e6f8ed930798edf0e348490938460a52b1f3cb5ad1fec24a1fa9121abd474c259e246be8e245c4e66c2910079147f57a0f35f7d06d languageName: node linkType: hard @@ -1063,101 +1256,233 @@ __metadata: languageName: node linkType: hard -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.46 - resolution: "@sinclair/typebox@npm:0.24.46" - checksum: 19d708fe93a42dce4ed6452a58909c841ad3484a6388a5b5d82e7ab11f8bfbd013bf34c32d6234a55532e4ff5f8ab9e1df17bb13b389aca038c7f05a8950a72a +"@parcel/watcher-android-arm64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-android-arm64@npm:2.6.0" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.3 - resolution: "@sinonjs/commons@npm:1.8.3" - dependencies: - type-detect: 4.0.8 - checksum: 6159726db5ce6bf9f2297f8427f7ca5b3dff45b31e5cee23496f1fa6ef0bb4eab878b23fb2c5e6446381f6a66aba4968ef2fc255c1180d753d4b8c271636a2e5 +"@parcel/watcher-darwin-arm64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.6.0" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^6.0.1": - version: 6.0.1 - resolution: "@sinonjs/fake-timers@npm:6.0.1" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 8e331aa1412d905ecc8efd63550f58a6f77dcb510f878172004e53be63eb82650623618763001a918fc5e21257b86c45041e4e97c454ed6a2d187de084abbd11 +"@parcel/watcher-darwin-x64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.6.0" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^9.1.2": - version: 9.1.2 - resolution: "@sinonjs/fake-timers@npm:9.1.2" - dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6 +"@parcel/watcher-freebsd-x64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.6.0" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 +"@parcel/watcher-linux-arm-glibc@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.6.0" + conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 +"@parcel/watcher-linux-arm-musl@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-arm-musl@npm:2.6.0" + conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": - version: 7.1.19 - resolution: "@types/babel__core@npm:7.1.19" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 8c9fa87a1c2224cbec251683a58bebb0d74c497118034166aaa0491a4e2627998a6621fc71f8a60ffd27d9c0c52097defedf7637adc6618d0331c15adb302338 +"@parcel/watcher-linux-arm64-glibc@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.6.0" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@types/babel__generator@npm:*": - version: 7.6.2 - resolution: "@types/babel__generator@npm:7.6.2" - dependencies: - "@babel/types": ^7.0.0 - checksum: b7764309e5f292c4a15fb587ba610e7fa290e1a2824efe16c0608abdb835de310147b4410f067bb25d817ba72bfc65c6aa0018933b02a774e744dbe51befeab6 +"@parcel/watcher-linux-arm64-musl@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.6.0" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@types/babel__template@npm:*": - version: 7.4.0 - resolution: "@types/babel__template@npm:7.4.0" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 5262dc75e66fe0531b046d19f5c39d1b7e3419e340624229b52757cdedb295cb5658494b64eb234bd18cab7740c45c1d72ed2f16d1d189a765df2dc4efeed1af +"@parcel/watcher-linux-x64-glibc@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.6.0" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.11.1 - resolution: "@types/babel__traverse@npm:7.11.1" +"@parcel/watcher-linux-x64-musl@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.6.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.6.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher-win32-x64@npm:2.6.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.6.0": + version: 2.6.0 + resolution: "@parcel/watcher@npm:2.6.0" + dependencies: + "@parcel/watcher-android-arm64": 2.6.0 + "@parcel/watcher-darwin-arm64": 2.6.0 + "@parcel/watcher-darwin-x64": 2.6.0 + "@parcel/watcher-freebsd-x64": 2.6.0 + "@parcel/watcher-linux-arm-glibc": 2.6.0 + "@parcel/watcher-linux-arm-musl": 2.6.0 + "@parcel/watcher-linux-arm64-glibc": 2.6.0 + "@parcel/watcher-linux-arm64-musl": 2.6.0 + "@parcel/watcher-linux-x64-glibc": 2.6.0 + "@parcel/watcher-linux-x64-musl": 2.6.0 + "@parcel/watcher-win32-arm64": 2.6.0 + "@parcel/watcher-win32-x64": 2.6.0 + detect-libc: ^2.0.3 + is-glob: ^4.0.3 + node-addon-api: ^7.0.0 + node-gyp: latest + picomatch: ^4.0.4 + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm-musl": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 5c0869c2c0bbce6898148f619488aeb768760e025d601be45277e1d00829328379228c50b7346daf26ed8cc62868634ccbc9aee16c6b64df160c3efe8ecc2742 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.3.6": + version: 0.3.6 + resolution: "@pkgr/core@npm:0.3.6" + checksum: 29082aa13d36f13fc41cdc64cb1feb36b630de0d6ebde84e2ff68e3d7a7f1dce4462cca91f76176c46e50bbca6b1e7f1fd9cf907af12d5d70da83bc981ca4ccf + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.52 + resolution: "@sinclair/typebox@npm:0.34.52" + checksum: 4996f7e16431216d9998700d86645a3341a8036a020466414ec89dbbbbcc60e96d0ed04bd8c7ac4d145ced9aeba991bf2d7334b5b6b579b943e94d208a516c0e + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" dependencies: - "@babel/types": ^7.3.0 - checksum: 7bcf7fd0c88687929467d8be08460a7b216b2df5080338bc0575f1b9dbc51ba467b44063802ebbbea1249d5e2a87fed1f02d18b36c1723cd4d957cca70d3a89b + type-detect: 4.0.8 + checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^15.4.0": + version: 15.4.0 + resolution: "@sinonjs/fake-timers@npm:15.4.0" + dependencies: + "@sinonjs/commons": ^3.0.1 + checksum: 89714334b84c0dd5ef84cc01ec99d7d16529297fc32a68c28e4793b89bac0de7b373310b736ed4a57697de92eca4e7cc62c2ec4fae1e651787345e2564b707f4 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.10.3": + version: 0.10.4 + resolution: "@tybys/wasm-util@npm:0.10.4" + dependencies: + tslib: ^2.4.0 + checksum: e4ae233396d35bad484b7cb646d14ccf4841dbd5e6d9312e6b3ca4e3fcf767c442fd0e81daba1307b1d02990af739ce79e1631d3d94e66e3b1436ae68e7b338c + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.2 + resolution: "@types/babel__generator@npm:7.6.2" + dependencies: + "@babel/types": ^7.0.0 + checksum: b7764309e5f292c4a15fb587ba610e7fa290e1a2824efe16c0608abdb835de310147b4410f067bb25d817ba72bfc65c6aa0018933b02a774e744dbe51befeab6 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.0 + resolution: "@types/babel__template@npm:7.4.0" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 5262dc75e66fe0531b046d19f5c39d1b7e3419e340624229b52757cdedb295cb5658494b64eb234bd18cab7740c45c1d72ed2f16d1d189a765df2dc4efeed1af languageName: node linkType: hard -"@types/babel__traverse@npm:^7.0.4": - version: 7.18.2 - resolution: "@types/babel__traverse@npm:7.18.2" +"@types/babel__traverse@npm:*": + version: 7.11.1 + resolution: "@types/babel__traverse@npm:7.11.1" dependencies: "@babel/types": ^7.3.0 - checksum: 05972775e21cf07753b3bec725bf76f5a9804f99f660d323040746e3c8a4fe1b4ef6df17d7a80c4e2e335382cc72c62fc5a7079af836871ff9cbf0c21804e6d9 + checksum: 7bcf7fd0c88687929467d8be08460a7b216b2df5080338bc0575f1b9dbc51ba467b44063802ebbbea1249d5e2a87fed1f02d18b36c1723cd4d957cca70d3a89b languageName: node linkType: hard @@ -1170,22 +1495,34 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "*" - checksum: d076bb61f45d0fc42dee496ef8b1c2f8742e15d5e47e90e20d0243386e426c04d4efd408a48875ab432f7960b4ce3414db20ed0fbbfc7bcc89d84e574f6e045a +"@types/esrecurse@npm:^4.3.1": + version: 4.3.1 + resolution: "@types/esrecurse@npm:4.3.1" + checksum: ada5798554b76ac466e90fff26a769b65f905666f32988dcd1b6cf8288896e0fb53080843fd644bf731d16719a6e09b155d623ce36545b75abdd99bb6dcec114 languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": +"@types/estree@npm:^1.0.6, @types/estree@npm:^1.0.8": + version: 1.0.9 + resolution: "@types/estree@npm:1.0.9" + checksum: 752c0afee3ec82b8e24484bf6a27dfa093bbf3de4ef1c20ed0364fb6ad2c0c7971e7504ed9a7aaff103a47e2d945ce7a17f74951743dd944782a0735f53170de + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.3 resolution: "@types/istanbul-lib-coverage@npm:2.0.3" checksum: 0650cba4be8f464bee89b9de0b71a5ea3b5cc676ce24e1196b5d6a51542ce9e613ae4549bf19756bb33dbbbb32b47931040266100062bfb197c597d73e341eb0 languageName: node linkType: hard +"@types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + languageName: node + linkType: hard + "@types/istanbul-lib-report@npm:*": version: 3.0.0 resolution: "@types/istanbul-lib-report@npm:3.0.0" @@ -1195,19 +1532,19 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "*" - checksum: 286a18cff19c4dac4321b9ea406a3560faf577fb2a4df5abf9d577fa81ba831c9baa7d40d03f1daf7fe613d468546b731c00b844b72fad9834c583311a35bb7b + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard @@ -1218,24 +1555,10 @@ __metadata: languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 - languageName: node - linkType: hard - -"@types/prettier@npm:^2.0.0": - version: 2.7.1 - resolution: "@types/prettier@npm:2.7.1" - checksum: 5e3f58e229d6c73b5f5cae2e8f96c1c4a5b5805f83459e17a045ba8e96152b1d38e86b63e3172fb159dac923388699660862b75b2d37e54220805f0e691e26f1 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/stack-utils@npm:2.0.0" - checksum: b3fbae25b073116977ecb5c67d22f14567b51a7792403b0bf46e5de8f29bde3bd4ec1626afb22065495ca7f1c699c8bd66720050c94b8f8f9bcefbee79d161fd +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 languageName: node linkType: hard @@ -1246,86 +1569,202 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^15.0.0": - version: 15.0.14 - resolution: "@types/yargs@npm:15.0.14" +"@types/yargs@npm:^17.0.33": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" dependencies: "@types/yargs-parser": "*" - checksum: 8e358aeb8f0c3758e59e2b8fcfdee5627ab2fe3d92f50f380503d966c7f33287be3322155516a50d27727fde1ad3878f48f60cd6648439126d4b0bbb1a1153ed + checksum: ebf1f5373388cfcbf9cfb5e56ce7a77c0ba2450420f26f3701010ca92df48cce7e14e4245ed1f17178a38ff8702467a6f4047742775b8e2fd06dec8f4f3501ce languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": - version: 17.0.13 - resolution: "@types/yargs@npm:17.0.13" - dependencies: - "@types/yargs-parser": "*" - checksum: 0ab269abc2da2223cf0a8c16d578850fbe327d40fb85724b5c3f9f6cf38d03656ef699518c05d4df3bc337339ec6d0aad7df01682a9dca4783ad1ccc7336cf12 +"@ungap/structured-clone@npm:^1.3.0": + version: 1.4.0 + resolution: "@ungap/structured-clone@npm:1.4.0" + checksum: 2a69d69c54600b0e7acd1755cfd4f80e2bf5a57f999d4c3f4023ef69d94ca8a86520e3369edb635f0925c67af87c7f0b6f1a7177a682e8bbb66fb7973180102d languageName: node linkType: hard -"@ungap/promise-all-settled@npm:1.1.2": - version: 1.1.2 - resolution: "@ungap/promise-all-settled@npm:1.1.2" - checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c +"@unrs/resolver-binding-android-arm-eabi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.12.2" + conditions: os=android & cpu=arm languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e +"@unrs/resolver-binding-android-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.12.2" + conditions: os=android & cpu=arm64 languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 +"@unrs/resolver-binding-darwin-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.12.2" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" +"@unrs/resolver-binding-darwin-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.12.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.12.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.12.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.12.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-gnu@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-loong64-musl@npm:1.12.2" + conditions: os=linux & cpu=loong64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.12.2" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.12.2" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.12.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.12.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-openharmony-arm64@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-openharmony-arm64@npm:1.12.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.12.2" dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 + "@emnapi/core": 1.10.0 + "@emnapi/runtime": 1.10.0 + "@napi-rs/wasm-runtime": ^1.1.4 + conditions: cpu=wasm32 languageName: node linkType: hard -"acorn-jsx@npm:^5.3.1": - version: 5.3.1 - resolution: "acorn-jsx@npm:5.3.1" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: daf441a9d7b59c0ea1f7fe2934c48aca604a007455129ce35fa62ec3d4c8363e2efc2d4da636d18ce0049979260ba07d8b42bc002ae95182916d2c90901529c2 +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.12.2" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"acorn@npm:^7.1.1, acorn@npm:^7.4.0": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 +"@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2": + version: 1.12.2 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.12.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 languageName: node linkType: hard -"acorn@npm:^8.2.4": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" +"acorn@npm:^8.16.0": + version: 8.18.0 + resolution: "acorn@npm:8.18.0" bin: acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + checksum: 97d3e1696acb3e85b15c82a4193a9ecffe5df55ae408ed804e07955f3e3e53d0bbfdb9e5c9885c938371b78481f7667e36d12814764863d190de2117ed4757d7 languageName: node linkType: hard @@ -1359,38 +1798,19 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" +"ajv@npm:^6.14.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0" dependencies: fast-deep-equal: ^3.1.1 fast-json-stable-stringify: ^2.0.0 json-schema-traverse: ^0.4.1 uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ajv@npm:^8.0.1": - version: 8.2.0 - resolution: "ajv@npm:8.2.0" - dependencies: - fast-deep-equal: ^3.1.1 - json-schema-traverse: ^1.0.0 - require-from-string: ^2.0.2 - uri-js: ^4.2.2 - checksum: 36994bc227aac4c29ff967de5d53f087449ffab62d66f782f99c6aad8ac1d58db4eb7b0f78ce7961492eae00be51c2384b38b69e099d1021d41b2353dce91417 - languageName: node - linkType: hard - -"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 + checksum: a8e0308f1b44c3dfd1143911353be51bf8aedc2f2bcd595061755ad241c8450a10e4b657af8ba764c5ec9ae2162010f21d5e0d43763e20d782a8171da99b967a languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": +"ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -1399,13 +1819,6 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-regex@npm:3.0.0" - checksum: 2ad11c416f81c39f5c65eafc88cf1d71aa91d76a2f766e75e457c2a3c43e8a003aadbf2966b61c497aa6a6940a36412486c975b3270cdfc3f413b69826189ec3 - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.0": version: 5.0.0 resolution: "ansi-regex@npm:5.0.0" @@ -1420,6 +1833,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.2.2": + version: 6.3.0 + resolution: "ansi-regex@npm:6.3.0" + checksum: 85e15deee80d6e52e75864897b6f7b8a8cfc5befe1868f03e3b6bf8925b9b667cf67d4aeafc6d038398f2f11c3813e7b40ad79affdd29a9c491b3585bfa125d5 + languageName: node + linkType: hard + "ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" @@ -1438,30 +1858,27 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^5.0.0": +"ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 languageName: node linkType: hard -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 +"ansi-styles@npm:^6.1.0": + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: f1b0829cf048cce870a305819f65ce2adcebc097b6d6479e12e955fd6225df9b9eb8b497083b764df796d94383ff20016cc4dbbae5b40f36138fb65a9d33c2e2 languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" +"anymatch@npm:^3.1.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" dependencies: normalize-path: ^3.0.0 picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard @@ -1491,238 +1908,135 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" - dependencies: - "@babel/runtime": ^7.10.2 - "@babel/runtime-corejs3": ^7.10.2 - checksum: 38401a9a400f26f3dcc24b84997461a16b32869a9893d323602bed8da40a8bcc0243b8d2880e942249a1496cea7a7de769e93d21c0baa439f01e1ee936fed665 +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 9102e246d1ed9b37ac36f57f0a6ca55226876553251a31fc80677e71471f463a54c872dc78d5d7f80740c8ba624395cccbe8b60f7b690c4418f487d8e9fd1106 languageName: node linkType: hard -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 74a71a4a2dd7afd06ebb612f6d612c7f4766a351bedffde466023bf6dae629e46b0d2cd38786239e0fbf245de0c7df76035465e16d1213774a0efb22fec0d713 languageName: node linkType: hard -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be languageName: node linkType: hard -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 +"axios@npm:1.19.0": + version: 1.19.0 + resolution: "axios@npm:1.19.0" + dependencies: + follow-redirects: ^1.16.0 + form-data: ^4.0.6 + https-proxy-agent: ^5.0.1 + proxy-from-env: ^2.1.0 + checksum: 37ef6b3049548a384dff61ef4705011458b51bcd9fd2492b844c3a5f9210cc584c7fa855aaa86a807c4c02f0df17828eba209f461aded8748539e4d87c2fa080 languageName: node linkType: hard -"array-includes@npm:^3.1.1, array-includes@npm:^3.1.2": - version: 3.1.3 - resolution: "array-includes@npm:3.1.3" +"babel-jest@npm:30.5.1": + version: 30.5.1 + resolution: "babel-jest@npm:30.5.1" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - get-intrinsic: ^1.1.1 - is-string: ^1.0.5 - checksum: eaab8812412b5ec921c8fe678a9d61f501b12f6c72e271e0e8652fe7f4145276cc7ad79ff303ac4ed69cbf5135155bfb092b1b6d552e423e75106d1c887da150 + "@jest/transform": 30.5.1 + "@types/babel__core": ^7.20.5 + babel-plugin-istanbul: ^8.0.0 + babel-preset-jest: 30.5.0 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-0 + checksum: 353956d8e63001b2c99e7472b92912e99f3b40c46760b46fde00cd18f638ffdde2418ea51df36372fbe1814ba8372d9c838b11b6c0ffae30fa4fff7b40a15929 languageName: node linkType: hard -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 +"babel-plugin-istanbul@npm:^8.0.0": + version: 8.0.2 + resolution: "babel-plugin-istanbul@npm:8.0.2" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.3 + istanbul-lib-instrument: ^6.0.2 + test-exclude: ^7.0.1 + checksum: cb331029bc1c0952a32ee21fabd7756a58406634e13d648cb053ac8f4ec5c594c368563ef8f40d59f22d1b05a5f10e0a9756d34065c31e8c436444d685670417 languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.3": - version: 1.2.4 - resolution: "array.prototype.flat@npm:1.2.4" +"babel-plugin-jest-hoist@npm:30.5.0": + version: 30.5.0 + resolution: "babel-plugin-jest-hoist@npm:30.5.0" dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.1 - checksum: 1ec5d9887ae45e70e4b993e801b440ae5ddcd0d2c6d1dbe214c311e91436152f510916bdac82b066693544b9801a3c510dfbec8a278ababf8de7eb0bde74636f + "@types/babel__core": ^7.20.5 + checksum: 05e8ef9dc80cb6dc85013f5eceb8efd6b2897e17f006ad316f9084c98796b759e1a0571e4e7892798b4f269b643c075ef5404b2f366a0a583fc8002564484396 languageName: node linkType: hard -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c +"babel-preset-current-node-syntax@npm:^1.2.0": + version: 1.2.0 + resolution: "babel-preset-current-node-syntax@npm:1.2.0" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.12.13 + "@babel/plugin-syntax-class-static-block": ^7.14.5 + "@babel/plugin-syntax-import-attributes": ^7.24.7 + "@babel/plugin-syntax-import-meta": ^7.10.4 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.10.4 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-private-property-in-object": ^7.14.5 + "@babel/plugin-syntax-top-level-await": ^7.14.5 + peerDependencies: + "@babel/core": ^7.0.0 || ^8.0.0-0 + checksum: 3608fa671cfa46364ea6ec704b8fcdd7514b7b70e6ec09b1199e13ae73ed346c51d5ce2cb6d4d5b295f6a3f2cad1fdeec2308aa9e037002dd7c929194cc838ea languageName: node linkType: hard -"ast-types-flow@npm:^0.0.7": - version: 0.0.7 - resolution: "ast-types-flow@npm:0.0.7" - checksum: a26dcc2182ffee111cad7c471759b0bda22d3b7ebacf27c348b22c55f16896b18ab0a4d03b85b4020dce7f3e634b8f00b593888f622915096ea1927fa51866c4 +"babel-preset-jest@npm:30.5.0": + version: 30.5.0 + resolution: "babel-preset-jest@npm:30.5.0" + dependencies: + babel-plugin-jest-hoist: 30.5.0 + babel-preset-current-node-syntax: ^1.2.0 + peerDependencies: + "@babel/core": ^7.11.0 || ^8.0.0-beta.1 || ^8.0.0 + checksum: 3bbac1f6adf0e56338c8897b17a15846cea81436335aa39de3e2bc3e39cc5483dcc755bdcdd0a6f980bda91bee3e9cce5c0f5e52c2f7084f0d3d3189a60c9834 languageName: node linkType: hard -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: fb07bb66a0959c2843fc055838047e2a95ccebb837c519614afb067ebfdf2fa967ca8d712c35ced07f2cd26fc6f07964230b094891315ad74f11eba3d53178a0 languageName: node linkType: hard -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" +"baseline-browser-mapping@npm:^2.11.23": + version: 2.11.25 + resolution: "baseline-browser-mapping@npm:2.11.25" bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"axe-core@npm:^4.0.2": - version: 4.2.0 - resolution: "axe-core@npm:4.2.0" - checksum: 6ec6f3c2f8d613687e783a59758dbf75bf509cb133c4599ac99c6cbffb0e6a6d1e65dbd6db0b9790921443c9cd031fbd33508515438f6695339912482a27be93 - languageName: node - linkType: hard - -"axios@npm:^0.21.1": - version: 0.21.1 - resolution: "axios@npm:0.21.1" - dependencies: - follow-redirects: ^1.10.0 - checksum: c87915fa0b18c15c63350112b6b3563a3e2ae524d7707de0a73d2e065e0d30c5d3da8563037bc29d4cc1b7424b5a350cb7274fa52525c6c04a615fe561c6ab11 - languageName: node - linkType: hard - -"axobject-query@npm:^2.2.0": - version: 2.2.0 - resolution: "axobject-query@npm:2.2.0" - checksum: 96b8c7d807ca525f41ad9b286186e2089b561ba63a6d36c3e7d73dc08150714660995c7ad19cda05784458446a0793b45246db45894631e13853f48c1aa3117f - languageName: node - linkType: hard - -"babel-jest@npm:^26.6.3": - version: 26.6.3 - resolution: "babel-jest@npm:26.6.3" - dependencies: - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/babel__core": ^7.1.7 - babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^26.6.2 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - slash: ^3.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5917233f0d381e719e195b69b81e46da90293432d10288d79f8f59b8f3f9ac030e14701f3d9f90893fb739481df1d132446f1b983d841e65e2623775db100897 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.0.0": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@istanbuljs/load-nyc-config": ^1.0.0 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-instrument: ^5.0.4 - test-exclude: ^6.0.0 - checksum: cb4fd95738219f232f0aece1116628cccff16db891713c4ccb501cddbbf9272951a5df81f2f2658dfdf4b3e7b236a9d5cbcf04d5d8c07dd5077297339598061a - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-plugin-jest-hoist@npm:26.6.2" - dependencies: - "@babel/template": ^7.3.3 - "@babel/types": ^7.3.3 - "@types/babel__core": ^7.0.0 - "@types/babel__traverse": ^7.0.6 - checksum: abe3732fdf20f96e91cbf788a54d776b30bd7a6054cb002a744d7071c656813e26e77a780dc2a6f6b197472897e220836cd907bda3fadb9d0481126bfd6c3783 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-bigint": ^7.8.3 - "@babel/plugin-syntax-class-properties": ^7.8.3 - "@babel/plugin-syntax-import-meta": ^7.8.3 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.8.3 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-top-level-await": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: d118c2742498c5492c095bc8541f4076b253e705b5f1ad9a2e7d302d81a84866f0070346662355c8e25fc02caa28dc2da8d69bcd67794a0d60c4d6fab6913cc8 - languageName: node - linkType: hard - -"babel-preset-jest@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-preset-jest@npm:26.6.2" - dependencies: - babel-plugin-jest-hoist: ^26.6.2 - babel-preset-current-node-syntax: ^1.0.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 1d9bef3a7ac6751a09d29ceb84be8b1998abd210fafa12223689c744db4f2a63ab90cba7986a71f3154d9aceda9dbeca563178731d21cbaf793b4096ed3a4d01 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + baseline-browser-mapping: dist/cli.cjs + checksum: 003b592a1cbfb98b87844e78962426e6eb2aa3b7a90bc20c8bc92ea3473e4fe49c1d035e7ce5f19567b98be8593c6c19dc84cfdde37fb922dab5e8604c97c8c0 languageName: node linkType: hard @@ -1745,58 +2059,36 @@ __metadata: languageName: node linkType: hard -"braces@npm:^2.3.1": - version: 2.3.2 - resolution: "braces@npm:2.3.2" +"brace-expansion@npm:^2.0.2": + version: 2.1.7 + resolution: "brace-expansion@npm:2.1.7" dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 + balanced-match: ^1.0.0 + checksum: bc9b64f6b9726b102ade72e0efa77d2ee456fcde51400f8ad7295a18d686a6df0f6a34e3e742c336ab3a46b21b5154d69d81fc00ab25821b1193376549f71fef languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" +"brace-expansion@npm:^5.0.8": + version: 5.0.12 + resolution: "brace-expansion@npm:5.0.12" dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + balanced-match: ^4.0.2 + checksum: eed95008709cb43e41945d4a4c0427a859ddaa798880bdd36497a719b1487fd9481afaa14f202c232a594a27c21f5c0de196a37994a6e6eed4f680913d5363d3 languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - -"browser-stdout@npm:1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.3": - version: 4.21.4 - resolution: "browserslist@npm:4.21.4" +"browserslist@npm:^4.24.0": + version: 4.29.0 + resolution: "browserslist@npm:4.29.0" dependencies: - caniuse-lite: ^1.0.30001400 - electron-to-chromium: ^1.4.251 - node-releases: ^2.0.6 - update-browserslist-db: ^1.0.9 + baseline-browser-mapping: ^2.11.23 + caniuse-lite: ^1.0.30001810 + electron-to-chromium: ^1.5.427 + node-releases: ^2.0.55 + update-browserslist-db: ^1.3.3 bin: browserslist: cli.js - checksum: 4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + checksum: 156a4567a8f69c5c8120dc5f978730dda531bb4dfe359ab405c646dbebc06e1563e198a8a6622a25cdc79ca1565e23514d3241c4d53e5d27d19216ab340e2618 languageName: node linkType: hard @@ -1809,13 +2101,6 @@ __metadata: languageName: node linkType: hard -"buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 - languageName: node - linkType: hard - "builtins@npm:^5.0.0": version: 5.0.1 resolution: "builtins@npm:5.0.1" @@ -1860,67 +2145,54 @@ __metadata: languageName: node linkType: hard -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" +"cacheable@npm:^2.5.0": + version: 2.5.0 + resolution: "cacheable@npm:2.5.0" dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 + "@cacheable/memory": ^2.2.0 + "@cacheable/utils": ^2.5.0 + hookified: ^1.15.0 + keyv: ^5.6.0 + qified: ^0.10.1 + checksum: 3f82208f0149d920ffdc709ec5b64464928ae5f34c65f235f99d674e37cbbb4bea2cad7ea71448b2d5c6a149f574f482e68430e487b1c0ffd1c415c7bdb16b4b languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": version: 1.0.2 - resolution: "call-bind@npm:1.0.2" + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b languageName: node linkType: hard -"callsites@npm:^3.0.0": +"callsites@npm:^3.1.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard -"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": +"camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b languageName: node linkType: hard -"camelcase@npm:^6.0.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001400": - version: 1.0.30001419 - resolution: "caniuse-lite@npm:1.0.30001419" - checksum: 7a4dc2794a6773574b5aebcd1c9c0d56159654821714152d8a0b04e261e1522bfd3d86589b8406ce81c7bf5b706118b73b2cb85d577ae433e303dd48ac9ff65f +"camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard -"capture-exit@npm:^2.0.0": - version: 2.0.0 - resolution: "capture-exit@npm:2.0.0" - dependencies: - rsvp: ^4.8.4 - checksum: 0b9f10daca09e521da9599f34c8e7af14ad879c336e2bdeb19955b375398ae1c5bcc91ac9f2429944343057ee9ed028b1b2fb28816c384e0e55d70c439b226f4 +"caniuse-lite@npm:^1.0.30001810": + version: 1.0.30001810 + resolution: "caniuse-lite@npm:1.0.30001810" + checksum: 4ff2dae8df59eb5f5ae71c4803666cf581459a9432c7cf016afd85f4f110774fb9c6469a62ff69a73ed7be5a7eae27988656c3acf56bceed7b0f24358426a5a8 languageName: node linkType: hard @@ -1935,13 +2207,13 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0": - version: 4.1.1 - resolution: "chalk@npm:4.1.1" +"chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" dependencies: ansi-styles: ^4.1.0 supports-color: ^7.1.0 - checksum: 036e973e665ba1a32c975e291d5f3d549bceeb7b1b983320d4598fb75d70fe20c5db5d62971ec0fe76cdbce83985a00ee42372416abfc3a5584465005a7855ed + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc languageName: node linkType: hard @@ -1952,25 +2224,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:3.5.1": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" - dependencies: - anymatch: ~3.1.1 - braces: ~3.0.2 - fsevents: ~2.3.1 - glob-parent: ~5.1.0 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.5.0 - dependenciesMeta: - fsevents: - optional: true - checksum: b7774e6e3aeca084d39e8542041555a11452414c744122436101243f89580fad97154ae11525e46bfa816313ae32533e2a88e8587e4d50b14ea716a9e6538978 - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -1978,36 +2231,17 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 3b374666a85ea3ca43fa49aa3a048d21c9b475c96eb13c133505d2324e7ae5efd6a454f41efe46a152269e9b6a00c9edbe63ec7fa1921957165aae16625acd67 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.5.0 - resolution: "ci-info@npm:3.5.0" - checksum: 7def3789706ec18db3dc371dc699bd0df12057d54b796201f50ba87200e0849d3d83c68da00ab2ab8cdd738d91b25ab9e31620588f8d7e64ffaa1f760fd121cf - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^0.6.0": - version: 0.6.0 - resolution: "cjs-module-lexer@npm:0.6.0" - checksum: 445b039607efd74561d7db8d0867031c8b6a69f25e83fdd861b0fa1fbc11f12de057ba1db80637f3c9016774354092af5325eebb90505d65ccc5389cae09d1fd +"ci-info@npm:^4.2.0": + version: 4.4.0 + resolution: "ci-info@npm:4.4.0" + checksum: 3418954c9ca192d4ab7f88637835f8463a327dfcb1d9fdd2434f0aba2715d8b2b0e79fd1a4297cc4a35efc5728f8fd74f3b31cb741c948469a4c07dfe8df3675 languageName: node linkType: hard -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 +"cjs-module-lexer@npm:^2.2.0": + version: 2.2.1 + resolution: "cjs-module-lexer@npm:2.2.1" + checksum: a41a156e20350b0723c810ea47d76889ffb0c782135b7e77c30517180ab7fc0997f45e23a2f51ad427190ba038cefd50f44e3cf052f5f19286ae2571ea98d37e languageName: node linkType: hard @@ -2018,25 +2252,14 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^6.0.0": - version: 6.0.0 - resolution: "cliui@npm:6.0.0" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^6.2.0 - checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" dependencies: string-width: ^4.2.0 - strip-ansi: ^6.0.0 + strip-ansi: ^6.0.1 wrap-ansi: ^7.0.0 - checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 languageName: node linkType: hard @@ -2047,20 +2270,10 @@ __metadata: languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 4efe0a1fccd517b65478a2364b33dadd0a43fc92a56f59aaece9b6186fe5177b2de471253587de7c91516f07c7268c2f6770b6cbcffc0e0ece353b766ec87e55 - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 +"collect-v8-coverage@npm:^1.0.2": + version: 1.0.3 + resolution: "collect-v8-coverage@npm:1.0.3" + checksum: ed1d1ebc9c05e7263fffa3ad6440031db6a1fdd9f574435aa689effcdfe9f2b93aba8ec600f9c7b99124cd6ff5d9415c17961d84ae829a72251a4fe668a49b63 languageName: node linkType: hard @@ -2114,13 +2327,6 @@ __metadata: languageName: node linkType: hard -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -2135,50 +2341,14 @@ __metadata: languageName: node linkType: hard -"contains-path@npm:^0.1.0": - version: 0.1.0 - resolution: "contains-path@npm:0.1.0" - checksum: 94ecfd944e0bc51be8d3fc596dcd17d705bd4c8a1a627952a3a8c5924bac01c7ea19034cf40b4b4f89e576cdead130a7e5fd38f5f7f07ef67b4b261d875871e3 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: ~5.1.1 - checksum: bcd2e3ea7d37f96b85a6e362c8a89402ccc73757256e3ee53aa2c22fe915adb854c66b1f81111be815a3a6a6ce3c58e8001858e883c9d5b4fe08a853fa865967 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - -"core-js-pure@npm:^3.0.0": - version: 3.11.0 - resolution: "core-js-pure@npm:3.11.0" - checksum: 8f55c393197bbb3fd8a125b0cc9f4949df1864d2d6b27ff17e03c1f4f8a047f422c0dd39bf1ade613004cc6a1ee8cc95290360b6247e245e133fe3d92d52d45a - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.0": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: ^1.0.4 - path-key: ^2.0.1 - semver: ^5.5.0 - shebang-command: ^1.2.0 - which: ^1.2.9 - checksum: f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -2189,44 +2359,14 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 - languageName: node - linkType: hard - -"damerau-levenshtein@npm:^1.0.6": - version: 1.0.6 - resolution: "damerau-levenshtein@npm:1.0.6" - checksum: 4746e69c33e83038cac1f26100be6eb6a1cc1e52bdbf6d1c14a91aa0323cac35aea7e4f2bedf53e39db80c08853c88ec64b0e8b1622f05c80281636d4da7d139 - languageName: node - linkType: hard - -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" +"cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: - abab: ^2.0.3 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.0.0 - checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b languageName: node linkType: hard @@ -2242,7 +2382,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4.3.1, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1": +"debug@npm:^4.1.0, debug@npm:^4.1.1": version: 4.3.1 resolution: "debug@npm:4.3.1" dependencies: @@ -2254,40 +2394,27 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" +"debug@npm:^4.3.1, debug@npm:^4.3.2": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"decamelize@npm:^1.2.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 - languageName: node - linkType: hard - -"decimal.js@npm:^10.2.1": - version: 10.4.2 - resolution: "decimal.js@npm:10.4.2" - checksum: 536cd6816a3197f2e1aa3da4860856cb5a2db73f6fafe8cb3b924ccc63f9b7d78296acc13dccbd419bd958ccc6357921fb15467f883b37cab04bfba7044cada2 + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 4805abd570e601acdca85b6aa3757186084a45cff9b2fa6eee1f3b173caa776b45f478b2a71a572d616d2010cea9211d0ac4a02a610e4c18ac4324bde3760834 languageName: node linkType: hard -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: f3749344ab9305ffcfe4bfe300e2dbb61fc6359e2b736812100a3b1b6db0a5668cba31a05e4b45d4d63dbf1a18dfa354cd3ca5bb3ededddabb8cd293f4404f94 +"dedent@npm:^1.6.0": + version: 1.7.2 + resolution: "dedent@npm:1.7.2" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 58f46def0e0310f4c6298f648fa1b1f2de074879f9035ff08285279f91060bb9b3c83d9c918b3ef2be3e08705f8858dc9139d9931832d89788d6efd3021c535d languageName: node linkType: hard @@ -2298,54 +2425,10 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 +"deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 2024c6a980a1b7128084170c4cf56b0fd58a63f2da1660dcfe977415f27b17dbe5888668b59d0b063753f3220719d5e400b7f113609489c90160bb9a5518d052 languageName: node linkType: hard @@ -2370,73 +2453,56 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - -"diff-sequences@npm:^26.6.2": - version: 26.6.2 - resolution: "diff-sequences@npm:26.6.2" - checksum: 79af871776ef149a7ff3345d6b1bf37fe6e81f68632aa5542787851f6f60fba19b0be22fdd1e06046f56ae7382763ccfe94a982c39ee72bd107aef435ecbc0cf - languageName: node - linkType: hard - -"diff@npm:5.0.0": - version: 5.0.0 - resolution: "diff@npm:5.0.0" - checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 +"detect-libc@npm:^2.0.3": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 471740d52365084c4b2ae359e507b863f2b1d79b08a92835ebdf701918e08fc9cfba175b3db28483ca33b155e1311a91d69dc42c6d192b476f41a9e1f094ce6a languageName: node linkType: hard -"doctrine@npm:1.5.0": - version: 1.5.0 - resolution: "doctrine@npm:1.5.0" - dependencies: - esutils: ^2.0.2 - isarray: ^1.0.0 - checksum: 7ce8102a05cbb9d942d49db5461d2f3dd1208ebfed929bf1c04770a1ef6ef540b792e63c45eae4c51f8b16075e0af4a73581a06bad31c37ceb0988f2e398509b +"detect-newline@npm:^3.1.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce +"dotenv@npm:^10.0.0": + version: 10.0.0 + resolution: "dotenv@npm:10.0.0" + checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 languageName: node linkType: hard -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" dependencies: - webidl-conversions: ^5.0.0 - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 languageName: node linkType: hard -"dotenv@npm:^10.0.0": - version: 10.0.0 - resolution: "dotenv@npm:10.0.0" - checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.251": - version: 1.4.283 - resolution: "electron-to-chromium@npm:1.4.283" - checksum: b005cdac737cecd0e7f875263b97da13ad914526f4e31b4051dd0179b82ccd4aff27b4a3e3a7814cbc1774efd73956f830ae7f6ef28b313175857c26928d80b5 +"electron-to-chromium@npm:^1.5.427": + version: 1.5.438 + resolution: "electron-to-chromium@npm:1.5.438" + checksum: c84e7a4deb418c4d498aa0d8de75f72a8e9c9811148bba5abb0b69079edee23d26742f813629414b8277d1a598adaf9e1c96c8e6e18c06447ddcf7afc65ea460 languageName: node linkType: hard -"emittery@npm:^0.7.1": - version: 0.7.2 - resolution: "emittery@npm:0.7.2" - checksum: 908cd933d48a9bcb58ddf39e9a7d4ba1e049de392ccbef010102539a636e03cea2b28218331b7ede41de8165d9ed7f148851c5112ebd2e943117c0f61eff5f10 +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 languageName: node linkType: hard @@ -2447,7 +2513,7 @@ __metadata: languageName: node linkType: hard -"emoji-regex@npm:^9.0.0": +"emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 @@ -2463,24 +2529,6 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"enquirer@npm:^2.3.5": - version: 2.3.6 - resolution: "enquirer@npm:2.3.6" - dependencies: - ansi-colors: ^4.1.1 - checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 - languageName: node - linkType: hard - "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -2495,7 +2543,7 @@ __metadata: languageName: node linkType: hard -"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1": +"error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" dependencies: @@ -2504,38 +2552,45 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.18.0-next.2": - version: 1.18.0 - resolution: "es-abstract@npm:1.18.0" +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + +"es-module-lexer@npm:^2.1.0": + version: 2.3.2 + resolution: "es-module-lexer@npm:2.3.2" + checksum: 4f8c2b36c185afab4eab102d3e75284521688388e42a6dac830e62e5d7b53b8a33880e36e8e86b4ca880e5f5eed7e69d038f8ae2550f4ce9af28e4e156040814 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.2 + resolution: "es-object-atoms@npm:1.1.2" dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.2 - is-callable: ^1.2.3 - is-negative-zero: ^2.0.1 - is-regex: ^1.1.2 - is-string: ^1.0.5 - object-inspect: ^1.9.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - string.prototype.trimend: ^1.0.4 - string.prototype.trimstart: ^1.0.4 - unbox-primitive: ^1.0.0 - checksum: 6783bea97f372fd4f1fc77e4e294d024b9f40559a83b40c46b69565511cf13d462a6189b822228c6bb818bd09d2f23b33500206d39bbdc69f7cc7ffebf6640a1 + es-errors: ^1.3.0 + checksum: b821f39e4f48bd85b13fee80aea9068a674bcb78b95ff01267aa4da1111f83e6944049b3329b2ffdb3acaa266fb5b8b885476fe8cada05034dc7c87c8016c86d languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 languageName: node linkType: hard @@ -2546,10 +2601,10 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e languageName: node linkType: hard @@ -2567,181 +2622,96 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.4": - version: 0.3.4 - resolution: "eslint-import-resolver-node@npm:0.3.4" - dependencies: - debug: ^2.6.9 - resolve: ^1.13.1 - checksum: a0db55ec26c5bb385c8681af6b8d6dee16768d5f27dff72c3113407d0f028f28e56dcb1cc3a4689c79396a5f6a9c24bd0cac9a2c9c588c7d7357d24a42bec876 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.6.0": - version: 2.6.0 - resolution: "eslint-module-utils@npm:2.6.0" - dependencies: - debug: ^2.6.9 - pkg-dir: ^2.0.0 - checksum: 489bb82248e1090515701cc9614a6e183dac34805bc1cb205cf411a875b8db756b0c05141f9ddb64395ec1d518a99c7f113ac181929a0e995968b8584d7f5a63 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.22.1": - version: 2.22.1 - resolution: "eslint-plugin-import@npm:2.22.1" - dependencies: - array-includes: ^3.1.1 - array.prototype.flat: ^1.2.3 - contains-path: ^0.1.0 - debug: ^2.6.9 - doctrine: 1.5.0 - eslint-import-resolver-node: ^0.3.4 - eslint-module-utils: ^2.6.0 - has: ^1.0.3 - minimatch: ^3.0.4 - object.values: ^1.1.1 - read-pkg-up: ^2.0.0 - resolve: ^1.17.0 - tsconfig-paths: ^3.9.0 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 - checksum: b043d5b67c0130545bfb7695abcd28fd605e4ccac580ec937217d078c5361800d3626a45dec43c2c697431c4c657b83be504e07605da1afb4a2ebc894a661f19 - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:^6.4.1": - version: 6.4.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.4.1" - dependencies: - "@babel/runtime": ^7.11.2 - aria-query: ^4.2.2 - array-includes: ^3.1.1 - ast-types-flow: ^0.0.7 - axe-core: ^4.0.2 - axobject-query: ^2.2.0 - damerau-levenshtein: ^1.0.6 - emoji-regex: ^9.0.0 - has: ^1.0.3 - jsx-ast-utils: ^3.1.0 - language-tags: ^1.0.5 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 - checksum: 30326276385b6029754fbca0a25140be0f2f84d263b38f794651acf973399ea316ab1b9d69dffb9b9807d2b47592ba4bc271a242edbb15abfc05d07b08060a7e +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard -"eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" +"eslint-scope@npm:^9.1.2": + version: 9.1.2 + resolution: "eslint-scope@npm:9.1.2" dependencies: + "@types/esrecurse": ^4.3.1 + "@types/estree": ^1.0.8 esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"eslint-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" - dependencies: - eslint-visitor-keys: ^1.1.0 - checksum: 27500938f348da42100d9e6ad03ae29b3de19ba757ae1a7f4a087bdcf83ac60949bbb54286492ca61fac1f5f3ac8692dd21537ce6214240bf95ad0122f24d71d + estraverse: ^5.2.0 + checksum: ea1a4333f5912e1ec83328ecf8103b0bb9628beca10d5efc17ce63a825ed3ab0b68c036c2dbd3127cf71f51cc04fb4685a27aac082d55c2faf134391d06443af languageName: node linkType: hard -"eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 37a19b712f42f4c9027e8ba98c2b06031c17e0c0a4c696cd429bd9ee04eb43889c446f2cd545e1ff51bef9593fcec94ecd2c2ef89129fcbbf3adadbef520376a +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 languageName: node linkType: hard -"eslint-visitor-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-visitor-keys@npm:2.0.0" - checksum: e07e9863fb8c9b1453f5ad1a26f3cc8dd6b349b26605cc06bc0c61215ac5b6f13a4d08c875218e6c0f8ac8fc06ca6e090df769e32c569f0fd2e6a848b8a76c75 - languageName: node - linkType: hard - -"eslint@npm:^7.25.0": - version: 7.25.0 - resolution: "eslint@npm:7.25.0" - dependencies: - "@babel/code-frame": 7.12.11 - "@eslint/eslintrc": ^0.4.0 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.0.1 - doctrine: ^3.0.0 - enquirer: ^2.3.5 - eslint-scope: ^5.1.1 - eslint-utils: ^2.1.0 - eslint-visitor-keys: ^2.0.0 - espree: ^7.3.1 - esquery: ^1.4.0 +"eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: d6cc6830536ab4a808f25325686c2c27862f27aab0c1ffed39627293b06cee05d95187da113cafd366314ea5be803b456115de71ad625e365020f20e2a6af89b + languageName: node + linkType: hard + +"eslint@npm:10.10.0": + version: 10.10.0 + resolution: "eslint@npm:10.10.0" + dependencies: + "@eslint-community/eslint-utils": ^4.8.0 + "@eslint-community/regexpp": ^4.12.2 + "@eslint/config-array": ^0.23.5 + "@eslint/config-helpers": ^0.7.0 + "@eslint/core": ^1.2.1 + "@eslint/plugin-kit": ^0.7.3 + "@humanfs/node": ^0.16.6 + "@humanwhocodes/module-importer": ^1.0.1 + "@humanwhocodes/retry": ^0.4.2 + "@types/estree": ^1.0.6 + ajv: ^6.14.0 + cross-spawn: ^7.0.6 + debug: ^4.3.2 + escape-string-regexp: ^4.0.0 + eslint-scope: ^9.1.2 + eslint-visitor-keys: ^5.0.1 + espree: ^11.2.0 + esquery: ^1.7.0 esutils: ^2.0.2 - file-entry-cache: ^6.0.1 - functional-red-black-tree: ^1.0.1 - glob-parent: ^5.0.0 - globals: ^13.6.0 - ignore: ^4.0.6 - import-fresh: ^3.0.0 + fast-deep-equal: ^3.1.3 + file-entry-cache: 11.1.5 || >11.1.6 <12 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + ignore: ^5.2.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 - js-yaml: ^3.13.1 json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash: ^4.17.21 - minimatch: ^3.0.4 + minimatch: ^10.2.5 natural-compare: ^1.4.0 - optionator: ^0.9.1 - progress: ^2.0.0 - regexpp: ^3.1.0 - semver: ^7.2.1 - strip-ansi: ^6.0.0 - strip-json-comments: ^3.1.0 - table: ^6.0.4 - text-table: ^0.2.0 - v8-compile-cache: ^2.0.3 + optionator: ^0.9.3 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 8d418fccd017608f6d04551c85fb2b3f12f722933f79e5c71a6c9f27ec989c4cf24727f5b05344d5851c91cd676e6776607f3d1a4e337353ade5e7f62602fb91 + checksum: 37b2faadefc36876599d1b5c4f817513eb458079ba8bf56ba6a4b7847a7138ca23613997ccf94398d8fa3f53e38f3cac6a9f9f8a032f1070a66b1a51952bddda languageName: node linkType: hard -"espree@npm:^7.3.0, espree@npm:^7.3.1": - version: 7.3.1 - resolution: "espree@npm:7.3.1" +"espree@npm:^11.2.0": + version: 11.2.0 + resolution: "espree@npm:11.2.0" dependencies: - acorn: ^7.4.0 - acorn-jsx: ^5.3.1 - eslint-visitor-keys: ^1.3.0 - checksum: aa9b50dcce883449af2e23bc2b8d9abb77118f96f4cb313935d6b220f77137eaef7724a83c3f6243b96bc0e4ab14766198e60818caad99f9519ae5a336a39b45 + acorn: ^8.16.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^5.0.1 + checksum: 7545dc501ab5cff558af1aa290c7e586d7d2a83c9ecdcb5f2c8ba7ee6634b70f4083d1bed198ec17ddf11d3265751aa78e315b4d4c7506711066a4ef38c1084a languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": +"esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -2751,12 +2721,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" +"esquery@npm:^1.7.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: ^5.1.0 - checksum: a0807e17abd7fbe5fbd4fab673038d6d8a50675cdae6b04fbaa520c34581be0c5fa24582990e8acd8854f671dd291c78bb2efb9e0ed5b62f33bac4f9cf820210 + checksum: 3239792b68cf39fe18966d0ca01549bb15556734f0144308fd213739b0f153671ae916013fce0bca032044a4dbcda98b43c1c667f20c20a54dec3597ac0d7c27 languageName: node linkType: hard @@ -2769,13 +2739,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.2.0 resolution: "estraverse@npm:5.2.0" @@ -2790,42 +2753,20 @@ __metadata: languageName: node linkType: hard -"exec-sh@npm:^0.3.2": - version: 0.3.6 - resolution: "exec-sh@npm:0.3.6" - checksum: 0be4f06929c8e4834ea4812f29fe59e2dfcc1bc3fc4b4bb71acb38a500c3b394628a05ef7ba432520bc6c5ec4fadab00cc9c513c4ff6a32104965af302e998e0 - languageName: node - linkType: hard - -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: ^6.0.0 - get-stream: ^4.0.0 - is-stream: ^1.1.0 - npm-run-path: ^2.0.0 - p-finally: ^1.0.0 - signal-exit: ^3.0.0 - strip-eof: ^1.0.0 - checksum: ddf1342c1c7d02dd93b41364cd847640f6163350d9439071abf70bf4ceb1b9b2b2e37f54babb1d8dc1df8e0d8def32d0e81e74a2e62c3e1d70c303eb4c306bc4 - languageName: node - linkType: hard - -"execa@npm:^4.0.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" +"execa@npm:^5.1.1": + version: 5.1.1 + resolution: "execa@npm:5.1.1" dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 + cross-spawn: ^7.0.3 + get-stream: ^6.0.0 + human-signals: ^2.1.0 is-stream: ^2.0.0 merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 + npm-run-path: ^4.0.1 + onetime: ^5.1.2 + signal-exit: ^3.0.3 strip-final-newline: ^2.0.0 - checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 + checksum: fba9022c8c8c15ed862847e94c252b3d946036d7547af310e344a527e59021fd8b6bb0723883ea87044dc4f0201f949046993124a42ccb0855cae5bf8c786343 languageName: node linkType: hard @@ -2846,153 +2787,75 @@ __metadata: languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: abc407f07a875c3961e4781dfcb743b58d6c93de9ab263f4f8c9d23bb6da5f9b7764fc773f86b43dd88030444d5ab8abcb611cb680fba8ca075362b77114bba3 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - -"expect@npm:^26.6.2": - version: 26.6.2 - resolution: "expect@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-styles: ^4.0.0 - jest-get-type: ^26.3.0 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-regex-util: ^26.0.0 - checksum: 79a9b888c5c6d37d11f2cb76def6cf1dc8ff098d38662ee20c9f2ee0da67e9a93435f2327854b2e7554732153870621843e7f83e8cefb1250447ee2bc39883a4 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: c62a8e0f77b1de00059c2976ddb774c41d06969a4262d984a58cd51995be1fc0ce962329ea68722bba0c254adb3930cc3625dabaf079fe8031cd03e91db1ba51 languageName: node linkType: hard -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" +"expect@npm:30.5.1": + version: 30.5.1 + resolution: "expect@npm:30.5.1" dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 + "@jest/expect-utils": 30.5.1 + "@jest/get-type": 30.5.0 + jest-matcher-utils: 30.5.1 + jest-message-util: 30.5.1 + jest-mock: 30.5.1 + jest-util: 30.5.1 + checksum: 2d940cde8b7c154536c7423f5d585da1a5c0d19e1f5a34aed612705d94c51813c80d46557dfd74de6b73ada0f86a06eb8617d9b901b6504e77f872d523421768 languageName: node linkType: hard -"fast-deep-equal@npm:^3.1.1": +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" +"fb-watchman@npm:^2.0.2": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" dependencies: bser: 2.1.1 - checksum: 8510230778ab3a51c27dffb1b76ef2c24fab672a42742d3c0a45c2e9d1e5f20210b1fbca33486088da4a9a3958bde96b5aec0a63aac9894b4e9df65c88b2cbd6 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 languageName: node linkType: hard -"find-up@npm:5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 languageName: node linkType: hard -"find-up@npm:^2.0.0, find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" +"file-entry-cache@npm:11.1.5 || >11.1.6 <12": + version: 11.1.5 + resolution: "file-entry-cache@npm:11.1.5" dependencies: - locate-path: ^2.0.0 - checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + flat-cache: ^6.1.23 + checksum: 2bd0c1e63ccacbe8a8daba17cba0fdf65bc26e28846666a6e0711895428f42aa3984d07dfe7fe843a05e7107704391aa5efcad8cbfe46f672b7a2ab9344e5751 languageName: node linkType: hard @@ -3006,66 +2869,64 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 languageName: node linkType: hard -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d +"flat-cache@npm:^6.1.23": + version: 6.1.23 + resolution: "flat-cache@npm:6.1.23" + dependencies: + cacheable: ^2.5.0 + flatted: ^3.4.2 + hookified: ^1.15.0 + checksum: ddce5003f38cc406100c40e0a73aea8cbdeda404bfce4526951b4faa532211eccb17eea9b15316135777d9527dcfbe5640083136ddfcb32332d86725ae389c0c languageName: node linkType: hard -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 508935e3366d95444131f0aaa801a4301f24ea5bcb900d12764e7335b46b910730cc1b5bcfcfb8eccb7c8db261ba0671c6a7ca30d10870ff7a7756dc7e731a7a +"flatted@npm:^3.4.2": + version: 3.4.4 + resolution: "flatted@npm:3.4.4" + checksum: f13e7db38118fdc8deb497b27c8ce6877ea97f8afc96af2d633817d46d368a2fac9ed16c0df422722f876e9252b6fce92a628943b5bf1ce0681d07b949939fcc languageName: node linkType: hard -"follow-redirects@npm:^1.10.0": - version: 1.14.0 - resolution: "follow-redirects@npm:1.14.0" +"follow-redirects@npm:^1.16.0": + version: 1.16.0 + resolution: "follow-redirects@npm:1.16.0" peerDependenciesMeta: debug: optional: true - checksum: a6568930fb97f6f4c12eac52acc109e8677d4b26fcae463bab7de50c43e44886b94784be6608dd8f2ab4b015328377fb4be2e83abd2c8d6bc39ffe1cf11f7b5a + checksum: e90dce4607b1f6b8b9883287f912585573c19088209ad82341d550a795b4ba514522b73b1b340cf618279df27975cd46504d09149be60291ba6767384c1fd8f8 languageName: node linkType: hard -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d +"foreground-child@npm:^3.1.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: ^7.0.6 + signal-exit: ^4.0.1 + checksum: b2c1a6fc0bf0233d645d9fefdfa999abf37db1b33e5dab172b3cbfb0662b88bfbd2c9e7ab853533d199050ec6b65c03fcf078fc212d26e4990220e98c6930eef languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" +"form-data@npm:^4.0.6": + version: 4.0.6 + resolution: "form-data@npm:4.0.6" dependencies: asynckit: ^0.4.0 combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc + es-set-tostringtag: ^2.1.0 + hasown: ^2.0.4 + mime-types: ^2.1.35 + checksum: e51b9e97678c250c872cd4ec3e5eaa8fa43bee4b1acf8274c337308aebc6aebb0553091ce0810612826601ffafed9dace12504a63c6ef16c57fffcd7dcfec457 languageName: node linkType: hard @@ -3085,36 +2946,10 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.1.2, fsevents@npm:~2.3.1": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@^2.1.2#~builtin, fsevents@patch:fsevents@~2.3.1#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: ca6c170f37640e2d94297da8bb4bf27a1d12bea3e00e6a3e007fd7aa32e37e000f5772acf941b4e4f3cf1c95c3752033d0c509af157ad8f526e7f00723b9eb9f +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 languageName: node linkType: hard @@ -3134,6 +2969,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 3bf87f7b0230de5d74529677e6c3ceb3b7b5d9618b5a22d92b45ce3876defbaf5a77791b25a61b0fa7d13f95675b5ff67a7769f3b9af33f096e34653519e873d + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -3141,21 +2983,31 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": +"get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" +"get-intrinsic@npm:^1.2.6": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 + async-function: ^1.0.0 + async-generator-function: ^1.0.0 + call-bind-apply-helpers: ^1.0.2 + es-define-property: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.1.1 + function-bind: ^1.1.2 + generator-function: ^2.0.0 + get-proto: ^1.0.1 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.1.0 + checksum: c02b3b6a445f9cd53e14896303794ac60f9751f58a69099127248abdb0251957174c6524245fc68579dc8e6a35161d3d94c93e665f808274716f4248b269436a languageName: node linkType: hard @@ -3166,72 +3018,70 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^4.0.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: ^3.0.0 - checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 - languageName: node - linkType: hard - -"get-stream@npm:^5.0.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + dunder-proto: ^1.0.1 + es-object-atoms: ^1.0.0 + checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b languageName: node linkType: hard -"get-stream@npm:^6.0.1": +"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad languageName: node linkType: hard -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 languageName: node linkType: hard -"glob-parent@npm:^5.0.0, glob-parent@npm:~5.1.0": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" +"glob@npm:^10.4.1": + version: 10.5.0 + resolution: "glob@npm:10.5.0" dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: cda96c074878abca9657bd984d2396945cf0d64283f6feeb40d738fe2da642be0010ad5210a1646244a5fc3511b0cab5a374569b3de5a12b8a63d392f18c6043 languageName: node linkType: hard -"glob@npm:7.1.6, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.1.6 - resolution: "glob@npm:7.1.6" +"glob@npm:^13.0.6": + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6 + minimatch: ^10.2.2 + minipass: ^7.1.3 + path-scurry: ^2.0.2 + checksum: 1eb421c696c66af3c26e4845dbdd222d3b982ede17448456b49272722d872e9a91741b50e4e827370c57d17a39a69790061f45033523f085c076d8fcc0f69d2b languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2": - version: 7.2.3 - resolution: "glob@npm:7.2.3" +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.1.6 + resolution: "glob@npm:7.1.6" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 - minimatch: ^3.1.1 + minimatch: ^3.0.4 once: ^1.3.0 path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6 languageName: node linkType: hard @@ -3248,73 +3098,20 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globals@npm:^12.1.0": - version: 12.4.0 - resolution: "globals@npm:12.4.0" - dependencies: - type-fest: ^0.8.1 - checksum: 7ae5ee16a96f1e8d71065405f57da0e33267f6b070cd36a5444c7780dd28639b48b92413698ac64f04bf31594f9108878bd8cb158ecdf759c39e05634fefcca6 - languageName: node - linkType: hard - -"globals@npm:^13.6.0": - version: 13.8.0 - resolution: "globals@npm:13.8.0" - dependencies: - type-fest: ^0.20.2 - checksum: acbfcad2b8aeff34d977a2df62bda863d7537e19f5b30cc3452493ce636b5193be9f68da46a53f41875f49052ddd7d550cd2568ecc818ddde3603e30def1fef3 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2": - version: 4.2.6 - resolution: "graceful-fs@npm:4.2.6" - checksum: 792e64aafda05a151289f83eaa16aff34ef259658cefd65393883d959409f5a2389b0ec9ebf28f3d21f1b0ddc8f594a1162ae9b18e2b507a6799a70706ec573d - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 languageName: node linkType: hard -"graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard -"growl@npm:1.10.5": - version: 1.10.5 - resolution: "growl@npm:1.10.5" - checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a - languageName: node - linkType: hard - -"growly@npm:^1.3.0": - version: 1.3.0 - resolution: "growly@npm:1.3.0" - checksum: 53cdecd4c16d7d9154a9061a9ccb87d602e957502ca69b529d7d1b2436c2c0b700ec544fc6b3e4cd115d59b81e62e44ce86bd0521403b579d3a2a97d7ce72a44 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 - languageName: node - linkType: hard - "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -3329,10 +3126,19 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d languageName: node linkType: hard @@ -3343,76 +3149,35 @@ __metadata: languageName: node linkType: hard -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" +"hashery@npm:^1.4.0, hashery@npm:^1.5.1": + version: 1.5.1 + resolution: "hashery@npm:1.5.1" dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 + hookified: ^1.15.0 + checksum: e39302700e9c49e497a50afa5a895a563a2de2c96e2640d915a7047add98afd1f20f659597a036beaafaaacf5a1d348bce4f1e706d192607607c2bc33121e02d languageName: node linkType: hard -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" +"hasown@npm:^2.0.2, hasown@npm:^2.0.4": + version: 2.0.4 + resolution: "hasown@npm:2.0.4" dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"he@npm:1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + function-bind: ^1.1.2 + checksum: 4bd8f916b629e06324853593ffbdd45e200022952a85ad0c967f3bd4c2e4c7e1f9a9766fbe6186f60bd394e0afc73e719730caa1da15cd9bd832b7cdf53fd26c languageName: node linkType: hard -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd +"hookified@npm:^1.15.0, hookified@npm:^1.15.1": + version: 1.15.1 + resolution: "hookified@npm:1.15.1" + checksum: ab3a009002b10a9cc4268f693b7b5a81bf22d188b3c3c08a8439538de090e1237744affdb96a26b58bb2a9068b2eee52c9d7ddd33848a5eef042aa28243b3a40 languageName: node linkType: hard -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" - dependencies: - whatwg-encoding: ^1.0.5 - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba +"hookified@npm:^2.1.1": + version: 2.2.0 + resolution: "hookified@npm:2.2.0" + checksum: d7803df0ea20a2d17887b3b4b0b255f214fdabea11abcf4b3ed87823d71121ca2ca52b5643f416028d22386337a5fd09e230d6ba7fb9f0074c487f07e98cbb96 languageName: node linkType: hard @@ -3437,17 +3202,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -3459,7 +3213,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0": +"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -3469,10 +3223,10 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: b87fd89fce72391625271454e70f67fe405277415b48bcc0117ca73d31fa23a4241787afdc8d67f5a116cf37258c052f59ea82daffa72364d61351423848e3b8 languageName: node linkType: hard @@ -3492,15 +3246,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -3510,32 +3255,22 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^4.0.6": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 248f82e50a430906f9ee7f35e1158e3ec4c3971451dd9f99c9bc1548261b4db2b99709f60ac6c6cac9333494384176cc4cc9b07acbe42d52ac6a09cad734d800 - languageName: node - linkType: hard - -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.0.2 - resolution: "import-local@npm:3.0.2" +"import-local@npm:^3.2.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" dependencies: pkg-dir: ^4.2.0 resolve-cwd: ^3.0.0 bin: import-local-fixture: fixtures/cli.js - checksum: c74d9f9484c878cda1de3434613c7ff72d5dadcf20e5482542232d7c2575b713ff88701d6675fcf09a3684cb23fb407c8b333b9cbc59438712723d058d8e976c + checksum: 0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 languageName: node linkType: hard @@ -3584,24 +3319,6 @@ __metadata: languageName: node linkType: hard -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -3609,146 +3326,6 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.1 - resolution: "is-bigint@npm:1.0.1" - checksum: 04aa6fde59d2b7929df865acb89c8d7f89f919cc149b8be11e3560b1aab8667e5d939cc8954097c496f7dda80fd5bb67f829ca80ab66cc68918e41e2c1b9c5d7 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.0 - resolution: "is-boolean-object@npm:1.1.0" - dependencies: - call-bind: ^1.0.0 - checksum: 3ead0446176ee42a69f87658bf12d53c135095336d34765fa65f137f378ea125429bf777f91f6dd3407db80829d742bc4fb2fdaf8d2cf6ba82a2de2a07fbbac7 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.3": - version: 1.2.3 - resolution: "is-callable@npm:1.2.3" - checksum: 084a732afd78e14a40cd5f6f34001edd500f43bb542991c1305b88842cab5f2fb6b48f0deed4cd72270b2e71cab3c3a56c69b324e3a02d486f937824bb7de553 - languageName: node - linkType: hard - -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: ^2.0.0 - bin: - is-ci: bin.js - checksum: 77b869057510f3efa439bbb36e9be429d53b3f51abd4776eeea79ab3b221337fe1753d1e50058a9e2c650d38246108beffb15ccfd443929d77748d8c0cc90144 - languageName: node - linkType: hard - -"is-core-module@npm:^2.2.0": - version: 2.3.0 - resolution: "is-core-module@npm:2.3.0" - dependencies: - has: ^1.0.3 - checksum: 656ba21072932cce5462e4d4971187213a0f7e142e5c8eee6ecced212c114de3ed5b9f69424e3a2732816dfdb693a61a90356dda878b95f3eae1062652b84aff - languageName: node - linkType: hard - -"is-core-module@npm:^2.9.0": - version: 2.10.0 - resolution: "is-core-module@npm:2.10.0" - dependencies: - has: ^1.0.3 - checksum: 0f3f77811f430af3256fa7bbc806f9639534b140f8ee69476f632c3e1eb4e28a38be0b9d1b8ecf596179c841b53576129279df95e7051d694dac4ceb6f967593 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.2 - resolution: "is-date-object@npm:1.0.2" - checksum: ac859426e5df031abd9d1eeed32a41cc0de06e47227bd972b8bc716460a9404654b3dba78f41e8171ccf535c4bfa6d72a8d1d15a0873f9646698af415e92c2fb - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -3756,13 +3333,6 @@ __metadata: languageName: node linkType: hard -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8 - languageName: node - linkType: hard - "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -3770,14 +3340,14 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": +"is-generator-fn@npm:^2.1.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" checksum: a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.0": version: 4.0.1 resolution: "is-glob@npm:4.0.1" dependencies: @@ -3786,80 +3356,19 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: a46f2e0cb5e16fdb8f2011ed488979386d7e68d381966682e3f4c98fc126efe47f26827912baca2d06a02a644aee458b9cba307fb389f6b161e759125db7a3b8 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.4 - resolution: "is-number-object@npm:1.0.4" - checksum: d8e4525b5c151f1830872bf217901b58b3a9f66d93fe2f71c2087418e03d7f5c19a3ad64afa0feb70dafd93f7b97e205e3520a8ff007be665e54b377f5b736a8 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" +"is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" dependencies: - isobject: ^3.0.1 - checksum: 2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 languageName: node linkType: hard -"is-potential-custom-element-name@npm:^1.0.1": +"is-lambda@npm:^1.0.1": version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab - languageName: node - linkType: hard - -"is-regex@npm:^1.1.2": - version: 1.1.2 - resolution: "is-regex@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-symbols: ^1.0.1 - checksum: a1e5a451b6b2207c04e2591417499fed013630dbe96c051f0a39a3b266b16ab691c0345128223573f3cd45796e0f561a2241f4a7f1840b06574eebb7100b68aa - languageName: node - linkType: hard - -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 063c6bec9d5647aa6d42108d4c59723d2bd4ae42135a2d4db6eadbd49b7ea05b750fd69d279e5c7c45cf9da753ad2c00d8978be354d65aa9f6bb434969c6a2ae + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard @@ -3877,52 +3386,6 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5": - version: 1.0.5 - resolution: "is-string@npm:1.0.5" - checksum: 68d77a991f55592721cc7d5800ff95cdb2c4f242e3a98fdc939c409879f7b8f297b8352184032b6b2183994b4c457f42df8de004c58b5b43655c8b2f3e3ecc17 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.3 - resolution: "is-symbol@npm:1.0.3" - dependencies: - has-symbols: ^1.0.1 - checksum: c6d54bd01218fa202da8ce91525ca41a907819be5f000df9ab9621467e087eb36f34b2dbfa51a2a699a282e860681ffa6a787d69e944ba99a46d3df553ff2798 - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:^1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -3930,22 +3393,6 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-coverage@npm:3.0.0" @@ -3960,28 +3407,16 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^4.0.3": - version: 4.0.3 - resolution: "istanbul-lib-instrument@npm:4.0.3" - dependencies: - "@babel/core": ^7.7.5 - "@istanbuljs/schema": ^0.1.2 - istanbul-lib-coverage: ^3.0.0 - semver: ^6.3.0 - checksum: fa1171d3022b1bb8f6a734042620ac5d9ee7dc80f3065a0bb12863e9f0494d0eefa3d86608fcc0254ab2765d29d7dad8bdc42e5f8df2f9a1fbe85ccc59d76cb9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: - "@babel/core": ^7.12.3 - "@babel/parser": ^7.14.7 - "@istanbuljs/schema": ^0.1.2 + "@babel/core": ^7.23.9 + "@babel/parser": ^7.23.9 + "@istanbuljs/schema": ^0.1.3 istanbul-lib-coverage: ^3.2.0 - semver: ^6.3.0 - checksum: bf16f1803ba5e51b28bbd49ed955a736488381e09375d830e42ddeb403855b2006f850711d95ad726f2ba3f1ae8e7366de7e51d2b9ac67dc4d80191ef7ddf272 + semver: ^7.5.4 + checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a languageName: node linkType: hard @@ -3996,550 +3431,487 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.0 - resolution: "istanbul-lib-source-maps@npm:4.0.0" +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" dependencies: + "@jridgewell/trace-mapping": ^0.3.23 debug: ^4.1.1 istanbul-lib-coverage: ^3.0.0 - source-map: ^0.6.1 - checksum: 292bfb4083e5f8783cdf829a7686b1a377d0c6c2119d4343c8478e948b38146c4827cddc7eee9f57605acd63c291376d67e4a84163d37c5fc78ad0f27f7e2621 + checksum: 8dd6f2c1e2ecaacabeef8dc9ab52c4ed0a6036310002cf7f46ea6f3a5fb041da8076f5350e6a6be4c60cd4f231c51c73e042044afaf44820d857d92ecfb8ab6c languageName: node linkType: hard -"istanbul-reports@npm:^3.0.2": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" +"istanbul-reports@npm:^3.1.3": + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 + checksum: 72b4c8525276147908d28b0917bc675b1019836b638e50875521ca3b8ec63672681aa98dbab88a6f49ef798c08fe041d428abdcf84f4f3fcff5844eee54af65a + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 + languageName: node + linkType: hard + +"jest-changed-files@npm:30.5.1": + version: 30.5.1 + resolution: "jest-changed-files@npm:30.5.1" + dependencies: + execa: ^5.1.1 + jest-util: 30.5.1 + p-limit: ^3.1.0 + checksum: 8f20bbe76be757625f030765107b140408e5c57118d4aba6a207ca9e935841d64bee83bd6825715e2ae2cad436404f929204fa3f37898e05c80d9f8249a37123 languageName: node linkType: hard -"jest-changed-files@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-changed-files@npm:26.6.2" +"jest-circus@npm:30.5.1": + version: 30.5.1 + resolution: "jest-circus@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - execa: ^4.0.0 - throat: ^5.0.0 - checksum: 8c405f5ff905ee69ace9fd39355233206e3e233badf6a3f3b27e45bbf0a46d86943430be2e080d25b1e085f4231b9b3b27c94317aa04116efb40b592184066f4 + "@jest/environment": 30.5.1 + "@jest/expect": 30.5.1 + "@jest/test-result": 30.5.1 + "@jest/types": 30.5.1 + "@types/node": "*" + chalk: ^4.1.2 + co: ^4.6.0 + dedent: ^1.6.0 + is-generator-fn: ^2.1.0 + jest-each: 30.5.1 + jest-matcher-utils: 30.5.1 + jest-message-util: 30.5.1 + jest-runtime: 30.5.1 + jest-snapshot: 30.5.1 + jest-util: 30.5.1 + p-limit: ^3.1.0 + pretty-format: 30.5.1 + pure-rand: ^7.0.0 + slash: ^3.0.0 + stack-utils: ^2.0.6 + checksum: 0353f202bbf301817f01064bb4e7fc4d901f56404435e5649d7cc08800f05b08b531d68da5a14a22c3d577d89257e2f5bbb690db33971f1c3d6f68e8565815e0 languageName: node linkType: hard -"jest-cli@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-cli@npm:26.6.3" +"jest-cli@npm:30.5.1": + version: 30.5.1 + resolution: "jest-cli@npm:30.5.1" dependencies: - "@jest/core": ^26.6.3 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - import-local: ^3.0.2 - is-ci: ^2.0.0 - jest-config: ^26.6.3 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - prompts: ^2.0.1 - yargs: ^15.4.1 + "@jest/core": 30.5.1 + "@jest/test-result": 30.5.1 + "@jest/types": 30.5.1 + chalk: ^4.1.2 + exit-x: ^0.2.2 + import-local: ^3.2.0 + jest-config: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 + yargs: ^17.7.2 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true bin: jest: bin/jest.js - checksum: c8554147be756f09f5566974f0026485f78742e8642d2723f8fbee5746f50f44fb72b17aad181226655a8446d3ecc8ad8ed0a11a8a55686fa2b9c10d85700121 - languageName: node - linkType: hard - -"jest-config@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-config@npm:26.6.3" - dependencies: - "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^26.6.3 - "@jest/types": ^26.6.2 - babel-jest: ^26.6.3 - chalk: ^4.0.0 - deepmerge: ^4.2.2 - glob: ^7.1.1 - graceful-fs: ^4.2.4 - jest-environment-jsdom: ^26.6.2 - jest-environment-node: ^26.6.2 - jest-get-type: ^26.3.0 - jest-jasmine2: ^26.6.3 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 + checksum: c611248c97a1aca304f721e34d9a5fcfb28ea7fea1c2eecca672e514cfbe32f01934ec154765d608b96842b89dfe8041af1ef16154636e74f459cddad8254ffa + languageName: node + linkType: hard + +"jest-config@npm:30.5.1": + version: 30.5.1 + resolution: "jest-config@npm:30.5.1" + dependencies: + "@babel/core": ^7.27.4 + "@jest/get-type": 30.5.0 + "@jest/pattern": 30.5.0 + "@jest/test-sequencer": 30.5.1 + "@jest/types": 30.5.1 + babel-jest: 30.5.1 + chalk: ^4.1.2 + ci-info: ^4.2.0 + deepmerge: ^4.3.1 + glob: ^13.0.6 + graceful-fs: ^4.2.11 + jest-circus: 30.5.1 + jest-docblock: 30.5.0 + jest-environment-node: 30.5.1 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-runner: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 + parse-json: ^5.2.0 + pretty-format: 30.5.1 + slash: ^3.0.0 + strip-json-comments: ^3.1.1 peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" ts-node: ">=9.0.0" peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true ts-node: optional: true - checksum: 303c798582d3c5d4b4e6ab8a4d91a83ded28e4ebbc0bcfc1ad271f9864437ef5409b7c7773010143811bc8176b0695c096717b91419c6484b56dcc032560a74b - languageName: node - linkType: hard - -"jest-diff@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-diff@npm:26.6.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: d00d297f31e1ac0252127089892432caa7a11c69bde29cf3bb6c7a839c8afdb95cf1fd401f9df16a4422745da2e6a5d94b428b30666a2540c38e1c5699915c2d + checksum: 97c6110c85e0d248bc3e222cd15d6ea9e8cf257615bdea2296a5e8cbc8c75c76cfdc08fae14b34fdf8e75d91c62dc37bfdf4686cf493684696f41329d940b20f languageName: node linkType: hard -"jest-docblock@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-docblock@npm:26.0.0" +"jest-diff@npm:30.5.1": + version: 30.5.1 + resolution: "jest-diff@npm:30.5.1" dependencies: - detect-newline: ^3.0.0 - checksum: e03ef104ee8c571335e6fa394b8fc8d2bd87eec9fe8b3d7d9aac056ada7de288f37ee8ac4922bb3a4222ac304db975d8832d5abc85486092866c534a16847cd5 + "@jest/diff-sequences": 30.5.0 + "@jest/get-type": 30.5.0 + chalk: ^4.1.2 + pretty-format: 30.5.1 + checksum: 365544bf758f3bd53f25e42e238b05b4349bb1aca46784f81f4870cb773b9b77e3431dc41e2d725577ff936270ae46e9b29a0a6f310f6c0e08e7f789778bd2e4 languageName: node linkType: hard -"jest-each@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-each@npm:26.6.2" +"jest-docblock@npm:30.5.0": + version: 30.5.0 + resolution: "jest-docblock@npm:30.5.0" dependencies: - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - jest-get-type: ^26.3.0 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - checksum: 4e00ea4667e4fe015b894dc698cce0ae695cf458e021e5da62d4a5b052cd2c0a878da93f8c97cbdde60bcecf70982e8d3a7a5d63e1588f59531cc797a18c39ef + detect-newline: ^3.1.0 + checksum: 892645b5ac2eb39fa237e59ed31e9bc90e4284f2a705b0ff3aca513caf9db3f9e95c9126b213a6cce67d0a94bb56f1be3b4a06e61f1a0e3b4486aaa5e20b6354 languageName: node linkType: hard -"jest-environment-jsdom@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-jsdom@npm:26.6.2" +"jest-each@npm:30.5.1": + version: 30.5.1 + resolution: "jest-each@npm:30.5.1" dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - jsdom: ^16.4.0 - checksum: 8af9ffdf1b147362a19032bfe9ed51b709d43c74dc4b1c45e56d721808bf6cabdca8c226855b55a985ea196ce51cdb171bfe420ceec3daa2d13818d5c1915890 + "@jest/get-type": 30.5.0 + "@jest/types": 30.5.1 + chalk: ^4.1.2 + jest-util: 30.5.1 + pretty-format: 30.5.1 + checksum: 2f5fc6b8a9331ce181eeaeb10bdb681170c1d32662e61de571883ee787cf8afb27f098993da33fa26405de7183243f4c30e7a9cc3038c31841c5b87c9d34b2c1 languageName: node linkType: hard -"jest-environment-miniflare@npm:^2.10.0": - version: 2.10.0 - resolution: "jest-environment-miniflare@npm:2.10.0" +"jest-environment-miniflare@npm:2.14.3": + version: 2.14.3 + resolution: "jest-environment-miniflare@npm:2.14.3" dependencies: "@jest/environment": ">=27" "@jest/fake-timers": ">=27" "@jest/types": ">=27" - "@miniflare/queues": 2.10.0 - "@miniflare/runner-vm": 2.10.0 - "@miniflare/shared": 2.10.0 - "@miniflare/shared-test-environment": 2.10.0 + "@miniflare/queues": 2.14.2 + "@miniflare/runner-vm": 2.14.2 + "@miniflare/shared": 2.14.2 + "@miniflare/shared-test-environment": 2.14.2 jest-mock: ">=27" jest-util: ">=27" peerDependencies: jest: ">=27" - checksum: 61bd308f7a1e7439ab7f5d4af42b3a26987fffddb0018f9b8a2978385e052135bd4b837325981b03c204060227f2da393064411ebf14bed9137e360d2bdb3fd1 - languageName: node - linkType: hard - -"jest-environment-node@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-node@npm:26.6.2" - dependencies: - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - jest-mock: ^26.6.2 - jest-util: ^26.6.2 - checksum: 0b69b481e6d6f2350ed241c2dabc70b0b1f3a00f9a410b7dad97c8ab38e88026acf7445ca663eb314f46ff50acee0133100b1006bf4ebda5298ffb02763a6861 - languageName: node - linkType: hard - -"jest-get-type@npm:^26.3.0": - version: 26.3.0 - resolution: "jest-get-type@npm:26.3.0" - checksum: 1cc6465ae4f5e880be22ba52fd270fa64c21994915f81b41f8f7553a7957dd8e077cc8d03035de9412e2d739f8bad6a032ebb5dab5805692a5fb9e20dd4ea666 + checksum: a47544fb27772526e4b07ae969e8aff46159c9982d194832f678477f97de203897ea0e564778bed21d99057ad9feaeebaef0e2320472688b255e2d3e679d36f9 languageName: node linkType: hard -"jest-haste-map@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-haste-map@npm:26.6.2" +"jest-environment-node@npm:30.5.1": + version: 30.5.1 + resolution: "jest-environment-node@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - "@types/graceful-fs": ^4.1.2 + "@jest/environment": 30.5.1 + "@jest/fake-timers": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - anymatch: ^3.0.3 - fb-watchman: ^2.0.0 - fsevents: ^2.1.2 - graceful-fs: ^4.2.4 - jest-regex-util: ^26.0.0 - jest-serializer: ^26.6.2 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - micromatch: ^4.0.2 - sane: ^4.0.3 - walker: ^1.0.7 - dependenciesMeta: - fsevents: - optional: true - checksum: 8ad5236d5646d2388d2bd58a57ea53698923434f43d59ea9ebdc58bce4d0b8544c8de2f7acaa9a6d73171f04460388b2b6d7d6b6c256aea4ebb8780140781596 + jest-mock: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 + checksum: 4c3a3b2b59dbb6a342296c83efea77314e3e12026967fb50c5683046a85e0702f88d540d7723b5f321293e59f08a5d24819017cb653f4485c31a91e38fe0dfaf languageName: node linkType: hard -"jest-jasmine2@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-jasmine2@npm:26.6.3" +"jest-haste-map@npm:30.5.1": + version: 30.5.1 + resolution: "jest-haste-map@npm:30.5.1" dependencies: - "@babel/traverse": ^7.1.0 - "@jest/environment": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/types": 30.5.1 + "@parcel/watcher": ^2.6.0 "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - expect: ^26.6.2 - is-generator-fn: ^2.0.0 - jest-each: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-runtime: ^26.6.3 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - pretty-format: ^26.6.2 - throat: ^5.0.0 - checksum: 41df0b993ae0cdeb2660fb3d8e88e2dcc83aec6b5c27d85eb233c2d507b546f8dce45fc54898ffbefa48ccc4633f225d0e023fd0979b8f7f2f1626074a69a9a3 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-leak-detector@npm:26.6.2" - dependencies: - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 364dd4d021347e26c66ba9c09da8a30477f14a3a8a208d2d7d64e4c396db81b85d8cb6b6834bcfc47a61b5938e274553957d11a7de2255f058c9d55d7f8fdfe7 + anymatch: ^3.1.3 + fb-watchman: ^2.0.2 + fdir: ^6.5.0 + graceful-fs: ^4.2.11 + jest-regex-util: 30.5.0 + jest-util: 30.5.1 + jest-worker: 30.5.1 + picomatch: ^4.0.3 + checksum: 7b05513ea7b10be3db30cc972b823fb82ca4a453cd3c9dc709ef0106bece8542b691925eef736c1d3ef07c1ad8bc706e02690c9ada81f3f32a19287888d6829f languageName: node linkType: hard -"jest-matcher-utils@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-matcher-utils@npm:26.6.2" +"jest-leak-detector@npm:30.5.1": + version: 30.5.1 + resolution: "jest-leak-detector@npm:30.5.1" dependencies: - chalk: ^4.0.0 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - pretty-format: ^26.6.2 - checksum: 74d2165c1ac7fe98fe27cd2b5407499478e6b2fe99dd54e26d8ee5c9f5f913bdd7bdc07c7221b9b04df0c15e9be0e866ff3455b03e38cc66c480d9996d6d5405 + "@jest/get-type": 30.5.0 + pretty-format: 30.5.1 + checksum: 1e35b3e30dda79d7583b8c62b487fc4e0a7ca2d25c7e2699a2aee830d6b440af2f059fdb8dda843dec094b90cbb030b0eb571e3d55effa3b14bb4dd550d59f7a languageName: node linkType: hard -"jest-message-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-message-util@npm:26.6.2" +"jest-matcher-utils@npm:30.5.1": + version: 30.5.1 + resolution: "jest-matcher-utils@npm:30.5.1" dependencies: - "@babel/code-frame": ^7.0.0 - "@jest/types": ^26.6.2 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - micromatch: ^4.0.2 - pretty-format: ^26.6.2 - slash: ^3.0.0 - stack-utils: ^2.0.2 - checksum: ffe5a715591c41240b9ed4092faf10f3eaf9ddfdf25d257a0c9f903aaa8d9eed5baa7e38016d2ec4f610fd29225e0f5231a91153e087a043e62824972c83d015 + "@jest/get-type": 30.5.0 + chalk: ^4.1.2 + jest-diff: 30.5.1 + pretty-format: 30.5.1 + checksum: ef13c9f47c39b78d98555187a514449dd6fde1ca580080c47ca1466236ed0ecc632c1a5a38bb1a6172af2ef6a8e44492067fd1d9274bbbc4203348bb6801b4a5 languageName: node linkType: hard -"jest-message-util@npm:^29.2.0": - version: 29.2.0 - resolution: "jest-message-util@npm:29.2.0" +"jest-message-util@npm:30.5.1": + version: 30.5.1 + resolution: "jest-message-util@npm:30.5.1" dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.2.0 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.2.0 + "@babel/code-frame": ^7.27.1 + "@jest/types": 30.5.1 + "@types/stack-utils": ^2.0.3 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + jest-util: 30.5.1 + picomatch: ^4.0.3 + pretty-format: 30.5.1 slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: de74c6aeffbbae736f2be32ffaf238ec8944a213dca2e2f85ef845b92ca0a01496504a007fc5557e9ee8d2f1ead634962a53fe86d4483cd61ea82d6b790bdfb2 - languageName: node - linkType: hard - -"jest-mock@npm:>=27, jest-mock@npm:^29.2.0": - version: 29.2.0 - resolution: "jest-mock@npm:29.2.0" - dependencies: - "@jest/types": ^29.2.0 - "@types/node": "*" - jest-util: ^29.2.0 - checksum: 6c65e89860e5d1a74291c6276b1a12902189f4fa63adb226a811621725bf27487696fb366f3855b84afddbfa6cd36c7d4d0b61f5a05bbddb63ff00c8f95046a7 + stack-utils: ^2.0.6 + checksum: e25c26ebb3e18419eac2b23a22ba583a2c2be98ed74c289b47966d62169c9e43b55157340380e48153ebf003b7e0dd86f62d6ac984bd13463b0f8697063d3e02 languageName: node linkType: hard -"jest-mock@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-mock@npm:26.6.2" +"jest-mock@npm:30.5.1, jest-mock@npm:>=27": + version: 30.5.1 + resolution: "jest-mock@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 + "@jest/expect-utils": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - checksum: 6c0fe028ff0cdc87b5d63b9ca749af04cae6c5577aaab234f602e546cae3f4b932adac9d77e6de2abb24955ee00978e1e5d5a861725654e2f9a42317d91fbc1f - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: bd85dcc0e76e0eb0c3d56382ec140f08d25ff4068cda9d0e360bb78fb176cb726d0beab82dc0e8694cafd09f55fee7622b8bcb240afa5fad301f4ed3eebb4f47 + jest-util: 30.5.1 + checksum: 31c7e17c46a991de74c9ce52d2b1e76598694e3eee6ea34b23b63a5c4d56476ad4b942a7a3a7ca951c368b100ce0a4cc3a8500dae0a87db4e8b0a4c52de39769 languageName: node linkType: hard -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 930a00665e8dfbedc29140678b4a54f021b41b895cf35050f76f557c1da3ac48ff42dd7b18ba2ccba6f4e518c6445d6753730d03ec7049901b93992db1ef0483 +"jest-regex-util@npm:30.5.0": + version: 30.5.0 + resolution: "jest-regex-util@npm:30.5.0" + checksum: 2236cb0f3bc7f61690500d779afab57fbcb2a35925f416ab32e68e5c1efae6d916efa9c3ee49c94d4d0990e1316e6581a1545209b08715c848b919364e89e66f languageName: node linkType: hard -"jest-resolve-dependencies@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-resolve-dependencies@npm:26.6.3" +"jest-resolve-dependencies@npm:30.5.1": + version: 30.5.1 + resolution: "jest-resolve-dependencies@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - jest-regex-util: ^26.0.0 - jest-snapshot: ^26.6.2 - checksum: 533ea1e271426006ff02c03c9802b108fcd68f2144615b6110ae59f3a0a2cc4a7abb3f44c3c65299c76b3a725d5d8220aaed9c58b79c8c8c508c18699a96e3f7 + jest-regex-util: 30.5.0 + jest-snapshot: 30.5.1 + checksum: c1b908bc3a60fd9aa33a8f1af6dda92a48e413ff244264447beb6afe3418bde82fef29e58fe9e0f73f78d8dd31e26526de9ddaca18d7e6925b50c16abf1b7bb9 languageName: node linkType: hard -"jest-resolve@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-resolve@npm:26.6.2" +"jest-resolve@npm:30.5.1": + version: 30.5.1 + resolution: "jest-resolve@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - jest-pnp-resolver: ^1.2.2 - jest-util: ^26.6.2 - read-pkg-up: ^7.0.1 - resolve: ^1.18.1 + chalk: ^4.1.2 + graceful-fs: ^4.2.11 + jest-haste-map: 30.5.1 + jest-util: 30.5.1 + jest-validate: 30.5.1 slash: ^3.0.0 - checksum: d6264d3f39b098753802a237c8c54f3109f5f3b3b7fa6f8d7aec7dca01b357ddf518ce1c33a68454357c15f48fb3c6026a92b9c4f5d72f07e24e80f04bcc8d58 + unrs-resolver: ^1.12.1 + checksum: 9012e6711065fae75a45b8fd9849628f39bbd074def14445ddac95ac664096a0edb636d041c16c256d01c529379658bc2d94d3d8fe444284542b967cbd122bda languageName: node linkType: hard -"jest-runner@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runner@npm:26.6.3" +"jest-runner@npm:30.5.1": + version: 30.5.1 + resolution: "jest-runner@npm:30.5.1" dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 + "@jest/console": 30.5.1 + "@jest/environment": 30.5.1 + "@jest/source-map": 30.5.0 + "@jest/test-result": 30.5.1 + "@jest/transform": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - chalk: ^4.0.0 - emittery: ^0.7.1 - exit: ^0.1.2 - graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-docblock: ^26.0.0 - jest-haste-map: ^26.6.2 - jest-leak-detector: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - jest-runtime: ^26.6.3 - jest-util: ^26.6.2 - jest-worker: ^26.6.2 - source-map-support: ^0.5.6 - throat: ^5.0.0 - checksum: ccd69918baa49a5efa45985cf60cfa1fbb1686b32d7a86296b7b55f89684e36d1f08e62598c4b7be7e81f2cf2e245d1a65146ea7bdcaedfa6ed176d3e645d7e2 - languageName: node - linkType: hard - -"jest-runtime@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runtime@npm:26.6.3" - dependencies: - "@jest/console": ^26.6.2 - "@jest/environment": ^26.6.2 - "@jest/fake-timers": ^26.6.2 - "@jest/globals": ^26.6.2 - "@jest/source-map": ^26.6.2 - "@jest/test-result": ^26.6.2 - "@jest/transform": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/yargs": ^15.0.0 - chalk: ^4.0.0 - cjs-module-lexer: ^0.6.0 - collect-v8-coverage: ^1.0.0 - exit: ^0.1.2 - glob: ^7.1.3 - graceful-fs: ^4.2.4 - jest-config: ^26.6.3 - jest-haste-map: ^26.6.2 - jest-message-util: ^26.6.2 - jest-mock: ^26.6.2 - jest-regex-util: ^26.0.0 - jest-resolve: ^26.6.2 - jest-snapshot: ^26.6.2 - jest-util: ^26.6.2 - jest-validate: ^26.6.2 + chalk: ^4.1.2 + emittery: ^0.13.1 + exit-x: ^0.2.2 + graceful-fs: ^4.2.11 + jest-docblock: 30.5.0 + jest-environment-node: 30.5.1 + jest-haste-map: 30.5.1 + jest-leak-detector: 30.5.1 + jest-message-util: 30.5.1 + jest-resolve: 30.5.1 + jest-runtime: 30.5.1 + jest-util: 30.5.1 + jest-watcher: 30.5.1 + jest-worker: 30.5.1 + p-limit: ^3.1.0 + checksum: dfed97ccf4b8a2951f94c6ca03a8cd2a1af28d4a50a6ced10b976ab10231a05d044dd85994da3b9fb53b8c6f9ea3e81a6a041237c9bd145c2e868c4926a0b67e + languageName: node + linkType: hard + +"jest-runtime@npm:30.5.1": + version: 30.5.1 + resolution: "jest-runtime@npm:30.5.1" + dependencies: + "@jest/environment": 30.5.1 + "@jest/fake-timers": 30.5.1 + "@jest/globals": 30.5.1 + "@jest/source-map": 30.5.0 + "@jest/test-result": 30.5.1 + "@jest/transform": 30.5.1 + "@jest/types": 30.5.1 + "@types/node": "*" + chalk: ^4.1.2 + cjs-module-lexer: ^2.2.0 + collect-v8-coverage: ^1.0.2 + es-module-lexer: ^2.1.0 + glob: ^13.0.6 + graceful-fs: ^4.2.11 + jest-haste-map: 30.5.1 + jest-message-util: 30.5.1 + jest-mock: 30.5.1 + jest-regex-util: 30.5.0 + jest-resolve: 30.5.1 + jest-snapshot: 30.5.1 + jest-util: 30.5.1 slash: ^3.0.0 strip-bom: ^4.0.0 - yargs: ^15.4.1 - bin: - jest-runtime: bin/jest-runtime.js - checksum: 867922b49f9ab4cf2f5f1356ac3d9962c4477c7a2ff696cc841ea4c600ea389e7d6dfcbf945fec6849e606f81980addf31e4f34d63eaa3d3415f4901de2f605a - languageName: node - linkType: hard - -"jest-serializer@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-serializer@npm:26.6.2" - dependencies: + checksum: aecc2e54c56e4204f74962af5bc99dedb9504db517c5522265049fa69153a6a603800e9088166a6f68e65bca449e2d85c7ab4f0901632925159e6484085e2401 + languageName: node + linkType: hard + +"jest-snapshot@npm:30.5.1": + version: 30.5.1 + resolution: "jest-snapshot@npm:30.5.1" + dependencies: + "@babel/core": ^7.27.4 + "@babel/generator": ^7.27.5 + "@babel/plugin-syntax-jsx": ^7.27.1 + "@babel/plugin-syntax-typescript": ^7.27.1 + "@babel/types": ^7.27.3 + "@jest/expect-utils": 30.5.1 + "@jest/get-type": 30.5.0 + "@jest/snapshot-utils": 30.5.1 + "@jest/transform": 30.5.1 + "@jest/types": 30.5.1 + babel-preset-current-node-syntax: ^1.2.0 + chalk: ^4.1.2 + expect: 30.5.1 + graceful-fs: ^4.2.11 + jest-diff: 30.5.1 + jest-matcher-utils: 30.5.1 + jest-message-util: 30.5.1 + jest-util: 30.5.1 + pretty-format: 30.5.1 + semver: ^7.7.2 + synckit: ^0.11.8 + checksum: 0a8a63143f9a7e2f4e4f37ca79425d6decde1f55da783acb7cc6627ef4234e4c9aaf381074a73981dbbe51f7aca702689826acb1196820862676ba7bfdd7f768 + languageName: node + linkType: hard + +"jest-util@npm:30.5.1, jest-util@npm:>=27": + version: 30.5.1 + resolution: "jest-util@npm:30.5.1" + dependencies: + "@jest/types": 30.5.1 "@types/node": "*" - graceful-fs: ^4.2.4 - checksum: dbecfb0d01462fe486a0932cf1680cf6abb204c059db2a8f72c6c2a7c9842a82f6d256874112774cea700764ed8f38fc9e3db982456c138d87353e3390e746fe + chalk: ^4.1.2 + ci-info: ^4.2.0 + graceful-fs: ^4.2.11 + picomatch: ^4.0.3 + checksum: b7d8647fab3c2be809b3b3016758270274a63f441239776c14b1033e94bed00d7066832e1b93f9c7a3b58414e1fefb26fa9609e2ec0c9192d733a6b123b9604e languageName: node linkType: hard -"jest-snapshot@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-snapshot@npm:26.6.2" +"jest-validate@npm:30.5.1": + version: 30.5.1 + resolution: "jest-validate@npm:30.5.1" dependencies: - "@babel/types": ^7.0.0 - "@jest/types": ^26.6.2 - "@types/babel__traverse": ^7.0.4 - "@types/prettier": ^2.0.0 - chalk: ^4.0.0 - expect: ^26.6.2 - graceful-fs: ^4.2.4 - jest-diff: ^26.6.2 - jest-get-type: ^26.3.0 - jest-haste-map: ^26.6.2 - jest-matcher-utils: ^26.6.2 - jest-message-util: ^26.6.2 - jest-resolve: ^26.6.2 - natural-compare: ^1.4.0 - pretty-format: ^26.6.2 - semver: ^7.3.2 - checksum: 53f1de055b1d3840bc6e851fd674d5991b844d4695dadbd07354c93bf191048d8767b8606999847e97c4214a485b9afb45c1d2411772befa1870414ac973b3e2 + "@jest/get-type": 30.5.0 + "@jest/types": 30.5.1 + camelcase: ^6.3.0 + chalk: ^4.1.2 + leven: ^3.1.0 + pretty-format: 30.5.1 + checksum: a98927bf1c3df08d2e0625bb88c02b4698257a3ccff9266df2d77bd0260f2b417e6c2acb175d4b2bd2ddd36d42cd3ada4399b43c99ba8d55407c2a060356a7e9 languageName: node linkType: hard -"jest-util@npm:>=27, jest-util@npm:^29.2.0": - version: 29.2.0 - resolution: "jest-util@npm:29.2.0" +"jest-watcher@npm:30.5.1": + version: 30.5.1 + resolution: "jest-watcher@npm:30.5.1" dependencies: - "@jest/types": ^29.2.0 + "@jest/test-result": 30.5.1 + "@jest/types": 30.5.1 "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: c1fc26008b3199387dbd28f145f692f48b7c8e911c6a71892e579544ee62819ecc2c693f7fc5e41284119a6f742130ef5c92f485caed89eea47c5e627003ad2d + ansi-escapes: ^4.3.2 + chalk: ^4.1.2 + emittery: ^0.13.1 + jest-util: 30.5.1 + string-length: ^4.0.2 + checksum: 0108fd066f527abffe4ff9a19062f6d8082cacc0a6ce0b33c931c8d95cabc16b3bb957987b024238d754af839e4f549ff6d812186dbe55e3eefeb614dd917fd2 languageName: node linkType: hard -"jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" +"jest-worker@npm:30.5.1": + version: 30.5.1 + resolution: "jest-worker@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 "@types/node": "*" - chalk: ^4.0.0 - graceful-fs: ^4.2.4 - is-ci: ^2.0.0 - micromatch: ^4.0.2 - checksum: 3c6a5fba05c4c6892cd3a9f66196ea8867087b77a5aa1a3f6cd349c785c3f1ca24abfd454664983aed1a165cab7846688e44fe8630652d666ba326b08625bc3d + "@ungap/structured-clone": ^1.3.0 + jest-util: 30.5.1 + merge-stream: ^2.0.0 + supports-color: ^8.1.1 + checksum: 070e91f03b01ce289422d826a009738fd226d6a9e8bd4fd0c1d39788d7a8df6f17da593fe4e1cdf20bc5e61b8920cdc3895d88856a9936ca82c6fc4f40ff794e languageName: node linkType: hard -"jest-validate@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-validate@npm:26.6.2" +"jest@npm:30.5.1": + version: 30.5.1 + resolution: "jest@npm:30.5.1" dependencies: - "@jest/types": ^26.6.2 - camelcase: ^6.0.0 - chalk: ^4.0.0 - jest-get-type: ^26.3.0 - leven: ^3.1.0 - pretty-format: ^26.6.2 - checksum: bac11d6586d9b8885328a4a66eec45b692e45ac23034a5c09eb0ee32de324f2d3d52b073e0c34e9c222b3642b083d1152a736cf24c52109e4957537d731ca62b + "@jest/core": 30.5.1 + "@jest/types": 30.5.1 + import-local: ^3.2.0 + jest-cli: 30.5.1 + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: e7cc4eab344fa49e1217dfb6c05d60ed9a956e3985b85544637b50ad38a5d387e455e63dc4ff5dbf460fc8547f4023271fe4de45df8b59311c47875bf58979a0 languageName: node linkType: hard -"jest-watcher@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-watcher@npm:26.6.2" - dependencies: - "@jest/test-result": ^26.6.2 - "@jest/types": ^26.6.2 - "@types/node": "*" - ansi-escapes: ^4.2.1 - chalk: ^4.0.0 - jest-util: ^26.6.2 - string-length: ^4.0.1 - checksum: 401137f1a73bf23cdf390019ebffb3f6f89c53ca49d48252d1dd6daf17a68787fef75cc55a623de28b63d87d0e8f13d8972d7dd06740f2f64f7b2a0409d119d2 - languageName: node - linkType: hard - -"jest-worker@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "*" - merge-stream: ^2.0.0 - supports-color: ^7.0.0 - checksum: f9afa3b88e3f12027901e4964ba3ff048285b5783b5225cab28fac25b4058cea8ad54001e9a1577ee2bed125fac3ccf5c80dc507b120300cc1bbcb368796533e - languageName: node - linkType: hard - -"jest@npm:^26.6.3": - version: 26.6.3 - resolution: "jest@npm:26.6.3" - dependencies: - "@jest/core": ^26.6.3 - import-local: ^3.0.2 - jest-cli: ^26.6.3 - bin: - jest: bin/jest.js - checksum: 3a9b4c70e9bd5391e7367a0036045c1d3545c2a39e1439a71fb4b59b1748bc34e2ccb324faa1046b99bffc8dc2ed7b3c59016c462255b2646f5fa9300351f914 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:4.0.0": - version: 4.0.0 - resolution: "js-yaml@npm:4.0.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: 931d6dddb3589fa272c8273366c6dffa99fd6bd26ac7b70f9bac925c28cb7ae352b964192df84f90ecd7a2ff50ab87e6d58e2148eb19c89aa155c73ed847ab92 +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 languageName: node linkType: hard @@ -4555,52 +3927,12 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.4.0": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" - dependencies: - abab: ^2.0.5 - acorn: ^8.2.4 - acorn-globals: ^6.0.0 - cssom: ^0.4.4 - cssstyle: ^2.3.0 - data-urls: ^2.0.0 - decimal.js: ^10.2.1 - domexception: ^2.0.1 - escodegen: ^2.0.0 - form-data: ^3.0.0 - html-encoding-sniffer: ^2.0.1 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: 6.0.1 - saxes: ^5.0.1 - symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^2.0.0 - webidl-conversions: ^6.1.0 - whatwg-encoding: ^1.0.5 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.5.0 - ws: ^7.4.6 - xml-name-validator: ^3.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" bin: jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + checksum: 19c94095ea026725540c0d29da33ab03144f6bcf2d4159e4833d534976e99e0c09c38cefa9a575279a51fc36b31166f8d6d05c9fe2645d5f15851d690b41f17f languageName: node linkType: hard @@ -4618,13 +3950,6 @@ __metadata: languageName: node linkType: hard -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -4632,72 +3957,21 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - -"json5@npm:^2.2.1": - version: 2.2.1 - resolution: "json5@npm:2.2.1" +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 languageName: node linkType: hard -"jsx-ast-utils@npm:^3.1.0": - version: 3.2.0 - resolution: "jsx-ast-utils@npm:3.2.0" - dependencies: - array-includes: ^3.1.2 - object.assign: ^4.1.2 - checksum: 9f695c480212868557c5e3cd01082857e101768dc75cb904335d1a805e972d6203baa58ae0b786e7afeab1e8fdb98242fccf22dbc1734595a65845172743877c - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" +"keyv@npm:^5.6.0": + version: 5.6.0 + resolution: "keyv@npm:5.6.0" dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: df82cd1e172f957bae9c536286265a5cdbd5eeca487cb0a3b2a7b41ef959fc61f8e7c0e9aeea9c114ccf2c166b6a8dd45a46fd619c1c569d210ecd2765ad5169 + "@keyv/serialize": ^1.1.1 + checksum: 0cbe4951e16a3176a64edddb1474954a50ee9125ef63a6cf621f21b8b139b6b7b55240ebcf3274677ea6507c686984f7ac3035c8192c3392d702ed76c03db86a languageName: node linkType: hard @@ -4708,22 +3982,6 @@ __metadata: languageName: node linkType: hard -"language-subtag-registry@npm:~0.3.2": - version: 0.3.21 - resolution: "language-subtag-registry@npm:0.3.21" - checksum: 5f794525a5bfcefeea155a681af1c03365b60e115b688952a53c6e0b9532b09163f57f1fcb69d6150e0e805ec0350644a4cb35da98f4902562915be9f89572a1 - languageName: node - linkType: hard - -"language-tags@npm:^1.0.5": - version: 1.0.5 - resolution: "language-tags@npm:1.0.5" - dependencies: - language-subtag-registry: ~0.3.2 - checksum: c81b5d8b9f5f9cfd06ee71ada6ddfe1cf83044dd5eeefcd1e420ad491944da8957688db4a0a9bc562df4afdc2783425cbbdfd152c01d93179cf86888903123cf - languageName: node - linkType: hard - "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" @@ -4741,16 +3999,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -4758,28 +4006,6 @@ __metadata: languageName: node linkType: hard -"load-json-file@npm:^2.0.0": - version: 2.0.0 - resolution: "load-json-file@npm:2.0.0" - dependencies: - graceful-fs: ^4.1.2 - parse-json: ^2.2.0 - pify: ^2.0.0 - strip-bom: ^3.0.0 - checksum: 7f212bbf08a8c9aab087ead07aa220d1f43d83ec1c4e475a00a8d9bf3014eb29ebe901db8554627dcfb70184c274d05b7379f1e9678fe8297ae74dc495212049 - languageName: node - linkType: hard - -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: ^2.0.0 - path-exists: ^3.0.0 - checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 - languageName: node - linkType: hard - "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -4798,40 +4024,26 @@ __metadata: languageName: node linkType: hard -"lodash.clonedeep@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489 - languageName: node - linkType: hard - -"lodash.flatten@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.flatten@npm:4.4.0" - checksum: 0ac34a393d4b795d4b7421153d27c13ae67e08786c9cbb60ff5b732210d46f833598eee3fb3844bb10070e8488efe390ea53bb567377e0cb47e9e630bf0811cb - languageName: node - linkType: hard - -"lodash.truncate@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.truncate@npm:4.4.2" - checksum: b463d8a382cfb5f0e71c504dcb6f807a7bd379ff1ea216669aa42c52fc28c54e404bfbd96791aa09e6df0de2c1d7b8f1b7f4b1a61f324d38fe98bc535aeee4f5 +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard -"lodash@npm:^4.17.21, lodash@npm:^4.7.0": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 +"lru-cache@npm:^11.0.0": + version: 11.5.3 + resolution: "lru-cache@npm:11.5.3" + checksum: 078ddba93ab3d93d143d01b7ee553cfd3fd510eceebcc846add4fa25ce3f23fe24b00b7710cbf590a799faa993e6a234aeaf7dc6944892532c05328c6e13b7bf languageName: node linkType: hard -"log-symbols@npm:4.0.0": - version: 4.0.0 - resolution: "log-symbols@npm:4.0.0" +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" dependencies: - chalk: ^4.0.0 - checksum: a7c1fb5cc504ff04422460dcae3a830002426432fbed81280c8a49f4c6f5ef244c28b987636bf1c871ba6866d7024713388be391e92c0d5af6a70598fcabc46b + yallist: ^3.0.2 + checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb languageName: node linkType: hard @@ -4884,28 +4096,10 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: 1.0.5 - checksum: b38a025a12c8146d6eeea5a7f2bf27d51d8ad6064da8ca9405fcf7bf9b54acd43e3b30ddd7abb9b1bfa4ddb266019133313482570ddb207de568f71ecfcf6060 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2 languageName: node linkType: hard @@ -4916,37 +4110,6 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -4954,7 +4117,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12": +"mime-types@npm:^2.1.35": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -4977,21 +4140,21 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.0.4, minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" +"minimatch@npm:^10.2.2, minimatch@npm:^10.2.4, minimatch@npm:^10.2.5": + version: 10.2.6 + resolution: "minimatch@npm:10.2.6" dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + brace-expansion: ^5.0.8 + checksum: 6f3d0ba7654a6d667dc1787a3684192d65e130cbcf02c1b0cf0d0b2f7f69ab41703d4d255dc171632dc25994527a35fb6ea7d44cc6132e4d93de5a2efb210bd1 languageName: node linkType: hard -"minimatch@npm:^3.1.1": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" +"minimatch@npm:^3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" dependencies: brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 languageName: node linkType: hard @@ -5004,17 +4167,12 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.1": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec - languageName: node - linkType: hard - -"minimist@npm:^1.2.0": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 +"minimatch@npm:^9.0.4": + version: 9.0.9 + resolution: "minimatch@npm:9.0.9" + dependencies: + brace-expansion: ^2.0.2 + checksum: 5292681ba1e14544ca9214ba5e412bb346214fb783354b22752f2d1e5c176e4a2c0bfcafeb1046389b816009ab73ba5410b176ce605632e8aa695db25f87f6b9 languageName: node linkType: hard @@ -5085,6 +4243,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.1.2, minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 2ede17c0bf8fec499be3360fd07f0ec7666189e3907320a9b653f1530cf84af98928c5b12d80bfb75f321833bf2e97785b940540213ebdafe97a5f10327e664d + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -5095,16 +4260,6 @@ __metadata: languageName: node linkType: hard -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -5114,49 +4269,6 @@ __metadata: languageName: node linkType: hard -"mocha@npm:^8.3.2": - version: 8.3.2 - resolution: "mocha@npm:8.3.2" - dependencies: - "@ungap/promise-all-settled": 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.1 - debug: 4.3.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.1.6 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 - minimatch: 3.0.4 - ms: 2.1.3 - nanoid: 3.1.20 - serialize-javascript: 5.0.1 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - wide-align: 1.1.3 - workerpool: 6.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - bin: - _mocha: bin/_mocha - mocha: bin/mocha - checksum: 4c071723f611cdc1a84d6db4ad2f73a9862af80939c050923d6f27270943117e5ff9dee137205f5ec591c9ccd0db9543b1719d5acf378c740d22359aeb165360 - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -5164,38 +4276,19 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0": +"ms@npm:^2.0.0, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard -"nanoid@npm:3.1.20": - version: 3.1.20 - resolution: "nanoid@npm:3.1.20" +"napi-postinstall@npm:^0.3.4": + version: 0.3.4 + resolution: "napi-postinstall@npm:0.3.4" bin: - nanoid: bin/nanoid.cjs - checksum: f6246023d5d8313c2c16be05c18cdb189a6de50ab6418b513b34086eda4aabd12866b2cbe435548c760dc43cf11830b26b14b113afde47305398e3345795e433 - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 + napi-postinstall: lib/cli.js + checksum: 01672ae6568e2b3a6d985371f1504a6e1c791aa308b94c9f89736fde8251b7b8ab3227d1a5ede8d0eb0552099e069970b038c6958052c01b2bdc5aae31f0a88c languageName: node linkType: hard @@ -5213,10 +4306,12 @@ __metadata: languageName: node linkType: hard -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" + dependencies: + node-gyp: latest + checksum: 46051999e3289f205799dfaf6bcb017055d7569090f0004811110312e2db94cb4f8654602c7eb77a60a1a05142cc2b96e1b5c56ca4622c41a5c6370787faaf30 languageName: node linkType: hard @@ -5247,24 +4342,10 @@ __metadata: languageName: node linkType: hard -"node-notifier@npm:^8.0.0": - version: 8.0.2 - resolution: "node-notifier@npm:8.0.2" - dependencies: - growly: ^1.3.0 - is-wsl: ^2.2.0 - semver: ^7.3.2 - shellwords: ^0.1.1 - uuid: ^8.3.0 - which: ^2.0.2 - checksum: 7db1683003f6aaa4324959dfa663cd56e301ccc0165977a9e7737989ffe3b4763297f9fc85f44d0662b63a4fd85516eda43411b492a4d2fae207afb23773f912 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.6": - version: 2.0.6 - resolution: "node-releases@npm:2.0.6" - checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf +"node-releases@npm:^2.0.55": + version: 2.0.57 + resolution: "node-releases@npm:2.0.57" + checksum: eced033901bf62260f79fd62e1898883d16f912e7d00d680e94ea6e088e808bc232dd23d475fc07ce012b0260844f1a631a91bbdc6350b5314add2caf407e158 languageName: node linkType: hard @@ -5279,44 +4360,14 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: ^2.1.4 - resolve: ^1.10.0 - semver: 2 || 3 || 4 || 5 - validate-npm-package-license: ^3.0.1 - checksum: 7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": +"normalize-path@npm:^3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 languageName: node linkType: hard -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: ^2.0.0 - checksum: acd5ad81648ba4588ba5a8effb1d98d2b339d31be16826a118d50f182a134ac523172101b82eab1d01cb4c2ba358e857d54cfafd8163a1ffe7bd52100b741125 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.0": +"npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -5346,7 +4397,7 @@ __metadata: languageName: node linkType: hard -"npx-import@npm:^1.1.3": +"npx-import@npm:^1.1.4": version: 1.1.4 resolution: "npx-import@npm:1.1.4" dependencies: @@ -5358,81 +4409,7 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": - version: 2.2.2 - resolution: "nwsapi@npm:2.2.2" - checksum: 43769106292bc95f776756ca2f3513dab7b4d506a97c67baec32406447841a35f65f29c1f95ab5d42785210fd41668beed33ca16fa058780be43b101ad73e205 - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - -"object-inspect@npm:^1.9.0": - version: 1.10.2 - resolution: "object-inspect@npm:1.10.2" - checksum: ddd414048e97ca721bc281ba2a0e867fff433d62b70dd87f0ed7495dfe51dd3f649b86d4515ff2d0999507eeed03a829f89dbbbf5884ca8cc5a6d6ce8f91d6cf - languageName: node - linkType: hard - -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 - object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - -"object.values@npm:^1.1.1": - version: 1.1.3 - resolution: "object.values@npm:1.1.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - has: ^1.0.3 - checksum: 8b29bd0936a32c2c5dfeb39389f65c7c3f32253a2ad3e4605726cac6bda8f642b4f8ab1ef58279851b86b7ae7322b3cf9a464c346498a7deb8f0c3a0554015f0 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -5441,7 +4418,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.0": +"onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -5459,54 +4436,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 - languageName: node - linkType: hard - -"p-each-series@npm:^2.1.0": - version: 2.2.0 - resolution: "p-each-series@npm:2.2.0" - checksum: 5fbe2f1f1966f55833bd401fe36f7afe410707d5e9fb6032c6dde8aa716d50521c3bb201fdb584130569b5941d5e84993e09e0b3f76a474288e0ede8f632983c - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 93a654c53dc805dd5b5891bab16eb0ea46db8f66c4bfd99336ae929323b1af2b70a8b0654f8f1eae924b2b73d037031366d645f1fd18b3d30cbd15950cc4b1d4 - languageName: node - linkType: hard - -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: ^1.0.0 - checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb languageName: node linkType: hard @@ -5519,7 +4459,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -5528,15 +4468,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: ^1.1.0 - checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 - languageName: node - linkType: hard - "p-locate@npm:^4.1.0": version: 4.1.0 resolution: "p-locate@npm:4.1.0" @@ -5564,13 +4495,6 @@ __metadata: languageName: node linkType: hard -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -5578,25 +4502,14 @@ __metadata: languageName: node linkType: hard -"parent-module@npm:^1.0.0": +"package-json-from-dist@npm:^1.0.0": version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-json@npm:^2.2.0": - version: 2.2.0 - resolution: "parse-json@npm:2.2.0" - dependencies: - error-ex: ^1.2.0 - checksum: dda78a63e57a47b713a038630868538f718a7ca0cd172a36887b0392ccf544ed0374902eb28f8bf3409e8b71d62b79d17062f8543afccf2745f9b0b2d2bb80ca + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 languageName: node linkType: hard -"parse-json@npm:^5.0.0": +"parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -5615,45 +4528,17 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard @@ -5671,37 +4556,34 @@ __metadata: languageName: node linkType: hard -"path-parse@npm:^1.0.6": - version: 1.0.6 - resolution: "path-parse@npm:1.0.6" - checksum: 962a85dd384d68d469ec5ba4010df8f8f9b7e936ce603bbe3211476c5615feb3c2b1ca61211a78445fadc833f0b1a86ea6484c861035ec4ac93011ba9aff9a11 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 languageName: node linkType: hard -"path-type@npm:^2.0.0": - version: 2.0.0 - resolution: "path-type@npm:2.0.0" +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" dependencies: - pify: ^2.0.0 - checksum: 749dc0c32d4ebe409da155a0022f9be3d08e6fd276adb3dfa27cb2486519ab2aa277d1453b3fde050831e0787e07b0885a75653fefcc82d883753c5b91121b1c + lru-cache: ^11.0.0 + minipass: ^7.1.2 + checksum: a723afe86e342e19dd1b49ce4f5b64a9a84b1e2e07ffc62f051c11623ecd461b1bf1599eee1ecacfce03dda8b6bb866a5df80c0ded45375d258ff22f631920a7 languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3": +"picomatch@npm:^2.0.4": version: 2.2.3 resolution: "picomatch@npm:2.2.3" checksum: 45e2b882b5265d3a322c6b7b854c1fdc33d5083011b9730296e9ad26332824ac356529f1ce1b0c1111f08a84c02e8525ea121d17c4bbe2970ca6665e587921fa @@ -5715,26 +4597,17 @@ __metadata: languageName: node linkType: hard -"pify@npm:^2.0.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pirates@npm:^4.0.1": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": + version: 4.0.7 + resolution: "picomatch@npm:4.0.7" + checksum: a97edd7659fc7f39769734bcacd8e9c2f8711d0c30f0caf143577c4d59b3338e17e884ead92805701c71d54040067909e8d3dd45ed814fc8af154ca747fb06a4 languageName: node linkType: hard -"pkg-dir@npm:^2.0.0": - version: 2.0.0 - resolution: "pkg-dir@npm:2.0.0" - dependencies: - find-up: ^2.1.0 - checksum: 8c72b712305b51e1108f0ffda5ec1525a8307e54a5855db8fb1dcf77561a5ae98e2ba3b4814c9806a679f76b2f7e5dd98bde18d07e594ddd9fdd25e9cf242ea1 +"pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 3dcbaff13c8b5bc158416feb6dc9e49e3c6be5fddc1ea078a05a73ef6b85d79324bbb1ef59b954cdeff000dbf000c1d39f32dc69310c7b78fbada5171b583e40 languageName: node linkType: hard @@ -5751,24 +4624,15 @@ __metadata: version: 0.0.0-use.local resolution: "podcast-api@workspace:." dependencies: - axios: ^0.21.1 - eslint: ^7.25.0 - eslint-plugin-import: ^2.22.1 - eslint-plugin-jsx-a11y: ^6.4.1 - jest: ^26.6.3 - jest-environment-miniflare: ^2.10.0 - mocha: ^8.3.2 - prettier: ^2.2.1 + "@eslint/js": 10.0.1 + axios: 1.19.0 + eslint: 10.10.0 + jest: 30.5.1 + jest-environment-miniflare: 2.14.3 + prettier: 3.9.8 languageName: unknown linkType: soft -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -5776,49 +4640,24 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - -"prettier@npm:^2.2.1": - version: 2.2.1 - resolution: "prettier@npm:2.2.1" +"prettier@npm:3.9.8": + version: 3.9.8 + resolution: "prettier@npm:3.9.8" bin: - prettier: bin-prettier.js - checksum: 800de2df3d37067ab24478c7f32c60ca0c57b01742133287829feeb4a70d239a7bf6bccb56196784777af591ad80fb9ba70c1a49b0fcecf9f5622a764d513edb - languageName: node - linkType: hard - -"pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": ^26.6.2 - ansi-regex: ^5.0.0 - ansi-styles: ^4.0.0 - react-is: ^17.0.1 - checksum: e3b808404d7e1519f0df1aa1f25cee0054ab475775c6b2b8c5568ff23194a92d54bf93274139b6f584ca70fd773be4eaa754b0e03f12bb0a8d1426b07f079976 + prettier: bin/prettier.cjs + checksum: b9728106824ec6f36bf34533252b213f417b724b67947f97f77558c1edfa3e626fb813dfef306fca715e34f349f3d397dfd97fc02dcc50a10a06203211d2294f languageName: node linkType: hard -"pretty-format@npm:^29.2.0": - version: 29.2.0 - resolution: "pretty-format@npm:29.2.0" +"pretty-format@npm:30.5.1": + version: 30.5.1 + resolution: "pretty-format@npm:30.5.1" dependencies: - "@jest/schemas": ^29.0.0 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: f5ef6a848540f0881baafbcf6bf9908d2d8e2a47692bc095abbb06881ed3c780b41b08cb537b7d020fc79cec04c4a8bbd6a15cd44a3fe0693ddd235a2d0bda3a - languageName: node - linkType: hard - -"progress@npm:^2.0.0": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 + "@jest/react-is-18": "npm:react-is@^18.3.1" + "@jest/react-is-19": "npm:react-is@^19.2.5" + "@jest/schemas": 30.5.0 + ansi-styles: ^5.2.0 + checksum: 0aee5a8a8318c2df834ec7949da34f914803316272a758722d9b2492f527375a887112aeca6f4f17c9a2f7592ce47c851fa6b281eaac25bb5a775caf826da8c1 languageName: node linkType: hard @@ -5839,111 +4678,33 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.1 - resolution: "prompts@npm:2.4.1" - dependencies: - kleur: ^3.0.3 - sisteransi: ^1.0.5 - checksum: 05bf4865870665067b14fc54ced6c96e353f58f57658351e16bb8c12c017402582696fb42d97306b7c98efc0e2cc1ebf27ab573448d5a5da2ac18991cc9e4cad - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 +"proxy-from-env@npm:^2.1.0": + version: 2.1.0 + resolution: "proxy-from-env@npm:2.1.0" + checksum: b106ad790f26d47ba4791af3fe8cba5c8d35d85020119c82c05b413eb11b3ab97d2393ecaed51bca97c2788fa256408283dfeb4d970b2ebcae6702310f064e7e languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: ^5.1.0 - checksum: d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 - languageName: node - linkType: hard - -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e - languageName: node - linkType: hard - -"read-pkg-up@npm:^2.0.0": - version: 2.0.0 - resolution: "read-pkg-up@npm:2.0.0" - dependencies: - find-up: ^2.0.0 - read-pkg: ^2.0.0 - checksum: 22f9026fb72219ecd165f94f589461c70a88461dc7ea0d439a310ef2a5271ff176a4df4e5edfad087d8ac89b8553945eb209476b671e8ed081c990f30fc40b27 - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": +"pure-rand@npm:^7.0.0": version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: ^4.1.0 - read-pkg: ^5.2.0 - type-fest: ^0.8.1 - checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 - languageName: node - linkType: hard - -"read-pkg@npm:^2.0.0": - version: 2.0.0 - resolution: "read-pkg@npm:2.0.0" - dependencies: - load-json-file: ^2.0.0 - normalize-package-data: ^2.3.2 - path-type: ^2.0.0 - checksum: 85c5bf35f2d96acdd756151ba83251831bb2b1040b7d96adce70b2cb119b5320417f34876de0929f2d06c67f3df33ef4636427df3533913876f9ef2487a6f48f + resolution: "pure-rand@npm:7.0.1" + checksum: 4f543b97a487857a791b8e4c139aad54937397dc8177f1353f7da88556bfa40f5c32bfce3856843b1c3fc3a00b8472cceb22957c10b21c14e59e36a02ec9353b languageName: node linkType: hard -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" +"qified@npm:^0.10.1": + version: 0.10.1 + resolution: "qified@npm:0.10.1" dependencies: - "@types/normalize-package-data": ^2.4.0 - normalize-package-data: ^2.5.0 - parse-json: ^5.0.0 - type-fest: ^0.6.0 - checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 + hookified: ^2.1.1 + checksum: e164bfec0b064730dc70b971ba6016c4ad2f304828a5806d9d249b03f69cd4bcc8b1c8851e4a5f2e5b82b09b26a206cd5f031b8bfe16ee9467dd36b13b6c6e98 languageName: node linkType: hard @@ -5958,60 +4719,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: ^2.2.1 - checksum: 6b1a9341e295e15d4fb40c010216cbcb6266587cd0b3ce7defabd66fa1b4e35f9fba3d64c2187fd38fadd01ccbfc5f1b33fdfb1da63b3cbf66224b7c6d75ce5a - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4": - version: 0.13.7 - resolution: "regenerator-runtime@npm:0.13.7" - checksum: 52b66e6669152c0b1bccd95c8e11aabbfe67bb97bdf00e223bdf723b0f0052d4da5c02001d4c4bef576bdc5bcdc38a20496d1b5363b65c950c8434ed5071d9e0 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - -"regexpp@npm:^3.1.0": - version: 3.1.0 - resolution: "regexpp@npm:3.1.0" - checksum: 63bcb2c98d63274774c79bef256e03f716d25f1fa8427267d0302d1436a83fa0d905f4e8a172fdfa99fb4d84833df2fb3bf7da2a1a868f156e913174c32b1139 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -6019,27 +4726,6 @@ __metadata: languageName: node linkType: hard -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b - languageName: node - linkType: hard - -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -6049,13 +4735,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -6063,66 +4742,6 @@ __metadata: languageName: node linkType: hard -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.13.1, resolve@npm:^1.17.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe - languageName: node - linkType: hard - -"resolve@npm:^1.18.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.17.0#~builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=c3c19d" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.18.1#~builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -6130,7 +4749,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -6141,81 +4760,21 @@ __metadata: languageName: node linkType: hard -"rsvp@npm:^4.8.4": - version: 4.8.5 - resolution: "rsvp@npm:4.8.5" - checksum: 2d8ef30d8febdf05bdf856ccca38001ae3647e41835ca196bc1225333f79b94ae44def733121ca549ccc36209c9b689f6586905e2a043873262609744da8efc1 - languageName: node - linkType: hard - -"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 languageName: node linkType: hard -"safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 languageName: node linkType: hard -"sane@npm:^4.0.3": - version: 4.1.0 - resolution: "sane@npm:4.1.0" - dependencies: - "@cnakazawa/watch": ^1.0.3 - anymatch: ^2.0.0 - capture-exit: ^2.0.0 - exec-sh: ^0.3.2 - execa: ^1.0.0 - fb-watchman: ^2.0.0 - micromatch: ^3.1.4 - minimist: ^1.1.1 - walker: ~1.0.5 - bin: - sane: ./src/cli.js - checksum: 97716502d456c0d38670a902a4ea943d196dcdf998d1e40532d8f3e24e25d7eddfd4c3579025a1eee8eac09a48dfd05fba61a2156c56704e7feaa450eb249f7c - languageName: node - linkType: hard - -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: ^2.2.0 - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 57fd0acfd0bac382ee87cd52cd0aaa5af086a7dc8d60379dfe65fea491fb2489b6016400813930ecd61fd0952dae75c115287a1b16c234b1550887117744dfaf - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.3.0": +"semver@npm:^6.0.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -6224,25 +4783,23 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.3.2, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 languageName: node linkType: hard -"semver@npm:^7.2.1": - version: 7.3.5 - resolution: "semver@npm:7.3.5" +"semver@npm:^7.0.0, semver@npm:^7.3.7": + version: 7.3.8 + resolution: "semver@npm:7.3.8" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 + checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 languageName: node linkType: hard @@ -6257,12 +4814,12 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:5.0.1": - version: 5.0.1 - resolution: "serialize-javascript@npm:5.0.1" - dependencies: - randombytes: ^2.1.0 - checksum: bb45a427690c3d2711e28499de0fbf25036af1e23c63c6a9237ed0aa572fd0941fcdefe50a2dccf26d9df8c8b86ae38659e19d8ba7afd3fbc1f1c7539a2a48d2 +"semver@npm:^7.5.4, semver@npm:^7.7.2": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 0c580f17e88e2b45806dc5cf3d824f719c946999d3554bf30307c2b68b3300ab3c8bfcd84d8f489b93b4cbb5362f5fc8de4d2858954f18d834253c4450fc9f6b languageName: node linkType: hard @@ -6280,27 +4837,6 @@ __metadata: languageName: node linkType: hard -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: ^1.0.0 - checksum: 9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -6310,13 +4846,6 @@ __metadata: languageName: node linkType: hard -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 - languageName: node - linkType: hard - "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" @@ -6324,24 +4853,17 @@ __metadata: languageName: node linkType: hard -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 8d73a5e9861f5e5f1068e2cfc39bc0002400fe58558ab5e5fa75630d2c3adf44ca1fac81957609c8320d5533e093802fcafc72904bf1a32b95de3c19a0b1c0d4 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 languageName: node linkType: hard -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 languageName: node linkType: hard @@ -6352,17 +4874,6 @@ __metadata: languageName: node linkType: hard -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 - languageName: node - linkType: hard - "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -6370,42 +4881,6 @@ __metadata: languageName: node linkType: hard -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "socks-proxy-agent@npm:7.0.0" @@ -6427,143 +4902,39 @@ __metadata: languageName: node linkType: hard -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 languageName: node linkType: hard -"source-map-support@npm:^0.5.6": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" dependencies: - buffer-from: ^1.0.0 - source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + minipass: ^3.1.1 + checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb languageName: node linkType: hard -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 languageName: node linkType: hard -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: ^3.0.0 - spdx-license-ids: ^3.0.0 - checksum: 77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: ^2.1.0 - spdx-license-ids: ^3.0.0 - checksum: a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.7 - resolution: "spdx-license-ids@npm:3.0.7" - checksum: b52a88aebc19b4c69049349939e1948014c4d10f52a11870431fc1cc6551de411d19e4570f5f1df2d8b7089bec921df9017a3d5199ae2468b2b432171945278e - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 19d79aec211f09b99ec3099b5b2ae2f6e9cdefe50bc91ac4c69144b6d3928a640bb6ae5b3def70c2e85a2c3d9f5ec2719921e3a59d3ca3ef4b2fd1a4656a0df3 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.2, stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: 76b69da0f5b48a34a0f93c98ee2a96544d2c4ca2557f7eef5ddb961d3bdc33870b46f498a84a7c4f4ffb781df639840e7ebf6639164ed4da5e1aeb659615b9c7 - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"streamsearch@npm:^1.1.0": - version: 1.1.0 - resolution: "streamsearch@npm:1.1.0" - checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 - languageName: node - linkType: hard - -"string-length@npm:^4.0.1": +"string-length@npm:^4.0.2": version: 4.0.2 resolution: "string-length@npm:4.0.2" dependencies: @@ -6573,13 +4944,14 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.2 || 2": - version: 2.1.1 - resolution: "string-width@npm:2.1.1" +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.2 + resolution: "string-width@npm:4.2.2" dependencies: - is-fullwidth-code-point: ^2.0.0 - strip-ansi: ^4.0.0 - checksum: d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.0 + checksum: 343e089b0e66e0f72aab4ad1d9b6f2c9cc5255844b0c83fd9b53f2a3b3fd0421bdd6cb05be96a73117eb012db0887a6c1d64ca95aaa50c518e48980483fea0ab languageName: node linkType: hard @@ -6594,34 +4966,14 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.2 - resolution: "string-width@npm:4.2.2" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.0 - checksum: 343e089b0e66e0f72aab4ad1d9b6f2c9cc5255844b0c83fd9b53f2a3b3fd0421bdd6cb05be96a73117eb012db0887a6c1d64ca95aaa50c518e48980483fea0ab - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 languageName: node linkType: hard @@ -6634,12 +4986,12 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-ansi@npm:4.0.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" dependencies: - ansi-regex: ^3.0.0 - checksum: d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c languageName: node linkType: hard @@ -6652,19 +5004,12 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" +"strip-ansi@npm:^7.0.1": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + ansi-regex: ^6.2.2 + checksum: 96da3bc6d73cfba1218625a3d66cf7d37a69bf0920d8735b28f9eeaafcdb6c1fe8440e1ae9eb1ba0ca355dbe8702da872e105e2e939fa93e7851b3cb5dd7d316 languageName: node linkType: hard @@ -6675,13 +5020,6 @@ __metadata: languageName: node linkType: hard -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 40bc8ddd7e072f8ba0c2d6d05267b4e0a4800898c3435b5fb5f5a21e6e47dfaff18467e7aa0d1844bb5d6274c3097246595841fbfeb317e541974ee992cac506 - languageName: node - linkType: hard - "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" @@ -6696,22 +5034,13 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard -"supports-color@npm:8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -6721,7 +5050,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": +"supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -6730,42 +5059,21 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" dependencies: has-flag: ^4.0.0 - supports-color: ^7.0.0 - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 languageName: node linkType: hard -"table@npm:^6.0.4": - version: 6.6.0 - resolution: "table@npm:6.6.0" +"synckit@npm:^0.11.8": + version: 0.11.13 + resolution: "synckit@npm:0.11.13" dependencies: - ajv: ^8.0.1 - lodash.clonedeep: ^4.5.0 - lodash.flatten: ^4.4.0 - lodash.truncate: ^4.4.2 - slice-ansi: ^4.0.0 - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - checksum: 5a757517a1b3787711c7088837822a6302c89343c5c224b318f1c25351041e798dc90dad9fde2d8b5dfefe13ee25d8ea45235c79934dd2290d1452304993dffb + "@pkgr/core": ^0.3.6 + checksum: ec989ed45f3df2e7eb3141f00060669fbc6cac5649846d0579f336cee4ab047c8bac65baa75b4df991e1c1bd224675b10efbe69af3596ead5180ec81a6d4ec06 languageName: node linkType: hard @@ -6783,45 +5091,14 @@ __metadata: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" +"test-exclude@npm:^7.0.1": + version: 7.0.2 + resolution: "test-exclude@npm:7.0.2" dependencies: "@istanbuljs/schema": ^0.1.2 - glob: ^7.1.4 - minimatch: ^3.0.4 - checksum: 3b34a3d77165a2cb82b34014b3aba93b1c4637a5011807557dc2f3da826c59975a5ccad765721c4648b39817e3472789f9b0fa98fc854c5c1c7a1e632aacdc28 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - -"throat@npm:^5.0.0": - version: 5.0.0 - resolution: "throat@npm:5.0.0" - checksum: 031ff7f4431618036c1dedd99c8aa82f5c33077320a8358ed829e84b320783781d1869fe58e8f76e948306803de966f5f7573766a437562c9f5c033297ad2fe2 - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + glob: ^10.4.1 + minimatch: ^10.2.2 + checksum: 35fd6304435c31e6b3dd4f5ad16de521eef46d433c4d2f2ef81a981b002a99db70b12d372f042df48a38f9bd356eb2a3d5523d75ec2121671e400f5468e07bd1 languageName: node linkType: hard @@ -6832,76 +5109,10 @@ __metadata: languageName: node linkType: hard -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - -"tough-cookie@npm:^4.0.0": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a - languageName: node - linkType: hard - -"tr46@npm:^2.1.0": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" - dependencies: - punycode: ^2.1.1 - checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.9.0": - version: 3.9.0 - resolution: "tsconfig-paths@npm:3.9.0" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.0 - strip-bom: ^3.0.0 - checksum: 243b3b098c76a4ca90ea0431683f3755a4ff175c6123bcba5f7b4bd80fe2ef8fa9bdc8f4d525148a1e71ade7f3e037e7c0313ae177fd12398ab68f05c2c7f25d +"tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a languageName: node linkType: hard @@ -6914,15 +5125,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -6930,13 +5132,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" @@ -6944,57 +5139,12 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f - languageName: node - linkType: hard - -"type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" +"undici@npm:5.28.2": + version: 5.28.2 + resolution: "undici@npm:5.28.2" dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.0": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: ^1.1.1 - has-bigints: ^1.0.1 - has-symbols: ^1.0.2 - which-boxed-primitive: ^1.0.2 - checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba - languageName: node - linkType: hard - -"undici@npm:5.9.1": - version: 5.9.1 - resolution: "undici@npm:5.9.1" - checksum: 8acabbac8e18943ff822574f831d03d65e697e66ef486a679763f7778f37b28980caf7097ededf4017b58c099809e8efd8509a6688f60638360fb86ef47a59df - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba + "@fastify/busboy": ^2.0.0 + checksum: f9e9335803f962fff07c3c11c6d50bbc76248bacf97035047155adb29c3622a65bd6bff23a22218189740133149d22e63b68131d8c40e78ac6cb4b6d686a6dfa languageName: node linkType: hard @@ -7016,34 +5166,93 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 +"unrs-resolver@npm:^1.12.1": + version: 1.12.2 + resolution: "unrs-resolver@npm:1.12.2" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": 1.12.2 + "@unrs/resolver-binding-android-arm64": 1.12.2 + "@unrs/resolver-binding-darwin-arm64": 1.12.2 + "@unrs/resolver-binding-darwin-x64": 1.12.2 + "@unrs/resolver-binding-freebsd-x64": 1.12.2 + "@unrs/resolver-binding-linux-arm-gnueabihf": 1.12.2 + "@unrs/resolver-binding-linux-arm-musleabihf": 1.12.2 + "@unrs/resolver-binding-linux-arm64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-arm64-musl": 1.12.2 + "@unrs/resolver-binding-linux-loong64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-loong64-musl": 1.12.2 + "@unrs/resolver-binding-linux-ppc64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-riscv64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-riscv64-musl": 1.12.2 + "@unrs/resolver-binding-linux-s390x-gnu": 1.12.2 + "@unrs/resolver-binding-linux-x64-gnu": 1.12.2 + "@unrs/resolver-binding-linux-x64-musl": 1.12.2 + "@unrs/resolver-binding-openharmony-arm64": 1.12.2 + "@unrs/resolver-binding-wasm32-wasi": 1.12.2 + "@unrs/resolver-binding-win32-arm64-msvc": 1.12.2 + "@unrs/resolver-binding-win32-ia32-msvc": 1.12.2 + "@unrs/resolver-binding-win32-x64-msvc": 1.12.2 + napi-postinstall: ^0.3.4 + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-loong64-gnu": + optional: true + "@unrs/resolver-binding-linux-loong64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-openharmony-arm64": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: fb01fa1262533f358fa23119a66d742f71d1ac0efb5395f8c54df00843e1ee05e70e87765f27ead6e0d25bb6d9c9b233b1c30ccf33716de1e9edeaee6e020914 languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.9": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" +"update-browserslist-db@npm:^1.3.3": + version: 1.3.3 + resolution: "update-browserslist-db@npm:1.3.3" dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 + escalade: ^3.2.0 + picocolors: ^1.1.1 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + update-browserslist-db: cli.js + checksum: 848a37e8402d454f1942e7c43a0811880ba7c40b74e3603e173c85315924d5fdb7ee057d4d75c2363dcb272a32bbe41428ebc78393711f59e0ebe567e397e0c0 languageName: node linkType: hard @@ -7056,23 +5265,6 @@ __metadata: languageName: node linkType: hard -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - "urlpattern-polyfill@npm:^4.0.3": version: 4.0.3 resolution: "urlpattern-polyfill@npm:4.0.3" @@ -7080,13 +5272,6 @@ __metadata: languageName: node linkType: hard -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -7094,40 +5279,14 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.3.0": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - -"v8-compile-cache@npm:^2.0.3": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: adb0a271eaa2297f2f4c536acbfee872d0dd26ec2d76f66921aa7fc437319132773483344207bdbeee169225f4739016d8d2dbf0553913a52bb34da6d0334f8e - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^7.0.0": - version: 7.1.2 - resolution: "v8-to-istanbul@npm:7.1.2" +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" dependencies: + "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - source-map: ^0.7.3 - checksum: e52b48764f55aed62ff87f2b5f710c874f992cd1313eac8f438bf65aeeb0689153d85bb76e39514fd90ba3521d6ebea929a8ae1339b6d7b0cf18fb0ed13d8b40 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: ^3.0.0 - spdx-expression-parse: ^3.0.0 - checksum: 35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad + convert-source-map: ^2.0.0 + checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae languageName: node linkType: hard @@ -7140,95 +5299,7 @@ __metadata: languageName: node linkType: hard -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" - dependencies: - xml-name-validator: ^3.0.0 - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b - languageName: node - linkType: hard - -"walker@npm:^1.0.7, walker@npm:~1.0.5": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: 1.0.12 - checksum: ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 - languageName: node - linkType: hard - -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb - languageName: node - linkType: hard - -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: 0.4.24 - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.7.0 - resolution: "whatwg-url@npm:8.7.0" - dependencies: - lodash: ^4.7.0 - tr46: ^2.1.0 - webidl-conversions: ^6.1.0 - checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c - languageName: node - linkType: hard - -"which@npm:2.0.2, which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -7239,26 +5310,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: ^2.0.0 - bin: - which: ./bin/which - checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 - languageName: node - linkType: hard - -"wide-align@npm:1.1.3": - version: 1.1.3 - resolution: "wide-align@npm:1.1.3" - dependencies: - string-width: ^1.0.2 || 2 - checksum: d09c8012652a9e6cab3e82338d1874a4d7db2ad1bd19ab43eb744acf0b9b5632ec406bdbbbb970a8f4771a7d5ef49824d038ba70aa884e7723f5b090ab87134d - languageName: node - linkType: hard - "wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" @@ -7268,39 +5319,32 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"workerpool@npm:6.1.0": - version: 6.1.0 - resolution: "workerpool@npm:6.1.0" - checksum: 519d03a4d008fd95ff9e1a583afe537e6a0eecd8250452044e390db3e1dc4ce91616a8ee6c4bba9a2fda38440c2666664c31b50b5a9fd05cc43c739df54d5781 +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb languageName: node linkType: hard -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" dependencies: ansi-styles: ^4.0.0 string-width: ^4.1.0 strip-ansi: ^6.0.0 - checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b languageName: node linkType: hard -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 languageName: node linkType: hard @@ -7311,30 +5355,13 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" dependencies: imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 - languageName: node - linkType: hard - -"ws@npm:^7.4.6": - version: 7.5.9 - resolution: "ws@npm:7.5.9" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + signal-exit: ^4.0.1 + checksum: 8dbb0e2512c2f72ccc20ccedab9986c7d02d04039ed6e8780c987dc4940b793339c50172a1008eed7747001bfacc0ca47562668a069a7506c46c77d7ba3926a9 languageName: node linkType: hard @@ -7353,27 +5380,6 @@ __metadata: languageName: node linkType: hard -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 - languageName: node - linkType: hard - -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -7381,6 +5387,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -7388,73 +5401,25 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.2.4": - version: 20.2.4 - resolution: "yargs-parser@npm:20.2.4" - checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 - languageName: node - linkType: hard - -"yargs-parser@npm:^18.1.2": - version: 18.1.3 - resolution: "yargs-parser@npm:18.1.3" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2": - version: 20.2.7 - resolution: "yargs-parser@npm:20.2.7" - checksum: ec0ea9e1b5699977380583f5ab1c0e2c6fc5f1ed374eb3053c458df00c543effba53628ad3297f3ccc769660518d5e376fd1cfb298b8e37077421aca8d75ae89 +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c languageName: node linkType: hard -"yargs-unparser@npm:2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" +"yargs@npm:^17.7.2": + version: 17.7.3 + resolution: "yargs@npm:17.7.3" dependencies: - camelcase: ^6.0.0 - decamelize: ^4.0.0 - flat: ^5.0.2 - is-plain-obj: ^2.1.0 - checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 - languageName: node - linkType: hard - -"yargs@npm:16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 + cliui: ^8.0.1 escalade: ^3.1.1 get-caller-file: ^2.0.5 require-directory: ^2.1.1 - string-width: ^4.2.0 + string-width: ^4.2.3 y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - -"yargs@npm:^15.4.1": - version: 15.4.1 - resolution: "yargs@npm:15.4.1" - dependencies: - cliui: ^6.0.0 - decamelize: ^1.2.0 - find-up: ^4.1.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^4.2.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^18.1.2 - checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 + yargs-parser: ^21.1.1 + checksum: 16fb2d4866f04aaf74f206d3df843e7a80b58a26fda47af29be51b27564c19966b1674c3acf679a26fdfa8a7e4b1b442a63cdab5db8cd3c57db7912f4473e343 languageName: node linkType: hard