From 49da2b8e881adcae97878e83a65ec3f5f1e71d7d Mon Sep 17 00:00:00 2001 From: Brian Rinaldi Date: Tue, 12 May 2026 07:51:29 -0400 Subject: [PATCH 1/2] Upgrade to latest starlight Use new features for a small simplification of the nav JSON. Also address some minor type errors in the JSON. --- astro.config.mjs | 241 ++++-- package-lock.json | 757 ++++++++---------- package.json | 8 +- .../extensions/developing-extensions.mdx | 31 +- .../tooling/extensions/extensions-library.md | 6 +- .../docs/aws/tooling/extensions/index.md | 7 +- .../docs/aws/tooling/extensions/mailhog.md | 3 +- .../extensions/managing-extensions.mdx | 59 +- 8 files changed, 528 insertions(+), 584 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 0c2fe1c9..4af802f8 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -60,7 +60,9 @@ async function fetchLatestLocalstackCliVersionFromGitHub() { lastError = new Error('GitHub release response missing tag_name'); } else { const msg = - typeof data?.message === 'string' ? data.message : `HTTP ${response.status}`; + typeof data?.message === 'string' + ? data.message + : `HTTP ${response.status}`; lastError = new Error(msg); } } catch (err) { @@ -68,10 +70,14 @@ async function fetchLatestLocalstackCliVersionFromGitHub() { } } - throw lastError ?? new Error('Failed to fetch localstack-cli release from GitHub'); + throw ( + lastError ?? new Error('Failed to fetch localstack-cli release from GitHub') + ); } -const cliVersionFromEnv = normalizeCliReleaseTag(process.env.LOCALSTACK_AWS_VERSION ?? ''); +const cliVersionFromEnv = normalizeCliReleaseTag( + process.env.LOCALSTACK_AWS_VERSION ?? '', +); /** @type {string} */ let latestAWSVersion; @@ -391,8 +397,8 @@ export default defineConfig({ }, { label: 'Getting Started', - autogenerate: { directory: '/aws/getting-started' }, collapsed: true, + items: [{ autogenerate: { directory: '/aws/getting-started' } }], }, { label: 'Local AWS Services', @@ -412,52 +418,80 @@ export default defineConfig({ }, { label: 'LocalStack Web App', - autogenerate: { - directory: '/aws/capabilities/web-app', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/web-app', + }, + }, + ], }, { label: 'Config', - autogenerate: { - directory: '/aws/capabilities/config', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/config', + }, + }, + ], }, { label: 'Cloud Sandbox', - autogenerate: { - directory: '/aws/capabilities/cloud-sandbox', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/cloud-sandbox', + }, + }, + ], }, { label: 'Networking', - autogenerate: { - directory: '/aws/capabilities/networking', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/networking', + }, + }, + ], }, { label: 'State Management', - autogenerate: { - directory: '/aws/capabilities/state-management', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/state-management', + }, + }, + ], }, { label: 'Chaos Engineering', - autogenerate: { - directory: '/aws/capabilities/chaos-engineering', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/chaos-engineering', + }, + }, + ], }, { label: 'Security Testing', - autogenerate: { - directory: '/aws/capabilities/security-testing', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/capabilities/security-testing', + }, + }, + ], }, ], }, @@ -483,29 +517,22 @@ export default defineConfig({ }, { label: 'LocalStack SDKs', - autogenerate: { - directory: '/aws/tooling/localstack-sdks', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/tooling/localstack-sdks', + }, + }, + ], }, { label: 'Extensions', items: [ { - label: 'Overview', - slug: 'aws/tooling/extensions', - }, - { - label: 'Managing Extensions', - slug: 'aws/tooling/extensions/managing-extensions', - }, - { - label: 'Developing Extensions', - slug: 'aws/tooling/extensions/developing-extensions', - }, - { - label: 'Extensions Library', - slug: 'aws/tooling/extensions/extensions-library', + autogenerate: { + directory: '/aws/tooling/extensions', + }, }, { label: 'Official Extensions', @@ -520,10 +547,14 @@ export default defineConfig({ }, { label: 'Lambda Tools', - autogenerate: { - directory: '/aws/tooling/lambda-tools', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/tooling/lambda-tools', + }, + }, + ], }, { label: 'AWS Replicator', @@ -557,59 +588,91 @@ export default defineConfig({ }, { label: 'Continuous Integration', - autogenerate: { - directory: '/aws/integrations/continuous-integration', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/continuous-integration', + }, + }, + ], }, { label: 'AWS SDKs', - autogenerate: { - directory: '/aws/integrations/aws-sdks', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/aws-sdks', + }, + }, + ], }, { label: 'AWS Native Tools', - autogenerate: { - directory: '/aws/integrations/aws-native-tools', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/aws-native-tools', + }, + }, + ], }, { label: 'Infrastructure as Code', - autogenerate: { - directory: '/aws/integrations/infrastructure-as-code', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/infrastructure-as-code', + }, + }, + ], }, { label: 'Containers', - autogenerate: { - directory: '/aws/integrations/containers', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/containers', + }, + }, + ], }, { label: 'App Frameworks', - autogenerate: { - directory: '/aws/integrations/app-frameworks', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/app-frameworks', + }, + }, + ], }, { label: 'Messaging', - autogenerate: { - directory: '/aws/integrations/messaging', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/messaging', + }, + }, + ], }, { label: 'Testing', - autogenerate: { - directory: '/aws/integrations/testing', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/integrations/testing', + }, + }, + ], }, ], }, @@ -623,12 +686,18 @@ export default defineConfig({ }, { label: 'Kubernetes', - autogenerate: { directory: '/aws/enterprise/kubernetes' }, collapsed: true, + items: [ + { + autogenerate: { directory: '/aws/enterprise/kubernetes' }, + }, + ], }, { label: 'Single Sign-On', - autogenerate: { directory: '/aws/enterprise/sso' }, + items: [ + { autogenerate: { directory: '/aws/enterprise/sso' } }, + ], }, { label: 'Enterprise Image', @@ -651,7 +720,7 @@ export default defineConfig({ { label: 'Help & Support', collapsed: true, - autogenerate: { directory: '/aws/help-support' }, + items: [{ autogenerate: { directory: '/aws/help-support' } }], }, ], }, @@ -665,8 +734,10 @@ export default defineConfig({ }, { label: 'Getting Started', - autogenerate: { directory: '/snowflake/getting-started' }, collapsed: true, + items: [ + { autogenerate: { directory: '/snowflake/getting-started' } }, + ], }, { label: 'Features', @@ -679,22 +750,26 @@ export default defineConfig({ { label: 'Capabilities', collapsed: true, - autogenerate: { directory: '/snowflake/capabilities' }, + items: [ + { autogenerate: { directory: '/snowflake/capabilities' } }, + ], }, { label: 'Tooling', collapsed: true, - autogenerate: { directory: '/snowflake/tooling' }, + items: [{ autogenerate: { directory: '/snowflake/tooling' } }], }, { label: 'Integrations', collapsed: true, - autogenerate: { directory: '/snowflake/integrations' }, + items: [ + { autogenerate: { directory: '/snowflake/integrations' } }, + ], }, { label: 'Tutorials', collapsed: true, - autogenerate: { directory: '/snowflake/tutorials' }, + items: [{ autogenerate: { directory: '/snowflake/tutorials' } }], }, { label: 'Feature Coverage', @@ -711,7 +786,9 @@ export default defineConfig({ { label: 'Help & Support', collapsed: true, - autogenerate: { directory: '/snowflake/help-support' }, + items: [ + { autogenerate: { directory: '/snowflake/help-support' } }, + ], }, ], }, @@ -725,8 +802,8 @@ export default defineConfig({ }, { label: 'Getting Started', - autogenerate: { directory: 'azure/getting-started' }, collapsed: true, + items: [{ autogenerate: { directory: 'azure/getting-started' } }], }, { label: 'Local Azure Services', @@ -734,8 +811,8 @@ export default defineConfig({ }, { label: 'Integrations', - autogenerate: { directory: 'azure/integrations' }, collapsed: true, + items: [{ autogenerate: { directory: 'azure/integrations' } }], }, { label: 'Changelog', @@ -751,7 +828,9 @@ export default defineConfig({ ], vite: { - plugins: [tailwindcss()], + // @tailwindcss/vite types `Plugin` against the hoisted `vite` package; Astro types `plugins` + // against its bundled copy. They are runtime-compatible. + plugins: [/** @type {any} */ (tailwindcss())], }, // Static site (SSG): deploy the `dist/` folder to any static host (e.g. Cloudflare Pages diff --git a/package-lock.json b/package-lock.json index 15533979..49f6463b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,10 @@ "name": "localstack-docs", "version": "0.0.1", "dependencies": { - "@astrojs/markdoc": "^1.0.3", - "@astrojs/react": "^5.0.2", + "@astrojs/markdoc": "^1.0.4", + "@astrojs/react": "^5.0.4", "@astrojs/sitemap": "^3.7.2", - "@astrojs/starlight": "^0.38.2", + "@astrojs/starlight": "^0.39.2", "@astrojs/starlight-docsearch": "^0.7.0", "@astrojs/starlight-markdoc": "^0.6.0", "@astrojs/starlight-tailwind": "^5.0.0", @@ -21,7 +21,7 @@ "@tanstack/react-table": "^8.21.3", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", - "astro": "^6.1.3", + "astro": "^6.3.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.509.0", @@ -261,28 +261,28 @@ } }, "node_modules/@astrojs/compiler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-3.0.1.tgz", - "integrity": "sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-4.0.0.tgz", + "integrity": "sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==", "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.8.0.tgz", - "integrity": "sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.9.0.tgz", + "integrity": "sha512-GdYkzR26re8izmyYlBqf4z2s7zNngmWLFuxw0UKiPNqHraZGS6GKWIwSHgS22RDlu2ePFJ8bzmpBcUszut/SDg==", "license": "MIT", "dependencies": { - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" } }, "node_modules/@astrojs/markdoc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@astrojs/markdoc/-/markdoc-1.0.3.tgz", - "integrity": "sha512-dcKYYZEnMtnXIv+yrXSLB0SEwyxNhFb7Cg3mKdDw4T530qQeNzwyf40FpgrSnwB6xnWQ6y5b5SJEzhhGk+FB1g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@astrojs/markdoc/-/markdoc-1.0.4.tgz", + "integrity": "sha512-Xpuv+ApNm2NVokKDmUzMQZFZ5gBBF7bncNjzm2hnfCJIOWnVwNK0H048H7hXKx06VgJ+sKdkRXpYHEams0PWog==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.8.0", - "@astrojs/markdown-remark": "7.1.0", + "@astrojs/internal-helpers": "0.9.0", + "@astrojs/markdown-remark": "7.1.1", "@astrojs/prism": "4.0.1", "@markdoc/markdoc": "^0.5.4", "esbuild": "^0.27.3", @@ -297,12 +297,12 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.1.0.tgz", - "integrity": "sha512-P+HnCsu2js3BoTc8kFmu+E9gOcFeMdPris75g+Zl4sY8+bBRbSQV6xzcBDbZ27eE7yBGEGQoqjpChx+KJYIPYQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.1.1.tgz", + "integrity": "sha512-C6e9BnLGlbdv6bV8MYGeHpHxsUHrCrB4OuRLqi5LI7oiBVcBcqfUN06zpwFQdHgV48QCCrMmLpyqBr7VqC+swA==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.8.0", + "@astrojs/internal-helpers": "0.9.0", "@astrojs/prism": "4.0.1", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", @@ -325,112 +325,13 @@ "vfile": "^6.0.3" } }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/core": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz", - "integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==", - "license": "MIT", - "dependencies": { - "@shikijs/primitive": "4.0.2", - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/engine-javascript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz", - "integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/engine-oniguruma": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz", - "integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/langs": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz", - "integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/themes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz", - "integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/@shikijs/types": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", - "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@astrojs/markdown-remark/node_modules/shiki": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz", - "integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "4.0.2", - "@shikijs/engine-javascript": "4.0.2", - "@shikijs/engine-oniguruma": "4.0.2", - "@shikijs/langs": "4.0.2", - "@shikijs/themes": "4.0.2", - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/@astrojs/mdx": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-5.0.3.tgz", - "integrity": "sha512-zv/OlM5sZZvyjHqJjR3FjJvoCgbxdqj3t4jO/gSEUNcck3BjdtMgNQw8UgPfAGe4yySdG4vjZ3OC5wUxhu7ckg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-5.0.4.tgz", + "integrity": "sha512-tSbuuYueNODiFAFaME7pjHY5lOLoxBYJi1cKd6scw9+a4ZO7C7UGdafEoVAQvOV2eO8a6RaHSAJYGVPL1w8BPA==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "7.1.0", + "@astrojs/markdown-remark": "7.1.1", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.16.0", "es-module-lexer": "^2.0.0", @@ -464,16 +365,16 @@ } }, "node_modules/@astrojs/react": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-5.0.2.tgz", - "integrity": "sha512-BDpPrapV3Wgp9sD7aTMvP+ORH0jFEue9OmkBu98KcBbTlsQCnvisDW3m7PQrMptXwEDlX5HGfP/CHmkEVY2tZA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-5.0.4.tgz", + "integrity": "sha512-yDNE4VnKOzCjH9dCBi7pT4F6kpI3M9TkS+uxnCB0sGIS6t5vKonOY+Hs/UUnSajJGT5jeBRfpI9IQp+r/n1fBA==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.8.0", + "@astrojs/internal-helpers": "0.9.0", "@vitejs/plugin-react": "^5.2.0", "devalue": "^5.6.4", "ultrahtml": "^1.6.0", - "vite": "^7.3.1" + "vite": "^7.3.2" }, "engines": { "node": ">=22.12.0" @@ -486,9 +387,9 @@ } }, "node_modules/@astrojs/react/node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", "license": "MIT", "dependencies": { "esbuild": "^0.27.0", @@ -571,39 +472,39 @@ } }, "node_modules/@astrojs/starlight": { - "version": "0.38.2", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.38.2.tgz", - "integrity": "sha512-7AsrvG4EsXUmJT5uqiXJN4oZqKaY0wc/Ip7C6/zGnShHRVoTAA4jxeYIZ3wqbqA6zv4cnp9qk31vB2m2dUcmfg==", + "version": "0.39.2", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.39.2.tgz", + "integrity": "sha512-vlw+bwnjtf5buCTUtLU7JfV6D3knslxqnspr6LKs6hfRuFZiyr5hT44F7GyDqR9FKANUqFxnIzWM81F1k/kOUA==", "license": "MIT", "dependencies": { - "@astrojs/markdown-remark": "^7.0.0", - "@astrojs/mdx": "^5.0.0", - "@astrojs/sitemap": "^3.7.1", + "@astrojs/markdown-remark": "^7.1.1", + "@astrojs/mdx": "^5.0.4", + "@astrojs/sitemap": "^3.7.2", "@pagefind/default-ui": "^1.3.0", "@types/hast": "^3.0.4", "@types/js-yaml": "^4.0.9", "@types/mdast": "^4.0.4", - "astro-expressive-code": "^0.41.6", + "astro-expressive-code": "^0.42.0", "bcp-47": "^2.1.0", - "hast-util-from-html": "^2.0.1", - "hast-util-select": "^6.0.2", - "hast-util-to-string": "^3.0.0", - "hastscript": "^9.0.0", - "i18next": "^23.11.5", - "js-yaml": "^4.1.0", + "hast-util-from-html": "^2.0.3", + "hast-util-select": "^6.0.4", + "hast-util-to-string": "^3.0.1", + "hastscript": "^9.0.1", + "i18next": "^26.0.7", + "js-yaml": "^4.1.1", "klona": "^2.0.6", - "magic-string": "^0.30.17", - "mdast-util-directive": "^3.0.0", - "mdast-util-to-markdown": "^2.1.0", + "magic-string": "^0.30.21", + "mdast-util-directive": "^3.1.0", + "mdast-util-to-markdown": "^2.1.2", "mdast-util-to-string": "^4.0.0", "pagefind": "^1.3.0", - "rehype": "^13.0.1", - "rehype-format": "^5.0.0", - "remark-directive": "^3.0.0", + "rehype": "^13.0.2", + "rehype-format": "^5.0.1", + "remark-directive": "^4.0.0", "ultrahtml": "^1.6.0", "unified": "^11.0.5", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2" + "unist-util-visit": "^5.1.0", + "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^6.0.0" @@ -643,17 +544,15 @@ } }, "node_modules/@astrojs/telemetry": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", - "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.2.tgz", + "integrity": "sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==", "license": "MIT", "dependencies": { - "ci-info": "^4.2.0", - "debug": "^4.4.0", - "dlv": "^1.1.3", + "ci-info": "^4.4.0", "dset": "^3.1.4", - "is-docker": "^3.0.0", - "is-wsl": "^3.1.0", + "is-docker": "^4.0.0", + "is-wsl": "^3.1.1", "which-pm-runs": "^1.1.0" }, "engines": { @@ -896,18 +795,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -1485,12 +1372,29 @@ } }, "node_modules/@expressive-code/plugin-frames": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.41.7.tgz", - "integrity": "sha512-diKtxjQw/979cTglRFaMCY/sR6hWF0kSMg8jsKLXaZBSfGS0I/Hoe7Qds3vVEgeoW+GHHQzMcwvgx/MOIXhrTA==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.42.0.tgz", + "integrity": "sha512-XtkPm+941Uta7Y+81Acv+OA/20F1NJmJhCX6UYGKpqEIGqplNh3PTOhcURp6tcruhlzJcWcvpWy6Oigz3SrjqA==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.42.0" + } + }, + "node_modules/@expressive-code/plugin-frames/node_modules/@expressive-code/core": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.42.0.tgz", + "integrity": "sha512-MN11+9nfmaC7sYu2BZJXAXqwkBRt8t1xTSqP+Ti1NfTEskgl6xUnzDxoaiQkg0BMzpglA0pys4dpDKquP/cyIw==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.7" + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" } }, "node_modules/@expressive-code/plugin-line-numbers": { @@ -1503,22 +1407,56 @@ } }, "node_modules/@expressive-code/plugin-shiki": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.41.7.tgz", - "integrity": "sha512-DL605bLrUOgqTdZ0Ot5MlTaWzppRkzzqzeGEu7ODnHF39IkEBbFdsC7pbl3LbUQ1DFtnfx6rD54k/cdofbW6KQ==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.42.0.tgz", + "integrity": "sha512-PMKey/kLmewttAHQezL+Y5Fx3vVssfDi3+FJOYQQS2mXP3tQspFELtKKAfsXfmSXdToZYgwoO69HJndqfE+09g==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.7", - "shiki": "^3.2.2" + "@expressive-code/core": "^0.42.0", + "shiki": "^4.0.2" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@expressive-code/core": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.42.0.tgz", + "integrity": "sha512-MN11+9nfmaC7sYu2BZJXAXqwkBRt8t1xTSqP+Ti1NfTEskgl6xUnzDxoaiQkg0BMzpglA0pys4dpDKquP/cyIw==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" } }, "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.41.7.tgz", - "integrity": "sha512-Ewpwuc5t6eFdZmWlFyeuy3e1PTQC0jFvw2Q+2bpcWXbOZhPLsT7+h8lsSIJxb5mS7wZko7cKyQ2RLYDyK6Fpmw==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.42.0.tgz", + "integrity": "sha512-l59lUx8fq1v5g6SpmbDjiU0+7IdfbiWnAyRmtTVSpfhyq+nZMN4UcmYyu2b9Mynhzt7Gr+O+cXyEPDNb2AVWVQ==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.7" + "@expressive-code/core": "^0.42.0" + } + }, + "node_modules/@expressive-code/plugin-text-markers/node_modules/@expressive-code/core": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.42.0.tgz", + "integrity": "sha512-MN11+9nfmaC7sYu2BZJXAXqwkBRt8t1xTSqP+Ti1NfTEskgl6xUnzDxoaiQkg0BMzpglA0pys4dpDKquP/cyIw==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" } }, "node_modules/@iconify-json/mdi": { @@ -2569,45 +2507,58 @@ ] }, "node_modules/@shikijs/core": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.21.0.tgz", - "integrity": "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz", + "integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0", + "@shikijs/primitive": "4.0.2", + "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.21.0.tgz", - "integrity": "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz", + "integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0", + "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.21.0.tgz", - "integrity": "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz", + "integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0", + "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/langs": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.21.0.tgz", - "integrity": "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz", + "integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.21.0" + "@shikijs/types": "4.0.2" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/primitive": { @@ -2624,36 +2575,29 @@ "node": ">=20" } }, - "node_modules/@shikijs/primitive/node_modules/@shikijs/types": { + "node_modules/@shikijs/themes": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", - "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz", + "integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "@shikijs/types": "4.0.2" }, "engines": { "node": ">=20" } }, - "node_modules/@shikijs/themes": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.21.0.tgz", - "integrity": "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.21.0" - } - }, "node_modules/@shikijs/types": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.21.0.tgz", - "integrity": "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", + "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/vscode-textmate": { @@ -3254,9 +3198,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -3306,15 +3250,15 @@ } }, "node_modules/astro": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/astro/-/astro-6.1.3.tgz", - "integrity": "sha512-FUKbBYOdYYrRNZwDd9I5CVSfR6Nj9aZeNzcjcvh1FgHwR0uXawkYFR3HiGxmdmAB2m8fs0iIkDdsiUfwGeO8qA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-6.3.1.tgz", + "integrity": "sha512-atz6dmkE3Gu24bDgb7g2RE/BYnKqPYIHd6hTUM1UXvu/i7qNZOKLAqEHvgYpv9PQVcgWsXpk4/OOXZ0E/FzvSQ==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^3.0.1", - "@astrojs/internal-helpers": "0.8.0", - "@astrojs/markdown-remark": "7.1.0", - "@astrojs/telemetry": "3.3.0", + "@astrojs/compiler": "^4.0.0", + "@astrojs/internal-helpers": "0.9.0", + "@astrojs/markdown-remark": "7.1.1", + "@astrojs/telemetry": "3.3.2", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", @@ -3327,16 +3271,17 @@ "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", - "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", + "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", + "jsonc-parser": "^3.3.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", @@ -3346,7 +3291,7 @@ "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.2", @@ -3355,13 +3300,12 @@ "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", - "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", - "unstorage": "^1.17.4", + "unstorage": "^1.17.5", "vfile": "^6.0.3", - "vite": "^7.3.1", + "vite": "^7.3.2", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", @@ -3384,12 +3328,12 @@ } }, "node_modules/astro-expressive-code": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.41.7.tgz", - "integrity": "sha512-hUpogGc6DdAd+I7pPXsctyYPRBJDK7Q7d06s4cyP0Vz3OcbziP3FNzN0jZci1BpCvLn9675DvS7B9ctKKX64JQ==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.42.0.tgz", + "integrity": "sha512-aiTePi2Cn0mJPYWZSzP1GcxCinX9mNtJyCCshVVPSg1yRwM7ADvFJOx0FnS440M9t65hp8JH//dc2qr22Bm4ag==", "license": "MIT", "dependencies": { - "rehype-expressive-code": "^0.41.7" + "rehype-expressive-code": "^0.42.0" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" @@ -3407,86 +3351,6 @@ "astro": "^4.14.0 || ^5.0.0 || ^6.0.0" } }, - "node_modules/astro/node_modules/@shikijs/core": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz", - "integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==", - "license": "MIT", - "dependencies": { - "@shikijs/primitive": "4.0.2", - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/astro/node_modules/@shikijs/engine-javascript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz", - "integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/astro/node_modules/@shikijs/engine-oniguruma": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz", - "integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/astro/node_modules/@shikijs/langs": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz", - "integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/astro/node_modules/@shikijs/themes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz", - "integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "4.0.2" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/astro/node_modules/@shikijs/types": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", - "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/astro/node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -3532,29 +3396,10 @@ "@img/sharp-win32-x64": "0.34.5" } }, - "node_modules/astro/node_modules/shiki": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz", - "integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "4.0.2", - "@shikijs/engine-javascript": "4.0.2", - "@shikijs/engine-oniguruma": "4.0.2", - "@shikijs/langs": "4.0.2", - "@shikijs/themes": "4.0.2", - "@shikijs/types": "4.0.2", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/astro/node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", + "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", "license": "MIT", "dependencies": { "esbuild": "^0.27.0", @@ -4338,12 +4183,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -4667,15 +4506,32 @@ } }, "node_modules/expressive-code": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.41.7.tgz", - "integrity": "sha512-2wZjC8OQ3TaVEMcBtYY4Va3lo6J+Ai9jf3d4dbhURMJcU4Pbqe6EcHe424MIZI0VHUA1bR6xdpoHYi3yxokWqA==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.42.0.tgz", + "integrity": "sha512-V5DtJLEKuj4wf9O6IRtPtRObkMVy2ggR+S0MdjrTw6m58krZnDioyhW1si3Y04c5YPeooP4nd85Yq9NwEVHS4g==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.42.0", + "@expressive-code/plugin-frames": "^0.42.0", + "@expressive-code/plugin-shiki": "^0.42.0", + "@expressive-code/plugin-text-markers": "^0.42.0" + } + }, + "node_modules/expressive-code/node_modules/@expressive-code/core": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.42.0.tgz", + "integrity": "sha512-MN11+9nfmaC7sYu2BZJXAXqwkBRt8t1xTSqP+Ti1NfTEskgl6xUnzDxoaiQkg0BMzpglA0pys4dpDKquP/cyIw==", "license": "MIT", "dependencies": { - "@expressive-code/core": "^0.41.7", - "@expressive-code/plugin-frames": "^0.41.7", - "@expressive-code/plugin-shiki": "^0.41.7", - "@expressive-code/plugin-text-markers": "^0.41.7" + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" } }, "node_modules/extend": { @@ -4802,6 +4658,21 @@ "node": ">=6.9.0" } }, + "node_modules/get-tsconfig": { + "version": "5.0.0-beta.4", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz", + "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "engines": { + "node": ">=20.20.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4821,14 +4692,14 @@ "license": "ISC" }, "node_modules/h3": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz", - "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", "license": "MIT", "dependencies": { - "cookie-es": "^1.2.2", + "cookie-es": "^1.2.3", "crossws": "^0.3.5", - "defu": "^6.1.4", + "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", @@ -5314,26 +5185,31 @@ "license": "BSD-2-Clause" }, "node_modules/i18next": { - "version": "23.16.8", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", - "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.1.0.tgz", + "integrity": "sha512-dIU6td04DvQuIqVst5S9g0GviTmhZ0DYD4b9ociVGJmuCa5vZ2de/t+Enf4olvj87mF8Y2lwjNQBwC9QZsvzKQ==", "funding": [ { "type": "individual", - "url": "https://locize.com" + "url": "https://www.locize.com/i18next" }, { "type": "individual", - "url": "https://locize.com/i18next.html" + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" }, { "type": "individual", - "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + "url": "https://www.locize.com" } ], "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.2" + "peerDependencies": { + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/ieee754": { @@ -5436,15 +5312,15 @@ } }, "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz", + "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==", "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5478,6 +5354,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-inside-container/node_modules/is-docker": { + "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" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5500,9 +5391,9 @@ } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" @@ -5565,6 +5456,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, "node_modules/klona": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", @@ -6271,9 +6168,9 @@ } }, "node_modules/micromark-extension-directive": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", - "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", "license": "MIT", "dependencies": { "devlop": "^1.0.0", @@ -7165,19 +7062,19 @@ } }, "node_modules/oniguruma-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", - "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", + "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==", "license": "MIT" }, "node_modules/oniguruma-to-es": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", - "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz", + "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==", "license": "MIT", "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", + "oniguruma-parser": "^0.12.2", + "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, @@ -7320,9 +7217,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -7634,12 +7531,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", @@ -7681,12 +7572,12 @@ } }, "node_modules/rehype-expressive-code": { - "version": "0.41.7", - "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.41.7.tgz", - "integrity": "sha512-25f8ZMSF1d9CMscX7Cft0TSQIqdwjce2gDOvQ+d/w0FovsMwrSt3ODP4P3Z7wO1jsIJ4eYyaDRnIR/27bd/EMQ==", + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.42.0.tgz", + "integrity": "sha512-8rp/1YMEVVSYbtz+bFBx+uSx3vA4i4T8RwRm5Q/IWbucQnnQqQ0hDqtmKOr8tv+59Cik6cu5aH3WPo0I7csuTA==", "license": "MIT", "dependencies": { - "expressive-code": "^0.41.7" + "expressive-code": "^0.42.0" } }, "node_modules/rehype-format": { @@ -7795,14 +7686,14 @@ } }, "node_modules/remark-directive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", - "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-4.0.0.tgz", + "integrity": "sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", - "micromark-extension-directive": "^3.0.0", + "micromark-extension-directive": "^4.0.0", "unified": "^11.0.0" }, "funding": { @@ -7905,6 +7796,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", @@ -8088,19 +7988,22 @@ } }, "node_modules/shiki": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.21.0.tgz", - "integrity": "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz", + "integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.21.0", - "@shikijs/engine-javascript": "3.21.0", - "@shikijs/engine-oniguruma": "3.21.0", - "@shikijs/langs": "3.21.0", - "@shikijs/themes": "3.21.0", - "@shikijs/types": "3.21.0", + "@shikijs/core": "4.0.2", + "@shikijs/engine-javascript": "4.0.2", + "@shikijs/engine-oniguruma": "4.0.2", + "@shikijs/langs": "4.0.2", + "@shikijs/themes": "4.0.2", + "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/simple-concat": { @@ -8636,26 +8539,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/tsconfck": { - "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" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -8891,16 +8774,16 @@ } }, "node_modules/unstorage": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", - "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", "license": "MIT", "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", - "h3": "^1.15.5", - "lru-cache": "^11.2.0", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" @@ -8987,9 +8870,9 @@ } }, "node_modules/unstorage/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" diff --git a/package.json b/package.json index 239daf89..8e86715e 100644 --- a/package.json +++ b/package.json @@ -12,10 +12,10 @@ "sync:licensing-tags": "node scripts/sync-licensing-tags.mjs" }, "dependencies": { - "@astrojs/markdoc": "^1.0.3", - "@astrojs/react": "^5.0.2", + "@astrojs/markdoc": "^1.0.4", + "@astrojs/react": "^5.0.4", "@astrojs/sitemap": "^3.7.2", - "@astrojs/starlight": "^0.38.2", + "@astrojs/starlight": "^0.39.2", "@astrojs/starlight-docsearch": "^0.7.0", "@astrojs/starlight-markdoc": "^0.6.0", "@astrojs/starlight-tailwind": "^5.0.0", @@ -25,7 +25,7 @@ "@tanstack/react-table": "^8.21.3", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", - "astro": "^6.1.3", + "astro": "^6.3.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.509.0", diff --git a/src/content/docs/aws/tooling/extensions/developing-extensions.mdx b/src/content/docs/aws/tooling/extensions/developing-extensions.mdx index 868ae825..8a9aa5c6 100644 --- a/src/content/docs/aws/tooling/extensions/developing-extensions.mdx +++ b/src/content/docs/aws/tooling/extensions/developing-extensions.mdx @@ -3,8 +3,8 @@ title: Developing extensions description: How to develop your own extensions. template: doc sidebar: - order: 4 -tags: ["Hobby"] + order: 3 +tags: ['Hobby'] --- import { FileTree } from '@astrojs/starlight/components'; @@ -199,19 +199,12 @@ version [0.1.0]: This will create a new Python project with the following layout: -- my-localstack-extension - - Makefile - - my_localstack_extension - - extension.py - - __init__.py - - README.md - - setup.cfg - - setup.py + - my-localstack-extension - Makefile - my_localstack_extension - extension.py + - __init__.py - README.md - setup.cfg - setup.py Then run `make install` in the newly created project to make a distribution package. - #### Using the React template To create an extension with a React-based UI, use the `--template react` flag: @@ -231,19 +224,9 @@ version [0.1.0]: The React template provides a small app with multiple pages to demonstrate how to use multiple pages in the same extension. When you start the LocalStack container with your React-based extension enabled, the extension UI will be automatically available through the LocalStack Web Application. -- my-localstack-extension - - Makefile - - README.md - - backend - - my_localstack_extension - - backend.pth - - frontend - - \_\_init\_\_.py - - package.json - - public - - src - - tsconfig.json - - pyproject.toml + - my-localstack-extension - Makefile - README.md - backend - + my_localstack_extension - backend.pth - frontend - \_\_init\_\_.py - + package.json - public - src - tsconfig.json - pyproject.toml The extension UI will be available at `http://localhost.localstack.cloud:4566/_extension/my-localstack-extension/#/dashboard` when LocalStack is running. diff --git a/src/content/docs/aws/tooling/extensions/extensions-library.md b/src/content/docs/aws/tooling/extensions/extensions-library.md index 58f780a5..ed0ab95f 100644 --- a/src/content/docs/aws/tooling/extensions/extensions-library.md +++ b/src/content/docs/aws/tooling/extensions/extensions-library.md @@ -3,8 +3,8 @@ title: Extensions Library description: Extend LocalStack by adding new services and features as extensions. template: doc sidebar: - order: 5 -tags: ["Hobby"] + order: 4 +tags: ['Hobby'] --- ## Introduction @@ -30,4 +30,4 @@ Click **Continue** to proceed. You can further manage the installed extensions by navigating to the **Extensions** tab in the LocalStack Instance page. You can remove an Extension by clicking the **Remove** button. -![Installed LocalStack Extensions Library](/images/aws/extensions-library-management.png) \ No newline at end of file +![Installed LocalStack Extensions Library](/images/aws/extensions-library-management.png) diff --git a/src/content/docs/aws/tooling/extensions/index.md b/src/content/docs/aws/tooling/extensions/index.md index e8841a49..4f0b6916 100644 --- a/src/content/docs/aws/tooling/extensions/index.md +++ b/src/content/docs/aws/tooling/extensions/index.md @@ -3,8 +3,9 @@ title: Overview description: Use LocalStack Extensions to customize and extend your local development experience. template: doc sidebar: - order: 1 -tags: ["Hobby"] + label: 'Overview' + order: 1 +tags: ['Hobby'] --- LocalStack Extensions let you customize and extend LocalStack's core functionality by running additional logic and services inside the same container. This feature is available across all LocalStack plans, and is ideal for teams that want deeper control over how LocalStack behaves during development or testing. @@ -30,4 +31,4 @@ Our [MailHog tutorial](/aws/tooling/extensions/mailhog) teaches you how to insta :::note The feature and the API are currently in preview stage and may be subject to change. Please report any issues or feature requests on [LocalStack Extension's GitHub repository](https://github.com/localstack/localstack-extensions). -::: \ No newline at end of file +::: diff --git a/src/content/docs/aws/tooling/extensions/mailhog.md b/src/content/docs/aws/tooling/extensions/mailhog.md index 65650dc2..8d99006d 100644 --- a/src/content/docs/aws/tooling/extensions/mailhog.md +++ b/src/content/docs/aws/tooling/extensions/mailhog.md @@ -3,7 +3,8 @@ title: MailHog description: Learn how to install and use the official MailHog extension. template: doc sidebar: - order: 2 + label: The Mailhog Extension + order: 6 tags: ['Hobby'] --- diff --git a/src/content/docs/aws/tooling/extensions/managing-extensions.mdx b/src/content/docs/aws/tooling/extensions/managing-extensions.mdx index e91bf36e..58dc5d52 100644 --- a/src/content/docs/aws/tooling/extensions/managing-extensions.mdx +++ b/src/content/docs/aws/tooling/extensions/managing-extensions.mdx @@ -3,8 +3,8 @@ title: Managing extensions description: How to manage LocalStack extensions in your LocalStack environment. template: doc sidebar: - order: 3 -tags: ["Hobby"] + order: 2 +tags: ['Hobby'] --- import { FileTree } from '@astrojs/starlight/components'; @@ -84,8 +84,8 @@ If you decide to mount a different directory to `/var/lib/localstack` in your do ```yaml volumes: - - "/tmp/volume:/var/lib/localstack" # LOCALSTACK_VOLUME_DIR mount - - "/var/run/docker.sock:/var/run/docker.sock" + - '/tmp/volume:/var/lib/localstack' # LOCALSTACK_VOLUME_DIR mount + - '/var/run/docker.sock:/var/run/docker.sock' ``` Here's how you can use `LOCALSTACK_VOLUME_DIR` in your commands: @@ -113,18 +113,18 @@ In a docker-compose file, this would look something like: ```yaml showLineNumbers services: localstack: - container_name: "localstack-main" + container_name: 'localstack-main' image: localstack/localstack-pro ports: - - "127.0.0.1:4566:4566" - - "127.0.0.1:4510-4559:4510-4559" + - '127.0.0.1:4566:4566' + - '127.0.0.1:4510-4559:4510-4559' environment: - LOCALSTACK_AUTH_TOKEN=${LOCALSTACK_AUTH_TOKEN:?} - DEBUG=1 - EXTENSION_AUTO_INSTALL=localstack-extension-mailhog,localstack-extension-httpbin volumes: - - "./volume:/var/lib/localstack" - - "/var/run/docker.sock:/var/run/docker.sock" + - './volume:/var/lib/localstack' + - '/var/run/docker.sock:/var/run/docker.sock' ``` ### Configuration file @@ -136,33 +136,30 @@ Since LocalStack extensions are essentially just Python pip packages, the `exten An example project could look something like this: -* `extensions.txt` +- `extensions.txt` ```text localstack-extension-mailhog git+https://github.com/localstack/localstack-extensions/#egg=localstack-extension-aws-replicator&subdirectory=aws-replicator ``` -* Project layout: +- Project layout: - - - extension-install - - conf.d - - extensions.txt - - docker-compose.yml - + + - extension-install - conf.d - extensions.txt - docker-compose.yml + -* `docker-compose.yaml` +- `docker-compose.yaml` - ```yaml showLineNumbers - services: - localstack: - ... - volumes: - - "./volume:/var/lib/localstack" - - "conf.d:/etc/localstack/conf.d" - - "/var/run/docker.sock:/var/run/docker.sock" - ``` + ```yaml showLineNumbers + services: + localstack: + ... + volumes: + - "./volume:/var/lib/localstack" + - "conf.d:/etc/localstack/conf.d" + - "/var/run/docker.sock:/var/run/docker.sock" + ``` When LocalStack starts up, you should see it tries to install the extensions and all their dependencies. @@ -212,7 +209,7 @@ ModuleNotFoundError: No module named 'flask' To resolve this, follow these steps: -* Clear the directory mounted to the LocalStack container at `/var/lib/localstack`. -* Pull the `latest` image of LocalStack (`localstack/localstack-pro:latest`). -* Restart the LocalStack container. -* Reinstall any extensions you were using, unless you have `EXTENSION_AUTO_INSTALL` enabled. \ No newline at end of file +- Clear the directory mounted to the LocalStack container at `/var/lib/localstack`. +- Pull the `latest` image of LocalStack (`localstack/localstack-pro:latest`). +- Restart the LocalStack container. +- Reinstall any extensions you were using, unless you have `EXTENSION_AUTO_INSTALL` enabled. From 972fd823442338ae2096e8ee7e56b440296da29b Mon Sep 17 00:00:00 2001 From: Brian Rinaldi Date: Tue, 12 May 2026 10:20:00 -0400 Subject: [PATCH 2/2] Fixing build errors The nav structure changed in Starlight 0.39 and this fixes issues in the current structure --- astro.config.mjs | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 0f21c2bf..823d7c6e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -422,31 +422,47 @@ export default defineConfig({ }, { label: 'AWS SDKs', - autogenerate: { - directory: '/aws/connecting/aws-sdks', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/connecting/aws-sdks', + }, + }, + ], }, { label: 'Infrastructure as Code', - autogenerate: { - directory: '/aws/connecting/infrastructure-as-code', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/connecting/infrastructure-as-code', + }, + }, + ], }, { label: 'LocalStack Console', - autogenerate: { - directory: '/aws/connecting/console', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/connecting/console', + }, + }, + ], }, { label: 'IDE Extensions', - autogenerate: { - directory: '/aws/connecting/ides', - }, collapsed: true, + items: [ + { + autogenerate: { + directory: '/aws/connecting/ides', + }, + }, + ], }, ], },