From 7945db121647e9746708e348cf1edcda41dd9821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 00:48:18 +0100 Subject: [PATCH 01/16] Initial commit --- astro.config.mjs | 89 - astro.config.ts | 101 ++ package-lock.json | 1466 ++++++++++++++++- package.json | 10 +- plugins/remark-autolink-iso.ts | 60 + src/content/config.ts | 5 +- src/content/docs/{about.mdx => docs/about.md} | 17 +- src/content/docs/{ => docs}/coc.mdx | 2 +- src/content/docs/docs/conventions.md | 78 + src/content/docs/index.mdx | 28 +- .../{_core-action.mdx => _core-action.md} | 0 .../{_core-endpoint.mdx => _core-endpoint.md} | 0 src/content/docs/specs/error-codes.md | 100 ++ src/content/docs/specs/extensions/index.md | 18 + .../docs/specs/extensions/link-method.md | 51 + src/content/docs/specs/headers.md | 24 + src/content/docs/specs/index.md | 38 + src/content/docs/specs/index.mdx | 37 - .../specs/operations/add-subscriptions.mdx | 146 ++ src/content/docs/specs/operations/index.mdx | 124 ++ src/content/docs/specs/pagination.md | 76 + src/content/docs/specs/profiles/index.md | 22 + .../docs/specs/profiles/subscription.md | 70 + .../docs/specs/subscriptions/add-new.mdx | 243 --- .../specs/subscriptions/add-subscription.mdx | 98 ++ .../subscriptions/delete-subscription.mdx | 65 + .../docs/specs/subscriptions/delete.mdx | 82 - .../docs/specs/subscriptions/get-all.mdx | 294 ---- .../docs/specs/subscriptions/get-single.mdx | 126 -- .../specs/subscriptions/get-subscription.mdx | 90 + .../docs/specs/subscriptions/index.mdx | 56 +- .../subscriptions/list-subscriptions.mdx | 112 ++ .../docs/specs/subscriptions/status.mdx | 137 -- .../docs/specs/subscriptions/update.mdx | 127 -- tsconfig.json | 15 +- 35 files changed, 2790 insertions(+), 1217 deletions(-) delete mode 100644 astro.config.mjs create mode 100644 astro.config.ts create mode 100644 plugins/remark-autolink-iso.ts rename src/content/docs/{about.mdx => docs/about.md} (50%) rename src/content/docs/{ => docs}/coc.mdx (68%) create mode 100644 src/content/docs/docs/conventions.md rename src/content/docs/partials/{_core-action.mdx => _core-action.md} (100%) rename src/content/docs/partials/{_core-endpoint.mdx => _core-endpoint.md} (100%) create mode 100644 src/content/docs/specs/error-codes.md create mode 100644 src/content/docs/specs/extensions/index.md create mode 100644 src/content/docs/specs/extensions/link-method.md create mode 100644 src/content/docs/specs/headers.md create mode 100644 src/content/docs/specs/index.md delete mode 100644 src/content/docs/specs/index.mdx create mode 100644 src/content/docs/specs/operations/add-subscriptions.mdx create mode 100644 src/content/docs/specs/operations/index.mdx create mode 100644 src/content/docs/specs/pagination.md create mode 100644 src/content/docs/specs/profiles/index.md create mode 100644 src/content/docs/specs/profiles/subscription.md delete mode 100644 src/content/docs/specs/subscriptions/add-new.mdx create mode 100644 src/content/docs/specs/subscriptions/add-subscription.mdx create mode 100644 src/content/docs/specs/subscriptions/delete-subscription.mdx delete mode 100644 src/content/docs/specs/subscriptions/delete.mdx delete mode 100644 src/content/docs/specs/subscriptions/get-all.mdx delete mode 100644 src/content/docs/specs/subscriptions/get-single.mdx create mode 100644 src/content/docs/specs/subscriptions/get-subscription.mdx create mode 100644 src/content/docs/specs/subscriptions/list-subscriptions.mdx delete mode 100644 src/content/docs/specs/subscriptions/status.mdx delete mode 100644 src/content/docs/specs/subscriptions/update.mdx diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index d82197eb..00000000 --- a/astro.config.mjs +++ /dev/null @@ -1,89 +0,0 @@ -import { defineConfig } from "astro/config"; -import starlight from "@astrojs/starlight"; -import AutoImport from "astro-auto-import"; -import { - remarkDefinitionList, - defListHastHandlers, -} from "remark-definition-list"; -import starlightOpenAPI, { openAPISidebarGroups } from 'starlight-openapi' - -// https://astro.build/config -export default defineConfig({ - integrations: [ - starlight({ - title: "Open Podcast API", - favicon: "favicon.ico", - social: [ - { - icon: "github", - label: "GitHub", - href: "https://github.com/OpenPodcastApi/api-specs", - }, - ], - plugins: [ - starlightOpenAPI([ - { - base: "/explorer", - label: "API explorer", - schema: "./schema.yml", - } - ]) - ], - sidebar: [ - { - label: "Project overview", - link: "about", - }, - { - label: "Code of conduct", - link: "coc", - }, - { - label: "Specifications", - items: [ - { - label: "Introduction", - link: "specs", - }, - { - label: "Subscriptions", - collapsed: true, - autogenerate: { - directory: "specs/subscriptions", - }, - }, - ], - }, - ...openAPISidebarGroups, - ], - }), - AutoImport({ - imports: [ - { - "@astrojs/starlight/components": [ - "Card", - "CardGrid", - "LinkCard", - "Tabs", - "TabItem", - ], - }, - "src/components/SponsorCallout.astro" - ], - }), - ], - // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp - image: { - service: { - entrypoint: "astro/assets/services/sharp", - }, - }, - markdown: { - remarkPlugins: [remarkDefinitionList], - remarkRehype: { - handlers: { - ...defListHastHandlers, - }, - }, - }, -}); diff --git a/astro.config.ts b/astro.config.ts new file mode 100644 index 00000000..828ccefd --- /dev/null +++ b/astro.config.ts @@ -0,0 +1,101 @@ +import { defineConfig } from "astro/config"; +import starlight from "@astrojs/starlight"; +import { + defListHastHandlers, + remarkDefinitionList, +} from "remark-definition-list"; +import starlightOpenAPI, { openAPISidebarGroups } from "starlight-openapi"; +import starlightSidebarTopics from "starlight-sidebar-topics"; +import mermaid from "astro-mermaid"; +import { remarkAutoLinkISO } from "./plugins/remark-autolink-iso"; + +export default defineConfig({ + integrations: [ + mermaid(), + starlight({ + title: "Open Podcast API", + favicon: "favicon.ico", + social: [ + { + icon: "github", + label: "GitHub", + href: "https://github.com/OpenPodcastApi/api-specs", + }, + ], + plugins: [ + starlightOpenAPI([ + { + base: "/explorer", + label: "API explorer", + schema: "./schema.yml", + }, + ]), + starlightSidebarTopics([ + { + label: "Project overview", + link: "/docs/about", + icon: "open-book", + items: [{ + label: "Overview", + collapsed: false, + items: ["docs/about", "docs/coc", "docs/conventions"], + }], + }, + { + label: "Specifications", + link: "/specs", + icon: "document", + items: [ + { + label: "Overview", + collapsed: false, + items: [ + "specs", + "specs/headers", + "specs/pagination", + "specs/error-codes", + ], + }, + { + label: "Subscriptions", + collapsed: true, + autogenerate: { directory: "specs/subscriptions" }, + }, + { + label: "Operations", + collapsed: true, + autogenerate: { directory: "specs/operations" }, + }, + { + label: "Extensions", + collapsed: true, + autogenerate: { directory: "specs/extensions" }, + }, + { + label: "Profiles", + collapsed: true, + autogenerate: { directory: "specs/profiles" }, + }, + ], + }, + { + label: "Reference", + link: "/explorer", + icon: "laptop", + items: [ + ...openAPISidebarGroups, + ], + }, + ]), + ], + }), + ], + markdown: { + remarkPlugins: [remarkDefinitionList, remarkAutoLinkISO], + remarkRehype: { + handlers: { + ...defListHastHandlers, + }, + }, + }, +}); diff --git a/package-lock.json b/package-lock.json index 08bf75cf..1031c4d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,41 @@ "dependencies": { "@astrojs/starlight": "^0.35.2", "astro": "^5.13.3", - "astro-auto-import": "^0.4.4", + "astro-mermaid": "^1.0.4", + "mermaid": "^11.10.1", + "rehype-mermaid": "^3.0.0", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", - "starlight-openapi": "^0.20.0" + "starlight-openapi": "^0.20.0", + "starlight-sidebar-topics": "^0.6.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/install-pkg/node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/@apidevtools/json-schema-ref-parser": { @@ -235,6 +266,12 @@ "node": ">=6.9.0" } }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", + "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==", + "license": "MIT" + }, "node_modules/@capsizecss/unpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", @@ -245,6 +282,45 @@ "fontkit": "^2.0.2" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "license": "Apache-2.0" + }, "node_modules/@ctrl/tinycolor": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", @@ -679,6 +755,15 @@ "@expressive-code/core": "^0.41.2" } }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/momoa": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", @@ -687,6 +772,28 @@ "node": ">=10.10.0" } }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", @@ -1126,6 +1233,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", + "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, "node_modules/@oslojs/encoding": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", @@ -1577,6 +1693,259 @@ "tslib": "^2.8.0" } }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -1606,6 +1975,12 @@ "@types/node": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -1667,6 +2042,13 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -1934,21 +2316,6 @@ "sharp": "^0.33.3" } }, - "node_modules/astro-auto-import": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/astro-auto-import/-/astro-auto-import-0.4.4.tgz", - "integrity": "sha512-tiYe1hp+VusdiyaD3INgZgbvXEPamDFiURnQR5Niz+E9fWa6IHYjJ99TwGlHh/evfaXE/U/86jp9MRKWTuJU1A==", - "dependencies": { - "@types/node": "^18.0.0", - "acorn": "^8.8.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta" - } - }, "node_modules/astro-expressive-code": { "version": "0.41.2", "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.2.tgz", @@ -1960,6 +2327,20 @@ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" } }, + "node_modules/astro-mermaid": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/astro-mermaid/-/astro-mermaid-1.0.4.tgz", + "integrity": "sha512-2M4bVjqLpDB2EZ4EfD6Utzs7VEEORmlt5hNZcMK54IcKWzflohKvowCzg79RHoAdu30W8a4aECAExH8mF7wG4w==", + "license": "MIT", + "dependencies": { + "mdast-util-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "astro": "^4.0.0 || ^5.0.0", + "mermaid": "^10.0.0 || ^11.0.0" + } + }, "node_modules/astro/node_modules/@astrojs/internal-helpers": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", @@ -2219,6 +2600,32 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -2329,11 +2736,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" + }, "node_modules/cookie": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", @@ -2347,6 +2769,15 @@ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cross-fetch": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", @@ -2378,29 +2809,534 @@ } ] }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/cssesc": { + "node_modules/d3-zoom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, "engines": { - "node": ">=4" + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", + "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -2434,6 +3370,15 @@ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2513,6 +3458,15 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", @@ -2722,6 +3676,12 @@ "@expressive-code/plugin-text-markers": "^0.41.2" } }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "license": "MIT" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2822,6 +3782,18 @@ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/h3": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.3.tgz", @@ -2838,6 +3810,12 @@ "uncrypto": "^0.1.3" } }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, "node_modules/hast-util-definition-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hast-util-definition-list/-/hast-util-definition-list-2.1.0.tgz", @@ -2882,6 +3860,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", @@ -2899,6 +3892,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -3280,6 +4289,18 @@ "@babel/runtime": "^7.23.2" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -3294,6 +4315,15 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -3440,6 +4470,36 @@ "node": ">=0.10.0" } }, + "node_modules/katex": { + "version": "0.16.22", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", + "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -3456,6 +4516,34 @@ "node": ">= 8" } }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/langium": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", + "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3464,6 +4552,29 @@ "node": ">=6" } }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -3516,6 +4627,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/marked": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.0.tgz", + "integrity": "sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/mdast-util-definition-list": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definition-list/-/mdast-util-definition-list-2.0.0.tgz", @@ -3840,6 +4963,55 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==" }, + "node_modules/mermaid": { + "version": "11.10.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.10.1.tgz", + "integrity": "sha512-0PdeADVWURz7VMAX0+MiMcgfxFKY4aweSGsjgFihe3XlMKNqmai/cugMrqTd3WNHM93V+K+AZL6Wu6tB5HmxRw==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.0.4", + "@iconify/utils": "^2.1.33", + "@mermaid-js/parser": "^0.6.2", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.11", + "dayjs": "^1.11.13", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.21", + "marked": "^16.0.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid-isomorphic": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.0.4.tgz", + "integrity": "sha512-XQTy7H1XwHK3DPEHf+ZNWiqUEd9BwX3Xws38R9Fj2gx718srmgjlZoUzHr+Tca+O+dqJOJsAJaKzCoP65QDfDg==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "mermaid": "^11.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -4554,6 +5726,44 @@ } ] }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -4804,6 +6014,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4820,6 +6042,33 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -4920,6 +6169,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/radix3": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", @@ -5054,6 +6319,34 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-mermaid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", + "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "mermaid-isomorphic": "^3.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^11.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "playwright": "1" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": true + } + } + }, "node_modules/rehype-minify-whitespace": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", @@ -5307,6 +6600,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, "node_modules/rollup": { "version": "4.43.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", @@ -5350,6 +6649,30 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -5875,6 +7198,21 @@ "astro": ">=5.5.0" } }, + "node_modules/starlight-sidebar-topics": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/starlight-sidebar-topics/-/starlight-sidebar-topics-0.6.0.tgz", + "integrity": "sha512-ysmOR7zaHYKtk18/mpW4MbEMDioR/ZBsisu9bdQrq0v9BlHWpW7gAdWlqFWO9zdv1P7l0Mo1WKd0wJ0UtqOVEQ==", + "license": "MIT", + "dependencies": { + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@astrojs/starlight": ">=0.32.0" + } + }, "node_modules/stream-replace-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", @@ -5939,6 +7277,12 @@ "inline-style-parser": "0.2.4" } }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -6359,6 +7703,19 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -6488,6 +7845,55 @@ } } }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "license": "MIT" + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", diff --git a/package.json b/package.json index 20a73c62..82178d3a 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,16 @@ "build": "astro build", "preview": "astro preview", "astro": "astro" - }, "dependencies": { + }, + "dependencies": { "@astrojs/starlight": "^0.35.2", "astro": "^5.13.3", - "astro-auto-import": "^0.4.4", + "astro-mermaid": "^1.0.4", + "mermaid": "^11.10.1", + "rehype-mermaid": "^3.0.0", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", - "starlight-openapi": "^0.20.0" + "starlight-openapi": "^0.20.0", + "starlight-sidebar-topics": "^0.6.0" } } diff --git a/plugins/remark-autolink-iso.ts b/plugins/remark-autolink-iso.ts new file mode 100644 index 00000000..dd8f26c8 --- /dev/null +++ b/plugins/remark-autolink-iso.ts @@ -0,0 +1,60 @@ +import type { Link, PhrasingContent, Root } from "mdast"; +import { CONTINUE, SKIP, visit } from "unist-util-visit"; + +const TARGET_NODE_TYPES = ["text"]; +const TARGET_STRING_REGEX = /ISO\s8601/g; +const LINK_URL = "https://www.iso.org/iso-8601-date-and-time-format.html"; + +export function remarkAutoLinkISO() { + return function (tree: Root) { + visit(tree, TARGET_NODE_TYPES, (node, index, parent) => { + console.log(node); + if (node.type !== "text" || !parent || typeof index !== "number") { + return CONTINUE; + } + + const value = node.value; + const matches = [...value.matchAll(TARGET_STRING_REGEX)]; + if (matches.length === 0) return CONTINUE; + + const newNodes: PhrasingContent[] = []; + let lastIndex = 0; + + for (const match of matches) { + const matchStart = match.index!; + const matchEnd = matchStart + match[0].length; + + if (matchStart > lastIndex) { + newNodes.push({ + type: "text", + value: value.slice(lastIndex, matchStart), + }); + } + + newNodes.push({ + type: "link", + url: LINK_URL, + children: [ + { + type: "text", + value: match[0], + }, + ], + } as Link); + + lastIndex = matchEnd; + } + + if (lastIndex < value.length) { + newNodes.push({ + type: "text", + value: value.slice(lastIndex), + }); + } + + parent.children.splice(index, 1, ...newNodes); + + return SKIP; + }); + }; +} diff --git a/src/content/config.ts b/src/content/config.ts index 9df91b60..d8d945fd 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -1,7 +1,6 @@ -import { defineCollection } from 'astro:content'; -import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; +import { defineCollection } from "astro:content"; +import { docsSchema } from "@astrojs/starlight/schema"; export const collections = { docs: defineCollection({ schema: docsSchema() }), - i18n: defineCollection({ type: 'data', schema: i18nSchema() }), }; diff --git a/src/content/docs/about.mdx b/src/content/docs/docs/about.md similarity index 50% rename from src/content/docs/about.mdx rename to src/content/docs/docs/about.md index 953d134d..3b7395f5 100644 --- a/src/content/docs/about.mdx +++ b/src/content/docs/docs/about.md @@ -5,7 +5,7 @@ sidebar: order: 1 --- -The Open Podcast API project is inspired by and builds upon the [gPodder API](https://gpoddernet.readthedocs.io/en/latest/api/index.html). In the summer of 2019, the creator of gPodder announced they were stepping down and the community took over.[^gPoddermaintainer] Unfortunately, about a year later the project entered 'basic maintenance mode' due to shifting priorities of key contributors. The limited availability of volunteers combined with gPodder.net's popularity among end-users meant that people started to see server errors while synchronizing or creating an account.[^APforumGpodderIssues] [^gPodder50x] Attempts to establish contact and collaborate on improving the situation didn't work out as hoped. Given the situation, AntennaPod contributors started discussing whether gPodder.net support should be removed[^APforumGpodderRemoval] or whether it could be forked. They concluded that the best solution would be to create a new API spec with a broad range of contributors to allow users to switch servers (avoiding major loads on a single server or project), to provide an opportunity to more easily go beyond the existing gPodder.net API specs, and to enable developers to address some technical issues with the API specs. +The Open Podcast API project is inspired by and builds upon the [gPodder API](https://gpoddernet.readthedocs.io/en/latest/api/index.html). In the summer of 2019, the creator of gPodder announced they were stepping down and the community took over.[^1] Unfortunately, about a year later the project entered 'basic maintenance mode' due to shifting priorities of key contributors. The limited availability of volunteers combined with gPodder.net's popularity among end-users meant that people started to see server errors while synchronizing or creating an account.[^2] [^3] Attempts to establish contact and collaborate on improving the situation didn't work out as hoped. Given the situation, AntennaPod contributors started discussing whether gPodder.net support should be removed[^4] or whether it could be forked. They concluded that the best solution would be to create a new API spec with a broad range of contributors to allow users to switch servers (avoiding major loads on a single server or project), to provide an opportunity to more easily go beyond the existing gPodder.net API specs, and to enable developers to address some technical issues with the API specs. The initial discussions on GitHub led to a meeting in October 2022 with contributors from [AntennaPod](https://github.com/AntennaPod/AntennaPod/), [Funkwhale](https://dev.funkwhale.audio/), [Kasts](https://invent.kde.org/multimedia/kasts), [Podfriend](https://github.com/MartinMouritzen/Podfriend) and the [gPodder app for Nextcloud](https://github.com/thrillfall/nextcloud-gpodder).[^initialAPIdiscussions] A few months later, the first of the recurring meetings took place to start developing the specification. @@ -20,13 +20,14 @@ The Open Podcast API project abides by the [Contributor Covenant Code of Conduct ## Licensing Our project builds on and is itself open source: -* Documentation: Creative Commons Attribution-ShareAlike 4.0 International Public License -* Reference implementations: MIT + +- Documentation: Creative Commons Attribution-ShareAlike 4.0 International Public License +- Reference implementations: MIT ### Specifications -[^gPoddermaintainer]: [Call on the gPodder.net repository for a new maintainer](https://github.com/gpodder/mygpo/blob/81e3d13e00e6c3d6db7ee6a22734041bf6fde128/maintainer-needed.md) -[^APforumGpodderIssues]: [Questions about gPodder.net issues on the AntennaPod forum](https://forum.antennapod.org/t/problem-with-gpodder-net/374) -[^gPodder50x]: [Issue in the gPodder.net repository on 502 errors](https://github.com/gpodder/mygpo/issues/527) -[^APforumGpodderRemoval]: [Suggestion on the AntennaPod forum to remove gPodder.net support](https://forum.antennapod.org/t/should-gpodder-net-be-supported-long-term/396) -[^initialAPIdiscussions]: [Initial discussions on the needs for a new podcast synchronisation API](https://github.com/thrillfall/nextcloud-gpodder/discussions/91) +[^1]: [Call on the gPodder.net repository for a new maintainer](https://github.com/gpodder/mygpo/blob/81e3d13e00e6c3d6db7ee6a22734041bf6fde128/maintainer-needed.md) +[^2]: [Questions about gPodder.net issues on the AntennaPod forum](https://forum.antennapod.org/t/problem-with-gpodder-net/374) +[^3]: [Issue in the gPodder.net repository on 502 errors](https://github.com/gpodder/mygpo/issues/527) +[^4]: [Suggestion on the AntennaPod forum to remove gPodder.net support](https://forum.antennapod.org/t/should-gpodder-net-be-supported-long-term/396) +[^5]: [Initial discussions on the needs for a new podcast synchronisation API](https://github.com/thrillfall/nextcloud-gpodder/discussions/91) diff --git a/src/content/docs/coc.mdx b/src/content/docs/docs/coc.mdx similarity index 68% rename from src/content/docs/coc.mdx rename to src/content/docs/docs/coc.mdx index 0be98bcd..7ff7892d 100644 --- a/src/content/docs/coc.mdx +++ b/src/content/docs/docs/coc.mdx @@ -3,6 +3,6 @@ title: Code of conduct description: Read this carefully before interacting with the project. --- -import CoC from "../../../CODE_OF_CONDUCT.md"; +import CoC from "../../../../CODE_OF_CONDUCT.md"; diff --git a/src/content/docs/docs/conventions.md b/src/content/docs/docs/conventions.md new file mode 100644 index 00000000..c3673a7a --- /dev/null +++ b/src/content/docs/docs/conventions.md @@ -0,0 +1,78 @@ +--- +title: Conventions +description: This document outlines the design conventions and constraints that guide all specifications. +--- + +:::note +All specifications are currently 'in progress'. +Breaking changes can occur as we implement specifications and address issues. +::: + +This document outlines the design conventions and constraints that guide all specifications. +It exists to ensure a consistent, evolvable API surface and reduce the need for breaking changes in the future. + +Follow these conventions when contributing to the specs or implementing them in clients and servers. + +## Keywords + +The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [BCP 14](https://tools.ietf.org/html/bcp14), [RFC2119](https://www.rfc-editor.org/rfc/rfc2119.html), and [RFC8174](https://www.rfc-editor.org/rfc/rfc8174.html) when, and only when, they appear in all capitals, as shown here. + +## Core and optional functionality + +To ensure the end-user experience is consistent across implementations, the specifications mark endpoints and features as **Core** or **Optional**. + +- **Core**: The feature or endpoint **MUST** be supported by all compliant clients and servers. +- **Optional**: The feature or endpoint is not required. + Clients and servers **MAY** support any combination of these features. + Projects that support optional functionality **SHOULD** clearly document what is implemented. + +## Compatibility principles + +To support long-term stability and avoid major versioning breaks, the specification follows a **"never remove, only add"** philosophy. + +All contributors and implementers **MUST** adhere to the following principles. + +### 1. Consistent member naming + +All member names in attributes, relationships, and metadata **MUST** use `camelCase`. + +This applies to request and response payloads, query parameters, and link names. + +This consistency ensures easier tooling and cognitive alignment across the API surface. + +### 2. Non-breaking changes only + +Once a field, endpoint, behavior, or value is published, it **MUST NOT** be removed or changed in a way that breaks compatibility. + +Instead, features **MAY** be deprecated and replaced by new alternatives. + +Deprecated elements **SHOULD** be clearly marked in documentation, and usage discouraged, but support **MUST** continue indefinitely unless explicitly sunset through a documented deprecation policy. + +### 3. Favor composition over monoliths + +APIs **SHOULD** favor granular, relational resource design over large, monolithic endpoints. + +Data **SHOULD** be decomposed into smaller resources, connected via relationships, `included[]`, and links. + +This allows independent evolution of parts of the data model without requiring large-scale rewrites. + +It also enables clients to fetch only the data they need, improving performance and flexibility. + +## General design rules + +- All endpoints **MUST** comply with [JSON:API 1.1](https://jsonapi.org/format/1.1/), unless stated otherwise. +- All requests and responses **MUST** use the `application/vnd.api+json` media type. +- All APIs **MUST** include a top-level `jsonapi` object with version metadata. +- Implementers **SHOULD** support the use of `profile` to advertise supported profiles and behaviors. +- APIs **SHOULD** expose a `/capabilities` endpoint that allows clients to discover supported spec versions, core features, optional modules, and extensions. + +## Future-proofing + +When designing a new endpoint or field: + +- Ask whether removing or changing it later would break existing clients. +- Prefer optional fields and loose contracts over strict, hardcoded structures. +- Use profile-based design to scope and document behaviors. +- Add metadata (e.g. `meta.status = "deprecated"`) rather than removing structures. +- Document assumptions, fallback behaviors, and extensibility points. + diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index eacedcc7..bd75fad2 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -17,6 +17,8 @@ hero: variant: secondary --- +import { CardGrid, Card, LinkCard } from "@astrojs/starlight/components"; +import SponsorCallout from "@components/SponsorCallout.astro"; import netlifyLogo from "@assets/sponsor-contributor logos/logo-netlify-small-fullcolor-dynamicmode.svg"; The Open Podcast API is an initiative aiming to provide a feature-complete synchronization API specification for podcast (web) apps and user-focused servers. @@ -26,13 +28,14 @@ The Open Podcast API is an initiative aiming to provide a feature-complete synch - Synchronize subscriptions, listening progress, favorites, queues, and more - - Support multiple apps and online services - - Enable users to easily switch between providers without losing any information + - Support multiple apps and online services - Enable users to easily switch + between providers without losing any information - - Write clear and comprehensive documentation for features and behaviors - - Create reliable specifications that are decentralization-ready and easy to implement - - Provide a full [OpenAPI](https://spec.openapis.org/oas/latest) specification + - Write clear and comprehensive documentation for features and behaviors - + Create reliable specifications that are decentralization-ready and easy to + implement - Provide a full [OpenAPI](https://spec.openapis.org/oas/latest) + specification @@ -43,9 +46,18 @@ The Open Podcast API initiative builds on open source and open standards. Contri We invite all projects and individuals to join us in developing these specifications. This ensures that we take all perspectives into account and create a set of interoperable specs. - - - + + + - - diff --git a/src/content/docs/specs/operations/add-subscriptions.mdx b/src/content/docs/specs/operations/add-subscriptions.mdx new file mode 100644 index 00000000..fbebe193 --- /dev/null +++ b/src/content/docs/specs/operations/add-subscriptions.mdx @@ -0,0 +1,146 @@ +--- +title: Bulk add subscriptions +description: Create multiple subscription resource in a single request +sidebar: + order: 2 +--- + +import CoreAction from "@partials/_core-action.md"; + + + +```http +POST /v1/operations +``` + +Creates multiple `subscription` resources. +See the [subscriptions endpoint](/specs/subscriptions) for more information. + +## Request + +Clients **MUST** send an array of `operations`, each specifying: + +- `op`: `"add"` +- `data`: **MUST** contain a single resource object + +### Example + +```http +POST /api/v1/operations HTTP/1.1 +Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" +Accept: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" + +{ + "atomic:operations": [ + { + "op": "add", + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1" + } + } + }, + { + "op": "add", + "data": { + "type": "subscription", + "id": "b80719b3-1485-57c0-9e55-fda2b8f7472b", + "attributes": { + "feedUrl": "https://example.com/rss2" + } + } + } + ] +} +``` + +## Server behavior + +- The server **MUST** attempt to perform each operation independently. +- Operations **MUST** be executed in order. +- The response **MUST** contain a `results` array with a one-to-one mapping of the input operations. +- If any operation fails, the corresponding `results` entry **MUST** be an `error` object. +- The server **MUST** return `200 OK` regardless of partial failures. + +## Success response + +```http +HTTP/1.1 200 OK +Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" "https://openpodcastapi.org/specs/extensions/link-method" + +{ + "jsonapi": { + "version": "1.1", + "ext": [ + "https://jsonapi.org/ext/atomic", + "https://openpodcastapi.org/specs/extensions/link-method" + ], + }, + "atomic:results": [ + { + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353" + } + } + }, + { + "data": { + "type": "subscription", + "id": "b80719b3-1485-57c0-9e55-fda2b8f7472b", + "attributes": { + "feedUrl": "https://example.com/rss2", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/b80719b3-1485-57c0-9e55-fda2b8f7472b" + } + } + } + ] +} +``` + +## Mixed success response + +```http +HTTP/1.1 200 OK +Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" + +{ + "atomic:results": [ + { + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1", + "userSubscribedAt": "2025-08-24T16:00:00Z" + } + } + }, + { + "errors": [ + { + "status": "409", + "title": "Already Subscribed", + "detail": "User is already subscribed to this feed.", + "source": { "pointer": "/atomic:operations/1" }, + "meta": { + "feedUrl": "https://example.com/rss2", + "guid": "b80719b3-1485-57c0-9e55-fda2b8f7472b" + } + } + ] + } + ] +} +``` diff --git a/src/content/docs/specs/operations/index.mdx b/src/content/docs/specs/operations/index.mdx new file mode 100644 index 00000000..9e3ed907 --- /dev/null +++ b/src/content/docs/specs/operations/index.mdx @@ -0,0 +1,124 @@ +--- +title: Operations endpoint +description: The operations endpoint allows clients to perform multiple resource-level operations in a single, ordered request +prev: false +sidebar: + order: 1 +--- + +import CoreEndpoint from "@partials/_core-endpoint.md"; + + + +The operations endpoint allows clients to perform multiple resource-level operations in a single, ordered request. +It follows the [JSON:API Atomic Operations extension](https://jsonapi.org/ext/atomic/) and is intended for use cases where bulk writes or tightly ordered changes are needed. + +```http +POST /v1/operations +``` + +## Request format + +Clients **MUST** send a JSON document with an `atomic:operations` key containing an array of operation objects. +Each operation object **MUST** specify: + +- `op`: the operation type (e.g. `"add"`, `"update"`, `"remove"`) +- `data`: the resource object for the operation + +Each operation **MUST** include a resource object with: + +- `type`: the resource type (e.g. `"subscription"`) +- `id`: the resource identifier, if applicable +- `attributes`: resource attributes as appropriate for the action + +### Headers + +Clients **MUST** set the following headers: + +- `Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic"` +- `Accept: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic"` + +### Example request + +```http +POST /v1/operations HTTP/1.1 +Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" +Accept: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" + +{ + "atomic:operations": [ + { + "op": "add", + "data": { + "type": "subscription", + "id": "b80719b3-1485-57c0-9e55-fda2b8f7472b", + "attributes": { + "feedUrl": "https://example.com/rss2" + } + } + }, + { + "op": "add", + "data": { + "type": "subscription", + "id": "d29519a4-77ee-5e13-bb14-89fc93b993ae", + "attributes": { + "feedUrl": "https://example.com/rss3" + } + } + } + ] +} +``` + +## Server behavior + +- The server **MUST** process operations in order. +- Each operation **MUST** be executed independently. +- The server **MUST** return a `200 OK` response even if one or more operations fail. +- The response **MUST** include an `atomic:results` array with the same number of elements as the input. +- Each `results` element corresponds positionally to its respective request operation. + +### Success response format + +For successful operations, the corresponding item in `atomic:results` **MUST** contain a `data` object. + +### Error response format + +If an operation fails, the corresponding item **MUST** contain an `errors` array, conforming to the [JSON:API error object](/specs/error-codes) format. + +## Response headers + +The server **MUST** set the following headers: + +- `Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic"` + +```http +HTTP/1.1 200 OK +Content-Type: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic" +``` + +## Supported operations + +The operations endpoint may be used for: + +- [Add subscriptions in bulk](/specs/operations/add-subscriptions) + +Clients **MUST** only use operations documented for this server. + +## Errors + +For error semantics and structure, see [error responses](/specs/error-codes). + +Errors may occur for: + +- Validation failures (`422`) +- Resource conflicts (`409`) +- Type mismatches (`409` or `400`) +- Invalid resource identifiers (`400`) + +All errors are returned inline within the `atomic:results` array. + +## See also + +- [JSON:API Atomic Operations extension](https://jsonapi.org/ext/atomic/) diff --git a/src/content/docs/specs/pagination.md b/src/content/docs/specs/pagination.md new file mode 100644 index 00000000..33e82c12 --- /dev/null +++ b/src/content/docs/specs/pagination.md @@ -0,0 +1,76 @@ +--- +title: Pagination +--- + +# Pagination + +Clients **MAY** paginate resource collections using the `page` query parameter object. + +## Request format + +The server **MUST** support pagination using the following query parameters: + +| Parameter | Type | Description | +| -------------- | ---- | ----------------------------------------------------------------------- | +| `page[number]` | int | The page of results to return. Defaults to `1`. | +| `page[size]` | int | The number of results to return per page. Defaults to `25`, max: `100`. | + +Example: + +```http +GET /v1/subscriptions?page[number]=2&page[size]=50 +``` + +## Response format + +The server **MUST** include the following in paginated responses: + +### `links` + +The top-level `links` object **MUST** include pagination links using the following keys: + +| Link key | Description | +| -------- | ---------------------------------------------------------------------- | +| `self` | The current page's full request URI. | +| `first` | The URI for the first page of results. | +| `prev` | The URI for the previous page, or `null` if the current page is first. | +| `next` | The URI for the next page, or `null` if the current page is last. | +| `last` | The URI for the last page of results. | + +Example: + +```json +"links": { + "self": "/v1/subscriptions?page[number]=2&page[size]=25", + "first": "/v1/subscriptions?page[number]=1&page[size]=25", + "prev": "/v1/subscriptions?page[number]=1&page[size]=25", + "next": "/v1/subscriptions?page[number]=3&page[size]=25", + "last": "/v1/subscriptions?page[number]=4&page[size]=25" +} +``` + +### `meta` + +The top-level `meta` object **MAY** include pagination metadata: + +| Field | Type | Description | +| ------- | ---- | ------------------------------------------- | +| `total` | int | Total number of items available (optional). | + +Example: + +```json +"meta": { + "total": 100 +} +``` + +## Server behavior + +- The server **SHOULD** enforce a maximum page size (e.g., 100 items). +- The server **MUST** return an empty `data` array if the page is valid but contains no items. +- The server **MAY** omit the `total` field in `meta` if computing it is expensive. + +## Compatibility + +This pagination model is compliant with the [JSON:API pagination specification](https://jsonapi.org/format/#fetching-pagination). diff --git a/src/content/docs/specs/profiles/index.md b/src/content/docs/specs/profiles/index.md new file mode 100644 index 00000000..1ca35766 --- /dev/null +++ b/src/content/docs/specs/profiles/index.md @@ -0,0 +1,22 @@ +--- +title: JSON:API profiles +description: JSON:API profiles used by the Open Podcast API +next: false +prev: false +sidebar: + label: Overview + order: 1 +--- + +The JSON:API enables developers to define common usage patterns with [profiles](https://jsonapi.org/extensions/#profiles). +These extensions **SHOULD** be specified and linked in each relevant request and response. + +> Profiles... are a way to standardize common usages of the base specification that are simple to implement using only the parts of the specification that are reserved for implementations. + +To simplify development and enhance the discoverability of data in the API, all resources **MUST** be specified as profiles. + +Client and server developers **SHOULD** agree upon and understand each profile. + +## Open Podcast API profiles + +- [Subscriptions](/specs/profiles/subscriptions) diff --git a/src/content/docs/specs/profiles/subscription.md b/src/content/docs/specs/profiles/subscription.md new file mode 100644 index 00000000..5ffac096 --- /dev/null +++ b/src/content/docs/specs/profiles/subscription.md @@ -0,0 +1,70 @@ +--- +title: "Profile: Subscription Resource" +description: A profile for the Open Podcast API subscription resource +prev: false +next: false +sidebar: + label: Subscription + order: 1 +--- + +**Profile URI** +: `https://openpodcastapi.org/specs/profiles/subscription` + +**Applies to** +: Resources of type `subscription`. + +**Version** +1.0.0 + +## Resource Type + +```json +"type": "subscription" +``` + +## Attributes + +| Name | Type | Required | Description | +| ------------------ | ------ | -------- | ---------------------------------------------- | +| `feedUrl` | string | Yes | The original feed URL the user subscribed to | +| `userSubscribedAt` | string | Yes | ISO 8601 timestamp of when the user subscribed | + +## Links + +| Name | Description | Required | Extra | +| ------------- | ----------------------------------------------------- | -------- | ------------------------------------------------ | +| `self` | Canonical link to this subscription resource | Yes | — | +| `unsubscribe` | Link to remove the subscription from the user account | Yes | **MUST** support `DELETE` method (via extension) | + +> Note: This profile uses the [Link Method Extension](/specs/extensions/link-method) + +## Relationships + +None. + +## Extensions + +| Extension Name | URI | Description | +| -------------- | --------------------------------------------------------- | --------------------------------- | +| Link Method | `https://openpodcastapi.org/specs/extensions/link-method` | Supports `method` in link objects | + +## Conventions + +- All field names use `camelCase` +- All timestamps are in UTC ISO 8601 format +- Idempotent resource creation is assumed unless stated otherwise + +## Usage + +Servers that include this resource **SHOULD** declare this profile in the `profile` parameter: + +```http +Content-Type: application/vnd.api+json; profile="https://openpodcastapi.org/specs/profiles/subscription" +``` + +Clients MAY use this profile URI in the `Accept` header to negotiate support. + +```http +Accept: application/vnd.api+json; profile="https://openpodcastapi.org/specs/profiles/subscription" +``` diff --git a/src/content/docs/specs/subscriptions/add-new.mdx b/src/content/docs/specs/subscriptions/add-new.mdx deleted file mode 100644 index 422e8920..00000000 --- a/src/content/docs/specs/subscriptions/add-new.mdx +++ /dev/null @@ -1,243 +0,0 @@ ---- -title: Add a new subscription -description: Add a new subscription -sidebar: - order: 2 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -POST /v1/subscriptions -``` - -This endpoint enables clients to add new subscriptions to the system for the authenticated user. It returns an array of `success` responses for newly added subscriptions, and an array of `failure` responses for subscriptions that couldn't be added. - -| Field | Type | Required? | Description | -| ---------------------- | -------- | --------- | -------------------------------------------------------------------------------------------- | -| `feed_url` | String | Yes | The URL of the podcast RSS feed | -| `guid` | String | Yes | The globally unique ID of the podcast | -| `is_subscribed` | Boolean | Yes | Whether the user is subscribed to the podcast | -| `subscription_changed` | Datetime | Yes | The date on which the `is_subscribed` field was last updated. Presented in [ISO 8601 format] | - -## Request parameters - -The client MUST provide a list of objects containing the following parameters: - -| Field | Type | Required? | Description | -| ---------- | ------ | --------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `feed_url` | String | Yes | The URL of the podcast RSS feed. The client must provide a protocol (for example: `http` or `https`) and preserve any parameters | -| `guid` | String | No | The GUID found in the podcast RSS feed | - -:::caution[Important] -If a client passes a `guid` this MUST be treated as authoritative by the server. The client MAY pass a `guid` **only** if it is parsed from the podcast RSS feed. -::: - - - - - ```json - { - "subscriptions": [ - { - "feed_url": "https://example.com/rss1" - }, - { - "feed_url": "https://example.com/rss2" - }, - { - "feed_url": "https://example.com/rss3" - }, - { - "feed_url": "https://example.com/rss4", - "guid": "2d8bb39b-8d34-48d4-b223-a0d01eb27d71" - } - ] - } - ``` - - - - - ```xml - - - - https://example.com/feed1 - - - https://example.com/feed2 - - - https://example.com/feed3 - - - https://example.com/feed4 - 2d8bb39b-8d34-48d4-b223-a0d01eb27d71 - - - ``` - - - - -## Server-side behavior - -When new feeds are posted to the server, the server MUST return a success response to the client immediately to acknowledge the request. To ensure that data can be returned immediately, the following flow MUST be followed: - -1. The client sends a payload to the server -2. For each object in the payload, the server does the following: - 1. Checks if there's a `guid` entry in the payload - - If a `guid` is present, the server stores the `guid` for later use - - If no `guid` is present, the server generates a `guid` for later use - 2. Checks to see if there is an existing entry with the same `guid` or `feed_url` - - If an existing entry is found, the server sets the `is_subscribed` field to `true` and updates the `subscription_changed` date to the current date. If the `deleted` field is populated, the field is set to `NULL` to show that the subscription is active - - If no existing entry is found, the server creates a new subscription entry -3. The server returns a success payload containing the subscription information for each object in the request payload. - -![A flowchart diagram of the process](@assets/diagrams/subscriptions/add_new.png) - -### Subscription GUID update - -If the client doesn't send a `guid` in the subscription payload, the server MUST create one immediately to ensure the following: - -1. Each entry has an associated `guid` -2. The client receives a success response as quickly as possible - -Once this is done, the server SHOULD asynchronously verify that there isn't a more authoritative GUID available. The following flow should be used: - -1. The server fetches and parses the RSS feed to search for a [`guid` field in the `podcast` namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid). -2. If a more authoritative `guid` is found, the server must update the subscription entry as follows: - 1. Create a new subscription entry with the new `guid` - 2. Update the `new_guid` field in the existing entry to point to the new `guid` - 3. Update the `guid_changed` field in the existing entry to the current date - -![A diagram of the GUID update process](@assets/diagrams/subscriptions/guid_update.png) - -## Example request - - - - - ```console - $ curl --location '/subscriptions' \ - --header 'Content-Type: application/json' \ - --data '{ - "subscriptions": [ - { - "feed_url": "https://example.com/feed1" - }, - { - "feed_url": "https://example.com/feed2" - }, - { - "feed_url": "https://example.com/feed3" - }, - { - "feed_url": "example.com/feed4", - "guid": "2d8bb39b-8d34-48d4-b223-a0d01eb27d71" - } - ] - }' - ``` - - - - - ```console - $ curl --location '/subscriptions' \ - --header 'Content-Type: application/xml' \ - --data ' - - - https://example.com/feed1 - - - https://example.com/feed2 - - - https://example.com/feed3 - - - example.com/feed4 - 2d8bb39b-8d34-48d4-b223-a0d01eb27d71 - - ' - ``` - - - - -## Example 200 response - - - - - ```json - { - "success": [ - { - "feed_url": "https://example.com/rss1", - "guid": "8d1f8f09-4f50-4327-9a63-639bfb1cbd98", - "is_subscribed": true, - "subscription_changed": "2023-02-23T14:00:00.000Z" - }, - { - "feed_url": "https://example.com/rss2", - "guid": "968cb508-803c-493c-8ff2-9e397dadb83c", - "is_subscribed": true, - "subscription_changed": "2023-02-23T14:00:00.000Z" - }, - { - "feed_url": "https://example.com/rss3", - "guid": "e672c1f4-230d-4ab4-99d3-390a9f835ec1", - "is_subscribed": true, - "subscription_changed": "2023-02-23T14:00:00.000Z" - } - ], - "failure": [ - { - "feed_url": "example.com/rss4", - "message": "No protocol present" - } - ] - } - ``` - - - - - ```xml - - - - https://example.com/rss1 - 8d1f8f09-4f50-4327-9a63-639bfb1cbd98 - true - 2023-02-23T14:00:00.000Z - - - https://example.com/rss2 - 968cb508-803c-493c-8ff2-9e397dadb83c - true - 2023-02-23T14:00:00.000Z - - - https://example.com/rss3 - e672c1f4-230d-4ab4-99d3-390a9f835ec1 - true - 2023-02-23T14:00:00.000Z - - - example.com/rss4 - No protocol present - - - ``` - - - - -[ISO 8601 format]: https://www.iso.org/iso-8601-date-and-time-format.html diff --git a/src/content/docs/specs/subscriptions/add-subscription.mdx b/src/content/docs/specs/subscriptions/add-subscription.mdx new file mode 100644 index 00000000..30b7b920 --- /dev/null +++ b/src/content/docs/specs/subscriptions/add-subscription.mdx @@ -0,0 +1,98 @@ +--- +title: Add a subscription +description: Add a subscription +sidebar: + order: 2 +--- + +import CoreAction from "@partials/_core-action.md"; + + + +Enables clients to add a new subscription to the system and register the authenticated user as a subscriber. + +```http +POST /v1/subscriptions +``` + +## Request format + +The client **MUST** provide a single resource object with: + +- `type`: MUST be `"subscription"` +- `id`: MUST be the `guid` (UUIDv5) for the feed. See [`guid` calculation](/specs/subscriptions#guid-calculation) +- `attributes.feedUrl`: The podcast feed URL + +```http +POST /v1/subscriptions HTTP/1.1 +Content-Type: application/vnd.api+json +Accept: application/vnd.api+json + +{ + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1" + } + } +} +``` + +## Server behavior + +- The server **MUST** create the subscription or confirm the existing record. +- The operation **MUST** be idempotent. +- The server **MUST** return a `201 Created` response with the created resource. +- If the resource already exists, the server **MAY** return a `200 OK`. + +## Success response + +If the subscription is created or confirmed successfully: + +- HTTP Status: `201 Created` +- Headers: + - `Content-Type: application/vnd.api+json` + - `Location: ` + +The created resource **MUST** have the following `attributes`: + +- `feedUrl`: the feed URL of the subscription target +- `userSubscribedAt`: the timestamp at which the user's subscription was created, in ISO 8601 format + +The response **MUST** contain the following `links`. + +- `self`: a link to the created resource +- `unsubscribe`: + - `href`: a link to the created resource + - `method`: **MUST** be `DELETE` + +```http +HTTP/1.1 201 Created +Location: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 +Content-Type: application/vnd.api+json + +{ + "jsonapi": { "version": "1.1" }, + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "unsubscribe": { + "href": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "method": "DELETE" + } + } + } +} +``` + +## Bulk operations + +Clients **MAY** use the [Atomic Operations extension](https://jsonapi.org/ext/atomic/) for batch creation or updates. +See [Add subscriptions in bulk](../operations/bulk-create-subscriptions.md) for more information. diff --git a/src/content/docs/specs/subscriptions/delete-subscription.mdx b/src/content/docs/specs/subscriptions/delete-subscription.mdx new file mode 100644 index 00000000..c841f6db --- /dev/null +++ b/src/content/docs/specs/subscriptions/delete-subscription.mdx @@ -0,0 +1,65 @@ +--- +title: Delete a subscription +description: Delete a subscription for the authenticated user +sidebar: + order: 5 +--- + +import CoreAction from "@partials/_core-action.md"; + + + +Enables clients to remove a subscription for the authenticated user by `guid`. + +```http +DELETE /v1/subscriptions/{guid} +``` + +## Request format + +Clients **MUST** send a `DELETE` request to the canonical URI of a subscription resource. + +### Path parameters + +| Parameter | Type | Description | +| --------- | ------ | --------------------------------------------------------------------- | +| `guid` | string | The globally unique identifier (UUIDv5) of the subscription resource. | + +### Headers + +Clients **MUST** include the following header: + +- `Accept: application/vnd.api+json` + +```http +DELETE /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 HTTP/1.1 +Accept: application/vnd.api+json +``` + +## Server behavior + +- The server **MUST** remove the subscription for the authenticated user. +- The deletion **MUST NOT** affect other users subscribed to the same feed. +- The server **MUST** return a `204 No Content` if the subscription was deleted. +- If no subscription exists for the user, the server **MUST** return `404 Not Found`. +- If the `guid` is not a valid UUID, the server **MUST** return `400 Bad Request`. + +## Success response + +If the subscription is successfully deleted: + +- HTTP Status: `204 No Content` +- The response **MUST NOT** include a body. + +```http +HTTP/1.1 204 No Content +``` + +## Error responses + +| HTTP status | When it occurs | +| ----------------- | ------------------------------------------------------ | +| `400 Bad Request` | If the provided `guid` is not a valid UUID. | +| `404 Not Found` | If the subscription does not exist or is inaccessible. | + +See [error response format](/specs/error-codes) for more information. diff --git a/src/content/docs/specs/subscriptions/delete.mdx b/src/content/docs/specs/subscriptions/delete.mdx deleted file mode 100644 index 4939f5d4..00000000 --- a/src/content/docs/specs/subscriptions/delete.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Delete a subscription -description: Fetch the status of a deletion process -sidebar: - order: 6 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -DELETE /v1/subscriptions/{guid} -``` - -This endpoint allows clients to mark a feed as deleted. This prevents the server from updating the feed in the background and prevents the server from returning any information, such as playback positions, related to the given associated feed. - -## Server-side behavior - -:::caution[Important] -The server MUST enact all cascade deletions using ACID transactions. If the deletion process fails at any point in the transaction, **all** transactions MUST be rolled back to maintain integrity. -::: - -To ensure that `DELETE` requests are handled asynchronously, the server MUST respond to deletion requests immediately with a `202 (Accepted)` status containing a `deletion_id`. This ID MUST correspond to a status object on the server containing details of the deletion process. The client MUST be able to [query the status of a deletion](/specs/subscriptions/status) to check its progress. - -| Parameter | Type | Required? | Description | -| ---------- | ------- | --------- | --------------------------------------------------------------------------------------------------- | -| `id` | Integer | Yes | The ID of the deletion object | -| `success` | Boolean | Yes | Whether or not the deletion was completed successfully | -| `complete` | Boolean | Yes | Whether or not the deletion process has finished | -| `message` | String | No | A status message indicating the current status of the deletion, or any errors that were encountered | - -The following flow MUST be followed: - -1. The client sends a `DELETE` request for a subscription object -2. The server creates a new deletion status object and returns the `deletion_id` in a `202 (Accepted)` response -3. The server attempts to perform a cascade delete on all related items - 1. If a failure occurs at any point in the process, all transactions are rolled back and the status object is updated to show the following: - - `complete`: Must be true - - `success`: Must be `false` - - `message`: Should be updated to contain a meaningful error message - 2. If all deletions are successful, the status object is updated to show the following: - - `complete`: Must be true - - `success`: Must be `true` - - `message`: Should be updated to contain a success message - -If the client attempts to [fetch a deleted subscription](/specs/subscriptions/get-all), the server MUST respond with a `410 (Gone)` status code to indicate the object and its associated data have been deleted. - -![A diagram of the deletion process](@assets/diagrams/subscriptions/delete_subscription.png) - -## Example request - -```console -$ curl --location --request DELETE \ -'/v1/subscriptions/2d8bb39b-8d34-48d4-b223-a0d01eb27d71' -``` - -## Example 202 response - - - - - ```json - { - "deletion_id": 25, - "message": "Deletion request was received and will be processed" - } - ``` - - - - - ```xml - - - 25 - Deletion request was received and will be processed - - ``` - - - diff --git a/src/content/docs/specs/subscriptions/get-all.mdx b/src/content/docs/specs/subscriptions/get-all.mdx deleted file mode 100644 index 69fc7957..00000000 --- a/src/content/docs/specs/subscriptions/get-all.mdx +++ /dev/null @@ -1,294 +0,0 @@ ---- -title: Get all subscriptions -description: Get all subscriptions for a user -sidebar: - order: 3 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -GET /v1/subscriptions -``` - -This endpoint enables clients to return all subscription information relating to the authenticated user. It returns pagination information and an array of `subscriptions`. - -## Response fields - -### Metadata - -| Field | Type | Required? | Description | -| ---------- | ------ | --------- | ------------------------------------------------ | -| `total` | Number | Yes | The total number of objects returned by the call | -| `page` | Number | Yes | The number of the page returned in the call | -| `per_page` | Number | Yes | The number of results returned per page | -| `next` | String | No | The URL for the next page of results | -| `previous` | String | No | The URL for the previous page of results | - -### Subscription fields - -| Field | Type | Required? | Description | -| ---------------------- | -------------- | --------- | ----------------------------------------------------------------------------------------------------- | -| `feed_url` | String | Yes | The URL of the podcast RSS feed | -| `guid` | String\ | Yes | The globally unique ID of the podcast | -| `is_subscribed` | Boolean | Yes | Whether the user is subscribed to the podcast | -| `subscription_changed` | Datetime | No | The date on which details relating to the subscription last changed. Presented in [ISO 8601 format] | -| `guid_changed` | Datetime | No | The date on which the podcast's `guid` or `new_guid` was last updated. Presented in [ISO 8601 format] | -| `new_guid` | String\ | No | The new GUID associated with the podcast | -| `deleted` | Datetime | No | The date on which the subscription was deleted. Only returned if the field is not `NULL` | - -## Parameters - -The client MAY add the following parameters to their call: - -| Field | Type | In | Required? | Description | -| ---------- | -------- | ----- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `since` | DateTime | Query | No | The date from which the server should return objects. The server only returns entries whose `subscription_changed`, `guid_changed`, or `deleted` fields are greater than this parameter. Expected in [ISO 8601 format] | -| `page` | Number | Query | No | The page of results to be returned by the server. Defaults to `1` if not present | -| `per_page` | Number | Query | No | The number of results to return in each call. Defaults to `50` if not present | - -:::note -If no `since` parameter is provided, the server MUST return all current subscription information. -::: - -## Server-side behavior - -If the entry contains a `new_guid`, the server MUST return the newest `guid` associated with the entry in the response's `new_guid` field. For example: if a subscription has received 2 new `guid`s, the server MUST return: - -- The subscription's `guid` as it was at the date passed in the `since` parameter, or the original entry's `guid` if no `since` parameter is passed -- The subscription's latest `guid` in the `new_guid` field - -This ensures the client has the most up-to-date entry for the subscription. - -![A flowchart demonstrating the GUID checking process](@assets/diagrams/subscriptions/check_guid.png) - -## Client behavior - -The client SHOULD update its local subscription data to match the information returned in the response. On receipt of a deleted subscription, the client SHOULD present the user with the option to remove their local data or [send their local data to the server](/specs/subscriptions/add-new) to reinstate the subscription details. - -### Resolution example - -This example demonstrates how the server resolves a `new_guid` field for a subscription that has received three GUIDs. Here is how the data is represented in the database: - -| `feed_url` | `guid` | `is_subscribed` | `subscription_changed` | `guid_change` | `new_guid` | -| -------------------------- | -------------------------------------- | --------------- | -------------------------- | -------------------------- | -------------------------------------- | -| `https://example.com/rss1` | `64c1593b-5a1e-4e89-b8a3-d91501065e80` | `true` | `2022-03-21T18:45:35.513Z` | `2022-03-21T19:00:00.000Z` | `daac3ce5-7b16-4cf0-8294-86ad71944a64` | -| `https://example.com/rss1` | `daac3ce5-7b16-4cf0-8294-86ad71944a64` | `true` | `2022-03-21T18:45:35.513Z` | `2022-12-23T10:24:14.670Z` | `36a47c4c-4aa3-428a-8132-3712a8422002` | -| `https://example.com/rss1` | `36a47c4c-4aa3-428a-8132-3712a8422002` | `true` | `2022-03-21T18:45:35.513Z` | `2022-12-23T10:24:14.670Z` | | - -#### Scenario 1 - -In this scenario, the client requests all subscriptions and **doesn't** pass a `since` parameter. This means the server passes the **original** GUID in the `guid` field, and the **latest** GUID in the `new_guid`field. - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions?page=1&per_page=5' \ - -H 'accept: application/json' - ``` - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions?page=1&per_page=5' \ - -H 'accept: application/xml' - ``` - - - - - - - - ```json {8, 11} collapse={2-4} - { - "total": 1, - "page": 1, - "per_page": 5, - "subscriptions": [ - { - "feed_url": "https://example.com/rss1", - "guid": "64c1593b-5a1e-4e89-b8a3-d91501065e80", - "is_subscribed": true, - "guid_changed": "2022-12-23T10:24:14.670Z", - "new_guid": "36a47c4c-4aa3-428a-8132-3712a8422002" - } - ] - } - ``` - - - - - ```xml {8, 11} collapse={3-5} - - - 1 - 1 - 5 - - https://example.com/rss1 - 64c1593b-5a1e-4e89-b8a3-d91501065e80 - true - 2022-12-23T10:24:14.670Z - 36a47c4c-4aa3-428a-8132-3712a8422002 - - - ``` - - - - -#### Scenario 2 - -In this scenario, the client requests all subscriptions and specifies a `since` date of `2022-05-30T00:00:00.000Z`. Since the first GUID change occurred before this date, and the second GUID change occurred after this date, the server responds with the **second** GUID in the `guid` field, and the **latest** GUID in the `new_guid` field. - - - - - ```console "since=2022-05-30T00%3A00%3A00.000Z" - $ curl -X 'GET' \ - '/v1/subscriptions?since=2022-05-30T00%3A00%3A00.000Z&page=1&per_page=5' \ - -H 'accept: application/json' - ``` - - - - - ```console "since=2022-05-30T00%3A00%3A00.000Z" - $ curl -X 'GET' \ - '/v1/subscriptions?since=2022-05-30T00%3A00%3A00.000Z&page=1&per_page=5' \ - -H 'accept: application/xml' - ``` - - - - - - - - ```json {8, 11} collapse={2-4} - { - "total": 1, - "page": 1, - "per_page": 5, - "subscriptions": [ - { - "feed_url": "https://example.com/rss1", - "guid": "daac3ce5-7b16-4cf0-8294-86ad71944a64", - "is_subscribed": true, - "guid_changed": "2022-12-23T10:24:14.670Z", - "new_guid": "36a47c4c-4aa3-428a-8132-3712a8422002" - } - ] - } - ``` - - - - - ```xml {8, 11} collapse={3-5} - - - 1 - 1 - 5 - - https://example.com/rss1 - daac3ce5-7b16-4cf0-8294-86ad71944a64 - true - 2022-12-23T10:24:14.670Z - 36a47c4c-4aa3-428a-8132-3712a8422002 - - - ``` - - - - -## Example request - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions?since=2022-04-23T18%3A25%3A34.511Z&page=1&per_page=5' \ - -H 'accept: application/json' - ``` - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions?since=2022-04-23T18%3A25%3A34.511Z&page=1&per_page=5' \ - -H 'accept: application/xml' - ``` - - - - -## Example 200 response - - - - - ```json - { - "total": 2, - "page": 1, - "per_page": 5, - "subscriptions": [ - { - "feed_url": "https://example.com/rss1", - "guid": "31740ac6-e39d-49cd-9179-634bcecf4143", - "is_subscribed": true, - "guid_changed": "2022-09-21T10:25:32.411Z", - "new_guid": "8d1f8f09-4f50-4327-9a63-639bfb1cbd98" - }, - { - "feed_url": "https://example.com/rss2", - "guid": "968cb508-803c-493c-8ff2-9e397dadb83c", - "is_subscribed": false, - "subscription_changed": "2022-04-24T17:53:21.573Z" - } - ] - } - ``` - - - - - ```xml - - - 2 - 1 - 5 - - https://example.com/rss1 - 31740ac6-e39d-49cd-9179-634bcecf4143 - true - 2022-09-21T10:25:32.411Z - 8d1f8f09-4f50-4327-9a63-639bfb1cbd98 - - - https://example.com/rss2 - 968cb508-803c-493c-8ff2-9e397dadb83c - false - 2022-04-24T17:53:21.573Z - - - ``` - - - - -[ISO 8601 format]: https://www.iso.org/iso-8601-date-and-time-format.html diff --git a/src/content/docs/specs/subscriptions/get-single.mdx b/src/content/docs/specs/subscriptions/get-single.mdx deleted file mode 100644 index 601623ee..00000000 --- a/src/content/docs/specs/subscriptions/get-single.mdx +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Get a single subscription -description: Get a single subscription for a user -sidebar: - order: 4 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -GET /v1/subscriptions/{guid} -``` - -This endpoint returns subscription information relating to a specific subscription for the authenticated user. It returns the following information: - -| Field | Type | Required? | Description | -| ---------------------- | -------------- | --------- | ----------------------------------------------------------------------------------------------------- | -| `feed_url` | String | Yes | The URL of the podcast RSS feed | -| `guid` | String\ | Yes | The globally unique ID of the podcast | -| `is_subscribed` | Boolean | Yes | Whether the user is subscribed to the podcast or not | -| `subscription_changed` | Datetime | No | The date on which the `is_subscribed` field was last updated. Presented in [ISO 8601 format] | -| `guid_changed` | Datetime | No | The date on which the podcast's `guid` or `new_guid` was last updated. Presented in [ISO 8601 format] | -| `new_guid` | String\ | No | The new GUID associated with the podcast | -| `deleted` | Datetime | No | The date on which the subscription was deleted. Only returned if the field is not `NULL` | - -## Parameters - -The client MUST send the subscription's `guid` in the path of the request. - -## Server-side behavior - -If the entry contains a `new_guid`, the server MUST return the newest `guid` associated with the entry in the response's `new_guid` field. For example: if a subscription has received 2 new `guid`s, the server MUST return: - -- The subscription's `guid` passed in the request path -- The subscription's latest `guid` in the `new_guid` field - -This ensures the client has the most up-to-date entry for the subscription. - -![A flowchart demonstrating the GUID checking process](@assets/diagrams/subscriptions/check_guid.png) - -## Client behavior - -The client SHOULD update its local subscription data to match the information returned in the response. On receipt of a deleted subscription, the client SHOULD present the user with the option to remove their local data or [send their local data to the server](/specs/subscriptions/add-new) to reinstate the subscription details. - -## Example request - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions/968cb508-803c-493c-8ff2-9e397dadb83c' \ - -H 'accept: application/json' - ``` - - - - - ```console - $ curl -X 'GET' \ - '/v1/subscriptions/968cb508-803c-493c-8ff2-9e397dadb83c' \ - -H 'accept: application/xml' - ``` - - - - -## Example 200 response - - - - - ```json - { - "feed_url": "https://example.com/feed2", - "guid": "968cb508-803c-493c-8ff2-9e397dadb83c", - "is_subscribed": true - } - ``` - - - - - ```xml - - - https://example.com/feed2 - 968cb508-803c-493c-8ff2-9e397dadb83c - true - - ``` - - - - -## Example 410 response - -If a subscription has been [deleted](/specs/subscriptions/delete), the server must respond with a `410 (Gone)` response to inform the client. - - - - - ```json - { - "code": 410, - "message": "Subscription has been deleted" - } - ``` - - - - - ```xml - - - 410 - Subscription has been deleted - - ``` - - - - -[ISO 8601 format]: https://www.iso.org/iso-8601-date-and-time-format.html diff --git a/src/content/docs/specs/subscriptions/get-subscription.mdx b/src/content/docs/specs/subscriptions/get-subscription.mdx new file mode 100644 index 00000000..976fa68a --- /dev/null +++ b/src/content/docs/specs/subscriptions/get-subscription.mdx @@ -0,0 +1,90 @@ +--- +title: Get a single subscription +description: Get a single subscription for a user +sidebar: + order: 4 +--- + +import CoreAction from "@partials/_core-action.md"; + + + +Enables clients to fetch a single subscription resource by its globally unique `guid`. + +```http +GET /v1/subscriptions/{guid} +``` + +## Request format + +Clients **MUST** send a `GET` request to the canonical URI of a subscription resource, using the `guid` as the identifier. + +### Path parameters + +| Parameter | Type | Description | +| --------- | ------ | --------------------------------------------------------------------- | +| `guid` | string | The globally unique identifier (UUIDv5) of the subscription resource. | + +### Headers + +Clients **MUST** include the following headers: + +- `Accept: application/vnd.api+json` + +```http +GET /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 HTTP/1.1 +Accept: application/vnd.api+json +``` + +## Server behavior + +- The server **MUST** return a `200 OK` response with the subscription resource if it exists and is associated with the authenticated user. +- If the subscription does not exist, the server **MUST** return a `404 Not Found` error object. +- The server **MUST** validate that the `guid` is a valid UUID format. If it is not, the server **MUST** return a `400 Bad Request`. + +## Success response + +If the subscription is found and accessible to the current user: + +- HTTP Status: `200 OK` +- Headers: + - `Content-Type: application/vnd.api+json` + +The response body **MUST** include: + +- A top-level `data` object containing the `subscription` resource. +- A `links.self` pointing to the resource. +- A `links.unsubscribe` pointing to the same resource with `method: DELETE`. + +```http +HTTP/1.1 200 OK +Content-Type: application/vnd.api+json + +{ + "jsonapi": { "version": "1.1" }, + "data": { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "unsubscribe": { + "href": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "method": "DELETE" + } + } + } +} +``` + +## Error responses + +| HTTP status | When it occurs | +| ----------------- | ------------------------------------------------------ | +| `400 Bad Request` | If the provided `guid` is not a valid UUID. | +| `404 Not Found` | If the subscription does not exist or is inaccessible. | + +See [error response format](/specs/error-codes) for more information. diff --git a/src/content/docs/specs/subscriptions/index.mdx b/src/content/docs/specs/subscriptions/index.mdx index a6975902..8c65849f 100644 --- a/src/content/docs/specs/subscriptions/index.mdx +++ b/src/content/docs/specs/subscriptions/index.mdx @@ -7,31 +7,49 @@ sidebar: order: 1 --- -import CoreEndpoint from "@partials/_core-endpoint.mdx"; +import CoreEndpoint from "@partials/_core-endpoint.md"; -The subscriptions endpoint is used to synchronize subscriptions between a server and connected clients. The server is treated as the authoritative source for subscription information. Clients can query the endpoint by specifying the datetime from which they want to fetch changes to ensure they only fetch information that is relevant to them since their last sync. +The `subscriptions` endpoint is used to synchronize subscriptions between a server and connected clients. -Subscriptions represent the feeds a user has subscribed to. A subscription object stores essential information about each subscription and acts as an index that links other activity information together. +## What is a subscription? -## Important data fields +Subscriptions represent the relationship between **users** and **podcast feeds**. +Each user may have many subscriptions, and each feed may have many subscribers. -| Field | Type | Nullable? | Description | -| ---------------------- | -------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `feed_url` | String | No | The URL of the podcast RSS feed | -| `guid` | String\ | No | The globally unique ID of the podcast | -| `is_subscribed` | Boolean | No | Whether the user is subscribed to the podcast | -| `subscription_changed` | Datetime | No | The date on which the `is_subscribed` field was last updated. Presented in [ISO 8601 format] | -| `guid_changed` | Datetime | No | The date on which the podcast's `guid` or `new_guid` was last updated. Presented in [ISO 8601 format] | -| `new_guid` | String\ | Yes | The new GUID associated with the podcast | -| `deleted` | Datetime | Yes | The date on which data associated with the subscription was deleted by the user. This field is used to determine whether a `410 (Gone)` response should be returned | +Users may add and delete subscriptions at any time. +Deleting a subscription **MUST NOT** result in the feed being removed. -:::note[Tombstoning] -Servers SHOULD hold all previous `guid` and `feed_url` field data with a link to the succeeding data (such that a path of values can be followed) or with a link to the most recent data. This enables the server to handle situations in which clients submit old data. For example: +```mermaid +erDiagram + USERS ||--o{ SUBSCRIPTIONS : has + FEEDS ||--o{ SUBSCRIPTIONS : has +``` -- A user finds a podcast, whose URL had changed, and adds the old URL in the app. Because the client doesn't have the old URL in its database, it recognizes the podcast as **new** and POSTs the `feed_url` to the `/subscriptions` endpoint. If the user is already subscribed to the podcast (with the current feed URL) this would lead to a duplicate subscription. -- A user has a device that they didn't use for a very long time. In that time, a podcaster added a GUID in their feed, leading to updated data in this field. When the client connects to the server again to pull all episode changes since the last connection, it retrieves episodes with their current subscription `guid`. The client won't recognize the subscription and fail to update the status of episodes. - ::: +## `guid` calculation -[ISO 8601 format]: https://www.iso.org/iso-8601-date-and-time-format.html +Subscriptions are identified by a globally unique `guid` value. +This `guid` is used as the `id` field of each subscription resource and acts as the canonical resource identifier. + +Feed `guid` values **MUST** be created in accordance with the [Podcast Index's methodology](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/tags/guid.md). +If a feed already has a valid UUIDv5 `guid` tag, the client **MUST** pass this value to the server when submitting the feed. +If the feed doesn't have a valid `guid` tag, the client **MUST**: + +1. Generate a UUIDv5 `guid` value using: + - The feed URL (with protocol and trailing slashes removed). + - The Podcast namespace UUID: `ead4c236-bf58-58c6-a2c6-a6b28d128cb6`. +2. Pass the generated value as the `guid` in the API request. + +This process ensures that any feed not currently registered with the Podcast Index is identified by the exact same GUID it would receive if it were updated to the Podcasting 2.0 specification. + +The server **MUST** reject invalid `guid` values with a `400 Bad Request` response. + +The server **MUST NOT** attempt to validate or recalculate the `guid` against the `feedUrl`, as the origin URL may have changed since the `guid` was set. + +## Supported actions + +- [Add a subscription](/specs/subscriptions/add-subscription) +- [List all subscriptions](/specs/subscriptions/list-subscriptions) +- [Get a subscription](/specs/subscriptions/get-subscription) +- [Delete a subscription](/specs/subscriptions/delete-subscription) diff --git a/src/content/docs/specs/subscriptions/list-subscriptions.mdx b/src/content/docs/specs/subscriptions/list-subscriptions.mdx new file mode 100644 index 00000000..bb754232 --- /dev/null +++ b/src/content/docs/specs/subscriptions/list-subscriptions.mdx @@ -0,0 +1,112 @@ +--- +title: List subscriptions +description: List all subscriptions for a user +sidebar: + order: 3 +--- + +import CoreAction from "@partials/_core-action.md"; + + + +Retrieves a paginated list of podcast subscriptions associated with the authenticated user. + +```http +GET /v1/subscriptions +``` + +## Request format + +This endpoint supports optional query parameters for pagination: + +| Parameter | Description | +| -------------- | --------------------------------------------------------------------- | +| `page[number]` | The page of results to return (default: `1`). | +| `page[size]` | The number of results to return per page (default: `25`, max: `100`). | + +```http +GET /v1/subscriptions?page[number]=1&page[size]=2 HTTP/1.1 +Accept: application/vnd.api+json +``` + +## Server behavior + +- The server **MUST** return only subscriptions that belong to the authenticated user. +- The server **MUST** return pagination metadata and pagination links. +- The server **MUST** return an empty array if the user has no subscriptions. +- The server **SHOULD** support `page[size]` values between 1 and 100. + +## Success response + +- HTTP Status: `200 OK` +- Content-Type: `application/vnd.api+json` + +Each subscription resource in the response **MUST** include: + +- `type`: `"subscription"` +- `id`: the globally unique `guid` +- `attributes.feedUrl`: the feed URL +- `attributes.userSubscribedAt`: the timestamp of when the user subscribed in ISO 8601 format +- `links.self`: link to the subscription resource +- `links.unsubscribe`: a `DELETE`-able link to unsubscribe from the feed + +The top-level `links` object **MUST** include pagination links: + +- `self`: the current request URI +- `first`: the first page of results +- `prev`: the previous page, if one exists +- `next`: the next page, if one exists +- `last`: the last page of results + +The top-level `meta` object **MAY** include total count metadata. + +```http +HTTP/1.1 200 OK +Content-Type: application/vnd.api+json + +{ + "jsonapi": { "version": "1.1" }, + "data": [ + { + "type": "subscription", + "id": "ce510f4d-9046-5590-846e-58619ab8b353", + "attributes": { + "feedUrl": "https://example.com/rss1", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "unsubscribe": { + "href": "/v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353", + "method": "DELETE" + } + } + }, + { + "type": "subscription", + "id": "b80719b3-1485-57c0-9e55-fda2b8f7472b", + "attributes": { + "feedUrl": "https://example.com/rss2", + "userSubscribedAt": "2025-08-24T16:00:00Z" + }, + "links": { + "self": "/v1/subscriptions/b80719b3-1485-57c0-9e55-fda2b8f7472b", + "unsubscribe": { + "href": "/v1/subscriptions/b80719b3-1485-57c0-9e55-fda2b8f7472b", + "method": "DELETE" + } + } + } + ], + "links": { + "self": "/v1/subscriptions?page[number]=1&page[size]=2", + "first": "/v1/subscriptions?page[number]=1&page[size]=2", + "prev": null, + "next": "/v1/subscriptions?page[number]=2&page[size]=2", + "last": "/v1/subscriptions?page[number]=5&page[size]=2" + }, + "meta": { + "total": 10 + } +} +``` diff --git a/src/content/docs/specs/subscriptions/status.mdx b/src/content/docs/specs/subscriptions/status.mdx deleted file mode 100644 index 91b59944..00000000 --- a/src/content/docs/specs/subscriptions/status.mdx +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Deletion status endpoint -description: Fetch the status of a deletion process -sidebar: - order: 7 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -GET /v1/deletions/{id} -``` - -This endpoint enables clients to query the status of a [deletion](/specs/subscriptions/delete). When a client sends a `DELETE` request, the server MUST respond with a `deletion_id` that can be used with this endpoint to check whether a deletion has been successfully actioned. - -| Parameter | Type | Required? | Description | -| ------------- | ------- | --------- | --------------------------------------------------------------------------------------------------- | --------- | --------- | -| `deletion_id` | Integer | Yes | The ID of the deletion object | -| `status` | String | Yes | A status message indicating the status of the deletion. Available values: `SUCCESS` | `FAILURE` | `PENDING` | -| `message` | String | No | A status message indicating the current status of the deletion, or any errors that were encountered | - -## Parameters - -The client MUST send the deletion's `id` in the path of the request. - -## Example request - - - - - ```console - $ curl -X 'GET' \ - '/v1/deletions/25' \ - -H 'accept: application/json' - ``` - - - - - ```console - $ curl -X 'GET' \ - '/v1/deletions/25' \ - -H 'accept: application/xml' - ``` - - - - -## Example 200 response - -The server MUST send a `200 (Success)` if it can fetch a status object without issue. This response MUST contain information about the `deletion_id` passed in the query path. - -### Successful deletion - - - - - ```json {3} - { - "deletion_id": 25, - "status": "SUCCESS", - "message": "Subscription deleted successfully" - } - ``` - - - - - ```xml {3} - - - 25 - SUCCESS - Subscription deleted successfully - - ``` - - - - -### Pending deletion - - - - - ```json {3} - { - "deletion_id": 25, - "status": "PENDING", - "message": "Deletion is pending" - } - ``` - - - - - ```xml {3} - - - 25 - PENDING - Deletion is pending - - ``` - - - - -### Failed deletion - - - - - ```json {3} - { - "deletion_id": 25, - "status": "FAILURE", - "message": "The deletion process encountered an error and was rolled back" - } - ``` - - - - - ```xml {3} - - - 25 - FAILURE - The deletion process encountered an error and was rolled back - - ``` - - - diff --git a/src/content/docs/specs/subscriptions/update.mdx b/src/content/docs/specs/subscriptions/update.mdx deleted file mode 100644 index d7bb440a..00000000 --- a/src/content/docs/specs/subscriptions/update.mdx +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: Update a subscription -description: Update details about a subscription -sidebar: - order: 5 ---- - -import CoreAction from "@partials/_core-action.mdx"; - - - -```http title="Endpoint" -PATCH /v1/subscriptions/{guid} -``` - -This endpoint allows clients to update information about a subscription. The client MAY update the following information: - -- The podcast's GUID -- The podcast's feed URL -- An update to the subscription status for the user - -This endpoint returns the following information: - -| Field | Type | Required? | Description | -| ---------------------- | -------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `new_feed_url` | String | No | The URL of the podcast RSS feed. Only returned if the `feed_url` field was updated by the request | -| `is_subscribed` | Boolean | No | Whether the user is subscribed to the podcast or not. Only returned if the `is_subscribed` field was updated by the request | -| `subscription_changed` | Datetime | No | The date on which the `is_subscribed`or `feed_url` field was last updated. Presented in [ISO 8601 format]. Only returned if the `is_subscribed` field was updated by the request | -| `guid_changed` | Datetime | No | The date on which the podcast's GUID was last updated. Presented in [ISO 8601 format]. Only returned if the `guid` field was updated by the request | -| `new_guid` | String\ | No | The new GUID associated with the podcast. Only returned if the `guid` field was updated by the request | - -## Parameters - -The client MUST pass the subscription GUID in the query path and add at least one field update in the request body. - -| Parameter | Type | In | Required? | Description | -| --------------- | --------------- | ----- | --------- | ------------------------------------------------------------ | -| `guid` | String | Query | Yes | The GUID of the subscription object that needs to be updated | -| `new_feed_url` | String | Body | No | The URL of the new RSS feed for the subscription | -| `new_guid` | String \ | Body | No | The new GUID of the podcast | -| `is_subscribed` | Boolean | Body | No | Whether the user is subscribed to the podcast or not | - -## Server-side behavior - -On receipt of a PATCH request for a subscription, the server MUST do the following: - -1. If the subscription in the request has a `new_guid` specified in the database, follow the `new_guid` chain to find the **latest** version of the subscription -2. If the request contains a `new_feed_url` parameter: - 1. Update the subscription entry's `feed_url` field to the new value - 2. Update the subscription entry's `subscription_changed` field to the current date -3. If the request contains a `new_guid` parameter: - 1. Check if the GUID is already present in the system - 2. If the GUID is already present, update the subscription entry's `new_guid` field to point to the existing entry - 3. If the GUID isn't already present, create a new subscription entry and update the existing entry's `new_guid` field to point to the newly created entry - 4. Update the subscription entry's `guid_changed` to the current date -4. If the request contains an `is_subscribed` parameter: - 1. Update the subscription entry's `is_subscribed` to the new value - 2. Update the subscription entry's `subscription_changed` field to the current date -5. Return a summary of the changes - -![A flowchart of the subscription update process](@assets/diagrams/subscriptions/update_subscription.png) - -## Example request - - - - - ```console - $ curl --location --request PATCH '/subscriptions/2d8bb39b-8d34-48d4-b223-a0d01eb27d71' \ - --header 'Content-Type: application/json' \ - --data '{ - "new_feed_url": "https://example.com/rss5", - "new_guid": "965fcecf-ce04-482b-b57c-3119b866cc61", - "is_subscribed": false - }' - ``` - - - - - ```console - $ curl --location --request PATCH '/subscriptions/2d8bb39b-8d34-48d4-b223-a0d01eb27d71' \ - --header 'Content-Type: application/xml' \ - --data ' - - https://example.com/rss5 - 965fcecf-ce04-482b-b57c-3119b866cc61 - false - ' - ``` - - - - -## Example 200 response - - - - - ```json - { - "new_feed_url": "https://example.com/rss5", - "is_subscribed": false, - "subscription_changed": "2023-02-23T14:41:00.000Z", - "guid_changed": "2023-02-23T14:41:00.000Z", - "new_guid": "965fcecf-ce04-482b-b57c-3119b866cc61" - } - ``` - - - - - ```xml - - - https://example.com/rss5 - false - 2023-02-23T14:41:00.000Z - 2023-02-23T14:41:00.000Z - 965fcecf-ce04-482b-b57c-3119b866cc61 - - ``` - - - - -[ISO 8601 format]: https://www.iso.org/iso-8601-date-and-time-format.html diff --git a/tsconfig.json b/tsconfig.json index 6fd7e3e4..da0afb4a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,15 +4,10 @@ "baseUrl": ".", "allowImportingTsExtensions": true, "paths": { - "@partials/*": [ - "src/content/docs/partials/*" - ], - "@components/*": [ - "src/components/*" - ], - "@assets/*": [ - "src/assets/*" - ] + "@partials/*": ["src/content/docs/partials/*"], + "@components/*": ["src/components/*"], + "@assets/*": ["src/assets/*"], + "@plugins/*": ["plugins/*"] } } -} \ No newline at end of file +} From 81c9730fded3550a27e1c417a82b1081f22cf104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:14:15 +0100 Subject: [PATCH 02/16] Remove unused diagrams --- .../diagrams/subscriptions/add_new.drawio | 118 ------------- src/assets/diagrams/subscriptions/add_new.png | Bin 90739 -> 0 bytes .../diagrams/subscriptions/check_guid.drawio | 58 ------- .../diagrams/subscriptions/check_guid.png | Bin 41105 -> 0 bytes .../subscriptions/delete_subscription.drawio | 160 ------------------ .../subscriptions/delete_subscription.png | Bin 64346 -> 0 bytes .../diagrams/subscriptions/guid_update.drawio | 76 --------- .../diagrams/subscriptions/guid_update.png | Bin 70752 -> 0 bytes .../subscriptions/update_subscription.drawio | 112 ------------ .../subscriptions/update_subscription.png | Bin 111381 -> 0 bytes 10 files changed, 524 deletions(-) delete mode 100644 src/assets/diagrams/subscriptions/add_new.drawio delete mode 100644 src/assets/diagrams/subscriptions/add_new.png delete mode 100644 src/assets/diagrams/subscriptions/check_guid.drawio delete mode 100644 src/assets/diagrams/subscriptions/check_guid.png delete mode 100644 src/assets/diagrams/subscriptions/delete_subscription.drawio delete mode 100644 src/assets/diagrams/subscriptions/delete_subscription.png delete mode 100644 src/assets/diagrams/subscriptions/guid_update.drawio delete mode 100644 src/assets/diagrams/subscriptions/guid_update.png delete mode 100644 src/assets/diagrams/subscriptions/update_subscription.drawio delete mode 100644 src/assets/diagrams/subscriptions/update_subscription.png diff --git a/src/assets/diagrams/subscriptions/add_new.drawio b/src/assets/diagrams/subscriptions/add_new.drawio deleted file mode 100644 index b0a42bd0..00000000 --- a/src/assets/diagrams/subscriptions/add_new.drawio +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/diagrams/subscriptions/add_new.png b/src/assets/diagrams/subscriptions/add_new.png deleted file mode 100644 index 9388daed140a02b695ff6f86c1366f4a8905adf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90739 zcmeFY2RN5||2S@s3YnF?BYS=9y=6s6_Wpdb_e?ZwB4maLWs?;$L#U7~qC^OhJ<|Vu z8y(eizUMsWInVQZ{@3+%UFZ1R_j|qGuf6VIbyazsW2DEBkdSZ`6=XD!kWg%qkWgP> zVSqO$MIt1@A7p0@c`2lVSL8EDNMf-rvX@+JJuDG67Dx;{()+&{cx1tEbA*YNlZh<@ zHz&fJfk%dco7>bx*<8@h>xzSoi-%0Hv9Y ziL*1pjDbfA?qX{LUT}e*79I$fOW-#rJKw>R?vW80i0GUL12Pc7_a5wAoIH;#f*zq& z-^YGi1`T~*2Uyic+TO=2fp-|gSq!Q?m89bnVh-qp$M06F}y{b?>HPF5BN80H5u0EvNx`43!kC;=As z;AAIHFu}>f#>55T_9GLS9Ppym_j%uiN8KI)sL0KEAU3?*2gEv%8o>h|I^1C&&Vxk& zpzlob%RU1803YnbCGgWm`j-#oV@8N{M;On<24Q6fC~5|143SpK&BDnA z0mM}DV89k(ZVoM!+CSkaZ4Vj$Kt&uJ0OlRw0@}*r0P%Z#@Gp?_kP?4{ExrSWJA$oW zQS(Q__@5K3L$L?=g;cJi2z+(PC5VS+4{;v|W1A-pG&abHXBSAZ0 z|3eG-r`Z253a693tDU(8pxE*5^U)E;Qnmk; zwf_C)jqd<=|5Z}Q{|j<{Ma`d-x_`#k{0s8(T}~m}20a{+Zs_qh>$dj<83xEV*}u+F zH{&0;kcVdLs43$=uqb~hQ|`Zo8;8*b{79s6`0iiyG=DKvKYNIO*45-W415kuColiM z&DG>Pu&qZ#??1v_d+Y&4GJA&L&-2PZ&y~)AV_Xg+F*|#^f9%-)BaSJC!;|8A+{;r*MWj{7Iym7n(~m*j6$^#`~)!b<;}s#m))5&i&`Vi^u+YBK|;C z{TK7y&x%{%XLk8-ZVxj3^vR4Ro2lK$YAI-;4ijK?Fgv$at$r3<#q%do__Yb`PrDV&= z36qrsMa$n$qy34Z+(F6i=bFv;8s`z!$90$*IGRD@Iwx_L zjUYk+*>iS5*jfEbOlMb9XEP^+gA0UnFcIOsx?vYmjxS4*K;>pakumK;MSF9h(arVP-Vp}*VII)JCI>k9p6lf_M>sp!m>e((!p;T(?$6ChgRph5cX9!A z-b3&q>m8bii+dKt*}@5^PcYjIZeeB(DI=_+*1n5)RHz}ZH$qar( zTY)BqeP-XcKSz}q=dbK<3Wxys11GO{wsB|yp|&9U*z1=z?K%EwS${eOGEjPbAQpXAUZgrT)7YX-1d6p)a{*t z8G@X2neY8>hZBBjggeqbcj)#zIN6)+nY2If@u4)wz7GOYjaI4x@ka{oFXk)uIwXuBMfJz&iajMGWnyM+wU@?_ zK4>aG@U?$ZX5ahF|8z3rd;j_0p`suGhfKhMf;!Bj9u0aAb=Fb+^mCE>FQqbmEeQS; zPdHhCz!HRb`{9DKtJ$74Ig+ya$$0&iHTpe59WhcSrq1>@t}Ygm-%Sm)=r_Z&XNP{} zmj6Ey_op(`_vH2w>i$FPbJ%|JFIk_10?(0*#!u8WbFwgT*^3EH0EO)=+<%qrgEZBD zJDDv_U;=yY#ZNN)`wodTKM&tQq650zKj`cG^KJ&;A-N7@_ znSZS>{zPV12lE3myX<8P5Y9#i8r*cxIkiMsfN!LL6$Ra_oGwn_TcJIVmLA6)lvq& z^8XkPpy1cfQVufUT!&SULx$ryFd|18?$AOUWw^t4{|dti0NOz0Iigp7q1Tbm$_|X~ z5xo!9r}q1n{=zq9kcrq+O1i+IKhpB{Tk&kKwE{v66mI;Ut^XxJ`D2@Yv??ZWP)hu7 zsm2~wj1TyM=dbqkf)2}{1E#}5$|1}AeVq}9NIb$wKWQ#23p)#tp8am34kGLQ z*$=S)r!M|4b@8)(`u=UwQFU?1LPyob-(jB)TjGD8%FZtKQ1JrTo;~yNKO#ekio;%o zKmJtlcWlDHlgJ>%`|UGk@bJU8;D;ZN9)4wh`276~bWIM^QY0j5Bt;p?iynq^_b@#! z_VowU@kARk(?lY@mR6BK#>daRv^XqL>@@%MI(nD4R=w&4$)_Pt-SNG3Br=uM9x8F% zXLt~qlCb>EIuM&sA*n5f$Exr#eL=yq|rPBHI_W6Ot=?<#y5LHb_AHmQJ4 z?XhuofmvXd84K%Rp7q9?9J7fWg}f%2LDA8(Z|I;s)J~?sm(gU)B~j?r&-#}W;^XVx zBs7t?S7}-j>LQfDL%N%IPLGvTN{ThGj`vbN$)$YK56&vl;l36yjgF))$;WU|(=v=)S!rqWu<-CCn^U!K-lEtf@SmEYl`1Ih)!x+7FqL*J#$jNX zob9|48qnOuMMdgcao6~5`^@vDQUjaYXbOI4v$W%z{H6w?U$*HbP_h`h%*eOkqydtx z2}l@}^Kcgzru6g=EHYPR0C1+89iqXzJ^Uyr84EBZdv& zs+96ee@T4V=PugyWQpNR`k8tTd@d&((}IGqBqv(l!F!qXRjy*_F|)EttEyt-QnE@q zI&R{x^X+5}Ev?Ny@;Eyf-(>_y{~01Zu1>iUN)}C*>xny3jgH6tlI~|b5wI+~ypp9t zSK1Oz*IRn_JUViMoTx|9XyYfqW^O3e&$8hNOw z$lac1?K6jq9lV6?*zNp#&vVO2<>JZ|sRgjqOVQ<%XBe=1mC{-TM$(aQD{81v+Vry$ zyiAhU%=0uExfoP|GB;-Q0WNwTlk!FU^#sG|2$eg4OM;MOlY*}+>L}D}p@_D=lcDfX z!o)alFoc{KLzIDAYq7+RELhLavm80>c}^B}3SR#;H_JHK-P`gL0Nr27FP%-DPQF?( z%^&S`i%B}Ja-=0Kt<=h0HZxv)Th>|z>U7(I0%B1$R zGr1#(P*)%>FBAb6B|B#7(5tigmljt_VjB8msNgo*jtbosmcrrHHqV}kpxBH=^}a7X z;FqMW)@+Tz9hC+6ZzBranCjhQYl1}v|5C^J`>5`UslmY)l!}T^NBdz_T-`qBmT;xs zIXBz5l#4A>3tY37UZQ*I{P0{T+KvSEsxNN<#b;Cjy&m4Dwr>RT6{E4lFEz3o&_v!d z2+P-7b}@*%Nmd((p7A=hQBr4k{4v;IidLfAvcTgt8Nov->QzIRZmGqDf(&mN^Pr~& zZ#<5>2VlISj-trYEB}zAa*VV{uENB8tLGAx0A-g3q~rj1F4L=&%c5Y=?(2ox>k$ts zD>+N;$FQ_nu6@8EO7}`IeLOQ*BZ%qgnaQn__~?^>xY@D0{khy!v_N+gBiA;l5UUDF zqY$ILrj!sLjre>&qgeS?x%DYEUSw6{j=TELW0-l#dszj%SEDbHkF$6CfP+r~efI<_ z>~^$YH?|8|sG&Aa-9r}XB)N2O?~Ekn?O8?RPyHg#Wmk|&Y=l&ego#-`>Bim$3M1YR z;28V5!YPG%$+T?`ax3(y8KGf~q6BAsftyKLCb>8QwlB?X__MQDLeLb(;eh|i3F(bV zP=rcLmo}s^F`mD~pb+Ba4z*gDU_wcPO$rp$U5*qxlPz&WRRO~1S%A;o(>+bpG+kyQ zZ~I;Ji76;TUfoNQC?_k4kM=7-C4-q~q@^jVj$b`%#$5p0Kd3$d$>WCAL zrSiAY94a2pNE>F~C`sa_oAC2`m43f9r|pua6@wU1YA4kJ3Q*4J^WH@}hxH($`Ng+7 zk)5e$&zMT>C_WLgn)EBg3}0jnY)(USn|t0`d-YZc^SjBFN0rTKmaka>%K0JQ!;a`v zs5e5>Sdf*fB;L;awlGR~68~KS&yXS66IAW<@G`rnb?+s^gm$?^mfoOmZ2MV#W~Lf> zN2>4HNLabhV?HA80ZWu&FdM1(I@0*27(umS=ZY(4$k&#?wVMAS*LT+X_QaF-reytj zkDiyu4tCj0^gP_aJPr&VGf=4sv|%o^@euH%U5jDag*i$Q=OrKV>EBQGXz7fvTP57t zS*c!1g#J80eHVnN$J1nLsm3`AU2rF1_D`jlt*h~=RgoA3Fuw#=|{%DTT zm{RR*cI}#gxQ=IYY=rmg?Dx9v!^RZg%4UH6JeK-!V(eapdPnvoe!SOLm+y#fxQ#k* zus(gi5)@z5;^Dg?ls8s^L_xSEaU)>!jaYNiwb6`P@w9n{)2=%cN)8lEBf*Ge_U2k? zy@;iEuT$_QR#f>Lb99S&+(lE8dC1RJJb9>5YH;oS3Ep7k#$M03Gz*_oBRq?!yb(73 zjU^&Ak8MQm&TVL{x|-bHE?(~0+uR60~`jU5b{kV5n>yUw+j_Y#By4hB$j;Zz9Io?n)Tz6a# z!uCq}pa=BVP z-m6M0!=3gj=_+Wi)yRzGF27c1Ftw3LQRm)^H!toKutHuJw%WG~MJRv(L`v&z!oy^2T`mk>c^fkQisbb!oUwT>f zu`9bzaJs9Me_=a|f2+I}iFVg1Wc__B4#&jxg>{Jm*Rbt1nGv7Y=cnK9T&$_taASQd zR$a1PuHt3dI3u3^pyuS`*Qxcv`5Y2~H^nL~w7p$a$o;rb$C}oXPwdnzY3YwF)7;dh zb9ggH6h^sN?zQlB@>_GgTikuUWlgTNH?@^j>%Hy1Qfwxb1)m>#SkGLAk3JL*aI3;C z`Gz3YFnA2I`K>w=1e7;C}yIU#BaOTV*nR;2XbLK28WojE9I$O zMa29gLMQcMf~ha{G8wyJ77Ge|%}hN(C64c!Z}Gq1v0Hzb_ojRD$>xA@a{<*kao??x zNha2gW@&NUf-eu36JhdMwnMM%x$>6tTT7q7w?7WLaiYdO5Pb+^R}jqqTIZ;eil|(R zCUFfZUm9C2OfJ8=d%bMX%b|?m&L)Fy{KoQ`oTt-89yOdksD_3vWNYNZHdcc7w|^bZK?WVl*8AQ#0Zaibf<=&rs+muTk%AH$8gJ@@No=`Akv%5KA}DrZRX)iO)6MGvkrMN0uNS1#?HUYowWJFTgAJP}L*UUTqOn+qP87knSx0=okWIhN ztGistVEvjr^IB3=W%1auhx^diOOMyxMZEg$FO^<}l~XB;%aw{QZ%=xBncKWnwry2Y zI!$uo{1fyh@37`D@j|K4!3e&P^5a#bp+M<`CW+eza_cEtj77|JUn{w5`X%|eWAoDO zoEb#~hY0;;mFC*&Ib^=4%srJQ$dXw`*{OAxEvB+wRx8_5$2+|;ttnl!q;Gc1o0ISF z4rWSPSx$J)J`#Q^ps+RZ>GDOnR~O8epW&Pp3&a+`SI}Q3>a&Fh$A5$D?mL7Ns8sTl zpd*%Ly}`2Q{!q8iD(~E~(pj4rG==(XV93We&wVt1*)N~V_z36ttLAjwK3-E(W#QH0Jo)Nx+sFblmB$?|KA-JN zEDf3ICYeo!;cMS%c8&=XbzWNe94Fb|*cXE!Br|XFSE+a>mu)6ap00w6c~|0IbB&ZKu4U4I+#><2G2)aVsm!ds!>fk z7O4zQGb`9uDY`SE&hUy{cIzba=~F3bVs}*V@+Ycks^O68rj?$VDe=7uJ9e!7gWFC2 zT*e7CwTjL)5NY_R0byT%F+_)5DNAk3%09s7(^ct+He9j(mJzKY4E5sLBUycUS5^hv z&`+|ZLvxwW&y8qV=@h?H>E^m$c=>F3orGn;Cw8ZPeHS=gS#|FP^7Q$X!rMC4n(I^c zQj!R}*cS5;e)jY;usI`jhVy5W*v*Apns#qpnNP|PSSLIK!cpwA=TejTjmT|nw;5Ym z#2?&y-X$P&tEE3wdeo3=``OgXCjub8O^jdxVNT#eX@d}O^ID*gBhRCYl;B~M#BImQ z^Qe{^UuMrezS*Q(O2OLB8>&~f^{(=@5~iG$a)YzvJKlTr$kC9S>*+U>;)(Sjyy=?j zc=3Y=aQd^Y@vU4`9cuEpN#H0G8h5~!5=qUg7`U!HVR zMxh_)0@j#Px-CGVz8cLdtm)>rZ~pfbx~B|YSt3ShhIg;=y?qwOytrVIXX!5|u24S? z`04~Db)q~9F3O8iM^=y^NPy|UmvjlRPJo^K@y}jXL|JT2gbgh*8@-Zu=On77p(dk9 zzRl)Xrc;1$jy;`v7I^{!-8T$QgUy7pJ1FV}gyoSizx~&mjMfb5z?ZOKCGA%4-izis zQ^Zdxn_F|KF33AR&s>erJ0oJJj!H^?;55co@bacHYxOy*<&JzAw|lp6!M&}R68m%< zh-Vzlq&pPSjv*VR^h`|;CZ*?VN{P$dl%c!YY0oEj8FwKT)pjz3`ALT+?z33E6A`tv z?PJo-o9Eco2H#_Mw>S@r;A4Y4)ls_mowbuWov>zfV!T?P29Mv zPOs2`9Wc131)DSq?Zf_dL)b7QMf_4JCU$pz->VKClCk>>M6r6PAF9qiaqrEF%kAj0 zvQm}|VmPsWZ;eZXVCzxmWV);1&Go9<&U9HD@4i}t3Ny`qZpiD~W}&=Taq{`SET^HW z82f>j^{1?}-d&@EQJ>>AR3U69zBqw#HGp|p4)WRb2hBuYEjU$IHEH6`-rM~cJG-2; z^%W05(IvpGOA)W9o|rLfIrUBR*8H^QTYvK}A1qM>SJou%FP_E~BzQ39Navv2i9Jhl zbLX{vZEALR{^p|%lcvzv3ZWp;^%FZt1_ayEH_+cW z_Z!dFM9u0~CJx7zv(ImG2DsFaR2Aeteml%BDmj`xYxgc3YvGQWC;=xsP}dVJ0e7S7 zxzI?R)*l8DJ|R`IJ120dR3|tk?5T5KnMP-F1xkdstn9S1uzNzg9S+=^`PH-wYRNHo z(}sREN4fTJtm2y!{hh)Ot9gX!R~oiEzU5}A%ho)1o4Smn*;BFi`N^DVN`gpz)luU zJSJ<+;p5&Y_n7dpxLFP*RnYdN_x{7W`tV78X&Q?Szh0Lmj0PFGf{Bni;d z%T#^HG`FK9-MUxhHaj|r_wa@8ML4hBr3Xmy4Q?K&opxY66Cj_Q6j;0|V8dmBCE8-(GKD_GQwPn9}YGj~yVe%>C zqfa$6W`caWo+OpY4RoOI3aOxRN*9eUem$1jR;Go>v6kM-NDivrF^wk z$Vphn*tXN)#t&}Y1(h4Mj*5)FBbS`opUx77D$z zk)ztGknY5{RZF0(#RWi*=P?o7&TL9hd+1~49G30uiqIqX=S$M&~#50 zDnt-|tJCF2P0be1+#>7W)Ycz%zD{6FyOCqP9>sG_)^U?YWM#rw>tjrL-1{v;t4g-v za+@|;H@D)Ta^cr!C$8=2LYXQ|Ajr4E7Z=PfT)G?DdQDU<7}gfn7L%^57EPYoy)RG=2^R9MKai#0~~KN zVdOq3Voxr2yMe&HuXk$HXkFuKa@QA|vRc&=Yco|(HH)qfrt4KQNwSYGik&@E9Q`Kj z*@q{mB;Cqijqb3E>8>(W@lic23B~P(`F4F&2>JAoJ#g$^HNNIY1AW=jHldm@(dEV0 zjY${3HD-8+_7L4p9DWJ{&zzTBMwyR-qr7HQ)Hqdc*FH z-wbx;%4>d693cf1WC;*|kVwkc;Zl&^zmT!$rNCmKR=_vuFO=`_mcHtU%($Re5RVDF40 zc^eiTL3UrJz0@;~RwxgjzWS_Y;zyS!8QR@zYW*6@Db6$n0=pMt*^-t%YF!DBQ?6(q zlcg5QlAomYT$&uUz%zc8RnaSlF?5=1EBE50&Q;kYtjx2%qIj9*rXrjlj(>5ZAXnX0PuX_!*%D`vCw&Dr~R=9K)I#$_M06BRgT%|{^Hr^zo%dQ9E!D4sXQND;Nq z95yfZ8Cd5lXX&XfAz8?1(rkQxyU5wfi}!3c8pstY+_iPwGEctv8MzS?5m)!$q44M#W%&)qEh^J$8{vCS{qwq=)yVK{_L`d&jEAkqp_OR zCHEz=RO~lvo_fjM>*?QC)L&O5xZL7?VfXpFN)7WH&2)7qG^=&2ujstWiB=(@4a)pL z@>x@AkfNLMy2?#5myu{O;?62=u?}Is?l_7`S zp7(pH+mXvVR@=6uR3BpGB%^c@&I+vaBP+vN_;C{ZZ|PsAZ)eQk;d5~MpctI5&P5nC z$5d9v5_Y`fOK%j_0#UX>22=6X?k7&o=(ph@ z^(fHZ@Fbm{?h(RZ73Tj1M`h03kCOAoIl;9WP=T$f-BQ z5h#`og_qi#A(Tn!(V{7`9-x^U(yVtL5+GNg#)1k`l94m%Pp}`n4csj<_V<{X^{<{{ zH1qv@4)3)VVTOR5aclm=iQ**whDI#pz#;#DqkPaX}4_W-*JtA9;WuZ+o3 z4oiui%jlL(b^eH5xBoVG);OZj?Rg87hyet7`I#mSnST5XNa;`5s*9@(hpgA_YTOiHLqrrKIk2eOVy*<>` zgz>UJ-}8C+Fsd0mK+{!#JOOTndULd@a9NIA^g0Q7&13w|=mRu^ zX*3;{tuxlyrkPJf9`J+6tqjm+VuKo)kU+s3>8p!yZD2%;N}^1fLA3{=*BO0w+x?W3 z<5rqw^H6T;v-jh)6871iqT+|W001%IGz^9M2Y^!2R4Pq6->!LjXz1&o9P4GA%^=_PN(B`uU&wm)ftc_797>FAyiI$|li)--eWwT0d_WQDN2B}Vf zs$?K;jv|o~k@(YMl%jkT9PoPP_g)$rymz8KyKCwK8x}?bBNKGfUUd13yW+U#C4_11 zmWO_gM#4TF2t|dalINk^$U*f})goG|<1Sa?$brX*_3=IW2q+BA1z?L4F1Akf&_v~!FrV!_)s*~M!V~9`}I9CZAvMnvF;FeP~L2zN# z{=>5Cy0;Y`;1GWWATcL1CiOAKiJK!T2_(tWG|3dZ4!4!MEerp^ouu(?q^ zzpvY&=ZxXcU%QILbD{Gn0$KJ$y8?|Wq? zC1yk#!uJ}NpeZToCBB#guU8)AvRLJ{am-NE2E89x8X&HhB=x9LL2<>O<|DahQxAt% zjxO2Q*qoNBZxJGoeQXt7w32NS$YZ!V_HykW5ryFiCFtM|Xzpo7# z;}w2uC`$Ypjf@b~`{~Ciz;)ifYu8q+?}d_uc+~+Nd^m9^)8h`>Zb>bzfpqNb%2yFi zFQ2r96np|Ar)Biy2}2|fhN{Kmf(g3N2s|A%>3}x|YHHZn z4Yu8tIH0oKff)L z79b|YkdUvNtqBV%q7@NABffSSpTzA$$CcF`mUhdY3zx6t?%bJq32JOgO6`5AeIz)c z_szt3ckI|2YGQk$%xZ(W>3}`TAY9xb>z=0U5d#l(C*i{Q_{FjU_--rxyyS(bqR1;q z#*f;lLuI8Ef+iQ^Fmn57g>`6BJ1*vCCMLQGQ=j3fHVDMxO?nye#R)X?e91PrYIwdF z^?8?{R#gOXk+H5X{au@TL3Dw6o3|*1K}MSz*|miZ7+cT|5L_>F$&2KEu8MR>RtDi5 zywDn+i-709=~n7F`4Q1!PUUaeplZ;HtJ11{sYrKVu|li0MJwu3VDQOzEmBbPNB~q& zt&Hq~>?-E})g;Bjt9(5II}sycjJ50&Qvfk~m!krv(|wvZDCR?7itOh@Yq&$`!hoIO z1YC)3IRfVcSSR%Fb?oZNc9`&y z`9K*nDrqmMt%M&anW{5O*Z{5@PE@FE+qhM&Nzts>TelY zh;HC|E&fnteG%-7B6ico4^1JB68xS;4!#YRorcaRo{;_oa3LZM93vj`p<`ej71(zZ zU#uFGH5ShRT%_K&ln0Q$h0w)TVgo4(1+YsP5za8+=W!A+rJ|@9_(&3dz!N!Mo=#5{K5p0i$aaO@VmwQc@^mkJ;sK5(Dhz z(ACFbx1s~wb)dg?W&kDqqZOUdav*Hf1O^o%o-W*O& zP7cd2`6m{tKg&(Dggee;#)bGbB-z&nH;0}&kC9VSu;cwAo@=nilV^9e@Y=f}t5n$x zxo~PJo7vt+v&%Hn0S}cgySVW77Z`+oDy*Zl?$2u|GHF`eS?)C3-Pw!>b=%=G>%cMJ zZI!FL{d)E^=g#GnP_@O2?ru!XdbXvFI(4wkp69mxy0zLQ_%Zp0ece}*0exqjmfKXf zpFdYv9csLF{DOwY^*~B5EGplP`vlov+}j=mr$Wfi8K`!*@7s+t@(pIz%u2huy=Lmo zgM=x9k`fMa3Lo+=9_Pa*wU3JRqA0Y(GW7SH+L>c<^qtxm&e8RiA~c`(B2vY!a(b=6 zPf!REnYBh}UC*klyoAk-Z~V%-Q^;l750laZ2^HgndZ*IeD^o8Lu#O*Z;;7rXPN*h= z50KEPYjy9|8~Zwg;LK=MA#DD)9vK8W`IpP2E?*{PubQT<0SFcV_jG*g`O%~$?2N$r zh%<|=eyxund*wKa&(2aS6C0aWt$}Nw)?g`uuy%LL`b7c{CO5?vpvJpV_pxR*@vje_P0S5FZa#Y)$!^5K z{$Vi*;2%ODOt_dp#l>LC>&*TqUN_Yu~;`vKkp0Qkt5X^`&mF z%{R^V<;E(wTpviSVrIMbr7n?pCiMitVm%VE6!+}F0pI{J>Xv5)#e zPiNR^E)?70(hFx`_&4u7y)s(GSMYT0vde6*qKb|ZV?j}oy2=Ii%cT$7<cgm6dPg#vHlb{8&W2%FCM?(wJd}2@S1Skex60j25%oUjI8O z;=gEb*U+r_T(capRdPB13eFoHqpO+yi@4SBR=^Fok> zO6~9}R}aevOC*8uu1!+V`9~Z> za&7gB0qXtLlOI2J+#UYPE^P@QMX)>Rnp00)s2jH?&)m?*Oab==i4D_uLYP^{I#W+>hJKI6%F=NZ8~mkZRty9SzjO^qP#V ziO+E_x)-((6cO37<8f$%Yd!Rbt_8YcBe0W$(fy}uvmQzTiWd4LMQS_Qt5HlBhH#EyfIy``YKEDt810j^5QyXV?q zvmLP8%iD`Xkl)t{{GiPfe8Rw+S%gfoeUwEt*hLOlZOaGnE-3d?0j4~;6&?##qJ#l& z$`3tk3iw3iAfFPR0d7To8caZ!j+vo560-TB5kWc$?f)HgAg*U@&(6)hxYM@hKU;#3 z-?HW5>$3z{+yEDnBo0;QQ6!jp9I7%4;stJ-?F=IFb`x z(4Lo2?%3wO@~|92fj!^_ZfF__Kq@&UI2ZYRno{|E(Ww_D=r#ff0kAm*w7Cqld18I{ z5DcslO6E-gObz%K3X&cZIJ_$7>agr*>fr#7H1*14t;lq6&+103vT~iA}*i{B(9()G^8%M>q_Qy3ZMv3e! zL%6Pj_~0RE!wN@*7=00ooMF&3Iywe#vzmu_1cf89G#=bM1zc|yI|S-TK7CUH=lV+% zid#vN?`3$vxgt>Na6(}Sifjk4dT9o8i0w#Dw5;GeKeZ$z1HLjfG8LfHGCtf*8il?~ z0>#V{?>faS98b4tDxM(!QQx^U{KqOV8m(NxOgeyl9w{O?D!|P=nm&=ui%LfcaB4i% zYknp}DOCY*@d%L(0G$+V1>9Q#NTwq>Fj1%DBv8@GZY4QNpYH%r=>vr^CB)MY2)T%k zjE4<7#&3icx)(uQ2U~G4J;npa4Pbd(D!NelBp_7{iqN9L2-k#Et^&0OwufSopdaO6 zB|gLECh<4WU_4G?wUUg65()GJ5=J;yUn0K0r~@Dlxl2OiB@$M_44EiwRe7&3yB zE$VFm_3P15GORlNBP8Dv*|eIE@V;mc!@prrbmuluE|GplkYYj?hN5VJ06#ncJXtFh zxHmP_z5MK9wajqv%0u?z8`fzF zaGy<%ow)>XJRe}#f~EI80IC#PW9kOEcTs zu`NkQ0PBZAA8y1u-q)fxwgDr3ErE?M2b=EpM@ggsA|7ACdhJWF$cKEa{Bkg84)u~K z5huW+1cx*bT6-y>;GC6c(B=prvfKMy2FMHaWd<#$m@10odB5u~GrM%~52V=OiXR>j zj>!58kdC7VvNg-dX}Lx{$R$t7JJEO171iN0_A&nTO2|(?%+G_1f&==~@TK1MQ~TsW z%}g>t$25T;F3l1^OL>NZ$d0n%xtzk0oC|Oe(39i?F>WQvJC<+}U?~A;CC|7Cf#l}N zG~?y=llL8#k7>h{P$WU9$_AHGkynH?)8H(2`_opYk&%g(%Yf97ECAICLSG^qu`@WB zFgqDVUtd`x5!`2IUkqVm#{)Mc=}fu;l|nrsS~8lRhYc%%hK5M@xi{eaTYC=5Z(nKE z=b_1Url3;XU>fu}HLmn7%Y@xB?DSl9$`IiXlDf!?d<>>WnD6clFe=xK`CBT&{e)DjJrmBkY8 z_VZz!kgFkm>qbkY-)$`QqD`#QPowIUPhN%bDNtX6e3SDJX3k=BHj!|e`8Bc`OUX(r z9_cbn#U_7M6in=dn?(M(!BhmrX|Vu{U(16$XbD9Iv~#Edy6&K*jNb97oxU-+N z1BvYHOw1SvIQhWgnt^ezqUucmPLTzPa&ceWp^qvCxxi!2@p`H~Cy&zEBl0Agc z!G4+nZ0yWuirW+|zeLoMGfKQ`xi5jz0OW*CU_!OgEVB*}})9s{2jHGt2H`g_QZRd`*0Z$@uS003pgrXR&J1>i`M`vCMparh0$ zO^ifOUPufBJllpcn<7kPx8P{TMu5c&R``=}4W9>Hctkej$5qjoMnEYKe31sgr!w<` z%YoOHVOMTkO?R;7l!Af0C(t66(~DgK1P=p{(8&U2L3}s@;=}qHXbG8~m*xJFoK~=8 zSwI7(fD!c4L(gRGE{aIeblSjn zz8a=AyLB*?JJGw8&7oD#npakL^<%;&F_j!TYVw3qUDy53HNL#w5HDt0P;CpE`=EAr zpjX8)N+Iz-)Dd6S`YwJG1ShWsHAQl)GbORZPu*hCNbhEC49UGF>}TXo;>mY8Nv^C> zm<-qC^=oqJkn&VFqIU~O1hxdMz^vlx!cI|9F{3v(d!yV338dO4C*cG$dM*sM3!WkiWMF`zw30M>Z#^ zRL_Uhv)mwvxwjo^6W?3GWq3I{yTm7yLrI%GSUx z1QqJ?G6^ziMdV9ErBa_cocQX5H{5#b;+uu&4ri^e<;64`i=R=F?-1Qj`D&?mUrmOL z$Id4ebk+eam_Qe?(rAOWLp^wf(3T^$pUA2-$HuF6LD zvP;zHdDy9mBth)Utj&-3@b-go*8BOAI~syvV}0TE$jJuGmepv5|_h zVnZ5&*QxL<2Q{;DBm3$lUq|k>Q$vpZ{N9UAPhLiyG?7j1bd&Bc4Tir-)`?hZZDpaU zD10bIzfhUO_xAENEN3@jtv3sq;-58HQ`9<}dSjnNs$jkUR3S!W3mjl?#jaFisLC65 zA-l7Mar|t9b`qR$iB`7^`@GZQR3ut5w=kjJatCp%ZWDo4zXG=@zk8@?!2Bt_V@vJB zK0Z#C>FvpF7w@x9*F8x@-;fV2FRUPzl8Gb2SGi_RB3**uTcu0yxTyMrfu15s^VB@^g>+kuF}cd}^Q^;lb%fu-uG|{vpPDGP5R6S{lj(6#O;T9B zDj#)XBGo%&Ny^KxY+gxDEz2y>w@hB8SqWc{WNzu@%0p*$0j(=@RM&tbdswfh!(YrW z&Q&aJ8_r!h&r+g1L1M{L?ATL-x?!i+oQ2j_lP`WL0Nwk1Z=%4^Gl#TFT2#J=7HHa5 zvG=9*vF z!rJFa=E-~SrMqG5XgWJJcpYnT=cvj*#IkfVep(WHa3S`v7vRI#W7w(j^tJBk%{F#( z;x{a^Z)Wo}M4U{`O1;(0r9D`bal$Dnd0+6 z%vowhvjrD+=#JA``ckFbG;$+(w>I|JL9^o0$Qu^Qfn7Hw%`N_xyE{$_)f!d}LG&YQ z-u+yyLC=Y%@!o_wd`#7CouhOODraVKvYwOAGQ3SpgQH2CmcB&t8A{g#E@Ea~wxM7zm(4G8Q`4iY%K10Q`k1rYL1rt_cg!G6?^uw67(=x`*>|3}nY$3^*k@56LRcXuP*9n#%M zcPz1hbax{qr7TEFcXziUAiZ=5N=i38H}B8y`+EM}xp(T!%sF$;b*`CO@yZ`7*=fy{ zo1h9Icq15+Y7ba!lz^4=pAqbv+4pDJBi}kj5)twib6ksvi6MIDbhTlk8Ju*lM#uJN zmd%7>rv6EDxI>WTQ~Rg2;)I*bvcDtQ6CdhnmP{>lXzNAiYgj>SnxvWmc>gd#} z)Q0GQN`Nk_N?M@%Mi9e;+j_`?Zb_C5u;43z+wn-MG~6>Iwng~lM%%$kuT0bU&nfXJ zg(SH0%4f0&Jgzodgy40ps)Z9onF2SoXy#c3-q*{y4E|r4OV3=%<3L6;x7+;moR*GDCw(5FP#7Ua-|l*e>GWJRCz>wtT|Uq z5#3?Av(^0Aa-W_W!JFNDcfExqVe*quW@&j_6q%XU9JJ_||+1LeEtTph>}+cZxQusd zqtu|!l|xXS&&GdQN)_QH{^(=W88xxamY*9&>UlUgE|^n0W|L;rJJnmKV5(xDF0qq>>zux|PJv-?&m zXtCj2V&!L6FBGA8K~AJ7wKORVpz}g}ihU6XIlOrDcJq!0->LTjbcI~Cn(#)T=4=G5 zZ_NRDkqfraeUi5M^50br@U>7vixvyF@8gg>F|Q<EQYV-g^&nqY5S+Rr z4lG(|GqQ@Fo$61Sv=yA)jZ#KAYR0+nL}6Rv>tnM(e>>jG3~x`1^Ki8)D?y zNM2L>?Hk9Udp`v0AD(9M(j|o%ysM^IbnKhQrTg5C2S*`qxU9W~3p&s^R0lfAFt@rB z5i_o<#yN%+?CA?Ntcc%Cc-m^{#+LAabshwz+w=xaL-fhBJO2&Pr!RS;-@9uB$%jpS zJsYAZRpE2Ar^t|jOLzH#U zU8$n%_4g{A%IM)43mtTo`8b@Z5?xyfD&Vb|F2NrO9#p7rf+iRa+@&7@83|ogYt)$Lg%hPBRHec$j!Ll!UuK6?H??c1Ow_T^G(!}&7Of%^DjwE zaNL$bU8$^T7Q=g+@wo#A$>U0^n#;3^e1tK?PHYz{;6M`Q(M0%J_R3R*kDLh!5J+DHA7vV}NPN0FG@- zW6Qp{{FAt5HP2Tl_BICE1K1F%M%fWl0tC7^Kz%WVhcTVHlJ0AI7tAWZyYn$~WQ^pg zSwv(_-_AEWFiVKh;Z$Pku8JR+?3qlzGsO;B%ZVTKcyIRUqZOnETA2)jtoGJVFn)cS zG}ANZh{)PzgNg{g8Rpz??OQZPn-{N?XIaN~{@Fv38ROiV@UZ#O&eu;( zg3?&OU#7(8HxiP4fK9gk(cfpSsA;};XDt?@(9ww_<6(+wF_9sZh)@9pKEUM^ib<7t zBLG`#KMyC{R^8dfuxFpS8Qo6sg$2j30rRLHkE}9bmm=%y%jsN+BZl$8XlFVI(*1jk z&)Tc-`0RK4t-bEs$26Ui1~XB#iTdM-1>a)QnFY21Bfs%LAX$0T!#E#of>LwqN0oWZ zIs7YioVCc?vjlwDYrNHYESEu2Xa3VE>@!!jcGLJCG7h8xPZwdm(&?g7HMvKG88*a@ z@csE`K{3?&0st80Vm${=$z0s8=7Pes$2tsABMVBnxS7>(0F zBnc}@KK!?GnIv7JY)+MvKeR;9d!$grg|<%qDSsi`bWIqklu==G!u-0jGB49C=i^;~ zvfE$|d~>|Om+*9oj2A<9Y$r~q@&;cGw(tEqPms;?q#55pLrjVL(t}G-kSs*igOa&n z=d$+3!nc!IOtP-LW7>3KLpVz^nyJ7qo#5r!R`OF(^?|UV4AX28?WJs0?#-IntKpU9 z87m>*H1033^c`PY zwGoBY=&Lp4kFa0W-jRLx4VwS?+`lqY=in zT9QYcwbQUs#rgKye3GWq@tdM4ghKDg&{OM^qfcy}Pa>&O9rpv_zgi`cO?$w-5R3`a zc_Rrs7|(CdhcwtLwr;rM)taO2 zdS`Ke`S-rbVHSWCA<4?gZ4DEd54~bVybc#=7#T~UTDdb`puF-Uk4B5|@??Ua>*9e~Oa1tVhth?)D(J z0JO?&Uhlo-Y>ApdokiHaYKd+y04%%u@pyM3EFq4=^hQua^U|0M=#1PcHkio74c7Y@ z8U=tWESDQ>mHUKcA&&|=&vYUH*y*aqsMEXJ-&L#WPC&nZi7bQ#$$Bnmv(cLSH0Wk6 z1{gkRr_ZUpw)Urq3ORXstLc2{iTF{<097>zFcnff9zLrdkbjC@sJ^16W@cu{^MG4# z6r@z~zKPDi0I3P3= z`M0~I0!83|x5m?}k<46Fav=U50PL00i8@oi-x&u%^W6bHS9voD933dGU1vyUL05Wg zCT-ZOXFuzA!GLC1XC#+B7NrXByk{}B^`v(aaQIa`p$bt=TlZc8A0Ps#qn?R1!-ns= z0@PzK2ETo={Qy@3U);_t+0K5QTUvwjzv(+4e~rBFYVbWRceN%|?LN!0;*wiI>sjz@ z)-^@ejrUC}NA&wE93RUsj4MlcJJBJ?ad7pnk6cZ=%@4!mAFN#EkgdPc-;L3ncm+fi60Q5#;k-=Q^)`si!MQq3?F8BP?+e{3CErqs zEA{WuO*ebaruZz*oU(bj)dKfZc9urh=j3V{Y@BAw)bUABeYDC<@W zj@qnqA-flT#jQQb>zIHNi;Do1K)b$~*;0I02^rV;BtRA6$WMuC-AT$Q9e-bzBW2Vo z^ZVLpX;kcXVa&|D^ccNT7W_f4`5;$b$htyGFUV>42H}C@+#(E*q}w!GFWjQv@#uqF}lxiy8*H@ENea)d>Uh)y8*cf&&_6Iw~a_`R7^dORNShkIk|AMwF_gOtkE(0O$_%(AiSqU{=Xor zkDNIWgtDXr<^KDVB9-vj_2?Vu0>fVBYM?5+V8Bw$Iw#WDM4QJdZT=Xajq){)Mw22v zr)qnhhDv0{cVTaef#BWOV$?SR$=m4nBff5~ZkT}f#~aBt7= znBgl!1EOk((czQq&Q-gxaDed+kBzZ}AP0es(56cJtXGM}AhDwb>_CpKD%z#pp7DM8 ze>F;3DCd?M*cR85c=(C4NUymvTAV7rCJNnLXEd%jZB8vH$*8}?lHtoqcn~42NYpD} z6j(}%U)cU5Whyg!`$A(_TBf2RU-T|KQkH`BfZCgrP~HeU_YvoYiXz`koYI^n_-H-| zb^zAg?&+<0vP=KwK`{1by$fr%C9h*38ddRIrhkMgM~Y5!qey1%lumSS?(%_k`Vmt% zfCc)9FFcAB>X|2jnDN0ve^LY1vb6>;->q`sWBBA1%@FAbjpky1chZI-X`R;T81j*$QT+y{s5otsRg zDu5Yd6f(Xqbrw}PiIu8M7DFI1UD@D-;qm(vfRdSTZpMVxeUHXLIsZt8XgnB= zgfT^g(j&jpMux65a?lu{@2Re57tHbkSY@JuSiR%>+;25J?v9CEGx-M{I*Tgzzhp+W zLU*kp=ICgB>JOZ-Q(ZhptKq6`T6H8~n1v0>=V0JS@M~z|a(=QtB%zELJ9p9{Q z7pfsO4u_8(i>TLBS_bCcwv~xZw(m%babflwY#ps@x=u^(P(QZc)euE=DR?Li0{kcXabv<*oO21952RcqADj z1a>5yjPc(MglyVi7#pGD;Yptcdas{DGJ+1F*_Nd6J0`4f$EAdi|<$DX7oe!1Anz4B`*0dsj$#iDzrsz1t@pr7#u zZi=}7?Oqo*X5ciV90ZHH5v>+*rd)_vd2c!a|LI{|?|a5X6BPD+&*LJ``k$WDtRrDz zb6I}(UjhaXF>wAwAV%&1iG*^-gCzG|i12TKzUC#v)p`R&FhF|5ssf-70ui#;Zj*qk z!l^+(6BGRFaFXR0uoM3~pZN;IfKNzKQsxt15n{gF<*jl^*e>|aS4sL(;)*kbnp=hS z|3kfTQ2>@X3|2W+6tIIrlXH!Jl!AC&og>D1U-4t!DYwcqcHvSF(!k38VzCMY+(ct9 zF@ecMC;@;AcArx2HD60?egGwsDbgne3UbC@C{UUagte$TYT@ga!?3Zqr#RuS3E;q1 z;)^A3g^FJkodzFDKps&YVR;n10oX^M=?MKVgi@6I87U08h-Vdk@N*Gl?=gnmt0(*4 zcOR6rSM9;Wee<>mkVqlNkd3;{A1vx%u7?#^Ywj_{1?Nh_wCw7gE=}#j+Xo^#lOr}I zUUgseoM^#4ElO+_V)h&_w{MvHzzP0UPKBz7z};Mnoc}m~>QibAU0Z}f#gXdt z2}2DEbLxN*mqc2i5Ic7+_1$bx?|Wj>&HLf+A?~&jXyG2R8SQeFT%%G5cEz!1eb2YP zXKJzM(6>CQ_bAGPuNX+@E4$LV5*n}vPgYYV>8v64ceR#D7Q+05CjslvhggCIgIg5Z zyxccN73Pu{wrs!12DRzy{b0}p{*Ej{K?pwEk~(Y+qnfJ3wxGS-ScBN z+muoh`wG@&9^z34DTvUJ21Mav9;r515}Kn7-ZF0lM_# zUUp6vM`txN-bzivf)oOHw?{zJ-UNB^?oX1}KjFpVD*|>-T?7c;)xzq=qoBmodLvdD zVAsK0onq8mysv{Jtn(R;ry!7%l!GNeAdr^IE~M^$gPLyjVuWi^UD9a1Z<&-fd)k&*b^QO0l*uV^>Y8^Ee=FWrcpSwo>>Q-Ec6gq42)aO{Qe3yxBz0QLx9e+g= zc+%zU(#h}KP_&+Tq#wpAVT|p4jpCs$iOm56&DOi@Rj%1Ja)%$mPhGIS*4+P=aHLW> zJ&UUuXRZ$o`+_?|niU~~Av3-R3P@A;c?&o2q_C&tSh2C4C&-C|5?9Uj?!LShCybk0 z8=(;pnA68{agYo_e9Iq7xXd<@{(;2sNnA6HvebeSg{!f+XWUGr-=l6_Q}ddqi8|Nl zFD975SQIO`V{Wj?(HXrz*7kcYTreyPvf$3B`GNtf`-mvg1 zPK%Q6pRa?_Z-RpyXzJ{k{%OzvPhGiLSgVD`TBQ2ZHd}AITl_eMKD@N)_sPV-@bHs7 zQexOEc!?!O(CdowTsg2=$?W@7{v-!;EEKvfdcuk*^9dl$c!P;HD}EAG2Q}gf{Z6Rp zuhQ}e?X-ujJ_MzpHX;iouY-f+UVWP(z&oJ8PDTM;QCXwIClJ%`35B`8s|y>pRivMx2*NP+XnOLUTt zPv^Kq(}f0dI9PXDWGStbFh`fLSLR4I2l|mQkA5{srP}AVf;AZ?!NR* z*YtUrhISwo(7!wB)FbVCsh)!xg`^Vl`#Vx{o#9h6$)F{g_2v<(2Z35jno2L>0rC+h z^EORylXgx`E==N(E`e^LBPO-xjXHBgI-CZL$y$()3b)&@eW{HFBVYZJw@~ zmCHTT%LW~Wg`)d!b%FA)qa^oqq((kRR{bWzkTZU_;j~x7CjGiDR$bIHy=G!teDf*` z*2&H}((NtiPYVRRLeY8=Tg)n|ef-^87#Vwy(a6uZH91uRkd%Xp_F>34;0T?|pYN8A z;g4hLQ6d%g;Tjj4xXn;&bNd~Wm};L@HEqbFe~0i42>NC=Oc zG_utCV*kC(;vPbRfFTxjFK$Z)OrrTbQdA_lob8LaK}7M}wU8;~?B9BQ_aG9kO){|2 zaoHa9(XGg2Gop83gY#lw>IZT$N2>~1pY~K0Z`jl`tWEV?{6!dV?=M;{&dWJy8cLe% zm5q3&6e>TMX>pu7qyOoE8!82jL?o>NJQvuI0q6b#M94^vnKN&XTFpW7& zcIon8b*y3B^k2Ei{hlj4Jcl%MZ{(1&sJvk!|5Ox*XBDXK#V@c_9%qw8Y)a;@e+2B| z%&96k-~=QXFviUEW{emec-;T^Oa8hLV4y%y13xq36%v5Y#NH2f3+~>Lj|V8`wf{1| z#>H>546%5LhGthtB0G?c$T|VpKL^b0_XH<*%)D9;-Dp+aC}ZwUsr)#m{M~uxk1_$R ze_;vz7OR&E5b=NmAmM$&n`$3Ka3)kaWvG1CIOe9maERw9g&wWh|M7KodPlK| zej<@L^Qe7ON#}0~G!a%Qj)D;(>?j0-asNzKJu3f>zt6ZvwwAJ?&<$1Tj&k`TWLWhS4%G z=%1Q7^5s1Ob30F9$TtdWlKY~P^Q&e*viPRI)_(_KPn~84WU@gYWeq523%6b3Xybhe zQYjqOjQ?GhMb%C`&R_t5fX;|X} zmS^Topb15+eADoQ3C7KO?4CHiWWFt-!jMtvSzkv&C`)BipS+vjJ%}Bb@Z|3HS{uwL zA5NleBQN*$FD>+|G4}HlD{M-L4@eq=1@})1NxjF4oJ)+@hONA+o$78RjNkkCO>{!A z;3M%m=9i#1fW+Ki1?GkKjP&!4^!7mv>}cSO%grJePHf*iFAI^C?G&8J4E!q>GJ4Wx zg4f&c1Pw1$5F~Ko1)(A924#`SK@b>6C@STozXi6E{t?Gn^77LQ`s6lKa!LtY3X@+J zycyLc)OZ#5oL`pU##}J|wwc**=l|GJ9@8nIx2^CP>hGJN*gDNB*DqrJ)FIm(?@u6o ze(?nw*jr^R+98EDqn!FzBgSn;z_$t^uOhoxyz(AH6kG#e0Y`t*0;A$b0|IzcN}%Zm)>V^kRUS!>KEF?YJ$38pzIE-)#0u=xJQ{qh+*&8gQcHXU1bEAN zr;Z24wfzK2?2&i;jYzzFFKegpKkY_B@8v{33f^K! z{VteX8JHc$wv3CzNCpoi7LOpbU#F$9o@CDA%03=QM`g>dT!ercz2x45PI;}l;{}$} zsR6@Td=)JO26s25CE`j+S$5^#G&{mp;yHh$&$`#ClQk2oCXg}fhwFFUioSF&+tHvB zit?Erm)i#_R2nFK1yhCTg2dn1Fdk}~Y`um2`R5lDh-{!u%vhUs1reC%lx;v=fIXJh z^*Wmo!S+LmEaEq;i&mJ?pf`cu@r-Wt15D;d%YH1qT!3(LC>kWB4^sZ5%U;^B_q#$^ zv4}t1784L0s~hY1Wu={M;nw7~CRK{L(W7rXgW2P+e#}7a(3W+%w~5$!$`b^(Sj^vS zEw&^PN~e3lYUfq$pfNyqY3R^I7~Gj=^bL`jdoOMLmkmA^szp|CQTlyu>3>J-dXA<- zTiCD?Q<%uP;SPuMrd2r{gE)-o0gFj)A4f3~lyKQjdeTjESWX*+rQ{~_HR^mlH8j-O zf0j=0JTSd1$rgGo_CZ3)tn+3)k3S1JjE6U8!k7gB4OukJjK|FGA$u^4D z|2j3pB(QP+Dpg=u@;q6DMyo8tvYvi0^rk0Mrf*omp_EPDFWA1O*sU!MHwnXmgxCwU{S7E#_g;q=Aj+Sp~Hh=8S zs{e3wS7cf9!@y9yIlq0&e6W`y*_!0s(C={AzRhtcrcS-_P(F$PYBkad(ND}ccO`n| zftdk?gNzilV=-nKE0ZRU~l&3IzIHpugG8+tk1bU`WRq_l73swRG_;rQ@iu$l98 zql-#GdNQ?Vg~2>)Zz1d-6S%MZZ9*4=>#brEBM%uSSiQ&K4~M@(<aV?x znJvQfr!kk5Mp)|pwWB#2rdcNpVw;J#}aW_{clPbT#@1zj20&BeKlU z8wPN|X(OaOQ)a-Z2#F4y@pW`{c!y6(rx~_5^(+<|`ln)i1fPdFCy(gF$9m$__@{c= zpXQcT(_~ozIVbx~<6la6=2^+`We9MAI3>ha>V2E&5dvU!T>YE2q-5^=)62)`Fe z?IqeyrnAvzwcl&X6>_+zNB^)S6J!}{PF*$6HRYLS+ipWmLi>rmFMztm~(O6$Dr( z9%SIi`%fERjYNl|0I%anD|(aN?!_9j+nX=4Vz#ZNKj8kJ-e>!cp10r11+r=>I=o#K z75Y}lo|*KI5;qpeZ!m5ea&`+!aZ97juou}(FT)@w46suO|dLyQqpj(p>!+ekV_`JKHlz0iZ)8$fs_JjR!IZ;m4o z4bcSLPH!*7MmLexaRC;S79rSk@BdiM@-(#Vv}^(2Tqe)IJ=d|ng_Dnzg;A*h2rwZM zx3>Nj%AnHz_H4v)0ArOQ+qX%-Cbe*KV!h~C1gM31B%BRD9XD`Y8DFnV#g;B|j^G&X z!R>g=Kk7h0Le?p7zP1$9*n#XIiAw)UW^$!^7p(I5Sw%h(AIz_r(Kx>Q2WJ_FwChQj zFh&tt4Jma}vWjS>8P(3qL1y}bMvn%UAP+=f=w8{xfQYm4Ja_*M-ZEomFC#*ss`rLOodWsAi z(-gcsL6c$%+$tjBe2rg_OE88>b8Tj=?x$Z#!nl7lHNLyJDKW82I=0>KhW2~AI}!ppPmeOI{{R+{wde3&GGd*kyicUrohKaZL4Kg~kBPup)zf&fb_r}p=Uw8DME zZ=fPj;~rhCewvgc;4ansO)e%rabxTVMDMCKo8(xa`bRKkf4{BK`^nk6BK!oG{>H%I zD8L;im0RiAX)Zn*p>^QdO+RqEnlvbtyBwh`U%R?M+8j$Jap2|Iy#$FRBdn{yT?4od z{YKEv!{noNULiZ+id6ktnb7iG)M4E0y_sez#Cay9kFq&zq&e4U?#coMLTN8`1yS@V>cEEKPY~$Y_$B;~&IzET zMpBOnETfpDaas)bNj@k%Zl{#$7qZy3gc>!DzYPmEhx3?165&VTgxb*jK@Ne%(|~of zhkLI!i~C0zpWP(rQ~q=06yMB3JB{13jm0@@yg+=*SkJ$%c!V4vAG^9@ACSO$YZ%Z@ z-nfg#@|EzjuT;_^$}I`{)IQ|zq0-STzaFq)UBvSpf8#oIHqmj_brTwj?mK~Z z!qX$NL0-)j6g?6lQV@~cf34mcdEKFL-(N>mb@Q)am_Fq-c}~ya;wf_i=kw66p_t3 zm9~;eOH6woC2BaJz5<%FC&KJ<#zpD?a^!!Uc6~J7M6p6 zO}{6lO8o%b+*b0VWNNQ&c-f!%EO7vOIFmT3DhlD~^(XapPZx7$XwG54%5_fRWJ`_h zs3J9xj0ol~+DT-5r30X~pH3eF&Nmfwg@t!;-mgC~xr(%M;)8!)b%O)cXY7m@8?5QE zd4XYno;j1p1M-@AQ+YwkR=}!fh^BL*ffWUQYD^Q%UCEj#Jf^;kMAJFH2)jPcMT-(| z6#$0o^pL!eCdGsDICNvoQ`hhlADAA%b0Uxx2-j%u1SY>mGZ}YHWCt+E2CsRF1YNRZ zPP7(*z2!u!KO)Y8s6&h1yb0Z#bn3{>OABpBNq>1$0OHNE24TED6}92Y=mw`2`$g*C zgIb)x(_-wSafzaBMS2uMl~jHmwn2wy>o<;%LPz%Kt>J4;sld_6k8m5Tf??nC$rr9* z-SxMQ(tWs^Lncn^(4c){9FxT(BHWvnA$Yq)dJ8H5`pYJ#D4Y;S5Z8y9K~YD zve(M-0AiN_;Jfwd`feceVtb$fnVyY`HHT6pA(a6X)m5|`W!s=kYuN!-FDtoVwPLL* z;hDQ5UQ}T1Y`C6zcCX3#JCGtlwA+EQew-?p^%@E(Bo4UT1gzEykdichIG|D)Bt5Fz8 zzXeDU+E6{)33Q4--4#v0J()0&e#LVY4rH_?*iP%TF(ffL0b~-uhl&!gJ)NJX+ByiC zp})rRA|w<4Edx{ouY6QP2yIMC76x zU~9!R!}r>~Iw4pj)T$k+c!9Ks_}*aElh^kKfF2Pt_Ib@MxKqkO5Fh2X>|mK*skng8 ziD6H$n?Dc2Xf_!R+2gwqe!!mucqXY~(Xcl$wa|oEBIEGEgcoGJAVLq~$^QuD@Nj?< zJYhN{9bi9)W}X-`ul_oQZP9pbWr41bgzWH+ZOJNLAmKh`V6rf&X!&(MQjmc8$VU33 z1o~9Sj;g7n$AC9k8qc=^up3ar9s>CajWwsl4vopDx*BZ{qjs3KKCi>44nw$2QlwVJ z(;ZfXpypuLqCRSmsHEJy<~xTzp^Wj6{+)l+`eWO>F5IYq4;DBR#ZqjFqg#H>(#BPU zfvpKphmpn8mj-6FbjT5Rk$p%x=?0)HNC_23af>Mve9K}to(IXl_ z2_y!oZP{7xH#ohHxz9R}To8#F>U`q;D?z^X1w#2j+@&ya4ju*MUjtpLXwobaZE>&_<>fPp6^WLQn#6hB!yDTVo8>GC)BG zyZcc9%&#y*O|OmFjnkEI|LVr3`2p}=pi#wH*@73#0tEEX5GoWah+rxFCS0vAa;rJ}Pii!SfXWSm>nSkl+FdJ%n_DU}oY@Q4S0h zAvyYgD?kD+5UDh|Th9nEx8h5+ZI}knS>Pt^{*$xNz}~xLU^gdNC{mLH$8b_2>uZiJ z^M8e22sSZgO@N&%vZoJ@E1azOs?q?EV<;j0H~^+d5e6pta+53eRc-M#k^8b!F=Kj) zbOI^uDV}hTmN}k7EzW>;$#hY3E@fWD{hrngEC3-0kQUtdM5S@c0^Kgy&ktZ(CEs=S z&H$F2128l`2M~o8w;Y6SHRrQB&rINd>W~`N9@pZRkNv%PYIg}pgRU z8}7SMr479B)QndGn-4-ms-b9()_{t9mApEz!@(z;d|t_g>}s3Gzu2N6refp4fWYYE zVe%5&D0S*usG=>yXQFc<-(D!m`K>X$T zKLk7hJxq?KMAK)UtJFWC40KRcHdInuZ5KV}Ghk9+E0h*N@Lm4q{}cda?Z5 zfDr)gx${|(74}VQ@wV-6phAb&3LQd!G6D)f$?1 z1kKuQOcYU}daCPgR8+=@%IW|emjxJC*m0G+7%dUBX;y(6cAR@9|GkUB6u!c>^ZiKh zzIYn?G`(sihLOV^#*`z|_p>e| zV~mNsuKY5d-&Hx=+bBlgkZbg*?ie~R*VTLKCM$d}ZXi!Pve#=kvg^Kn&3ZB4$nLNo z4M3JyHF7@Syy)Ms@ZSGGX=X?)c64H=0 z?#~R>Ys$Fe7qlyOjWe4V(V~V?3=t<`acUTeZaG2EH)FS#`FKUEPXHE7eB1wabV zG9UBS(>E5$Z{zD8?^Zv{X2mvpP~BMd_rg~Bvjhjw9#4-YtJGWRz)YD^u5aYM7)1x& zxD|Qf5z)3w{Aw9A-A9-ip(s2{!d=f(1=iPi@%Iio+7!^1o!(3f_&toA8OE|6XJ)>w z4AF_0%!*fb-r+!6nlcNNmQ*W)^OxL;B=GV}@bMoiKVHIz59blX1~6 zj7g;)!v7V_)15Gnus`w4oNl7ax(A`(vaVVA%!~~7?NHEk0Ws*pkZ^_-+J#d^xHx<94}_bIkto}#bx;S~Zl;X4MvL+?xAR+Ex&*sbQO9SoCi{dH zeAC-c)ov`$#U#x-SkW4@?mjHu;yyMDgj#pnY!+PbWPn{mPIbbqCPQF-SNoO{-oDM# z2;mrfqDr?|;VA1+$bm$CQTgt++{i$@IvC+o`Y_#=q_XBC|c)Gm7-m+5^o$)QQ5+Ss3;|Yq?0L22B zJA4N`PLmRA-r)`8dq1o&91I6uID8TE_T@g&`hfOhCkNS;Bdkx4X?&Q1pPQGf#?k{(4fwJZFNAt!VeijFR#+$cS?9s$pr0eX07H?jTBB$>4Z32@h)W5Z8& zQvWrSn7*xTvFamX+j}W2NhEaHVr4SF62XgkwVA4+OoOBSci%cM>U2LE999=7duw(U zh#E|p0gtoi^n$jTAnL(&pQc^4gxwbr!6O6pd-uL|n`=`Mi$nZp1X1r<`QfNZPSjr3 zk+uX`P%t6m57t4*Y@or7Bc(T?leJXI3fW#K*JHOfeg^fngSlwDz?+s`vG0aX?yonj zn72-e5mH?PlRpc=P%7KogA;PO_hxOCtq5*vu2}x-Iv@S4-Rl+Th-`3rQOZU+ehfIQ zy+!yW8!fV-S!}jT>-fAvBBiASBbtD79gHJR3k?q7doTBF_w;u(?uMZ9%925%I@er& z-{SlI%TK;NJ1;wu#f?3CPc zUFs&|f{Cbh`X6{F{tZS5J7O3JQ3eRsk{3K$T9R-Cmmq{lq$ND8a}HxAO#GYd&hA!O zy#4U6df0$Vfavs@xF>Ha=r`K;QY8wapMgV_2=!Hl_+PCeP=s(SeR4BMe!03Qe(=}r zH6sG!xlZZB`6+yWVdn&xH{70kVY?*PVs2c1$==MSDRaArPt_N)8$t@UeIL*C{~x1D zEDP!o-Rcn=^qHScHEZl=PROIs1s4`apyQ2|P=p{=FS80Nfpu!urRh#H8wQj2q~>hx z#miMpcds=Xdv+0LUlu3}rS}2Zrl5^Jzfg4cWU9YTPu6xLaNbpJ9@m6&~C8ChIq|0w-*&y zT?wZboBj%_wsV#SX7l4?#ody;1_Qb$58taA6J^0nax6!c-~6^X@A~&tm83D6d2;?d z?penn?}c;ym|>`Fg7~0zRHfeZ_nq;*w(CER$6Je}Y*JT)m2V|e-yWNW%*T8A#nF%O z9dt&v9S zRAA@fa+?V5=%7Z{Y+sRW)|qsXI?U{DXz|c z?`>XuQjj36f|^tGHVzv{VxihX%B1<$DA}UZ^#p0h;3@OS{o?sQUH;dp%S0v?8c8@M zy4TZHP5yiUe2Wy_*eEh{{jk%%)L6e4V%pSwor}ez#-X#TZ6m(L&*^~kLowb|)|i#2 zQFb70F-7YC%oH7E>dctRS=kjlBKvYLWn71j?MPKsL(OOp$_uN#F>+6k7WX{U_Mdd* zZr1IF_jp;^!D$$%4YA^@PcO$(02u)UFR7=}053*kuh1}vs0U(R61h<<>XELQc4fn< zacw!1*6w(~V^XX}8x=%(zCCE%Fw@f)^<32DXqv-TBS?8?32?QBGX6NdYpXR6Z`*&xl z7!0|t%p+H&zFbx2jG0wuJ1NEq1eLvu$oU#EF&7Y7ajHCniqCPr>4#Lknk%u`Y|s+P z^oXE0e4=uiuB$c2=L9%48ZwKQTy+f~>t8q7UEimwrGRbu#;h>Wv4U^&zx!P!BRMdM z{8!v_`<-14x9hbFCVD>Zz2q1)5R~vm7dihBuNE*Xy2VZljFF%hU1^0KdO)S>nsN#9 zj?3Z!6z7ayr^!9Zu+z?^`A(V>R}If{vC7OQxz$aq!pXeE3@rg3v^GScw-9Y`7t6kN z^ysPp<8^L=V>^+8LCcd72zo#tR`sr#IMEiKp#Nm0_iBEo`erQ}gh|t&T$j-Hfk=liJnr#hv0fQr!c!<#=cNDWyxs zuvAhr*H=9v4YIh7MUZ)$$l!9WW6jz1^6M?fu(8E+sNR~}q|o_ykcVZ(+favl(na5g z9}oYJ`E(Zpipvd)BD;*&zV-;3yKB{Gwyu9>&Cid)^*)x01T0Y7nHPj++RediBT0B{PqY>WBfqZo68{ zNB8|%oB5YRp<1Owny5=dh8sNwYjQ_Zy8Fc(d^N4FZR7hCsa3f6dgK}Cg`cRUHk-3L z-rRo>6nJ^vhWYVIjl}S(fso+vr;5~<`6Daz@Hq~#b&1$)=BDr7rZkZ}>jN)j8tGAC zazdk2#MdJ=HF~L*jJBx6e64$bx6O`XQS3#hFk?NQy6b9iA^)iviWr>pIV6tFyr&^~ zS!eLz;9i7(cfb9$4$DIPH|28~qp%B#85%K)%G45!C$Bu8Au z;BWz2^;U_d-X-ScXg(HgHx_U;@jaSnPWCaPU{~xOJyxOfu7p{Fr)tbVnqnGd?1E1; zxAXWi>)x1XKfC>FC7e=W1~mmIxOMLO?Kkd*#gvWC2CdU)Z!6*^mP=@6UYfUJ66#mV zQBZp>^isO)+zCxRdUHV+%_1j9$dQO~<9eCDhdLJuW7)n{0|AqZ50zVbY=NVL(9xR$ z+2e1v(mo#h{R}_*y!&MBXPg+Wj014)8=pv_m**1i`~H3!i{#Bf)~4VkSV)BwezrWi zCcx5KkkitzT`m8!y}Gv5APYGkP4#WmnW~qR$MFvao&5OC4iu#ioEurJDIUsZh|DIk zJ2Bt19ns3j2cDW({$6H{)e#lno9}VdXed-ZN7u{tie6YgIR3t4{06UFOTZ`#yZ#X( zMc;w7(&!%=eJ#6->?P^4N|hTHU*#cHf>NVF=FacKam(BNmFlFWfkG@@I)R>|8%_$- z@vPz!xrDYlv1y2U4A$|*witEgFP2Be^^Q2Hdrf~d$WSMOYlmo=c$d5{Z3hLTX$Uuc z&X$K<%d3ou_LUa=mkw-rjcFhMfT%ZCaVHSfDONhc-IFJL=Ub+u0lcXgO*o=YWomaU zJ8Y-!*H(uCO9KOQ=2?vvEqhCvUO-+8YZuj9r`Y^RB)vwQr`^$cPRBo=e7{=f5Ke2Q zm6P}i#p-vS8fmJrO!J*ovH3p^JdM8l|ZhIGr2-)zGK=}SCYeA`A_w-!||;}8q($tM^3jwwDj_zw{l3e zX#{LC9m+gz=M2MRM3;|~pLK0V@yKwWPc?+p%)oR(rnQvGUCbvtLRQxA>wolGj^qE%l+{w;jqLs%l?aB8T#_86f>Z7iBR9yZyU3*;Q@Cd!{ zjrf@bn#W2%zAbPV#2Uy{8(i4Pe2`_vYkIP%^|j>v2D8J{ z^BuLCiFH1OzIZFQ@8$%ym3VKY6(^8fVtTz@Vnkj+Q#M9uPVpfk2%Bwz2B>=o;n~s+4R$aufczBRVPM%X)2yOLhPDEU(T6NX^(S|_xsF+VXXZ?e zet;5qsZgcbrMUo&E0$#}S2dtn#rNK|<2Z`P>(WA%lD_yGvOIJ?_@bC8a}3gdNR)rd z2?@-vkJ{Pz@>7v8KYSP8zxjB>#a2m>BCju=9F#0r#?&zo#mADKCm#`jZyUX&KG~ws zz%7OTLT8K-{U@ z!7jnYS2-nE_-d`x?f-P_In9wBg1vp831DSahW4rpqM1pny`z@1rtnk=dK>X~1b z?PV0zu^^{AFS<6Q)aCL~LJnM%j^r}PQ~gh{m>*o{v36rqlg;_fBKb}^eD=lc?VZVs z8s^=Ji{?zU)~`eDi-S*TZEyI%gj36MO_zIq`nF~()nQhZ*nO?EzdK9gj%8I!Jn?K$8=L?FPSeL-y?F|e zQp!IEB#l0DV98SDXs1=CwY|jpsmiZ+zO6DN&FQ6bbt9Cflj|B6;w9y5zcwJ%B+JxS zy{GZS!+tX{k)|tG|Fk1EDTt`_-tMFbiw-0Gr^W^eo$W6C!7~q0X49~gBfGf)e;$Pe ztHC!cp(J@yKz34{%UJI};J|;=*E>t0lN1f%DX;Zrs?2YB9xQQHQGA4s->{d0UoanQpon?p?rDD)uV`CUz8XzOxlGzo(j~_j3uo0ruZv^pUu*7s81I zqnJ-=e8zzr%28OuzmdW!*Del@8R~Atap3!~wA*x?n80^M6b%Kegti4agK+5#7API^ za1P2_r^-<*(e$QJOO^bon~w1KpgdNas{38DJeYuKmRy(+oq7-~{iAybJn8OW)e3&s zNBZv-v^Vl7LC<6r@P?^RVXB3AcyAl}Zgo*hek3yn^&3|S*0GV@j7i!H9)Z%$U z<-~`-6L0|q8`JV7-5Z|UJ_Mz8ZpRW|T1!{eY6dK}r;I*9;B$#D!NfWs->+x07>(r2 zpwf`?BA1wtMLc{ja!n-XXQJsl@}x}1gdGW`%j&%ueU}{RJQ|6*wKMrxLc<|uy{1{C zPbI$v1i`I^-A;1w0P;iH-gJ*!z3=YE#<{P?*cNG}Ldjhlpw{LbW*2v zYZkbSRbu!M&wXH;mq(sz!b_{XAAo5! zv9kL)gmoB1oNCt3ItgfT*C1-xThZ+CpTD(3Z@FHGXie*tP>f@orGMLw>t_-3T($Xt zx!Y)XBWuKN#PxPN5!|&R@m<=qsZgdYjb-EK_a~Y=;vPEOzFV$GPUB<@9HgvGC*w^? zN}ziNVDGffOKAAE7~LDR{A&CjW-BagB!3p(nH8E|(#{@GB?LP$&zg`GH}Xn6qZ1vt za?h3k%dgJ3!*hNCfL_>=3QRi_eCbQSolkj{K^ULDtkNU*gLby`B_~1rzG5qVTyJ}A zv`TwI?CV->{N|$m)z^`^zmQPdfzw;djJ~{-Y?zC^J`qZ8^Az<+wp1PT=Jy3tX8`qL(Rj787ws>KV{z?D0R^VRvOWrC0z0N#g>%iZAI`)pr zN7KV{bm7(h__n)-y=tOb9MP+?s=k5_4nz`qXJXZT6!_=a7IFyEns1na+r>E&hlPCs zPC@^T#fXlN3srcf>+}2H1%4LmLFhVT--+?KPFex{aaA>ArmOL&eQ@UGr~42-Rh<~u zHU$YQ7R@Y`rJ<*4n^A)wSW!QhV2OxF$d~nv7mFX9RoWOJ_;q_|v?${Rf~%~xVyWiG zFJ5BYR@)b_A`zdR8Ed!7lk+!eGt^Ky7NU;b9lag+p<3)tLpwm3_kU}QEIDVTx6k|2QzIMj`zFrL^b^WHQsN%bbZt@HEZ&z`KRw)%RquQrHHdugr^neEi#J>8$ZOKDi_bZ)in~$a#bIf0`ep>O8uLemWO(#9(;$w#I)mGs zP1lOr%dUC^&wIIgx?W2ngY7hmr(Vjj&G1ei-LRff&-OQ%p`X60R(B15eW9HWHnVfD zpOj!>5`179mc)Md# z#5lr8hG+Mw89CW#xagalbGM1`(5Hc-+^1$NnzV09*f~0+Ix8nsD5FB)Yf^-3LD(d9 zHLZ-SW=KD7N)UkvjE-FG*|z@gO{)l@Z8s2^)bN=sItnk66rS(?B@tq%^rf>snZa`- zeA^a9Qa2fSd0M$Ct8Q`=h-wxa3SWLm9l(3C=%^Uai=eEBG#?v zN&13_l3?=F;9JI^+?N?7mk@0a>#GJld2)R;cxbjhmR+fR@0-`;ej8v@gQSj}A}@7u zkc1elErU*E>xFZ%JWt21yyGX^Nk10uxZl;IE_5I|`KhL*673S_mus3LxUvHm-0dfu zP7|e*(h_riRBK9=eiy&enOrrJTR^rnFgA&_qw-wvKa}Kr~6oDCzr$=MzeFj&c|hNQf>>^`5dnECZR zoV@-jF@$;4b7)BYZ*&+jmkZ0-4^{fwJbN^tx3t__bDyl&ZfTJ&Kko_e&eN}MP6{ON zM5lMm=~I&HJL=!kuZdISdG%PXY=|Vm-dX~gn}>t(l05|e`^0SjpG*rp3GLXaAFLCh z!)9Emb#~Sw;HEN6H=kCe!ff}CELw1ztSR0|4alE*zHsPCSrEz9TuJ!$ z*qbFbu(1zD+hvasK}6#am`4xnZB;d%sWW^bJnwE&n-zt?Hu9U>9D`mNyc*{T$C<-R zaOIZdu}t}3ed_xo=XnTfWTK(t@tNOcv^OqDViW1{*sxMetf|aP9!7erfn|iRYYcm5 zGosV}qj}tIjMqhPLCQWq7UsZNw4B)GOwJ%$f~5e5j%rg;^^c{)pCeb@<_R+t_-K$S zk6&jTatqal?sUc{$>un=s-(OsKXZ@X?=eVoa8yL@ubUmB!f@Nul7$nanaOM^)K@cp zte&r7QIHwG5|mX^`y{$G7|qp>ea=Kt$m<1J|2Jr+@9N`XuT`ekM%oa+h{F`YoA!<8 z5ml}9#$vGlZr82^sxsftFaU_wL)gck4v?;%HUKXtuN(Y?lo-XqbtD^1x(N~{`X?{B z|4*1G@-Y-Ft^CvlfQ(UaP+Ke?1B6(&lC4VAaIxrjZeMbj37X1NB|2V z0c3RB3A7*_in>BjCkViaC$h=_s@Q-C=k4x)y#iJIAKno{?h)Erei_b%AQs@7kj*TA z1{Yx2DnTn4LRohKz~>nR+2sD<2M68#A)e7+l7Mgj<_EZ&BvnIc3Wktltk9h-Off4M z)H4CWGtdA8>;LC=g03*yK+S72fef02rJJ z7=s)Q^db(B<(hvWu7ofoco6y>0iOf(=^0Q3<#Dz;i3WqhremtZ0V+%c6(;tQ0V-%|YDVx0=bJSJP&g69qQDvWPbKmnYZwdo zT?%ARbVGA0nYInkc$))bS0LUi0vvfw1j5&WXpX19F_HrOJ?KBQzdJgpq8>zhiF3k0 zhhCbR6Z{UpGpYuRSq{+A(IZ`{vIHal4U{2AV#Nb=rXwK{(q7tr4>0lr5LQ-xF@p`X zh!dJG=w$DKivl1YfZXx@6UI^p=#g#}NLvjV{7&(R>sA`Z16j!lwaOFx4AL({1wwb; z>rl+O=)VUcB9TEWXuW^Pfj$i=7`MK8%uX~!R`OT)pLpyvr0+w~+$R(Tkcwb523Gdi z(O*I=_hJ;ob}`KA}>Lm z_Bf+o`sbPUgSroScR$1s0kEVvw5*9LHv!GvHhSa^G@gZ54|!v*g3ZA|&_moM9Z{8{ zz~yrA@?V$x0|unCj_EtK7;}QB!1mNWgpeoVS?~aTDBLGLWQ=EDsQ&3gY5RVqP9bWTXlh#w1f0p{2L z(}zlk7fJC242n&q-_5`eMxdiw8p$E(lQfDCGNeDG{xZ}Snj#?arpLlm1%}yY3ymJq zhmr_P*8;svfb^mG{sMidwtD1f`f2Bk<3iDk4NAsPI~Kn;RMGC0 z`{!(I;KNbh)G(l+q)rnl3Pgmuj{(%ySON^9<{7CiBVr?-v>#A4s+yxV`7GUb2fp7s ze0vcI<`;Ds)Yo}2KWKGQ2g`jo9+<9?LNG>Lpe(fQB&-Jv9|S04^qiaAUjWYla5ZVr zQ-;2RVxU|6|L%A}Bfl^j|Es%Q7S!zu>NdZ`-KPU}PqR(u==~Fwd6P?vdf3NjS9tUi zm%Bay9_hUXCO+RMG+bcL$hLEW0HnI9Vqb+PuUFzaINNi9qtSvk5pl8@0%#*HF=8kh zJhJ28YsAoHQwXx_Qw_NUnFo(N44c-N6B1C$sOT+?_Vx!0fzD5z=dsAFGHqE}gzj5UZQb{-i4;GVw0w%L4IU{a`=?5c$+W2> zlSA#0|EClMX+0)q&kqhoi$tTnl!u1ElDt9}SilPO$iW*pKTn%o}GICA5f6 z1VEu@o9ZF26OJAbT+oEpY!@6L6eSG_MOgu%sP8~1N)Z1a@!958k|2Z66}ob{#E-}h zHd^^6pczdKy(>|Ht*z59YXcn{mHL)wd#7yT?u&F%4U{IJ73Yl%oe&+QLBq%8mjloR zS9%ERe}xwmSUtdFbw^l=eT7PHuw z4mM_O9cJ{GU=>Y%t3MbXE%G1e`q7-(|7!qPV5OiX5e0Po+t&aEx%dt}?fjaqH4)X0 zl(0x|3TVe^58XpTr}y=KU2e9ynXPhr5u6|E@&#x)b!P(eLmb9&h@`PGd%)BHalZ(|1KrL0InXs+Qd^Y{zBHfD z?h{N@dkz%6zTTd3YJWZXX?Ftj=_F8j$wEI+iLwKZ5l8+o_6ylFn9>FD${?hMtqlAI z+eM&ppBnmKS04Z5?+a3EGSr!%VgHR|FL2w$0h)?Lu@xdR-bD$RD-;j$MpOy|M+X4@ z3DD81SpFFj{2-_?|7uN0f#jDc2$Mhj&%hcJgL+(#>2F`dzLxWuU@F(~bqwy&qkjP# zM7Pgt@TkW)sC>fG(EE??hU*T+ZDlf~`2|CN39aqie}@d`qCklh&7^Q8f9pw;+u0X4 zn?N~CW%1p+RPb_ZupsSS>%IgKk}|yeTFy&ohv&O$20e}eD1Qg~#ua1GIc!%UAogW( zS#^pH9U-0tRyFbf9$Rzn!0t(khqcpn$L#p!q`;etK7751_Ez-v4SU-z;@ttMqwPW0 zEO$cYIQx)TRk&eTqY|N=1Dz=fy|ERjBi9uNJbAaeBdtf`* z0~wpZPtc|M9?G;40^7>3JRp4y#jVCr+&Y4;T<5?Fy=?&AJ)E}}MS-3pQ{L=i^OoEo z(ob+vUq{j9dRcQ?XQ!v-uvGK2bxMp6-#g;vnl63-HoeygzgtCQ<8B+)>eU;@YqXJUSwnM=c7~)Ud3K z$g;6ZBJPZA+c?OYwp1ehY9p+RZ$7u(T9;SUVG_Fy^mr}oW)A0^CsY;C*Vy3ynzi&? zUm3Rju6<@?IXxSPWfjaDx7QYAR7)GZOJJt&rK zk8D4TrSS5=h`*>U#`=)Ij?(JGymrl4pwE)ckF;ybrtvB~%H&2Y4p!D5FH(1x8`xcb z-4~s^-{c2eeY|G>npjJLuR=E8!gEqJuU+36IMzDry%}y7bf8eVf`O3zX)c6&Zc=rs zwaFdTJYC0oSZhzTwfSV(6_Ma>#y@kcCTM{Ib+Su>;zWfA!MymXdy1nw#KP3h+Xr; z$nxH|qxQ3emfBw$EizNNxfBIrNtn4iyrHq1E@OwGWvsc|hG=r^@0zbRwhXF|@1+X6 z8UOs`5}CT9I_0%g#&?mQ>XVjU+ByDdkn>%(mISU@gW8v=Dhzm$wRlD;2a6i5!)%gC zQ;R98p>QtVr$uGoIdi-A9JQo^U8f`|=2vbwD#emPST~=Y##C)l zNO{F{MAh7+Z$C=4N47~4-_Qu&`97hY3f&qOz40q(ZaJZ2(IO%+;@PZX;IRhs_P?IG z)Oy?77FTxzh}!ZD8A}gRB3$2>`4&5PesH5dxbxdxOGKH|K(^hwb5S3c6(0z@ooF{p zJ<+IE%q5AijLOb3Z&!<6IiRX`V*{C2W}V<@EdC6;M|fwBWs)yT&Ddv~YE)-3lr|}E zXI>G;qC9K2Z80yf*%z?MF=VYUraz`>Em*3mtwWm&$qBI*@^K ziOLIwue929^@lzjq311$dQRxP|(7J8k6P4 znrAoV4=hLs>yzg5NM4N(7jv<&Csv~0>*?f7t_4SWI&EXm3#rXL&kQY3erKbyx^op* zzjK%z(r>?jqj%IfyCX3-WAwi5tBaw_aN()mN}px2!!DvrEVY2ksK@yw#$`d+ElxqY z>xkrvc@OG?+u!tH02NPoZmmAS7zu1(tW#?p=}3Aec^uyNO=d68vTH)tMt#^~5&9j) z(CfvL&DS~!l0|4WasI%uqwf`92=88Is+)L~a5 z8V}%MsgLh3b#Q(BB&$|kvey3TutZa(LM+L==!Lzt>rMIcJkiygFyeTnId#R>hTCB~ z;zWza1}BOdL=hh5kAE)N8A!V%b+j%g3KT|OEoDzu^giFZv<~64IO%pAxmcSu5pYo# zOSuLFaI?!@Qq9RsfICA?d{^t9Xr+OQH{PgB2}*WUa*DYwF7liT|7mCs9agdnA&=;P zo~0mxAOG)|v^KmZGH^l&9{wnU$cYCV7ylU&qMvd9(6ChY#r~kNMm<*9nbj8pz4gL{ zZyxH~(c#yRN1D@gI~m7vxENTh8^q^jqP9oF&$%ni<8d~X7Qd7!SwD!tV0l$r_1v4_ zTit1Ft;)jRHKM~HrcuUNuMbvg&X$qicVb;^FNYT&zSlv(p-`o|{8Ra;jGg5NT_A6p zw`WBg>Fv$xzaHj@N$Y0$w|y|g`SVlFM|^+Ia&osOU&`$ZP*l6wy8IPu<*&@4DeD}$H*Vc8)6s?a9s%eKHYIC|HvP-vWx=%wY@~3kF35I_% zNwaA3|0aU*rJsO^*m+dRYVKWi!FQhLKP9nsaGs3)G-n5za~IgQbckV4>bQDO#khl9z5pZJV}6%TO>JRJiu;0Yxv>HNzXEtJg0!17OLY{K3Cx|v)y1VfNN$-UIPJvtX*wTj`k%D977w91U zFEGkP7bmX>dR-@zHtdOA7`RcxrT%-b@Q}9%d6WBwx5u;Jbv5|IY`8=(!OccAMMBF^ z5v{G`>gUVunH_|gcp{?J%q95i+)Mfuk3f&a9oEWs_e?*sooZ>GcKW-8TVvvxom{@x ze6$i`nS8vpf(7lrVNP7?f~~eJuTPsWU5xh!xRcg~ON5+>X*L~JdR)3*zCV%t=xjo8 z&YPG@aXzP+G6N?PGHStiyJ4#(^E+LrF!R-%Lhk#+dzYdK&Zp$#L(XrvCsohxOaz5q zW;#6bjI%vm3EG$`yz|;I%bY_k(s;;`sF~)ZiShN1?bB|ynany@yGZ|GMXRjGw#PRU zd^RgL#~&jC^5fUL>z8cQFI#?PXX5Kb8w;g)b?6Pb#mtv=s63_`rPo{M9qdCW-PT9# z`2<&-crul;n5+4ruq>%1VuU^-4|o70O4Ia|>IGT0ueN5kw4v-GH2V3VhbDs6Vnb8X0V5^DI{8W}^V?5N(Q zGU)Wn;g40UOomaifPj!28R@3^@*gj&rz6ju?_ceZ^6eY_SdsDEV0q(m)ni@prz!5I zedDu@OIwSC7$1y_f-vjP)5WD;e-k9HK8T^)CD)_GC|c&`UQ2>S@^skNXP@B{1L1A$ zQ0HrfN{79?-J_#7=dsFBIeVu(@yjQQ*H%^<072d#`FCeIuGEFoQUY(o=45peX?JCF zVXF7J&AvSGqIM;c!U@-}Mh*6Zzh*`F=8~TD&9TKeF|Bgx^d+%DQoUd7Eqgv<9vb4H zeky-J7Sg9aM*FOXd=cTvK~&MGr&mQ5lZ`MXf0j?-?UoXtqO+9yk`PpCf6-i-uUx^( zinaXLj9-K2!FFH}&q{8*7n$j5s9MsS8(p>+S_%xL?YUDDE1CovpA=!e(8=Iqw@rH{ z@)<=IfK9VK4lclZ8zfrSi{Ujf#HG*ULIC&p`?B%_w$Rmmd}C1cj(GC#!H)+KqK~3< zh3aA(-rWc2u*@>9%4S(^)|7<>_q!F)?>h0uehZ}!4j5eA(m?H|9AQNT!Bm0b-+290 z$&rgrU5*Ezi_n9ZLCo~Gl6baBI=Lb~l!L8jZB=yEXob1IP2RjS~)`Z;D$GRx<#5(6^TP7%CXtKg*3aUsSfsQzSDbmqymS`XEd_WAbV zKFBhs3pTuA7};=We0I18+hf97{uMEmPpCf;tBss&nEuuBn%6B>@{jEXU`T<^@915< zebORy8Hc!7b zGYi#1#H;8-rmmYOXe9LDbN*@<0}{!#TCuz|qH?(!yYCuDp7UnwOUo!K;W^?TbH#lg zvJRFBmLD;zU=!sT6X8!mr)zpVqi4q*DrlQy0q#y@U|i@vdg^>`G@DSu@M5 z>qLu-{YhH=%lo-7_l>Q9gqF!rxjZ}7sU-(v1J*^|kgD0qLe1*t(@n*BPC2NUV6MzAJY4U>=;(c2$*@WoLRJdi%L34xCr<$yi zeAbLC`)C1!FH2uq-Bxa>c#D`aa$Fh?dIn|XduLg7q@Jk7rT=Nh;Qd>TqUGAx!-hI8 z(O9dslDbAFML)}UW(Q03C7gp3-X1TahtWvIQ=E(>SxF?1PzF~6P%P#6hJ}1Uk~?--3<~7gJ;^%1^~?8?-BHs&z+P$IjTa1l#U zc)Ah8Dp`VgR-TTna;>Khpy}B!e68dA^QPw@&mWjcx4cTF5iiK2^YwFtLOi?5IW?k* z{#T6PLE>4uftAASMCxvSPy*r1b;5dpE>*77tZDmaifg(IaX=4z=6`V$o&OnrtL|Ln zWuWtWQGGw{+wiA_Wr_PT9wyF-S4)1KLX$+3McX6#`zbt$9WgF;j=06&Ciwe*osQL5 zY2}ND(3{YQ-kQB>{-ikPB*iP9-h84?<~Zf~dH;t3H$30NkIt52_g&UpU~Hb0-gsZz zlvh##votdhX&ss(8y|n4FFhAw9XesBmn}$ZY^HnFy%5DyAob-)<96fiS&FT@k8B&fI4&%5veHyd7m`v?-MXq3 ztUCP(@%*^_8>SAJ$Coo>gP2F`J6~+LB#(UkYzTM=lodhX>*s^KN*}4-o;#-*WCRD9L+ZQCfW)Z3pg@MCqGvoXm+pH9A(5#Mg>)=8*Y)N9#LC{r48 z*Mpa+2e&1K1i^bgFNF`s9jf99>xjQ+HK{@)N__Z&2+z>*Yd5&Ovf6nzOKaOZ%Qq8y z-8s8TO1!>%9#|zMMAcwKfw|DiKHHqFpdzW-aW3|JuLY~J+*nTL2VBOJYj6&n+J)aA zNxB#@v_JUT7W0=NEiR;kEgG-g`u}paFTaV%8fgb0pSmOwQ@3W+TNdnQv8kK(RZ9jw z+nX>98*gZTuSv9aVmX^6RP;?94et25l|SBYod0_XEXFn3TLzpW6Mx`6@AN=kU8EtE zi)W*qHzi)bYIV)8nkd#6ua;5Y+eY!nlbRX$wWR)#r@56m_+>I8yY2ravTY4umIhyJ z@m92-(RO6{ zM#I34!S?LRtX*?_8_B=~T9!dPQ5X+|jG%j0`4qg-9;L{taQ5k7BeH_m_kh$As{D$1 za%OipU_kLq19H@C{NiuhU#}2hyy#zg>k1M)=GQdc*a;AjqL*CMX+Vs+1o}ec z-xrH-AA$WW?l9($=c2{_y$(oZ{BNdZ1pyY9I?9PwE4e>M$1l8uxaep|T*5g0wS(=y zS7-en4Btk`P=5mUIOaCR;-NKe0L?4^ZXfEOWOi^&L}W5H`n{o9Mn)l4{&8HW@e_gv zyNo_eAa5ao{xyCs-rLeGsM|LM>P>EI&yH^x9`6_qC#i)aD3H+&cTf%saSRw31<7BJ zbzI&v!T?#1VdcSm|HtpS6pqgaKyqVNev2^an=UMFhK3Y_2poL!6AvgGK~|G@42zT0 z6b}>xG4IG@BT5yQ0WOuHWf_$c*GFKSm`O!!x-~%wHtUM6jHIx*1sYO?C+F78^Cp>b z7oK|{oz(`{RZ6;05kuOO2dBBAMYAPQ{PHgB5$%usrX7UHztrs39jGf1&L3wDN;=t2}<{wWe_ zYjno_z-rVpZ1caD4T9?`5+b})IvG2#uz?G3ytLZ(y$+yabE%$#gAbu)C>0Z333cA3$&Q40kjM#I48%7v;{0cHG z!x`m6_>Kc8$GNV83j?}UD?hdHuz=0`5Ow~{un$GlHL=Sy4*g0O&nMm;tTmGiI@tVo zw{FoP(1M&Dm;%YrrdG9Fq6g&kUKuvcLPD2&n`%85LHy!t&VT>ACRfFXKnjjAL#~a- z;HjSsGkiSv*$TOq?+*XdFoiHOITq;Q$U&{r<~4@E>y{jQIozK+Ma=qDL~~Q6BkWnm zp-FsnJJ8)G52T<>AoZ%A4A93IACi61OWi>E$zhSU{2;}E0!7c{kJ1Xnk=CUP4cIz| zt~ErUB14W1_-}mV+T*l~3GIT{duIor#Ka$=EPon6Y-I5;00pGwXw=FX2;Y4$`$$9& zUgp05*Y-u!f7oFgCi_T2OMz?4lK&RC68-Nv}v$c-s?> zC2+HqtzBt~esXehv{yB}x)Mm$oh1Gl3tE#I@`to+il6K_QoxSQDMAwowRH! zl+3OUk?QlGiU#woUzuBr&HO!ui9La05F>jcs+q+c(|j?2FYCYd<`4}J$RUV)Ve7Op z(C&ju85E=V3jO-}+WoNk^5~%Pa5eZzTAOuQbAZvOYn09O&q8r*dI2Qd=J~C?-*$3j zV#Z&LUS-+O)j^+|z7B$I;z$%=4pY=?Xm(-W(luN5>n|Xj=e?+j4C#a54Q> zyUH9ZiT8bJmQ{Uy{nkuXUf~9)Sa~dWf37xAe517aLN~>}1N|lVRHaChEqp@SIPaD; z5RDhyc;QrE%}x0y|GS8CKXUjZtt0jj?MNa4_EYh_D6uV-*BKsYw9ucs+rx*w;E%Gb z_X~|~98%8XDpHwp@$8X5Q(nkeW&AG|KzznDAn`md$b;J zMEmq9MrQz4XM@YGx;nOq7=m839V?kMCSvkK-uG{4c-RaIxlODJe|(Lrp2Q!H5}&7z z)tut1bO_;*Y7neRoumrEe?i7+BK{#qAy=lX<;LpI*_hIF`5V94kI&2p9@qTS;Zs!O zqclBQZg-^Wv9ekq`fSZZ0GM!(anQLZ!Mu|!`;}{td`0_vTKbhw5@iVOq5x&Y?CU~e zJZne#puOj@F7N+HBs=pm^&2&ZbseY< z>T7df>vQ>`rkWv1Bv<`Oja!_gpQYst!Re7^N<1SCg=C&$!i$g-zlXwu37*7B-2$Qo zYiqM!$?1I5v0a9r7{!dLU>-$9uexyJMf$g#Qen#nZ<}{2fQ=Ym{`4==BhYwDN?v9Q zK!V}9UqhVcvBUi5&*`w0(>L*1=MlL3v5Eet>-7YFH})Z+Tbp_3F@>$^3c7a)s>@V7 zDv8iVr}!w^5o=CPW{r6l5oC)=a`O@0l2AC%&NMmSnTRwvr~>z%FhycpM}a8TiN{=~ zL9cinS33Ny-1tAsOUflr^*~Qx41Jq~=@A8ojoSS2FeFV_IHSC2pF!Ja2KEN`sRK2k z%@9c$c$W$Fy*^v;P_O%EhF6Lug?u@#P^3ukgn`Bq41T&XG zJQRZ}+Mop7uGcDD(dxdw-oD6D^h`{ro<_&!ivl<2XU-p2Ci%!SHZ>-+E{nEX{&rRU z%2goK_t^f<#KcrCJx3QIVA54zV$`~L<2eVnoqii3SnjwkYYyM#e*Q|Ui}=Ze|EWJ| z2ZQ*o^_zOJ%|*Yol~;+1F+|8873V|n-~zwb+GCs}#H$~qY`-iALX{cIRy{aBoMD{V+P)ersB z9s8Ic^VmENz^1T@Wr_BD{?=-wgAy&MdfO@o1yO@Y3FGUC?vKD93SZcCwIcIsWXRSg zhxiW#Fc2C6Uoy(f{M&Qv&E?18!R`uamxm z+PADTCACcoD(GD;bspIh-Dr!`jX}*USd~1)rKJNHF_B&&WxEZ=n)5qydOTxD6fU^50_KeAs+(G$o>D){;c4i8{{S zGnYFq9qgRQa))fLtzc9|RYZ%{C9L$myi1967RDTt;A(&Mify5|7L{Bwm6FY1k$~X2 z+(%C<9M&IJHKQf7n#3q8kIBnvt$}mz80Tct3sib2Tp!mg2BKNe4lOdw2RT@ev*Q6~x7ZUM zPDxTxYGSmlzb}aM1D%wj;PyK;>UpXG76r?ro%NE-huP9?cDau$`h0@Q*L7dd3KPL- z?HY);MMQGgD3~6&V>T3frl5a{RStQ6> za_=Y+i5=Dg{8O=i;|~hl&C)O<6Y{4J+9XvIfU!k0L@^7JRNj6gSm{^C7oPtZUcSRm zzlraF5lri3j~N9g_fG3)J2#J#JF9V%#AQ+hm2tr;i4=HY9vq6iStHs?Ic%gJaK!@m z5Hx0fE2$Shu=?=Bl2-jb8~PU@8wJh?_(<#Vj0~+9_TdiFT+QmDp&`=Xq9Wq)8bpZW z;abWO79a@cVU8d?Rm#Eu|AUS!K2Mvu@ePN0G>+@bouSBkR&s}r!!fE!E8gxYq9fBjmPk(o{p=;19mn}3LfR>z{L*i$M8SlBx=$oPBX;=&kc zs8==dMMrMyrS+tpON|a9nN)jl|CNdxc_}{i`d}n-0gP^deCDfg@VzMTQa9=cu*zzb zD_thB=WTs4Tc8POKC0Bzp?b`150A5HZ4os}xx|qQUk0-wfAPkZ#z$;Ee1fhYlp9=) zqMUfs{Yd1yj42H@@)r?OTwDh^q##5?(Hu78J}`L`I_OKGTBrxX^!!fp3xVy)C=s<8 zv)FTyzUcga6=Bk4&{tz3?RBn8%zn%z{N$J9#(T10avUF1Rv-!=CS-H~b>hPK#6^Cv z1ukzITSH?^`Cjf0_9{4$OWZ4$I+zY>))5KtHz76Y2VHoU{nT~e4Q46Ia_js@Y4bP# zS!P6BBy1x)(=CdJYPWxbc>RV|+rL`3rd7o@uo`Yav92$d)xzW0b z+0G_}r(yz%fsBFxjDq1E9Zjf`!zQyl%EuNLJ6JD-p7K-g72cHYKO5N7857j{3Sepm zDY!ecjcyrIJ@ z`Q{Qjdw!2>L|ejxx*5KrA&#H#TOSa}wnm$~)BG|koF8bQ02PVjAmY{9Z+|2nHIJ&{ zs>4FrA}Y<^c`k||Lir%HZJQDDbOvOb)m-J|W$Wh0mdWGjwHa;NUMyNXfmQd|cPcKv zOmyWY{%dEnb}B6oUp3+e(ZdRFNw8~(qj{dZDN;ktH{d5n9cTXH9oE(tD?;;uz+tQl z8h#Tn{3u2%M3zqYaPvV^1B@137Z?XJk1dRdeg1k3cDBdmH6>Igs`PKRX@be&TcRU2 z`${+ViUvckJeGNzK&7)T^$ zvvO=xYjDAmY4G6R(BQ#_;96#`#_ov9CBV5KrlVoP z4&p*8;nzwopvJLa`aT%gBy|vU^q>(yLoVi`MycZ~LzsBz{b0|_7DLDlZ9IEkN*5E; z^0t#j7WQr8d}jUTPYcp?iTr`x#05p$0pGlEVoYc?gJ04HR0a?7{N#(N>&bqJ9geWu zfNFy~=A+;7747v!+(-Sc%YjDTPZY>Ju~1>2!bl(IaV)B8d0G2;5XUr;@}4VFG%VdA z7#bp{EdD6g*taxZNfhx*Eg4o_qB(sEb~DPi`;c4P<4%)|X;PuQL~Zk!n`I;}Xm#Eq z8-?HT8t)!HNI4aLu%ijH+qSqfswY2M(xJ6A)Ovz9dNHKBTsZ8Ff~3~!z55Bt3JWz3 z8&-HgGaC0QOZWA^iAROJXEO>*F#L@I*r(Ca?|wzRmj+Z=F^fn^>L_<(HCq#Ud5GLo zut%;)LOO`#`bdvIA(y*-Sngp9h&*!9O+MJeB(EMWMTjtj32+f7)IZpo!*wqwQ~sWE z`A5gvr_mgiY6at9;}SnP>uzf^H{XvZf*o?8-c9vuSCpnAv+CoJ>k!w~7DesXU$?m> zW3J?2oK|#({!Tihd-fZ{Se@#0c2gLJGlXa;_^|FXPx%La5t7_uSa>Pw{OA0r%YK)Q zrlt1}hQI}h5K_XYB);2(!vXz15MJ4D(zL-T+D6_2aulB!(!}%T-+!-pm*LxO)=Q7C zgV!C-L*IV*t=IPDk;rbdk4g`Mf+4cq9>UivqN{V9Wutwcs^nxo!`t6CH~ph=)>syw zX(IWN8C|@OXTHr`yB&xh{~hAC%J95>k+AIfT8!Q}z91J_t{9JLRMOFLp*(3}V0vJsnb3Xh{l4;A>XcL}wA5O2u zerfXjS9PJzZBe>U*(Bm2<@-s758Ey2QP~GhZDu9jF=R-WgD@UDr0#SJ>7_w6pX?o& z78UZ@beVMSWjtcMB0?M{S6Oo-VVz^%i@o>h2ufaNL1tA}ZAQX~cax-bO)q}^VW1nU zXY&r+B(0Phoy>amYwQ0b>@VY@>b}PT6b2-uQR!yrZb6Vya-dikS+l!LAZOK-~W5>%lpQU!#QW4wO6mT*ILI%E<S9bW7`AN6VMxw#dKHJ1nQIz9 z8r0b-My`u?P)g0gYe?CM*fh_9NR=$?SYda1^+`3#(Qe)T^ltT@quGW3%6QYp4{Ia% zeYON~gRSMqBUwQyRi8{T(V$_? zI`%S#t6DN8>`%4@hvC(Ah#V%CG-Q1PV@JFMdZPjVck6J0`)s{|;%}mKhcL|SLildnQ zk(_Fh4;n4_UfFGrKK$O17VDDrf%S?)e$=c>kFFNlPji(N%MR{gr)zF zRIDNUq0*%jxZHe(u1JcE!KAno?pc}L`|?a=Pg1H*pU8LW+Ue@Z8u^=gZI^z_1o6yS zsdehJdI^5qgAWToloA>iSF4u7Vd7-YN!N!o-97eyDu2ssqT++qI+K`wpQ+c42b@*tu(4)ac7q1>I#rbItmU0DP- z3Dv$UzMlKf;WsFXd!hzI6P zW6FN)ua0yX{T3Fp@7{0RS;ju$IR9{5iSX(43JtpLW_EH5gv@skJ1=8S1)JonF?FcT z>*<6}OHIS_#S&bTx~CY37d`Qu)d|)h|3)b{jNBPXZfVk7Xkc?1-ng8)6c>M>_XNCN zv?oNk1VWo@e#xw1C5<`D`B_$2rff}WMR9n>Ur*D$5@i4CmU8W!*r06)MAO<>a!0*@ zFYw8`;E@SQWq7n1?MNB1tuGiI&1i3vmztYnt#zjlAnq~^#d+f~MlZ=`f@ z#=H*B@PlX%VnQ8_?R`dX_mpxEA1NHX@cV~lDvmu6E3vja<4-It_+9$zDS~Xbi4hjH zaxGh-JIYYAyKeqsvHcLj81TA0OjXnDI8<$3xst+3@PtbD%!W~p92B$OiOzT63;Gqu z|Gc;Hl!~Z)$v(gn!IPByHCo#y$dk@|L~W)twN(}R&|WoR>UgrZ#$oN$d!q6ACJBZ? ztI^BiVRk2I>=6IyJjYDOGZv?&>7X-8$lQ}ocBlOXTU*(E7Hm`uMuiiyd3=6D1(h-s z9C%58@hZPRy8NJz#-mEXizNw9PqSN+JeyHN9Ot%b**=kC;887~iWG@T%HFB14^i=8 zypU70fF(Pph^hXoZpjN8V zd+zv0Yh7+Ba?-_3Ghrp^^8L-EoP#6pA6W`jqDcn@W(o?0RXDZJIYfSt1zI(LRGNdD#Z1oR6ax|N^%8(ng_Kkuza2BU0?QDt0c+j^XII?)S z%@xSH0-rCP7F?&@ds>qI7-zRq%%5S_+k6{xelKA+|1h}2-^xC>W`E+|lA5?}ZK%i0 zd>f8qi`C47S&NF0izoGaDy%a3{nIZy3xM%qh;dL3V~9o-Y$4r!CsKxAEH z8Od&Y1QZ)>Km5<0Q~-OjfyRP#?>zGfo_Auy8wX5YxAAtxqXva^a;~I;nDiJ&4v)U} zbT%jCeI5V1X=9_wB<7nCPj=@s8IQH^m3K_;c(o}L>^3bqJ8$Eq)p=+axu+d?++%k7 z?;Xuz#iwCGw*XxyAJw5Rw#j}&o&2V-|F$~WN7vjTk7{`Qh;jDV?}eME?$wY*%jjkQ zB%9@Ef2adS9K)-O?2orX&IXn%X}%jrZr`zN#YD8v5Qr-;zX`f*vF=&-tTqwJ)-&6} zH=gWfk_450x|C)&qebCb#TlI{Q9;GNRQj`%St$*cyXiaES#C$cMc$5c(n0Ium4Ao+ z>{-2-d-RC%LE`%3^C8hnZG&yjxCK-%F*Y)!CU#y$DMRs(gqNtp_&`sCJ~U2gTFj~L zjQ{m7B%GGdd-3*axRY8fXu&q^X;ao~5>G)hjpsXI_3LR_u%_9gpaK_|*2GG-wanhv z_Cn;}8Wo6NwMn3}i$8gDb^N;qO4PJ0AGZTtJGzPw`hnKv?@XtP|xsoSg!alu+;k~x^>a>w5m#dPd`B^cz#klS2MC=M`DdMxA#))^ z^0=wZ3>rH}k{*5nXzq-fu-NQk!SE}V+tq}(q@sS~jY@Exx#u^vI-UJ7YL9p-C2zV{ z3u3|&g+DGpyuB-#HC~|kHdE=`smGG!fRuuqirkNI~hMJFG9l)GHs@agP3 z_aT=~frY5GE?>{d?ZhWG#E;mGF4MX828XmM{;`?xm0~*9djzP+Rkpoti7R!JNfBV? z3arlj8h&84>g(em_t`T0V_5t6iQ<>+Gcjm3J-@Pg_U5W&tMkpFquKSj&B*L}CvXqd zC?S5y4-gZE`K0gBVb6;(*Nf3KQbZkXNu12rZrgETj_nbVAt6F&t(hURHF|{5y0XZ5n3YLqtJha>iw5}FkZ>3_CqVPphkd;@0mDe zo!BpTR&^tNx{uz_-GXyfUEG#Ku8Inz@VwfNn8-NcitGd+RgpM&6zPfR55sCmymZFosw?3d-!aAzTF-#$_a6G8Im_}^}U^lu140` zdSUizVn^=j5$wyVW_EKs011s%wtko#qJm}j&MkZQxHB`6l1DB{ zyv;0CH;eHa4coN~wsXfP#MkcaUk=tPlvHRBhvO@49!K1-sD(P+W^2piWN+FUF)j5W z?+c5hR+^JLNFZ1f&c3C)ggd@gG(LVjF@H6qqllBxAlUk0oA4>qW56xV%;qpAW>oLA zlB2kK)O};s+cZ4F1MI9om?NH@3kwLCAvfjg*{$pNjG|AM z#~t_UJy)rBv>`bcC_T@;H?ytT2h;L=px`+A(-m+IlWJ_c!>v*(H4o%aeHZ1x0rVEK zQ9!X7CKm4ZeF5Q7`f?tfMgV@iyQJTz<5R#1E@qy5xL4^Ydj*tDOVf77FSAhZ<`3KK zXEabJlidX5(RIUmY|7WnqKsL1)rkm2+)+r92Il;MC9hi*@B9a((DEq3rb6JEe__td zKl}H>SM?*3UEP|I$nc*PsrJYWZ-Kff`~bu8-kzEaGsJL1_`JZev*4`$nKUP zWKe?xH_WyjK0#I{AhRA%ld`b0RNqXGF?4=r>+HGgfiFzqQqQo-CJPKnu)!{v=^buI zt{_Tn)~iUnm`~QRVey56s|n)G9+I}p8l6XnR3Q_{jD*Vre)is-u60<)d60f_CPVh( zyMp0ZT1(4wdH6zA2kp~~@d(&En$9Gr1&QOYYDw%Rbm2+f0G}=l718DWO1tcQrcf7?&Eiw%i^JJi|PT zoQTd&p=qAoYG3@@(!bOCnN9Fj)1}$E89uSWV=B5=ElMpjnC#_(vbNPye9Efw@9Sla zQ?5I0zCmz9Z>ixE@(Ad?0KT(ea9F5U z2%II3{+0Wyk5Mk3CJ(`<3F*X&`XYVp*YYG@Bs8pgDcs(Jn9DP16~r7STt~0vz6d#t z@r-s^cV*v`E2wan;7+gADO_M~)Zkbo3!WBfE}^1*Sq6b62^c5U;0#I#ip1+AFpAUe z#?;AU&lq$N&CV$B?$zrZhg^--T9TaKjJyf_JC&BRHYMja2%p<3avS_Tc-ZMhi)q86 z7~>AW8bEJ%L*lwqRjZxK$Cx{8*$Z%*4rLh zRbJXd^1=G&>IVN7H;=!iH)_6%DW&L9bA6rAVD+kQ0}ljz@m#14`QQjc)v&A4ku>9* zy=g?}P(6D}D!w)$A9X+&{#t~t%|H|X4+q9{f}w&Zd7p&re!EROJnr(zvaY&#?B~0d zS4t$nhrMh{d|j35m0qy9fu%~r`tz3`e+TrD63cqS7X1--S9iUge=e^-NwIEh4nI3e za?n6XXuNDMnUen?liGptOG^er+k*}a6>(|}+S5O(8o9kW%MU*uw;x51$Diy-C@QV} z%^3C4QGD23S(2MDk|0=}BVh8sS^$LG>j4ty<_!y?-rPGS#{p89F(`xU^*o+AwO4EA zW=Z1gwHMa!k(Ubh66Nr$h=Yw1#itir56tex9*vGh+GqQINOz@Sx=={@^yp9dZ;$C) zt9}l4EuZ1y;%@!3o&Rqd>bEto`}x0Ux}$*?HKOEY_XHgy7^wVajf0vbc#=$v#bO!%%p9a*zeGoW7cOPklI(m5Q*XMc@d3pz77p++B^G8Nnrc-IIu zKt%=2Fu$F&*|*g>#`J1_iW!cdmTdTMG3gt1eGlDH1$=E5cJ-f`I-z$02wd7RfBoJ2 zUwoIY#FSbPF(3L0bQDieiRqX^Dh^rX+Xs^Ciob#_j>9 z9>b46WhB(^m>B8ZuXR&cFoqkp)@lJT{pKa9Uai;1Wg__&9Hod{1j*vp+g7(rUSs7h z-v*6ph(|<4AKG|8dNTwrBt`l;;7Q`WRR3yN10LmzUgzxBVyE-f5$8)?dk3^L|JG=o z)|u4J8?`q4!s0ZiXmo`iyvG`^g4$4(uZGh`r0b@084T=wO>;6Rq^eSlnyZ)??!Xm0 z$>}hA=u(1jlAR zCll*psvmR&lwVp^-~XBat~Q_LTMIXY`&yu|%XELA#EIFa=K@)$6gPAz@=K0H9<31i z7H`KP#qezLCbC=~|`Spg6_YgdM7QQBU*d&-83F5u3J|EI8 zW+?t&t|vLrA|xYw78Vsh(G=cu?CFC_rx|e70{-3ruQf`PX@~1XK~Iz3g);4%Wk-P?Vd&9Ykq7BvG0;%nN3^VW3u0c2mw&S9D1kn?m*);}*Ek2xeNH}Q>}7<>$?yv4P#Zs@U+rZujI7MBy*r`B7Xeb$}h5-`d- z?p^pk=k(rc)(Mf>USuURXZ${mYw*};Ggbo5=q_t(0acy1GnabZN*1gyI23E9i=lHI zX#S~5HO>Qfenv1jmT-jj$ms=^XA4&F38`Cv@XZ^Fk#*l8I&)HHho!M{Z&jHS(I*ef z(o0N6i;f*56v~JM4(YSig!G9sMCNFde!bNfn)xE}Bq*YQU3RLg@2LY>9qjYamkzA< zIWu8smCS5be|n_qt%O$P+)B>ZSl-&c$axMo}~5B}A$yDL$0j%D zaS|y@WsgNljwk!Gv(<1?+!_xzv~e*(IKNr+$OopSMG(LK#DYkFUifG_Pb@sBgR~C^ zp|a6^G@vRuV>!nb(9mqzfKE>}$OHb$_-NO}S9OZ`V`j@55c|6>W3*=P{-DdlK?9!; z*?FoajStsjzG&o0so;)896UH|3WL)ITbBxx$QDGo5S;leOfs2gliNi6mdg-(mPRk9 z`PF_5`W))#pB?U&-F2qzMl@n8PNOPM zP3lL_#yMNWNbi19qQpnS zerNsHzANge`g=BoWeBVNE)tIvtFZ6mCg?rR>@Ok+ zZk5g*KY80NMEj22kX#{Asp_RoqNxF~{z{66%|W)c|E=3q=6%Pim(Joo9PO$x%ZjTH zdls=I5K-rJ9Y;dzSz^lTA@6{P336S!sEyZ?(Ci{tHl9Dv z9XMc*ciF?YQ9C;+=>Nbq2-vu#g?&s@X_o|-&jiU{b0={^=9w^XZtt5m=vdtIXmRGF zZJIdlv%l#^EL|4q{RV-3C&{x{jU&yXy8?oZ@l3M+KFobA7=A2^&o-)&*wd+PkZ&pX!Z+2pq8BMy}B5;pP-JlPf83rQA@)`!Bnf%iUo(I=|`(ZK13Ti**D3iO?=0AH? zZ7NUN!P(~M>aZW$wj%Tu6JNI|!F$Q!5nexrK>(gxp@y3Mk!&@`bE8=>{Q9*@q7q&K zBRFXNV_Ev3E)Mn#jC@vo;rMq9@xYu{^WUbI4Bi4xo4eJ~%r?Q}E4h0}rCn-1StNfG zpOcfRm_D^<8BZpstJoQ>j78weKtu2Mn`?+%mYx2m!tj1_q^8j9xa4dvw@D!Csu}Vf zIGuLeEG3ra-}DM%UOm@&n)60+oLFXAG-gp>Z!{vwSm65-WRQz?$(LkEyxugcD;8nt zAmpi?yX!p4p+<+NzDpfW!$!!Sf*>fO zILO;G(ap7sL&v14Um&eqX)-Ev#O8eEp6}PISH18y6Pe(c^uFaC{qJr6rOWV;tH%q2 zdL)v2X;=b73iGwMz4`Rvum*IZQhaq@;2vIq{Cw72zBq#QQ|XPUU}@ZTMgLbRu0Jo5 z>}Eq>=@@iT6?g9p#0BEF)_3d4HOGj?{Me=`5b%rRh?MxSDFS7q8=CY!QVuevn(d8n zD(Vd+xwd2xY)m>zaI3Xx!EK&=#>mbi?l*Jlwa{Q ztOUMA3Wc78u6MqBLo^ail%JzqnJ(5HOPTsbTsFTfS-WMaAf{Vv+O7P7yw`CxD@Nj_ z!Y)xII#bauuer(<3ZhN^*sw&IXOgo+=|=%0D~6i_Ny>)o%Ld3I(%+Q8A-X}mD}WOR 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 diff --git a/src/assets/diagrams/subscriptions/check_guid.drawio b/src/assets/diagrams/subscriptions/check_guid.drawio deleted file mode 100644 index cad4f169..00000000 --- a/src/assets/diagrams/subscriptions/check_guid.drawio +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/diagrams/subscriptions/check_guid.png b/src/assets/diagrams/subscriptions/check_guid.png deleted file mode 100644 index 61c32cebef2231fac83c1ea45bbd583120b4b5f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41105 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 diff --git a/src/assets/diagrams/subscriptions/delete_subscription.drawio b/src/assets/diagrams/subscriptions/delete_subscription.drawio deleted file mode 100644 index d534995d..00000000 --- a/src/assets/diagrams/subscriptions/delete_subscription.drawio +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/diagrams/subscriptions/delete_subscription.png b/src/assets/diagrams/subscriptions/delete_subscription.png deleted file mode 100644 index b399397da3130572c4123bb1f70372cd32b4c035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64346 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 DY0nFN diff --git a/src/assets/diagrams/subscriptions/guid_update.drawio b/src/assets/diagrams/subscriptions/guid_update.drawio deleted file mode 100644 index 4bcb5432..00000000 --- a/src/assets/diagrams/subscriptions/guid_update.drawio +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/diagrams/subscriptions/guid_update.png b/src/assets/diagrams/subscriptions/guid_update.png deleted file mode 100644 index 3d91507ececc1c74083ea0f25cbf5fd620729c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70752 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
- + diff --git a/src/content/docs/docs/about.md b/src/content/docs/docs/about.md index 1b129cab..18880d8c 100644 --- a/src/content/docs/docs/about.md +++ b/src/content/docs/docs/about.md @@ -1,8 +1,6 @@ --- title: Project overview description: An introduction to the Open Podcast API project -sidebar: - order: 1 --- The Open Podcast API project is inspired by and builds upon the [gPodder API](https://gpoddernet.readthedocs.io/en/latest/api/index.html). In the summer of 2019, the creator of gPodder announced they were stepping down and the community took over.[^1] Unfortunately, about a year later the project entered 'basic maintenance mode' due to shifting priorities of key contributors. The limited availability of volunteers combined with gPodder.net's popularity among end-users meant that people started to see server errors while synchronizing or creating an account.[^2] [^3] Attempts to establish contact and collaborate on improving the situation didn't work out as hoped. Given the situation, AntennaPod contributors started discussing whether gPodder.net support should be removed[^4] or whether it could be forked. They concluded that the best solution would be to create a new API spec with a broad range of contributors to allow users to switch servers (avoiding major loads on a single server or project), to provide an opportunity to more easily go beyond the existing gPodder.net API specs, and to enable developers to address some technical issues with the API specs. diff --git a/src/content/docs/docs/coc.mdx b/src/content/docs/docs/coc.mdx index 7ff7892d..fb281065 100644 --- a/src/content/docs/docs/coc.mdx +++ b/src/content/docs/docs/coc.mdx @@ -1,8 +1,9 @@ --- title: Code of conduct description: Read this carefully before interacting with the project. +tableOfContents: false --- -import CoC from "../../../../CODE_OF_CONDUCT.md"; +import CodeOfConduct from "../../../../CODE_OF_CONDUCT.md"; - + diff --git a/src/content/docs/docs/conventions.md b/src/content/docs/docs/conventions.md index c3673a7a..84228973 100644 --- a/src/content/docs/docs/conventions.md +++ b/src/content/docs/docs/conventions.md @@ -3,11 +3,6 @@ title: Conventions description: This document outlines the design conventions and constraints that guide all specifications. --- -:::note -All specifications are currently 'in progress'. -Breaking changes can occur as we implement specifications and address issues. -::: - This document outlines the design conventions and constraints that guide all specifications. It exists to ensure a consistent, evolvable API surface and reduce the need for breaking changes in the future. diff --git a/src/content/docs/partials/_core-action.md b/src/content/docs/partials/_core-action.md deleted file mode 100644 index cc3c862b..00000000 --- a/src/content/docs/partials/_core-action.md +++ /dev/null @@ -1,3 +0,0 @@ -:::caution[Core action] -This is a **core action**. All server implementations MUST support it. -::: diff --git a/src/content/docs/partials/_core-endpoint.md b/src/content/docs/partials/_core-endpoint.md deleted file mode 100644 index d832eefb..00000000 --- a/src/content/docs/partials/_core-endpoint.md +++ /dev/null @@ -1,3 +0,0 @@ -:::caution[Core endpoint] -This is a **core endpoint**. All server implementations MUST support it. -::: diff --git a/src/content/docs/specs/error-codes.md b/src/content/docs/specs/error-codes.md index b4fcf624..e2fefcc4 100644 --- a/src/content/docs/specs/error-codes.md +++ b/src/content/docs/specs/error-codes.md @@ -97,4 +97,3 @@ All error responses **MUST** return an array of error objects using the format d - `source.pointer`: a JSON Pointer to the part of the request that caused the error - `meta`: additional non-standard metadata useful for debugging or client-side handling - diff --git a/src/content/docs/specs/extensions/link-method.md b/src/content/docs/specs/extensions/link-method.md index 0c440ea6..9946a9e8 100644 --- a/src/content/docs/specs/extensions/link-method.md +++ b/src/content/docs/specs/extensions/link-method.md @@ -14,6 +14,9 @@ sidebar: **Status** : Draft +**Namespace** +: `linkmethod` + **Purpose:** This extension allows `link` objects in JSON:API documents to explicitly declare the HTTP method supported by a link. @@ -29,7 +32,7 @@ This extension allows the use of an additional `method` member within any [link "self": "/v1/subscriptions/abc", "delete": { "href": "/v1/subscriptions/abc", - "method": "DELETE" + "linkext:method": "DELETE" } } } diff --git a/src/content/docs/specs/headers.md b/src/content/docs/specs/headers.md index 7b8de902..24d7a050 100644 --- a/src/content/docs/specs/headers.md +++ b/src/content/docs/specs/headers.md @@ -21,4 +21,3 @@ The following headers apply to all requests and responses: | -------------- | -------------------------- | ----------------------------------------------------------------------------- | | `Content-Type` | `application/vnd.api+json` | **MUST** be present in all JSON:API responses. | | `Location` | URI of created resource | **MUST** be included in `201 Created` responses to identify the new resource. | - diff --git a/src/content/docs/specs/index.md b/src/content/docs/specs/index.md index 64c3effb..38c1bf34 100644 --- a/src/content/docs/specs/index.md +++ b/src/content/docs/specs/index.md @@ -7,13 +7,12 @@ tableOfContents: false sidebar: label: Overview order: 1 +banner: + content: | + All specifications are currently "in progress". + Breaking changes can occur as we implement specifications and address issues. --- -:::caution[Important] -All specifications are currently 'in progress'. -Breaking changes can occur as we implement specifications and address issues. -::: - Below you can find the specifications which are already available. We encourage all interested projects offering podcast listening and/or synchronization functionality to adopt and implement defined specifications. We also welcome feedback on these specifications. diff --git a/src/content/docs/specs/operations/add-subscriptions.mdx b/src/content/docs/specs/operations/add-subscriptions.md similarity index 97% rename from src/content/docs/specs/operations/add-subscriptions.mdx rename to src/content/docs/specs/operations/add-subscriptions.md index fbebe193..741d37ea 100644 --- a/src/content/docs/specs/operations/add-subscriptions.mdx +++ b/src/content/docs/specs/operations/add-subscriptions.md @@ -3,12 +3,11 @@ title: Bulk add subscriptions description: Create multiple subscription resource in a single request sidebar: order: 2 +banner: + content: | + This is a core action. All server implementations MUST support it. --- -import CoreAction from "@partials/_core-action.md"; - - - ```http POST /v1/operations ``` diff --git a/src/content/docs/specs/operations/index.mdx b/src/content/docs/specs/operations/index.md similarity index 97% rename from src/content/docs/specs/operations/index.mdx rename to src/content/docs/specs/operations/index.md index 9e3ed907..e88fbc2b 100644 --- a/src/content/docs/specs/operations/index.mdx +++ b/src/content/docs/specs/operations/index.md @@ -4,12 +4,11 @@ description: The operations endpoint allows clients to perform multiple resource prev: false sidebar: order: 1 +banner: + content: | + This is a core endpoint. All server implementations MUST support it. --- -import CoreEndpoint from "@partials/_core-endpoint.md"; - - - The operations endpoint allows clients to perform multiple resource-level operations in a single, ordered request. It follows the [JSON:API Atomic Operations extension](https://jsonapi.org/ext/atomic/) and is intended for use cases where bulk writes or tightly ordered changes are needed. diff --git a/src/content/docs/specs/pagination.md b/src/content/docs/specs/pagination.md index 33e82c12..85ba5843 100644 --- a/src/content/docs/specs/pagination.md +++ b/src/content/docs/specs/pagination.md @@ -1,9 +1,10 @@ --- title: Pagination +description: Pagination enables clients to navigate result sets +prev: false +next: false --- -# Pagination - Clients **MAY** paginate resource collections using the `page` query parameter object. ## Request format diff --git a/src/content/docs/specs/subscriptions/add-subscription.mdx b/src/content/docs/specs/subscriptions/add-subscription.md similarity index 96% rename from src/content/docs/specs/subscriptions/add-subscription.mdx rename to src/content/docs/specs/subscriptions/add-subscription.md index 988af16d..e08df141 100644 --- a/src/content/docs/specs/subscriptions/add-subscription.mdx +++ b/src/content/docs/specs/subscriptions/add-subscription.md @@ -3,12 +3,11 @@ title: Add a subscription description: Add a subscription sidebar: order: 2 +banner: + content: | + This is a core action. All server implementations MUST support it. --- -import CoreAction from "@partials/_core-action.md"; - - - Enables clients to add a new subscription to the system and register the authenticated user as a subscriber. ```http diff --git a/src/content/docs/specs/subscriptions/delete-subscription.mdx b/src/content/docs/specs/subscriptions/delete-subscription.md similarity index 95% rename from src/content/docs/specs/subscriptions/delete-subscription.mdx rename to src/content/docs/specs/subscriptions/delete-subscription.md index c841f6db..2c97d87c 100644 --- a/src/content/docs/specs/subscriptions/delete-subscription.mdx +++ b/src/content/docs/specs/subscriptions/delete-subscription.md @@ -3,12 +3,11 @@ title: Delete a subscription description: Delete a subscription for the authenticated user sidebar: order: 5 +banner: + content: | + This is a core action. All server implementations MUST support it. --- -import CoreAction from "@partials/_core-action.md"; - - - Enables clients to remove a subscription for the authenticated user by `guid`. ```http diff --git a/src/content/docs/specs/subscriptions/get-subscription.mdx b/src/content/docs/specs/subscriptions/get-subscription.md similarity index 96% rename from src/content/docs/specs/subscriptions/get-subscription.mdx rename to src/content/docs/specs/subscriptions/get-subscription.md index 976fa68a..8f6685a1 100644 --- a/src/content/docs/specs/subscriptions/get-subscription.mdx +++ b/src/content/docs/specs/subscriptions/get-subscription.md @@ -3,12 +3,11 @@ title: Get a single subscription description: Get a single subscription for a user sidebar: order: 4 +banner: + content: | + This is a core action. All server implementations MUST support it. --- -import CoreAction from "@partials/_core-action.md"; - - - Enables clients to fetch a single subscription resource by its globally unique `guid`. ```http diff --git a/src/content/docs/specs/subscriptions/index.mdx b/src/content/docs/specs/subscriptions/index.md similarity index 88% rename from src/content/docs/specs/subscriptions/index.mdx rename to src/content/docs/specs/subscriptions/index.md index 8c65849f..67b729b9 100644 --- a/src/content/docs/specs/subscriptions/index.mdx +++ b/src/content/docs/specs/subscriptions/index.md @@ -5,18 +5,17 @@ prev: false sidebar: label: Overview order: 1 +banner: + content: | + This is a core endpoint. All server implementations MUST support it. --- -import CoreEndpoint from "@partials/_core-endpoint.md"; - - - The `subscriptions` endpoint is used to synchronize subscriptions between a server and connected clients. ## What is a subscription? -Subscriptions represent the relationship between **users** and **podcast feeds**. -Each user may have many subscriptions, and each feed may have many subscribers. +A subscription represents the relationship between a **user** and a **podcast feed**. +Each user may have many **subscriptions**, and each feed may have many **subscribers**. Users may add and delete subscriptions at any time. Deleting a subscription **MUST NOT** result in the feed being removed. diff --git a/src/content/docs/specs/subscriptions/list-subscriptions.mdx b/src/content/docs/specs/subscriptions/list-subscriptions.md similarity index 97% rename from src/content/docs/specs/subscriptions/list-subscriptions.mdx rename to src/content/docs/specs/subscriptions/list-subscriptions.md index bb754232..3bd38696 100644 --- a/src/content/docs/specs/subscriptions/list-subscriptions.mdx +++ b/src/content/docs/specs/subscriptions/list-subscriptions.md @@ -3,12 +3,11 @@ title: List subscriptions description: List all subscriptions for a user sidebar: order: 3 +banner: + content: | + This is a core action. All server implementations MUST support it. --- -import CoreAction from "@partials/_core-action.md"; - - - Retrieves a paginated list of podcast subscriptions associated with the authenticated user. ```http From 99b9590eed4daa4e2692bade566c0dd7a5132d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sun, 14 Sep 2025 11:50:55 +0200 Subject: [PATCH 13/16] Update package-lock --- package-lock.json | 2872 +++++++++++++++++++++++++-------------------- 1 file changed, 1593 insertions(+), 1279 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85a325c2..de364def 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,9 +39,9 @@ "license": "MIT" }, "node_modules/@antfu/utils": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", - "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.0.tgz", + "integrity": "sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -66,19 +66,22 @@ "node_modules/@astrojs/compiler": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", - "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==" + "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", + "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz", - "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", + "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", + "license": "MIT" }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.2.tgz", - "integrity": "sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", + "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", + "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.6.1", + "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", @@ -93,7 +96,7 @@ "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", - "smol-toml": "^1.3.1", + "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", @@ -102,21 +105,22 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.0.tgz", - "integrity": "sha512-OGX2KvPeBzjSSKhkCqrUoDMyzFcjKt5nTE5SFw3RdoLf0nrhyCXBQcCyclzWy1+P+XpOamn+p+hm1EhpCRyPxw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.5.tgz", + "integrity": "sha512-YB3Hhsvl1BxyY0ARe1OrnVzLNKDPXAz9epYvmL+MQ8A85duSsSLQaO3GHB6/qZJKNoLmP6PptOtCONCKkbhPeQ==", + "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.2", - "@mdx-js/mdx": "^3.1.0", - "acorn": "^8.14.1", - "es-module-lexer": "^1.6.0", + "@astrojs/markdown-remark": "6.3.6", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.15.0", + "es-module-lexer": "^1.7.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", - "source-map": "^0.7.4", + "source-map": "^0.7.6", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, @@ -131,6 +135,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "license": "MIT", "dependencies": { "prismjs": "^1.30.0" }, @@ -139,13 +144,14 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.4.1.tgz", - "integrity": "sha512-VjZvr1e4FH6NHyyHXOiQgLiw94LnCVY4v06wN/D0gZKchTMkg71GrAHJz81/huafcmavtLkIv26HnpfDq6/h/Q==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.1.tgz", + "integrity": "sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==", + "license": "MIT", "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.24.2" + "zod": "^3.24.4" } }, "node_modules/@astrojs/starlight": { @@ -190,6 +196,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "license": "MIT", "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", @@ -207,6 +214,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -220,6 +228,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -228,16 +237,18 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.28.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -247,17 +258,19 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" @@ -276,6 +289,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", @@ -325,14 +339,15 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@emnapi/runtime": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz", - "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", "license": "MIT", "optional": true, "dependencies": { @@ -340,12 +355,13 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "aix" @@ -355,12 +371,13 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -370,12 +387,13 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -385,12 +403,13 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "android" @@ -400,12 +419,13 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -415,12 +435,13 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -430,12 +451,13 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -445,12 +467,13 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -460,12 +483,13 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", "cpu": [ "arm" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -475,12 +499,13 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -490,12 +515,13 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -505,12 +531,13 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", "cpu": [ "loong64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -520,12 +547,13 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", "cpu": [ "mips64el" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -535,12 +563,13 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", "cpu": [ "ppc64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -550,12 +579,13 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", "cpu": [ "riscv64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -565,12 +595,13 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", "cpu": [ "s390x" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -580,12 +611,13 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -595,12 +627,13 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -610,12 +643,13 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -625,12 +659,13 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -640,12 +675,13 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -654,13 +690,30 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "sunos" @@ -670,12 +723,13 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -685,12 +739,13 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", "cpu": [ "ia32" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -700,12 +755,13 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -715,9 +771,10 @@ } }, "node_modules/@expressive-code/core": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.2.tgz", - "integrity": "sha512-AJW5Tp9czbLqKMzwudL9Rv4js9afXBxkSGLmCNPq1iRgAYcx9NkTPJiSNCesjKRWoVC328AdSu6fqrD22zDgDg==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.41.3.tgz", + "integrity": "sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ==", + "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^4.0.4", "hast-util-select": "^6.0.2", @@ -731,34 +788,38 @@ } }, "node_modules/@expressive-code/plugin-frames": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.2.tgz", - "integrity": "sha512-pfy0hkJI4nbaONjmksFDcuHmIuyPTFmi1JpABe4q2ajskiJtfBf+WDAL2pg595R9JNoPrrH5+aT9lbkx2noicw==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.3.tgz", + "integrity": "sha512-rFQtmf/3N2CK3Cq/uERweMTYZnBu+CwxBdHuOftEmfA9iBE7gTVvwpbh82P9ZxkPLvc40UMhYt7uNuAZexycRQ==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.2" + "@expressive-code/core": "^0.41.3" } }, "node_modules/@expressive-code/plugin-shiki": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.2.tgz", - "integrity": "sha512-xD4zwqAkDccXqye+235BH5bN038jYiSMLfUrCOmMlzxPDGWdxJDk5z4uUB/aLfivEF2tXyO2zyaarL3Oqht0fQ==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.3.tgz", + "integrity": "sha512-RlTARoopzhFJIOVHLGvuXJ8DCEme/hjV+ZnRJBIxzxsKVpGPW4Oshqg9xGhWTYdHstTsxO663s0cdBLzZj9TQA==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.2", + "@expressive-code/core": "^0.41.3", "shiki": "^3.2.2" } }, "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.2.tgz", - "integrity": "sha512-JFWBz2qYxxJOJkkWf96LpeolbnOqJY95TvwYc0hXIHf9oSWV0h0SY268w/5N3EtQaD9KktzDE+VIVwb9jdb3nw==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.3.tgz", + "integrity": "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.2" + "@expressive-code/core": "^0.41.3" } }, "node_modules/@humanwhocodes/momoa": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", "integrity": "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==", + "license": "Apache-2.0", "engines": { "node": ">=10.10.0" } @@ -770,28 +831,29 @@ "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.1.tgz", + "integrity": "sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==", "license": "MIT", "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@antfu/utils": "^8.1.0", + "@antfu/install-pkg": "^1.1.0", + "@antfu/utils": "^9.2.0", "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.14.0", + "debug": "^4.4.1", + "globals": "^15.15.0", "kolorist": "^1.8.0", - "local-pkg": "^1.0.0", + "local-pkg": "^1.1.1", "mlly": "^1.7.4" } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", + "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -803,16 +865,17 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.2.0" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", + "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "darwin" @@ -824,16 +887,17 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.2.0" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -843,12 +907,13 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", + "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "darwin" @@ -858,12 +923,13 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", + "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", "cpu": [ "arm" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -873,12 +939,13 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", + "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" @@ -903,559 +970,872 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", - "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", + "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", "cpu": [ - "ppc64" + "s390x" ], - "license": "Apache-2.0", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, "funding": { "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.0" } }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", - "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", + "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", "cpu": [ - "arm64" + "x64" ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "linux" ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", - "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@mermaid-js/parser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", - "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", - "license": "MIT", - "dependencies": { - "langium": "3.3.1" - } - }, - "node_modules/@oslojs/encoding": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", - "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" - }, - "node_modules/@pagefind/darwin-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.3.0.tgz", - "integrity": "sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==", + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", + "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", "cpu": [ "arm64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@pagefind/darwin-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.3.0.tgz", - "integrity": "sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==", + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", + "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" - ] - }, - "node_modules/@pagefind/default-ui": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.3.0.tgz", - "integrity": "sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==" + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@pagefind/linux-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.3.0.tgz", - "integrity": "sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==", + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", + "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", "cpu": [ - "arm64" + "arm" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.0" + } }, - "node_modules/@pagefind/linux-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.3.0.tgz", - "integrity": "sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==", + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", + "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", "cpu": [ - "x64" + "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@pagefind/windows-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.3.0.tgz", - "integrity": "sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==", - "cpu": [ - "x64" ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@readme/better-ajv-errors": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-2.3.2.tgz", - "integrity": "sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/runtime": "^7.22.5", - "@humanwhocodes/momoa": "^2.0.3", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "ajv": "4.11.8 - 8" - } - }, - "node_modules/@readme/openapi-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-4.1.2.tgz", - "integrity": "sha512-lAFH88r/CHs5VZDUocEda0OSMSQsr6801sziIjOKyVA+0hSFN+BPuelPF5XvkMROHecnPd+XEJN1iNQqCgER/g==", - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^13.0.5", - "@readme/better-ajv-errors": "^2.3.2", - "@readme/openapi-schemas": "^3.1.0", - "@types/json-schema": "^7.0.15", - "ajv": "^8.12.0", - "ajv-draft-04": "^1.0.0" - }, - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@readme/openapi-schemas": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@readme/openapi-schemas/-/openapi-schemas-3.1.0.tgz", - "integrity": "sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", - "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, "engines": { - "node": ">=14.0.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "funding": { + "url": "https://opencollective.com/libvips" }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.0" } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", - "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", + "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", "cpu": [ - "arm" + "ppc64" ], + "license": "Apache-2.0", "optional": true, "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", - "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", - "cpu": [ - "arm64" + "linux" ], - "optional": true, - "os": [ - "android" - ] + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", - "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", + "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", "cpu": [ - "arm64" + "s390x" ], + "license": "Apache-2.0", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", - "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", + "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ - "darwin" - ] + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.0" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", - "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", + "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", "cpu": [ "arm64" ], + "license": "Apache-2.0", "optional": true, "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", - "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", - "cpu": [ - "x64" + "linux" ], - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", - "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", + "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", "cpu": [ - "arm" + "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", - "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", - "cpu": [ - "arm" ], - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", - "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", + "node_modules/@img/sharp-wasm32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", + "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", "cpu": [ - "arm64" + "wasm32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@emnapi/runtime": "^1.4.4" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", - "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", + "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", "cpu": [ "arm64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", - "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", - "cpu": [ - "loong64" + "win32" ], - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", - "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", + "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", "cpu": [ - "ppc64" + "ia32" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "linux" - ] + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", - "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", + "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", "cpu": [ - "riscv64" + "x64" ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", - "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", - "cpu": [ - "riscv64" + "win32" ], - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", - "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mermaid-js/parser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", + "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", + "license": "MIT", + "dependencies": { + "langium": "3.3.1" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.4.0.tgz", + "integrity": "sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==", "cpu": [ - "s390x" + "arm64" ], + "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ] }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", - "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", + "node_modules/@pagefind/darwin-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.4.0.tgz", + "integrity": "sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ] }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", - "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", + "node_modules/@pagefind/default-ui": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.4.0.tgz", + "integrity": "sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ==", + "license": "MIT" + }, + "node_modules/@pagefind/freebsd-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/freebsd-x64/-/freebsd-x64-1.4.0.tgz", + "integrity": "sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ] }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", - "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", + "node_modules/@pagefind/linux-arm64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.4.0.tgz", + "integrity": "sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", - "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", + "node_modules/@pagefind/linux-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.4.0.tgz", + "integrity": "sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==", "cpu": [ - "ia32" + "x64" ], + "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ] }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", - "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", + "node_modules/@pagefind/windows-x64": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.4.0.tgz", + "integrity": "sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@shikijs/core": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.12.2.tgz", - "integrity": "sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q==", - "license": "MIT", + "node_modules/@readme/better-ajv-errors": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-2.3.2.tgz", + "integrity": "sha512-T4GGnRAlY3C339NhoUpgJJFsMYko9vIgFAlhgV+/vEGFw66qEY4a4TRJIAZBcX/qT1pq5DvXSme+SQODHOoBrw==", + "license": "Apache-2.0", "dependencies": { - "@shikijs/types": "3.12.2", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" + "@babel/code-frame": "^7.22.5", + "@babel/runtime": "^7.22.5", + "@humanwhocodes/momoa": "^2.0.3", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "ajv": "4.11.8 - 8" } }, - "node_modules/@shikijs/engine-javascript": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.12.2.tgz", - "integrity": "sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw==", + "node_modules/@readme/openapi-parser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@readme/openapi-parser/-/openapi-parser-4.1.2.tgz", + "integrity": "sha512-lAFH88r/CHs5VZDUocEda0OSMSQsr6801sziIjOKyVA+0hSFN+BPuelPF5XvkMROHecnPd+XEJN1iNQqCgER/g==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" + "@apidevtools/json-schema-ref-parser": "^13.0.5", + "@readme/better-ajv-errors": "^2.3.2", + "@readme/openapi-schemas": "^3.1.0", + "@types/json-schema": "^7.0.15", + "ajv": "^8.12.0", + "ajv-draft-04": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "openapi-types": ">=7" } }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.12.2.tgz", - "integrity": "sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==", + "node_modules/@readme/openapi-schemas": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@readme/openapi-schemas/-/openapi-schemas-3.1.0.tgz", + "integrity": "sha512-9FC/6ho8uFa8fV50+FPy/ngWN53jaUu4GRXlAjcxIRrzhltJnpKkBG2Tp0IDraFJeWrOpk84RJ9EMEEYzaI1Bw==", "license": "MIT", - "dependencies": { - "@shikijs/types": "3.12.2", - "@shikijs/vscode-textmate": "^10.0.2" + "engines": { + "node": ">=18" } }, - "node_modules/@shikijs/langs": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.12.2.tgz", - "integrity": "sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==", + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2" + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@shikijs/themes": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.12.2.tgz", - "integrity": "sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==", + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@shikijs/types": "3.12.2" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@shikijs/types": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.12.2.tgz", - "integrity": "sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "dependencies": { - "tslib": "^2.8.0" - } + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.12.2.tgz", + "integrity": "sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.12.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.12.2.tgz", + "integrity": "sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.12.2", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.12.2.tgz", + "integrity": "sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.12.2", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.12.2.tgz", + "integrity": "sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.12.2" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.12.2.tgz", + "integrity": "sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.12.2" + } + }, + "node_modules/@shikijs/types": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.12.2.tgz", + "integrity": "sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "license": "MIT", "dependencies": { "@types/d3-array": "*", @@ -1491,9 +1871,9 @@ } }, "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", "license": "MIT" }, "node_modules/@types/d3-axis": { @@ -1709,6 +2089,7 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { "@types/ms": "*" } @@ -1716,12 +2097,14 @@ "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -1730,6 +2113,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1744,6 +2128,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -1751,7 +2136,8 @@ "node_modules/@types/js-yaml": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -1763,6 +2149,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -1770,27 +2157,31 @@ "node_modules/@types/mdx": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" }, "node_modules/@types/nlcst": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/node": { - "version": "18.19.112", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", - "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", + "version": "24.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.3.tgz", + "integrity": "sha512-GKBNHjoNw3Kra1Qg5UXttsY5kiWMEfoHq2TmXb+b1rcm6N7B3wTrFYIf/oSZ1xNQ+hVVijgLkiDZh7jRRsh+Gw==", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.10.0" } }, "node_modules/@types/picomatch": { @@ -1803,6 +2194,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1817,17 +2209,20 @@ "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1839,6 +2234,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -1847,6 +2243,7 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1862,6 +2259,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "license": "MIT", "peerDependencies": { "ajv": "^8.5.0" }, @@ -1875,6 +2273,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } @@ -1883,6 +2282,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -1890,12 +2290,14 @@ "node_modules/ansi-align/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/ansi-align/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1909,6 +2311,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -1917,9 +2320,10 @@ } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -1928,9 +2332,10 @@ } }, "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -1942,6 +2347,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1954,6 +2360,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1964,17 +2371,20 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -1983,6 +2393,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1992,6 +2403,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", "bin": { "astring": "bin/astring" } @@ -2082,11 +2494,12 @@ } }, "node_modules/astro-expressive-code": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.2.tgz", - "integrity": "sha512-HN0jWTnhr7mIV/2e6uu4PPRNNo/k4UEgTLZqbp3MrHU+caCARveG2yZxaZVBmxyiVdYqW5Pd3u3n2zjnshixbw==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.3.tgz", + "integrity": "sha512-u+zHMqo/QNLE2eqYRCrK3+XMlKakv33Bzuz+56V1gs8H0y6TZ0hIi3VNbIxeTn51NLn+mJfUV/A0kMNfE4rANw==", + "license": "MIT", "dependencies": { - "rehype-expressive-code": "^0.41.2" + "rehype-expressive-code": "^0.41.3" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" @@ -2106,45 +2519,11 @@ "mermaid": "^10.0.0 || ^11.0.0" } }, - "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", - "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", - "license": "MIT" - }, - "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", - "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.2", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.1.0", - "js-yaml": "^4.1.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.2.1", - "smol-toml": "^1.3.4", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.3" - } - }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -2153,6 +2532,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2161,7 +2541,8 @@ "node_modules/base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", @@ -2180,12 +2561,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/bcp-47": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", @@ -2200,6 +2583,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2222,17 +2606,20 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/boxen": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", @@ -2254,6 +2641,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", "dependencies": { "base64-js": "^1.1.2" } @@ -2262,6 +2650,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -2273,15 +2662,17 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -2293,6 +2684,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2302,6 +2694,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2311,6 +2704,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2320,6 +2714,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2355,6 +2750,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -2384,6 +2780,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2395,6 +2792,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -2403,6 +2801,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -2411,6 +2810,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2420,6 +2820,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -2432,6 +2833,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2442,12 +2844,14 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -2457,6 +2861,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2474,7 +2879,8 @@ "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" }, "node_modules/confbox": { "version": "0.2.2", @@ -2486,6 +2892,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", "engines": { "node": ">=18" } @@ -2509,6 +2916,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", "dependencies": { "node-fetch": "^2.7.0" } @@ -2517,14 +2925,15 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "license": "MIT", "dependencies": { "uncrypto": "^0.1.3" } }, "node_modules/css-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.2.tgz", - "integrity": "sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.1.3.tgz", + "integrity": "sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==", "funding": [ { "type": "github", @@ -2534,12 +2943,14 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/css-tree": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" @@ -2552,6 +2963,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -2997,11 +3409,6 @@ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "license": "ISC", - "node_modules/crossws": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", - "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", - "license": "MIT", "dependencies": { "d3-time": "1 - 3" }, @@ -3064,15 +3471,16 @@ } }, "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "version": "1.11.18", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", + "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3089,6 +3497,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, @@ -3116,6 +3525,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -3123,12 +3533,14 @@ "node_modules/destr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", - "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==" + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" }, "node_modules/detect-libc": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -3137,6 +3549,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", "dependencies": { "base-64": "^1.0.0" }, @@ -3154,6 +3567,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -3165,12 +3579,14 @@ "node_modules/dfa": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", - "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -3179,6 +3595,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", "bin": { "direction": "cli.js" }, @@ -3190,7 +3607,8 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" }, "node_modules/dompurify": { "version": "3.2.6", @@ -3205,19 +3623,22 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "license": "MIT" }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -3228,12 +3649,14 @@ "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==" + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" }, "node_modules/esast-util-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -3249,6 +3672,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", @@ -3261,10 +3685,11 @@ } }, "node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3272,37 +3697,39 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" } }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -3314,6 +3741,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -3326,6 +3754,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -3341,6 +3770,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3350,6 +3780,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" @@ -3363,6 +3794,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -3377,6 +3809,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" @@ -3390,6 +3823,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -3397,17 +3831,19 @@ "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, "node_modules/expressive-code": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.2.tgz", - "integrity": "sha512-aLZiZaqorRtNExtGpUjK9zFH9aTpWeoTXMyLo4b4IcuXfPqtLPPxhRm/QlPb8QqIcMMXnSiGRHSFpQfX0m7HJw==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.3.tgz", + "integrity": "sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==", + "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.2", - "@expressive-code/plugin-frames": "^0.41.2", - "@expressive-code/plugin-shiki": "^0.41.2", - "@expressive-code/plugin-text-markers": "^0.41.2" + "@expressive-code/core": "^0.41.3", + "@expressive-code/plugin-frames": "^0.41.3", + "@expressive-code/plugin-shiki": "^0.41.3", + "@expressive-code/plugin-text-markers": "^0.41.3" } }, "node_modules/exsolve": { @@ -3419,17 +3855,19 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", @@ -3439,12 +3877,17 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -3458,6 +3901,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -3466,6 +3910,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.0.tgz", "integrity": "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==", + "license": "MIT", "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" @@ -3475,6 +3920,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", @@ -3492,6 +3938,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3501,9 +3948,10 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -3514,7 +3962,8 @@ "node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" }, "node_modules/globals": { "version": "15.15.0", @@ -3555,6 +4004,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/hast-util-definition-list/-/hast-util-definition-list-2.1.0.tgz", "integrity": "sha512-n3U2gleI8TYZ6eVFjE9TZsGTpaOQlMQj10+WZZFn6Ts5uEu/7XzB8HVLNeu5Sgu7Rv96ThFp79/U6bf/4pS0ew==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.3", @@ -3568,6 +4018,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-is-element": "^3.0.0" @@ -3581,6 +4032,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3599,6 +4051,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", @@ -3616,6 +4069,7 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3635,6 +4089,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3647,6 +4102,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3659,6 +4115,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3671,6 +4128,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3687,6 +4145,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3699,6 +4158,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-embedded": "^3.0.0", @@ -3715,6 +4175,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3739,6 +4200,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3765,6 +4227,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -3792,6 +4255,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3814,6 +4278,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -3840,6 +4305,7 @@ "version": "10.1.2", "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -3865,6 +4331,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -3883,6 +4350,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3892,6 +4360,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3904,6 +4373,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -3919,6 +4389,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -3931,6 +4402,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -3946,12 +4418,14 @@ "node_modules/html-escaper": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3961,6 +4435,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3969,7 +4444,8 @@ "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" }, "node_modules/i18next": { "version": "23.16.8", @@ -3989,6 +4465,7 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -4018,7 +4495,8 @@ "node_modules/inline-style-parser": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" }, "node_modules/internmap": { "version": "2.0.3", @@ -4054,6 +4532,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4063,6 +4542,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -4073,14 +4553,16 @@ } }, "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "license": "MIT" }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4090,6 +4572,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4104,6 +4587,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -4112,6 +4596,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4121,6 +4606,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -4138,6 +4624,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4149,6 +4636,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -4162,12 +4650,14 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4178,12 +4668,14 @@ "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4222,6 +4714,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -4230,6 +4723,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -4266,6 +4760,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -4297,6 +4792,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4305,7 +4801,8 @@ "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/magic-string": { "version": "0.30.19", @@ -4320,6 +4817,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", @@ -4330,6 +4828,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -4341,27 +4840,29 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/marked": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.2.0.tgz", - "integrity": "sha512-LbbTuye+0dWRz2TS9KJ7wsnD4KAtpj0MVkWc90XvBa6AslXsT0hTBVH5k32pcSyHH1fst9XEFJunXHktVy0zlg==", + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 20" + "node": ">= 18" } }, "node_modules/mdast-util-definition-list": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definition-list/-/mdast-util-definition-list-2.0.0.tgz", "integrity": "sha512-aFWuASQs77BJndNSDcNdvB1HRqWZBptcEjwv67mnPbaAZsfwMHxI8MwoQxAz4I2bHx41hft/HDRC57ZkhpayOQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.1", "@types/unist": "^3.0.0", @@ -4376,6 +4877,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4390,6 +4892,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4410,6 +4913,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -4425,6 +4929,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4448,6 +4953,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -4466,6 +4972,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", @@ -4482,6 +4989,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -4498,6 +5006,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -4512,6 +5021,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -4528,6 +5038,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -4543,6 +5054,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", @@ -4559,6 +5071,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4576,6 +5089,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4599,6 +5113,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -4616,6 +5131,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -4629,6 +5145,7 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -4649,6 +5166,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -4669,6 +5187,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, @@ -4680,16 +5199,17 @@ "node_modules/mdn-data": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==" + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" }, "node_modules/mermaid": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.10.1.tgz", - "integrity": "sha512-0PdeADVWURz7VMAX0+MiMcgfxFKY4aweSGsjgFihe3XlMKNqmai/cugMrqTd3WNHM93V+K+AZL6Wu6tB5HmxRw==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.11.0.tgz", + "integrity": "sha512-9lb/VNkZqWTRjVgCV+l1N+t4kyi94y+l5xrmBmbbxZYkfRl5hEDaTPMOcaWKCl1McG8nBEaMlWwkcAEEgjhBgg==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.0.4", - "@iconify/utils": "^2.1.33", + "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.2", "@types/d3": "^7.4.3", "cytoscape": "^3.29.3", @@ -4703,7 +5223,7 @@ "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "marked": "^16.0.0", + "marked": "^15.0.7", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", @@ -4724,6 +5244,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -4758,6 +5279,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", @@ -4781,6 +5303,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-definition-list/-/micromark-extension-definition-list-2.0.1.tgz", "integrity": "sha512-lQSkVTWNR0f9qzUbM4p0chJSecIRYvZBjnI+cWqN0k2zDSvzpduGJifWJj4SpCWF4TlpNV9amCF8Y1VEXdJubQ==", + "license": "MIT", "dependencies": { "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", @@ -4795,6 +5318,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -4813,6 +5337,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", @@ -4832,6 +5357,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -4847,6 +5373,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -4866,6 +5393,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -4883,6 +5411,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -4899,6 +5428,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -4911,6 +5441,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -4937,6 +5468,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -4952,6 +5484,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -4973,6 +5506,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -4985,6 +5519,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -5004,6 +5539,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5034,6 +5570,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5054,6 +5591,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5075,6 +5613,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5101,6 +5640,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5120,6 +5660,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5141,6 +5682,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5162,6 +5704,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5181,6 +5724,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5199,6 +5743,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5219,6 +5764,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" @@ -5238,6 +5784,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5256,6 +5803,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5276,7 +5824,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.3", @@ -5292,6 +5841,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", @@ -5315,7 +5865,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", @@ -5331,6 +5882,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } @@ -5349,6 +5901,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } @@ -5367,6 +5920,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -5387,6 +5941,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -5407,7 +5962,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-types": { "version": "2.0.2", @@ -5422,7 +5978,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/mlly": { "version": "1.8.0", @@ -5457,6 +6014,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", "engines": { "node": ">=10" } @@ -5464,7 +6022,8 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", @@ -5476,6 +6035,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5487,6 +6047,7 @@ "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -5495,6 +6056,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0" }, @@ -5507,6 +6069,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5538,6 +6101,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5546,6 +6110,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -5557,6 +6122,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "license": "MIT", "dependencies": { "destr": "^2.0.3", "node-fetch-native": "^1.6.4", @@ -5566,7 +6132,8 @@ "node_modules/ohash": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", - "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==" + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" }, "node_modules/oniguruma-parser": { "version": "0.12.1", @@ -5589,12 +6156,14 @@ "version": "12.1.3", "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT", "peer": true }, "node_modules/p-limit": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", "dependencies": { "yocto-queue": "^1.1.1" }, @@ -5606,9 +6175,10 @@ } }, "node_modules/p-queue": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", - "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" @@ -5624,6 +6194,7 @@ "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -5634,32 +6205,37 @@ "node_modules/package-manager-detector": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", - "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==" + "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "license": "MIT" }, "node_modules/pagefind": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.3.0.tgz", - "integrity": "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.4.0.tgz", + "integrity": "sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==", + "license": "MIT", "bin": { "pagefind": "lib/runner/bin.cjs" }, "optionalDependencies": { - "@pagefind/darwin-arm64": "1.3.0", - "@pagefind/darwin-x64": "1.3.0", - "@pagefind/linux-arm64": "1.3.0", - "@pagefind/linux-x64": "1.3.0", - "@pagefind/windows-x64": "1.3.0" + "@pagefind/darwin-arm64": "1.4.0", + "@pagefind/darwin-x64": "1.4.0", + "@pagefind/freebsd-x64": "1.4.0", + "@pagefind/linux-arm64": "1.4.0", + "@pagefind/linux-x64": "1.4.0", + "@pagefind/windows-x64": "1.4.0" } }, "node_modules/pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" }, "node_modules/parse-entities": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", @@ -5677,12 +6253,14 @@ "node_modules/parse-entities/node_modules/@types/unist": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" }, "node_modules/parse-latin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", @@ -5700,6 +6278,7 @@ "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", "dependencies": { "entities": "^6.0.0" }, @@ -5722,7 +6301,8 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.3", @@ -5781,6 +6361,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -5804,6 +6385,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -5818,6 +6400,7 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5830,6 +6413,7 @@ "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5838,6 +6422,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -5850,6 +6435,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } @@ -5858,6 +6444,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5889,6 +6476,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { "node": ">= 14.18.0" }, @@ -5901,6 +6489,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", @@ -5912,9 +6501,10 @@ } }, "node_modules/recma-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", - "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", @@ -5925,12 +6515,16 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/recma-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "esast-util-from-js": "^2.0.0", @@ -5946,6 +6540,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", @@ -5985,6 +6580,7 @@ "version": "13.0.2", "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", @@ -5997,17 +6593,19 @@ } }, "node_modules/rehype-expressive-code": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.2.tgz", - "integrity": "sha512-vHYfWO9WxAw6kHHctddOt+P4266BtyT1mrOIuxJD+1ELuvuJAa5uBIhYt0OVMyOhlvf57hzWOXJkHnMhpaHyxw==", + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.3.tgz", + "integrity": "sha512-8d9Py4c/V6I/Od2VIXFAdpiO2kc0SV2qTJsRAaqSIcM9aruW4ASLNe2kOEo1inXAAkIhpFzAHTc358HKbvpNUg==", + "license": "MIT", "dependencies": { - "expressive-code": "^0.41.2" + "expressive-code": "^0.41.3" } }, "node_modules/rehype-format": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-format": "^1.0.0" @@ -6021,6 +6619,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-minify-whitespace": "^1.0.0" @@ -6034,6 +6633,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", @@ -6048,6 +6648,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -6062,6 +6663,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -6076,6 +6678,7 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", @@ -6090,6 +6693,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/remark-definition-list/-/remark-definition-list-2.0.0.tgz", "integrity": "sha512-OOJ0zUrfUGITUNxOBnsipyFUjqq1m4AgYOqQk10jDXyz+RoODJL3qYvRn8qzYQDzRnz1wlCP3dbDEOpl05LlQw==", + "license": "MIT", "dependencies": { "hast-util-definition-list": "^2.0.0", "mdast-util-definition-list": "^2.0.0", @@ -6100,6 +6704,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -6115,6 +6720,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -6129,9 +6735,10 @@ } }, "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -6145,6 +6752,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -6160,6 +6768,7 @@ "version": "11.1.2", "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -6176,6 +6785,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", @@ -6190,6 +6800,7 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -6204,6 +6815,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6211,12 +6823,14 @@ "node_modules/restructure": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", - "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==" + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", @@ -6232,534 +6846,175 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", - "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "license": "Unlicense" - }, - "node_modules/rollup": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", - "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.43.0", - "@rollup/rollup-android-arm64": "4.43.0", - "@rollup/rollup-darwin-arm64": "4.43.0", - "@rollup/rollup-darwin-x64": "4.43.0", - "@rollup/rollup-freebsd-arm64": "4.43.0", - "@rollup/rollup-freebsd-x64": "4.43.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", - "@rollup/rollup-linux-arm-musleabihf": "4.43.0", - "@rollup/rollup-linux-arm64-gnu": "4.43.0", - "@rollup/rollup-linux-arm64-musl": "4.43.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-musl": "4.43.0", - "@rollup/rollup-linux-s390x-gnu": "4.43.0", - "@rollup/rollup-linux-x64-gnu": "4.43.0", - "@rollup/rollup-linux-x64-musl": "4.43.0", - "@rollup/rollup-win32-arm64-msvc": "4.43.0", - "@rollup/rollup-win32-ia32-msvc": "4.43.0", - "@rollup/rollup-win32-x64-msvc": "4.43.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", "license": "MIT", "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "license": "BSD-3-Clause" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", - "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.4", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.3", - "@img/sharp-darwin-x64": "0.34.3", - "@img/sharp-libvips-darwin-arm64": "1.2.0", - "@img/sharp-libvips-darwin-x64": "1.2.0", - "@img/sharp-libvips-linux-arm": "1.2.0", - "@img/sharp-libvips-linux-arm64": "1.2.0", - "@img/sharp-libvips-linux-ppc64": "1.2.0", - "@img/sharp-libvips-linux-s390x": "1.2.0", - "@img/sharp-libvips-linux-x64": "1.2.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", - "@img/sharp-libvips-linuxmusl-x64": "1.2.0", - "@img/sharp-linux-arm": "0.34.3", - "@img/sharp-linux-arm64": "0.34.3", - "@img/sharp-linux-ppc64": "0.34.3", - "@img/sharp-linux-s390x": "0.34.3", - "@img/sharp-linux-x64": "0.34.3", - "@img/sharp-linuxmusl-arm64": "0.34.3", - "@img/sharp-linuxmusl-x64": "0.34.3", - "@img/sharp-wasm32": "0.34.3", - "@img/sharp-win32-arm64": "0.34.3", - "@img/sharp-win32-ia32": "0.34.3", - "@img/sharp-win32-x64": "0.34.3" - } - }, - "node_modules/sharp/node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", - "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.0" - } - }, - "node_modules/sharp/node_modules/@img/sharp-darwin-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", - "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.0" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", - "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", - "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", - "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", - "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", - "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", - "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", - "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", - "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/@img/sharp-linux-arm": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", - "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.0" - } - }, - "node_modules/sharp/node_modules/@img/sharp-linux-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", - "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.0" - } - }, - "node_modules/sharp/node_modules/@img/sharp-linux-s390x": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", - "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.0" - } - }, - "node_modules/sharp/node_modules/@img/sharp-linux-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", - "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.0" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/sharp/node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", - "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/sharp/node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", - "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/sharp/node_modules/@img/sharp-wasm32": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", - "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rollup": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "license": "MIT", "dependencies": { - "@emnapi/runtime": "^1.4.4" + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, - "funding": { - "url": "https://opencollective.com/libvips" + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", + "fsevents": "~2.3.2" } }, - "node_modules/sharp/node_modules/@img/sharp-win32-ia32": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", - "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=10" } }, - "node_modules/sharp/node_modules/@img/sharp-win32-x64": { + "node_modules/sharp": { "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", - "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", + "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.3", + "@img/sharp-darwin-x64": "0.34.3", + "@img/sharp-libvips-darwin-arm64": "1.2.0", + "@img/sharp-libvips-darwin-x64": "1.2.0", + "@img/sharp-libvips-linux-arm": "1.2.0", + "@img/sharp-libvips-linux-arm64": "1.2.0", + "@img/sharp-libvips-linux-ppc64": "1.2.0", + "@img/sharp-libvips-linux-s390x": "1.2.0", + "@img/sharp-libvips-linux-x64": "1.2.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", + "@img/sharp-libvips-linuxmusl-x64": "1.2.0", + "@img/sharp-linux-arm": "0.34.3", + "@img/sharp-linux-arm64": "0.34.3", + "@img/sharp-linux-ppc64": "0.34.3", + "@img/sharp-linux-s390x": "0.34.3", + "@img/sharp-linux-x64": "0.34.3", + "@img/sharp-linuxmusl-arm64": "0.34.3", + "@img/sharp-linuxmusl-x64": "0.34.3", + "@img/sharp-wasm32": "0.34.3", + "@img/sharp-win32-arm64": "0.34.3", + "@img/sharp-win32-ia32": "0.34.3", + "@img/sharp-win32-x64": "0.34.3" } }, "node_modules/shiki": { @@ -6779,9 +7034,10 @@ } }, "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } @@ -6789,12 +7045,14 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/sitemap": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz", "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==", + "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", @@ -6812,7 +7070,8 @@ "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "license": "MIT" }, "node_modules/smol-toml": { "version": "1.4.2", @@ -6827,17 +7086,19 @@ } }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -6846,6 +7107,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6912,12 +7174,14 @@ "node_modules/stream-replace-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", + "license": "MIT" }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -6934,6 +7198,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -6944,9 +7209,10 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -6961,6 +7227,7 @@ "version": "1.1.17", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", + "license": "MIT", "dependencies": { "style-to-object": "1.0.9" } @@ -6969,6 +7236,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", + "license": "MIT", "dependencies": { "inline-style-parser": "0.2.4" } @@ -6982,20 +7250,23 @@ "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -7007,12 +7278,14 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7022,6 +7295,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7031,6 +7305,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7040,6 +7315,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", "engines": { "node": ">=6.10" } @@ -7048,6 +7324,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -7066,12 +7343,14 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -7080,9 +7359,10 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", @@ -7095,12 +7375,14 @@ "node_modules/ufo": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==" + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "license": "MIT" }, "node_modules/ultrahtml": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", - "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==" + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" }, "node_modules/uncrypto": { "version": "0.1.3", @@ -7109,14 +7391,16 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "license": "MIT" }, "node_modules/unicode-properties": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" @@ -7126,6 +7410,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" @@ -7135,6 +7420,7 @@ "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -7164,6 +7450,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-4.0.0.tgz", "integrity": "sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7176,6 +7463,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -7189,6 +7477,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7201,6 +7490,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" @@ -7214,6 +7504,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7226,6 +7517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7238,6 +7530,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" @@ -7251,6 +7544,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7263,6 +7557,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -7277,6 +7572,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -7289,6 +7585,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -7398,6 +7695,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/url-template/-/url-template-3.1.1.tgz", "integrity": "sha512-4oszoaEKE/mQOtAmdMWqIRHmkxWkUZMnXFnjQ5i01CuRSK3uluxcH1MRVVVWmhlnzT1SCDfKxxficm2G37qzCA==", + "license": "BSD-3-Clause", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -7405,7 +7703,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { "version": "11.1.0", @@ -7424,6 +7723,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" @@ -7437,6 +7737,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -7447,9 +7748,10 @@ } }, "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -7605,6 +7907,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7613,12 +7916,14 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -7628,6 +7933,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -7636,6 +7942,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", "dependencies": { "string-width": "^7.0.0" }, @@ -7647,9 +7954,10 @@ } }, "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -7665,12 +7973,14 @@ "node_modules/xxhash-wasm": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", - "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==" + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7679,6 +7989,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -7690,6 +8001,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "license": "MIT", "dependencies": { "yoctocolors": "^2.1.1" }, @@ -7701,9 +8013,10 @@ } }, "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -7742,6 +8055,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" From 133c176fd356f18db71b9244cee1ab4863617a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 8 Oct 2025 18:19:21 +0200 Subject: [PATCH 14/16] Bump lockfile --- package-lock.json | 1115 ++++++++++++++++++--------------------------- 1 file changed, 446 insertions(+), 669 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1068d27..5782d6b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,9 +39,9 @@ "license": "MIT" }, "node_modules/@antfu/utils": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.0.tgz", - "integrity": "sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -64,29 +64,29 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", - "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.0.tgz", + "integrity": "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==", "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz", - "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.3.tgz", + "integrity": "sha512-6Pl0bQEIChuW5wqN7jdKrzWfCscW2rG/Cz+fzt4PhSQX2ivBpnhXgFUCs0M3DCYvjYHnPVG2W36X5rmFjZ62sw==", "license": "MIT" }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz", - "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==", + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.7.tgz", + "integrity": "sha512-KXGdq6/BC18doBCYXp08alHlWChH0hdD2B1qv9wIyOHbvwI5K6I7FhSta8dq1hBQNdun8YkKPR013D/Hm8xd0g==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.2", + "@astrojs/internal-helpers": "0.7.3", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.1.0", + "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", @@ -95,8 +95,8 @@ "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^3.2.1", - "smol-toml": "^1.3.4", + "shiki": "^3.12.2", + "smol-toml": "^1.4.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", @@ -105,12 +105,12 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.5.tgz", - "integrity": "sha512-YB3Hhsvl1BxyY0ARe1OrnVzLNKDPXAz9epYvmL+MQ8A85duSsSLQaO3GHB6/qZJKNoLmP6PptOtCONCKkbhPeQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.6.tgz", + "integrity": "sha512-jH04tYgaqLfq3To42+z1oEcXrXUzo3BxZ4fTkb+7BEmOJkQ9/c3iIixFEC+x0GgE8lJb4SuEDGldpAv7+1yY8A==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "6.3.6", + "@astrojs/markdown-remark": "6.3.7", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", @@ -144,14 +144,14 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.1.tgz", - "integrity": "sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.6.0.tgz", + "integrity": "sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==", "license": "MIT", "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.24.4" + "zod": "^3.25.76" } }, "node_modules/@astrojs/starlight": { @@ -159,7 +159,6 @@ "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.36.0.tgz", "integrity": "sha512-aVJVBfvFuE2avsMDhmRzn6I5GjDhUwIQFlu3qH9a1C0fNsPYDw2asxHQODAD7EfGiKGvvHCJgHb+9jbJ8lCfNQ==", "license": "MIT", - "peer": true, "dependencies": { "@astrojs/markdown-remark": "^6.3.1", "@astrojs/mdx": "^4.2.3", @@ -337,9 +336,9 @@ "license": "Apache-2.0" }, "node_modules/@ctrl/tinycolor": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", - "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", "license": "MIT", "engines": { "node": ">=14" @@ -356,9 +355,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", "cpu": [ "ppc64" ], @@ -372,9 +371,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", "cpu": [ "arm" ], @@ -388,9 +387,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", "cpu": [ "arm64" ], @@ -404,9 +403,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", "cpu": [ "x64" ], @@ -420,9 +419,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", "cpu": [ "arm64" ], @@ -436,9 +435,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", "cpu": [ "x64" ], @@ -452,9 +451,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", "cpu": [ "arm64" ], @@ -468,9 +467,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", "cpu": [ "x64" ], @@ -484,9 +483,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", "cpu": [ "arm" ], @@ -500,9 +499,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", "cpu": [ "arm64" ], @@ -516,9 +515,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", "cpu": [ "ia32" ], @@ -532,9 +531,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", "cpu": [ "loong64" ], @@ -548,9 +547,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", "cpu": [ "mips64el" ], @@ -564,9 +563,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", "cpu": [ "ppc64" ], @@ -580,9 +579,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", "cpu": [ "riscv64" ], @@ -596,9 +595,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", "cpu": [ "s390x" ], @@ -612,9 +611,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", "cpu": [ "x64" ], @@ -628,9 +627,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", "cpu": [ "arm64" ], @@ -644,9 +643,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", "cpu": [ "x64" ], @@ -660,9 +659,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", "cpu": [ "arm64" ], @@ -676,9 +675,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", "cpu": [ "x64" ], @@ -692,9 +691,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", "cpu": [ "arm64" ], @@ -708,9 +707,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", "cpu": [ "x64" ], @@ -724,9 +723,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", "cpu": [ "arm64" ], @@ -740,9 +739,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", "cpu": [ "ia32" ], @@ -756,9 +755,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", "cpu": [ "x64" ], @@ -832,9 +831,9 @@ "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.1.tgz", - "integrity": "sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", "license": "MIT", "dependencies": { "@antfu/install-pkg": "^1.1.0", @@ -847,10 +846,19 @@ "mlly": "^1.7.4" } }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", - "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", + "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", "cpu": [ "arm64" ], @@ -866,13 +874,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.0" + "@img/sharp-libvips-darwin-arm64": "1.2.3" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", - "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", + "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", "cpu": [ "x64" ], @@ -888,13 +896,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.0" + "@img/sharp-libvips-darwin-x64": "1.2.3" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", - "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", "cpu": [ "arm64" ], @@ -908,9 +916,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", - "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", "cpu": [ "x64" ], @@ -924,9 +932,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", - "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", + "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", "cpu": [ "arm" ], @@ -940,9 +948,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", - "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", + "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", "cpu": [ "arm64" ], @@ -956,9 +964,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz", - "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", + "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", "cpu": [ "ppc64" ], @@ -972,9 +980,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", - "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", + "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", "cpu": [ "s390x" ], @@ -988,9 +996,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", - "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", + "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", "cpu": [ "x64" ], @@ -1004,9 +1012,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", - "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", + "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", "cpu": [ "arm64" ], @@ -1020,9 +1028,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", - "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", + "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", "cpu": [ "x64" ], @@ -1036,9 +1044,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", - "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", + "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", "cpu": [ "arm" ], @@ -1054,13 +1062,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.0" + "@img/sharp-libvips-linux-arm": "1.2.3" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", - "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", + "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", "cpu": [ "arm64" ], @@ -1076,13 +1084,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.0" + "@img/sharp-libvips-linux-arm64": "1.2.3" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", - "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", + "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", "cpu": [ "ppc64" ], @@ -1098,13 +1106,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.0" + "@img/sharp-libvips-linux-ppc64": "1.2.3" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", - "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", + "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", "cpu": [ "s390x" ], @@ -1120,13 +1128,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.0" + "@img/sharp-libvips-linux-s390x": "1.2.3" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", - "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", + "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", "cpu": [ "x64" ], @@ -1142,13 +1150,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.0" + "@img/sharp-libvips-linux-x64": "1.2.3" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", - "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", + "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", "cpu": [ "arm64" ], @@ -1164,13 +1172,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", - "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", + "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", "cpu": [ "x64" ], @@ -1186,20 +1194,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + "@img/sharp-libvips-linuxmusl-x64": "1.2.3" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", - "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", + "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", "cpu": [ "wasm32" ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.4.4" + "@emnapi/runtime": "^1.5.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -1209,9 +1217,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", - "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", + "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", "cpu": [ "arm64" ], @@ -1228,9 +1236,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", - "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", + "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", "cpu": [ "ia32" ], @@ -1247,9 +1255,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", - "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", + "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", "cpu": [ "x64" ], @@ -1309,9 +1317,9 @@ } }, "node_modules/@mermaid-js/parser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.2.tgz", - "integrity": "sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.6.3.tgz", + "integrity": "sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==", "license": "MIT", "dependencies": { "langium": "3.3.1" @@ -1485,9 +1493,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", - "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", + "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", "cpu": [ "arm" ], @@ -1498,9 +1506,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", - "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", + "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", "cpu": [ "arm64" ], @@ -1511,9 +1519,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", - "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", + "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", "cpu": [ "arm64" ], @@ -1524,9 +1532,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", - "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", + "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", "cpu": [ "x64" ], @@ -1537,9 +1545,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", - "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", + "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", "cpu": [ "arm64" ], @@ -1550,9 +1558,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", - "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", + "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", "cpu": [ "x64" ], @@ -1563,9 +1571,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", - "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", + "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", "cpu": [ "arm" ], @@ -1576,9 +1584,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", - "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", + "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", "cpu": [ "arm" ], @@ -1589,9 +1597,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", - "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", + "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", "cpu": [ "arm64" ], @@ -1602,9 +1610,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", - "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", + "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", "cpu": [ "arm64" ], @@ -1614,10 +1622,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", - "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", + "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", "cpu": [ "loong64" ], @@ -1628,9 +1636,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", - "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", + "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", "cpu": [ "ppc64" ], @@ -1641,9 +1649,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", - "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", + "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", "cpu": [ "riscv64" ], @@ -1654,9 +1662,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", - "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", + "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", "cpu": [ "riscv64" ], @@ -1667,9 +1675,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", - "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", + "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", "cpu": [ "s390x" ], @@ -1680,9 +1688,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", - "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", + "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", "cpu": [ "x64" ], @@ -1693,9 +1701,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", - "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", + "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", "cpu": [ "x64" ], @@ -1706,9 +1714,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", - "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", + "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", "cpu": [ "arm64" ], @@ -1719,9 +1727,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", - "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", + "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", "cpu": [ "arm64" ], @@ -1732,9 +1740,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", - "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", + "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", "cpu": [ "ia32" ], @@ -1744,10 +1752,23 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", + "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", - "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", + "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", "cpu": [ "x64" ], @@ -1758,60 +1779,60 @@ ] }, "node_modules/@shikijs/core": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.12.2.tgz", - "integrity": "sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.13.0.tgz", + "integrity": "sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.12.2.tgz", - "integrity": "sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.13.0.tgz", + "integrity": "sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.12.2.tgz", - "integrity": "sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz", + "integrity": "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.12.2.tgz", - "integrity": "sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz", + "integrity": "sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/themes": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.12.2.tgz", - "integrity": "sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz", + "integrity": "sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.12.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/types": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.12.2.tgz", - "integrity": "sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz", + "integrity": "sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -2177,12 +2198,12 @@ } }, "node_modules/@types/node": { - "version": "24.3.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.3.tgz", - "integrity": "sha512-GKBNHjoNw3Kra1Qg5UXttsY5kiWMEfoHq2TmXb+b1rcm6N7B3wTrFYIf/oSZ1xNQ+hVVijgLkiDZh7jRRsh+Gw==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.0.tgz", + "integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==", "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.14.0" } }, "node_modules/@types/picomatch": { @@ -2410,14 +2431,14 @@ } }, "node_modules/astro": { - "version": "5.13.7", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.13.7.tgz", - "integrity": "sha512-Of2tST7ErbE4y1dVb4aWDXaQSIRBAfraJ4jDqaA3PzPRJOn6Ina36+tQ+8BezjYqiWwRRJdOEE07PRAJXnsddw==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.14.1.tgz", + "integrity": "sha512-gPa8NY7/lP8j8g81iy8UwANF3+aukKRWS68IlthZQNgykpg80ne6lbHOp6FErYycxQ1TUhgEfkXVDQZAoJx8Bg==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.12.2", - "@astrojs/internal-helpers": "0.7.2", - "@astrojs/markdown-remark": "6.3.6", + "@astrojs/internal-helpers": "0.7.3", + "@astrojs/markdown-remark": "6.3.7", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", @@ -2433,7 +2454,7 @@ "cssesc": "^3.0.0", "debug": "^4.4.1", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.1.1", + "devalue": "^5.3.2", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", @@ -2507,17 +2528,24 @@ } }, "node_modules/astro-mermaid": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/astro-mermaid/-/astro-mermaid-1.0.4.tgz", - "integrity": "sha512-2M4bVjqLpDB2EZ4EfD6Utzs7VEEORmlt5hNZcMK54IcKWzflohKvowCzg79RHoAdu30W8a4aECAExH8mF7wG4w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/astro-mermaid/-/astro-mermaid-1.1.0.tgz", + "integrity": "sha512-eW5aqOISq2Uf8goCedSl12d0qy8y77A+jRwKxwYc7LvrEN9HiCQuwTGu3zQvi0mB4+ydwaueaYbFUFSCIs2jrA==", "license": "MIT", "dependencies": { + "import-meta-resolve": "^4.2.0", "mdast-util-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" }, "peerDependencies": { + "@mermaid-js/layout-elk": "^0.2.0", "astro": "^4.0.0 || ^5.0.0", "mermaid": "^10.0.0 || ^11.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } } }, "node_modules/axobject-query": { @@ -2754,23 +2782,6 @@ "license": "MIT", "dependencies": { "readdirp": "^4.0.1" - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "peer": true, - "bin": { - "acorn": "bin/acorn" }, "engines": { "node": ">= 14.16.0" @@ -2780,9 +2791,9 @@ } }, "node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "funding": [ { "type": "github", @@ -2801,16 +2812,6 @@ "license": "MIT", "engines": { "node": ">=10" - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2844,47 +2845,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -2978,77 +2938,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "node_modules/astro": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.14.1.tgz", - "integrity": "sha512-gPa8NY7/lP8j8g81iy8UwANF3+aukKRWS68IlthZQNgykpg80ne6lbHOp6FErYycxQ1TUhgEfkXVDQZAoJx8Bg==", "license": "MIT", - "peer": true, "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" - "@astrojs/compiler": "^2.12.2", - "@astrojs/internal-helpers": "0.7.3", - "@astrojs/markdown-remark": "6.3.7", - "@astrojs/telemetry": "3.3.0", - "@capsizecss/unpack": "^2.4.0", - "@oslojs/encoding": "^1.1.0", - "@rollup/pluginutils": "^5.2.0", - "acorn": "^8.15.0", - "aria-query": "^5.3.2", - "axobject-query": "^4.1.0", - "boxen": "8.0.1", - "ci-info": "^4.3.0", - "clsx": "^2.1.1", - "common-ancestor-path": "^1.0.1", - "cookie": "^1.0.2", - "cssesc": "^3.0.0", - "debug": "^4.4.1", - "deterministic-object-hash": "^2.0.2", - "devalue": "^5.3.2", - "diff": "^5.2.0", - "dlv": "^1.1.3", - "dset": "^3.1.4", - "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", - "estree-walker": "^3.0.3", - "flattie": "^1.1.1", - "fontace": "~0.3.0", - "github-slugger": "^2.0.0", - "html-escaper": "3.0.3", - "http-cache-semantics": "^4.2.0", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", - "kleur": "^4.1.5", - "magic-string": "^0.30.18", - "magicast": "^0.3.5", - "mrmime": "^2.0.1", - "neotraverse": "^0.6.18", - "p-limit": "^6.2.0", - "p-queue": "^8.1.0", - "package-manager-detector": "^1.3.0", - "picomatch": "^4.0.3", - "prompts": "^2.4.2", - "rehype": "^13.0.2", - "semver": "^7.7.2", - "shiki": "^3.12.0", - "smol-toml": "^1.4.2", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tsconfck": "^3.1.6", - "ultrahtml": "^1.6.0", - "unifont": "~0.5.2", - "unist-util-visit": "^5.0.0", - "unstorage": "^1.17.0", - "vfile": "^6.0.3", - "vite": "^6.3.6", - "vitefu": "^1.1.1", - "xxhash-wasm": "^1.1.0", - "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.2.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.24.6", - "zod-to-ts": "^1.2.0" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" @@ -3106,39 +2999,6 @@ "license": "MIT", "dependencies": { "layout-base": "^2.0.0" - "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.3.tgz", - "integrity": "sha512-6Pl0bQEIChuW5wqN7jdKrzWfCscW2rG/Cz+fzt4PhSQX2ivBpnhXgFUCs0M3DCYvjYHnPVG2W36X5rmFjZ62sw==", - "license": "MIT" - }, - "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.7.tgz", - "integrity": "sha512-KXGdq6/BC18doBCYXp08alHlWChH0hdD2B1qv9wIyOHbvwI5K6I7FhSta8dq1hBQNdun8YkKPR013D/Hm8xd0g==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.3", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.12.2", - "smol-toml": "^1.4.2", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.3" } }, "node_modules/cytoscape-fcose/node_modules/layout-base": { @@ -3665,9 +3525,9 @@ "license": "MIT" }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -3739,9 +3599,9 @@ "license": "MIT" }, "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -3813,9 +3673,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -3825,32 +3685,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" } }, "node_modules/escape-string-regexp": { @@ -4035,9 +3895,9 @@ } }, "node_modules/fontace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.0.tgz", - "integrity": "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.1.tgz", + "integrity": "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==", "license": "MIT", "dependencies": { "@types/fontkit": "^2.0.8", @@ -4680,12 +4540,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" - }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", @@ -4809,9 +4663,9 @@ } }, "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "version": "0.16.23", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.23.tgz", + "integrity": "sha512-7VlC1hsEEolL9xNO05v9VjrvWZePkCVBJqj8ruICxYjZfHaHbaU53AlP+PODyFIXEnaEIEWi3wJy7FPZ95JAVg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -4975,15 +4829,15 @@ } }, "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.0.tgz", + "integrity": "sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==", "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/mdast-util-definition-list": { @@ -5331,12 +5185,12 @@ "license": "CC0-1.0" }, "node_modules/mermaid": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.11.0.tgz", - "integrity": "sha512-9lb/VNkZqWTRjVgCV+l1N+t4kyi94y+l5xrmBmbbxZYkfRl5hEDaTPMOcaWKCl1McG8nBEaMlWwkcAEEgjhBgg==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.0.tgz", + "integrity": "sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==", "license": "MIT", "dependencies": { - "@braintree/sanitize-url": "^7.0.4", + "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.2", "@types/d3": "^7.4.3", @@ -5346,12 +5200,12 @@ "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.13", + "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "marked": "^15.0.7", + "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", @@ -6331,9 +6185,9 @@ } }, "node_modules/package-manager-detector": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", - "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.4.0.tgz", + "integrity": "sha512-rRZ+pR1Usc+ND9M2NkmCvE/LYJS+8ORVV9X0KuNSY/gFsp7RBHJM/ADh9LYq4Vvfq6QkKrW6/weuh8SMEtN5gw==", "license": "MIT" }, "node_modules/pagefind": { @@ -6490,7 +6344,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -6778,72 +6631,6 @@ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "license": "MIT", - "node_modules/rollup": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", - "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", - "peer": true, - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.43.0", - "@rollup/rollup-android-arm64": "4.43.0", - "@rollup/rollup-darwin-arm64": "4.43.0", - "@rollup/rollup-darwin-x64": "4.43.0", - "@rollup/rollup-freebsd-arm64": "4.43.0", - "@rollup/rollup-freebsd-x64": "4.43.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", - "@rollup/rollup-linux-arm-musleabihf": "4.43.0", - "@rollup/rollup-linux-arm64-gnu": "4.43.0", - "@rollup/rollup-linux-arm64-musl": "4.43.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-musl": "4.43.0", - "@rollup/rollup-linux-s390x-gnu": "4.43.0", - "@rollup/rollup-linux-x64-gnu": "4.43.0", - "@rollup/rollup-linux-x64-musl": "4.43.0", - "@rollup/rollup-win32-arm64-msvc": "4.43.0", - "@rollup/rollup-win32-ia32-msvc": "4.43.0", - "@rollup/rollup-win32-x64-msvc": "4.43.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", - "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", - "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -7089,9 +6876,9 @@ "license": "Unlicense" }, "node_modules/rollup": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", - "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", + "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -7104,27 +6891,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.1", - "@rollup/rollup-android-arm64": "4.50.1", - "@rollup/rollup-darwin-arm64": "4.50.1", - "@rollup/rollup-darwin-x64": "4.50.1", - "@rollup/rollup-freebsd-arm64": "4.50.1", - "@rollup/rollup-freebsd-x64": "4.50.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", - "@rollup/rollup-linux-arm-musleabihf": "4.50.1", - "@rollup/rollup-linux-arm64-gnu": "4.50.1", - "@rollup/rollup-linux-arm64-musl": "4.50.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", - "@rollup/rollup-linux-ppc64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-musl": "4.50.1", - "@rollup/rollup-linux-s390x-gnu": "4.50.1", - "@rollup/rollup-linux-x64-gnu": "4.50.1", - "@rollup/rollup-linux-x64-musl": "4.50.1", - "@rollup/rollup-openharmony-arm64": "4.50.1", - "@rollup/rollup-win32-arm64-msvc": "4.50.1", - "@rollup/rollup-win32-ia32-msvc": "4.50.1", - "@rollup/rollup-win32-x64-msvc": "4.50.1", + "@rollup/rollup-android-arm-eabi": "4.52.4", + "@rollup/rollup-android-arm64": "4.52.4", + "@rollup/rollup-darwin-arm64": "4.52.4", + "@rollup/rollup-darwin-x64": "4.52.4", + "@rollup/rollup-freebsd-arm64": "4.52.4", + "@rollup/rollup-freebsd-x64": "4.52.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", + "@rollup/rollup-linux-arm-musleabihf": "4.52.4", + "@rollup/rollup-linux-arm64-gnu": "4.52.4", + "@rollup/rollup-linux-arm64-musl": "4.52.4", + "@rollup/rollup-linux-loong64-gnu": "4.52.4", + "@rollup/rollup-linux-ppc64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-musl": "4.52.4", + "@rollup/rollup-linux-s390x-gnu": "4.52.4", + "@rollup/rollup-linux-x64-gnu": "4.52.4", + "@rollup/rollup-linux-x64-musl": "4.52.4", + "@rollup/rollup-openharmony-arm64": "4.52.4", + "@rollup/rollup-win32-arm64-msvc": "4.52.4", + "@rollup/rollup-win32-ia32-msvc": "4.52.4", + "@rollup/rollup-win32-x64-gnu": "4.52.4", + "@rollup/rollup-win32-x64-msvc": "4.52.4", "fsevents": "~2.3.2" } }, @@ -7159,9 +6947,9 @@ "license": "ISC" }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -7171,14 +6959,14 @@ } }, "node_modules/sharp": { - "version": "0.34.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", - "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", + "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.4", + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.0", "semver": "^7.7.2" }, "engines": { @@ -7188,55 +6976,46 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.3", - "@img/sharp-darwin-x64": "0.34.3", - "@img/sharp-libvips-darwin-arm64": "1.2.0", - "@img/sharp-libvips-darwin-x64": "1.2.0", - "@img/sharp-libvips-linux-arm": "1.2.0", - "@img/sharp-libvips-linux-arm64": "1.2.0", - "@img/sharp-libvips-linux-ppc64": "1.2.0", - "@img/sharp-libvips-linux-s390x": "1.2.0", - "@img/sharp-libvips-linux-x64": "1.2.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", - "@img/sharp-libvips-linuxmusl-x64": "1.2.0", - "@img/sharp-linux-arm": "0.34.3", - "@img/sharp-linux-arm64": "0.34.3", - "@img/sharp-linux-ppc64": "0.34.3", - "@img/sharp-linux-s390x": "0.34.3", - "@img/sharp-linux-x64": "0.34.3", - "@img/sharp-linuxmusl-arm64": "0.34.3", - "@img/sharp-linuxmusl-x64": "0.34.3", - "@img/sharp-wasm32": "0.34.3", - "@img/sharp-win32-arm64": "0.34.3", - "@img/sharp-win32-ia32": "0.34.3", - "@img/sharp-win32-x64": "0.34.3" + "@img/sharp-darwin-arm64": "0.34.4", + "@img/sharp-darwin-x64": "0.34.4", + "@img/sharp-libvips-darwin-arm64": "1.2.3", + "@img/sharp-libvips-darwin-x64": "1.2.3", + "@img/sharp-libvips-linux-arm": "1.2.3", + "@img/sharp-libvips-linux-arm64": "1.2.3", + "@img/sharp-libvips-linux-ppc64": "1.2.3", + "@img/sharp-libvips-linux-s390x": "1.2.3", + "@img/sharp-libvips-linux-x64": "1.2.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", + "@img/sharp-libvips-linuxmusl-x64": "1.2.3", + "@img/sharp-linux-arm": "0.34.4", + "@img/sharp-linux-arm64": "0.34.4", + "@img/sharp-linux-ppc64": "0.34.4", + "@img/sharp-linux-s390x": "0.34.4", + "@img/sharp-linux-x64": "0.34.4", + "@img/sharp-linuxmusl-arm64": "0.34.4", + "@img/sharp-linuxmusl-x64": "0.34.4", + "@img/sharp-wasm32": "0.34.4", + "@img/sharp-win32-arm64": "0.34.4", + "@img/sharp-win32-ia32": "0.34.4", + "@img/sharp-win32-x64": "0.34.4" } }, "node_modules/shiki": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.12.2.tgz", - "integrity": "sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.13.0.tgz", + "integrity": "sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.12.2", - "@shikijs/engine-javascript": "3.12.2", - "@shikijs/engine-oniguruma": "3.12.2", - "@shikijs/langs": "3.12.2", - "@shikijs/themes": "3.12.2", - "@shikijs/types": "3.12.2", + "@shikijs/core": "3.13.0", + "@shikijs/engine-javascript": "3.13.0", + "@shikijs/engine-oniguruma": "3.13.0", + "@shikijs/langs": "3.13.0", + "@shikijs/themes": "3.13.0", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, - "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -7352,9 +7131,9 @@ } }, "node_modules/starlight-sidebar-topics": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/starlight-sidebar-topics/-/starlight-sidebar-topics-0.6.0.tgz", - "integrity": "sha512-ysmOR7zaHYKtk18/mpW4MbEMDioR/ZBsisu9bdQrq0v9BlHWpW7gAdWlqFWO9zdv1P7l0Mo1WKd0wJ0UtqOVEQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/starlight-sidebar-topics/-/starlight-sidebar-topics-0.6.1.tgz", + "integrity": "sha512-kBOFUTJEVVeeZ3t0la8V+of0JyahAYGPT0xacXl/qZ6poBwqKu0mR2qPv7D/ZdUVTxGuQghT2AXo3qo0ygXwjA==", "license": "MIT", "dependencies": { "picomatch": "^4.0.2" @@ -7554,9 +7333,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", "peer": true, "bin": { @@ -7586,9 +7365,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", "license": "MIT" }, "node_modules/unicode-properties": { @@ -7961,7 +7740,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -8225,7 +8003,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From c8ea26865bd7daf08bdf5dd641bdc9705543b529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 8 Oct 2025 18:20:28 +0200 Subject: [PATCH 15/16] Bump sharp --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5782d6b1..a8542a79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "astro-mermaid": "^1.0.4", "mermaid": "^11.10.1", "remark-definition-list": "^2.0.0", - "sharp": "^0.34.3", + "sharp": "^0.34.4", "starlight-links-validator": "^0.17.2", "starlight-openapi": "^0.20.0", "starlight-sidebar-topics": "^0.6.0" diff --git a/package.json b/package.json index c53e2e5e..b28141c8 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "astro-mermaid": "^1.0.4", "mermaid": "^11.10.1", "remark-definition-list": "^2.0.0", - "sharp": "^0.34.3", + "sharp": "^0.34.4", "starlight-links-validator": "^0.17.2", "starlight-openapi": "^0.20.0", "starlight-sidebar-topics": "^0.6.0" From 8da4a5731bfaf559b45b33a71b610d786ab73be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 8 Oct 2025 18:26:03 +0200 Subject: [PATCH 16/16] Bump lockfile --- package-lock.json | 234 +++++++++++++++++++++++----------------------- 1 file changed, 116 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a787f48..a8542a79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -904,7 +904,7 @@ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", "cpu": [ - "x64" + "arm64" ], "license": "LGPL-3.0-or-later", "optional": true, @@ -1000,7 +1000,7 @@ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", "cpu": [ - "arm64" + "x64" ], "license": "LGPL-3.0-or-later", "optional": true, @@ -1349,7 +1349,7 @@ "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.4.0.tgz", "integrity": "sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==", "cpu": [ - "wasm32" + "x64" ], "license": "MIT", "optional": true, @@ -5809,10 +5809,10 @@ ], "license": "MIT" }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", "funding": [ { "type": "GitHub Sponsors", @@ -5825,16 +5825,19 @@ ], "license": "MIT", "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", + "estree-util-visit": "^2.0.0", "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", - "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", "funding": [ { "type": "GitHub Sponsors", @@ -5847,10 +5850,10 @@ ], "license": "MIT" }, - "node_modules/micromark-factory-space": { + "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5863,14 +5866,13 @@ ], "license": "MIT", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-factory-title": { + "node_modules/micromark-util-resolve-all": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "funding": [ { "type": "GitHub Sponsors", @@ -5883,16 +5885,13 @@ ], "license": "MIT", "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-factory-whitespace": { + "node_modules/micromark-util-sanitize-uri": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "funding": [ { "type": "GitHub Sponsors", @@ -5905,16 +5904,15 @@ ], "license": "MIT", "dependencies": { - "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "funding": [ { "type": "GitHub Sponsors", @@ -5927,14 +5925,16 @@ ], "license": "MIT", "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-util-chunked": { + "node_modules/micromark-util-symbol": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", "funding": [ { "type": "GitHub Sponsors", @@ -5947,10 +5947,10 @@ ], "license": "MIT" }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "funding": [ { "type": "GitHub Sponsors", @@ -6147,9 +6147,13 @@ "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", "license": "MIT", "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-queue": { @@ -6158,8 +6162,14 @@ "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", "license": "MIT", "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { @@ -6209,13 +6219,17 @@ "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/parse-entities/node_modules/@types/unist": { @@ -6230,7 +6244,16 @@ "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^2.0.0" + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/parse5": { @@ -6239,7 +6262,10 @@ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { - "micromark-util-types": "^2.0.0" + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/path-data-parser": { @@ -6260,25 +6286,16 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pkg-types": { @@ -6314,27 +6331,16 @@ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "MIT", @@ -6344,19 +6350,18 @@ "source-map-js": "^1.2.1" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, { "type": "github", "url": "https://github.com/sponsors/ai" @@ -6383,7 +6388,7 @@ "util-deprecate": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=4" } }, "node_modules/prismjs": { @@ -6392,7 +6397,7 @@ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=6" } }, "node_modules/prompts": { @@ -6401,11 +6406,11 @@ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "license": "MIT", "dependencies": { - "@types/nlcst": "^2.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 6" } }, "node_modules/prompts/node_modules/kleur": { @@ -6414,15 +6419,7 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "license": "MIT", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=6" } }, "node_modules/property-information": { @@ -6532,8 +6529,9 @@ "unified": "^11.0.0", "vfile": "^6.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/regex": {

-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 diff --git a/src/assets/diagrams/subscriptions/update_subscription.drawio b/src/assets/diagrams/subscriptions/update_subscription.drawio deleted file mode 100644 index d89d80fe..00000000 --- a/src/assets/diagrams/subscriptions/update_subscription.drawio +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/assets/diagrams/subscriptions/update_subscription.png b/src/assets/diagrams/subscriptions/update_subscription.png deleted file mode 100644 index 04651b1bc84669f081def514750c5f8c852288a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111381 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 WIsVenZ7SFU+Z7$dONCnY_x=a@p5w~^ From a6f4bfb64c31d5608b5bb122c56c33fa39e3122f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:31:18 +0100 Subject: [PATCH 03/16] Fix build --- astro.config.ts | 17 ++++++++++------- src/content/docs/reference/index.md | 12 ++++++++++++ 2 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 src/content/docs/reference/index.md diff --git a/astro.config.ts b/astro.config.ts index 828ccefd..5e9bf49f 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -25,8 +25,8 @@ export default defineConfig({ plugins: [ starlightOpenAPI([ { - base: "/explorer", - label: "API explorer", + base: "/reference/api", + label: "API reference", schema: "./schema.yml", }, ]), @@ -80,13 +80,16 @@ export default defineConfig({ }, { label: "Reference", - link: "/explorer", + link: "/reference", + id: "reference", icon: "laptop", - items: [ - ...openAPISidebarGroups, - ], + items: ["reference", ...openAPISidebarGroups], }, - ]), + ], { + topics: { + reference: ["/reference/api", "/reference/api/**/*"], + }, + }), ], }), ], diff --git a/src/content/docs/reference/index.md b/src/content/docs/reference/index.md new file mode 100644 index 00000000..d7b7c9bf --- /dev/null +++ b/src/content/docs/reference/index.md @@ -0,0 +1,12 @@ +--- +title: API Reference +description: OpenAPI reference for the Open Podcast API +next: false +prev: false +tableOfContents: false +sidebar: + label: Overview + order: 1 +--- + +This section contains reference material generated from the Open Podcast API OpenAPI schema file. From 8f3040242cfda09c5eb446f20d9ee34a409ab080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:31:24 +0100 Subject: [PATCH 04/16] Fix broken link --- src/content/docs/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index bd75fad2..c36f73ff 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -12,7 +12,7 @@ hero: icon: right-arrow variant: primary - text: Learn about the project - link: /about + link: /docs/about icon: right-arrow variant: secondary --- From 3871e248b7a00e2176280dd86856d5c376828790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:31:30 +0100 Subject: [PATCH 05/16] Remove unused console log --- plugins/remark-autolink-iso.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/remark-autolink-iso.ts b/plugins/remark-autolink-iso.ts index dd8f26c8..14fc7ca7 100644 --- a/plugins/remark-autolink-iso.ts +++ b/plugins/remark-autolink-iso.ts @@ -8,7 +8,6 @@ const LINK_URL = "https://www.iso.org/iso-8601-date-and-time-format.html"; export function remarkAutoLinkISO() { return function (tree: Root) { visit(tree, TARGET_NODE_TYPES, (node, index, parent) => { - console.log(node); if (node.type !== "text" || !parent || typeof index !== "number") { return CONTINUE; } From 38f6be9e607c50f3ea67916129a9b78c0e1fdab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:43:31 +0100 Subject: [PATCH 06/16] Add new schema file --- astro.config.ts | 6 + schema.yml | 889 +++++++++++++++++++----------------------------- 2 files changed, 359 insertions(+), 536 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index 5e9bf49f..da06643a 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -28,6 +28,12 @@ export default defineConfig({ base: "/reference/api", label: "API reference", schema: "./schema.yml", + sidebar: { + operations: { + badges: true, + labels: "operationId", + }, + }, }, ]), starlightSidebarTopics([ diff --git a/schema.yml b/schema.yml index 13205552..1172bcfa 100644 --- a/schema.yml +++ b/schema.yml @@ -1,607 +1,424 @@ -openapi: 3.0.3 +openapi: 3.1.0 info: - title: OpenPodcast API - description: |- - This is the OpenAPI specification for the OpenPodcast API - version: 0.1.0 -tags: - - name: Subscriptions - description: All actions relating to subscription management + title: Open Podcast API + version: 1.0.0 + description: API for managing podcast subscriptions. + paths: - /subscriptions: + /v1/subscriptions: get: + summary: List subscriptions + operationId: listSubscriptions tags: - Subscriptions - summary: Retrieve all updated subscription information - description: Retrieve all subscription information that has changed since the provided timestamp - operationId: getSubscriptions + description: | + Retrieves a paginated list of podcast subscriptions associated with the authenticated user. parameters: - - in: query - name: since - schema: - type: string - format: date-time - required: false - example: - '2022-04-23T18:25:43.511Z' - - in: query - name: page - schema: - type: number - required: false - example: - 1 - - in: query - name: per_page - schema: - type: number - required: false - example: - 5 + - $ref: "#/components/parameters/PageNumber" + - $ref: "#/components/parameters/PageSize" responses: - '200': - description: Successful operation + "200": + description: List of subscriptions successfully returned. content: - application/json: + application/vnd.api+json: schema: - $ref: '#/components/schemas/Subscriptions' - application/xml: - schema: - $ref: '#/components/schemas/Subscriptions' - '401': - $ref: '#/components/responses/Unauthorized' - security: - - podcast_auth: - - read:subscriptions + $ref: "#/components/schemas/PaginatedSubscriptionResponse" post: + summary: Add a new subscription + operationId: addSubscription tags: - Subscriptions - summary: Add new subscriptions for the authenticated user - description: Add one or more new subscriptions for the authenticated user by passing an array of feed URLs in the request body - operationId: addSubscription + description: | + Enables clients to add a new subscription to the system and register the authenticated user as a subscriber. + + The operation is **idempotent**. If the subscription already exists, the server MAY return a `200 OK`. requestBody: - $ref: '#/components/requestBodies/FeedArray' + required: true + content: + application/vnd.api+json: + schema: + type: object + required: [data] + properties: + data: + type: object + required: [type, id, attributes] + properties: + type: + type: string + enum: [subscription] + example: subscription + id: + type: string + format: uuid + description: UUIDv5 identifying the feed. + example: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + type: object + required: [feedUrl] + properties: + feedUrl: + type: string + format: uri + example: https://example.com/rss1 responses: - '200': - description: Successful operation + "201": + description: Subscription successfully created. + headers: + Location: + description: URI of the created resource + schema: + type: string content: - application/json: + application/vnd.api+json: schema: - $ref: '#/components/schemas/NewSubscriptions' - application/xml: + $ref: "#/components/schemas/SubscriptionResponse" + "200": + description: Subscription already existed; confirmed. + content: + application/vnd.api+json: schema: - $ref: '#/components/schemas/NewSubscriptions' - '401': - $ref: '#/components/responses/Unauthorized' - '405': - $ref: '#/components/responses/ValidationException' - security: - - podcast_auth: - - write:subscriptions - /subscriptions/{guid}: + $ref: "#/components/schemas/SubscriptionResponse" + /v1/subscriptions/{guid}: get: + summary: Get a subscription + operationId: getSubscription tags: - Subscriptions - summary: Retrieve information about a single subscription - description: Retrieve information about a single subscription specified in the path - operationId: getSubscription + description: | + Fetch a single subscription resource by its globally unique `guid`, associated with the authenticated user. parameters: - - in: path - name: guid - schema: - type: string - format: guid - required: true - example: 968cb508-803c-493c-8ff2-9e397dadb83c + - $ref: "#/components/parameters/Guid" responses: - '200': - description: Successful operation + "200": + description: Subscription found and returned successfully. content: - application/json: - schema: - $ref: '#/components/schemas/Subscription' - application/xml: + application/vnd.api+json: schema: - $ref: '#/components/schemas/Subscription' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '405': - $ref: '#/components/responses/ValidationException' - '410': - $ref: '#/components/responses/Gone' - security: - - podcast_auth: - - read:subscriptions - patch: - tags: - - Subscriptions - summary: Update a single subscription entry - description: Update information about a single subscription specified in the path - operationId: updateSubscription - parameters: - - in: path - name: guid - schema: - type: string - format: guid - required: true - example: 968cb508-803c-493c-8ff2-9e397dadb83c - requestBody: - $ref: '#/components/requestBodies/PatchedSubscription' - responses: - '200': - description: Successful operation + $ref: "#/components/schemas/SingleSubscriptionResponse" + "400": + description: The provided GUID is not a valid UUID. content: - application/json: + application/vnd.api+json: schema: - $ref: '#/components/schemas/PatchedSubscription' - application/xml: + $ref: "#/components/schemas/ErrorResponse" + "404": + description: Subscription not found or inaccessible to the user. + content: + application/vnd.api+json: schema: - $ref: '#/components/schemas/PatchedSubscription' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '405': - $ref: '#/components/responses/ValidationException' - security: - - podcast_auth: - - write:subscriptions + $ref: "#/components/schemas/ErrorResponse" delete: + summary: Delete a subscription + operationId: deleteSubscription tags: - Subscriptions - summary: Delete a single subscription entry - description: Deletes a single subscription specified in the path - operationId: deleteSubscription + description: | + Removes a subscription for the authenticated user by `guid`. + + The operation is user-specific and does not affect other users subscribed to the same feed. parameters: - - in: path - name: guid + - name: guid + in: path + required: true + description: The globally unique identifier (UUIDv5) of the subscription resource. schema: type: string - format: guid - required: true - example: 2d8bb39b-8d34-48d4-b223-a0d01eb27d71 + format: uuid responses: - '202': - $ref: '#/components/responses/DeletionReceived' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '405': - $ref: '#/components/responses/ValidationException' - security: - - podcast_auth: - - write:subscriptions - /deletions/{id}: - get: + "204": + description: Subscription successfully deleted. No content returned. + "400": + description: Invalid GUID format. + content: + application/vnd.api+json: + schema: + $ref: "#/components/schemas/ErrorResponse" + example: + errors: + - status: "400" + title: "Invalid GUID in request" + detail: "The requested GUID is not a UUID value" + "404": + description: Subscription not found for the authenticated user. + + /v1/operations: + post: + summary: Atomic Operations Endpoint + operationId: atomicOperation tags: - - Subscriptions - summary: Retrieve information subscription deletion - description: Retrieve information about a deletion by querying the ID sent in a deletion request - operationId: getDeletions - parameters: - - in: path - name: id - schema: - type: number - format: integer - required: true - example: 25 + - Operations + description: | + Perform multiple resource-level operations in a single, ordered request using the JSON:API Atomic Operations extension. + Only supported operations documented by the server should be used. + requestBody: + required: true + content: + application/vnd.api+json;ext="https://jsonapi.org/ext/atomic": + schema: + $ref: "#/components/schemas/AtomicOperationsRequest" responses: - '200': - $ref: '#/components/responses/DeletionResponse' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '405': - $ref: '#/components/responses/ValidationException' - security: - - podcast_auth: - - read:subscriptions + "200": + description: Atomic operations executed. Each result is reported positionally. + content: + application/vnd.api+json;ext="https://jsonapi.org/ext/atomic": + schema: + $ref: "#/components/schemas/AtomicOperationsResponse" + components: - responses: - Unauthorized: - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - example: - code: 401 - message: User not authorized - application/xml: - schema: - $ref: '#/components/schemas/Error' - example: - code: 401 - message: User not authorized - NotFound: - description: Not found - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - example: - code: 404 - message: Resource not found - application/xml: - schema: - $ref: '#/components/schemas/Error' - example: - code: 404 - message: Resource not found - ValidationException: - description: Validation exception - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - example: - code: 405 - message: Input could not be validated - application/xml: - schema: - $ref: '#/components/schemas/Error' - example: - code: 405 - message: Input could not be validated - Gone: - description: Object deleted - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - example: - code: 410 - message: Subscription has been deleted - application/xml: - schema: - $ref: '#/components/schemas/Error' - example: - code: 410 - message: Subscription has been deleted - DeletionReceived: - description: The deletion request has been received and will be processed - content: - application/json: - schema: - $ref: '#/components/schemas/Success' - example: - deletion_id: 25 - message: Deletion request was received and will be processed - application/xml: - schema: - $ref: '#/components/schemas/Success' - example: - deletion_id: 25 - message: Deletion request was received and will be processed - DeletionResponse: - description: The object was successfully deleted - content: - application/json: - schema: - $ref: '#/components/schemas/Deletion' - examples: - Success: - value: - deletion_id: 25 - status: SUCCESS - message: Subscription deleted successfully - Pending: - value: - deletion_id: 25 - status: PENDING - message: Deletion is pending - Failure: - value: - deletion_id: 25 - status: FAILURE - message: The deletion process encountered an error and was rolled backwas rolled back - application/xml: - schema: - $ref: '#/components/schemas/Deletion' - examples: - Success: - value: - deletion_id: 25 - status: SUCCESS - message: Subscription deleted successfully - Pending: - value: - deletion_id: 25 - status: PENDING - message: Deletion is pending - Failure: - value: - deletion_id: 25 - status: FAILURE - message: The deletion process encountered an error and was rolled back + parameters: + Guid: + name: guid + in: path + required: true + description: The globally unique identifier (UUIDv5) of the subscription resource. + schema: + type: string + format: uuid + example: ce510f4d-9046-5590-846e-58619ab8b353 + + PageNumber: + name: page[number] + in: query + required: false + description: "The page of results to return (default: 1)." + schema: + type: integer + minimum: 1 + default: 1 + + PageSize: + name: page[size] + in: query + required: false + description: "The number of results per page (default: 25, max: 100)." + schema: + type: integer + minimum: 1 + maximum: 100 + default: 25 + schemas: - Error: - type: object - properties: - code: - type: string - message: - type: string - required: - - code - - message - Success: + SubscriptionResponse: type: object properties: - deletion_id: - type: number - format: integer - message: - type: string - required: - - code - - message + jsonapi: + type: object + properties: + version: + type: string + example: "1.1" + data: + type: object + required: [type, id, attributes, links] + properties: + type: + type: string + enum: [subscription] + id: + type: string + format: uuid + example: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + type: object + properties: + feedUrl: + type: string + format: uri + example: https://example.com/rss1 + userSubscribedAt: + type: string + format: date-time + example: 2025-08-24T16:00:00Z + links: + type: object + required: [self, unsubscribe] + properties: + self: + type: string + example: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + type: object + required: [href, method] + properties: + href: + type: string + example: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: + type: string + enum: [DELETE] + example: DELETE + Subscription: - xml: - name: subscription - required: - - feed_url - - guid - - is_subscribed type: object + required: [type, id, attributes, links] properties: - feed_url: - type: string - format: url - guid: - type: string - format: guid - is_subscribed: - type: boolean - subscription_changed: + type: type: string - format: date-time - new_guid: + enum: [subscription] + example: subscription + id: type: string - format: guid - guid_changed: - type: string - format: date-time - deleted: - type: string - format: date-time - example: - feed_url: https://example.com/feed2 - guid: 968cb508-803c-493c-8ff2-9e397dadb83c - is_subscribed: true - NewSubscription: - xml: - name: success - required: - - feed_url - - guid - - is_subscribed - - subscription_changed + format: uuid + example: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + type: object + properties: + feedUrl: + type: string + format: uri + example: https://example.com/rss1 + userSubscribedAt: + type: string + format: date-time + example: 2025-08-24T16:00:00Z + links: + type: object + properties: + self: + type: string + example: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + type: object + required: [href, method] + properties: + href: + type: string + example: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: + type: string + enum: [DELETE] + example: DELETE + + SingleSubscriptionResponse: type: object properties: - feed_url: + jsonapi: + type: object + properties: + version: + type: string + example: "1.1" + data: + $ref: "#/components/schemas/Subscription" + + PaginationLinks: + type: object + properties: + self: type: string - format: url - guid: + example: /v1/subscriptions?page[number]=1&page[size]=2 + first: type: string - format: guid - is_subscribed: - type: boolean - subscription_changed: + example: /v1/subscriptions?page[number]=1&page[size]=2 + prev: type: string - format: date-time - FailedSubscription: - xml: - name: failure - required: - - feed_url - - message - type: object - properties: - feed_url: + nullable: true + example: null + next: type: string - format: url - message: + nullable: true + example: /v1/subscriptions?page[number]=2&page[size]=2 + last: type: string - Subscriptions: - required: - - total - - page - - per_page - - subscriptions - xml: - name: subscriptions + example: /v1/subscriptions?page[number]=5&page[size]=2 + + PaginationMeta: type: object properties: total: - type: number - page: - type: number - per_page: - type: number - next: - type: string - format: url - previous: - type: string - format: url - subscriptions: + type: integer + example: 10 + + PaginatedSubscriptionResponse: + type: object + properties: + jsonapi: + type: object + properties: + version: + type: string + example: "1.1" + data: type: array items: - $ref: '#/components/schemas/Subscription' - example: - total: 2 - page: 1 - per_page: 5 - subscriptions: - - feed_url: https://example.com/rss1 - guid: 31740ac6-e39d-49cd-9179-634bcecf4143 - is_subscribed: true - guid_changed: 2022-09-21T10:25:32.411Z - new_guid: 8d1f8f09-4f50-4327-9a63-639bfb1cbd98 - - feed_url: https://example.com/rss2 - guid: 968cb508-803c-493c-8ff2-9e397dadb83c - is_subscribed: false - subscription_changed: 2022-04-24T17:53:21.573Z - deleted: 2022-04-24T17:53:21.573Z - NewSubscriptions: - xml: - name: subscriptions + $ref: "#/components/schemas/Subscription" + links: + $ref: "#/components/schemas/PaginationLinks" + meta: + $ref: "#/components/schemas/PaginationMeta" + + AtomicOperationsRequest: type: object + required: ["atomic:operations"] properties: - success: + "atomic:operations": type: array items: - $ref: '#/components/schemas/NewSubscription' - failure: + type: object + required: [op, data] + properties: + op: + type: string + enum: [add] + example: add + data: + type: object + required: [type, attributes] + properties: + type: + type: string + enum: [subscription] + example: subscription + id: + type: string + format: uuid + example: b80719b3-1485-57c0-9e55-fda2b8f7472b + attributes: + type: object + required: [feedUrl] + properties: + feedUrl: + type: string + format: uri + example: https://example.com/rss2 + + AtomicOperationsResponse: + type: object + required: ["atomic:results"] + properties: + "atomic:results": type: array items: - $ref: '#/components/schemas/FailedSubscription' - example: - success: - - feed_url: https://example.com/rss1 - guid: 8d1f8f09-4f50-4327-9a63-639bfb1cbd98 - is_subscribed: true - subscription_changed: 2023-02-23T14:00:00.000Z - - feed_url: https://example.com/rss2 - guid: 968cb508-803c-493c-8ff2-9e397dadb83c - is_subscribed: true - subscription_changed: 2023-02-23T14:00:00.000Z - - feed_url: https://example.com/rss3 - guid: e672c1f4-230d-4ab4-99d3-390a9f835ec1 - is_subscribed: true - subscription_changed: 2023-02-23T14:00:00.000Z - failure: - - feed_url: example.com/rss4 - message: No protocol present - FeedArray: - xml: - name: subscriptions - required: - - subscriptions + oneOf: + - type: object + required: [data] + properties: + data: + $ref: "#/components/schemas/Subscription" + - type: object + required: [errors] + properties: + errors: + type: array + items: + $ref: "#/components/schemas/ErrorResponse" + + ErrorResponse: type: object properties: - subscriptions: - xml: - name: subscription + errors: type: array items: type: object - required: - - feed_url + required: [status, title] properties: - feed_url: + status: type: string - guid: + example: "404" + title: type: string - example: - - feed_url: https://example.com/feed1 - - feed_url: https://example.com/feed2 - - feed_url: https://example.com/feed3 - - feed_url: example.com/feed4 - guid: 2d8bb39b-8d34-48d4-b223-a0d01eb27d71 - SubscriptionUpdate: - xml: - name: subscription - type: object - minProperties: 1 - properties: - new_feed_url: - type: string - format: url - new_guid: - type: string - format: uuid - is_subscribed: - type: boolean - example: - new_feed_url: https://example.com/rss5 - new_guid: 965fcecf-ce04-482b-b57c-3119b866cc61 - is_subscribed: false - PatchedSubscription: - xml: - name: subscription - type: object - minProperties: 1 - properties: - new_feed_url: - type: string - format: url - is_subscribed: - type: boolean - subscription_changed: - type: string - format: date-time - new_guid: - type: string - format: uuid - guid_changed: - type: string - format: date-time - example: - new_feed_url: https://example.com/rss5 - is_subscribed: false - subscription_changed: 2023-02-23T14:41:00.000Z - guid_changed: 2023-02-23T14:41:00.000Z - new_guid: 965fcecf-ce04-482b-b57c-3119b866cc61 - Deletion: - xml: - name: deletion - required: - - deletion_id - - status - type: object - properties: - deletion_id: - type: number - format: integer - status: - type: string - enum: - - SUCCESS - - FAILURE - - PENDING - message: - type: string - example: - deletion_id: 25 - status: SUCCESS - message: Subscription deleted successfully - requestBodies: - FeedArray: - description: An array of feeds the user wants to subscribe to - content: - application/json: - schema: - $ref: '#/components/schemas/FeedArray' - application/xml: - schema: - $ref: '#/components/schemas/FeedArray' - PatchedSubscription: - description: A request containing new information to update an existing subscription with - content: - application/json: - schema: - $ref: '#/components/schemas/SubscriptionUpdate' - application/xml: - schema: - $ref: '#/components/schemas/SubscriptionUpdate' - securitySchemes: - podcast_auth: - type: oauth2 - flows: - implicit: - authorizationUrl: https://test.openpodcastapi.com/oauth/authorize - scopes: - write:subscriptions: modify subscription information for your account - read:subscriptions: read your subscription information - api_key: - type: apiKey - name: api_key - in: header + example: "Subscription not found" + detail: + type: string + example: The requested subscription does not exist for the user. From a13ab365a499cc06b1e0b923cfc2fd7d5671f53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Wed, 27 Aug 2025 01:58:42 +0100 Subject: [PATCH 07/16] Add examples to OpenAPI --- schema.yml | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/schema.yml b/schema.yml index 1172bcfa..2027414f 100644 --- a/schema.yml +++ b/schema.yml @@ -23,6 +23,29 @@ paths: application/vnd.api+json: schema: $ref: "#/components/schemas/PaginatedSubscriptionResponse" + example: + jsonapi: + version: "1.1" + data: + - type: subscription + id: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + feedUrl: https://example.com/rss1 + userSubscribedAt: 2025-08-24T16:00:00Z + links: + self: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + href: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: DELETE + links: + self: /v1/subscriptions?page[number]=1&page[size]=25 + first: /v1/subscriptions?page[number]=1&page[size]=25 + prev: null + next: /v1/subscriptions?page[number]=2&page[size]=25 + last: /v1/subscriptions?page[number]=4&page[size]=25 + meta: + total: 100 + post: summary: Add a new subscription operationId: addSubscription @@ -73,12 +96,42 @@ paths: application/vnd.api+json: schema: $ref: "#/components/schemas/SubscriptionResponse" + example: + jsonapi: + version: "1.1" + data: + type: subscription + id: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + feedUrl: https://example.com/rss1 + userSubscribedAt: 2025-08-24T16:00:00Z + links: + self: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + href: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: DELETE + "200": description: Subscription already existed; confirmed. content: application/vnd.api+json: schema: $ref: "#/components/schemas/SubscriptionResponse" + example: + jsonapi: + version: "1.1" + data: + type: subscription + id: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + feedUrl: https://example.com/rss1 + userSubscribedAt: 2025-08-24T16:00:00Z + links: + self: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + href: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: DELETE + /v1/subscriptions/{guid}: get: summary: Get a subscription @@ -96,18 +149,45 @@ paths: application/vnd.api+json: schema: $ref: "#/components/schemas/SingleSubscriptionResponse" + example: + jsonapi: + version: "1.1" + data: + type: subscription + id: ce510f4d-9046-5590-846e-58619ab8b353 + attributes: + feedUrl: https://example.com/rss1 + userSubscribedAt: 2025-08-24T16:00:00Z + links: + self: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + unsubscribe: + href: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 + method: DELETE + "400": description: The provided GUID is not a valid UUID. content: application/vnd.api+json: schema: $ref: "#/components/schemas/ErrorResponse" + example: + errors: + - status: "400" + title: "Invalid GUID in request" + detail: "The requested GUID is not a UUID value" + "404": description: Subscription not found or inaccessible to the user. content: application/vnd.api+json: schema: $ref: "#/components/schemas/ErrorResponse" + example: + errors: + - status: "404" + title: "Subscription not found" + detail: "The requested subscription does not exist for the user." + delete: summary: Delete a subscription operationId: deleteSubscription @@ -139,8 +219,18 @@ paths: - status: "400" title: "Invalid GUID in request" detail: "The requested GUID is not a UUID value" + "404": description: Subscription not found for the authenticated user. + content: + application/vnd.api+json: + schema: + $ref: "#/components/schemas/ErrorResponse" + example: + errors: + - status: "404" + title: "Subscription not found" + detail: "The requested subscription does not exist for the user." /v1/operations: post: @@ -164,6 +254,19 @@ paths: application/vnd.api+json;ext="https://jsonapi.org/ext/atomic": schema: $ref: "#/components/schemas/AtomicOperationsResponse" + example: + atomic:results: + - data: + type: subscription + id: b80719b3-1485-57c0-9e55-fda2b8f7472b + attributes: + feedUrl: https://example.com/rss2 + userSubscribedAt: 2025-08-27T12:00:00Z + links: + self: /v1/subscriptions/b80719b3-1485-57c0-9e55-fda2b8f7472b + unsubscribe: + href: /v1/subscriptions/b80719b3-1485-57c0-9e55-fda2b8f7472b + method: DELETE components: parameters: From 6370d5376f5b25847a9e8bc20e92d5ad7dedb634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sat, 30 Aug 2025 13:10:13 +0100 Subject: [PATCH 08/16] Remove rehype-mermaid --- package-lock.json | 99 ----------------------------------------------- package.json | 1 - 2 files changed, 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1031c4d2..b8148632 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "astro": "^5.13.3", "astro-mermaid": "^1.0.4", "mermaid": "^11.10.1", - "rehype-mermaid": "^3.0.0", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", "starlight-openapi": "^0.20.0", @@ -755,15 +754,6 @@ "@expressive-code/core": "^0.41.2" } }, - "node_modules/@fortawesome/fontawesome-free": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", - "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", - "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", - "engines": { - "node": ">=6" - } - }, "node_modules/@humanwhocodes/momoa": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz", @@ -3860,21 +3850,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-from-dom": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", - "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", - "license": "ISC", - "dependencies": { - "@types/hast": "^3.0.0", - "hastscript": "^9.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-from-html": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", @@ -3892,22 +3867,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-from-html-isomorphic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", - "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-dom": "^5.0.0", - "hast-util-from-html": "^2.0.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -4991,27 +4950,6 @@ "uuid": "^11.1.0" } }, - "node_modules/mermaid-isomorphic": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-3.0.4.tgz", - "integrity": "sha512-XQTy7H1XwHK3DPEHf+ZNWiqUEd9BwX3Xws38R9Fj2gx718srmgjlZoUzHr+Tca+O+dqJOJsAJaKzCoP65QDfDg==", - "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-free": "^6.0.0", - "mermaid": "^11.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/remcohaszing" - }, - "peerDependencies": { - "playwright": "1" - }, - "peerDependenciesMeta": { - "playwright": { - "optional": true - } - } - }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -5726,15 +5664,6 @@ } ] }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "license": "MIT", - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, "node_modules/mlly": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", @@ -6319,34 +6248,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-mermaid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rehype-mermaid/-/rehype-mermaid-3.0.0.tgz", - "integrity": "sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html-isomorphic": "^2.0.0", - "hast-util-to-text": "^4.0.0", - "mermaid-isomorphic": "^3.0.0", - "mini-svg-data-uri": "^1.0.0", - "space-separated-tokens": "^2.0.0", - "unified": "^11.0.0", - "unist-util-visit-parents": "^6.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/remcohaszing" - }, - "peerDependencies": { - "playwright": "1" - }, - "peerDependenciesMeta": { - "playwright": { - "optional": true - } - } - }, "node_modules/rehype-minify-whitespace": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", diff --git a/package.json b/package.json index 82178d3a..d74ea918 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "astro": "^5.13.3", "astro-mermaid": "^1.0.4", "mermaid": "^11.10.1", - "rehype-mermaid": "^3.0.0", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", "starlight-openapi": "^0.20.0", From 56ad14f4c24cd43e3525c0c8420b5ea7c479d7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sat, 30 Aug 2025 13:13:08 +0100 Subject: [PATCH 09/16] Update devalue --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d41f81e..9c5757fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3402,9 +3402,10 @@ } }, "node_modules/devalue": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.3.2.tgz", + "integrity": "sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==", + "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", From 20ef8b4ef644bd9b222a1a559b08551172765fd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sat, 30 Aug 2025 17:04:13 +0100 Subject: [PATCH 10/16] Fix broken links --- astro.config.ts | 3 ++ package-lock.json | 43 +++++++++++++++++++ package.json | 1 + src/content/docs/docs/about.md | 4 +- .../specs/subscriptions/add-subscription.mdx | 18 +++++--- 5 files changed, 62 insertions(+), 7 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index da06643a..4b7898d0 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -8,8 +8,10 @@ import starlightOpenAPI, { openAPISidebarGroups } from "starlight-openapi"; import starlightSidebarTopics from "starlight-sidebar-topics"; import mermaid from "astro-mermaid"; import { remarkAutoLinkISO } from "./plugins/remark-autolink-iso"; +import starlightLinksValidator from "starlight-links-validator"; export default defineConfig({ + site: "https://openpodcastapi.org", integrations: [ mermaid(), starlight({ @@ -23,6 +25,7 @@ export default defineConfig({ }, ], plugins: [ + starlightLinksValidator(), starlightOpenAPI([ { base: "/reference/api", diff --git a/package-lock.json b/package-lock.json index 9c5757fa..4613c429 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "mermaid": "^11.10.1", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", + "starlight-links-validator": "^0.17.2", "starlight-openapi": "^0.20.0", "starlight-sidebar-topics": "^0.6.0" } @@ -2024,6 +2025,12 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/picomatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.2.tgz", + "integrity": "sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==", + "license": "MIT" + }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", @@ -4292,6 +4299,18 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -7081,6 +7100,30 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/starlight-links-validator": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.17.2.tgz", + "integrity": "sha512-d2SRWu04HPiUzrzntuv/uzuXnIu4reJwzX1c+7uvcnqOCuzgpv+tmlUC+dp3VYpmfxQy8RX+xcWtfcEkx905VA==", + "license": "MIT", + "dependencies": { + "@types/picomatch": "^3.0.1", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-has-property": "^3.0.0", + "is-absolute-url": "^4.0.1", + "kleur": "^4.1.5", + "mdast-util-mdx-jsx": "^3.1.3", + "mdast-util-to-string": "^4.0.0", + "picomatch": "^4.0.2", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=18.17.1" + }, + "peerDependencies": { + "@astrojs/starlight": ">=0.32.0" + } + }, "node_modules/starlight-openapi": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/starlight-openapi/-/starlight-openapi-0.20.0.tgz", diff --git a/package.json b/package.json index e4bede4a..a9ec2544 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "mermaid": "^11.10.1", "remark-definition-list": "^2.0.0", "sharp": "^0.34.3", + "starlight-links-validator": "^0.17.2", "starlight-openapi": "^0.20.0", "starlight-sidebar-topics": "^0.6.0" } diff --git a/src/content/docs/docs/about.md b/src/content/docs/docs/about.md index 3b7395f5..1b129cab 100644 --- a/src/content/docs/docs/about.md +++ b/src/content/docs/docs/about.md @@ -7,7 +7,7 @@ sidebar: The Open Podcast API project is inspired by and builds upon the [gPodder API](https://gpoddernet.readthedocs.io/en/latest/api/index.html). In the summer of 2019, the creator of gPodder announced they were stepping down and the community took over.[^1] Unfortunately, about a year later the project entered 'basic maintenance mode' due to shifting priorities of key contributors. The limited availability of volunteers combined with gPodder.net's popularity among end-users meant that people started to see server errors while synchronizing or creating an account.[^2] [^3] Attempts to establish contact and collaborate on improving the situation didn't work out as hoped. Given the situation, AntennaPod contributors started discussing whether gPodder.net support should be removed[^4] or whether it could be forked. They concluded that the best solution would be to create a new API spec with a broad range of contributors to allow users to switch servers (avoiding major loads on a single server or project), to provide an opportunity to more easily go beyond the existing gPodder.net API specs, and to enable developers to address some technical issues with the API specs. -The initial discussions on GitHub led to a meeting in October 2022 with contributors from [AntennaPod](https://github.com/AntennaPod/AntennaPod/), [Funkwhale](https://dev.funkwhale.audio/), [Kasts](https://invent.kde.org/multimedia/kasts), [Podfriend](https://github.com/MartinMouritzen/Podfriend) and the [gPodder app for Nextcloud](https://github.com/thrillfall/nextcloud-gpodder).[^initialAPIdiscussions] A few months later, the first of the recurring meetings took place to start developing the specification. +The initial discussions on GitHub led to a meeting in October 2022 with contributors from [AntennaPod](https://github.com/AntennaPod/AntennaPod/), [Funkwhale](https://dev.funkwhale.audio/), [Kasts](https://invent.kde.org/multimedia/kasts), [Podfriend](https://github.com/MartinMouritzen/Podfriend) and the [gPodder app for Nextcloud](https://github.com/thrillfall/nextcloud-gpodder).[^5] A few months later, the first of the recurring meetings took place to start developing the specification. ## Join us! @@ -15,7 +15,7 @@ We encourage you to engage in the discussions, and provide feedback based on you ### Code of Conduct -The Open Podcast API project abides by the [Contributor Covenant Code of Conduct](/coc). Please familiarize yourself with it before participating in any of our community spaces. +The Open Podcast API project abides by the [Contributor Covenant Code of Conduct](/docs/coc). Please familiarize yourself with it before participating in any of our community spaces. ## Licensing diff --git a/src/content/docs/specs/subscriptions/add-subscription.mdx b/src/content/docs/specs/subscriptions/add-subscription.mdx index 30b7b920..988af16d 100644 --- a/src/content/docs/specs/subscriptions/add-subscription.mdx +++ b/src/content/docs/specs/subscriptions/add-subscription.mdx @@ -25,8 +25,8 @@ The client **MUST** provide a single resource object with: ```http POST /v1/subscriptions HTTP/1.1 -Content-Type: application/vnd.api+json -Accept: application/vnd.api+json +Content-Type: application/vnd.api+json; profile="https://openpodcastapi.org/specs/profiles/subscription" +Accept: application/vnd.api+json; profile="https://openpodcastapi.org/specs/profiles/subscription" { "data": { @@ -70,10 +70,18 @@ The response **MUST** contain the following `links`. ```http HTTP/1.1 201 Created Location: /v1/subscriptions/ce510f4d-9046-5590-846e-58619ab8b353 -Content-Type: application/vnd.api+json +Content-Type: application/vnd.api+json; profile="https://openpodcastapi.org/specs/profiles/subscription"; ext="https://openpodcastapi.org/specs/extensions/link-method" { - "jsonapi": { "version": "1.1" }, + "jsonapi": { + "version": "1.1", + "ext": [ + "https://openpodcastapi.org/specs/extensions/link-method" + ], + "profile": [ + "https://openpodcastapi.org/specs/profiles/subscription" + ] + }, "data": { "type": "subscription", "id": "ce510f4d-9046-5590-846e-58619ab8b353", @@ -95,4 +103,4 @@ Content-Type: application/vnd.api+json ## Bulk operations Clients **MAY** use the [Atomic Operations extension](https://jsonapi.org/ext/atomic/) for batch creation or updates. -See [Add subscriptions in bulk](../operations/bulk-create-subscriptions.md) for more information. +See [Add subscriptions in bulk](/specs/operations/add-subscriptions) for more information. From cdab5616fa6f6ea436a7e23195a27930b6a2d6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sat, 30 Aug 2025 17:05:53 +0100 Subject: [PATCH 11/16] Fix more links --- src/content/docs/specs/profiles/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/specs/profiles/index.md b/src/content/docs/specs/profiles/index.md index 1ca35766..f526d499 100644 --- a/src/content/docs/specs/profiles/index.md +++ b/src/content/docs/specs/profiles/index.md @@ -19,4 +19,4 @@ Client and server developers **SHOULD** agree upon and understand each profile. ## Open Podcast API profiles -- [Subscriptions](/specs/profiles/subscriptions) +- [Subscriptions](/specs/profiles/subscription) From 21160a3774c5ed540923b8990b24594efd3e5cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciar=C3=A1n=20Ainsworth?= Date: Sat, 30 Aug 2025 20:24:32 +0100 Subject: [PATCH 12/16] Use Markdown where possible Use banners instead of asides --- src/components/SponsorCallout.astro | 18 ++++++++++++------ src/content/docs/docs/about.md | 2 -- src/content/docs/docs/coc.mdx | 5 +++-- src/content/docs/docs/conventions.md | 5 ----- src/content/docs/partials/_core-action.md | 3 --- src/content/docs/partials/_core-endpoint.md | 3 --- src/content/docs/specs/error-codes.md | 1 - .../docs/specs/extensions/link-method.md | 5 ++++- src/content/docs/specs/headers.md | 1 - src/content/docs/specs/index.md | 9 ++++----- ...-subscriptions.mdx => add-subscriptions.md} | 7 +++---- .../specs/operations/{index.mdx => index.md} | 7 +++---- src/content/docs/specs/pagination.md | 5 +++-- ...dd-subscription.mdx => add-subscription.md} | 7 +++---- ...subscription.mdx => delete-subscription.md} | 7 +++---- ...et-subscription.mdx => get-subscription.md} | 7 +++---- .../subscriptions/{index.mdx => index.md} | 11 +++++------ ...subscriptions.mdx => list-subscriptions.md} | 7 +++---- 18 files changed, 49 insertions(+), 61 deletions(-) delete mode 100644 src/content/docs/partials/_core-action.md delete mode 100644 src/content/docs/partials/_core-endpoint.md rename src/content/docs/specs/operations/{add-subscriptions.mdx => add-subscriptions.md} (97%) rename src/content/docs/specs/operations/{index.mdx => index.md} (97%) rename src/content/docs/specs/subscriptions/{add-subscription.mdx => add-subscription.md} (96%) rename src/content/docs/specs/subscriptions/{delete-subscription.mdx => delete-subscription.md} (95%) rename src/content/docs/specs/subscriptions/{get-subscription.mdx => get-subscription.md} (96%) rename src/content/docs/specs/subscriptions/{index.mdx => index.md} (88%) rename src/content/docs/specs/subscriptions/{list-subscriptions.mdx => list-subscriptions.md} (97%) diff --git a/src/components/SponsorCallout.astro b/src/components/SponsorCallout.astro index f09c8f54..07fdab99 100644 --- a/src/components/SponsorCallout.astro +++ b/src/components/SponsorCallout.astro @@ -1,5 +1,5 @@ --- -import { Image } from 'astro:assets'; +import { Image } from "astro:assets"; interface Props { title: string; @@ -9,15 +9,21 @@ interface Props { } const { title, sponsorName, logo, website } = Astro.props; - --- -