From 2dbb5030fd43f7c4c61af2676828e988ed6aef17 Mon Sep 17 00:00:00 2001 From: Nick DeJesus Date: Wed, 13 Nov 2024 18:43:29 -0500 Subject: [PATCH] Install shnip (#1873) * install shnip package, remove old shnip code * update configs * update to new version * remove versioning * update scripts to use new shnip package * update build command * remove site-new from workspace * update scripts * remove module type --- package.json | 8 +- pnpm-lock.yaml | 2115 +---- pnpm-workspace.yaml | 1 - shnip.config.ts => shnip.config.js | 5 +- shnip/build.js | 12 - shnip/dist/bin/cli.js | 7809 ----------------- shnip/dist/cli.js | 7788 ---------------- shnip/dist/extract/SnippetExtractor.js | 189 - shnip/dist/helpers/getSnippet.js | 42 - shnip/dist/index.js | 250 - shnip/dist/load/SnippetLoader.js | 26 - shnip/dist/test.js | 2 - shnip/package-lock.json | 1094 --- shnip/package.json | 31 - shnip/src/bin/cli.ts | 72 - shnip/src/extract/SnippetExtractor.ts | 259 - shnip/src/helpers/getSnippet.ts | 27 - shnip/src/index.ts | 4 - shnip/src/load/SnippetLoader.ts | 45 - shnip/tsconfig.json | 13 - shnippet.config.json | 6 +- shnippet/config/default-config.json | 10 - shnippet/package.json | 23 - shnippet/src/cli.js | 69 - shnippet/src/index.js | 288 - site-new/package.json | 43 +- .../shnip.config.js | 5 +- 27 files changed, 270 insertions(+), 19966 deletions(-) rename shnip.config.ts => shnip.config.js (78%) delete mode 100644 shnip/build.js delete mode 100755 shnip/dist/bin/cli.js delete mode 100644 shnip/dist/cli.js delete mode 100644 shnip/dist/extract/SnippetExtractor.js delete mode 100644 shnip/dist/helpers/getSnippet.js delete mode 100644 shnip/dist/index.js delete mode 100644 shnip/dist/load/SnippetLoader.js delete mode 100644 shnip/dist/test.js delete mode 100644 shnip/package-lock.json delete mode 100644 shnip/package.json delete mode 100644 shnip/src/bin/cli.ts delete mode 100644 shnip/src/extract/SnippetExtractor.ts delete mode 100644 shnip/src/helpers/getSnippet.ts delete mode 100644 shnip/src/index.ts delete mode 100644 shnip/src/load/SnippetLoader.ts delete mode 100644 shnip/tsconfig.json delete mode 100644 shnippet/config/default-config.json delete mode 100644 shnippet/package.json delete mode 100644 shnippet/src/cli.js delete mode 100644 shnippet/src/index.js rename shnip/config/shnip.config.ts => site-new/shnip.config.js (78%) diff --git a/package.json b/package.json index 803cedc77..0404880d8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "scripts": { "preinstall": "npx only-allow pnpm", "postinstall": "node propagateSdkVersions.js", - "start": "pnpm run shnip && pnpm --filter site run start", + "start": "pnpm run snippets && pnpm --filter site run start", "start:feedback-server": "pnpm --filter feedback-server run start", "start:tutorial-todo-starter": "pnpm --filter todo-starter run dev", "start:tutorial-todo-completed": "pnpm --filter todo-completed run dev", @@ -15,7 +15,7 @@ "start:widget": "pnpm --filter web5-quickstart-widgets start", "start:new": "pnpm shnip:new && pnpm --filter site-new run start", "serve:new": "pnpm --filter site-new run serve", - "build": "pnpm run shnip && pnpm --filter site run build", + "build": "pnpm run snippets && pnpm --filter site run build", "build:new": "pnpm shnip:new && pnpm --filter site-new run build", "clear": "pnpm --filter site run clear", "clear:new": "pnpm --filter site-new run clear", @@ -27,8 +27,7 @@ "test:swift": "swift test --package-path ./site/testsuites/testsuite-swift", "test:versions": "node check-versions.js", "test:watch": "pnpm run shnip && pnpm vitest --config vite.config.ts --watch", - "shnip": "node ./shnippet/src/cli --structure match && node ./shnippet/src/cli --structure byLanguage", - "shnip:new": "node ./shnip/dist/bin/cli.js", + "snippets": "pnpm shnip --config ./shnip.config.js", "shnip:build:new": "node ./shnip build", "test:js:new": "pnpm vitest run --config new-vite.config --no-threads", "test:kotlin:new": "./site-new/testsuites/testsuite-kotlin/mvnw clean verify -f site-new/testsuites/testsuite-kotlin --batch-mode", @@ -64,6 +63,7 @@ "react-qr-reader": "^3.0.0-beta-1", "react-slick": "0.29.0", "react18-json-view": "^0.2.8", + "shnip": "0.0.2-alpha", "slick-carousel": "1.8.1", "url": "^0.11.4", "xml2js": "0.6.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68765a797..affbb1654 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,9 @@ importers: react18-json-view: specifier: ^0.2.8 version: 0.2.8(react@17.0.2) + shnip: + specifier: 0.0.2-alpha + version: 0.0.2-alpha slick-carousel: specifier: 1.8.1 version: 1.8.1(jquery@3.7.1) @@ -283,112 +286,6 @@ importers: specifier: 15.8.1 version: 15.8.1 - site-new: - dependencies: - '@docusaurus/core': - specifier: 3.5.2 - version: 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-blog': - specifier: ^3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': - specifier: 3.5.2 - version: 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/preset-classic': - specifier: 3.5.2 - version: 3.5.2(@algolia/client-search@5.6.1)(@mdx-js/react@3.0.1)(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2) - '@docusaurus/theme-common': - specifier: 3.5.2 - version: 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@mdx-js/react': - specifier: ^3.0.0 - version: 3.0.1(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-accordion': - specifier: ^1.2.0 - version: 1.2.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-checkbox': - specifier: ^1.1.1 - version: 1.1.1(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.1.0 - version: 2.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - clsx: - specifier: ^2.0.0 - version: 2.0.0 - date-fns: - specifier: ^4.1.0 - version: 4.1.0 - docusaurus-plugin-sass: - specifier: ^0.2.5 - version: 0.2.5(@docusaurus/core@3.5.2)(sass@1.63.6)(webpack@5.95.0) - prism-react-renderer: - specifier: ^2.3.0 - version: 2.3.1(react@18.2.0) - react: - specifier: ^18.0.0 - version: 18.2.0 - react-dom: - specifier: ^18.0.0 - version: 18.2.0(react@18.2.0) - react-player: - specifier: 2.11.2 - version: 2.11.2(react@18.2.0) - sass: - specifier: 1.63.6 - version: 1.63.6 - tailwind-merge: - specifier: ^2.5.2 - version: 2.5.2 - devDependencies: - '@docusaurus/eslint-plugin': - specifier: ^3.5.2 - version: 3.5.2(eslint@9.9.1)(typescript@5.2.2) - '@docusaurus/module-type-aliases': - specifier: 3.5.2 - version: 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/tsconfig': - specifier: ^3.5.2 - version: 3.5.2 - '@docusaurus/types': - specifier: 3.5.2 - version: 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@eslint/js': - specifier: ^9.9.1 - version: 9.9.1 - '@types/eslint__js': - specifier: ^8.42.3 - version: 8.42.3 - '@types/react': - specifier: ^18.3.5 - version: 18.3.5 - autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.31) - eslint: - specifier: ^9.9.1 - version: 9.9.1 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@9.9.1) - postcss: - specifier: 8.4.31 - version: 8.4.31 - prettier: - specifier: 3.3.3 - version: 3.3.3 - prettier-plugin-tailwindcss: - specifier: ^0.6.6 - version: 0.6.6(prettier@3.3.3) - tailwindcss: - specifier: ^3.4.3 - version: 3.4.3 - typescript: - specifier: ~5.2.2 - version: 5.2.2 - typescript-eslint: - specifier: ^8.4.0 - version: 8.4.0(eslint@9.9.1)(typescript@5.2.2) - packages: /@algolia/autocomplete-core@1.9.3(@algolia/client-search@5.6.1)(algoliasearch@4.23.3)(search-insights@2.17.2): @@ -581,11 +478,6 @@ packages: '@algolia/requester-common': 4.23.3 dev: false - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - dev: true - /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -682,7 +574,7 @@ packages: '@smithy/util-middleware': 3.0.6 '@smithy/util-retry': 3.0.6 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.3 + tslib: 2.7.0 transitivePeerDependencies: - aws-crt dev: false @@ -1069,13 +961,6 @@ packages: tslib: 2.7.0 dev: false - /@babel/code-frame@7.24.6: - resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.6 - picocolors: 1.0.1 - /@babel/code-frame@7.24.7: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -1141,7 +1026,7 @@ packages: dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.1 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -1341,15 +1226,6 @@ packages: '@babel/template': 7.24.7 '@babel/types': 7.24.7 - /@babel/highlight@7.24.6: - resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - /@babel/highlight@7.24.7: resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -2541,35 +2417,6 @@ packages: resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} dev: false - /@docsearch/react@3.6.0(@algolia/client-search@5.6.1)(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2): - resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - search-insights: '>= 1 < 3' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - search-insights: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@5.6.1)(algoliasearch@4.23.3)(search-insights@2.17.2) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@5.6.1)(algoliasearch@4.23.3) - '@docsearch/css': 3.6.0 - '@types/react': 18.3.5 - algoliasearch: 4.23.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - search-insights: 2.17.2 - transitivePeerDependencies: - - '@algolia/client-search' - dev: false - /@docsearch/react@3.6.0(@algolia/client-search@5.6.1)(@types/react@18.3.9)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2): resolution: {integrity: sha512-HUFut4ztcVNmqy9gp/wxNbC7pTOHhgVVkHVGCACTuLhUKUhKAF9KYHJtMiLUJxEqiFLQiuri1fWF8zqwM/cu1w==} peerDependencies: @@ -2599,106 +2446,6 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==} - engines: {node: '>=18.0'} - hasBin: true - peerDependencies: - '@mdx-js/react': ^3.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@babel/core': 7.24.7 - '@babel/generator': 7.24.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7) - '@babel/plugin-transform-runtime': 7.24.6(@babel/core@7.24.7) - '@babel/preset-env': 7.24.7(@babel/core@7.24.7) - '@babel/preset-react': 7.24.7(@babel/core@7.24.7) - '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) - '@babel/runtime': 7.24.6 - '@babel/runtime-corejs3': 7.24.6 - '@babel/traverse': 7.24.7 - '@docusaurus/cssnano-preset': 3.5.2 - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@mdx-js/react': 3.0.1(@types/react@18.3.5)(react@18.2.0) - autoprefixer: 10.4.19(postcss@8.4.31) - babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.1) - babel-plugin-dynamic-import-node: 2.3.3 - boxen: 6.2.1 - chalk: 4.1.2 - chokidar: 3.6.0 - clean-css: 5.3.3 - cli-table3: 0.6.5 - combine-promises: 1.2.0 - commander: 5.1.0 - copy-webpack-plugin: 11.0.0(webpack@5.92.1) - core-js: 3.37.1 - css-loader: 6.11.0(webpack@5.92.1) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.92.1) - cssnano: 6.1.2(postcss@8.4.31) - del: 6.1.1 - detect-port: 1.6.1 - escape-html: 1.0.3 - eta: 2.2.0 - eval: 0.1.8 - file-loader: 6.2.0(webpack@5.92.1) - fs-extra: 11.2.0 - html-minifier-terser: 7.2.0 - html-tags: 3.3.1 - html-webpack-plugin: 5.6.0(webpack@5.92.1) - leven: 3.1.0 - lodash: 4.17.21 - mini-css-extract-plugin: 2.9.0(webpack@5.92.1) - p-map: 4.0.0 - postcss: 8.4.31 - postcss-loader: 7.3.4(postcss@8.4.31)(typescript@5.2.2)(webpack@5.92.1) - prompts: 2.4.2 - react: 18.2.0 - react-dev-utils: 12.0.1(eslint@9.9.1)(typescript@5.2.2)(webpack@5.92.1) - react-dom: 18.2.0(react@18.2.0) - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) - react-loadable: /@docusaurus/react-loadable@6.0.0(react@18.2.0) - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0)(webpack@5.92.1) - react-router: 5.3.4(react@18.2.0) - react-router-config: 5.1.1(react-router@5.3.4)(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) - rtl-detect: 1.1.2 - semver: 7.6.2 - serve-handler: 6.1.5 - shelljs: 0.8.5 - terser-webpack-plugin: 5.3.10(webpack@5.92.1) - tslib: 2.6.3 - update-notifier: 6.0.2 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.92.1) - webpack: 5.92.1 - webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.92.1) - webpack-merge: 5.10.0 - webpackbar: 5.0.2(webpack@5.92.1) - transitivePeerDependencies: - - '@docusaurus/types' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/core@3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w==} engines: {node: '>=18.0'} @@ -2758,7 +2505,7 @@ packages: postcss-loader: 7.3.4(postcss@8.4.31)(typescript@5.2.2)(webpack@5.92.1) prompts: 2.4.2 react: 18.2.0 - react-dev-utils: 12.0.1(eslint@9.9.1)(typescript@5.2.2)(webpack@5.92.1) + react-dev-utils: 12.0.1(typescript@5.2.2)(webpack@5.92.1) react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) react-loadable: /@docusaurus/react-loadable@6.0.0(react@18.2.0) @@ -2806,29 +2553,15 @@ packages: cssnano-preset-advanced: 6.1.2(postcss@8.4.31) postcss: 8.4.31 postcss-sort-media-queries: 5.2.0(postcss@8.4.31) - tslib: 2.6.3 + tslib: 2.7.0 dev: false - /@docusaurus/eslint-plugin@3.5.2(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-9zBtXQwRgj2unY+peS5HIISvG7kDQDoWl8dZ+sN41B2qIctNUWpBFkFAPHZSPy2cvEDQwWshNpPYDjp+sv+CVA==} - engines: {node: '>=18.0'} - peerDependencies: - eslint: '>=6' - dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.9.1)(typescript@5.2.2) - eslint: 9.9.1 - tslib: 2.6.3 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@docusaurus/logger@3.5.2: resolution: {integrity: sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw==} engines: {node: '>=18.0'} dependencies: chalk: 4.1.2 - tslib: 2.6.3 + tslib: 2.7.0 dev: false /@docusaurus/mdx-loader@3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): @@ -2845,7 +2578,7 @@ packages: '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.1.1 - file-loader: 6.2.0(webpack@5.92.1) + file-loader: 6.2.0(webpack@5.95.0) fs-extra: 11.2.0 image-size: 1.1.1 mdast-util-mdx: 3.0.0 @@ -2858,12 +2591,12 @@ packages: remark-frontmatter: 5.0.0 remark-gfm: 4.0.0 stringify-object: 3.3.0 - tslib: 2.6.3 + tslib: 2.7.0 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.92.1) + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.95.0) vfile: 6.0.1 - webpack: 5.92.1 + webpack: 5.95.0 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -2882,7 +2615,7 @@ packages: dependencies: '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@types/history': 4.7.11 - '@types/react': 18.3.5 + '@types/react': 18.3.9 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 react: 18.2.0 @@ -2896,7 +2629,7 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + /@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==} engines: {node: '>=18.0'} peerDependencies: @@ -2904,10 +2637,10 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/logger': 3.5.2 '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) @@ -2945,35 +2678,32 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-blog@3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg==} + /@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} engines: {node: '>=18.0'} peerDependencies: - '@docusaurus/plugin-content-docs': '*' react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/logger': 3.5.2 '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - cheerio: 1.0.0-rc.12 - feed: 4.2.2 + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 fs-extra: 11.2.0 + js-yaml: 4.1.0 lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - reading-time: 1.5.0 - srcset: 4.0.0 - tslib: 2.7.0 - unist-util-visit: 5.0.0 + tslib: 2.6.3 utility-types: 3.11.0 - webpack: 5.95.0 + webpack: 5.92.1 transitivePeerDependencies: - '@mdx-js/react' - '@parcel/css' @@ -2994,31 +2724,22 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} + /@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/logger': 3.5.2 + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 fs-extra: 11.2.0 - js-yaml: 4.1.0 - lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tslib: 2.6.3 - utility-types: 3.11.0 webpack: 5.92.1 transitivePeerDependencies: - '@mdx-js/react' @@ -3040,32 +2761,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ==} + /@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 fs-extra: 11.2.0 - js-yaml: 4.1.0 - lodash: 4.17.21 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-json-view-lite: 1.4.0(react@18.2.0) tslib: 2.6.3 - utility-types: 3.11.0 - webpack: 5.92.1 transitivePeerDependencies: - '@mdx-js/react' - '@parcel/css' @@ -3086,191 +2796,14 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==} + /@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): + resolution: {integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==} engines: {node: '>=18.0'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - webpack: 5.92.1 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-content-pages@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - webpack: 5.92.1 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-json-view-lite: 1.4.0(react@18.2.0) - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-debug@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-json-view-lite: 1.4.0(react@18.2.0) - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - - /@docusaurus/plugin-google-analytics@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) react: 18.2.0 @@ -3296,40 +2829,6 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@types/gtag.js': 0.0.12 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/plugin-google-gtag@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA==} engines: {node: '>=18.0'} @@ -3364,39 +2863,6 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/plugin-google-tag-manager@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg==} engines: {node: '>=18.0'} @@ -3430,44 +2896,6 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - fs-extra: 11.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - sitemap: 7.1.2 - tslib: 2.6.3 - transitivePeerDependencies: - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/plugin-sitemap@3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA==} engines: {node: '>=18.0'} @@ -3506,51 +2934,6 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@3.5.2(@algolia/client-search@5.6.1)(@mdx-js/react@3.0.1)(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2): - resolution: {integrity: sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-debug': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-google-analytics': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-google-gtag': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-google-tag-manager': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-sitemap': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-classic': 3.5.2(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-search-algolia': 3.5.2(@algolia/client-search@5.6.1)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2) - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@algolia/client-search' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/preset-classic@3.5.2(@algolia/client-search@5.6.1)(@mdx-js/react@3.0.1)(@types/react@18.3.9)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2): resolution: {integrity: sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg==} engines: {node: '>=18.0'} @@ -3604,60 +2987,6 @@ packages: '@types/react': 18.3.9 react: 18.2.0 - /@docusaurus/theme-classic@3.5.2(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-blog': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/plugin-content-pages': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@mdx-js/react': 3.0.1(@types/react@18.3.5)(react@18.2.0) - clsx: 2.0.0 - copy-text-to-clipboard: 3.2.0 - infima: 0.2.0-alpha.44 - lodash: 4.17.21 - nprogress: 0.2.0 - postcss: 8.4.31 - prism-react-renderer: 2.3.1(react@18.2.0) - prismjs: 1.29.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router-dom: 5.3.4(react@18.2.0) - rtlcss: 4.1.1 - tslib: 2.6.3 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/theme-classic@3.5.2(@types/react@18.3.9)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): resolution: {integrity: sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg==} engines: {node: '>=18.0'} @@ -3722,18 +3051,18 @@ packages: dependencies: '@docusaurus/mdx-loader': 3.5.2(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/module-type-aliases': 3.5.2(react-dom@18.2.0)(react@18.2.0) - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) '@types/history': 4.7.11 - '@types/react': 18.3.3 + '@types/react': 18.3.9 '@types/react-router-config': 5.0.11 clsx: 2.0.0 parse-numeric-range: 1.3.0 prism-react-renderer: 2.3.1(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 + tslib: 2.7.0 utility-types: 3.11.0 transitivePeerDependencies: - '@docusaurus/types' @@ -3782,55 +3111,6 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@5.6.1)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.5)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2): - resolution: {integrity: sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==} - engines: {node: '>=18.0'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@docsearch/react': 3.6.0(@algolia/client-search@5.6.1)(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2) - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/logger': 3.5.2 - '@docusaurus/plugin-content-docs': 3.5.2(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-common': 3.5.2(@docusaurus/plugin-content-docs@3.5.2)(@docusaurus/types@3.5.2)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@docusaurus/theme-translations': 3.5.2 - '@docusaurus/utils': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - '@docusaurus/utils-validation': 3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2) - algoliasearch: 4.23.3 - algoliasearch-helper: 3.21.0(algoliasearch@4.23.3) - clsx: 2.0.0 - eta: 2.2.0 - fs-extra: 11.2.0 - lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.3 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@docusaurus/types' - - '@mdx-js/react' - - '@parcel/css' - - '@rspack/core' - - '@swc/core' - - '@swc/css' - - '@types/react' - - bufferutil - - csso - - debug - - esbuild - - eslint - - lightningcss - - search-insights - - supports-color - - typescript - - uglify-js - - utf-8-validate - - vue-template-compiler - - webpack-cli - dev: false - /@docusaurus/theme-search-algolia@3.5.2(@algolia/client-search@5.6.1)(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(@types/react@18.3.9)(react-dom@18.2.0)(react@18.2.0)(search-insights@2.17.2)(typescript@5.2.2): resolution: {integrity: sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA==} engines: {node: '>=18.0'} @@ -3888,10 +3168,6 @@ packages: tslib: 2.7.0 dev: false - /@docusaurus/tsconfig@3.5.2: - resolution: {integrity: sha512-rQ7toURCFnWAIn8ubcquDs0ewhPwviMzxh6WpRjBW7sJVCXb6yzwUaY3HMNa0VXCFw+qkIbFywrMTf+Pb4uHWQ==} - dev: true - /@docusaurus/types@3.5.2(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw==} peerDependencies: @@ -3900,14 +3176,14 @@ packages: dependencies: '@mdx-js/mdx': 3.0.1 '@types/history': 4.7.11 - '@types/react': 18.3.3 + '@types/react': 18.3.9 commander: 5.1.0 joi: 17.13.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) utility-types: 3.11.0 - webpack: 5.92.1 + webpack: 5.95.0 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -3926,7 +3202,7 @@ packages: optional: true dependencies: '@docusaurus/types': 3.5.2(react-dom@18.2.0)(react@18.2.0) - tslib: 2.6.3 + tslib: 2.7.0 dev: false /@docusaurus/utils-validation@3.5.2(@docusaurus/types@3.5.2)(typescript@5.2.2): @@ -3940,7 +3216,7 @@ packages: joi: 17.13.3 js-yaml: 4.1.0 lodash: 4.17.21 - tslib: 2.6.3 + tslib: 2.7.0 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -3965,7 +3241,7 @@ packages: '@docusaurus/utils-common': 3.5.2(@docusaurus/types@3.5.2) '@svgr/webpack': 8.1.0(typescript@5.2.2) escape-string-regexp: 4.0.0 - file-loader: 6.2.0(webpack@5.92.1) + file-loader: 6.2.0(webpack@5.95.0) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -3977,10 +3253,10 @@ packages: prompts: 2.4.2 resolve-pathname: 3.0.0 shelljs: 0.8.5 - tslib: 2.6.3 - url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.92.1) + tslib: 2.7.0 + url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.95.0) utility-types: 3.11.0 - webpack: 5.92.1 + webpack: 5.95.0 transitivePeerDependencies: - '@swc/core' - esbuild @@ -4220,53 +3496,6 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.9.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 9.9.1 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.11.0: - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - /@eslint/config-array@0.18.0: - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.5 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - /@eslint/eslintrc@3.1.0: - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.5 - espree: 10.1.0 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - /@eslint/js@9.9.1: - resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - /@eslint/object-schema@2.1.4: - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - /@exodus/schemasafe@1.3.0: resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} dev: false @@ -4312,14 +3541,6 @@ packages: dependencies: '@hapi/hoek': 9.3.0 - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - /@humanwhocodes/retry@0.3.0: - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} - engines: {node: '>=18.18'} - /@ipld/dag-cbor@9.0.3: resolution: {integrity: sha512-A2UFccS0+sARK9xwXiVZIaWbLbPxLGP3UZOjBeOMWfDY04SXi8h1+t4rHBzOlKYF/yWNm3RbFLyclWO7hZcy4g==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -4424,7 +3645,7 @@ packages: /@mdx-js/mdx@3.0.1: resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -4447,19 +3668,8 @@ packages: unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 vfile: 6.0.1 - transitivePeerDependencies: - - supports-color - - /@mdx-js/react@3.0.1(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.3.5 - react: 18.2.0 - dev: false + transitivePeerDependencies: + - supports-color /@mdx-js/react@3.0.1(@types/react@18.3.9)(react@18.2.0): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} @@ -4553,10 +3763,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: false /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: false /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -4564,6 +3776,7 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + dev: false /@open-draft/deferred-promise@2.2.0: resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -4633,303 +3846,6 @@ packages: - supports-color dev: true - /@radix-ui/primitive@1.1.0: - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - dev: false - - /@radix-ui/react-accordion@1.2.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collapsible': 1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collection': 1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-checkbox@1.1.1(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-collapsible@1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-presence': 1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-collection@1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-context@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-direction@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-id@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-label@2.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-presence@1.1.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-primitive@2.0.0(@types/react@18.3.5)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@radix-ui/react-slot@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-use-previous@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-use-size@1.1.0(@types/react@18.3.5)(react@18.2.0): - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.2.0) - '@types/react': 18.3.5 - react: 18.2.0 - dev: false - /@react-aria/focus@3.17.1(react@18.2.0): resolution: {integrity: sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==} peerDependencies: @@ -6078,7 +4994,7 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -6144,23 +5060,19 @@ packages: dependencies: '@types/eslint': 8.56.10 '@types/estree': 1.0.5 + dev: false /@types/eslint@8.56.10: resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 - - /@types/eslint__js@8.42.3: - resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} - dependencies: - '@types/eslint': 8.56.10 - dev: true + dev: false /@types/estree-jsx@1.0.5: resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -6168,6 +5080,7 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: false /@types/estree@1.0.6: resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -6298,6 +5211,7 @@ packages: /@types/prop-types@15.7.12: resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + dev: false /@types/prop-types@15.7.13: resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -6314,14 +5228,14 @@ packages: resolution: {integrity: sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.5 + '@types/react': 18.3.9 '@types/react-router': 5.1.20 /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.3.5 + '@types/react': 18.3.9 '@types/react-router': 5.1.20 /@types/react-router@5.1.20: @@ -6330,18 +5244,6 @@ packages: '@types/history': 4.7.11 '@types/react': 18.3.9 - /@types/react@18.3.3: - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - - /@types/react@18.3.5: - resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - /@types/react@18.3.9: resolution: {integrity: sha512-+BpAVyTpJkNWWSSnaLBk6ePpHLOGJKnEQNbINNovPWzvEUyAe3e+/d494QdEh71RekM/qV7lw6jzf1HGrJyAtQ==} dependencies: @@ -6358,10 +5260,6 @@ packages: '@types/node': 20.14.10 dev: false - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true - /@types/send@0.17.4: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: @@ -6383,240 +5281,52 @@ packages: '@types/send': 0.17.4 dev: false - /@types/sockjs@0.3.36: - resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - dependencies: - '@types/node': 20.14.10 - dev: false - - /@types/statuses@2.0.5: - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - dev: false - - /@types/stylis@4.2.5: - resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} - dev: false - - /@types/unist@2.0.10: - resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - - /@types/unist@3.0.2: - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - - /@types/which@2.0.2: - resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} - dev: true - - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 20.14.10 - - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false - - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: false - - /@types/yauzl@2.10.3: - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - requiresBuild: true - dependencies: - '@types/node': 20.14.10 - dev: true - optional: true - - /@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0)(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 8.4.0 - eslint: 9.9.1 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.5 - eslint: 9.9.1 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true - - /@typescript-eslint/scope-manager@8.4.0: - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 - dev: true + '@types/node': 20.14.10 + dev: false - /@typescript-eslint/type-utils@8.4.0(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.2.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - debug: 4.3.5 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - eslint - - supports-color - dev: true + /@types/statuses@2.0.5: + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + dev: false - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + /@types/stylis@4.2.5: + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + dev: false - /@typescript-eslint/types@8.4.0: - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.5 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.2 - tsutils: 3.21.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - /@typescript-eslint/typescript-estree@8.4.0(typescript@5.2.2): - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 - debug: 4.3.5 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color + /@types/which@2.0.2: + resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} dev: true - /@typescript-eslint/utils@5.62.0(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 9.9.1 - eslint-scope: 5.1.1 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - typescript - dev: true + '@types/node': 20.14.10 - /@typescript-eslint/utils@8.4.0(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.2.2) - eslint: 9.9.1 - transitivePeerDependencies: - - supports-color - - typescript - dev: true + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true + '@types/yargs-parser': 21.0.3 + dev: false - /@typescript-eslint/visitor-keys@8.4.0: - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true dependencies: - '@typescript-eslint/types': 8.4.0 - eslint-visitor-keys: 3.4.3 + '@types/node': 20.14.10 dev: true + optional: true /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -7364,10 +6074,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -7431,6 +6137,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -7453,6 +6160,7 @@ packages: /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + dev: false /array.prototype.filter@1.0.4: resolution: {integrity: sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==} @@ -7572,6 +6280,7 @@ packages: picocolors: 1.0.1 postcss: 8.4.31 postcss-value-parser: 4.2.0 + dev: false /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} @@ -7910,6 +6619,7 @@ packages: electron-to-chromium: 1.4.788 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.0) + dev: false /browserslist@4.23.1: resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} @@ -7920,6 +6630,7 @@ packages: electron-to-chromium: 1.4.820 node-releases: 2.0.14 update-browserslist-db: 1.1.0(browserslist@4.23.1) + dev: false /browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} @@ -7930,7 +6641,6 @@ packages: electron-to-chromium: 1.5.28 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.24.0) - dev: false /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -8012,6 +6722,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: false /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} @@ -8023,6 +6734,7 @@ packages: /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + dev: false /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} @@ -8046,21 +6758,22 @@ packages: /caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.23.1 - caniuse-lite: 1.0.30001640 + browserslist: 4.24.0 + caniuse-lite: 1.0.30001663 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false /caniuse-lite@1.0.30001626: resolution: {integrity: sha512-JRW7kAH8PFJzoPCJhLSHgDgKg5348hsQ68aqb+slnzuB5QFERv846oA/mRChmlLAOdEDeOkRn3ynb1gSFnjt3w==} + dev: false /caniuse-lite@1.0.30001640: resolution: {integrity: sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==} + dev: false /caniuse-lite@1.0.30001663: resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} - dev: false /canonicalize@2.0.0: resolution: {integrity: sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w==} @@ -8106,6 +6819,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: false /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} @@ -8417,11 +7131,6 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -8584,7 +7293,7 @@ packages: /core-js-compat@3.37.1: resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==} dependencies: - browserslist: 4.23.1 + browserslist: 4.24.0 dev: false /core-js-pure@3.37.1: @@ -8893,6 +7602,7 @@ packages: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + dev: false /cssnano-preset-advanced@6.1.2(postcss@8.4.31): resolution: {integrity: sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==} @@ -8901,7 +7611,7 @@ packages: postcss: 8.4.31 dependencies: autoprefixer: 10.4.19(postcss@8.4.31) - browserslist: 4.23.1 + browserslist: 4.24.0 cssnano-preset-default: 6.1.2(postcss@8.4.31) postcss: 8.4.31 postcss-discard-unused: 6.0.5(postcss@8.4.31) @@ -9303,10 +8013,6 @@ packages: is-data-view: 1.0.1 dev: false - /date-fns@4.1.0: - resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dev: false - /dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} dev: true @@ -9407,6 +8113,7 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false /deepmerge-ts@5.1.0: resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} @@ -9595,6 +8302,7 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -9623,6 +8331,7 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: false /discontinuous-range@1.0.0: resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} @@ -9630,6 +8339,7 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false /dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} @@ -9674,21 +8384,6 @@ packages: - debug dev: false - /docusaurus-plugin-sass@0.2.5(@docusaurus/core@3.5.2)(sass@1.63.6)(webpack@5.95.0): - resolution: {integrity: sha512-Z+D0fLFUKcFpM+bqSUmqKIU+vO+YF1xoEQh5hoFreg2eMf722+siwXDD+sqtwU8E4MvVpuvsQfaHwODNlxJAEg==} - peerDependencies: - '@docusaurus/core': ^2.0.0-beta || ^3.0.0-alpha - sass: ^1.30.0 - dependencies: - '@docusaurus/core': 3.5.2(@docusaurus/types@3.5.2)(@mdx-js/react@3.0.1)(eslint@9.9.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - sass: 1.63.6 - sass-loader: 10.5.2(sass@1.63.6)(webpack@5.95.0) - transitivePeerDependencies: - - fibers - - node-sass - - webpack - dev: false - /docusaurus-tailwindcss@0.1.0(@docusaurus/core@3.5.2): resolution: {integrity: sha512-Vz2bDMhRUwp4+iro+JlRM9kaOJ2Wjk3ZZYl1C9yydSx1iuTSgXS0beA1v/7cXyBV5VrIN5ZGwvRXev9IheWU7A==} engines: {node: '>=10'} @@ -9837,6 +8532,7 @@ packages: /ed25519-keygen@0.4.11: resolution: {integrity: sha512-UKxebk/eoW/0yy6BcyCkgAvN2/VzwVXiMVHgKNYBMX6T0fJRAE3WWvH2inyuBvMIJaOqlkc3utylUvL8yW6SOg==} + deprecated: 'Switch to micro-key-producer: the package has been merged into it' dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 @@ -9858,13 +8554,14 @@ packages: /electron-to-chromium@1.4.788: resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} + dev: false /electron-to-chromium@1.4.820: resolution: {integrity: sha512-kK/4O/YunacfboFEk/BDf7VO1HoPmDudLTJAU9NmXIOSjsV7qVIX3OrI4REZo0VmdqhcpUcncQc6N8Q3aEXlHg==} + dev: false /electron-to-chromium@1.5.28: resolution: {integrity: sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==} - dev: false /elkjs@0.9.3: resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} @@ -9929,6 +8626,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: false /enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} @@ -9936,7 +8634,6 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: false /enquire.js@2.1.6: resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==} @@ -10377,15 +9074,6 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-prettier@9.1.0(eslint@9.9.1): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 9.9.1 - dev: true - /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -10393,88 +9081,12 @@ packages: esrecurse: 4.3.0 estraverse: 4.3.0 - /eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - /eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1) - '@eslint-community/regexpp': 4.11.0 - '@eslint/config-array': 0.18.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.9.1 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.5 - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - /espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: false - /esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -10492,7 +9104,7 @@ packages: /estree-util-attach-comments@3.0.0: resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /estree-util-build-jsx@3.0.1: resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} @@ -10515,7 +9127,7 @@ packages: /estree-util-value-to-estree@3.1.1: resolution: {integrity: sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 is-plain-obj: 4.1.0 dev: false @@ -10532,11 +9144,12 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + dev: false /eta@2.2.0: resolution: {integrity: sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==} @@ -10746,12 +9359,14 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.7 + dev: false /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false /fast-redact@3.5.0: resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} @@ -10778,6 +9393,7 @@ packages: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 + dev: false /fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -10820,12 +9436,6 @@ packages: escape-string-regexp: 1.0.5 dev: false - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - dependencies: - flat-cache: 4.0.1 - /file-loader@6.2.0(webpack@5.92.1): resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} engines: {node: '>= 10.13.0'} @@ -10837,6 +9447,17 @@ packages: webpack: 5.92.1 dev: false + /file-loader@6.2.0(webpack@5.95.0): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.95.0 + dev: false + /filesize@8.0.7: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} @@ -10897,6 +9518,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: false /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -10905,20 +9527,10 @@ packages: locate-path: 7.2.0 path-exists: 5.0.0 - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - /follow-redirects@1.15.6(debug@4.3.4): resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -10952,7 +9564,7 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.1.0 - /fork-ts-checker-webpack-plugin@6.5.3(eslint@9.9.1)(typescript@5.2.2)(webpack@5.92.1): + /fork-ts-checker-webpack-plugin@6.5.3(typescript@5.2.2)(webpack@5.92.1): resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -10972,7 +9584,6 @@ packages: chokidar: 3.6.0 cosmiconfig: 6.0.0 deepmerge: 4.3.1 - eslint: 9.9.1 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.5.3 @@ -11024,6 +9635,7 @@ packages: /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: false /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -11105,20 +9717,6 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: false - /gaxios@6.6.0: - resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==} - engines: {node: '>=14'} - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.4 - is-stream: 2.0.1 - node-fetch: 2.7.0 - uuid: 9.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /gaxios@6.7.0: resolution: {integrity: sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==} engines: {node: '>=14'} @@ -11137,7 +9735,7 @@ packages: resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} engines: {node: '>=14'} dependencies: - gaxios: 6.6.0 + gaxios: 6.7.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -11205,6 +9803,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: false /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -11270,10 +9869,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - /globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -11292,6 +9887,7 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 + dev: false /globby@13.2.2: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} @@ -11326,7 +9922,7 @@ packages: extend: 3.0.2 gaxios: 6.7.0 google-auth-library: 9.11.0 - qs: 6.12.1 + qs: 6.13.0 url-template: 2.0.8 uuid: 9.0.1 transitivePeerDependencies: @@ -11377,10 +9973,6 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /graphql@16.9.0: resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} @@ -11400,7 +9992,7 @@ packages: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} dependencies: - gaxios: 6.6.0 + gaxios: 6.7.0 jws: 4.0.0 transitivePeerDependencies: - encoding @@ -11541,7 +10133,7 @@ packages: /hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -11563,7 +10155,7 @@ packages: /hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/hast': 3.0.4 '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 @@ -11878,16 +10470,6 @@ packages: - supports-color dev: true - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: false - /https-proxy-agent@7.0.5: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} @@ -11941,6 +10523,7 @@ packages: /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + dev: false /image-size@1.1.1: resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} @@ -11954,16 +10537,13 @@ packages: resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} dev: false - /immutable@4.3.6: - resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} - dev: false - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: false /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -11977,6 +10557,7 @@ packages: /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + dev: false /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} @@ -12217,17 +10798,11 @@ packages: rgba-regex: 1.0.0 dev: false - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.2 - /is-core-module@2.14.0: resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - dev: true /is-data-view@1.0.1: resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} @@ -12329,6 +10904,7 @@ packages: /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + dev: false /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -12348,7 +10924,7 @@ packages: /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -12618,6 +11194,7 @@ packages: /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + dev: false /joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -12662,6 +11239,7 @@ packages: hasBin: true dependencies: argparse: 2.0.1 + dev: false /jsbi@4.3.0: resolution: {integrity: sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==} @@ -12702,9 +11280,6 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: false - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - /json2mq@0.2.0: resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} dependencies: @@ -12777,11 +11352,6 @@ packages: engines: {node: '>=6'} dev: false - /klona@2.0.6: - resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} - engines: {node: '>= 8'} - dev: false - /ky@0.33.3: resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} engines: {node: '>=14.16'} @@ -12864,13 +11434,6 @@ packages: type-check: 0.3.2 dev: false - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - /lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} dependencies: @@ -12883,11 +11446,7 @@ packages: /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - - /lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - dev: true + dev: false /lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} @@ -12944,6 +11503,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: false /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -13000,6 +11560,7 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false /lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} @@ -13434,6 +11995,7 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + dev: false /mermaid@10.9.1: resolution: {integrity: sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==} @@ -13609,7 +12171,7 @@ packages: /micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.1 micromark-factory-space: 2.0.0 @@ -13622,7 +12184,7 @@ packages: resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.1 @@ -13640,7 +12202,7 @@ packages: /micromark-extension-mdxjs-esm@3.0.0: resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 micromark-util-character: 2.1.0 @@ -13697,7 +12259,7 @@ packages: /micromark-factory-mdx-expression@2.0.1: resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 devlop: 1.1.0 micromark-util-character: 2.1.0 micromark-util-events-to-acorn: 2.0.2 @@ -13844,7 +12406,7 @@ packages: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/unist': 3.0.2 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -13980,6 +12542,7 @@ packages: dependencies: braces: 3.0.3 picomatch: 2.3.1 + dev: false /miller-rabin@4.0.1: resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} @@ -14292,14 +12855,6 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: false - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: true - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -14309,9 +12864,6 @@ packages: resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} dev: false - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /nearley@2.20.1: resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} hasBin: true @@ -14403,10 +12955,10 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: false /node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - dev: false /nodemon@3.0.1: resolution: {integrity: sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==} @@ -14446,6 +12998,7 @@ packages: /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + dev: false /normalize-url@8.0.1: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} @@ -14521,6 +13074,7 @@ packages: /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + dev: false /object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} @@ -14631,17 +13185,6 @@ packages: word-wrap: 1.2.5 dev: false - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -14687,6 +13230,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: false /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -14713,6 +13257,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: false /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -14783,6 +13328,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: false /parse-asn1@5.1.7: resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} @@ -14812,7 +13358,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.6 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -14869,6 +13415,7 @@ packages: /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: false /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} @@ -14888,6 +13435,7 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: false /path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} @@ -14917,6 +13465,7 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: false /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -14958,7 +13507,7 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 3.0.3 is-reference: 3.0.2 @@ -15036,6 +13585,7 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + dev: false /pino-abstract-transport@1.1.0: resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} @@ -15101,11 +13651,6 @@ packages: thread-stream: 2.7.0 dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - /pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -15259,18 +13804,6 @@ packages: resolve: 1.22.8 dev: false - /postcss-import@15.1.0(postcss@8.4.31): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: 8.4.31 - dependencies: - postcss: 8.4.31 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - dev: true - /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} @@ -15287,6 +13820,7 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.31 + dev: false /postcss-load-config@3.1.4(postcss@8.4.31): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -15305,23 +13839,6 @@ packages: yaml: 1.10.2 dev: false - /postcss-load-config@4.0.2(postcss@8.4.31): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: 8.4.31 - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 3.1.1 - postcss: 8.4.31 - yaml: 2.4.3 - dev: true - /postcss-loader@7.3.4(postcss@8.4.31)(typescript@5.2.2)(webpack@5.92.1): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} @@ -15478,16 +13995,6 @@ packages: postcss-selector-parser: 6.1.0 dev: false - /postcss-nested@6.0.1(postcss@8.4.31): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: 8.4.31 - dependencies: - postcss: 8.4.31 - postcss-selector-parser: 6.1.0 - dev: true - /postcss-normalize-charset@6.0.2(postcss@8.4.31): resolution: {integrity: sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==} engines: {node: ^14 || ^16 || >=18.0} @@ -15634,6 +14141,7 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: false /postcss-sort-media-queries@5.2.0(postcss@8.4.31): resolution: {integrity: sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==} @@ -15672,6 +14180,7 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false /postcss-zindex@6.0.2(postcss@8.4.31): resolution: {integrity: sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==} @@ -15717,74 +14226,6 @@ packages: engines: {node: '>= 0.8.0'} dev: false - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - /prettier-plugin-tailwindcss@0.6.6(prettier@3.3.3): - resolution: {integrity: sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-multiline-arrays: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-multiline-arrays: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - dependencies: - prettier: 3.3.3 - dev: true - - /prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - dev: true - /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: @@ -15995,6 +14436,7 @@ packages: engines: {node: '>=0.6'} dependencies: side-channel: 1.0.6 + dev: true /qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} @@ -16018,6 +14460,7 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -16139,7 +14582,7 @@ packages: tween-functions: 1.2.0 dev: false - /react-dev-utils@12.0.1(eslint@9.9.1)(typescript@5.2.2)(webpack@5.92.1): + /react-dev-utils@12.0.1(typescript@5.2.2)(webpack@5.92.1): resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -16158,7 +14601,7 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.9.1)(typescript@5.2.2)(webpack@5.92.1) + fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.2.2)(webpack@5.92.1) global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 @@ -16307,7 +14750,7 @@ packages: react: '>=16' dependencies: '@types/hast': 2.3.10 - '@types/prop-types': 15.7.12 + '@types/prop-types': 15.7.13 '@types/react': 18.3.9 '@types/unist': 2.0.10 comma-separated-tokens: 2.0.3 @@ -16472,6 +14915,7 @@ packages: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: false /read-pkg-up@9.1.0: resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} @@ -16926,6 +15370,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: false /resolve-pathname@3.0.0: resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} @@ -16935,9 +15380,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.1 + is-core-module: 2.14.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} @@ -16972,6 +15418,7 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false /rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} @@ -16999,7 +15446,6 @@ packages: hasBin: true dependencies: glob: 10.3.10 - dev: true /rimraf@5.0.9: resolution: {integrity: sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==} @@ -17090,6 +15536,7 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: false /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} @@ -17141,41 +15588,6 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /sass-loader@10.5.2(sass@1.63.6)(webpack@5.95.0): - resolution: {integrity: sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==} - engines: {node: '>= 10.13.0'} - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - dependencies: - klona: 2.0.6 - loader-utils: 2.0.4 - neo-async: 2.6.2 - sass: 1.63.6 - schema-utils: 3.3.0 - semver: 7.6.2 - webpack: 5.95.0 - dev: false - - /sass@1.63.6: - resolution: {integrity: sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 3.6.0 - immutable: 4.3.6 - source-map-js: 1.2.0 - dev: false - /sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} dev: false @@ -17410,6 +15822,13 @@ packages: rechoir: 0.6.2 dev: false + /shnip@0.0.2-alpha: + resolution: {integrity: sha512-XTAtBhQeMlZtqCvtpz1SZEShiOh70P7NnrfV3XeWBiY4mPXI/KnvFVkwNPD6aMuYqap33JZLpKo1h1ECW3Nfew==} + hasBin: true + dependencies: + rimraf: 5.0.5 + dev: false + /should-equal@2.0.0: resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} dependencies: @@ -17514,6 +15933,7 @@ packages: /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + dev: false /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} @@ -17911,20 +16331,6 @@ packages: resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} dev: false - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.10 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: true - /superagent@8.1.2: resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} engines: {node: '>=6.4.0 <13 || >=14'} @@ -17975,6 +16381,7 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: false /svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} @@ -18028,10 +16435,6 @@ packages: hashlru: 2.3.0 dev: false - /tailwind-merge@2.5.2: - resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} - dev: false - /tailwindcss@2.2.15(autoprefixer@10.3.4)(postcss@8.4.31): resolution: {integrity: sha512-WgV41xTMbnSoTNMNnJvShQZ+8GmY86DmXTrCgnsveNZJdlybfwCItV8kAqjYmU49YiFr+ofzmT1JlAKajBZboQ==} engines: {node: '>=12.13.0'} @@ -18112,37 +16515,6 @@ packages: - ts-node dev: false - /tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.7 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.1 - postcss: 8.4.31 - postcss-import: 15.1.0(postcss@8.4.31) - postcss-js: 4.0.1(postcss@8.4.31) - postcss-load-config: 4.0.2(postcss@8.4.31) - postcss-nested: 6.0.1(postcss@8.4.31) - postcss-selector-parser: 6.1.0 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - dev: true - /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} engines: {node: '>=6'} @@ -18194,6 +16566,7 @@ packages: serialize-javascript: 6.0.2 terser: 5.31.0 webpack: 5.92.1 + dev: false /terser-webpack-plugin@5.3.10(webpack@5.95.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} @@ -18217,7 +16590,6 @@ packages: serialize-javascript: 6.0.2 terser: 5.31.0 webpack: 5.95.0 - dev: false /terser@5.31.0: resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} @@ -18240,19 +16612,7 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: true - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: true + dev: false /thread-stream@2.7.0: resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} @@ -18341,15 +16701,6 @@ packages: /trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - /ts-api-utils@1.3.0(typescript@5.2.2): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.2.2 - dev: true - /ts-custom-error@3.3.1: resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} engines: {node: '>=14.0.0'} @@ -18360,34 +16711,17 @@ packages: engines: {node: '>=6.10'} dev: false - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: false /tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - /tsutils@3.21.0(typescript@5.2.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.2.2 - dev: true - /tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} dev: false @@ -18399,12 +16733,6 @@ packages: prelude-ls: 1.1.2 dev: false - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -18498,28 +16826,11 @@ packages: uuidv7: 0.4.4 dev: false - /typescript-eslint@8.4.0(eslint@9.9.1)(typescript@5.2.2): - resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0)(eslint@9.9.1)(typescript@5.2.2) - '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - eslint - - supports-color - dev: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true + dev: false /typeson-registry@1.0.0-alpha.39: resolution: {integrity: sha512-NeGDEquhw+yfwNhguLPcZ9Oj0fzbADiX4R0WxvoY8nGhy98IbzQy1sezjoEFWOywOboj/DWehI+/aUlRVrJnnw==} @@ -18768,6 +17079,7 @@ packages: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.1 + dev: false /update-browserslist-db@1.1.0(browserslist@4.23.1): resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} @@ -18778,6 +17090,7 @@ packages: browserslist: 4.23.1 escalade: 3.1.2 picocolors: 1.0.1 + dev: false /update-browserslist-db@1.1.0(browserslist@4.24.0): resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} @@ -18788,7 +17101,6 @@ packages: browserslist: 4.24.0 escalade: 3.1.2 picocolors: 1.0.1 - dev: false /update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -18832,6 +17144,23 @@ packages: webpack: 5.92.1 dev: false + /url-loader@4.1.1(file-loader@6.2.0)(webpack@5.95.0): + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 6.2.0(webpack@5.95.0) + loader-utils: 2.0.4 + mime-types: 2.1.35 + schema-utils: 3.3.0 + webpack: 5.95.0 + dev: false + /url-template@2.0.8: resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} dev: false @@ -19110,6 +17439,7 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + dev: false /watchpack@2.4.2: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} @@ -19117,7 +17447,6 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: false /wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} @@ -19350,6 +17679,7 @@ packages: - '@swc/core' - esbuild - uglify-js + dev: false /webpack@5.95.0: resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} @@ -19388,7 +17718,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: false /webpackbar@5.0.2(webpack@5.92.1): resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} @@ -19513,6 +17842,7 @@ packages: /word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + dev: false /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -19643,12 +17973,6 @@ packages: engines: {node: '>= 6'} dev: false - /yaml@2.4.3: - resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} - engines: {node: '>= 14'} - hasBin: true - dev: true - /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -19714,6 +18038,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: false /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6f00dd5b3..25c8204aa 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,4 +2,3 @@ packages: - "site/**" - "examples/**" - "apps/**" - - "site-new/**" diff --git a/shnip.config.ts b/shnip.config.js similarity index 78% rename from shnip.config.ts rename to shnip.config.js index c1c26c9d5..5291bd6bc 100644 --- a/shnip.config.ts +++ b/shnip.config.js @@ -1,6 +1,6 @@ export const config = { - rootDirectory: "./site-new/testsuites", - snippetOutputDirectory: "./site-new/snippets", + rootDirectory: "./site/testsuites", + snippetOutputDirectory: "./site/snippets", fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"], exclude: [ "pfiOverviewReadOfferingsJs", @@ -14,5 +14,4 @@ export const config = { prependEnd: ":prepend-end:", }, outputDirectoryStructure: "byLanguage", - version: "1.0.0", }; diff --git a/shnip/build.js b/shnip/build.js deleted file mode 100644 index ab7fe7b79..000000000 --- a/shnip/build.js +++ /dev/null @@ -1,12 +0,0 @@ -import esbuild from "esbuild"; - -esbuild - .build({ - entryPoints: ["src/**/*.ts"], - outdir: "dist", - bundle: true, - platform: "node", - target: "es2020", - format: "esm", - }) - .catch(() => process.exit(1)); diff --git a/shnip/dist/bin/cli.js b/shnip/dist/bin/cli.js deleted file mode 100755 index 6067860ad..000000000 --- a/shnip/dist/bin/cli.js +++ /dev/null @@ -1,7809 +0,0 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __typeError = (msg) => { - throw TypeError(msg); -}; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); -var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); -var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); -var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); -var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); -var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); -var __privateWrapper = (obj, member, setter, getter) => ({ - set _(value) { - __privateSet(obj, member, value, setter); - }, - get _() { - return __privateGet(obj, member, getter); - } -}); - -// node_modules/balanced-match/index.js -var require_balanced_match = __commonJS({ - "node_modules/balanced-match/index.js"(exports, module) { - "use strict"; - module.exports = balanced; - function balanced(a, b, str) { - if (a instanceof RegExp) a = maybeMatch(a, str); - if (b instanceof RegExp) b = maybeMatch(b, str); - var r = range(a, b, str); - return r && { - start: r[0], - end: r[1], - pre: str.slice(0, r[0]), - body: str.slice(r[0] + a.length, r[1]), - post: str.slice(r[1] + b.length) - }; - } - function maybeMatch(reg, str) { - var m = str.match(reg); - return m ? m[0] : null; - } - balanced.range = range; - function range(a, b, str) { - var begs, beg, left, right, result; - var ai = str.indexOf(a); - var bi = str.indexOf(b, ai + 1); - var i = ai; - if (ai >= 0 && bi > 0) { - if (a === b) { - return [ai, bi]; - } - begs = []; - left = str.length; - while (i >= 0 && !result) { - if (i == ai) { - begs.push(i); - ai = str.indexOf(a, i + 1); - } else if (begs.length == 1) { - result = [begs.pop(), bi]; - } else { - beg = begs.pop(); - if (beg < left) { - left = beg; - right = bi; - } - bi = str.indexOf(b, i + 1); - } - i = ai < bi && ai >= 0 ? ai : bi; - } - if (begs.length) { - result = [left, right]; - } - } - return result; - } - } -}); - -// node_modules/brace-expansion/index.js -var require_brace_expansion = __commonJS({ - "node_modules/brace-expansion/index.js"(exports, module) { - var balanced = require_balanced_match(); - module.exports = expandTop; - var escSlash = "\0SLASH" + Math.random() + "\0"; - var escOpen = "\0OPEN" + Math.random() + "\0"; - var escClose = "\0CLOSE" + Math.random() + "\0"; - var escComma = "\0COMMA" + Math.random() + "\0"; - var escPeriod = "\0PERIOD" + Math.random() + "\0"; - function numeric(str) { - return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); - } - function escapeBraces(str) { - return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); - } - function unescapeBraces(str) { - return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); - } - function parseCommaParts(str) { - if (!str) - return [""]; - var parts = []; - var m = balanced("{", "}", str); - if (!m) - return str.split(","); - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(","); - p[p.length - 1] += "{" + body + "}"; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length - 1] += postParts.shift(); - p.push.apply(p, postParts); - } - parts.push.apply(parts, p); - return parts; - } - function expandTop(str) { - if (!str) - return []; - if (str.substr(0, 2) === "{}") { - str = "\\{\\}" + str.substr(2); - } - return expand2(escapeBraces(str), true).map(unescapeBraces); - } - function embrace(str) { - return "{" + str + "}"; - } - function isPadded(el) { - return /^-?0\d/.test(el); - } - function lte(i, y) { - return i <= y; - } - function gte(i, y) { - return i >= y; - } - function expand2(str, isTop) { - var expansions = []; - var m = balanced("{", "}", str); - if (!m) return [str]; - var pre = m.pre; - var post = m.post.length ? expand2(m.post, false) : [""]; - if (/\$$/.test(m.pre)) { - for (var k = 0; k < post.length; k++) { - var expansion = pre + "{" + m.body + "}" + post[k]; - expansions.push(expansion); - } - } else { - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = m.body.indexOf(",") >= 0; - if (!isSequence && !isOptions) { - if (m.post.match(/,.*\}/)) { - str = m.pre + "{" + m.body + escClose + m.post; - return expand2(str); - } - return [str]; - } - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - n = expand2(n[0], false).map(embrace); - if (n.length === 1) { - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - var N; - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length); - var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - N = []; - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === "\\") - c = ""; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join("0"); - if (i < 0) - c = "-" + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = []; - for (var j = 0; j < n.length; j++) { - N.push.apply(N, expand2(n[j], false)); - } - } - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - var expansion = pre + N[j] + post[k]; - if (!isTop || isSequence || expansion) - expansions.push(expansion); - } - } - } - return expansions; - } - } -}); - -// src/extract/SnippetExtractor.ts -import path from "path"; -import fs from "fs"; -var SnippetExtractor = class { - constructor(config4) { - this.prependBlocks = {}; - if (typeof window !== "undefined") { - throw new Error( - "SnippetExtractor can only be used in a Node.js environment" - ); - } - this.config = { - ...config4, - outputDirectoryStructure: config4.outputDirectoryStructure || "byLanguage" - }; - this.projectRoot = process.cwd(); - } - gatherSnippetNames(content) { - const { start, end } = this.config.snippetTags; - let startIndex = 0, endIndex = 0; - while ((startIndex = content.indexOf(start, startIndex)) !== -1) { - endIndex = content.indexOf(end, startIndex); - if (endIndex === -1) break; - const snippetNameLine = content.substring(startIndex + start.length, content.indexOf("\n", startIndex)).trim(); - startIndex = endIndex + end.length; - } - } - gatherImports(content) { - const { prependStart, prependEnd } = this.config.snippetTags; - let startIndex = 0, endIndex = 0; - while ((startIndex = content.indexOf(prependStart, startIndex)) !== -1) { - const endOfStartTag = content.indexOf("\n", startIndex); - const snippetNamesLine = content.substring(startIndex + prependStart.length, endOfStartTag).trim(); - const snippetNames = snippetNamesLine.split(/\s+/); - endIndex = content.indexOf(prependEnd, endOfStartTag); - if (endIndex === -1) { - console.log("No matching :prepend-end: found for :prepend-start:"); - break; - } - const importBlock = content.substring(endOfStartTag + 1, endIndex).trim(); - snippetNames.forEach((name) => { - if (!this.prependBlocks[name]) { - this.prependBlocks[name] = []; - } - this.prependBlocks[name].push(importBlock); - }); - startIndex = endIndex + prependEnd.length; - } - } - extractSnippetsFromFile(content, filePath) { - const snippets = {}; - const { start, end } = this.config.snippetTags; - let startIndex = 0, endIndex = 0; - const fileExtension = path.extname(filePath); - while ((startIndex = content.indexOf(start, endIndex)) !== -1) { - const startTagClose = content.indexOf("\n", startIndex); - if (startTagClose === -1) { - console.log("Snippet start tag not followed by newline. Skipping..."); - break; - } - endIndex = content.indexOf(end, startTagClose); - if (endIndex === -1) { - console.log("No closing tag found for a snippet. Skipping..."); - break; - } - const snippetName = content.substring(startIndex + start.length, startTagClose).trim(); - let snippetContent = content.substring(startTagClose + 1, endIndex); - snippetContent = this.normalizeIndentation(snippetContent, fileExtension); - if (this.prependBlocks[snippetName]) { - const importsToPrepend = this.prependBlocks[snippetName].map((block) => block.trimEnd().replace(/\/\/\s*$/, "")).join("\n"); - const finalImports = importsToPrepend.length > 0 ? `${importsToPrepend} -` : ""; - snippetContent = `${finalImports}${snippetContent}`; - } - if (snippetName) { - snippets[snippetName] = snippetContent; - } - endIndex += end.length; - } - return snippets; - } - normalizeIndentation(snippetContent, fileExtension) { - const lines = snippetContent.split("\n"); - const firstLineIndentation = lines[0].match(/^(\s*)/)?.[0].length || 0; - const normalizedLines = lines.map((line) => { - const currentIndentation = line.match(/^(\s*)/)?.[0].length || 0; - if (currentIndentation >= firstLineIndentation) { - return line.substring(firstLineIndentation); - } - return line; - }); - const commentChar = fileExtension === ".bash" ? "#" : "//"; - return normalizedLines.map((line) => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), "")).join("\n"); - } - shouldExcludeFile(content) { - if (this.config.outputDirectoryStructure === "match") { - return this.config.exclude.some( - (excludeString) => content.includes(excludeString) - ); - } - return false; - } - processDirectory(directory, relativePath = "") { - const absoluteDir = path.resolve(this.projectRoot, directory); - const items = fs.readdirSync(absoluteDir); - items.forEach((item) => { - const fullPath = path.join(absoluteDir, item); - const stat3 = fs.statSync(fullPath); - if (stat3.isDirectory()) { - this.processDirectory( - path.join(directory, item), - path.join(relativePath, item) - ); - } else if (this.config.fileExtensions.includes(path.extname(item))) { - const content = fs.readFileSync(fullPath, "utf-8"); - this.prependBlocks = {}; - this.gatherSnippetNames(content); - this.gatherImports(content); - if (!this.shouldExcludeFile(content)) { - const fileSnippets = this.extractSnippetsFromFile(content, fullPath); - this.writeSnippetsToFile(fileSnippets, fullPath, relativePath); - } - } - }); - } - writeSnippetsToFile(snippets, fullPath, relativePath) { - for (const [snippetName, snippetContent] of Object.entries(snippets)) { - let outputPath; - switch (this.config.outputDirectoryStructure) { - case "match": - outputPath = path.join( - this.config.snippetOutputDirectory, - relativePath, - `${snippetName}.snippet${path.extname(fullPath)}` - ); - break; - case "byLanguage": - default: - outputPath = this.determineOutputPath(snippetName, fullPath); - break; - } - if (!fs.existsSync(path.dirname(outputPath))) { - fs.mkdirSync(path.dirname(outputPath), { recursive: true }); - } - fs.writeFileSync( - outputPath, - `export default ${JSON.stringify(snippetContent)};` - ); - } - } - determineOutputPath(snippetName, fullPath) { - const extension = path.extname(fullPath); - const language = this.getLanguageFromExtension(extension); - const version2 = this.config.version || "v1"; - return path.join( - this.config.snippetOutputDirectory, - version2, - language, - `${snippetName}.snippet.js` - ); - } - getLanguageFromExtension(extension) { - const extensionToLanguageMap = { - ".js": "js", - ".ts": "typescript", - ".kt": "kt", - ".swift": "swift", - ".gradle": "gradle", - ".bash": "bash", - ".xml": "xml" - }; - return extensionToLanguageMap[extension] || "other"; - } - extractSnippets() { - const absoluteOutputDir = path.resolve( - this.projectRoot, - this.config.snippetOutputDirectory - ); - if (!fs.existsSync(absoluteOutputDir)) { - fs.mkdirSync(absoluteOutputDir, { recursive: true }); - } - this.processDirectory(this.config.rootDirectory); - } -}; -var SnippetExtractor_default = SnippetExtractor; - -// config/shnip.config.ts -var config2 = { - rootDirectory: "./site-new/testsuites", - snippetOutputDirectory: "./site-new/snippets", - fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"], - exclude: [ - "pfiOverviewReadOfferingsJs", - "pfiOverviewWriteJs", - "pfiOverviewWriteOfferingsJs" - ], - snippetTags: { - start: ":snippet-start:", - end: ":snippet-end:", - prependStart: ":prepend-start:", - prependEnd: ":prepend-end:" - }, - outputDirectoryStructure: "byLanguage", - version: "1.0.0" -}; - -// src/bin/cli.ts -import fs3 from "fs"; -import path3 from "path"; - -// node_modules/minimatch/dist/esm/index.js -var import_brace_expansion = __toESM(require_brace_expansion(), 1); - -// node_modules/minimatch/dist/esm/assert-valid-pattern.js -var MAX_PATTERN_LENGTH = 1024 * 64; -var assertValidPattern = (pattern) => { - if (typeof pattern !== "string") { - throw new TypeError("invalid pattern"); - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError("pattern is too long"); - } -}; - -// node_modules/minimatch/dist/esm/brace-expressions.js -var posixClasses = { - "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true], - "[:alpha:]": ["\\p{L}\\p{Nl}", true], - "[:ascii:]": ["\\x00-\\x7f", false], - "[:blank:]": ["\\p{Zs}\\t", true], - "[:cntrl:]": ["\\p{Cc}", true], - "[:digit:]": ["\\p{Nd}", true], - "[:graph:]": ["\\p{Z}\\p{C}", true, true], - "[:lower:]": ["\\p{Ll}", true], - "[:print:]": ["\\p{C}", true], - "[:punct:]": ["\\p{P}", true], - "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true], - "[:upper:]": ["\\p{Lu}", true], - "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true], - "[:xdigit:]": ["A-Fa-f0-9", false] -}; -var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&"); -var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); -var rangesToString = (ranges) => ranges.join(""); -var parseClass = (glob2, position) => { - const pos = position; - if (glob2.charAt(pos) !== "[") { - throw new Error("not in a brace expression"); - } - const ranges = []; - const negs = []; - let i = pos + 1; - let sawStart = false; - let uflag = false; - let escaping = false; - let negate = false; - let endPos = pos; - let rangeStart = ""; - WHILE: while (i < glob2.length) { - const c = glob2.charAt(i); - if ((c === "!" || c === "^") && i === pos + 1) { - negate = true; - i++; - continue; - } - if (c === "]" && sawStart && !escaping) { - endPos = i + 1; - break; - } - sawStart = true; - if (c === "\\") { - if (!escaping) { - escaping = true; - i++; - continue; - } - } - if (c === "[" && !escaping) { - for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { - if (glob2.startsWith(cls, i)) { - if (rangeStart) { - return ["$.", false, glob2.length - pos, true]; - } - i += cls.length; - if (neg) - negs.push(unip); - else - ranges.push(unip); - uflag = uflag || u; - continue WHILE; - } - } - } - escaping = false; - if (rangeStart) { - if (c > rangeStart) { - ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c)); - } else if (c === rangeStart) { - ranges.push(braceEscape(c)); - } - rangeStart = ""; - i++; - continue; - } - if (glob2.startsWith("-]", i + 1)) { - ranges.push(braceEscape(c + "-")); - i += 2; - continue; - } - if (glob2.startsWith("-", i + 1)) { - rangeStart = c; - i += 2; - continue; - } - ranges.push(braceEscape(c)); - i++; - } - if (endPos < i) { - return ["", false, 0, false]; - } - if (!ranges.length && !negs.length) { - return ["$.", false, glob2.length - pos, true]; - } - if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) { - const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; - return [regexpEscape(r), false, endPos - pos, false]; - } - const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]"; - const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]"; - const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs; - return [comb, uflag, endPos - pos, true]; -}; - -// node_modules/minimatch/dist/esm/unescape.js -var unescape = (s, { windowsPathsNoEscape = false } = {}) => { - return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1"); -}; - -// node_modules/minimatch/dist/esm/ast.js -var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]); -var isExtglobType = (c) => types.has(c); -var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))"; -var startNoDot = "(?!\\.)"; -var addPatternStart = /* @__PURE__ */ new Set(["[", "."]); -var justDots = /* @__PURE__ */ new Set(["..", "."]); -var reSpecials = new Set("().*{}+?[]^$\\!"); -var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); -var qmark = "[^/]"; -var star = qmark + "*?"; -var starNoEmpty = qmark + "+?"; -var _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, partsToRegExp_fn, parseGlob_fn; -var _AST = class _AST { - constructor(type, parent, options = {}) { - __privateAdd(this, _AST_instances); - __publicField(this, "type"); - __privateAdd(this, _root); - __privateAdd(this, _hasMagic); - __privateAdd(this, _uflag, false); - __privateAdd(this, _parts, []); - __privateAdd(this, _parent); - __privateAdd(this, _parentIndex); - __privateAdd(this, _negs); - __privateAdd(this, _filledNegs, false); - __privateAdd(this, _options); - __privateAdd(this, _toString); - // set to true if it's an extglob with no children - // (which really means one child of '') - __privateAdd(this, _emptyExt, false); - this.type = type; - if (type) - __privateSet(this, _hasMagic, true); - __privateSet(this, _parent, parent); - __privateSet(this, _root, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _root) : this); - __privateSet(this, _options, __privateGet(this, _root) === this ? options : __privateGet(__privateGet(this, _root), _options)); - __privateSet(this, _negs, __privateGet(this, _root) === this ? [] : __privateGet(__privateGet(this, _root), _negs)); - if (type === "!" && !__privateGet(__privateGet(this, _root), _filledNegs)) - __privateGet(this, _negs).push(this); - __privateSet(this, _parentIndex, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0); - } - get hasMagic() { - if (__privateGet(this, _hasMagic) !== void 0) - return __privateGet(this, _hasMagic); - for (const p of __privateGet(this, _parts)) { - if (typeof p === "string") - continue; - if (p.type || p.hasMagic) - return __privateSet(this, _hasMagic, true); - } - return __privateGet(this, _hasMagic); - } - // reconstructs the pattern - toString() { - if (__privateGet(this, _toString) !== void 0) - return __privateGet(this, _toString); - if (!this.type) { - return __privateSet(this, _toString, __privateGet(this, _parts).map((p) => String(p)).join("")); - } else { - return __privateSet(this, _toString, this.type + "(" + __privateGet(this, _parts).map((p) => String(p)).join("|") + ")"); - } - } - push(...parts) { - for (const p of parts) { - if (p === "") - continue; - if (typeof p !== "string" && !(p instanceof _AST && __privateGet(p, _parent) === this)) { - throw new Error("invalid part: " + p); - } - __privateGet(this, _parts).push(p); - } - } - toJSON() { - const ret = this.type === null ? __privateGet(this, _parts).slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...__privateGet(this, _parts).map((p) => p.toJSON())]; - if (this.isStart() && !this.type) - ret.unshift([]); - if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && __privateGet(this, _parent)?.type === "!")) { - ret.push({}); - } - return ret; - } - isStart() { - if (__privateGet(this, _root) === this) - return true; - if (!__privateGet(this, _parent)?.isStart()) - return false; - if (__privateGet(this, _parentIndex) === 0) - return true; - const p = __privateGet(this, _parent); - for (let i = 0; i < __privateGet(this, _parentIndex); i++) { - const pp = __privateGet(p, _parts)[i]; - if (!(pp instanceof _AST && pp.type === "!")) { - return false; - } - } - return true; - } - isEnd() { - if (__privateGet(this, _root) === this) - return true; - if (__privateGet(this, _parent)?.type === "!") - return true; - if (!__privateGet(this, _parent)?.isEnd()) - return false; - if (!this.type) - return __privateGet(this, _parent)?.isEnd(); - const pl = __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0; - return __privateGet(this, _parentIndex) === pl - 1; - } - copyIn(part) { - if (typeof part === "string") - this.push(part); - else - this.push(part.clone(this)); - } - clone(parent) { - const c = new _AST(this.type, parent); - for (const p of __privateGet(this, _parts)) { - c.copyIn(p); - } - return c; - } - static fromGlob(pattern, options = {}) { - var _a3; - const ast = new _AST(null, void 0, options); - __privateMethod(_a3 = _AST, _AST_static, parseAST_fn).call(_a3, pattern, ast, 0, options); - return ast; - } - // returns the regular expression if there's magic, or the unescaped - // string if not. - toMMPattern() { - if (this !== __privateGet(this, _root)) - return __privateGet(this, _root).toMMPattern(); - const glob2 = this.toString(); - const [re, body, hasMagic2, uflag] = this.toRegExpSource(); - const anyMagic = hasMagic2 || __privateGet(this, _hasMagic) || __privateGet(this, _options).nocase && !__privateGet(this, _options).nocaseMagicOnly && glob2.toUpperCase() !== glob2.toLowerCase(); - if (!anyMagic) { - return body; - } - const flags = (__privateGet(this, _options).nocase ? "i" : "") + (uflag ? "u" : ""); - return Object.assign(new RegExp(`^${re}$`, flags), { - _src: re, - _glob: glob2 - }); - } - get options() { - return __privateGet(this, _options); - } - // returns the string match, the regexp source, whether there's magic - // in the regexp (so a regular expression is required) and whether or - // not the uflag is needed for the regular expression (for posix classes) - // TODO: instead of injecting the start/end at this point, just return - // the BODY of the regexp, along with the start/end portions suitable - // for binding the start/end in either a joined full-path makeRe context - // (where we bind to (^|/), or a standalone matchPart context (where - // we bind to ^, and not /). Otherwise slashes get duped! - // - // In part-matching mode, the start is: - // - if not isStart: nothing - // - if traversal possible, but not allowed: ^(?!\.\.?$) - // - if dots allowed or not possible: ^ - // - if dots possible and not allowed: ^(?!\.) - // end is: - // - if not isEnd(): nothing - // - else: $ - // - // In full-path matching mode, we put the slash at the START of the - // pattern, so start is: - // - if first pattern: same as part-matching mode - // - if not isStart(): nothing - // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) - // - if dots allowed or not possible: / - // - if dots possible and not allowed: /(?!\.) - // end is: - // - if last pattern, same as part-matching mode - // - else nothing - // - // Always put the (?:$|/) on negated tails, though, because that has to be - // there to bind the end of the negated pattern portion, and it's easier to - // just stick it in now rather than try to inject it later in the middle of - // the pattern. - // - // We can just always return the same end, and leave it up to the caller - // to know whether it's going to be used joined or in parts. - // And, if the start is adjusted slightly, can do the same there: - // - if not isStart: nothing - // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) - // - if dots allowed or not possible: (?:/|^) - // - if dots possible and not allowed: (?:/|^)(?!\.) - // - // But it's better to have a simpler binding without a conditional, for - // performance, so probably better to return both start options. - // - // Then the caller just ignores the end if it's not the first pattern, - // and the start always gets applied. - // - // But that's always going to be $ if it's the ending pattern, or nothing, - // so the caller can just attach $ at the end of the pattern when building. - // - // So the todo is: - // - better detect what kind of start is needed - // - return both flavors of starting pattern - // - attach $ at the end of the pattern when creating the actual RegExp - // - // Ah, but wait, no, that all only applies to the root when the first pattern - // is not an extglob. If the first pattern IS an extglob, then we need all - // that dot prevention biz to live in the extglob portions, because eg - // +(*|.x*) can match .xy but not .yx. - // - // So, return the two flavors if it's #root and the first child is not an - // AST, otherwise leave it to the child AST to handle it, and there, - // use the (?:^|/) style of start binding. - // - // Even simplified further: - // - Since the start for a join is eg /(?!\.) and the start for a part - // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root - // or start or whatever) and prepend ^ or / at the Regexp construction. - toRegExpSource(allowDot) { - const dot = allowDot ?? !!__privateGet(this, _options).dot; - if (__privateGet(this, _root) === this) - __privateMethod(this, _AST_instances, fillNegs_fn).call(this); - if (!this.type) { - const noEmpty = this.isStart() && this.isEnd(); - const src = __privateGet(this, _parts).map((p) => { - var _a3; - const [re, _, hasMagic2, uflag] = typeof p === "string" ? __privateMethod(_a3 = _AST, _AST_static, parseGlob_fn).call(_a3, p, __privateGet(this, _hasMagic), noEmpty) : p.toRegExpSource(allowDot); - __privateSet(this, _hasMagic, __privateGet(this, _hasMagic) || hasMagic2); - __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag); - return re; - }).join(""); - let start2 = ""; - if (this.isStart()) { - if (typeof __privateGet(this, _parts)[0] === "string") { - const dotTravAllowed = __privateGet(this, _parts).length === 1 && justDots.has(__privateGet(this, _parts)[0]); - if (!dotTravAllowed) { - const aps = addPatternStart; - const needNoTrav = ( - // dots are allowed, and the pattern starts with [ or . - dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or . - src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or . - src.startsWith("\\.\\.") && aps.has(src.charAt(4)) - ); - const needNoDot = !dot && !allowDot && aps.has(src.charAt(0)); - start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ""; - } - } - } - let end = ""; - if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && __privateGet(this, _parent)?.type === "!") { - end = "(?:$|\\/)"; - } - const final2 = start2 + src + end; - return [ - final2, - unescape(src), - __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)), - __privateGet(this, _uflag) - ]; - } - const repeated = this.type === "*" || this.type === "+"; - const start = this.type === "!" ? "(?:(?!(?:" : "(?:"; - let body = __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, dot); - if (this.isStart() && this.isEnd() && !body && this.type !== "!") { - const s = this.toString(); - __privateSet(this, _parts, [s]); - this.type = null; - __privateSet(this, _hasMagic, void 0); - return [s, unescape(this.toString()), false, false]; - } - let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, true); - if (bodyDotAllowed === body) { - bodyDotAllowed = ""; - } - if (bodyDotAllowed) { - body = `(?:${body})(?:${bodyDotAllowed})*?`; - } - let final = ""; - if (this.type === "!" && __privateGet(this, _emptyExt)) { - final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty; - } else { - const close = this.type === "!" ? ( - // !() must match something,but !(x) can match '' - "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")" - ) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`; - final = start + body + close; - } - return [ - final, - unescape(body), - __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)), - __privateGet(this, _uflag) - ]; - } -}; -_root = new WeakMap(); -_hasMagic = new WeakMap(); -_uflag = new WeakMap(); -_parts = new WeakMap(); -_parent = new WeakMap(); -_parentIndex = new WeakMap(); -_negs = new WeakMap(); -_filledNegs = new WeakMap(); -_options = new WeakMap(); -_toString = new WeakMap(); -_emptyExt = new WeakMap(); -_AST_instances = new WeakSet(); -fillNegs_fn = function() { - if (this !== __privateGet(this, _root)) - throw new Error("should only call on root"); - if (__privateGet(this, _filledNegs)) - return this; - this.toString(); - __privateSet(this, _filledNegs, true); - let n; - while (n = __privateGet(this, _negs).pop()) { - if (n.type !== "!") - continue; - let p = n; - let pp = __privateGet(p, _parent); - while (pp) { - for (let i = __privateGet(p, _parentIndex) + 1; !pp.type && i < __privateGet(pp, _parts).length; i++) { - for (const part of __privateGet(n, _parts)) { - if (typeof part === "string") { - throw new Error("string part in extglob AST??"); - } - part.copyIn(__privateGet(pp, _parts)[i]); - } - } - p = pp; - pp = __privateGet(p, _parent); - } - } - return this; -}; -_AST_static = new WeakSet(); -parseAST_fn = function(str, ast, pos, opt) { - var _a3, _b3; - let escaping = false; - let inBrace = false; - let braceStart = -1; - let braceNeg = false; - if (ast.type === null) { - let i2 = pos; - let acc2 = ""; - while (i2 < str.length) { - const c = str.charAt(i2++); - if (escaping || c === "\\") { - escaping = !escaping; - acc2 += c; - continue; - } - if (inBrace) { - if (i2 === braceStart + 1) { - if (c === "^" || c === "!") { - braceNeg = true; - } - } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) { - inBrace = false; - } - acc2 += c; - continue; - } else if (c === "[") { - inBrace = true; - braceStart = i2; - braceNeg = false; - acc2 += c; - continue; - } - if (!opt.noext && isExtglobType(c) && str.charAt(i2) === "(") { - ast.push(acc2); - acc2 = ""; - const ext2 = new _AST(c, ast); - i2 = __privateMethod(_a3 = _AST, _AST_static, parseAST_fn).call(_a3, str, ext2, i2, opt); - ast.push(ext2); - continue; - } - acc2 += c; - } - ast.push(acc2); - return i2; - } - let i = pos + 1; - let part = new _AST(null, ast); - const parts = []; - let acc = ""; - while (i < str.length) { - const c = str.charAt(i++); - if (escaping || c === "\\") { - escaping = !escaping; - acc += c; - continue; - } - if (inBrace) { - if (i === braceStart + 1) { - if (c === "^" || c === "!") { - braceNeg = true; - } - } else if (c === "]" && !(i === braceStart + 2 && braceNeg)) { - inBrace = false; - } - acc += c; - continue; - } else if (c === "[") { - inBrace = true; - braceStart = i; - braceNeg = false; - acc += c; - continue; - } - if (isExtglobType(c) && str.charAt(i) === "(") { - part.push(acc); - acc = ""; - const ext2 = new _AST(c, part); - part.push(ext2); - i = __privateMethod(_b3 = _AST, _AST_static, parseAST_fn).call(_b3, str, ext2, i, opt); - continue; - } - if (c === "|") { - part.push(acc); - acc = ""; - parts.push(part); - part = new _AST(null, ast); - continue; - } - if (c === ")") { - if (acc === "" && __privateGet(ast, _parts).length === 0) { - __privateSet(ast, _emptyExt, true); - } - part.push(acc); - acc = ""; - ast.push(...parts, part); - return i; - } - acc += c; - } - ast.type = null; - __privateSet(ast, _hasMagic, void 0); - __privateSet(ast, _parts, [str.substring(pos - 1)]); - return i; -}; -partsToRegExp_fn = function(dot) { - return __privateGet(this, _parts).map((p) => { - if (typeof p === "string") { - throw new Error("string type in extglob ast??"); - } - const [re, _, _hasMagic2, uflag] = p.toRegExpSource(dot); - __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag); - return re; - }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|"); -}; -parseGlob_fn = function(glob2, hasMagic2, noEmpty = false) { - let escaping = false; - let re = ""; - let uflag = false; - for (let i = 0; i < glob2.length; i++) { - const c = glob2.charAt(i); - if (escaping) { - escaping = false; - re += (reSpecials.has(c) ? "\\" : "") + c; - continue; - } - if (c === "\\") { - if (i === glob2.length - 1) { - re += "\\\\"; - } else { - escaping = true; - } - continue; - } - if (c === "[") { - const [src, needUflag, consumed, magic] = parseClass(glob2, i); - if (consumed) { - re += src; - uflag = uflag || needUflag; - i += consumed - 1; - hasMagic2 = hasMagic2 || magic; - continue; - } - } - if (c === "*") { - if (noEmpty && glob2 === "*") - re += starNoEmpty; - else - re += star; - hasMagic2 = true; - continue; - } - if (c === "?") { - re += qmark; - hasMagic2 = true; - continue; - } - re += regExpEscape(c); - } - return [re, unescape(glob2), !!hasMagic2, uflag]; -}; -__privateAdd(_AST, _AST_static); -var AST = _AST; - -// node_modules/minimatch/dist/esm/escape.js -var escape = (s, { windowsPathsNoEscape = false } = {}) => { - return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&"); -}; - -// node_modules/minimatch/dist/esm/index.js -var minimatch = (p, pattern, options = {}) => { - assertValidPattern(pattern); - if (!options.nocomment && pattern.charAt(0) === "#") { - return false; - } - return new Minimatch(pattern, options).match(p); -}; -var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; -var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2); -var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2); -var starDotExtTestNocase = (ext2) => { - ext2 = ext2.toLowerCase(); - return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2); -}; -var starDotExtTestNocaseDot = (ext2) => { - ext2 = ext2.toLowerCase(); - return (f) => f.toLowerCase().endsWith(ext2); -}; -var starDotStarRE = /^\*+\.\*+$/; -var starDotStarTest = (f) => !f.startsWith(".") && f.includes("."); -var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes("."); -var dotStarRE = /^\.\*+$/; -var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith("."); -var starRE = /^\*+$/; -var starTest = (f) => f.length !== 0 && !f.startsWith("."); -var starTestDot = (f) => f.length !== 0 && f !== "." && f !== ".."; -var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; -var qmarksTestNocase = ([$0, ext2 = ""]) => { - const noext = qmarksTestNoExt([$0]); - if (!ext2) - return noext; - ext2 = ext2.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext2); -}; -var qmarksTestNocaseDot = ([$0, ext2 = ""]) => { - const noext = qmarksTestNoExtDot([$0]); - if (!ext2) - return noext; - ext2 = ext2.toLowerCase(); - return (f) => noext(f) && f.toLowerCase().endsWith(ext2); -}; -var qmarksTestDot = ([$0, ext2 = ""]) => { - const noext = qmarksTestNoExtDot([$0]); - return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); -}; -var qmarksTest = ([$0, ext2 = ""]) => { - const noext = qmarksTestNoExt([$0]); - return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2); -}; -var qmarksTestNoExt = ([$0]) => { - const len = $0.length; - return (f) => f.length === len && !f.startsWith("."); -}; -var qmarksTestNoExtDot = ([$0]) => { - const len = $0.length; - return (f) => f.length === len && f !== "." && f !== ".."; -}; -var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix"; -var path2 = { - win32: { sep: "\\" }, - posix: { sep: "/" } -}; -var sep = defaultPlatform === "win32" ? path2.win32.sep : path2.posix.sep; -minimatch.sep = sep; -var GLOBSTAR = Symbol("globstar **"); -minimatch.GLOBSTAR = GLOBSTAR; -var qmark2 = "[^/]"; -var star2 = qmark2 + "*?"; -var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; -var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; -var filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options); -minimatch.filter = filter; -var ext = (a, b = {}) => Object.assign({}, a, b); -var defaults = (def) => { - if (!def || typeof def !== "object" || !Object.keys(def).length) { - return minimatch; - } - const orig = minimatch; - const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options)); - return Object.assign(m, { - Minimatch: class Minimatch extends orig.Minimatch { - constructor(pattern, options = {}) { - super(pattern, ext(def, options)); - } - static defaults(options) { - return orig.defaults(ext(def, options)).Minimatch; - } - }, - AST: class AST extends orig.AST { - /* c8 ignore start */ - constructor(type, parent, options = {}) { - super(type, parent, ext(def, options)); - } - /* c8 ignore stop */ - static fromGlob(pattern, options = {}) { - return orig.AST.fromGlob(pattern, ext(def, options)); - } - }, - unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), - escape: (s, options = {}) => orig.escape(s, ext(def, options)), - filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), - defaults: (options) => orig.defaults(ext(def, options)), - makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), - braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), - match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), - sep: orig.sep, - GLOBSTAR - }); -}; -minimatch.defaults = defaults; -var braceExpand = (pattern, options = {}) => { - assertValidPattern(pattern); - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - return [pattern]; - } - return (0, import_brace_expansion.default)(pattern); -}; -minimatch.braceExpand = braceExpand; -var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); -minimatch.makeRe = makeRe; -var match = (list, pattern, options = {}) => { - const mm = new Minimatch(pattern, options); - list = list.filter((f) => mm.match(f)); - if (mm.options.nonull && !list.length) { - list.push(pattern); - } - return list; -}; -minimatch.match = match; -var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; -var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); -var Minimatch = class { - constructor(pattern, options = {}) { - __publicField(this, "options"); - __publicField(this, "set"); - __publicField(this, "pattern"); - __publicField(this, "windowsPathsNoEscape"); - __publicField(this, "nonegate"); - __publicField(this, "negate"); - __publicField(this, "comment"); - __publicField(this, "empty"); - __publicField(this, "preserveMultipleSlashes"); - __publicField(this, "partial"); - __publicField(this, "globSet"); - __publicField(this, "globParts"); - __publicField(this, "nocase"); - __publicField(this, "isWindows"); - __publicField(this, "platform"); - __publicField(this, "windowsNoMagicRoot"); - __publicField(this, "regexp"); - assertValidPattern(pattern); - options = options || {}; - this.options = options; - this.pattern = pattern; - this.platform = options.platform || defaultPlatform; - this.isWindows = this.platform === "win32"; - this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; - if (this.windowsPathsNoEscape) { - this.pattern = this.pattern.replace(/\\/g, "/"); - } - this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; - this.regexp = null; - this.negate = false; - this.nonegate = !!options.nonegate; - this.comment = false; - this.empty = false; - this.partial = !!options.partial; - this.nocase = !!this.options.nocase; - this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase); - this.globSet = []; - this.globParts = []; - this.set = []; - this.make(); - } - hasMagic() { - if (this.options.magicalBraces && this.set.length > 1) { - return true; - } - for (const pattern of this.set) { - for (const part of pattern) { - if (typeof part !== "string") - return true; - } - } - return false; - } - debug(..._) { - } - make() { - const pattern = this.pattern; - const options = this.options; - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true; - return; - } - if (!pattern) { - this.empty = true; - return; - } - this.parseNegate(); - this.globSet = [...new Set(this.braceExpand())]; - if (options.debug) { - this.debug = (...args) => console.error(...args); - } - this.debug(this.pattern, this.globSet); - const rawGlobParts = this.globSet.map((s) => this.slashSplit(s)); - this.globParts = this.preprocess(rawGlobParts); - this.debug(this.pattern, this.globParts); - let set = this.globParts.map((s, _, __) => { - if (this.isWindows && this.windowsNoMagicRoot) { - const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]); - const isDrive = /^[a-z]:/i.test(s[0]); - if (isUNC) { - return [...s.slice(0, 4), ...s.slice(4).map((ss) => this.parse(ss))]; - } else if (isDrive) { - return [s[0], ...s.slice(1).map((ss) => this.parse(ss))]; - } - } - return s.map((ss) => this.parse(ss)); - }); - this.debug(this.pattern, set); - this.set = set.filter((s) => s.indexOf(false) === -1); - if (this.isWindows) { - for (let i = 0; i < this.set.length; i++) { - const p = this.set[i]; - if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) { - p[2] = "?"; - } - } - } - this.debug(this.pattern, this.set); - } - // various transforms to equivalent pattern sets that are - // faster to process in a filesystem walk. The goal is to - // eliminate what we can, and push all ** patterns as far - // to the right as possible, even if it increases the number - // of patterns that we have to process. - preprocess(globParts) { - if (this.options.noglobstar) { - for (let i = 0; i < globParts.length; i++) { - for (let j = 0; j < globParts[i].length; j++) { - if (globParts[i][j] === "**") { - globParts[i][j] = "*"; - } - } - } - } - const { optimizationLevel = 1 } = this.options; - if (optimizationLevel >= 2) { - globParts = this.firstPhasePreProcess(globParts); - globParts = this.secondPhasePreProcess(globParts); - } else if (optimizationLevel >= 1) { - globParts = this.levelOneOptimize(globParts); - } else { - globParts = this.adjascentGlobstarOptimize(globParts); - } - return globParts; - } - // just get rid of adjascent ** portions - adjascentGlobstarOptimize(globParts) { - return globParts.map((parts) => { - let gs = -1; - while (-1 !== (gs = parts.indexOf("**", gs + 1))) { - let i = gs; - while (parts[i + 1] === "**") { - i++; - } - if (i !== gs) { - parts.splice(gs, i - gs); - } - } - return parts; - }); - } - // get rid of adjascent ** and resolve .. portions - levelOneOptimize(globParts) { - return globParts.map((parts) => { - parts = parts.reduce((set, part) => { - const prev = set[set.length - 1]; - if (part === "**" && prev === "**") { - return set; - } - if (part === "..") { - if (prev && prev !== ".." && prev !== "." && prev !== "**") { - set.pop(); - return set; - } - } - set.push(part); - return set; - }, []); - return parts.length === 0 ? [""] : parts; - }); - } - levelTwoFileOptimize(parts) { - if (!Array.isArray(parts)) { - parts = this.slashSplit(parts); - } - let didSomething = false; - do { - didSomething = false; - if (!this.preserveMultipleSlashes) { - for (let i = 1; i < parts.length - 1; i++) { - const p = parts[i]; - if (i === 1 && p === "" && parts[0] === "") - continue; - if (p === "." || p === "") { - didSomething = true; - parts.splice(i, 1); - i--; - } - } - if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) { - didSomething = true; - parts.pop(); - } - } - let dd = 0; - while (-1 !== (dd = parts.indexOf("..", dd + 1))) { - const p = parts[dd - 1]; - if (p && p !== "." && p !== ".." && p !== "**") { - didSomething = true; - parts.splice(dd - 1, 2); - dd -= 2; - } - } - } while (didSomething); - return parts.length === 0 ? [""] : parts; - } - // First phase: single-pattern processing - //
 is 1 or more portions
-  //  is 1 or more portions
-  // 

is any portion other than ., .., '', or ** - // is . or '' - // - // **/.. is *brutal* for filesystem walking performance, because - // it effectively resets the recursive walk each time it occurs, - // and ** cannot be reduced out by a .. pattern part like a regexp - // or most strings (other than .., ., and '') can be. - // - //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} - //

// -> 
/
-  // 
/

/../ ->

/
-  // **/**/ -> **/
-  //
-  // **/*/ -> */**/ <== not valid because ** doesn't follow
-  // this WOULD be allowed if ** did follow symlinks, or * didn't
-  firstPhasePreProcess(globParts) {
-    let didSomething = false;
-    do {
-      didSomething = false;
-      for (let parts of globParts) {
-        let gs = -1;
-        while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
-          let gss = gs;
-          while (parts[gss + 1] === "**") {
-            gss++;
-          }
-          if (gss > gs) {
-            parts.splice(gs + 1, gss - gs);
-          }
-          let next = parts[gs + 1];
-          const p = parts[gs + 2];
-          const p2 = parts[gs + 3];
-          if (next !== "..")
-            continue;
-          if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
-            continue;
-          }
-          didSomething = true;
-          parts.splice(gs, 1);
-          const other = parts.slice(0);
-          other[gs] = "**";
-          globParts.push(other);
-          gs--;
-        }
-        if (!this.preserveMultipleSlashes) {
-          for (let i = 1; i < parts.length - 1; i++) {
-            const p = parts[i];
-            if (i === 1 && p === "" && parts[0] === "")
-              continue;
-            if (p === "." || p === "") {
-              didSomething = true;
-              parts.splice(i, 1);
-              i--;
-            }
-          }
-          if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
-            didSomething = true;
-            parts.pop();
-          }
-        }
-        let dd = 0;
-        while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
-          const p = parts[dd - 1];
-          if (p && p !== "." && p !== ".." && p !== "**") {
-            didSomething = true;
-            const needDot = dd === 1 && parts[dd + 1] === "**";
-            const splin = needDot ? ["."] : [];
-            parts.splice(dd - 1, 2, ...splin);
-            if (parts.length === 0)
-              parts.push("");
-            dd -= 2;
-          }
-        }
-      }
-    } while (didSomething);
-    return globParts;
-  }
-  // second phase: multi-pattern dedupes
-  // {
/*/,
/

/} ->

/*/
-  // {
/,
/} -> 
/
-  // {
/**/,
/} -> 
/**/
-  //
-  // {
/**/,
/**/

/} ->

/**/
-  // ^-- not valid because ** doens't follow symlinks
-  secondPhasePreProcess(globParts) {
-    for (let i = 0; i < globParts.length - 1; i++) {
-      for (let j = i + 1; j < globParts.length; j++) {
-        const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
-        if (matched) {
-          globParts[i] = [];
-          globParts[j] = matched;
-          break;
-        }
-      }
-    }
-    return globParts.filter((gs) => gs.length);
-  }
-  partsMatch(a, b, emptyGSMatch = false) {
-    let ai = 0;
-    let bi = 0;
-    let result = [];
-    let which = "";
-    while (ai < a.length && bi < b.length) {
-      if (a[ai] === b[bi]) {
-        result.push(which === "b" ? b[bi] : a[ai]);
-        ai++;
-        bi++;
-      } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
-        result.push(a[ai]);
-        ai++;
-      } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
-        result.push(b[bi]);
-        bi++;
-      } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
-        if (which === "b")
-          return false;
-        which = "a";
-        result.push(a[ai]);
-        ai++;
-        bi++;
-      } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
-        if (which === "a")
-          return false;
-        which = "b";
-        result.push(b[bi]);
-        ai++;
-        bi++;
-      } else {
-        return false;
-      }
-    }
-    return a.length === b.length && result;
-  }
-  parseNegate() {
-    if (this.nonegate)
-      return;
-    const pattern = this.pattern;
-    let negate = false;
-    let negateOffset = 0;
-    for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
-      negate = !negate;
-      negateOffset++;
-    }
-    if (negateOffset)
-      this.pattern = pattern.slice(negateOffset);
-    this.negate = negate;
-  }
-  // set partial to true to test if, for example,
-  // "/a/b" matches the start of "/*/b/*/d"
-  // Partial means, if you run out of file before you run
-  // out of pattern, then that's fine, as long as all
-  // the parts match.
-  matchOne(file, pattern, partial = false) {
-    const options = this.options;
-    if (this.isWindows) {
-      const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
-      const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
-      const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
-      const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
-      const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
-      const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
-      if (typeof fdi === "number" && typeof pdi === "number") {
-        const [fd, pd] = [file[fdi], pattern[pdi]];
-        if (fd.toLowerCase() === pd.toLowerCase()) {
-          pattern[pdi] = fd;
-          if (pdi > fdi) {
-            pattern = pattern.slice(pdi);
-          } else if (fdi > pdi) {
-            file = file.slice(fdi);
-          }
-        }
-      }
-    }
-    const { optimizationLevel = 1 } = this.options;
-    if (optimizationLevel >= 2) {
-      file = this.levelTwoFileOptimize(file);
-    }
-    this.debug("matchOne", this, { file, pattern });
-    this.debug("matchOne", file.length, pattern.length);
-    for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
-      this.debug("matchOne loop");
-      var p = pattern[pi];
-      var f = file[fi];
-      this.debug(pattern, p, f);
-      if (p === false) {
-        return false;
-      }
-      if (p === GLOBSTAR) {
-        this.debug("GLOBSTAR", [pattern, p, f]);
-        var fr = fi;
-        var pr = pi + 1;
-        if (pr === pl) {
-          this.debug("** at the end");
-          for (; fi < fl; fi++) {
-            if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".")
-              return false;
-          }
-          return true;
-        }
-        while (fr < fl) {
-          var swallowee = file[fr];
-          this.debug("\nglobstar while", file, fr, pattern, pr, swallowee);
-          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-            this.debug("globstar found match!", fr, fl, swallowee);
-            return true;
-          } else {
-            if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
-              this.debug("dot detected!", file, fr, pattern, pr);
-              break;
-            }
-            this.debug("globstar swallow a segment, and continue");
-            fr++;
-          }
-        }
-        if (partial) {
-          this.debug("\n>>> no match, partial?", file, fr, pattern, pr);
-          if (fr === fl) {
-            return true;
-          }
-        }
-        return false;
-      }
-      let hit;
-      if (typeof p === "string") {
-        hit = f === p;
-        this.debug("string match", p, f, hit);
-      } else {
-        hit = p.test(f);
-        this.debug("pattern match", p, f, hit);
-      }
-      if (!hit)
-        return false;
-    }
-    if (fi === fl && pi === pl) {
-      return true;
-    } else if (fi === fl) {
-      return partial;
-    } else if (pi === pl) {
-      return fi === fl - 1 && file[fi] === "";
-    } else {
-      throw new Error("wtf?");
-    }
-  }
-  braceExpand() {
-    return braceExpand(this.pattern, this.options);
-  }
-  parse(pattern) {
-    assertValidPattern(pattern);
-    const options = this.options;
-    if (pattern === "**")
-      return GLOBSTAR;
-    if (pattern === "")
-      return "";
-    let m;
-    let fastTest = null;
-    if (m = pattern.match(starRE)) {
-      fastTest = options.dot ? starTestDot : starTest;
-    } else if (m = pattern.match(starDotExtRE)) {
-      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
-    } else if (m = pattern.match(qmarksRE)) {
-      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
-    } else if (m = pattern.match(starDotStarRE)) {
-      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
-    } else if (m = pattern.match(dotStarRE)) {
-      fastTest = dotStarTest;
-    }
-    const re = AST.fromGlob(pattern, this.options).toMMPattern();
-    if (fastTest && typeof re === "object") {
-      Reflect.defineProperty(re, "test", { value: fastTest });
-    }
-    return re;
-  }
-  makeRe() {
-    if (this.regexp || this.regexp === false)
-      return this.regexp;
-    const set = this.set;
-    if (!set.length) {
-      this.regexp = false;
-      return this.regexp;
-    }
-    const options = this.options;
-    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
-    const flags = new Set(options.nocase ? ["i"] : []);
-    let re = set.map((pattern) => {
-      const pp = pattern.map((p) => {
-        if (p instanceof RegExp) {
-          for (const f of p.flags.split(""))
-            flags.add(f);
-        }
-        return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
-      });
-      pp.forEach((p, i) => {
-        const next = pp[i + 1];
-        const prev = pp[i - 1];
-        if (p !== GLOBSTAR || prev === GLOBSTAR) {
-          return;
-        }
-        if (prev === void 0) {
-          if (next !== void 0 && next !== GLOBSTAR) {
-            pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
-          } else {
-            pp[i] = twoStar;
-          }
-        } else if (next === void 0) {
-          pp[i - 1] = prev + "(?:\\/|" + twoStar + ")?";
-        } else if (next !== GLOBSTAR) {
-          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
-          pp[i + 1] = GLOBSTAR;
-        }
-      });
-      return pp.filter((p) => p !== GLOBSTAR).join("/");
-    }).join("|");
-    const [open, close] = set.length > 1 ? ["(?:", ")"] : ["", ""];
-    re = "^" + open + re + close + "$";
-    if (this.negate)
-      re = "^(?!" + re + ").+$";
-    try {
-      this.regexp = new RegExp(re, [...flags].join(""));
-    } catch (ex) {
-      this.regexp = false;
-    }
-    return this.regexp;
-  }
-  slashSplit(p) {
-    if (this.preserveMultipleSlashes) {
-      return p.split("/");
-    } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
-      return ["", ...p.split(/\/+/)];
-    } else {
-      return p.split(/\/+/);
-    }
-  }
-  match(f, partial = this.partial) {
-    this.debug("match", f, this.pattern);
-    if (this.comment) {
-      return false;
-    }
-    if (this.empty) {
-      return f === "";
-    }
-    if (f === "/" && partial) {
-      return true;
-    }
-    const options = this.options;
-    if (this.isWindows) {
-      f = f.split("\\").join("/");
-    }
-    const ff = this.slashSplit(f);
-    this.debug(this.pattern, "split", ff);
-    const set = this.set;
-    this.debug(this.pattern, "set", set);
-    let filename = ff[ff.length - 1];
-    if (!filename) {
-      for (let i = ff.length - 2; !filename && i >= 0; i--) {
-        filename = ff[i];
-      }
-    }
-    for (let i = 0; i < set.length; i++) {
-      const pattern = set[i];
-      let file = ff;
-      if (options.matchBase && pattern.length === 1) {
-        file = [filename];
-      }
-      const hit = this.matchOne(file, pattern, partial);
-      if (hit) {
-        if (options.flipNegate) {
-          return true;
-        }
-        return !this.negate;
-      }
-    }
-    if (options.flipNegate) {
-      return false;
-    }
-    return this.negate;
-  }
-  static defaults(def) {
-    return minimatch.defaults(def).Minimatch;
-  }
-};
-minimatch.AST = AST;
-minimatch.Minimatch = Minimatch;
-minimatch.escape = escape;
-minimatch.unescape = unescape;
-
-// node_modules/glob/dist/esm/glob.js
-import { fileURLToPath as fileURLToPath2 } from "node:url";
-
-// node_modules/lru-cache/dist/esm/index.js
-var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date;
-var warned = /* @__PURE__ */ new Set();
-var PROCESS = typeof process === "object" && !!process ? process : {};
-var emitWarning = (msg, type, code, fn) => {
-  typeof PROCESS.emitWarning === "function" ? PROCESS.emitWarning(msg, type, code, fn) : console.error(`[${code}] ${type}: ${msg}`);
-};
-var AC = globalThis.AbortController;
-var AS = globalThis.AbortSignal;
-if (typeof AC === "undefined") {
-  AS = class AbortSignal {
-    constructor() {
-      __publicField(this, "onabort");
-      __publicField(this, "_onabort", []);
-      __publicField(this, "reason");
-      __publicField(this, "aborted", false);
-    }
-    addEventListener(_, fn) {
-      this._onabort.push(fn);
-    }
-  };
-  AC = class AbortController {
-    constructor() {
-      __publicField(this, "signal", new AS());
-      warnACPolyfill();
-    }
-    abort(reason) {
-      if (this.signal.aborted)
-        return;
-      this.signal.reason = reason;
-      this.signal.aborted = true;
-      for (const fn of this.signal._onabort) {
-        fn(reason);
-      }
-      this.signal.onabort?.(reason);
-    }
-  };
-  let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== "1";
-  const warnACPolyfill = () => {
-    if (!printACPolyfillWarning)
-      return;
-    printACPolyfillWarning = false;
-    emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.", "NO_ABORT_CONTROLLER", "ENOTSUP", warnACPolyfill);
-  };
-}
-var shouldWarn = (code) => !warned.has(code);
-var TYPE = Symbol("type");
-var isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
-var getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null;
-var ZeroArray = class extends Array {
-  constructor(size) {
-    super(size);
-    this.fill(0);
-  }
-};
-var _constructing;
-var _Stack = class _Stack {
-  constructor(max, HeapCls) {
-    __publicField(this, "heap");
-    __publicField(this, "length");
-    if (!__privateGet(_Stack, _constructing)) {
-      throw new TypeError("instantiate Stack using Stack.create(n)");
-    }
-    this.heap = new HeapCls(max);
-    this.length = 0;
-  }
-  static create(max) {
-    const HeapCls = getUintArray(max);
-    if (!HeapCls)
-      return [];
-    __privateSet(_Stack, _constructing, true);
-    const s = new _Stack(max, HeapCls);
-    __privateSet(_Stack, _constructing, false);
-    return s;
-  }
-  push(n) {
-    this.heap[this.length++] = n;
-  }
-  pop() {
-    return this.heap[--this.length];
-  }
-};
-_constructing = new WeakMap();
-// private constructor
-__privateAdd(_Stack, _constructing, false);
-var Stack = _Stack;
-var _a, _b, _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _memoMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _LRUCache_instances, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, indexes_fn, rindexes_fn, isValidIndex_fn, evict_fn, backgroundFetch_fn, isBackgroundFetch_fn, connect_fn, moveToTail_fn, delete_fn, clear_fn;
-var _LRUCache = class _LRUCache {
-  constructor(options) {
-    __privateAdd(this, _LRUCache_instances);
-    // options that cannot be changed without disaster
-    __privateAdd(this, _max);
-    __privateAdd(this, _maxSize);
-    __privateAdd(this, _dispose);
-    __privateAdd(this, _disposeAfter);
-    __privateAdd(this, _fetchMethod);
-    __privateAdd(this, _memoMethod);
-    /**
-     * {@link LRUCache.OptionsBase.ttl}
-     */
-    __publicField(this, "ttl");
-    /**
-     * {@link LRUCache.OptionsBase.ttlResolution}
-     */
-    __publicField(this, "ttlResolution");
-    /**
-     * {@link LRUCache.OptionsBase.ttlAutopurge}
-     */
-    __publicField(this, "ttlAutopurge");
-    /**
-     * {@link LRUCache.OptionsBase.updateAgeOnGet}
-     */
-    __publicField(this, "updateAgeOnGet");
-    /**
-     * {@link LRUCache.OptionsBase.updateAgeOnHas}
-     */
-    __publicField(this, "updateAgeOnHas");
-    /**
-     * {@link LRUCache.OptionsBase.allowStale}
-     */
-    __publicField(this, "allowStale");
-    /**
-     * {@link LRUCache.OptionsBase.noDisposeOnSet}
-     */
-    __publicField(this, "noDisposeOnSet");
-    /**
-     * {@link LRUCache.OptionsBase.noUpdateTTL}
-     */
-    __publicField(this, "noUpdateTTL");
-    /**
-     * {@link LRUCache.OptionsBase.maxEntrySize}
-     */
-    __publicField(this, "maxEntrySize");
-    /**
-     * {@link LRUCache.OptionsBase.sizeCalculation}
-     */
-    __publicField(this, "sizeCalculation");
-    /**
-     * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
-     */
-    __publicField(this, "noDeleteOnFetchRejection");
-    /**
-     * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
-     */
-    __publicField(this, "noDeleteOnStaleGet");
-    /**
-     * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
-     */
-    __publicField(this, "allowStaleOnFetchAbort");
-    /**
-     * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
-     */
-    __publicField(this, "allowStaleOnFetchRejection");
-    /**
-     * {@link LRUCache.OptionsBase.ignoreFetchAbort}
-     */
-    __publicField(this, "ignoreFetchAbort");
-    // computed properties
-    __privateAdd(this, _size);
-    __privateAdd(this, _calculatedSize);
-    __privateAdd(this, _keyMap);
-    __privateAdd(this, _keyList);
-    __privateAdd(this, _valList);
-    __privateAdd(this, _next);
-    __privateAdd(this, _prev);
-    __privateAdd(this, _head);
-    __privateAdd(this, _tail);
-    __privateAdd(this, _free);
-    __privateAdd(this, _disposed);
-    __privateAdd(this, _sizes);
-    __privateAdd(this, _starts);
-    __privateAdd(this, _ttls);
-    __privateAdd(this, _hasDispose);
-    __privateAdd(this, _hasFetchMethod);
-    __privateAdd(this, _hasDisposeAfter);
-    // conditionally set private methods related to TTL
-    __privateAdd(this, _updateItemAge, () => {
-    });
-    __privateAdd(this, _statusTTL, () => {
-    });
-    __privateAdd(this, _setItemTTL, () => {
-    });
-    /* c8 ignore stop */
-    __privateAdd(this, _isStale, () => false);
-    __privateAdd(this, _removeItemSize, (_i2) => {
-    });
-    __privateAdd(this, _addItemSize, (_i2, _s2, _st) => {
-    });
-    __privateAdd(this, _requireSize, (_k2, _v, size, sizeCalculation) => {
-      if (size || sizeCalculation) {
-        throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");
-      }
-      return 0;
-    });
-    /**
-     * A String value that is used in the creation of the default string
-     * description of an object. Called by the built-in method
-     * `Object.prototype.toString`.
-     */
-    __publicField(this, _a, "LRUCache");
-    const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options;
-    if (max !== 0 && !isPosInt(max)) {
-      throw new TypeError("max option must be a nonnegative integer");
-    }
-    const UintArray = max ? getUintArray(max) : Array;
-    if (!UintArray) {
-      throw new Error("invalid max value: " + max);
-    }
-    __privateSet(this, _max, max);
-    __privateSet(this, _maxSize, maxSize);
-    this.maxEntrySize = maxEntrySize || __privateGet(this, _maxSize);
-    this.sizeCalculation = sizeCalculation;
-    if (this.sizeCalculation) {
-      if (!__privateGet(this, _maxSize) && !this.maxEntrySize) {
-        throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");
-      }
-      if (typeof this.sizeCalculation !== "function") {
-        throw new TypeError("sizeCalculation set to non-function");
-      }
-    }
-    if (memoMethod !== void 0 && typeof memoMethod !== "function") {
-      throw new TypeError("memoMethod must be a function if defined");
-    }
-    __privateSet(this, _memoMethod, memoMethod);
-    if (fetchMethod !== void 0 && typeof fetchMethod !== "function") {
-      throw new TypeError("fetchMethod must be a function if specified");
-    }
-    __privateSet(this, _fetchMethod, fetchMethod);
-    __privateSet(this, _hasFetchMethod, !!fetchMethod);
-    __privateSet(this, _keyMap, /* @__PURE__ */ new Map());
-    __privateSet(this, _keyList, new Array(max).fill(void 0));
-    __privateSet(this, _valList, new Array(max).fill(void 0));
-    __privateSet(this, _next, new UintArray(max));
-    __privateSet(this, _prev, new UintArray(max));
-    __privateSet(this, _head, 0);
-    __privateSet(this, _tail, 0);
-    __privateSet(this, _free, Stack.create(max));
-    __privateSet(this, _size, 0);
-    __privateSet(this, _calculatedSize, 0);
-    if (typeof dispose === "function") {
-      __privateSet(this, _dispose, dispose);
-    }
-    if (typeof disposeAfter === "function") {
-      __privateSet(this, _disposeAfter, disposeAfter);
-      __privateSet(this, _disposed, []);
-    } else {
-      __privateSet(this, _disposeAfter, void 0);
-      __privateSet(this, _disposed, void 0);
-    }
-    __privateSet(this, _hasDispose, !!__privateGet(this, _dispose));
-    __privateSet(this, _hasDisposeAfter, !!__privateGet(this, _disposeAfter));
-    this.noDisposeOnSet = !!noDisposeOnSet;
-    this.noUpdateTTL = !!noUpdateTTL;
-    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
-    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
-    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
-    this.ignoreFetchAbort = !!ignoreFetchAbort;
-    if (this.maxEntrySize !== 0) {
-      if (__privateGet(this, _maxSize) !== 0) {
-        if (!isPosInt(__privateGet(this, _maxSize))) {
-          throw new TypeError("maxSize must be a positive integer if specified");
-        }
-      }
-      if (!isPosInt(this.maxEntrySize)) {
-        throw new TypeError("maxEntrySize must be a positive integer if specified");
-      }
-      __privateMethod(this, _LRUCache_instances, initializeSizeTracking_fn).call(this);
-    }
-    this.allowStale = !!allowStale;
-    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
-    this.updateAgeOnGet = !!updateAgeOnGet;
-    this.updateAgeOnHas = !!updateAgeOnHas;
-    this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1;
-    this.ttlAutopurge = !!ttlAutopurge;
-    this.ttl = ttl || 0;
-    if (this.ttl) {
-      if (!isPosInt(this.ttl)) {
-        throw new TypeError("ttl must be a positive integer if specified");
-      }
-      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
-    }
-    if (__privateGet(this, _max) === 0 && this.ttl === 0 && __privateGet(this, _maxSize) === 0) {
-      throw new TypeError("At least one of max, maxSize, or ttl is required");
-    }
-    if (!this.ttlAutopurge && !__privateGet(this, _max) && !__privateGet(this, _maxSize)) {
-      const code = "LRU_CACHE_UNBOUNDED";
-      if (shouldWarn(code)) {
-        warned.add(code);
-        const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.";
-        emitWarning(msg, "UnboundedCacheWarning", code, _LRUCache);
-      }
-    }
-  }
-  /**
-   * Do not call this method unless you need to inspect the
-   * inner workings of the cache.  If anything returned by this
-   * object is modified in any way, strange breakage may occur.
-   *
-   * These fields are private for a reason!
-   *
-   * @internal
-   */
-  static unsafeExposeInternals(c) {
-    return {
-      // properties
-      starts: __privateGet(c, _starts),
-      ttls: __privateGet(c, _ttls),
-      sizes: __privateGet(c, _sizes),
-      keyMap: __privateGet(c, _keyMap),
-      keyList: __privateGet(c, _keyList),
-      valList: __privateGet(c, _valList),
-      next: __privateGet(c, _next),
-      prev: __privateGet(c, _prev),
-      get head() {
-        return __privateGet(c, _head);
-      },
-      get tail() {
-        return __privateGet(c, _tail);
-      },
-      free: __privateGet(c, _free),
-      // methods
-      isBackgroundFetch: (p) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, isBackgroundFetch_fn).call(_a3, p);
-      },
-      backgroundFetch: (k, index, options, context) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, backgroundFetch_fn).call(_a3, k, index, options, context);
-      },
-      moveToTail: (index) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, moveToTail_fn).call(_a3, index);
-      },
-      indexes: (options) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, indexes_fn).call(_a3, options);
-      },
-      rindexes: (options) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, rindexes_fn).call(_a3, options);
-      },
-      isStale: (index) => {
-        var _a3;
-        return __privateGet(_a3 = c, _isStale).call(_a3, index);
-      }
-    };
-  }
-  // Protected read-only members
-  /**
-   * {@link LRUCache.OptionsBase.max} (read-only)
-   */
-  get max() {
-    return __privateGet(this, _max);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.maxSize} (read-only)
-   */
-  get maxSize() {
-    return __privateGet(this, _maxSize);
-  }
-  /**
-   * The total computed size of items in the cache (read-only)
-   */
-  get calculatedSize() {
-    return __privateGet(this, _calculatedSize);
-  }
-  /**
-   * The number of items stored in the cache (read-only)
-   */
-  get size() {
-    return __privateGet(this, _size);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
-   */
-  get fetchMethod() {
-    return __privateGet(this, _fetchMethod);
-  }
-  get memoMethod() {
-    return __privateGet(this, _memoMethod);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.dispose} (read-only)
-   */
-  get dispose() {
-    return __privateGet(this, _dispose);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
-   */
-  get disposeAfter() {
-    return __privateGet(this, _disposeAfter);
-  }
-  /**
-   * Return the number of ms left in the item's TTL. If item is not in cache,
-   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.
-   */
-  getRemainingTTL(key) {
-    return __privateGet(this, _keyMap).has(key) ? Infinity : 0;
-  }
-  /**
-   * Return a generator yielding `[key, value]` pairs,
-   * in order from most recently used to least recently used.
-   */
-  *entries() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]];
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.entries}
-   *
-   * Return a generator yielding `[key, value]` pairs,
-   * in order from least recently used to most recently used.
-   */
-  *rentries() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]];
-      }
-    }
-  }
-  /**
-   * Return a generator yielding the keys in the cache,
-   * in order from most recently used to least recently used.
-   */
-  *keys() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const k = __privateGet(this, _keyList)[i];
-      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield k;
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.keys}
-   *
-   * Return a generator yielding the keys in the cache,
-   * in order from least recently used to most recently used.
-   */
-  *rkeys() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const k = __privateGet(this, _keyList)[i];
-      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield k;
-      }
-    }
-  }
-  /**
-   * Return a generator yielding the values in the cache,
-   * in order from most recently used to least recently used.
-   */
-  *values() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield __privateGet(this, _valList)[i];
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.values}
-   *
-   * Return a generator yielding the values in the cache,
-   * in order from least recently used to most recently used.
-   */
-  *rvalues() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield __privateGet(this, _valList)[i];
-      }
-    }
-  }
-  /**
-   * Iterating over the cache itself yields the same results as
-   * {@link LRUCache.entries}
-   */
-  [(_b = Symbol.iterator, _a = Symbol.toStringTag, _b)]() {
-    return this.entries();
-  }
-  /**
-   * Find a value for which the supplied fn method returns a truthy value,
-   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.
-   */
-  find(fn, getOptions = {}) {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      if (fn(value, __privateGet(this, _keyList)[i], this)) {
-        return this.get(__privateGet(this, _keyList)[i], getOptions);
-      }
-    }
-  }
-  /**
-   * Call the supplied function on each item in the cache, in order from most
-   * recently used to least recently used.
-   *
-   * `fn` is called as `fn(value, key, cache)`.
-   *
-   * If `thisp` is provided, function will be called in the `this`-context of
-   * the provided object, or the cache if no `thisp` object is provided.
-   *
-   * Does not update age or recenty of use, or iterate over stale values.
-   */
-  forEach(fn, thisp = this) {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      fn.call(thisp, value, __privateGet(this, _keyList)[i], this);
-    }
-  }
-  /**
-   * The same as {@link LRUCache.forEach} but items are iterated over in
-   * reverse order.  (ie, less recently used items are iterated over first.)
-   */
-  rforEach(fn, thisp = this) {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      fn.call(thisp, value, __privateGet(this, _keyList)[i], this);
-    }
-  }
-  /**
-   * Delete any stale entries. Returns true if anything was removed,
-   * false otherwise.
-   */
-  purgeStale() {
-    let deleted = false;
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
-      if (__privateGet(this, _isStale).call(this, i)) {
-        __privateMethod(this, _LRUCache_instances, delete_fn).call(this, __privateGet(this, _keyList)[i], "expire");
-        deleted = true;
-      }
-    }
-    return deleted;
-  }
-  /**
-   * Get the extended info about a given entry, to get its value, size, and
-   * TTL info simultaneously. Returns `undefined` if the key is not present.
-   *
-   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive
-   * serialization, the `start` value is always the current timestamp, and the
-   * `ttl` is a calculated remaining time to live (negative if expired).
-   *
-   * Always returns stale values, if their info is found in the cache, so be
-   * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})
-   * if relevant.
-   */
-  info(key) {
-    const i = __privateGet(this, _keyMap).get(key);
-    if (i === void 0)
-      return void 0;
-    const v = __privateGet(this, _valList)[i];
-    const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-    if (value === void 0)
-      return void 0;
-    const entry = { value };
-    if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-      const ttl = __privateGet(this, _ttls)[i];
-      const start = __privateGet(this, _starts)[i];
-      if (ttl && start) {
-        const remain = ttl - (perf.now() - start);
-        entry.ttl = remain;
-        entry.start = Date.now();
-      }
-    }
-    if (__privateGet(this, _sizes)) {
-      entry.size = __privateGet(this, _sizes)[i];
-    }
-    return entry;
-  }
-  /**
-   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
-   * passed to {@link LRLUCache#load}.
-   *
-   * The `start` fields are calculated relative to a portable `Date.now()`
-   * timestamp, even if `performance.now()` is available.
-   *
-   * Stale entries are always included in the `dump`, even if
-   * {@link LRUCache.OptionsBase.allowStale} is false.
-   *
-   * Note: this returns an actual array, not a generator, so it can be more
-   * easily passed around.
-   */
-  dump() {
-    const arr = [];
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this, { allowStale: true })) {
-      const key = __privateGet(this, _keyList)[i];
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0 || key === void 0)
-        continue;
-      const entry = { value };
-      if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-        entry.ttl = __privateGet(this, _ttls)[i];
-        const age = perf.now() - __privateGet(this, _starts)[i];
-        entry.start = Math.floor(Date.now() - age);
-      }
-      if (__privateGet(this, _sizes)) {
-        entry.size = __privateGet(this, _sizes)[i];
-      }
-      arr.unshift([key, entry]);
-    }
-    return arr;
-  }
-  /**
-   * Reset the cache and load in the items in entries in the order listed.
-   *
-   * The shape of the resulting cache may be different if the same options are
-   * not used in both caches.
-   *
-   * The `start` fields are assumed to be calculated relative to a portable
-   * `Date.now()` timestamp, even if `performance.now()` is available.
-   */
-  load(arr) {
-    this.clear();
-    for (const [key, entry] of arr) {
-      if (entry.start) {
-        const age = Date.now() - entry.start;
-        entry.start = perf.now() - age;
-      }
-      this.set(key, entry.value, entry);
-    }
-  }
-  /**
-   * Add a value to the cache.
-   *
-   * Note: if `undefined` is specified as a value, this is an alias for
-   * {@link LRUCache#delete}
-   *
-   * Fields on the {@link LRUCache.SetOptions} options param will override
-   * their corresponding values in the constructor options for the scope
-   * of this single `set()` operation.
-   *
-   * If `start` is provided, then that will set the effective start
-   * time for the TTL calculation. Note that this must be a previous
-   * value of `performance.now()` if supported, or a previous value of
-   * `Date.now()` if not.
-   *
-   * Options object may also include `size`, which will prevent
-   * calling the `sizeCalculation` function and just use the specified
-   * number if it is a positive integer, and `noDisposeOnSet` which
-   * will prevent calling a `dispose` function in the case of
-   * overwrites.
-   *
-   * If the `size` (or return value of `sizeCalculation`) for a given
-   * entry is greater than `maxEntrySize`, then the item will not be
-   * added to the cache.
-   *
-   * Will update the recency of the entry.
-   *
-   * If the value is `undefined`, then this is an alias for
-   * `cache.delete(key)`. `undefined` is never stored in the cache.
-   */
-  set(k, v, setOptions = {}) {
-    var _a3, _b3, _c2;
-    if (v === void 0) {
-      this.delete(k);
-      return this;
-    }
-    const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions;
-    let { noUpdateTTL = this.noUpdateTTL } = setOptions;
-    const size = __privateGet(this, _requireSize).call(this, k, v, setOptions.size || 0, sizeCalculation);
-    if (this.maxEntrySize && size > this.maxEntrySize) {
-      if (status) {
-        status.set = "miss";
-        status.maxEntrySizeExceeded = true;
-      }
-      __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "set");
-      return this;
-    }
-    let index = __privateGet(this, _size) === 0 ? void 0 : __privateGet(this, _keyMap).get(k);
-    if (index === void 0) {
-      index = __privateGet(this, _size) === 0 ? __privateGet(this, _tail) : __privateGet(this, _free).length !== 0 ? __privateGet(this, _free).pop() : __privateGet(this, _size) === __privateGet(this, _max) ? __privateMethod(this, _LRUCache_instances, evict_fn).call(this, false) : __privateGet(this, _size);
-      __privateGet(this, _keyList)[index] = k;
-      __privateGet(this, _valList)[index] = v;
-      __privateGet(this, _keyMap).set(k, index);
-      __privateGet(this, _next)[__privateGet(this, _tail)] = index;
-      __privateGet(this, _prev)[index] = __privateGet(this, _tail);
-      __privateSet(this, _tail, index);
-      __privateWrapper(this, _size)._++;
-      __privateGet(this, _addItemSize).call(this, index, size, status);
-      if (status)
-        status.set = "add";
-      noUpdateTTL = false;
-    } else {
-      __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-      const oldVal = __privateGet(this, _valList)[index];
-      if (v !== oldVal) {
-        if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal)) {
-          oldVal.__abortController.abort(new Error("replaced"));
-          const { __staleWhileFetching: s } = oldVal;
-          if (s !== void 0 && !noDisposeOnSet) {
-            if (__privateGet(this, _hasDispose)) {
-              (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, s, k, "set");
-            }
-            if (__privateGet(this, _hasDisposeAfter)) {
-              __privateGet(this, _disposed)?.push([s, k, "set"]);
-            }
-          }
-        } else if (!noDisposeOnSet) {
-          if (__privateGet(this, _hasDispose)) {
-            (_b3 = __privateGet(this, _dispose)) == null ? void 0 : _b3.call(this, oldVal, k, "set");
-          }
-          if (__privateGet(this, _hasDisposeAfter)) {
-            __privateGet(this, _disposed)?.push([oldVal, k, "set"]);
-          }
-        }
-        __privateGet(this, _removeItemSize).call(this, index);
-        __privateGet(this, _addItemSize).call(this, index, size, status);
-        __privateGet(this, _valList)[index] = v;
-        if (status) {
-          status.set = "replace";
-          const oldValue = oldVal && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal) ? oldVal.__staleWhileFetching : oldVal;
-          if (oldValue !== void 0)
-            status.oldValue = oldValue;
-        }
-      } else if (status) {
-        status.set = "update";
-      }
-    }
-    if (ttl !== 0 && !__privateGet(this, _ttls)) {
-      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
-    }
-    if (__privateGet(this, _ttls)) {
-      if (!noUpdateTTL) {
-        __privateGet(this, _setItemTTL).call(this, index, ttl, start);
-      }
-      if (status)
-        __privateGet(this, _statusTTL).call(this, status, index);
-    }
-    if (!noDisposeOnSet && __privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-      const dt = __privateGet(this, _disposed);
-      let task;
-      while (task = dt?.shift()) {
-        (_c2 = __privateGet(this, _disposeAfter)) == null ? void 0 : _c2.call(this, ...task);
-      }
-    }
-    return this;
-  }
-  /**
-   * Evict the least recently used item, returning its value or
-   * `undefined` if cache is empty.
-   */
-  pop() {
-    var _a3;
-    try {
-      while (__privateGet(this, _size)) {
-        const val = __privateGet(this, _valList)[__privateGet(this, _head)];
-        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
-        if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, val)) {
-          if (val.__staleWhileFetching) {
-            return val.__staleWhileFetching;
-          }
-        } else if (val !== void 0) {
-          return val;
-        }
-      }
-    } finally {
-      if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-        const dt = __privateGet(this, _disposed);
-        let task;
-        while (task = dt?.shift()) {
-          (_a3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _a3.call(this, ...task);
-        }
-      }
-    }
-  }
-  /**
-   * Check if a key is in the cache, without updating the recency of use.
-   * Will return false if the item is stale, even though it is technically
-   * in the cache.
-   *
-   * Check if a key is in the cache, without updating the recency of
-   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set
-   * to `true` in either the options or the constructor.
-   *
-   * Will return `false` if the item is stale, even though it is technically in
-   * the cache. The difference can be determined (if it matters) by using a
-   * `status` argument, and inspecting the `has` field.
-   *
-   * Will not update item age unless
-   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
-   */
-  has(k, hasOptions = {}) {
-    const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      const v = __privateGet(this, _valList)[index];
-      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) && v.__staleWhileFetching === void 0) {
-        return false;
-      }
-      if (!__privateGet(this, _isStale).call(this, index)) {
-        if (updateAgeOnHas) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        if (status) {
-          status.has = "hit";
-          __privateGet(this, _statusTTL).call(this, status, index);
-        }
-        return true;
-      } else if (status) {
-        status.has = "stale";
-        __privateGet(this, _statusTTL).call(this, status, index);
-      }
-    } else if (status) {
-      status.has = "miss";
-    }
-    return false;
-  }
-  /**
-   * Like {@link LRUCache#get} but doesn't update recency or delete stale
-   * items.
-   *
-   * Returns `undefined` if the item is stale, unless
-   * {@link LRUCache.OptionsBase.allowStale} is set.
-   */
-  peek(k, peekOptions = {}) {
-    const { allowStale = this.allowStale } = peekOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index === void 0 || !allowStale && __privateGet(this, _isStale).call(this, index)) {
-      return;
-    }
-    const v = __privateGet(this, _valList)[index];
-    return __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-  }
-  async fetch(k, fetchOptions = {}) {
-    const {
-      // get options
-      allowStale = this.allowStale,
-      updateAgeOnGet = this.updateAgeOnGet,
-      noDeleteOnStaleGet = this.noDeleteOnStaleGet,
-      // set options
-      ttl = this.ttl,
-      noDisposeOnSet = this.noDisposeOnSet,
-      size = 0,
-      sizeCalculation = this.sizeCalculation,
-      noUpdateTTL = this.noUpdateTTL,
-      // fetch exclusive options
-      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,
-      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,
-      ignoreFetchAbort = this.ignoreFetchAbort,
-      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,
-      context,
-      forceRefresh = false,
-      status,
-      signal
-    } = fetchOptions;
-    if (!__privateGet(this, _hasFetchMethod)) {
-      if (status)
-        status.fetch = "get";
-      return this.get(k, {
-        allowStale,
-        updateAgeOnGet,
-        noDeleteOnStaleGet,
-        status
-      });
-    }
-    const options = {
-      allowStale,
-      updateAgeOnGet,
-      noDeleteOnStaleGet,
-      ttl,
-      noDisposeOnSet,
-      size,
-      sizeCalculation,
-      noUpdateTTL,
-      noDeleteOnFetchRejection,
-      allowStaleOnFetchRejection,
-      allowStaleOnFetchAbort,
-      ignoreFetchAbort,
-      status,
-      signal
-    };
-    let index = __privateGet(this, _keyMap).get(k);
-    if (index === void 0) {
-      if (status)
-        status.fetch = "miss";
-      const p = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index, options, context);
-      return p.__returned = p;
-    } else {
-      const v = __privateGet(this, _valList)[index];
-      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-        const stale = allowStale && v.__staleWhileFetching !== void 0;
-        if (status) {
-          status.fetch = "inflight";
-          if (stale)
-            status.returnedStale = true;
-        }
-        return stale ? v.__staleWhileFetching : v.__returned = v;
-      }
-      const isStale = __privateGet(this, _isStale).call(this, index);
-      if (!forceRefresh && !isStale) {
-        if (status)
-          status.fetch = "hit";
-        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-        if (updateAgeOnGet) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        if (status)
-          __privateGet(this, _statusTTL).call(this, status, index);
-        return v;
-      }
-      const p = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index, options, context);
-      const hasStale = p.__staleWhileFetching !== void 0;
-      const staleVal = hasStale && allowStale;
-      if (status) {
-        status.fetch = isStale ? "stale" : "refresh";
-        if (staleVal && isStale)
-          status.returnedStale = true;
-      }
-      return staleVal ? p.__staleWhileFetching : p.__returned = p;
-    }
-  }
-  async forceFetch(k, fetchOptions = {}) {
-    const v = await this.fetch(k, fetchOptions);
-    if (v === void 0)
-      throw new Error("fetch() returned undefined");
-    return v;
-  }
-  memo(k, memoOptions = {}) {
-    const memoMethod = __privateGet(this, _memoMethod);
-    if (!memoMethod) {
-      throw new Error("no memoMethod provided to constructor");
-    }
-    const { context, forceRefresh, ...options } = memoOptions;
-    const v = this.get(k, options);
-    if (!forceRefresh && v !== void 0)
-      return v;
-    const vv = memoMethod(k, v, {
-      options,
-      context
-    });
-    this.set(k, vv, options);
-    return vv;
-  }
-  /**
-   * Return a value from the cache. Will update the recency of the cache
-   * entry found.
-   *
-   * If the key is not found, get() will return `undefined`.
-   */
-  get(k, getOptions = {}) {
-    const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      const value = __privateGet(this, _valList)[index];
-      const fetching = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, value);
-      if (status)
-        __privateGet(this, _statusTTL).call(this, status, index);
-      if (__privateGet(this, _isStale).call(this, index)) {
-        if (status)
-          status.get = "stale";
-        if (!fetching) {
-          if (!noDeleteOnStaleGet) {
-            __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "expire");
-          }
-          if (status && allowStale)
-            status.returnedStale = true;
-          return allowStale ? value : void 0;
-        } else {
-          if (status && allowStale && value.__staleWhileFetching !== void 0) {
-            status.returnedStale = true;
-          }
-          return allowStale ? value.__staleWhileFetching : void 0;
-        }
-      } else {
-        if (status)
-          status.get = "hit";
-        if (fetching) {
-          return value.__staleWhileFetching;
-        }
-        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-        if (updateAgeOnGet) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        return value;
-      }
-    } else if (status) {
-      status.get = "miss";
-    }
-  }
-  /**
-   * Deletes a key out of the cache.
-   *
-   * Returns true if the key was deleted, false otherwise.
-   */
-  delete(k) {
-    return __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "delete");
-  }
-  /**
-   * Clear the cache entirely, throwing away all values.
-   */
-  clear() {
-    return __privateMethod(this, _LRUCache_instances, clear_fn).call(this, "delete");
-  }
-};
-_max = new WeakMap();
-_maxSize = new WeakMap();
-_dispose = new WeakMap();
-_disposeAfter = new WeakMap();
-_fetchMethod = new WeakMap();
-_memoMethod = new WeakMap();
-_size = new WeakMap();
-_calculatedSize = new WeakMap();
-_keyMap = new WeakMap();
-_keyList = new WeakMap();
-_valList = new WeakMap();
-_next = new WeakMap();
-_prev = new WeakMap();
-_head = new WeakMap();
-_tail = new WeakMap();
-_free = new WeakMap();
-_disposed = new WeakMap();
-_sizes = new WeakMap();
-_starts = new WeakMap();
-_ttls = new WeakMap();
-_hasDispose = new WeakMap();
-_hasFetchMethod = new WeakMap();
-_hasDisposeAfter = new WeakMap();
-_LRUCache_instances = new WeakSet();
-initializeTTLTracking_fn = function() {
-  const ttls = new ZeroArray(__privateGet(this, _max));
-  const starts = new ZeroArray(__privateGet(this, _max));
-  __privateSet(this, _ttls, ttls);
-  __privateSet(this, _starts, starts);
-  __privateSet(this, _setItemTTL, (index, ttl, start = perf.now()) => {
-    starts[index] = ttl !== 0 ? start : 0;
-    ttls[index] = ttl;
-    if (ttl !== 0 && this.ttlAutopurge) {
-      const t = setTimeout(() => {
-        if (__privateGet(this, _isStale).call(this, index)) {
-          __privateMethod(this, _LRUCache_instances, delete_fn).call(this, __privateGet(this, _keyList)[index], "expire");
-        }
-      }, ttl + 1);
-      if (t.unref) {
-        t.unref();
-      }
-    }
-  });
-  __privateSet(this, _updateItemAge, (index) => {
-    starts[index] = ttls[index] !== 0 ? perf.now() : 0;
-  });
-  __privateSet(this, _statusTTL, (status, index) => {
-    if (ttls[index]) {
-      const ttl = ttls[index];
-      const start = starts[index];
-      if (!ttl || !start)
-        return;
-      status.ttl = ttl;
-      status.start = start;
-      status.now = cachedNow || getNow();
-      const age = status.now - start;
-      status.remainingTTL = ttl - age;
-    }
-  });
-  let cachedNow = 0;
-  const getNow = () => {
-    const n = perf.now();
-    if (this.ttlResolution > 0) {
-      cachedNow = n;
-      const t = setTimeout(() => cachedNow = 0, this.ttlResolution);
-      if (t.unref) {
-        t.unref();
-      }
-    }
-    return n;
-  };
-  this.getRemainingTTL = (key) => {
-    const index = __privateGet(this, _keyMap).get(key);
-    if (index === void 0) {
-      return 0;
-    }
-    const ttl = ttls[index];
-    const start = starts[index];
-    if (!ttl || !start) {
-      return Infinity;
-    }
-    const age = (cachedNow || getNow()) - start;
-    return ttl - age;
-  };
-  __privateSet(this, _isStale, (index) => {
-    const s = starts[index];
-    const t = ttls[index];
-    return !!t && !!s && (cachedNow || getNow()) - s > t;
-  });
-};
-_updateItemAge = new WeakMap();
-_statusTTL = new WeakMap();
-_setItemTTL = new WeakMap();
-_isStale = new WeakMap();
-initializeSizeTracking_fn = function() {
-  const sizes = new ZeroArray(__privateGet(this, _max));
-  __privateSet(this, _calculatedSize, 0);
-  __privateSet(this, _sizes, sizes);
-  __privateSet(this, _removeItemSize, (index) => {
-    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) - sizes[index]);
-    sizes[index] = 0;
-  });
-  __privateSet(this, _requireSize, (k, v, size, sizeCalculation) => {
-    if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-      return 0;
-    }
-    if (!isPosInt(size)) {
-      if (sizeCalculation) {
-        if (typeof sizeCalculation !== "function") {
-          throw new TypeError("sizeCalculation must be a function");
-        }
-        size = sizeCalculation(v, k);
-        if (!isPosInt(size)) {
-          throw new TypeError("sizeCalculation return invalid (expect positive integer)");
-        }
-      } else {
-        throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");
-      }
-    }
-    return size;
-  });
-  __privateSet(this, _addItemSize, (index, size, status) => {
-    sizes[index] = size;
-    if (__privateGet(this, _maxSize)) {
-      const maxSize = __privateGet(this, _maxSize) - sizes[index];
-      while (__privateGet(this, _calculatedSize) > maxSize) {
-        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
-      }
-    }
-    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) + sizes[index]);
-    if (status) {
-      status.entrySize = size;
-      status.totalCalculatedSize = __privateGet(this, _calculatedSize);
-    }
-  });
-};
-_removeItemSize = new WeakMap();
-_addItemSize = new WeakMap();
-_requireSize = new WeakMap();
-indexes_fn = function* ({ allowStale = this.allowStale } = {}) {
-  if (__privateGet(this, _size)) {
-    for (let i = __privateGet(this, _tail); true; ) {
-      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i)) {
-        break;
-      }
-      if (allowStale || !__privateGet(this, _isStale).call(this, i)) {
-        yield i;
-      }
-      if (i === __privateGet(this, _head)) {
-        break;
-      } else {
-        i = __privateGet(this, _prev)[i];
-      }
-    }
-  }
-};
-rindexes_fn = function* ({ allowStale = this.allowStale } = {}) {
-  if (__privateGet(this, _size)) {
-    for (let i = __privateGet(this, _head); true; ) {
-      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i)) {
-        break;
-      }
-      if (allowStale || !__privateGet(this, _isStale).call(this, i)) {
-        yield i;
-      }
-      if (i === __privateGet(this, _tail)) {
-        break;
-      } else {
-        i = __privateGet(this, _next)[i];
-      }
-    }
-  }
-};
-isValidIndex_fn = function(index) {
-  return index !== void 0 && __privateGet(this, _keyMap).get(__privateGet(this, _keyList)[index]) === index;
-};
-evict_fn = function(free) {
-  var _a3;
-  const head = __privateGet(this, _head);
-  const k = __privateGet(this, _keyList)[head];
-  const v = __privateGet(this, _valList)[head];
-  if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-    v.__abortController.abort(new Error("evicted"));
-  } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
-    if (__privateGet(this, _hasDispose)) {
-      (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, "evict");
-    }
-    if (__privateGet(this, _hasDisposeAfter)) {
-      __privateGet(this, _disposed)?.push([v, k, "evict"]);
-    }
-  }
-  __privateGet(this, _removeItemSize).call(this, head);
-  if (free) {
-    __privateGet(this, _keyList)[head] = void 0;
-    __privateGet(this, _valList)[head] = void 0;
-    __privateGet(this, _free).push(head);
-  }
-  if (__privateGet(this, _size) === 1) {
-    __privateSet(this, _head, __privateSet(this, _tail, 0));
-    __privateGet(this, _free).length = 0;
-  } else {
-    __privateSet(this, _head, __privateGet(this, _next)[head]);
-  }
-  __privateGet(this, _keyMap).delete(k);
-  __privateWrapper(this, _size)._--;
-  return head;
-};
-backgroundFetch_fn = function(k, index, options, context) {
-  const v = index === void 0 ? void 0 : __privateGet(this, _valList)[index];
-  if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-    return v;
-  }
-  const ac = new AC();
-  const { signal } = options;
-  signal?.addEventListener("abort", () => ac.abort(signal.reason), {
-    signal: ac.signal
-  });
-  const fetchOpts = {
-    signal: ac.signal,
-    options,
-    context
-  };
-  const cb = (v2, updateCache = false) => {
-    const { aborted } = ac.signal;
-    const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0;
-    if (options.status) {
-      if (aborted && !updateCache) {
-        options.status.fetchAborted = true;
-        options.status.fetchError = ac.signal.reason;
-        if (ignoreAbort)
-          options.status.fetchAbortIgnored = true;
-      } else {
-        options.status.fetchResolved = true;
-      }
-    }
-    if (aborted && !ignoreAbort && !updateCache) {
-      return fetchFail(ac.signal.reason);
-    }
-    const bf2 = p;
-    if (__privateGet(this, _valList)[index] === p) {
-      if (v2 === void 0) {
-        if (bf2.__staleWhileFetching) {
-          __privateGet(this, _valList)[index] = bf2.__staleWhileFetching;
-        } else {
-          __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "fetch");
-        }
-      } else {
-        if (options.status)
-          options.status.fetchUpdated = true;
-        this.set(k, v2, fetchOpts.options);
-      }
-    }
-    return v2;
-  };
-  const eb = (er) => {
-    if (options.status) {
-      options.status.fetchRejected = true;
-      options.status.fetchError = er;
-    }
-    return fetchFail(er);
-  };
-  const fetchFail = (er) => {
-    const { aborted } = ac.signal;
-    const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
-    const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
-    const noDelete = allowStale || options.noDeleteOnFetchRejection;
-    const bf2 = p;
-    if (__privateGet(this, _valList)[index] === p) {
-      const del = !noDelete || bf2.__staleWhileFetching === void 0;
-      if (del) {
-        __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "fetch");
-      } else if (!allowStaleAborted) {
-        __privateGet(this, _valList)[index] = bf2.__staleWhileFetching;
-      }
-    }
-    if (allowStale) {
-      if (options.status && bf2.__staleWhileFetching !== void 0) {
-        options.status.returnedStale = true;
-      }
-      return bf2.__staleWhileFetching;
-    } else if (bf2.__returned === bf2) {
-      throw er;
-    }
-  };
-  const pcall = (res, rej) => {
-    var _a3;
-    const fmp = (_a3 = __privateGet(this, _fetchMethod)) == null ? void 0 : _a3.call(this, k, v, fetchOpts);
-    if (fmp && fmp instanceof Promise) {
-      fmp.then((v2) => res(v2 === void 0 ? void 0 : v2), rej);
-    }
-    ac.signal.addEventListener("abort", () => {
-      if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {
-        res(void 0);
-        if (options.allowStaleOnFetchAbort) {
-          res = (v2) => cb(v2, true);
-        }
-      }
-    });
-  };
-  if (options.status)
-    options.status.fetchDispatched = true;
-  const p = new Promise(pcall).then(cb, eb);
-  const bf = Object.assign(p, {
-    __abortController: ac,
-    __staleWhileFetching: v,
-    __returned: void 0
-  });
-  if (index === void 0) {
-    this.set(k, bf, { ...fetchOpts.options, status: void 0 });
-    index = __privateGet(this, _keyMap).get(k);
-  } else {
-    __privateGet(this, _valList)[index] = bf;
-  }
-  return bf;
-};
-isBackgroundFetch_fn = function(p) {
-  if (!__privateGet(this, _hasFetchMethod))
-    return false;
-  const b = p;
-  return !!b && b instanceof Promise && b.hasOwnProperty("__staleWhileFetching") && b.__abortController instanceof AC;
-};
-connect_fn = function(p, n) {
-  __privateGet(this, _prev)[n] = p;
-  __privateGet(this, _next)[p] = n;
-};
-moveToTail_fn = function(index) {
-  if (index !== __privateGet(this, _tail)) {
-    if (index === __privateGet(this, _head)) {
-      __privateSet(this, _head, __privateGet(this, _next)[index]);
-    } else {
-      __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _prev)[index], __privateGet(this, _next)[index]);
-    }
-    __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _tail), index);
-    __privateSet(this, _tail, index);
-  }
-};
-delete_fn = function(k, reason) {
-  var _a3, _b3;
-  let deleted = false;
-  if (__privateGet(this, _size) !== 0) {
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      deleted = true;
-      if (__privateGet(this, _size) === 1) {
-        __privateMethod(this, _LRUCache_instances, clear_fn).call(this, reason);
-      } else {
-        __privateGet(this, _removeItemSize).call(this, index);
-        const v = __privateGet(this, _valList)[index];
-        if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-          v.__abortController.abort(new Error("deleted"));
-        } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
-          if (__privateGet(this, _hasDispose)) {
-            (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, reason);
-          }
-          if (__privateGet(this, _hasDisposeAfter)) {
-            __privateGet(this, _disposed)?.push([v, k, reason]);
-          }
-        }
-        __privateGet(this, _keyMap).delete(k);
-        __privateGet(this, _keyList)[index] = void 0;
-        __privateGet(this, _valList)[index] = void 0;
-        if (index === __privateGet(this, _tail)) {
-          __privateSet(this, _tail, __privateGet(this, _prev)[index]);
-        } else if (index === __privateGet(this, _head)) {
-          __privateSet(this, _head, __privateGet(this, _next)[index]);
-        } else {
-          const pi = __privateGet(this, _prev)[index];
-          __privateGet(this, _next)[pi] = __privateGet(this, _next)[index];
-          const ni = __privateGet(this, _next)[index];
-          __privateGet(this, _prev)[ni] = __privateGet(this, _prev)[index];
-        }
-        __privateWrapper(this, _size)._--;
-        __privateGet(this, _free).push(index);
-      }
-    }
-  }
-  if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)?.length) {
-    const dt = __privateGet(this, _disposed);
-    let task;
-    while (task = dt?.shift()) {
-      (_b3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _b3.call(this, ...task);
-    }
-  }
-  return deleted;
-};
-clear_fn = function(reason) {
-  var _a3, _b3;
-  for (const index of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
-    const v = __privateGet(this, _valList)[index];
-    if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-      v.__abortController.abort(new Error("deleted"));
-    } else {
-      const k = __privateGet(this, _keyList)[index];
-      if (__privateGet(this, _hasDispose)) {
-        (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, reason);
-      }
-      if (__privateGet(this, _hasDisposeAfter)) {
-        __privateGet(this, _disposed)?.push([v, k, reason]);
-      }
-    }
-  }
-  __privateGet(this, _keyMap).clear();
-  __privateGet(this, _valList).fill(void 0);
-  __privateGet(this, _keyList).fill(void 0);
-  if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-    __privateGet(this, _ttls).fill(0);
-    __privateGet(this, _starts).fill(0);
-  }
-  if (__privateGet(this, _sizes)) {
-    __privateGet(this, _sizes).fill(0);
-  }
-  __privateSet(this, _head, 0);
-  __privateSet(this, _tail, 0);
-  __privateGet(this, _free).length = 0;
-  __privateSet(this, _calculatedSize, 0);
-  __privateSet(this, _size, 0);
-  if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-    const dt = __privateGet(this, _disposed);
-    let task;
-    while (task = dt?.shift()) {
-      (_b3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _b3.call(this, ...task);
-    }
-  }
-};
-var LRUCache = _LRUCache;
-
-// node_modules/path-scurry/dist/esm/index.js
-import { posix, win32 } from "node:path";
-import { fileURLToPath } from "node:url";
-import { lstatSync, readdir as readdirCB, readdirSync, readlinkSync, realpathSync as rps } from "fs";
-import * as actualFS from "node:fs";
-import { lstat, readdir, readlink, realpath } from "node:fs/promises";
-
-// node_modules/minipass/dist/esm/index.js
-import { EventEmitter } from "node:events";
-import Stream from "node:stream";
-import { StringDecoder } from "node:string_decoder";
-var proc = typeof process === "object" && process ? process : {
-  stdout: null,
-  stderr: null
-};
-var isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof Stream || isReadable(s) || isWritable(s));
-var isReadable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
-s.pipe !== Stream.Writable.prototype.pipe;
-var isWritable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter && typeof s.write === "function" && typeof s.end === "function";
-var EOF = Symbol("EOF");
-var MAYBE_EMIT_END = Symbol("maybeEmitEnd");
-var EMITTED_END = Symbol("emittedEnd");
-var EMITTING_END = Symbol("emittingEnd");
-var EMITTED_ERROR = Symbol("emittedError");
-var CLOSED = Symbol("closed");
-var READ = Symbol("read");
-var FLUSH = Symbol("flush");
-var FLUSHCHUNK = Symbol("flushChunk");
-var ENCODING = Symbol("encoding");
-var DECODER = Symbol("decoder");
-var FLOWING = Symbol("flowing");
-var PAUSED = Symbol("paused");
-var RESUME = Symbol("resume");
-var BUFFER = Symbol("buffer");
-var PIPES = Symbol("pipes");
-var BUFFERLENGTH = Symbol("bufferLength");
-var BUFFERPUSH = Symbol("bufferPush");
-var BUFFERSHIFT = Symbol("bufferShift");
-var OBJECTMODE = Symbol("objectMode");
-var DESTROYED = Symbol("destroyed");
-var ERROR = Symbol("error");
-var EMITDATA = Symbol("emitData");
-var EMITEND = Symbol("emitEnd");
-var EMITEND2 = Symbol("emitEnd2");
-var ASYNC = Symbol("async");
-var ABORT = Symbol("abort");
-var ABORTED = Symbol("aborted");
-var SIGNAL = Symbol("signal");
-var DATALISTENERS = Symbol("dataListeners");
-var DISCARDED = Symbol("discarded");
-var defer = (fn) => Promise.resolve().then(fn);
-var nodefer = (fn) => fn();
-var isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
-var isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
-var isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
-var Pipe = class {
-  constructor(src, dest, opts) {
-    __publicField(this, "src");
-    __publicField(this, "dest");
-    __publicField(this, "opts");
-    __publicField(this, "ondrain");
-    this.src = src;
-    this.dest = dest;
-    this.opts = opts;
-    this.ondrain = () => src[RESUME]();
-    this.dest.on("drain", this.ondrain);
-  }
-  unpipe() {
-    this.dest.removeListener("drain", this.ondrain);
-  }
-  // only here for the prototype
-  /* c8 ignore start */
-  proxyErrors(_er) {
-  }
-  /* c8 ignore stop */
-  end() {
-    this.unpipe();
-    if (this.opts.end)
-      this.dest.end();
-  }
-};
-var PipeProxyErrors = class extends Pipe {
-  unpipe() {
-    this.src.removeListener("error", this.proxyErrors);
-    super.unpipe();
-  }
-  constructor(src, dest, opts) {
-    super(src, dest, opts);
-    this.proxyErrors = (er) => dest.emit("error", er);
-    src.on("error", this.proxyErrors);
-  }
-};
-var isObjectModeOptions = (o) => !!o.objectMode;
-var isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
-var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
-var Minipass = class extends EventEmitter {
-  /**
-   * If `RType` is Buffer, then options do not need to be provided.
-   * Otherwise, an options object must be provided to specify either
-   * {@link Minipass.SharedOptions.objectMode} or
-   * {@link Minipass.SharedOptions.encoding}, as appropriate.
-   */
-  constructor(...args) {
-    const options = args[0] || {};
-    super();
-    __publicField(this, _s, false);
-    __publicField(this, _r, false);
-    __publicField(this, _q, []);
-    __publicField(this, _p, []);
-    __publicField(this, _o);
-    __publicField(this, _n);
-    __publicField(this, _m);
-    __publicField(this, _l);
-    __publicField(this, _k, false);
-    __publicField(this, _j, false);
-    __publicField(this, _i, false);
-    __publicField(this, _h, false);
-    __publicField(this, _g, null);
-    __publicField(this, _f, 0);
-    __publicField(this, _e, false);
-    __publicField(this, _d);
-    __publicField(this, _c, false);
-    __publicField(this, _b2, 0);
-    __publicField(this, _a2, false);
-    /**
-     * true if the stream can be written
-     */
-    __publicField(this, "writable", true);
-    /**
-     * true if the stream can be read
-     */
-    __publicField(this, "readable", true);
-    if (options.objectMode && typeof options.encoding === "string") {
-      throw new TypeError("Encoding and objectMode may not be used together");
-    }
-    if (isObjectModeOptions(options)) {
-      this[OBJECTMODE] = true;
-      this[ENCODING] = null;
-    } else if (isEncodingOptions(options)) {
-      this[ENCODING] = options.encoding;
-      this[OBJECTMODE] = false;
-    } else {
-      this[OBJECTMODE] = false;
-      this[ENCODING] = null;
-    }
-    this[ASYNC] = !!options.async;
-    this[DECODER] = this[ENCODING] ? new StringDecoder(this[ENCODING]) : null;
-    if (options && options.debugExposeBuffer === true) {
-      Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
-    }
-    if (options && options.debugExposePipes === true) {
-      Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
-    }
-    const { signal } = options;
-    if (signal) {
-      this[SIGNAL] = signal;
-      if (signal.aborted) {
-        this[ABORT]();
-      } else {
-        signal.addEventListener("abort", () => this[ABORT]());
-      }
-    }
-  }
-  /**
-   * The amount of data stored in the buffer waiting to be read.
-   *
-   * For Buffer strings, this will be the total byte length.
-   * For string encoding streams, this will be the string character length,
-   * according to JavaScript's `string.length` logic.
-   * For objectMode streams, this is a count of the items waiting to be
-   * emitted.
-   */
-  get bufferLength() {
-    return this[BUFFERLENGTH];
-  }
-  /**
-   * The `BufferEncoding` currently in use, or `null`
-   */
-  get encoding() {
-    return this[ENCODING];
-  }
-  /**
-   * @deprecated - This is a read only property
-   */
-  set encoding(_enc) {
-    throw new Error("Encoding must be set at instantiation time");
-  }
-  /**
-   * @deprecated - Encoding may only be set at instantiation time
-   */
-  setEncoding(_enc) {
-    throw new Error("Encoding must be set at instantiation time");
-  }
-  /**
-   * True if this is an objectMode stream
-   */
-  get objectMode() {
-    return this[OBJECTMODE];
-  }
-  /**
-   * @deprecated - This is a read-only property
-   */
-  set objectMode(_om) {
-    throw new Error("objectMode must be set at instantiation time");
-  }
-  /**
-   * true if this is an async stream
-   */
-  get ["async"]() {
-    return this[ASYNC];
-  }
-  /**
-   * Set to true to make this stream async.
-   *
-   * Once set, it cannot be unset, as this would potentially cause incorrect
-   * behavior.  Ie, a sync stream can be made async, but an async stream
-   * cannot be safely made sync.
-   */
-  set ["async"](a) {
-    this[ASYNC] = this[ASYNC] || !!a;
-  }
-  // drop everything and get out of the flow completely
-  [(_s = FLOWING, _r = PAUSED, _q = PIPES, _p = BUFFER, _o = OBJECTMODE, _n = ENCODING, _m = ASYNC, _l = DECODER, _k = EOF, _j = EMITTED_END, _i = EMITTING_END, _h = CLOSED, _g = EMITTED_ERROR, _f = BUFFERLENGTH, _e = DESTROYED, _d = SIGNAL, _c = ABORTED, _b2 = DATALISTENERS, _a2 = DISCARDED, ABORT)]() {
-    this[ABORTED] = true;
-    this.emit("abort", this[SIGNAL]?.reason);
-    this.destroy(this[SIGNAL]?.reason);
-  }
-  /**
-   * True if the stream has been aborted.
-   */
-  get aborted() {
-    return this[ABORTED];
-  }
-  /**
-   * No-op setter. Stream aborted status is set via the AbortSignal provided
-   * in the constructor options.
-   */
-  set aborted(_) {
-  }
-  write(chunk, encoding, cb) {
-    if (this[ABORTED])
-      return false;
-    if (this[EOF])
-      throw new Error("write after end");
-    if (this[DESTROYED]) {
-      this.emit("error", Object.assign(new Error("Cannot call write after a stream was destroyed"), { code: "ERR_STREAM_DESTROYED" }));
-      return true;
-    }
-    if (typeof encoding === "function") {
-      cb = encoding;
-      encoding = "utf8";
-    }
-    if (!encoding)
-      encoding = "utf8";
-    const fn = this[ASYNC] ? defer : nodefer;
-    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
-      if (isArrayBufferView(chunk)) {
-        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
-      } else if (isArrayBufferLike(chunk)) {
-        chunk = Buffer.from(chunk);
-      } else if (typeof chunk !== "string") {
-        throw new Error("Non-contiguous data written to non-objectMode stream");
-      }
-    }
-    if (this[OBJECTMODE]) {
-      if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
-        this[FLUSH](true);
-      if (this[FLOWING])
-        this.emit("data", chunk);
-      else
-        this[BUFFERPUSH](chunk);
-      if (this[BUFFERLENGTH] !== 0)
-        this.emit("readable");
-      if (cb)
-        fn(cb);
-      return this[FLOWING];
-    }
-    if (!chunk.length) {
-      if (this[BUFFERLENGTH] !== 0)
-        this.emit("readable");
-      if (cb)
-        fn(cb);
-      return this[FLOWING];
-    }
-    if (typeof chunk === "string" && // unless it is a string already ready for us to use
-    !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)) {
-      chunk = Buffer.from(chunk, encoding);
-    }
-    if (Buffer.isBuffer(chunk) && this[ENCODING]) {
-      chunk = this[DECODER].write(chunk);
-    }
-    if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
-      this[FLUSH](true);
-    if (this[FLOWING])
-      this.emit("data", chunk);
-    else
-      this[BUFFERPUSH](chunk);
-    if (this[BUFFERLENGTH] !== 0)
-      this.emit("readable");
-    if (cb)
-      fn(cb);
-    return this[FLOWING];
-  }
-  /**
-   * Low-level explicit read method.
-   *
-   * In objectMode, the argument is ignored, and one item is returned if
-   * available.
-   *
-   * `n` is the number of bytes (or in the case of encoding streams,
-   * characters) to consume. If `n` is not provided, then the entire buffer
-   * is returned, or `null` is returned if no data is available.
-   *
-   * If `n` is greater that the amount of data in the internal buffer,
-   * then `null` is returned.
-   */
-  read(n) {
-    if (this[DESTROYED])
-      return null;
-    this[DISCARDED] = false;
-    if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
-      this[MAYBE_EMIT_END]();
-      return null;
-    }
-    if (this[OBJECTMODE])
-      n = null;
-    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
-      this[BUFFER] = [
-        this[ENCODING] ? this[BUFFER].join("") : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])
-      ];
-    }
-    const ret = this[READ](n || null, this[BUFFER][0]);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [READ](n, chunk) {
-    if (this[OBJECTMODE])
-      this[BUFFERSHIFT]();
-    else {
-      const c = chunk;
-      if (n === c.length || n === null)
-        this[BUFFERSHIFT]();
-      else if (typeof c === "string") {
-        this[BUFFER][0] = c.slice(n);
-        chunk = c.slice(0, n);
-        this[BUFFERLENGTH] -= n;
-      } else {
-        this[BUFFER][0] = c.subarray(n);
-        chunk = c.subarray(0, n);
-        this[BUFFERLENGTH] -= n;
-      }
-    }
-    this.emit("data", chunk);
-    if (!this[BUFFER].length && !this[EOF])
-      this.emit("drain");
-    return chunk;
-  }
-  end(chunk, encoding, cb) {
-    if (typeof chunk === "function") {
-      cb = chunk;
-      chunk = void 0;
-    }
-    if (typeof encoding === "function") {
-      cb = encoding;
-      encoding = "utf8";
-    }
-    if (chunk !== void 0)
-      this.write(chunk, encoding);
-    if (cb)
-      this.once("end", cb);
-    this[EOF] = true;
-    this.writable = false;
-    if (this[FLOWING] || !this[PAUSED])
-      this[MAYBE_EMIT_END]();
-    return this;
-  }
-  // don't let the internal resume be overwritten
-  [RESUME]() {
-    if (this[DESTROYED])
-      return;
-    if (!this[DATALISTENERS] && !this[PIPES].length) {
-      this[DISCARDED] = true;
-    }
-    this[PAUSED] = false;
-    this[FLOWING] = true;
-    this.emit("resume");
-    if (this[BUFFER].length)
-      this[FLUSH]();
-    else if (this[EOF])
-      this[MAYBE_EMIT_END]();
-    else
-      this.emit("drain");
-  }
-  /**
-   * Resume the stream if it is currently in a paused state
-   *
-   * If called when there are no pipe destinations or `data` event listeners,
-   * this will place the stream in a "discarded" state, where all data will
-   * be thrown away. The discarded state is removed if a pipe destination or
-   * data handler is added, if pause() is called, or if any synchronous or
-   * asynchronous iteration is started.
-   */
-  resume() {
-    return this[RESUME]();
-  }
-  /**
-   * Pause the stream
-   */
-  pause() {
-    this[FLOWING] = false;
-    this[PAUSED] = true;
-    this[DISCARDED] = false;
-  }
-  /**
-   * true if the stream has been forcibly destroyed
-   */
-  get destroyed() {
-    return this[DESTROYED];
-  }
-  /**
-   * true if the stream is currently in a flowing state, meaning that
-   * any writes will be immediately emitted.
-   */
-  get flowing() {
-    return this[FLOWING];
-  }
-  /**
-   * true if the stream is currently in a paused state
-   */
-  get paused() {
-    return this[PAUSED];
-  }
-  [BUFFERPUSH](chunk) {
-    if (this[OBJECTMODE])
-      this[BUFFERLENGTH] += 1;
-    else
-      this[BUFFERLENGTH] += chunk.length;
-    this[BUFFER].push(chunk);
-  }
-  [BUFFERSHIFT]() {
-    if (this[OBJECTMODE])
-      this[BUFFERLENGTH] -= 1;
-    else
-      this[BUFFERLENGTH] -= this[BUFFER][0].length;
-    return this[BUFFER].shift();
-  }
-  [FLUSH](noDrain = false) {
-    do {
-    } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length);
-    if (!noDrain && !this[BUFFER].length && !this[EOF])
-      this.emit("drain");
-  }
-  [FLUSHCHUNK](chunk) {
-    this.emit("data", chunk);
-    return this[FLOWING];
-  }
-  /**
-   * Pipe all data emitted by this stream into the destination provided.
-   *
-   * Triggers the flow of data.
-   */
-  pipe(dest, opts) {
-    if (this[DESTROYED])
-      return dest;
-    this[DISCARDED] = false;
-    const ended = this[EMITTED_END];
-    opts = opts || {};
-    if (dest === proc.stdout || dest === proc.stderr)
-      opts.end = false;
-    else
-      opts.end = opts.end !== false;
-    opts.proxyErrors = !!opts.proxyErrors;
-    if (ended) {
-      if (opts.end)
-        dest.end();
-    } else {
-      this[PIPES].push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
-      if (this[ASYNC])
-        defer(() => this[RESUME]());
-      else
-        this[RESUME]();
-    }
-    return dest;
-  }
-  /**
-   * Fully unhook a piped destination stream.
-   *
-   * If the destination stream was the only consumer of this stream (ie,
-   * there are no other piped destinations or `'data'` event listeners)
-   * then the flow of data will stop until there is another consumer or
-   * {@link Minipass#resume} is explicitly called.
-   */
-  unpipe(dest) {
-    const p = this[PIPES].find((p2) => p2.dest === dest);
-    if (p) {
-      if (this[PIPES].length === 1) {
-        if (this[FLOWING] && this[DATALISTENERS] === 0) {
-          this[FLOWING] = false;
-        }
-        this[PIPES] = [];
-      } else
-        this[PIPES].splice(this[PIPES].indexOf(p), 1);
-      p.unpipe();
-    }
-  }
-  /**
-   * Alias for {@link Minipass#on}
-   */
-  addListener(ev, handler) {
-    return this.on(ev, handler);
-  }
-  /**
-   * Mostly identical to `EventEmitter.on`, with the following
-   * behavior differences to prevent data loss and unnecessary hangs:
-   *
-   * - Adding a 'data' event handler will trigger the flow of data
-   *
-   * - Adding a 'readable' event handler when there is data waiting to be read
-   *   will cause 'readable' to be emitted immediately.
-   *
-   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
-   *   already passed will cause the event to be emitted immediately and all
-   *   handlers removed.
-   *
-   * - Adding an 'error' event handler after an error has been emitted will
-   *   cause the event to be re-emitted immediately with the error previously
-   *   raised.
-   */
-  on(ev, handler) {
-    const ret = super.on(ev, handler);
-    if (ev === "data") {
-      this[DISCARDED] = false;
-      this[DATALISTENERS]++;
-      if (!this[PIPES].length && !this[FLOWING]) {
-        this[RESUME]();
-      }
-    } else if (ev === "readable" && this[BUFFERLENGTH] !== 0) {
-      super.emit("readable");
-    } else if (isEndish(ev) && this[EMITTED_END]) {
-      super.emit(ev);
-      this.removeAllListeners(ev);
-    } else if (ev === "error" && this[EMITTED_ERROR]) {
-      const h = handler;
-      if (this[ASYNC])
-        defer(() => h.call(this, this[EMITTED_ERROR]));
-      else
-        h.call(this, this[EMITTED_ERROR]);
-    }
-    return ret;
-  }
-  /**
-   * Alias for {@link Minipass#off}
-   */
-  removeListener(ev, handler) {
-    return this.off(ev, handler);
-  }
-  /**
-   * Mostly identical to `EventEmitter.off`
-   *
-   * If a 'data' event handler is removed, and it was the last consumer
-   * (ie, there are no pipe destinations or other 'data' event listeners),
-   * then the flow of data will stop until there is another consumer or
-   * {@link Minipass#resume} is explicitly called.
-   */
-  off(ev, handler) {
-    const ret = super.off(ev, handler);
-    if (ev === "data") {
-      this[DATALISTENERS] = this.listeners("data").length;
-      if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
-        this[FLOWING] = false;
-      }
-    }
-    return ret;
-  }
-  /**
-   * Mostly identical to `EventEmitter.removeAllListeners`
-   *
-   * If all 'data' event handlers are removed, and they were the last consumer
-   * (ie, there are no pipe destinations), then the flow of data will stop
-   * until there is another consumer or {@link Minipass#resume} is explicitly
-   * called.
-   */
-  removeAllListeners(ev) {
-    const ret = super.removeAllListeners(ev);
-    if (ev === "data" || ev === void 0) {
-      this[DATALISTENERS] = 0;
-      if (!this[DISCARDED] && !this[PIPES].length) {
-        this[FLOWING] = false;
-      }
-    }
-    return ret;
-  }
-  /**
-   * true if the 'end' event has been emitted
-   */
-  get emittedEnd() {
-    return this[EMITTED_END];
-  }
-  [MAYBE_EMIT_END]() {
-    if (!this[EMITTING_END] && !this[EMITTED_END] && !this[DESTROYED] && this[BUFFER].length === 0 && this[EOF]) {
-      this[EMITTING_END] = true;
-      this.emit("end");
-      this.emit("prefinish");
-      this.emit("finish");
-      if (this[CLOSED])
-        this.emit("close");
-      this[EMITTING_END] = false;
-    }
-  }
-  /**
-   * Mostly identical to `EventEmitter.emit`, with the following
-   * behavior differences to prevent data loss and unnecessary hangs:
-   *
-   * If the stream has been destroyed, and the event is something other
-   * than 'close' or 'error', then `false` is returned and no handlers
-   * are called.
-   *
-   * If the event is 'end', and has already been emitted, then the event
-   * is ignored. If the stream is in a paused or non-flowing state, then
-   * the event will be deferred until data flow resumes. If the stream is
-   * async, then handlers will be called on the next tick rather than
-   * immediately.
-   *
-   * If the event is 'close', and 'end' has not yet been emitted, then
-   * the event will be deferred until after 'end' is emitted.
-   *
-   * If the event is 'error', and an AbortSignal was provided for the stream,
-   * and there are no listeners, then the event is ignored, matching the
-   * behavior of node core streams in the presense of an AbortSignal.
-   *
-   * If the event is 'finish' or 'prefinish', then all listeners will be
-   * removed after emitting the event, to prevent double-firing.
-   */
-  emit(ev, ...args) {
-    const data = args[0];
-    if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
-      return false;
-    } else if (ev === "data") {
-      return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
-    } else if (ev === "end") {
-      return this[EMITEND]();
-    } else if (ev === "close") {
-      this[CLOSED] = true;
-      if (!this[EMITTED_END] && !this[DESTROYED])
-        return false;
-      const ret2 = super.emit("close");
-      this.removeAllListeners("close");
-      return ret2;
-    } else if (ev === "error") {
-      this[EMITTED_ERROR] = data;
-      super.emit(ERROR, data);
-      const ret2 = !this[SIGNAL] || this.listeners("error").length ? super.emit("error", data) : false;
-      this[MAYBE_EMIT_END]();
-      return ret2;
-    } else if (ev === "resume") {
-      const ret2 = super.emit("resume");
-      this[MAYBE_EMIT_END]();
-      return ret2;
-    } else if (ev === "finish" || ev === "prefinish") {
-      const ret2 = super.emit(ev);
-      this.removeAllListeners(ev);
-      return ret2;
-    }
-    const ret = super.emit(ev, ...args);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [EMITDATA](data) {
-    for (const p of this[PIPES]) {
-      if (p.dest.write(data) === false)
-        this.pause();
-    }
-    const ret = this[DISCARDED] ? false : super.emit("data", data);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [EMITEND]() {
-    if (this[EMITTED_END])
-      return false;
-    this[EMITTED_END] = true;
-    this.readable = false;
-    return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
-  }
-  [EMITEND2]() {
-    if (this[DECODER]) {
-      const data = this[DECODER].end();
-      if (data) {
-        for (const p of this[PIPES]) {
-          p.dest.write(data);
-        }
-        if (!this[DISCARDED])
-          super.emit("data", data);
-      }
-    }
-    for (const p of this[PIPES]) {
-      p.end();
-    }
-    const ret = super.emit("end");
-    this.removeAllListeners("end");
-    return ret;
-  }
-  /**
-   * Return a Promise that resolves to an array of all emitted data once
-   * the stream ends.
-   */
-  async collect() {
-    const buf = Object.assign([], {
-      dataLength: 0
-    });
-    if (!this[OBJECTMODE])
-      buf.dataLength = 0;
-    const p = this.promise();
-    this.on("data", (c) => {
-      buf.push(c);
-      if (!this[OBJECTMODE])
-        buf.dataLength += c.length;
-    });
-    await p;
-    return buf;
-  }
-  /**
-   * Return a Promise that resolves to the concatenation of all emitted data
-   * once the stream ends.
-   *
-   * Not allowed on objectMode streams.
-   */
-  async concat() {
-    if (this[OBJECTMODE]) {
-      throw new Error("cannot concat in objectMode");
-    }
-    const buf = await this.collect();
-    return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
-  }
-  /**
-   * Return a void Promise that resolves once the stream ends.
-   */
-  async promise() {
-    return new Promise((resolve6, reject) => {
-      this.on(DESTROYED, () => reject(new Error("stream destroyed")));
-      this.on("error", (er) => reject(er));
-      this.on("end", () => resolve6());
-    });
-  }
-  /**
-   * Asynchronous `for await of` iteration.
-   *
-   * This will continue emitting all chunks until the stream terminates.
-   */
-  [Symbol.asyncIterator]() {
-    this[DISCARDED] = false;
-    let stopped = false;
-    const stop = async () => {
-      this.pause();
-      stopped = true;
-      return { value: void 0, done: true };
-    };
-    const next = () => {
-      if (stopped)
-        return stop();
-      const res = this.read();
-      if (res !== null)
-        return Promise.resolve({ done: false, value: res });
-      if (this[EOF])
-        return stop();
-      let resolve6;
-      let reject;
-      const onerr = (er) => {
-        this.off("data", ondata);
-        this.off("end", onend);
-        this.off(DESTROYED, ondestroy);
-        stop();
-        reject(er);
-      };
-      const ondata = (value) => {
-        this.off("error", onerr);
-        this.off("end", onend);
-        this.off(DESTROYED, ondestroy);
-        this.pause();
-        resolve6({ value, done: !!this[EOF] });
-      };
-      const onend = () => {
-        this.off("error", onerr);
-        this.off("data", ondata);
-        this.off(DESTROYED, ondestroy);
-        stop();
-        resolve6({ done: true, value: void 0 });
-      };
-      const ondestroy = () => onerr(new Error("stream destroyed"));
-      return new Promise((res2, rej) => {
-        reject = rej;
-        resolve6 = res2;
-        this.once(DESTROYED, ondestroy);
-        this.once("error", onerr);
-        this.once("end", onend);
-        this.once("data", ondata);
-      });
-    };
-    return {
-      next,
-      throw: stop,
-      return: stop,
-      [Symbol.asyncIterator]() {
-        return this;
-      }
-    };
-  }
-  /**
-   * Synchronous `for of` iteration.
-   *
-   * The iteration will terminate when the internal buffer runs out, even
-   * if the stream has not yet terminated.
-   */
-  [Symbol.iterator]() {
-    this[DISCARDED] = false;
-    let stopped = false;
-    const stop = () => {
-      this.pause();
-      this.off(ERROR, stop);
-      this.off(DESTROYED, stop);
-      this.off("end", stop);
-      stopped = true;
-      return { done: true, value: void 0 };
-    };
-    const next = () => {
-      if (stopped)
-        return stop();
-      const value = this.read();
-      return value === null ? stop() : { done: false, value };
-    };
-    this.once("end", stop);
-    this.once(ERROR, stop);
-    this.once(DESTROYED, stop);
-    return {
-      next,
-      throw: stop,
-      return: stop,
-      [Symbol.iterator]() {
-        return this;
-      }
-    };
-  }
-  /**
-   * Destroy a stream, preventing it from being used for any further purpose.
-   *
-   * If the stream has a `close()` method, then it will be called on
-   * destruction.
-   *
-   * After destruction, any attempt to write data, read data, or emit most
-   * events will be ignored.
-   *
-   * If an error argument is provided, then it will be emitted in an
-   * 'error' event.
-   */
-  destroy(er) {
-    if (this[DESTROYED]) {
-      if (er)
-        this.emit("error", er);
-      else
-        this.emit(DESTROYED);
-      return this;
-    }
-    this[DESTROYED] = true;
-    this[DISCARDED] = true;
-    this[BUFFER].length = 0;
-    this[BUFFERLENGTH] = 0;
-    const wc = this;
-    if (typeof wc.close === "function" && !this[CLOSED])
-      wc.close();
-    if (er)
-      this.emit("error", er);
-    else
-      this.emit(DESTROYED);
-    return this;
-  }
-  /**
-   * Alias for {@link isStream}
-   *
-   * Former export location, maintained for backwards compatibility.
-   *
-   * @deprecated
-   */
-  static get isStream() {
-    return isStream;
-  }
-};
-
-// node_modules/path-scurry/dist/esm/index.js
-var realpathSync = rps.native;
-var defaultFS = {
-  lstatSync,
-  readdir: readdirCB,
-  readdirSync,
-  readlinkSync,
-  realpathSync,
-  promises: {
-    lstat,
-    readdir,
-    readlink,
-    realpath
-  }
-};
-var fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ? defaultFS : {
-  ...defaultFS,
-  ...fsOption,
-  promises: {
-    ...defaultFS.promises,
-    ...fsOption.promises || {}
-  }
-};
-var uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
-var uncToDrive = (rootPath) => rootPath.replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
-var eitherSep = /[\\\/]/;
-var UNKNOWN = 0;
-var IFIFO = 1;
-var IFCHR = 2;
-var IFDIR = 4;
-var IFBLK = 6;
-var IFREG = 8;
-var IFLNK = 10;
-var IFSOCK = 12;
-var IFMT = 15;
-var IFMT_UNKNOWN = ~IFMT;
-var READDIR_CALLED = 16;
-var LSTAT_CALLED = 32;
-var ENOTDIR = 64;
-var ENOENT = 128;
-var ENOREADLINK = 256;
-var ENOREALPATH = 512;
-var ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
-var TYPEMASK = 1023;
-var entToType = (s) => s.isFile() ? IFREG : s.isDirectory() ? IFDIR : s.isSymbolicLink() ? IFLNK : s.isCharacterDevice() ? IFCHR : s.isBlockDevice() ? IFBLK : s.isSocket() ? IFSOCK : s.isFIFO() ? IFIFO : UNKNOWN;
-var normalizeCache = /* @__PURE__ */ new Map();
-var normalize = (s) => {
-  const c = normalizeCache.get(s);
-  if (c)
-    return c;
-  const n = s.normalize("NFKD");
-  normalizeCache.set(s, n);
-  return n;
-};
-var normalizeNocaseCache = /* @__PURE__ */ new Map();
-var normalizeNocase = (s) => {
-  const c = normalizeNocaseCache.get(s);
-  if (c)
-    return c;
-  const n = normalize(s.toLowerCase());
-  normalizeNocaseCache.set(s, n);
-  return n;
-};
-var ResolveCache = class extends LRUCache {
-  constructor() {
-    super({ max: 256 });
-  }
-};
-var ChildrenCache = class extends LRUCache {
-  constructor(maxSize = 16 * 1024) {
-    super({
-      maxSize,
-      // parent + children
-      sizeCalculation: (a) => a.length + 1
-    });
-  }
-};
-var setAsCwd = Symbol("PathScurry setAsCwd");
-var _fs, _dev, _mode, _nlink, _uid, _gid, _rdev, _blksize, _ino, _size2, _blocks, _atimeMs, _mtimeMs, _ctimeMs, _birthtimeMs, _atime, _mtime, _ctime, _birthtime, _matchName, _depth, _fullpath, _fullpathPosix, _relative, _relativePosix, _type, _children, _linkTarget, _realpath, _PathBase_instances, resolveParts_fn, readdirSuccess_fn, markENOENT_fn, markChildrenENOENT_fn, markENOREALPATH_fn, markENOTDIR_fn, readdirFail_fn, lstatFail_fn, readlinkFail_fn, readdirAddChild_fn, readdirAddNewChild_fn, readdirMaybePromoteChild_fn, readdirPromoteChild_fn, applyStat_fn, _onReaddirCB, _readdirCBInFlight, callOnReaddirCB_fn, _asyncReaddirInFlight;
-var PathBase = class {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    __privateAdd(this, _PathBase_instances);
-    /**
-     * the basename of this path
-     *
-     * **Important**: *always* test the path name against any test string
-     * usingthe {@link isNamed} method, and not by directly comparing this
-     * string. Otherwise, unicode path strings that the system sees as identical
-     * will not be properly treated as the same path, leading to incorrect
-     * behavior and possible security issues.
-     */
-    __publicField(this, "name");
-    /**
-     * the Path entry corresponding to the path root.
-     *
-     * @internal
-     */
-    __publicField(this, "root");
-    /**
-     * All roots found within the current PathScurry family
-     *
-     * @internal
-     */
-    __publicField(this, "roots");
-    /**
-     * a reference to the parent path, or undefined in the case of root entries
-     *
-     * @internal
-     */
-    __publicField(this, "parent");
-    /**
-     * boolean indicating whether paths are compared case-insensitively
-     * @internal
-     */
-    __publicField(this, "nocase");
-    /**
-     * boolean indicating that this path is the current working directory
-     * of the PathScurry collection that contains it.
-     */
-    __publicField(this, "isCWD", false);
-    // potential default fs override
-    __privateAdd(this, _fs);
-    // Stats fields
-    __privateAdd(this, _dev);
-    __privateAdd(this, _mode);
-    __privateAdd(this, _nlink);
-    __privateAdd(this, _uid);
-    __privateAdd(this, _gid);
-    __privateAdd(this, _rdev);
-    __privateAdd(this, _blksize);
-    __privateAdd(this, _ino);
-    __privateAdd(this, _size2);
-    __privateAdd(this, _blocks);
-    __privateAdd(this, _atimeMs);
-    __privateAdd(this, _mtimeMs);
-    __privateAdd(this, _ctimeMs);
-    __privateAdd(this, _birthtimeMs);
-    __privateAdd(this, _atime);
-    __privateAdd(this, _mtime);
-    __privateAdd(this, _ctime);
-    __privateAdd(this, _birthtime);
-    __privateAdd(this, _matchName);
-    __privateAdd(this, _depth);
-    __privateAdd(this, _fullpath);
-    __privateAdd(this, _fullpathPosix);
-    __privateAdd(this, _relative);
-    __privateAdd(this, _relativePosix);
-    __privateAdd(this, _type);
-    __privateAdd(this, _children);
-    __privateAdd(this, _linkTarget);
-    __privateAdd(this, _realpath);
-    __privateAdd(this, _onReaddirCB, []);
-    __privateAdd(this, _readdirCBInFlight, false);
-    __privateAdd(this, _asyncReaddirInFlight);
-    this.name = name;
-    __privateSet(this, _matchName, nocase ? normalizeNocase(name) : normalize(name));
-    __privateSet(this, _type, type & TYPEMASK);
-    this.nocase = nocase;
-    this.roots = roots;
-    this.root = root || this;
-    __privateSet(this, _children, children);
-    __privateSet(this, _fullpath, opts.fullpath);
-    __privateSet(this, _relative, opts.relative);
-    __privateSet(this, _relativePosix, opts.relativePosix);
-    this.parent = opts.parent;
-    if (this.parent) {
-      __privateSet(this, _fs, __privateGet(this.parent, _fs));
-    } else {
-      __privateSet(this, _fs, fsFromOption(opts.fs));
-    }
-  }
-  get dev() {
-    return __privateGet(this, _dev);
-  }
-  get mode() {
-    return __privateGet(this, _mode);
-  }
-  get nlink() {
-    return __privateGet(this, _nlink);
-  }
-  get uid() {
-    return __privateGet(this, _uid);
-  }
-  get gid() {
-    return __privateGet(this, _gid);
-  }
-  get rdev() {
-    return __privateGet(this, _rdev);
-  }
-  get blksize() {
-    return __privateGet(this, _blksize);
-  }
-  get ino() {
-    return __privateGet(this, _ino);
-  }
-  get size() {
-    return __privateGet(this, _size2);
-  }
-  get blocks() {
-    return __privateGet(this, _blocks);
-  }
-  get atimeMs() {
-    return __privateGet(this, _atimeMs);
-  }
-  get mtimeMs() {
-    return __privateGet(this, _mtimeMs);
-  }
-  get ctimeMs() {
-    return __privateGet(this, _ctimeMs);
-  }
-  get birthtimeMs() {
-    return __privateGet(this, _birthtimeMs);
-  }
-  get atime() {
-    return __privateGet(this, _atime);
-  }
-  get mtime() {
-    return __privateGet(this, _mtime);
-  }
-  get ctime() {
-    return __privateGet(this, _ctime);
-  }
-  get birthtime() {
-    return __privateGet(this, _birthtime);
-  }
-  /**
-   * This property is for compatibility with the Dirent class as of
-   * Node v20, where Dirent['parentPath'] refers to the path of the
-   * directory that was passed to readdir. For root entries, it's the path
-   * to the entry itself.
-   */
-  get parentPath() {
-    return (this.parent || this).fullpath();
-  }
-  /**
-   * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,
-   * this property refers to the *parent* path, not the path object itself.
-   */
-  get path() {
-    return this.parentPath;
-  }
-  /**
-   * Returns the depth of the Path object from its root.
-   *
-   * For example, a path at `/foo/bar` would have a depth of 2.
-   */
-  depth() {
-    if (__privateGet(this, _depth) !== void 0)
-      return __privateGet(this, _depth);
-    if (!this.parent)
-      return __privateSet(this, _depth, 0);
-    return __privateSet(this, _depth, this.parent.depth() + 1);
-  }
-  /**
-   * @internal
-   */
-  childrenCache() {
-    return __privateGet(this, _children);
-  }
-  /**
-   * Get the Path object referenced by the string path, resolved from this Path
-   */
-  resolve(path4) {
-    var _a3;
-    if (!path4) {
-      return this;
-    }
-    const rootPath = this.getRootString(path4);
-    const dir = path4.substring(rootPath.length);
-    const dirParts = dir.split(this.splitSep);
-    const result = rootPath ? __privateMethod(_a3 = this.getRoot(rootPath), _PathBase_instances, resolveParts_fn).call(_a3, dirParts) : __privateMethod(this, _PathBase_instances, resolveParts_fn).call(this, dirParts);
-    return result;
-  }
-  /**
-   * Returns the cached children Path objects, if still available.  If they
-   * have fallen out of the cache, then returns an empty array, and resets the
-   * READDIR_CALLED bit, so that future calls to readdir() will require an fs
-   * lookup.
-   *
-   * @internal
-   */
-  children() {
-    const cached = __privateGet(this, _children).get(this);
-    if (cached) {
-      return cached;
-    }
-    const children = Object.assign([], { provisional: 0 });
-    __privateGet(this, _children).set(this, children);
-    __privateSet(this, _type, __privateGet(this, _type) & ~READDIR_CALLED);
-    return children;
-  }
-  /**
-   * Resolves a path portion and returns or creates the child Path.
-   *
-   * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
-   * `'..'`.
-   *
-   * This should not be called directly.  If `pathPart` contains any path
-   * separators, it will lead to unsafe undefined behavior.
-   *
-   * Use `Path.resolve()` instead.
-   *
-   * @internal
-   */
-  child(pathPart, opts) {
-    if (pathPart === "" || pathPart === ".") {
-      return this;
-    }
-    if (pathPart === "..") {
-      return this.parent || this;
-    }
-    const children = this.children();
-    const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);
-    for (const p of children) {
-      if (__privateGet(p, _matchName) === name) {
-        return p;
-      }
-    }
-    const s = this.parent ? this.sep : "";
-    const fullpath = __privateGet(this, _fullpath) ? __privateGet(this, _fullpath) + s + pathPart : void 0;
-    const pchild = this.newChild(pathPart, UNKNOWN, {
-      ...opts,
-      parent: this,
-      fullpath
-    });
-    if (!this.canReaddir()) {
-      __privateSet(pchild, _type, __privateGet(pchild, _type) | ENOENT);
-    }
-    children.push(pchild);
-    return pchild;
-  }
-  /**
-   * The relative path from the cwd. If it does not share an ancestor with
-   * the cwd, then this ends up being equivalent to the fullpath()
-   */
-  relative() {
-    if (this.isCWD)
-      return "";
-    if (__privateGet(this, _relative) !== void 0) {
-      return __privateGet(this, _relative);
-    }
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _relative, this.name);
-    }
-    const pv = p.relative();
-    return pv + (!pv || !p.parent ? "" : this.sep) + name;
-  }
-  /**
-   * The relative path from the cwd, using / as the path separator.
-   * If it does not share an ancestor with
-   * the cwd, then this ends up being equivalent to the fullpathPosix()
-   * On posix systems, this is identical to relative().
-   */
-  relativePosix() {
-    if (this.sep === "/")
-      return this.relative();
-    if (this.isCWD)
-      return "";
-    if (__privateGet(this, _relativePosix) !== void 0)
-      return __privateGet(this, _relativePosix);
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _relativePosix, this.fullpathPosix());
-    }
-    const pv = p.relativePosix();
-    return pv + (!pv || !p.parent ? "" : "/") + name;
-  }
-  /**
-   * The fully resolved path string for this Path entry
-   */
-  fullpath() {
-    if (__privateGet(this, _fullpath) !== void 0) {
-      return __privateGet(this, _fullpath);
-    }
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _fullpath, this.name);
-    }
-    const pv = p.fullpath();
-    const fp = pv + (!p.parent ? "" : this.sep) + name;
-    return __privateSet(this, _fullpath, fp);
-  }
-  /**
-   * On platforms other than windows, this is identical to fullpath.
-   *
-   * On windows, this is overridden to return the forward-slash form of the
-   * full UNC path.
-   */
-  fullpathPosix() {
-    if (__privateGet(this, _fullpathPosix) !== void 0)
-      return __privateGet(this, _fullpathPosix);
-    if (this.sep === "/")
-      return __privateSet(this, _fullpathPosix, this.fullpath());
-    if (!this.parent) {
-      const p2 = this.fullpath().replace(/\\/g, "/");
-      if (/^[a-z]:\//i.test(p2)) {
-        return __privateSet(this, _fullpathPosix, `//?/${p2}`);
-      } else {
-        return __privateSet(this, _fullpathPosix, p2);
-      }
-    }
-    const p = this.parent;
-    const pfpp = p.fullpathPosix();
-    const fpp = pfpp + (!pfpp || !p.parent ? "" : "/") + this.name;
-    return __privateSet(this, _fullpathPosix, fpp);
-  }
-  /**
-   * Is the Path of an unknown type?
-   *
-   * Note that we might know *something* about it if there has been a previous
-   * filesystem operation, for example that it does not exist, or is not a
-   * link, or whether it has child entries.
-   */
-  isUnknown() {
-    return (__privateGet(this, _type) & IFMT) === UNKNOWN;
-  }
-  isType(type) {
-    return this[`is${type}`]();
-  }
-  getType() {
-    return this.isUnknown() ? "Unknown" : this.isDirectory() ? "Directory" : this.isFile() ? "File" : this.isSymbolicLink() ? "SymbolicLink" : this.isFIFO() ? "FIFO" : this.isCharacterDevice() ? "CharacterDevice" : this.isBlockDevice() ? "BlockDevice" : (
-      /* c8 ignore start */
-      this.isSocket() ? "Socket" : "Unknown"
-    );
-  }
-  /**
-   * Is the Path a regular file?
-   */
-  isFile() {
-    return (__privateGet(this, _type) & IFMT) === IFREG;
-  }
-  /**
-   * Is the Path a directory?
-   */
-  isDirectory() {
-    return (__privateGet(this, _type) & IFMT) === IFDIR;
-  }
-  /**
-   * Is the path a character device?
-   */
-  isCharacterDevice() {
-    return (__privateGet(this, _type) & IFMT) === IFCHR;
-  }
-  /**
-   * Is the path a block device?
-   */
-  isBlockDevice() {
-    return (__privateGet(this, _type) & IFMT) === IFBLK;
-  }
-  /**
-   * Is the path a FIFO pipe?
-   */
-  isFIFO() {
-    return (__privateGet(this, _type) & IFMT) === IFIFO;
-  }
-  /**
-   * Is the path a socket?
-   */
-  isSocket() {
-    return (__privateGet(this, _type) & IFMT) === IFSOCK;
-  }
-  /**
-   * Is the path a symbolic link?
-   */
-  isSymbolicLink() {
-    return (__privateGet(this, _type) & IFLNK) === IFLNK;
-  }
-  /**
-   * Return the entry if it has been subject of a successful lstat, or
-   * undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* simply
-   * mean that we haven't called lstat on it.
-   */
-  lstatCached() {
-    return __privateGet(this, _type) & LSTAT_CALLED ? this : void 0;
-  }
-  /**
-   * Return the cached link target if the entry has been the subject of a
-   * successful readlink, or undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * readlink() has been called at some point.
-   */
-  readlinkCached() {
-    return __privateGet(this, _linkTarget);
-  }
-  /**
-   * Returns the cached realpath target if the entry has been the subject
-   * of a successful realpath, or undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * realpath() has been called at some point.
-   */
-  realpathCached() {
-    return __privateGet(this, _realpath);
-  }
-  /**
-   * Returns the cached child Path entries array if the entry has been the
-   * subject of a successful readdir(), or [] otherwise.
-   *
-   * Does not read the filesystem, so an empty array *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * readdir() has been called recently enough to still be valid.
-   */
-  readdirCached() {
-    const children = this.children();
-    return children.slice(0, children.provisional);
-  }
-  /**
-   * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
-   * any indication that readlink will definitely fail.
-   *
-   * Returns false if the path is known to not be a symlink, if a previous
-   * readlink failed, or if the entry does not exist.
-   */
-  canReadlink() {
-    if (__privateGet(this, _linkTarget))
-      return true;
-    if (!this.parent)
-      return false;
-    const ifmt = __privateGet(this, _type) & IFMT;
-    return !(ifmt !== UNKNOWN && ifmt !== IFLNK || __privateGet(this, _type) & ENOREADLINK || __privateGet(this, _type) & ENOENT);
-  }
-  /**
-   * Return true if readdir has previously been successfully called on this
-   * path, indicating that cachedReaddir() is likely valid.
-   */
-  calledReaddir() {
-    return !!(__privateGet(this, _type) & READDIR_CALLED);
-  }
-  /**
-   * Returns true if the path is known to not exist. That is, a previous lstat
-   * or readdir failed to verify its existence when that would have been
-   * expected, or a parent entry was marked either enoent or enotdir.
-   */
-  isENOENT() {
-    return !!(__privateGet(this, _type) & ENOENT);
-  }
-  /**
-   * Return true if the path is a match for the given path name.  This handles
-   * case sensitivity and unicode normalization.
-   *
-   * Note: even on case-sensitive systems, it is **not** safe to test the
-   * equality of the `.name` property to determine whether a given pathname
-   * matches, due to unicode normalization mismatches.
-   *
-   * Always use this method instead of testing the `path.name` property
-   * directly.
-   */
-  isNamed(n) {
-    return !this.nocase ? __privateGet(this, _matchName) === normalize(n) : __privateGet(this, _matchName) === normalizeNocase(n);
-  }
-  /**
-   * Return the Path object corresponding to the target of a symbolic link.
-   *
-   * If the Path is not a symbolic link, or if the readlink call fails for any
-   * reason, `undefined` is returned.
-   *
-   * Result is cached, and thus may be outdated if the filesystem is mutated.
-   */
-  async readlink() {
-    const target = __privateGet(this, _linkTarget);
-    if (target) {
-      return target;
-    }
-    if (!this.canReadlink()) {
-      return void 0;
-    }
-    if (!this.parent) {
-      return void 0;
-    }
-    try {
-      const read = await __privateGet(this, _fs).promises.readlink(this.fullpath());
-      const linkTarget = (await this.parent.realpath())?.resolve(read);
-      if (linkTarget) {
-        return __privateSet(this, _linkTarget, linkTarget);
-      }
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
-      return void 0;
-    }
-  }
-  /**
-   * Synchronous {@link PathBase.readlink}
-   */
-  readlinkSync() {
-    const target = __privateGet(this, _linkTarget);
-    if (target) {
-      return target;
-    }
-    if (!this.canReadlink()) {
-      return void 0;
-    }
-    if (!this.parent) {
-      return void 0;
-    }
-    try {
-      const read = __privateGet(this, _fs).readlinkSync(this.fullpath());
-      const linkTarget = this.parent.realpathSync()?.resolve(read);
-      if (linkTarget) {
-        return __privateSet(this, _linkTarget, linkTarget);
-      }
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
-      return void 0;
-    }
-  }
-  /**
-   * Call lstat() on this Path, and update all known information that can be
-   * determined.
-   *
-   * Note that unlike `fs.lstat()`, the returned value does not contain some
-   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
-   * information is required, you will need to call `fs.lstat` yourself.
-   *
-   * If the Path refers to a nonexistent file, or if the lstat call fails for
-   * any reason, `undefined` is returned.  Otherwise the updated Path object is
-   * returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async lstat() {
-    if ((__privateGet(this, _type) & ENOENT) === 0) {
-      try {
-        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, await __privateGet(this, _fs).promises.lstat(this.fullpath()));
-        return this;
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
-      }
-    }
-  }
-  /**
-   * synchronous {@link PathBase.lstat}
-   */
-  lstatSync() {
-    if ((__privateGet(this, _type) & ENOENT) === 0) {
-      try {
-        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, __privateGet(this, _fs).lstatSync(this.fullpath()));
-        return this;
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
-      }
-    }
-  }
-  /**
-   * Standard node-style callback interface to get list of directory entries.
-   *
-   * If the Path cannot or does not contain any children, then an empty array
-   * is returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   *
-   * @param cb The callback called with (er, entries).  Note that the `er`
-   * param is somewhat extraneous, as all readdir() errors are handled and
-   * simply result in an empty set of entries being returned.
-   * @param allowZalgo Boolean indicating that immediately known results should
-   * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
-   * zalgo at your peril, the dark pony lord is devious and unforgiving.
-   */
-  readdirCB(cb, allowZalgo = false) {
-    if (!this.canReaddir()) {
-      if (allowZalgo)
-        cb(null, []);
-      else
-        queueMicrotask(() => cb(null, []));
-      return;
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      const c = children.slice(0, children.provisional);
-      if (allowZalgo)
-        cb(null, c);
-      else
-        queueMicrotask(() => cb(null, c));
-      return;
-    }
-    __privateGet(this, _onReaddirCB).push(cb);
-    if (__privateGet(this, _readdirCBInFlight)) {
-      return;
-    }
-    __privateSet(this, _readdirCBInFlight, true);
-    const fullpath = this.fullpath();
-    __privateGet(this, _fs).readdir(fullpath, { withFileTypes: true }, (er, entries) => {
-      if (er) {
-        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-        children.provisional = 0;
-      } else {
-        for (const e of entries) {
-          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-        }
-        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-      }
-      __privateMethod(this, _PathBase_instances, callOnReaddirCB_fn).call(this, children.slice(0, children.provisional));
-      return;
-    });
-  }
-  /**
-   * Return an array of known child entries.
-   *
-   * If the Path cannot or does not contain any children, then an empty array
-   * is returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async readdir() {
-    if (!this.canReaddir()) {
-      return [];
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      return children.slice(0, children.provisional);
-    }
-    const fullpath = this.fullpath();
-    if (__privateGet(this, _asyncReaddirInFlight)) {
-      await __privateGet(this, _asyncReaddirInFlight);
-    } else {
-      let resolve6 = () => {
-      };
-      __privateSet(this, _asyncReaddirInFlight, new Promise((res) => resolve6 = res));
-      try {
-        for (const e of await __privateGet(this, _fs).promises.readdir(fullpath, {
-          withFileTypes: true
-        })) {
-          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-        }
-        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-        children.provisional = 0;
-      }
-      __privateSet(this, _asyncReaddirInFlight, void 0);
-      resolve6();
-    }
-    return children.slice(0, children.provisional);
-  }
-  /**
-   * synchronous {@link PathBase.readdir}
-   */
-  readdirSync() {
-    if (!this.canReaddir()) {
-      return [];
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      return children.slice(0, children.provisional);
-    }
-    const fullpath = this.fullpath();
-    try {
-      for (const e of __privateGet(this, _fs).readdirSync(fullpath, {
-        withFileTypes: true
-      })) {
-        __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-      }
-      __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-      children.provisional = 0;
-    }
-    return children.slice(0, children.provisional);
-  }
-  canReaddir() {
-    if (__privateGet(this, _type) & ENOCHILD)
-      return false;
-    const ifmt = IFMT & __privateGet(this, _type);
-    if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
-      return false;
-    }
-    return true;
-  }
-  shouldWalk(dirs, walkFilter) {
-    return (__privateGet(this, _type) & IFDIR) === IFDIR && !(__privateGet(this, _type) & ENOCHILD) && !dirs.has(this) && (!walkFilter || walkFilter(this));
-  }
-  /**
-   * Return the Path object corresponding to path as resolved
-   * by realpath(3).
-   *
-   * If the realpath call fails for any reason, `undefined` is returned.
-   *
-   * Result is cached, and thus may be outdated if the filesystem is mutated.
-   * On success, returns a Path object.
-   */
-  async realpath() {
-    if (__privateGet(this, _realpath))
-      return __privateGet(this, _realpath);
-    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
-      return void 0;
-    try {
-      const rp = await __privateGet(this, _fs).promises.realpath(this.fullpath());
-      return __privateSet(this, _realpath, this.resolve(rp));
-    } catch (_) {
-      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
-    }
-  }
-  /**
-   * Synchronous {@link realpath}
-   */
-  realpathSync() {
-    if (__privateGet(this, _realpath))
-      return __privateGet(this, _realpath);
-    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
-      return void 0;
-    try {
-      const rp = __privateGet(this, _fs).realpathSync(this.fullpath());
-      return __privateSet(this, _realpath, this.resolve(rp));
-    } catch (_) {
-      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
-    }
-  }
-  /**
-   * Internal method to mark this Path object as the scurry cwd,
-   * called by {@link PathScurry#chdir}
-   *
-   * @internal
-   */
-  [setAsCwd](oldCwd) {
-    if (oldCwd === this)
-      return;
-    oldCwd.isCWD = false;
-    this.isCWD = true;
-    const changed = /* @__PURE__ */ new Set([]);
-    let rp = [];
-    let p = this;
-    while (p && p.parent) {
-      changed.add(p);
-      __privateSet(p, _relative, rp.join(this.sep));
-      __privateSet(p, _relativePosix, rp.join("/"));
-      p = p.parent;
-      rp.push("..");
-    }
-    p = oldCwd;
-    while (p && p.parent && !changed.has(p)) {
-      __privateSet(p, _relative, void 0);
-      __privateSet(p, _relativePosix, void 0);
-      p = p.parent;
-    }
-  }
-};
-_fs = new WeakMap();
-_dev = new WeakMap();
-_mode = new WeakMap();
-_nlink = new WeakMap();
-_uid = new WeakMap();
-_gid = new WeakMap();
-_rdev = new WeakMap();
-_blksize = new WeakMap();
-_ino = new WeakMap();
-_size2 = new WeakMap();
-_blocks = new WeakMap();
-_atimeMs = new WeakMap();
-_mtimeMs = new WeakMap();
-_ctimeMs = new WeakMap();
-_birthtimeMs = new WeakMap();
-_atime = new WeakMap();
-_mtime = new WeakMap();
-_ctime = new WeakMap();
-_birthtime = new WeakMap();
-_matchName = new WeakMap();
-_depth = new WeakMap();
-_fullpath = new WeakMap();
-_fullpathPosix = new WeakMap();
-_relative = new WeakMap();
-_relativePosix = new WeakMap();
-_type = new WeakMap();
-_children = new WeakMap();
-_linkTarget = new WeakMap();
-_realpath = new WeakMap();
-_PathBase_instances = new WeakSet();
-resolveParts_fn = function(dirParts) {
-  let p = this;
-  for (const part of dirParts) {
-    p = p.child(part);
-  }
-  return p;
-};
-readdirSuccess_fn = function(children) {
-  var _a3;
-  __privateSet(this, _type, __privateGet(this, _type) | READDIR_CALLED);
-  for (let p = children.provisional; p < children.length; p++) {
-    const c = children[p];
-    if (c)
-      __privateMethod(_a3 = c, _PathBase_instances, markENOENT_fn).call(_a3);
-  }
-};
-markENOENT_fn = function() {
-  if (__privateGet(this, _type) & ENOENT)
-    return;
-  __privateSet(this, _type, (__privateGet(this, _type) | ENOENT) & IFMT_UNKNOWN);
-  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
-};
-markChildrenENOENT_fn = function() {
-  var _a3;
-  const children = this.children();
-  children.provisional = 0;
-  for (const p of children) {
-    __privateMethod(_a3 = p, _PathBase_instances, markENOENT_fn).call(_a3);
-  }
-};
-markENOREALPATH_fn = function() {
-  __privateSet(this, _type, __privateGet(this, _type) | ENOREALPATH);
-  __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
-};
-// save the information when we know the entry is not a dir
-markENOTDIR_fn = function() {
-  if (__privateGet(this, _type) & ENOTDIR)
-    return;
-  let t = __privateGet(this, _type);
-  if ((t & IFMT) === IFDIR)
-    t &= IFMT_UNKNOWN;
-  __privateSet(this, _type, t | ENOTDIR);
-  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
-};
-readdirFail_fn = function(code = "") {
-  if (code === "ENOTDIR" || code === "EPERM") {
-    __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
-  } else if (code === "ENOENT") {
-    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
-  } else {
-    this.children().provisional = 0;
-  }
-};
-lstatFail_fn = function(code = "") {
-  var _a3;
-  if (code === "ENOTDIR") {
-    const p = this.parent;
-    __privateMethod(_a3 = p, _PathBase_instances, markENOTDIR_fn).call(_a3);
-  } else if (code === "ENOENT") {
-    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
-  }
-};
-readlinkFail_fn = function(code = "") {
-  var _a3;
-  let ter = __privateGet(this, _type);
-  ter |= ENOREADLINK;
-  if (code === "ENOENT")
-    ter |= ENOENT;
-  if (code === "EINVAL" || code === "UNKNOWN") {
-    ter &= IFMT_UNKNOWN;
-  }
-  __privateSet(this, _type, ter);
-  if (code === "ENOTDIR" && this.parent) {
-    __privateMethod(_a3 = this.parent, _PathBase_instances, markENOTDIR_fn).call(_a3);
-  }
-};
-readdirAddChild_fn = function(e, c) {
-  return __privateMethod(this, _PathBase_instances, readdirMaybePromoteChild_fn).call(this, e, c) || __privateMethod(this, _PathBase_instances, readdirAddNewChild_fn).call(this, e, c);
-};
-readdirAddNewChild_fn = function(e, c) {
-  const type = entToType(e);
-  const child = this.newChild(e.name, type, { parent: this });
-  const ifmt = __privateGet(child, _type) & IFMT;
-  if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
-    __privateSet(child, _type, __privateGet(child, _type) | ENOTDIR);
-  }
-  c.unshift(child);
-  c.provisional++;
-  return child;
-};
-readdirMaybePromoteChild_fn = function(e, c) {
-  for (let p = c.provisional; p < c.length; p++) {
-    const pchild = c[p];
-    const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);
-    if (name !== __privateGet(pchild, _matchName)) {
-      continue;
-    }
-    return __privateMethod(this, _PathBase_instances, readdirPromoteChild_fn).call(this, e, pchild, p, c);
-  }
-};
-readdirPromoteChild_fn = function(e, p, index, c) {
-  const v = p.name;
-  __privateSet(p, _type, __privateGet(p, _type) & IFMT_UNKNOWN | entToType(e));
-  if (v !== e.name)
-    p.name = e.name;
-  if (index !== c.provisional) {
-    if (index === c.length - 1)
-      c.pop();
-    else
-      c.splice(index, 1);
-    c.unshift(p);
-  }
-  c.provisional++;
-  return p;
-};
-applyStat_fn = function(st) {
-  const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid } = st;
-  __privateSet(this, _atime, atime);
-  __privateSet(this, _atimeMs, atimeMs);
-  __privateSet(this, _birthtime, birthtime);
-  __privateSet(this, _birthtimeMs, birthtimeMs);
-  __privateSet(this, _blksize, blksize);
-  __privateSet(this, _blocks, blocks);
-  __privateSet(this, _ctime, ctime);
-  __privateSet(this, _ctimeMs, ctimeMs);
-  __privateSet(this, _dev, dev);
-  __privateSet(this, _gid, gid);
-  __privateSet(this, _ino, ino);
-  __privateSet(this, _mode, mode);
-  __privateSet(this, _mtime, mtime);
-  __privateSet(this, _mtimeMs, mtimeMs);
-  __privateSet(this, _nlink, nlink);
-  __privateSet(this, _rdev, rdev);
-  __privateSet(this, _size2, size);
-  __privateSet(this, _uid, uid);
-  const ifmt = entToType(st);
-  __privateSet(this, _type, __privateGet(this, _type) & IFMT_UNKNOWN | ifmt | LSTAT_CALLED);
-  if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
-    __privateSet(this, _type, __privateGet(this, _type) | ENOTDIR);
-  }
-};
-_onReaddirCB = new WeakMap();
-_readdirCBInFlight = new WeakMap();
-callOnReaddirCB_fn = function(children) {
-  __privateSet(this, _readdirCBInFlight, false);
-  const cbs = __privateGet(this, _onReaddirCB).slice();
-  __privateGet(this, _onReaddirCB).length = 0;
-  cbs.forEach((cb) => cb(null, children));
-};
-_asyncReaddirInFlight = new WeakMap();
-var PathWin32 = class _PathWin32 extends PathBase {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    super(name, type, root, roots, nocase, children, opts);
-    /**
-     * Separator for generating path strings.
-     */
-    __publicField(this, "sep", "\\");
-    /**
-     * Separator for parsing path strings.
-     */
-    __publicField(this, "splitSep", eitherSep);
-  }
-  /**
-   * @internal
-   */
-  newChild(name, type = UNKNOWN, opts = {}) {
-    return new _PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
-  }
-  /**
-   * @internal
-   */
-  getRootString(path4) {
-    return win32.parse(path4).root;
-  }
-  /**
-   * @internal
-   */
-  getRoot(rootPath) {
-    rootPath = uncToDrive(rootPath.toUpperCase());
-    if (rootPath === this.root.name) {
-      return this.root;
-    }
-    for (const [compare, root] of Object.entries(this.roots)) {
-      if (this.sameRoot(rootPath, compare)) {
-        return this.roots[rootPath] = root;
-      }
-    }
-    return this.roots[rootPath] = new PathScurryWin32(rootPath, this).root;
-  }
-  /**
-   * @internal
-   */
-  sameRoot(rootPath, compare = this.root.name) {
-    rootPath = rootPath.toUpperCase().replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
-    return rootPath === compare;
-  }
-};
-var PathPosix = class _PathPosix extends PathBase {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    super(name, type, root, roots, nocase, children, opts);
-    /**
-     * separator for parsing path strings
-     */
-    __publicField(this, "splitSep", "/");
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "/");
-  }
-  /**
-   * @internal
-   */
-  getRootString(path4) {
-    return path4.startsWith("/") ? "/" : "";
-  }
-  /**
-   * @internal
-   */
-  getRoot(_rootPath) {
-    return this.root;
-  }
-  /**
-   * @internal
-   */
-  newChild(name, type = UNKNOWN, opts = {}) {
-    return new _PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
-  }
-};
-var _resolveCache, _resolvePosixCache, _children2, _fs2;
-var PathScurryBase = class {
-  /**
-   * This class should not be instantiated directly.
-   *
-   * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
-   *
-   * @internal
-   */
-  constructor(cwd = process.cwd(), pathImpl, sep2, { nocase, childrenCacheSize = 16 * 1024, fs: fs4 = defaultFS } = {}) {
-    /**
-     * The root Path entry for the current working directory of this Scurry
-     */
-    __publicField(this, "root");
-    /**
-     * The string path for the root of this Scurry's current working directory
-     */
-    __publicField(this, "rootPath");
-    /**
-     * A collection of all roots encountered, referenced by rootPath
-     */
-    __publicField(this, "roots");
-    /**
-     * The Path entry corresponding to this PathScurry's current working directory.
-     */
-    __publicField(this, "cwd");
-    __privateAdd(this, _resolveCache);
-    __privateAdd(this, _resolvePosixCache);
-    __privateAdd(this, _children2);
-    /**
-     * Perform path comparisons case-insensitively.
-     *
-     * Defaults true on Darwin and Windows systems, false elsewhere.
-     */
-    __publicField(this, "nocase");
-    __privateAdd(this, _fs2);
-    __privateSet(this, _fs2, fsFromOption(fs4));
-    if (cwd instanceof URL || cwd.startsWith("file://")) {
-      cwd = fileURLToPath(cwd);
-    }
-    const cwdPath = pathImpl.resolve(cwd);
-    this.roots = /* @__PURE__ */ Object.create(null);
-    this.rootPath = this.parseRootPath(cwdPath);
-    __privateSet(this, _resolveCache, new ResolveCache());
-    __privateSet(this, _resolvePosixCache, new ResolveCache());
-    __privateSet(this, _children2, new ChildrenCache(childrenCacheSize));
-    const split = cwdPath.substring(this.rootPath.length).split(sep2);
-    if (split.length === 1 && !split[0]) {
-      split.pop();
-    }
-    if (nocase === void 0) {
-      throw new TypeError("must provide nocase setting to PathScurryBase ctor");
-    }
-    this.nocase = nocase;
-    this.root = this.newRoot(__privateGet(this, _fs2));
-    this.roots[this.rootPath] = this.root;
-    let prev = this.root;
-    let len = split.length - 1;
-    const joinSep = pathImpl.sep;
-    let abs = this.rootPath;
-    let sawFirst = false;
-    for (const part of split) {
-      const l = len--;
-      prev = prev.child(part, {
-        relative: new Array(l).fill("..").join(joinSep),
-        relativePosix: new Array(l).fill("..").join("/"),
-        fullpath: abs += (sawFirst ? "" : joinSep) + part
-      });
-      sawFirst = true;
-    }
-    this.cwd = prev;
-  }
-  /**
-   * Get the depth of a provided path, string, or the cwd
-   */
-  depth(path4 = this.cwd) {
-    if (typeof path4 === "string") {
-      path4 = this.cwd.resolve(path4);
-    }
-    return path4.depth();
-  }
-  /**
-   * Return the cache of child entries.  Exposed so subclasses can create
-   * child Path objects in a platform-specific way.
-   *
-   * @internal
-   */
-  childrenCache() {
-    return __privateGet(this, _children2);
-  }
-  /**
-   * Resolve one or more path strings to a resolved string
-   *
-   * Same interface as require('path').resolve.
-   *
-   * Much faster than path.resolve() when called multiple times for the same
-   * path, because the resolved Path objects are cached.  Much slower
-   * otherwise.
-   */
-  resolve(...paths) {
-    let r = "";
-    for (let i = paths.length - 1; i >= 0; i--) {
-      const p = paths[i];
-      if (!p || p === ".")
-        continue;
-      r = r ? `${p}/${r}` : p;
-      if (this.isAbsolute(p)) {
-        break;
-      }
-    }
-    const cached = __privateGet(this, _resolveCache).get(r);
-    if (cached !== void 0) {
-      return cached;
-    }
-    const result = this.cwd.resolve(r).fullpath();
-    __privateGet(this, _resolveCache).set(r, result);
-    return result;
-  }
-  /**
-   * Resolve one or more path strings to a resolved string, returning
-   * the posix path.  Identical to .resolve() on posix systems, but on
-   * windows will return a forward-slash separated UNC path.
-   *
-   * Same interface as require('path').resolve.
-   *
-   * Much faster than path.resolve() when called multiple times for the same
-   * path, because the resolved Path objects are cached.  Much slower
-   * otherwise.
-   */
-  resolvePosix(...paths) {
-    let r = "";
-    for (let i = paths.length - 1; i >= 0; i--) {
-      const p = paths[i];
-      if (!p || p === ".")
-        continue;
-      r = r ? `${p}/${r}` : p;
-      if (this.isAbsolute(p)) {
-        break;
-      }
-    }
-    const cached = __privateGet(this, _resolvePosixCache).get(r);
-    if (cached !== void 0) {
-      return cached;
-    }
-    const result = this.cwd.resolve(r).fullpathPosix();
-    __privateGet(this, _resolvePosixCache).set(r, result);
-    return result;
-  }
-  /**
-   * find the relative path from the cwd to the supplied path string or entry
-   */
-  relative(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.relative();
-  }
-  /**
-   * find the relative path from the cwd to the supplied path string or
-   * entry, using / as the path delimiter, even on Windows.
-   */
-  relativePosix(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.relativePosix();
-  }
-  /**
-   * Return the basename for the provided string or Path object
-   */
-  basename(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.name;
-  }
-  /**
-   * Return the dirname for the provided string or Path object
-   */
-  dirname(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return (entry.parent || entry).fullpath();
-  }
-  async readdir(entry = this.cwd, opts = {
-    withFileTypes: true
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes } = opts;
-    if (!entry.canReaddir()) {
-      return [];
-    } else {
-      const p = await entry.readdir();
-      return withFileTypes ? p : p.map((e) => e.name);
-    }
-  }
-  readdirSync(entry = this.cwd, opts = {
-    withFileTypes: true
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true } = opts;
-    if (!entry.canReaddir()) {
-      return [];
-    } else if (withFileTypes) {
-      return entry.readdirSync();
-    } else {
-      return entry.readdirSync().map((e) => e.name);
-    }
-  }
-  /**
-   * Call lstat() on the string or Path object, and update all known
-   * information that can be determined.
-   *
-   * Note that unlike `fs.lstat()`, the returned value does not contain some
-   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
-   * information is required, you will need to call `fs.lstat` yourself.
-   *
-   * If the Path refers to a nonexistent file, or if the lstat call fails for
-   * any reason, `undefined` is returned.  Otherwise the updated Path object is
-   * returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async lstat(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.lstat();
-  }
-  /**
-   * synchronous {@link PathScurryBase.lstat}
-   */
-  lstatSync(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.lstatSync();
-  }
-  async readlink(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = await entry.readlink();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  readlinkSync(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = entry.readlinkSync();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  async realpath(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = await entry.realpath();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  realpathSync(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = entry.realpathSync();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  async walk(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = [];
-    if (!filter2 || filter2(entry)) {
-      results.push(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set();
-    const walk = (dir, cb) => {
-      dirs.add(dir);
-      dir.readdirCB((er, entries) => {
-        if (er) {
-          return cb(er);
-        }
-        let len = entries.length;
-        if (!len)
-          return cb();
-        const next = () => {
-          if (--len === 0) {
-            cb();
-          }
-        };
-        for (const e of entries) {
-          if (!filter2 || filter2(e)) {
-            results.push(withFileTypes ? e : e.fullpath());
-          }
-          if (follow && e.isSymbolicLink()) {
-            e.realpath().then((r) => r?.isUnknown() ? r.lstat() : r).then((r) => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
-          } else {
-            if (e.shouldWalk(dirs, walkFilter)) {
-              walk(e, next);
-            } else {
-              next();
-            }
-          }
-        }
-      }, true);
-    };
-    const start = entry;
-    return new Promise((res, rej) => {
-      walk(start, (er) => {
-        if (er)
-          return rej(er);
-        res(results);
-      });
-    });
-  }
-  walkSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = [];
-    if (!filter2 || filter2(entry)) {
-      results.push(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set([entry]);
-    for (const dir of dirs) {
-      const entries = dir.readdirSync();
-      for (const e of entries) {
-        if (!filter2 || filter2(e)) {
-          results.push(withFileTypes ? e : e.fullpath());
-        }
-        let r = e;
-        if (e.isSymbolicLink()) {
-          if (!(follow && (r = e.realpathSync())))
-            continue;
-          if (r.isUnknown())
-            r.lstatSync();
-        }
-        if (r.shouldWalk(dirs, walkFilter)) {
-          dirs.add(r);
-        }
-      }
-    }
-    return results;
-  }
-  /**
-   * Support for `for await`
-   *
-   * Alias for {@link PathScurryBase.iterate}
-   *
-   * Note: As of Node 19, this is very slow, compared to other methods of
-   * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
-   * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
-   */
-  [Symbol.asyncIterator]() {
-    return this.iterate();
-  }
-  iterate(entry = this.cwd, options = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      options = entry;
-      entry = this.cwd;
-    }
-    return this.stream(entry, options)[Symbol.asyncIterator]();
-  }
-  /**
-   * Iterating over a PathScurry performs a synchronous walk.
-   *
-   * Alias for {@link PathScurryBase.iterateSync}
-   */
-  [Symbol.iterator]() {
-    return this.iterateSync();
-  }
-  *iterateSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    if (!filter2 || filter2(entry)) {
-      yield withFileTypes ? entry : entry.fullpath();
-    }
-    const dirs = /* @__PURE__ */ new Set([entry]);
-    for (const dir of dirs) {
-      const entries = dir.readdirSync();
-      for (const e of entries) {
-        if (!filter2 || filter2(e)) {
-          yield withFileTypes ? e : e.fullpath();
-        }
-        let r = e;
-        if (e.isSymbolicLink()) {
-          if (!(follow && (r = e.realpathSync())))
-            continue;
-          if (r.isUnknown())
-            r.lstatSync();
-        }
-        if (r.shouldWalk(dirs, walkFilter)) {
-          dirs.add(r);
-        }
-      }
-    }
-  }
-  stream(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = new Minipass({ objectMode: true });
-    if (!filter2 || filter2(entry)) {
-      results.write(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set();
-    const queue = [entry];
-    let processing = 0;
-    const process2 = () => {
-      let paused = false;
-      while (!paused) {
-        const dir = queue.shift();
-        if (!dir) {
-          if (processing === 0)
-            results.end();
-          return;
-        }
-        processing++;
-        dirs.add(dir);
-        const onReaddir = (er, entries, didRealpaths = false) => {
-          if (er)
-            return results.emit("error", er);
-          if (follow && !didRealpaths) {
-            const promises2 = [];
-            for (const e of entries) {
-              if (e.isSymbolicLink()) {
-                promises2.push(e.realpath().then((r) => r?.isUnknown() ? r.lstat() : r));
-              }
-            }
-            if (promises2.length) {
-              Promise.all(promises2).then(() => onReaddir(null, entries, true));
-              return;
-            }
-          }
-          for (const e of entries) {
-            if (e && (!filter2 || filter2(e))) {
-              if (!results.write(withFileTypes ? e : e.fullpath())) {
-                paused = true;
-              }
-            }
-          }
-          processing--;
-          for (const e of entries) {
-            const r = e.realpathCached() || e;
-            if (r.shouldWalk(dirs, walkFilter)) {
-              queue.push(r);
-            }
-          }
-          if (paused && !results.flowing) {
-            results.once("drain", process2);
-          } else if (!sync2) {
-            process2();
-          }
-        };
-        let sync2 = true;
-        dir.readdirCB(onReaddir, true);
-        sync2 = false;
-      }
-    };
-    process2();
-    return results;
-  }
-  streamSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = new Minipass({ objectMode: true });
-    const dirs = /* @__PURE__ */ new Set();
-    if (!filter2 || filter2(entry)) {
-      results.write(withFileTypes ? entry : entry.fullpath());
-    }
-    const queue = [entry];
-    let processing = 0;
-    const process2 = () => {
-      let paused = false;
-      while (!paused) {
-        const dir = queue.shift();
-        if (!dir) {
-          if (processing === 0)
-            results.end();
-          return;
-        }
-        processing++;
-        dirs.add(dir);
-        const entries = dir.readdirSync();
-        for (const e of entries) {
-          if (!filter2 || filter2(e)) {
-            if (!results.write(withFileTypes ? e : e.fullpath())) {
-              paused = true;
-            }
-          }
-        }
-        processing--;
-        for (const e of entries) {
-          let r = e;
-          if (e.isSymbolicLink()) {
-            if (!(follow && (r = e.realpathSync())))
-              continue;
-            if (r.isUnknown())
-              r.lstatSync();
-          }
-          if (r.shouldWalk(dirs, walkFilter)) {
-            queue.push(r);
-          }
-        }
-      }
-      if (paused && !results.flowing)
-        results.once("drain", process2);
-    };
-    process2();
-    return results;
-  }
-  chdir(path4 = this.cwd) {
-    const oldCwd = this.cwd;
-    this.cwd = typeof path4 === "string" ? this.cwd.resolve(path4) : path4;
-    this.cwd[setAsCwd](oldCwd);
-  }
-};
-_resolveCache = new WeakMap();
-_resolvePosixCache = new WeakMap();
-_children2 = new WeakMap();
-_fs2 = new WeakMap();
-var PathScurryWin32 = class extends PathScurryBase {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = true } = opts;
-    super(cwd, win32, "\\", { ...opts, nocase });
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "\\");
-    this.nocase = nocase;
-    for (let p = this.cwd; p; p = p.parent) {
-      p.nocase = this.nocase;
-    }
-  }
-  /**
-   * @internal
-   */
-  parseRootPath(dir) {
-    return win32.parse(dir).root.toUpperCase();
-  }
-  /**
-   * @internal
-   */
-  newRoot(fs4) {
-    return new PathWin32(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs4 });
-  }
-  /**
-   * Return true if the provided path string is an absolute path
-   */
-  isAbsolute(p) {
-    return p.startsWith("/") || p.startsWith("\\") || /^[a-z]:(\/|\\)/i.test(p);
-  }
-};
-var PathScurryPosix = class extends PathScurryBase {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = false } = opts;
-    super(cwd, posix, "/", { ...opts, nocase });
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "/");
-    this.nocase = nocase;
-  }
-  /**
-   * @internal
-   */
-  parseRootPath(_dir) {
-    return "/";
-  }
-  /**
-   * @internal
-   */
-  newRoot(fs4) {
-    return new PathPosix(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs4 });
-  }
-  /**
-   * Return true if the provided path string is an absolute path
-   */
-  isAbsolute(p) {
-    return p.startsWith("/");
-  }
-};
-var PathScurryDarwin = class extends PathScurryPosix {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = true } = opts;
-    super(cwd, { ...opts, nocase });
-  }
-};
-var Path = process.platform === "win32" ? PathWin32 : PathPosix;
-var PathScurry = process.platform === "win32" ? PathScurryWin32 : process.platform === "darwin" ? PathScurryDarwin : PathScurryPosix;
-
-// node_modules/glob/dist/esm/pattern.js
-var isPatternList = (pl) => pl.length >= 1;
-var isGlobList = (gl) => gl.length >= 1;
-var _patternList, _globList, _index, _platform, _rest, _globString, _isDrive, _isUNC, _isAbsolute, _followGlobstar;
-var _Pattern = class _Pattern {
-  constructor(patternList, globList, index, platform) {
-    __privateAdd(this, _patternList);
-    __privateAdd(this, _globList);
-    __privateAdd(this, _index);
-    __publicField(this, "length");
-    __privateAdd(this, _platform);
-    __privateAdd(this, _rest);
-    __privateAdd(this, _globString);
-    __privateAdd(this, _isDrive);
-    __privateAdd(this, _isUNC);
-    __privateAdd(this, _isAbsolute);
-    __privateAdd(this, _followGlobstar, true);
-    if (!isPatternList(patternList)) {
-      throw new TypeError("empty pattern list");
-    }
-    if (!isGlobList(globList)) {
-      throw new TypeError("empty glob list");
-    }
-    if (globList.length !== patternList.length) {
-      throw new TypeError("mismatched pattern list and glob list lengths");
-    }
-    this.length = patternList.length;
-    if (index < 0 || index >= this.length) {
-      throw new TypeError("index out of range");
-    }
-    __privateSet(this, _patternList, patternList);
-    __privateSet(this, _globList, globList);
-    __privateSet(this, _index, index);
-    __privateSet(this, _platform, platform);
-    if (__privateGet(this, _index) === 0) {
-      if (this.isUNC()) {
-        const [p0, p1, p2, p3, ...prest] = __privateGet(this, _patternList);
-        const [g0, g1, g2, g3, ...grest] = __privateGet(this, _globList);
-        if (prest[0] === "") {
-          prest.shift();
-          grest.shift();
-        }
-        const p = [p0, p1, p2, p3, ""].join("/");
-        const g = [g0, g1, g2, g3, ""].join("/");
-        __privateSet(this, _patternList, [p, ...prest]);
-        __privateSet(this, _globList, [g, ...grest]);
-        this.length = __privateGet(this, _patternList).length;
-      } else if (this.isDrive() || this.isAbsolute()) {
-        const [p1, ...prest] = __privateGet(this, _patternList);
-        const [g1, ...grest] = __privateGet(this, _globList);
-        if (prest[0] === "") {
-          prest.shift();
-          grest.shift();
-        }
-        const p = p1 + "/";
-        const g = g1 + "/";
-        __privateSet(this, _patternList, [p, ...prest]);
-        __privateSet(this, _globList, [g, ...grest]);
-        this.length = __privateGet(this, _patternList).length;
-      }
-    }
-  }
-  /**
-   * The first entry in the parsed list of patterns
-   */
-  pattern() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)];
-  }
-  /**
-   * true of if pattern() returns a string
-   */
-  isString() {
-    return typeof __privateGet(this, _patternList)[__privateGet(this, _index)] === "string";
-  }
-  /**
-   * true of if pattern() returns GLOBSTAR
-   */
-  isGlobstar() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)] === GLOBSTAR;
-  }
-  /**
-   * true if pattern() returns a regexp
-   */
-  isRegExp() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)] instanceof RegExp;
-  }
-  /**
-   * The /-joined set of glob parts that make up this pattern
-   */
-  globString() {
-    return __privateSet(this, _globString, __privateGet(this, _globString) || (__privateGet(this, _index) === 0 ? this.isAbsolute() ? __privateGet(this, _globList)[0] + __privateGet(this, _globList).slice(1).join("/") : __privateGet(this, _globList).join("/") : __privateGet(this, _globList).slice(__privateGet(this, _index)).join("/")));
-  }
-  /**
-   * true if there are more pattern parts after this one
-   */
-  hasMore() {
-    return this.length > __privateGet(this, _index) + 1;
-  }
-  /**
-   * The rest of the pattern after this part, or null if this is the end
-   */
-  rest() {
-    if (__privateGet(this, _rest) !== void 0)
-      return __privateGet(this, _rest);
-    if (!this.hasMore())
-      return __privateSet(this, _rest, null);
-    __privateSet(this, _rest, new _Pattern(__privateGet(this, _patternList), __privateGet(this, _globList), __privateGet(this, _index) + 1, __privateGet(this, _platform)));
-    __privateSet(__privateGet(this, _rest), _isAbsolute, __privateGet(this, _isAbsolute));
-    __privateSet(__privateGet(this, _rest), _isUNC, __privateGet(this, _isUNC));
-    __privateSet(__privateGet(this, _rest), _isDrive, __privateGet(this, _isDrive));
-    return __privateGet(this, _rest);
-  }
-  /**
-   * true if the pattern represents a //unc/path/ on windows
-   */
-  isUNC() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isUNC) !== void 0 ? __privateGet(this, _isUNC) : __privateSet(this, _isUNC, __privateGet(this, _platform) === "win32" && __privateGet(this, _index) === 0 && pl[0] === "" && pl[1] === "" && typeof pl[2] === "string" && !!pl[2] && typeof pl[3] === "string" && !!pl[3]);
-  }
-  // pattern like C:/...
-  // split = ['C:', ...]
-  // XXX: would be nice to handle patterns like `c:*` to test the cwd
-  // in c: for *, but I don't know of a way to even figure out what that
-  // cwd is without actually chdir'ing into it?
-  /**
-   * True if the pattern starts with a drive letter on Windows
-   */
-  isDrive() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isDrive) !== void 0 ? __privateGet(this, _isDrive) : __privateSet(this, _isDrive, __privateGet(this, _platform) === "win32" && __privateGet(this, _index) === 0 && this.length > 1 && typeof pl[0] === "string" && /^[a-z]:$/i.test(pl[0]));
-  }
-  // pattern = '/' or '/...' or '/x/...'
-  // split = ['', ''] or ['', ...] or ['', 'x', ...]
-  // Drive and UNC both considered absolute on windows
-  /**
-   * True if the pattern is rooted on an absolute path
-   */
-  isAbsolute() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isAbsolute) !== void 0 ? __privateGet(this, _isAbsolute) : __privateSet(this, _isAbsolute, pl[0] === "" && pl.length > 1 || this.isDrive() || this.isUNC());
-  }
-  /**
-   * consume the root of the pattern, and return it
-   */
-  root() {
-    const p = __privateGet(this, _patternList)[0];
-    return typeof p === "string" && this.isAbsolute() && __privateGet(this, _index) === 0 ? p : "";
-  }
-  /**
-   * Check to see if the current globstar pattern is allowed to follow
-   * a symbolic link.
-   */
-  checkFollowGlobstar() {
-    return !(__privateGet(this, _index) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar));
-  }
-  /**
-   * Mark that the current globstar pattern is following a symbolic link
-   */
-  markFollowGlobstar() {
-    if (__privateGet(this, _index) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar))
-      return false;
-    __privateSet(this, _followGlobstar, false);
-    return true;
-  }
-};
-_patternList = new WeakMap();
-_globList = new WeakMap();
-_index = new WeakMap();
-_platform = new WeakMap();
-_rest = new WeakMap();
-_globString = new WeakMap();
-_isDrive = new WeakMap();
-_isUNC = new WeakMap();
-_isAbsolute = new WeakMap();
-_followGlobstar = new WeakMap();
-var Pattern = _Pattern;
-
-// node_modules/glob/dist/esm/ignore.js
-var defaultPlatform2 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
-var Ignore = class {
-  constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform2 }) {
-    __publicField(this, "relative");
-    __publicField(this, "relativeChildren");
-    __publicField(this, "absolute");
-    __publicField(this, "absoluteChildren");
-    __publicField(this, "platform");
-    __publicField(this, "mmopts");
-    this.relative = [];
-    this.absolute = [];
-    this.relativeChildren = [];
-    this.absoluteChildren = [];
-    this.platform = platform;
-    this.mmopts = {
-      dot: true,
-      nobrace,
-      nocase,
-      noext,
-      noglobstar,
-      optimizationLevel: 2,
-      platform,
-      nocomment: true,
-      nonegate: true
-    };
-    for (const ign of ignored)
-      this.add(ign);
-  }
-  add(ign) {
-    const mm = new Minimatch(ign, this.mmopts);
-    for (let i = 0; i < mm.set.length; i++) {
-      const parsed = mm.set[i];
-      const globParts = mm.globParts[i];
-      if (!parsed || !globParts) {
-        throw new Error("invalid pattern object");
-      }
-      while (parsed[0] === "." && globParts[0] === ".") {
-        parsed.shift();
-        globParts.shift();
-      }
-      const p = new Pattern(parsed, globParts, 0, this.platform);
-      const m = new Minimatch(p.globString(), this.mmopts);
-      const children = globParts[globParts.length - 1] === "**";
-      const absolute = p.isAbsolute();
-      if (absolute)
-        this.absolute.push(m);
-      else
-        this.relative.push(m);
-      if (children) {
-        if (absolute)
-          this.absoluteChildren.push(m);
-        else
-          this.relativeChildren.push(m);
-      }
-    }
-  }
-  ignored(p) {
-    const fullpath = p.fullpath();
-    const fullpaths = `${fullpath}/`;
-    const relative = p.relative() || ".";
-    const relatives = `${relative}/`;
-    for (const m of this.relative) {
-      if (m.match(relative) || m.match(relatives))
-        return true;
-    }
-    for (const m of this.absolute) {
-      if (m.match(fullpath) || m.match(fullpaths))
-        return true;
-    }
-    return false;
-  }
-  childrenIgnored(p) {
-    const fullpath = p.fullpath() + "/";
-    const relative = (p.relative() || ".") + "/";
-    for (const m of this.relativeChildren) {
-      if (m.match(relative))
-        return true;
-    }
-    for (const m of this.absoluteChildren) {
-      if (m.match(fullpath))
-        return true;
-    }
-    return false;
-  }
-};
-
-// node_modules/glob/dist/esm/processor.js
-var HasWalkedCache = class _HasWalkedCache {
-  constructor(store = /* @__PURE__ */ new Map()) {
-    __publicField(this, "store");
-    this.store = store;
-  }
-  copy() {
-    return new _HasWalkedCache(new Map(this.store));
-  }
-  hasWalked(target, pattern) {
-    return this.store.get(target.fullpath())?.has(pattern.globString());
-  }
-  storeWalked(target, pattern) {
-    const fullpath = target.fullpath();
-    const cached = this.store.get(fullpath);
-    if (cached)
-      cached.add(pattern.globString());
-    else
-      this.store.set(fullpath, /* @__PURE__ */ new Set([pattern.globString()]));
-  }
-};
-var MatchRecord = class {
-  constructor() {
-    __publicField(this, "store", /* @__PURE__ */ new Map());
-  }
-  add(target, absolute, ifDir) {
-    const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0);
-    const current = this.store.get(target);
-    this.store.set(target, current === void 0 ? n : n & current);
-  }
-  // match, absolute, ifdir
-  entries() {
-    return [...this.store.entries()].map(([path4, n]) => [
-      path4,
-      !!(n & 2),
-      !!(n & 1)
-    ]);
-  }
-};
-var SubWalks = class {
-  constructor() {
-    __publicField(this, "store", /* @__PURE__ */ new Map());
-  }
-  add(target, pattern) {
-    if (!target.canReaddir()) {
-      return;
-    }
-    const subs = this.store.get(target);
-    if (subs) {
-      if (!subs.find((p) => p.globString() === pattern.globString())) {
-        subs.push(pattern);
-      }
-    } else
-      this.store.set(target, [pattern]);
-  }
-  get(target) {
-    const subs = this.store.get(target);
-    if (!subs) {
-      throw new Error("attempting to walk unknown path");
-    }
-    return subs;
-  }
-  entries() {
-    return this.keys().map((k) => [k, this.store.get(k)]);
-  }
-  keys() {
-    return [...this.store.keys()].filter((t) => t.canReaddir());
-  }
-};
-var Processor = class _Processor {
-  constructor(opts, hasWalkedCache) {
-    __publicField(this, "hasWalkedCache");
-    __publicField(this, "matches", new MatchRecord());
-    __publicField(this, "subwalks", new SubWalks());
-    __publicField(this, "patterns");
-    __publicField(this, "follow");
-    __publicField(this, "dot");
-    __publicField(this, "opts");
-    this.opts = opts;
-    this.follow = !!opts.follow;
-    this.dot = !!opts.dot;
-    this.hasWalkedCache = hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache();
-  }
-  processPatterns(target, patterns) {
-    this.patterns = patterns;
-    const processingSet = patterns.map((p) => [target, p]);
-    for (let [t, pattern] of processingSet) {
-      this.hasWalkedCache.storeWalked(t, pattern);
-      const root = pattern.root();
-      const absolute = pattern.isAbsolute() && this.opts.absolute !== false;
-      if (root) {
-        t = t.resolve(root === "/" && this.opts.root !== void 0 ? this.opts.root : root);
-        const rest2 = pattern.rest();
-        if (!rest2) {
-          this.matches.add(t, true, false);
-          continue;
-        } else {
-          pattern = rest2;
-        }
-      }
-      if (t.isENOENT())
-        continue;
-      let p;
-      let rest;
-      let changed = false;
-      while (typeof (p = pattern.pattern()) === "string" && (rest = pattern.rest())) {
-        const c = t.resolve(p);
-        t = c;
-        pattern = rest;
-        changed = true;
-      }
-      p = pattern.pattern();
-      rest = pattern.rest();
-      if (changed) {
-        if (this.hasWalkedCache.hasWalked(t, pattern))
-          continue;
-        this.hasWalkedCache.storeWalked(t, pattern);
-      }
-      if (typeof p === "string") {
-        const ifDir = p === ".." || p === "" || p === ".";
-        this.matches.add(t.resolve(p), absolute, ifDir);
-        continue;
-      } else if (p === GLOBSTAR) {
-        if (!t.isSymbolicLink() || this.follow || pattern.checkFollowGlobstar()) {
-          this.subwalks.add(t, pattern);
-        }
-        const rp = rest?.pattern();
-        const rrest = rest?.rest();
-        if (!rest || (rp === "" || rp === ".") && !rrest) {
-          this.matches.add(t, absolute, rp === "" || rp === ".");
-        } else {
-          if (rp === "..") {
-            const tp = t.parent || t;
-            if (!rrest)
-              this.matches.add(tp, absolute, true);
-            else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {
-              this.subwalks.add(tp, rrest);
-            }
-          }
-        }
-      } else if (p instanceof RegExp) {
-        this.subwalks.add(t, pattern);
-      }
-    }
-    return this;
-  }
-  subwalkTargets() {
-    return this.subwalks.keys();
-  }
-  child() {
-    return new _Processor(this.opts, this.hasWalkedCache);
-  }
-  // return a new Processor containing the subwalks for each
-  // child entry, and a set of matches, and
-  // a hasWalkedCache that's a copy of this one
-  // then we're going to call
-  filterEntries(parent, entries) {
-    const patterns = this.subwalks.get(parent);
-    const results = this.child();
-    for (const e of entries) {
-      for (const pattern of patterns) {
-        const absolute = pattern.isAbsolute();
-        const p = pattern.pattern();
-        const rest = pattern.rest();
-        if (p === GLOBSTAR) {
-          results.testGlobstar(e, pattern, rest, absolute);
-        } else if (p instanceof RegExp) {
-          results.testRegExp(e, p, rest, absolute);
-        } else {
-          results.testString(e, p, rest, absolute);
-        }
-      }
-    }
-    return results;
-  }
-  testGlobstar(e, pattern, rest, absolute) {
-    if (this.dot || !e.name.startsWith(".")) {
-      if (!pattern.hasMore()) {
-        this.matches.add(e, absolute, false);
-      }
-      if (e.canReaddir()) {
-        if (this.follow || !e.isSymbolicLink()) {
-          this.subwalks.add(e, pattern);
-        } else if (e.isSymbolicLink()) {
-          if (rest && pattern.checkFollowGlobstar()) {
-            this.subwalks.add(e, rest);
-          } else if (pattern.markFollowGlobstar()) {
-            this.subwalks.add(e, pattern);
-          }
-        }
-      }
-    }
-    if (rest) {
-      const rp = rest.pattern();
-      if (typeof rp === "string" && // dots and empty were handled already
-      rp !== ".." && rp !== "" && rp !== ".") {
-        this.testString(e, rp, rest.rest(), absolute);
-      } else if (rp === "..") {
-        const ep = e.parent || e;
-        this.subwalks.add(ep, rest);
-      } else if (rp instanceof RegExp) {
-        this.testRegExp(e, rp, rest.rest(), absolute);
-      }
-    }
-  }
-  testRegExp(e, p, rest, absolute) {
-    if (!p.test(e.name))
-      return;
-    if (!rest) {
-      this.matches.add(e, absolute, false);
-    } else {
-      this.subwalks.add(e, rest);
-    }
-  }
-  testString(e, p, rest, absolute) {
-    if (!e.isNamed(p))
-      return;
-    if (!rest) {
-      this.matches.add(e, absolute, false);
-    } else {
-      this.subwalks.add(e, rest);
-    }
-  }
-};
-
-// node_modules/glob/dist/esm/walker.js
-var makeIgnore = (ignore, opts) => typeof ignore === "string" ? new Ignore([ignore], opts) : Array.isArray(ignore) ? new Ignore(ignore, opts) : ignore;
-var _onResume, _ignore, _sep, _GlobUtil_instances, ignored_fn, childrenIgnored_fn;
-var GlobUtil = class {
-  constructor(patterns, path4, opts) {
-    __privateAdd(this, _GlobUtil_instances);
-    __publicField(this, "path");
-    __publicField(this, "patterns");
-    __publicField(this, "opts");
-    __publicField(this, "seen", /* @__PURE__ */ new Set());
-    __publicField(this, "paused", false);
-    __publicField(this, "aborted", false);
-    __privateAdd(this, _onResume, []);
-    __privateAdd(this, _ignore);
-    __privateAdd(this, _sep);
-    __publicField(this, "signal");
-    __publicField(this, "maxDepth");
-    __publicField(this, "includeChildMatches");
-    this.patterns = patterns;
-    this.path = path4;
-    this.opts = opts;
-    __privateSet(this, _sep, !opts.posix && opts.platform === "win32" ? "\\" : "/");
-    this.includeChildMatches = opts.includeChildMatches !== false;
-    if (opts.ignore || !this.includeChildMatches) {
-      __privateSet(this, _ignore, makeIgnore(opts.ignore ?? [], opts));
-      if (!this.includeChildMatches && typeof __privateGet(this, _ignore).add !== "function") {
-        const m = "cannot ignore child matches, ignore lacks add() method.";
-        throw new Error(m);
-      }
-    }
-    this.maxDepth = opts.maxDepth || Infinity;
-    if (opts.signal) {
-      this.signal = opts.signal;
-      this.signal.addEventListener("abort", () => {
-        __privateGet(this, _onResume).length = 0;
-      });
-    }
-  }
-  // backpressure mechanism
-  pause() {
-    this.paused = true;
-  }
-  resume() {
-    if (this.signal?.aborted)
-      return;
-    this.paused = false;
-    let fn = void 0;
-    while (!this.paused && (fn = __privateGet(this, _onResume).shift())) {
-      fn();
-    }
-  }
-  onResume(fn) {
-    if (this.signal?.aborted)
-      return;
-    if (!this.paused) {
-      fn();
-    } else {
-      __privateGet(this, _onResume).push(fn);
-    }
-  }
-  // do the requisite realpath/stat checking, and return the path
-  // to add or undefined to filter it out.
-  async matchCheck(e, ifDir) {
-    if (ifDir && this.opts.nodir)
-      return void 0;
-    let rpc;
-    if (this.opts.realpath) {
-      rpc = e.realpathCached() || await e.realpath();
-      if (!rpc)
-        return void 0;
-      e = rpc;
-    }
-    const needStat = e.isUnknown() || this.opts.stat;
-    const s = needStat ? await e.lstat() : e;
-    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {
-      const target = await s.realpath();
-      if (target && (target.isUnknown() || this.opts.stat)) {
-        await target.lstat();
-      }
-    }
-    return this.matchCheckTest(s, ifDir);
-  }
-  matchCheckTest(e, ifDir) {
-    return e && (this.maxDepth === Infinity || e.depth() <= this.maxDepth) && (!ifDir || e.canReaddir()) && (!this.opts.nodir || !e.isDirectory()) && (!this.opts.nodir || !this.opts.follow || !e.isSymbolicLink() || !e.realpathCached()?.isDirectory()) && !__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e) ? e : void 0;
-  }
-  matchCheckSync(e, ifDir) {
-    if (ifDir && this.opts.nodir)
-      return void 0;
-    let rpc;
-    if (this.opts.realpath) {
-      rpc = e.realpathCached() || e.realpathSync();
-      if (!rpc)
-        return void 0;
-      e = rpc;
-    }
-    const needStat = e.isUnknown() || this.opts.stat;
-    const s = needStat ? e.lstatSync() : e;
-    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {
-      const target = s.realpathSync();
-      if (target && (target?.isUnknown() || this.opts.stat)) {
-        target.lstatSync();
-      }
-    }
-    return this.matchCheckTest(s, ifDir);
-  }
-  matchFinish(e, absolute) {
-    if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e))
-      return;
-    if (!this.includeChildMatches && __privateGet(this, _ignore)?.add) {
-      const ign = `${e.relativePosix()}/**`;
-      __privateGet(this, _ignore).add(ign);
-    }
-    const abs = this.opts.absolute === void 0 ? absolute : this.opts.absolute;
-    this.seen.add(e);
-    const mark = this.opts.mark && e.isDirectory() ? __privateGet(this, _sep) : "";
-    if (this.opts.withFileTypes) {
-      this.matchEmit(e);
-    } else if (abs) {
-      const abs2 = this.opts.posix ? e.fullpathPosix() : e.fullpath();
-      this.matchEmit(abs2 + mark);
-    } else {
-      const rel = this.opts.posix ? e.relativePosix() : e.relative();
-      const pre = this.opts.dotRelative && !rel.startsWith(".." + __privateGet(this, _sep)) ? "." + __privateGet(this, _sep) : "";
-      this.matchEmit(!rel ? "." + mark : pre + rel + mark);
-    }
-  }
-  async match(e, absolute, ifDir) {
-    const p = await this.matchCheck(e, ifDir);
-    if (p)
-      this.matchFinish(p, absolute);
-  }
-  matchSync(e, absolute, ifDir) {
-    const p = this.matchCheckSync(e, ifDir);
-    if (p)
-      this.matchFinish(p, absolute);
-  }
-  walkCB(target, patterns, cb) {
-    if (this.signal?.aborted)
-      cb();
-    this.walkCB2(target, patterns, new Processor(this.opts), cb);
-  }
-  walkCB2(target, patterns, processor, cb) {
-    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
-      return cb();
-    if (this.signal?.aborted)
-      cb();
-    if (this.paused) {
-      this.onResume(() => this.walkCB2(target, patterns, processor, cb));
-      return;
-    }
-    processor.processPatterns(target, patterns);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      tasks++;
-      this.match(m, absolute, ifDir).then(() => next());
-    }
-    for (const t of processor.subwalkTargets()) {
-      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
-        continue;
-      }
-      tasks++;
-      const childrenCached = t.readdirCached();
-      if (t.calledReaddir())
-        this.walkCB3(t, childrenCached, processor, next);
-      else {
-        t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true);
-      }
-    }
-    next();
-  }
-  walkCB3(target, entries, processor, cb) {
-    processor = processor.filterEntries(target, entries);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      tasks++;
-      this.match(m, absolute, ifDir).then(() => next());
-    }
-    for (const [target2, patterns] of processor.subwalks.entries()) {
-      tasks++;
-      this.walkCB2(target2, patterns, processor.child(), next);
-    }
-    next();
-  }
-  walkCBSync(target, patterns, cb) {
-    if (this.signal?.aborted)
-      cb();
-    this.walkCB2Sync(target, patterns, new Processor(this.opts), cb);
-  }
-  walkCB2Sync(target, patterns, processor, cb) {
-    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
-      return cb();
-    if (this.signal?.aborted)
-      cb();
-    if (this.paused) {
-      this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb));
-      return;
-    }
-    processor.processPatterns(target, patterns);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      this.matchSync(m, absolute, ifDir);
-    }
-    for (const t of processor.subwalkTargets()) {
-      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
-        continue;
-      }
-      tasks++;
-      const children = t.readdirSync();
-      this.walkCB3Sync(t, children, processor, next);
-    }
-    next();
-  }
-  walkCB3Sync(target, entries, processor, cb) {
-    processor = processor.filterEntries(target, entries);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      this.matchSync(m, absolute, ifDir);
-    }
-    for (const [target2, patterns] of processor.subwalks.entries()) {
-      tasks++;
-      this.walkCB2Sync(target2, patterns, processor.child(), next);
-    }
-    next();
-  }
-};
-_onResume = new WeakMap();
-_ignore = new WeakMap();
-_sep = new WeakMap();
-_GlobUtil_instances = new WeakSet();
-ignored_fn = function(path4) {
-  return this.seen.has(path4) || !!__privateGet(this, _ignore)?.ignored?.(path4);
-};
-childrenIgnored_fn = function(path4) {
-  return !!__privateGet(this, _ignore)?.childrenIgnored?.(path4);
-};
-var GlobWalker = class extends GlobUtil {
-  constructor(patterns, path4, opts) {
-    super(patterns, path4, opts);
-    __publicField(this, "matches", /* @__PURE__ */ new Set());
-  }
-  matchEmit(e) {
-    this.matches.add(e);
-  }
-  async walk() {
-    if (this.signal?.aborted)
-      throw this.signal.reason;
-    if (this.path.isUnknown()) {
-      await this.path.lstat();
-    }
-    await new Promise((res, rej) => {
-      this.walkCB(this.path, this.patterns, () => {
-        if (this.signal?.aborted) {
-          rej(this.signal.reason);
-        } else {
-          res(this.matches);
-        }
-      });
-    });
-    return this.matches;
-  }
-  walkSync() {
-    if (this.signal?.aborted)
-      throw this.signal.reason;
-    if (this.path.isUnknown()) {
-      this.path.lstatSync();
-    }
-    this.walkCBSync(this.path, this.patterns, () => {
-      if (this.signal?.aborted)
-        throw this.signal.reason;
-    });
-    return this.matches;
-  }
-};
-var GlobStream = class extends GlobUtil {
-  constructor(patterns, path4, opts) {
-    super(patterns, path4, opts);
-    __publicField(this, "results");
-    this.results = new Minipass({
-      signal: this.signal,
-      objectMode: true
-    });
-    this.results.on("drain", () => this.resume());
-    this.results.on("resume", () => this.resume());
-  }
-  matchEmit(e) {
-    this.results.write(e);
-    if (!this.results.flowing)
-      this.pause();
-  }
-  stream() {
-    const target = this.path;
-    if (target.isUnknown()) {
-      target.lstat().then(() => {
-        this.walkCB(target, this.patterns, () => this.results.end());
-      });
-    } else {
-      this.walkCB(target, this.patterns, () => this.results.end());
-    }
-    return this.results;
-  }
-  streamSync() {
-    if (this.path.isUnknown()) {
-      this.path.lstatSync();
-    }
-    this.walkCBSync(this.path, this.patterns, () => this.results.end());
-    return this.results;
-  }
-};
-
-// node_modules/glob/dist/esm/glob.js
-var defaultPlatform3 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
-var Glob = class {
-  /**
-   * All options are stored as properties on the `Glob` object.
-   *
-   * See {@link GlobOptions} for full options descriptions.
-   *
-   * Note that a previous `Glob` object can be passed as the
-   * `GlobOptions` to another `Glob` instantiation to re-use settings
-   * and caches with a new pattern.
-   *
-   * Traversal functions can be called multiple times to run the walk
-   * again.
-   */
-  constructor(pattern, opts) {
-    __publicField(this, "absolute");
-    __publicField(this, "cwd");
-    __publicField(this, "root");
-    __publicField(this, "dot");
-    __publicField(this, "dotRelative");
-    __publicField(this, "follow");
-    __publicField(this, "ignore");
-    __publicField(this, "magicalBraces");
-    __publicField(this, "mark");
-    __publicField(this, "matchBase");
-    __publicField(this, "maxDepth");
-    __publicField(this, "nobrace");
-    __publicField(this, "nocase");
-    __publicField(this, "nodir");
-    __publicField(this, "noext");
-    __publicField(this, "noglobstar");
-    __publicField(this, "pattern");
-    __publicField(this, "platform");
-    __publicField(this, "realpath");
-    __publicField(this, "scurry");
-    __publicField(this, "stat");
-    __publicField(this, "signal");
-    __publicField(this, "windowsPathsNoEscape");
-    __publicField(this, "withFileTypes");
-    __publicField(this, "includeChildMatches");
-    /**
-     * The options provided to the constructor.
-     */
-    __publicField(this, "opts");
-    /**
-     * An array of parsed immutable {@link Pattern} objects.
-     */
-    __publicField(this, "patterns");
-    if (!opts)
-      throw new TypeError("glob options required");
-    this.withFileTypes = !!opts.withFileTypes;
-    this.signal = opts.signal;
-    this.follow = !!opts.follow;
-    this.dot = !!opts.dot;
-    this.dotRelative = !!opts.dotRelative;
-    this.nodir = !!opts.nodir;
-    this.mark = !!opts.mark;
-    if (!opts.cwd) {
-      this.cwd = "";
-    } else if (opts.cwd instanceof URL || opts.cwd.startsWith("file://")) {
-      opts.cwd = fileURLToPath2(opts.cwd);
-    }
-    this.cwd = opts.cwd || "";
-    this.root = opts.root;
-    this.magicalBraces = !!opts.magicalBraces;
-    this.nobrace = !!opts.nobrace;
-    this.noext = !!opts.noext;
-    this.realpath = !!opts.realpath;
-    this.absolute = opts.absolute;
-    this.includeChildMatches = opts.includeChildMatches !== false;
-    this.noglobstar = !!opts.noglobstar;
-    this.matchBase = !!opts.matchBase;
-    this.maxDepth = typeof opts.maxDepth === "number" ? opts.maxDepth : Infinity;
-    this.stat = !!opts.stat;
-    this.ignore = opts.ignore;
-    if (this.withFileTypes && this.absolute !== void 0) {
-      throw new Error("cannot set absolute and withFileTypes:true");
-    }
-    if (typeof pattern === "string") {
-      pattern = [pattern];
-    }
-    this.windowsPathsNoEscape = !!opts.windowsPathsNoEscape || opts.allowWindowsEscape === false;
-    if (this.windowsPathsNoEscape) {
-      pattern = pattern.map((p) => p.replace(/\\/g, "/"));
-    }
-    if (this.matchBase) {
-      if (opts.noglobstar) {
-        throw new TypeError("base matching requires globstar");
-      }
-      pattern = pattern.map((p) => p.includes("/") ? p : `./**/${p}`);
-    }
-    this.pattern = pattern;
-    this.platform = opts.platform || defaultPlatform3;
-    this.opts = { ...opts, platform: this.platform };
-    if (opts.scurry) {
-      this.scurry = opts.scurry;
-      if (opts.nocase !== void 0 && opts.nocase !== opts.scurry.nocase) {
-        throw new Error("nocase option contradicts provided scurry option");
-      }
-    } else {
-      const Scurry = opts.platform === "win32" ? PathScurryWin32 : opts.platform === "darwin" ? PathScurryDarwin : opts.platform ? PathScurryPosix : PathScurry;
-      this.scurry = new Scurry(this.cwd, {
-        nocase: opts.nocase,
-        fs: opts.fs
-      });
-    }
-    this.nocase = this.scurry.nocase;
-    const nocaseMagicOnly = this.platform === "darwin" || this.platform === "win32";
-    const mmo = {
-      // default nocase based on platform
-      ...opts,
-      dot: this.dot,
-      matchBase: this.matchBase,
-      nobrace: this.nobrace,
-      nocase: this.nocase,
-      nocaseMagicOnly,
-      nocomment: true,
-      noext: this.noext,
-      nonegate: true,
-      optimizationLevel: 2,
-      platform: this.platform,
-      windowsPathsNoEscape: this.windowsPathsNoEscape,
-      debug: !!this.opts.debug
-    };
-    const mms = this.pattern.map((p) => new Minimatch(p, mmo));
-    const [matchSet, globParts] = mms.reduce((set, m) => {
-      set[0].push(...m.set);
-      set[1].push(...m.globParts);
-      return set;
-    }, [[], []]);
-    this.patterns = matchSet.map((set, i) => {
-      const g = globParts[i];
-      if (!g)
-        throw new Error("invalid pattern object");
-      return new Pattern(set, g, 0, this.platform);
-    });
-  }
-  async walk() {
-    return [
-      ...await new GlobWalker(this.patterns, this.scurry.cwd, {
-        ...this.opts,
-        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-        platform: this.platform,
-        nocase: this.nocase,
-        includeChildMatches: this.includeChildMatches
-      }).walk()
-    ];
-  }
-  walkSync() {
-    return [
-      ...new GlobWalker(this.patterns, this.scurry.cwd, {
-        ...this.opts,
-        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-        platform: this.platform,
-        nocase: this.nocase,
-        includeChildMatches: this.includeChildMatches
-      }).walkSync()
-    ];
-  }
-  stream() {
-    return new GlobStream(this.patterns, this.scurry.cwd, {
-      ...this.opts,
-      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-      platform: this.platform,
-      nocase: this.nocase,
-      includeChildMatches: this.includeChildMatches
-    }).stream();
-  }
-  streamSync() {
-    return new GlobStream(this.patterns, this.scurry.cwd, {
-      ...this.opts,
-      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-      platform: this.platform,
-      nocase: this.nocase,
-      includeChildMatches: this.includeChildMatches
-    }).streamSync();
-  }
-  /**
-   * Default sync iteration function. Returns a Generator that
-   * iterates over the results.
-   */
-  iterateSync() {
-    return this.streamSync()[Symbol.iterator]();
-  }
-  [Symbol.iterator]() {
-    return this.iterateSync();
-  }
-  /**
-   * Default async iteration function. Returns an AsyncGenerator that
-   * iterates over the results.
-   */
-  iterate() {
-    return this.stream()[Symbol.asyncIterator]();
-  }
-  [Symbol.asyncIterator]() {
-    return this.iterate();
-  }
-};
-
-// node_modules/glob/dist/esm/has-magic.js
-var hasMagic = (pattern, options = {}) => {
-  if (!Array.isArray(pattern)) {
-    pattern = [pattern];
-  }
-  for (const p of pattern) {
-    if (new Minimatch(p, options).hasMagic())
-      return true;
-  }
-  return false;
-};
-
-// node_modules/glob/dist/esm/index.js
-function globStreamSync(pattern, options = {}) {
-  return new Glob(pattern, options).streamSync();
-}
-function globStream(pattern, options = {}) {
-  return new Glob(pattern, options).stream();
-}
-function globSync(pattern, options = {}) {
-  return new Glob(pattern, options).walkSync();
-}
-async function glob_(pattern, options = {}) {
-  return new Glob(pattern, options).walk();
-}
-function globIterateSync(pattern, options = {}) {
-  return new Glob(pattern, options).iterateSync();
-}
-function globIterate(pattern, options = {}) {
-  return new Glob(pattern, options).iterate();
-}
-var streamSync = globStreamSync;
-var stream = Object.assign(globStream, { sync: globStreamSync });
-var iterateSync = globIterateSync;
-var iterate = Object.assign(globIterate, {
-  sync: globIterateSync
-});
-var sync = Object.assign(globSync, {
-  stream: globStreamSync,
-  iterate: globIterateSync
-});
-var glob = Object.assign(glob_, {
-  glob: glob_,
-  globSync,
-  sync,
-  globStream,
-  stream,
-  globStreamSync,
-  streamSync,
-  globIterate,
-  iterate,
-  globIterateSync,
-  iterateSync,
-  Glob,
-  hasMagic,
-  escape,
-  unescape
-});
-glob.glob = glob;
-
-// node_modules/rimraf/dist/esm/opt-arg.js
-var typeOrUndef = (val, t) => typeof val === "undefined" || typeof val === t;
-var isRimrafOptions = (o) => !!o && typeof o === "object" && typeOrUndef(o.preserveRoot, "boolean") && typeOrUndef(o.tmp, "string") && typeOrUndef(o.maxRetries, "number") && typeOrUndef(o.retryDelay, "number") && typeOrUndef(o.backoff, "number") && typeOrUndef(o.maxBackoff, "number") && (typeOrUndef(o.glob, "boolean") || o.glob && typeof o.glob === "object") && typeOrUndef(o.filter, "function");
-var assertRimrafOptions = (o) => {
-  if (!isRimrafOptions(o)) {
-    throw new Error("invalid rimraf options");
-  }
-};
-var optArgT = (opt) => {
-  assertRimrafOptions(opt);
-  const { glob: glob2, ...options } = opt;
-  if (!glob2) {
-    return options;
-  }
-  const globOpt = glob2 === true ? opt.signal ? { signal: opt.signal } : {} : opt.signal ? {
-    signal: opt.signal,
-    ...glob2
-  } : glob2;
-  return {
-    ...options,
-    glob: {
-      ...globOpt,
-      // always get absolute paths from glob, to ensure
-      // that we are referencing the correct thing.
-      absolute: true,
-      withFileTypes: false
-    }
-  };
-};
-var optArg = (opt = {}) => optArgT(opt);
-var optArgSync = (opt = {}) => optArgT(opt);
-
-// node_modules/rimraf/dist/esm/path-arg.js
-import { parse, resolve } from "path";
-import { inspect } from "util";
-
-// node_modules/rimraf/dist/esm/platform.js
-var platform_default = process.env.__TESTING_RIMRAF_PLATFORM__ || process.platform;
-
-// node_modules/rimraf/dist/esm/path-arg.js
-var pathArg = (path4, opt = {}) => {
-  const type = typeof path4;
-  if (type !== "string") {
-    const ctor = path4 && type === "object" && path4.constructor;
-    const received = ctor && ctor.name ? `an instance of ${ctor.name}` : type === "object" ? inspect(path4) : `type ${type} ${path4}`;
-    const msg = `The "path" argument must be of type string. Received ${received}`;
-    throw Object.assign(new TypeError(msg), {
-      path: path4,
-      code: "ERR_INVALID_ARG_TYPE"
-    });
-  }
-  if (/\0/.test(path4)) {
-    const msg = "path must be a string without null bytes";
-    throw Object.assign(new TypeError(msg), {
-      path: path4,
-      code: "ERR_INVALID_ARG_VALUE"
-    });
-  }
-  path4 = resolve(path4);
-  const { root } = parse(path4);
-  if (path4 === root && opt.preserveRoot !== false) {
-    const msg = "refusing to remove root directory without preserveRoot:false";
-    throw Object.assign(new Error(msg), {
-      path: path4,
-      code: "ERR_PRESERVE_ROOT"
-    });
-  }
-  if (platform_default === "win32") {
-    const badWinChars = /[*|"<>?:]/;
-    const { root: root2 } = parse(path4);
-    if (badWinChars.test(path4.substring(root2.length))) {
-      throw Object.assign(new Error("Illegal characters in path."), {
-        path: path4,
-        code: "EINVAL"
-      });
-    }
-  }
-  return path4;
-};
-var path_arg_default = pathArg;
-
-// node_modules/rimraf/dist/esm/fs.js
-import fs2 from "fs";
-import { chmodSync, mkdirSync, renameSync, rmdirSync, rmSync, statSync, lstatSync as lstatSync2, unlinkSync } from "fs";
-import { readdirSync as rdSync } from "fs";
-var readdirSync2 = (path4) => rdSync(path4, { withFileTypes: true });
-var chmod = (path4, mode) => new Promise((res, rej) => fs2.chmod(path4, mode, (er, ...d) => er ? rej(er) : res(...d)));
-var mkdir = (path4, options) => new Promise((res, rej) => fs2.mkdir(path4, options, (er, made) => er ? rej(er) : res(made)));
-var readdir2 = (path4) => new Promise((res, rej) => fs2.readdir(path4, { withFileTypes: true }, (er, data) => er ? rej(er) : res(data)));
-var rename = (oldPath, newPath) => new Promise((res, rej) => fs2.rename(oldPath, newPath, (er, ...d) => er ? rej(er) : res(...d)));
-var rm = (path4, options) => new Promise((res, rej) => fs2.rm(path4, options, (er, ...d) => er ? rej(er) : res(...d)));
-var rmdir = (path4) => new Promise((res, rej) => fs2.rmdir(path4, (er, ...d) => er ? rej(er) : res(...d)));
-var stat = (path4) => new Promise((res, rej) => fs2.stat(path4, (er, data) => er ? rej(er) : res(data)));
-var lstat2 = (path4) => new Promise((res, rej) => fs2.lstat(path4, (er, data) => er ? rej(er) : res(data)));
-var unlink = (path4) => new Promise((res, rej) => fs2.unlink(path4, (er, ...d) => er ? rej(er) : res(...d)));
-var promises = {
-  chmod,
-  mkdir,
-  readdir: readdir2,
-  rename,
-  rm,
-  rmdir,
-  stat,
-  lstat: lstat2,
-  unlink
-};
-
-// node_modules/rimraf/dist/esm/rimraf-posix.js
-import { parse as parse2, resolve as resolve2 } from "path";
-
-// node_modules/rimraf/dist/esm/readdir-or-error.js
-var { readdir: readdir3 } = promises;
-var readdirOrError = (path4) => readdir3(path4).catch((er) => er);
-var readdirOrErrorSync = (path4) => {
-  try {
-    return readdirSync2(path4);
-  } catch (er) {
-    return er;
-  }
-};
-
-// node_modules/rimraf/dist/esm/ignore-enoent.js
-var ignoreENOENT = async (p) => p.catch((er) => {
-  if (er.code !== "ENOENT") {
-    throw er;
-  }
-});
-var ignoreENOENTSync = (fn) => {
-  try {
-    return fn();
-  } catch (er) {
-    if (er?.code !== "ENOENT") {
-      throw er;
-    }
-  }
-};
-
-// node_modules/rimraf/dist/esm/rimraf-posix.js
-var { lstat: lstat3, rmdir: rmdir2, unlink: unlink2 } = promises;
-var rimrafPosix = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafPosixDir(path4, opt, await lstat3(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafPosixSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafPosixDirSync(path4, opt, lstatSync2(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafPosixDir = async (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(unlink2(path4));
-    return true;
-  }
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafPosixDir(resolve2(path4, ent2.name), opt, ent2)))).reduce((a, b) => a && b, true);
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse2(path4).root) {
-    return false;
-  }
-  if (opt.filter && !await opt.filter(path4, ent)) {
-    return false;
-  }
-  await ignoreENOENT(rmdir2(path4));
-  return true;
-};
-var rimrafPosixDirSync = (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => unlinkSync(path4));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const p = resolve2(path4, ent2.name);
-    removedAll = rimrafPosixDirSync(p, opt, ent2) && removedAll;
-  }
-  if (opt.preserveRoot === false && path4 === parse2(path4).root) {
-    return false;
-  }
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.filter && !opt.filter(path4, ent)) {
-    return false;
-  }
-  ignoreENOENTSync(() => rmdirSync(path4));
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-windows.js
-import { parse as parse5, resolve as resolve5 } from "path";
-
-// node_modules/rimraf/dist/esm/fix-eperm.js
-var { chmod: chmod2 } = promises;
-var fixEPERM = (fn) => async (path4) => {
-  try {
-    return await fn(path4);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOENT") {
-      return;
-    }
-    if (fer?.code === "EPERM") {
-      try {
-        await chmod2(path4, 438);
-      } catch (er2) {
-        const fer2 = er2;
-        if (fer2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-      return await fn(path4);
-    }
-    throw er;
-  }
-};
-var fixEPERMSync = (fn) => (path4) => {
-  try {
-    return fn(path4);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOENT") {
-      return;
-    }
-    if (fer?.code === "EPERM") {
-      try {
-        chmodSync(path4, 438);
-      } catch (er2) {
-        const fer2 = er2;
-        if (fer2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-      return fn(path4);
-    }
-    throw er;
-  }
-};
-
-// node_modules/rimraf/dist/esm/retry-busy.js
-var MAXBACKOFF = 200;
-var RATE = 1.2;
-var MAXRETRIES = 10;
-var codes = /* @__PURE__ */ new Set(["EMFILE", "ENFILE", "EBUSY"]);
-var retryBusy = (fn) => {
-  const method = async (path4, opt, backoff = 1, total = 0) => {
-    const mbo = opt.maxBackoff || MAXBACKOFF;
-    const rate = opt.backoff || RATE;
-    const max = opt.maxRetries || MAXRETRIES;
-    let retries = 0;
-    while (true) {
-      try {
-        return await fn(path4);
-      } catch (er) {
-        const fer = er;
-        if (fer?.path === path4 && fer?.code && codes.has(fer.code)) {
-          backoff = Math.ceil(backoff * rate);
-          total = backoff + total;
-          if (total < mbo) {
-            return new Promise((res, rej) => {
-              setTimeout(() => {
-                method(path4, opt, backoff, total).then(res, rej);
-              }, backoff);
-            });
-          }
-          if (retries < max) {
-            retries++;
-            continue;
-          }
-        }
-        throw er;
-      }
-    }
-  };
-  return method;
-};
-var retryBusySync = (fn) => {
-  const method = (path4, opt) => {
-    const max = opt.maxRetries || MAXRETRIES;
-    let retries = 0;
-    while (true) {
-      try {
-        return fn(path4);
-      } catch (er) {
-        const fer = er;
-        if (fer?.path === path4 && fer?.code && codes.has(fer.code) && retries < max) {
-          retries++;
-          continue;
-        }
-        throw er;
-      }
-    }
-  };
-  return method;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-move-remove.js
-import { basename, parse as parse4, resolve as resolve4 } from "path";
-
-// node_modules/rimraf/dist/esm/default-tmp.js
-import { tmpdir } from "os";
-import { parse as parse3, resolve as resolve3 } from "path";
-var { stat: stat2 } = promises;
-var isDirSync = (path4) => {
-  try {
-    return statSync(path4).isDirectory();
-  } catch (er) {
-    return false;
-  }
-};
-var isDir = (path4) => stat2(path4).then((st) => st.isDirectory(), () => false);
-var win32DefaultTmp = async (path4) => {
-  const { root } = parse3(path4);
-  const tmp = tmpdir();
-  const { root: tmpRoot } = parse3(tmp);
-  if (root.toLowerCase() === tmpRoot.toLowerCase()) {
-    return tmp;
-  }
-  const driveTmp = resolve3(root, "/temp");
-  if (await isDir(driveTmp)) {
-    return driveTmp;
-  }
-  return root;
-};
-var win32DefaultTmpSync = (path4) => {
-  const { root } = parse3(path4);
-  const tmp = tmpdir();
-  const { root: tmpRoot } = parse3(tmp);
-  if (root.toLowerCase() === tmpRoot.toLowerCase()) {
-    return tmp;
-  }
-  const driveTmp = resolve3(root, "/temp");
-  if (isDirSync(driveTmp)) {
-    return driveTmp;
-  }
-  return root;
-};
-var posixDefaultTmp = async () => tmpdir();
-var posixDefaultTmpSync = () => tmpdir();
-var defaultTmp = platform_default === "win32" ? win32DefaultTmp : posixDefaultTmp;
-var defaultTmpSync = platform_default === "win32" ? win32DefaultTmpSync : posixDefaultTmpSync;
-
-// node_modules/rimraf/dist/esm/rimraf-move-remove.js
-var { lstat: lstat4, rename: rename2, unlink: unlink3, rmdir: rmdir3, chmod: chmod3 } = promises;
-var uniqueFilename = (path4) => `.${basename(path4)}.${Math.random()}`;
-var unlinkFixEPERM = async (path4) => unlink3(path4).catch((er) => {
-  if (er.code === "EPERM") {
-    return chmod3(path4, 438).then(() => unlink3(path4), (er2) => {
-      if (er2.code === "ENOENT") {
-        return;
-      }
-      throw er;
-    });
-  } else if (er.code === "ENOENT") {
-    return;
-  }
-  throw er;
-});
-var unlinkFixEPERMSync = (path4) => {
-  try {
-    unlinkSync(path4);
-  } catch (er) {
-    if (er?.code === "EPERM") {
-      try {
-        return chmodSync(path4, 438);
-      } catch (er2) {
-        if (er2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-    } else if (er?.code === "ENOENT") {
-      return;
-    }
-    throw er;
-  }
-};
-var rimrafMoveRemove = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafMoveRemoveDir(path4, opt, await lstat4(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafMoveRemoveDir = async (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  if (!opt.tmp) {
-    return rimrafMoveRemoveDir(path4, { ...opt, tmp: await defaultTmp(path4) }, ent);
-  }
-  if (path4 === opt.tmp && parse4(path4).root !== path4) {
-    throw new Error("cannot delete temp directory used for deletion");
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(tmpUnlink(path4, opt.tmp, unlinkFixEPERM));
-    return true;
-  }
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafMoveRemoveDir(resolve4(path4, ent2.name), opt, ent2)))).reduce((a, b) => a && b, true);
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse4(path4).root) {
-    return false;
-  }
-  if (opt.filter && !await opt.filter(path4, ent)) {
-    return false;
-  }
-  await ignoreENOENT(tmpUnlink(path4, opt.tmp, rmdir3));
-  return true;
-};
-var tmpUnlink = async (path4, tmp, rm3) => {
-  const tmpFile = resolve4(tmp, uniqueFilename(path4));
-  await rename2(path4, tmpFile);
-  return await rm3(tmpFile);
-};
-var rimrafMoveRemoveSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafMoveRemoveDirSync(path4, opt, lstatSync2(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafMoveRemoveDirSync = (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  if (!opt.tmp) {
-    return rimrafMoveRemoveDirSync(path4, { ...opt, tmp: defaultTmpSync(path4) }, ent);
-  }
-  const tmp = opt.tmp;
-  if (path4 === opt.tmp && parse4(path4).root !== path4) {
-    throw new Error("cannot delete temp directory used for deletion");
-  }
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => tmpUnlinkSync(path4, tmp, unlinkFixEPERMSync));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const p = resolve4(path4, ent2.name);
-    removedAll = rimrafMoveRemoveDirSync(p, opt, ent2) && removedAll;
-  }
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse4(path4).root) {
-    return false;
-  }
-  if (opt.filter && !opt.filter(path4, ent)) {
-    return false;
-  }
-  ignoreENOENTSync(() => tmpUnlinkSync(path4, tmp, rmdirSync));
-  return true;
-};
-var tmpUnlinkSync = (path4, tmp, rmSync2) => {
-  const tmpFile = resolve4(tmp, uniqueFilename(path4));
-  renameSync(path4, tmpFile);
-  return rmSync2(tmpFile);
-};
-
-// node_modules/rimraf/dist/esm/rimraf-windows.js
-var { unlink: unlink4, rmdir: rmdir4, lstat: lstat5 } = promises;
-var rimrafWindowsFile = retryBusy(fixEPERM(unlink4));
-var rimrafWindowsFileSync = retryBusySync(fixEPERMSync(unlinkSync));
-var rimrafWindowsDirRetry = retryBusy(fixEPERM(rmdir4));
-var rimrafWindowsDirRetrySync = retryBusySync(fixEPERMSync(rmdirSync));
-var rimrafWindowsDirMoveRemoveFallback = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const { filter: filter2, ...options } = opt;
-  try {
-    return await rimrafWindowsDirRetry(path4, options);
-  } catch (er) {
-    if (er?.code === "ENOTEMPTY") {
-      return await rimrafMoveRemove(path4, options);
-    }
-    throw er;
-  }
-};
-var rimrafWindowsDirMoveRemoveFallbackSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const { filter: filter2, ...options } = opt;
-  try {
-    return rimrafWindowsDirRetrySync(path4, options);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOTEMPTY") {
-      return rimrafMoveRemoveSync(path4, options);
-    }
-    throw er;
-  }
-};
-var START = Symbol("start");
-var CHILD = Symbol("child");
-var FINISH = Symbol("finish");
-var rimrafWindows = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafWindowsDir(path4, opt, await lstat5(path4), START);
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafWindowsSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafWindowsDirSync(path4, opt, lstatSync2(path4), START);
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafWindowsDir = async (path4, opt, ent, state = START) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(rimrafWindowsFile(path4, opt));
-    return true;
-  }
-  const s = state === START ? CHILD : state;
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafWindowsDir(resolve5(path4, ent2.name), opt, ent2, s)))).reduce((a, b) => a && b, true);
-  if (state === START) {
-    return rimrafWindowsDir(path4, opt, ent, FINISH);
-  } else if (state === FINISH) {
-    if (opt.preserveRoot === false && path4 === parse5(path4).root) {
-      return false;
-    }
-    if (!removedAll) {
-      return false;
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path4, opt));
-  }
-  return true;
-};
-var rimrafWindowsDirSync = (path4, opt, ent, state = START) => {
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => rimrafWindowsFileSync(path4, opt));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const s = state === START ? CHILD : state;
-    const p = resolve5(path4, ent2.name);
-    removedAll = rimrafWindowsDirSync(p, opt, ent2, s) && removedAll;
-  }
-  if (state === START) {
-    return rimrafWindowsDirSync(path4, opt, ent, FINISH);
-  } else if (state === FINISH) {
-    if (opt.preserveRoot === false && path4 === parse5(path4).root) {
-      return false;
-    }
-    if (!removedAll) {
-      return false;
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => {
-      rimrafWindowsDirMoveRemoveFallbackSync(path4, opt);
-    });
-  }
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-manual.js
-var rimrafManual = platform_default === "win32" ? rimrafWindows : rimrafPosix;
-var rimrafManualSync = platform_default === "win32" ? rimrafWindowsSync : rimrafPosixSync;
-
-// node_modules/rimraf/dist/esm/rimraf-native.js
-var { rm: rm2 } = promises;
-var rimrafNative = async (path4, opt) => {
-  await rm2(path4, {
-    ...opt,
-    force: true,
-    recursive: true
-  });
-  return true;
-};
-var rimrafNativeSync = (path4, opt) => {
-  rmSync(path4, {
-    ...opt,
-    force: true,
-    recursive: true
-  });
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/use-native.js
-var version = process.env.__TESTING_RIMRAF_NODE_VERSION__ || process.version;
-var versArr = version.replace(/^v/, "").split(".");
-var [major = 0, minor = 0] = versArr.map((v) => parseInt(v, 10));
-var hasNative = major > 14 || major === 14 && minor >= 14;
-var useNative = !hasNative || platform_default === "win32" ? () => false : (opt) => !opt?.signal && !opt?.filter;
-var useNativeSync = !hasNative || platform_default === "win32" ? () => false : (opt) => !opt?.signal && !opt?.filter;
-
-// node_modules/rimraf/dist/esm/index.js
-var wrap = (fn) => async (path4, opt) => {
-  const options = optArg(opt);
-  if (options.glob) {
-    path4 = await glob(path4, options.glob);
-  }
-  if (Array.isArray(path4)) {
-    return !!(await Promise.all(path4.map((p) => fn(path_arg_default(p, options), options)))).reduce((a, b) => a && b, true);
-  } else {
-    return !!await fn(path_arg_default(path4, options), options);
-  }
-};
-var wrapSync = (fn) => (path4, opt) => {
-  const options = optArgSync(opt);
-  if (options.glob) {
-    path4 = globSync(path4, options.glob);
-  }
-  if (Array.isArray(path4)) {
-    return !!path4.map((p) => fn(path_arg_default(p, options), options)).reduce((a, b) => a && b, true);
-  } else {
-    return !!fn(path_arg_default(path4, options), options);
-  }
-};
-var nativeSync = wrapSync(rimrafNativeSync);
-var native = Object.assign(wrap(rimrafNative), { sync: nativeSync });
-var manualSync = wrapSync(rimrafManualSync);
-var manual = Object.assign(wrap(rimrafManual), { sync: manualSync });
-var windowsSync = wrapSync(rimrafWindowsSync);
-var windows = Object.assign(wrap(rimrafWindows), { sync: windowsSync });
-var posixSync = wrapSync(rimrafPosixSync);
-var posix2 = Object.assign(wrap(rimrafPosix), { sync: posixSync });
-var moveRemoveSync = wrapSync(rimrafMoveRemoveSync);
-var moveRemove = Object.assign(wrap(rimrafMoveRemove), {
-  sync: moveRemoveSync
-});
-var rimrafSync = wrapSync((path4, opt) => useNativeSync(opt) ? rimrafNativeSync(path4, opt) : rimrafManualSync(path4, opt));
-var rimraf_ = wrap((path4, opt) => useNative(opt) ? rimrafNative(path4, opt) : rimrafManual(path4, opt));
-var rimraf = Object.assign(rimraf_, {
-  rimraf: rimraf_,
-  sync: rimrafSync,
-  rimrafSync,
-  manual,
-  manualSync,
-  native,
-  nativeSync,
-  posix: posix2,
-  posixSync,
-  windows,
-  windowsSync,
-  moveRemove,
-  moveRemoveSync
-});
-rimraf.rimraf = rimraf;
-
-// src/bin/cli.ts
-import { fileURLToPath as fileURLToPath3 } from "url";
-var __filename = fileURLToPath3(import.meta.url);
-var __dirname = path3.dirname(__filename);
-var projectRoot = path3.resolve(__dirname, "../../../");
-var config3 = {
-  ...config2,
-  rootDirectory: path3.resolve(projectRoot, config2.rootDirectory),
-  snippetOutputDirectory: path3.resolve(
-    projectRoot,
-    config2.snippetOutputDirectory
-  )
-};
-function clearOutputDirectory(snippetOutputDirectory) {
-  if (fs3.existsSync(snippetOutputDirectory)) {
-    rimraf.sync(snippetOutputDirectory);
-  } else {
-    console.log(`Output directory does not exist: ${snippetOutputDirectory}`);
-  }
-}
-async function main() {
-  const args = process.argv.slice(2);
-  config3.rootDirectory = path3.resolve(__dirname, "../", config3.rootDirectory);
-  config3.snippetOutputDirectory = path3.resolve(
-    __dirname,
-    "../",
-    config3.snippetOutputDirectory
-  );
-  if (args.includes("clear")) {
-    clearOutputDirectory(config3.snippetOutputDirectory);
-    return;
-  }
-  const structureFlagIndex = args.indexOf("--structure");
-  if (structureFlagIndex !== -1 && args.length > structureFlagIndex + 1) {
-    const structureValue = args[structureFlagIndex + 1];
-    const validStructures = ["flat", "match", "organized", "byLanguage"];
-    if (validStructures.includes(structureValue)) {
-      config3.outputDirectoryStructure = structureValue;
-    } else {
-      console.error(
-        `Invalid output directory structure: '${structureValue}'. Valid options are: ${validStructures.join(
-          ", "
-        )}`
-      );
-      process.exit(1);
-    }
-  } else if (structureFlagIndex !== -1) {
-    console.error(
-      "The --structure flag requires a value. Valid options are: flat, match, organized, byLanguage"
-    );
-    process.exit(1);
-  }
-  const extractor = new SnippetExtractor_default(config3);
-  extractor.extractSnippets();
-}
-main();
diff --git a/shnip/dist/cli.js b/shnip/dist/cli.js
deleted file mode 100644
index 21b3a8ab7..000000000
--- a/shnip/dist/cli.js
+++ /dev/null
@@ -1,7788 +0,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __typeError = (msg) => {
-  throw TypeError(msg);
-};
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __commonJS = (cb, mod) => function __require() {
-  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
-};
-var __copyProps = (to, from, except, desc) => {
-  if (from && typeof from === "object" || typeof from === "function") {
-    for (let key of __getOwnPropNames(from))
-      if (!__hasOwnProp.call(to, key) && key !== except)
-        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
-  }
-  return to;
-};
-var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
-  // If the importer is in node compatibility mode or this is not an ESM
-  // file that has been converted to a CommonJS file using a Babel-
-  // compatible transform (i.e. "__esModule" has not been set), then set
-  // "default" to the CommonJS "module.exports" for node compatibility.
-  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
-  mod
-));
-var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
-var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
-var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
-var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
-var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
-var __privateWrapper = (obj, member, setter, getter) => ({
-  set _(value) {
-    __privateSet(obj, member, value, setter);
-  },
-  get _() {
-    return __privateGet(obj, member, getter);
-  }
-});
-
-// node_modules/balanced-match/index.js
-var require_balanced_match = __commonJS({
-  "node_modules/balanced-match/index.js"(exports, module) {
-    "use strict";
-    module.exports = balanced;
-    function balanced(a, b, str) {
-      if (a instanceof RegExp) a = maybeMatch(a, str);
-      if (b instanceof RegExp) b = maybeMatch(b, str);
-      var r = range(a, b, str);
-      return r && {
-        start: r[0],
-        end: r[1],
-        pre: str.slice(0, r[0]),
-        body: str.slice(r[0] + a.length, r[1]),
-        post: str.slice(r[1] + b.length)
-      };
-    }
-    function maybeMatch(reg, str) {
-      var m = str.match(reg);
-      return m ? m[0] : null;
-    }
-    balanced.range = range;
-    function range(a, b, str) {
-      var begs, beg, left, right, result;
-      var ai = str.indexOf(a);
-      var bi = str.indexOf(b, ai + 1);
-      var i = ai;
-      if (ai >= 0 && bi > 0) {
-        if (a === b) {
-          return [ai, bi];
-        }
-        begs = [];
-        left = str.length;
-        while (i >= 0 && !result) {
-          if (i == ai) {
-            begs.push(i);
-            ai = str.indexOf(a, i + 1);
-          } else if (begs.length == 1) {
-            result = [begs.pop(), bi];
-          } else {
-            beg = begs.pop();
-            if (beg < left) {
-              left = beg;
-              right = bi;
-            }
-            bi = str.indexOf(b, i + 1);
-          }
-          i = ai < bi && ai >= 0 ? ai : bi;
-        }
-        if (begs.length) {
-          result = [left, right];
-        }
-      }
-      return result;
-    }
-  }
-});
-
-// node_modules/brace-expansion/index.js
-var require_brace_expansion = __commonJS({
-  "node_modules/brace-expansion/index.js"(exports, module) {
-    var balanced = require_balanced_match();
-    module.exports = expandTop;
-    var escSlash = "\0SLASH" + Math.random() + "\0";
-    var escOpen = "\0OPEN" + Math.random() + "\0";
-    var escClose = "\0CLOSE" + Math.random() + "\0";
-    var escComma = "\0COMMA" + Math.random() + "\0";
-    var escPeriod = "\0PERIOD" + Math.random() + "\0";
-    function numeric(str) {
-      return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0);
-    }
-    function escapeBraces(str) {
-      return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod);
-    }
-    function unescapeBraces(str) {
-      return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join(".");
-    }
-    function parseCommaParts(str) {
-      if (!str)
-        return [""];
-      var parts = [];
-      var m = balanced("{", "}", str);
-      if (!m)
-        return str.split(",");
-      var pre = m.pre;
-      var body = m.body;
-      var post = m.post;
-      var p = pre.split(",");
-      p[p.length - 1] += "{" + body + "}";
-      var postParts = parseCommaParts(post);
-      if (post.length) {
-        p[p.length - 1] += postParts.shift();
-        p.push.apply(p, postParts);
-      }
-      parts.push.apply(parts, p);
-      return parts;
-    }
-    function expandTop(str) {
-      if (!str)
-        return [];
-      if (str.substr(0, 2) === "{}") {
-        str = "\\{\\}" + str.substr(2);
-      }
-      return expand2(escapeBraces(str), true).map(unescapeBraces);
-    }
-    function embrace(str) {
-      return "{" + str + "}";
-    }
-    function isPadded(el) {
-      return /^-?0\d/.test(el);
-    }
-    function lte(i, y) {
-      return i <= y;
-    }
-    function gte(i, y) {
-      return i >= y;
-    }
-    function expand2(str, isTop) {
-      var expansions = [];
-      var m = balanced("{", "}", str);
-      if (!m) return [str];
-      var pre = m.pre;
-      var post = m.post.length ? expand2(m.post, false) : [""];
-      if (/\$$/.test(m.pre)) {
-        for (var k = 0; k < post.length; k++) {
-          var expansion = pre + "{" + m.body + "}" + post[k];
-          expansions.push(expansion);
-        }
-      } else {
-        var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
-        var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
-        var isSequence = isNumericSequence || isAlphaSequence;
-        var isOptions = m.body.indexOf(",") >= 0;
-        if (!isSequence && !isOptions) {
-          if (m.post.match(/,.*\}/)) {
-            str = m.pre + "{" + m.body + escClose + m.post;
-            return expand2(str);
-          }
-          return [str];
-        }
-        var n;
-        if (isSequence) {
-          n = m.body.split(/\.\./);
-        } else {
-          n = parseCommaParts(m.body);
-          if (n.length === 1) {
-            n = expand2(n[0], false).map(embrace);
-            if (n.length === 1) {
-              return post.map(function(p) {
-                return m.pre + n[0] + p;
-              });
-            }
-          }
-        }
-        var N;
-        if (isSequence) {
-          var x = numeric(n[0]);
-          var y = numeric(n[1]);
-          var width = Math.max(n[0].length, n[1].length);
-          var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
-          var test = lte;
-          var reverse = y < x;
-          if (reverse) {
-            incr *= -1;
-            test = gte;
-          }
-          var pad = n.some(isPadded);
-          N = [];
-          for (var i = x; test(i, y); i += incr) {
-            var c;
-            if (isAlphaSequence) {
-              c = String.fromCharCode(i);
-              if (c === "\\")
-                c = "";
-            } else {
-              c = String(i);
-              if (pad) {
-                var need = width - c.length;
-                if (need > 0) {
-                  var z = new Array(need + 1).join("0");
-                  if (i < 0)
-                    c = "-" + z + c.slice(1);
-                  else
-                    c = z + c;
-                }
-              }
-            }
-            N.push(c);
-          }
-        } else {
-          N = [];
-          for (var j = 0; j < n.length; j++) {
-            N.push.apply(N, expand2(n[j], false));
-          }
-        }
-        for (var j = 0; j < N.length; j++) {
-          for (var k = 0; k < post.length; k++) {
-            var expansion = pre + N[j] + post[k];
-            if (!isTop || isSequence || expansion)
-              expansions.push(expansion);
-          }
-        }
-      }
-      return expansions;
-    }
-  }
-});
-
-// src/extract/SnippetExtractor.ts
-import fs from "fs";
-import path from "path";
-var SnippetExtractor = class {
-  constructor(config2) {
-    this.prependBlocks = {};
-    this.config = {
-      ...config2,
-      outputDirectoryStructure: config2.outputDirectoryStructure || "byLanguage"
-    };
-    console.log("yo", this.config);
-  }
-  gatherSnippetNames(content) {
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(start, startIndex)) !== -1) {
-      endIndex = content.indexOf(end, startIndex);
-      if (endIndex === -1) break;
-      const snippetNameLine = content.substring(startIndex + start.length, content.indexOf("\n", startIndex)).trim();
-      startIndex = endIndex + end.length;
-    }
-  }
-  gatherImports(content) {
-    const { prependStart, prependEnd } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(prependStart, startIndex)) !== -1) {
-      const endOfStartTag = content.indexOf("\n", startIndex);
-      const snippetNamesLine = content.substring(startIndex + prependStart.length, endOfStartTag).trim();
-      const snippetNames = snippetNamesLine.split(/\s+/);
-      endIndex = content.indexOf(prependEnd, endOfStartTag);
-      if (endIndex === -1) {
-        console.log("No matching :prepend-end: found for :prepend-start:");
-        break;
-      }
-      const importBlock = content.substring(endOfStartTag + 1, endIndex).trim();
-      snippetNames.forEach((name) => {
-        if (!this.prependBlocks[name]) {
-          this.prependBlocks[name] = [];
-        }
-        this.prependBlocks[name].push(importBlock);
-      });
-      startIndex = endIndex + prependEnd.length;
-    }
-  }
-  extractSnippetsFromFile(content, filePath) {
-    const snippets = {};
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    const fileExtension = path.extname(filePath);
-    while ((startIndex = content.indexOf(start, endIndex)) !== -1) {
-      const startTagClose = content.indexOf("\n", startIndex);
-      if (startTagClose === -1) {
-        console.log("Snippet start tag not followed by newline. Skipping...");
-        break;
-      }
-      endIndex = content.indexOf(end, startTagClose);
-      if (endIndex === -1) {
-        console.log("No closing tag found for a snippet. Skipping...");
-        break;
-      }
-      const snippetName = content.substring(startIndex + start.length, startTagClose).trim();
-      let snippetContent = content.substring(startTagClose + 1, endIndex);
-      snippetContent = this.normalizeIndentation(snippetContent, fileExtension);
-      if (this.prependBlocks[snippetName]) {
-        const importsToPrepend = this.prependBlocks[snippetName].map((block) => block.trimEnd().replace(/\/\/\s*$/, "")).join("\n");
-        const finalImports = importsToPrepend.length > 0 ? `${importsToPrepend}
-` : "";
-        snippetContent = `${finalImports}${snippetContent}`;
-      }
-      if (snippetName) {
-        snippets[snippetName] = snippetContent;
-      }
-      endIndex += end.length;
-    }
-    return snippets;
-  }
-  normalizeIndentation(snippetContent, fileExtension) {
-    const lines = snippetContent.split("\n");
-    const firstLineIndentation = lines[0].match(/^(\s*)/)?.[0].length || 0;
-    const normalizedLines = lines.map((line) => {
-      const currentIndentation = line.match(/^(\s*)/)?.[0].length || 0;
-      if (currentIndentation >= firstLineIndentation) {
-        return line.substring(firstLineIndentation);
-      }
-      return line;
-    });
-    const commentChar = fileExtension === ".bash" ? "#" : "//";
-    return normalizedLines.map((line) => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), "")).join("\n");
-  }
-  shouldExcludeFile(content) {
-    if (this.config.outputDirectoryStructure === "match") {
-      return this.config.exclude.some(
-        (excludeString) => content.includes(excludeString)
-      );
-    }
-    return false;
-  }
-  processDirectory(directory, relativePath = "") {
-    const items = fs.readdirSync(directory);
-    items.forEach((item) => {
-      const fullPath = path.join(directory, item);
-      const stat3 = fs.statSync(fullPath);
-      if (stat3.isDirectory()) {
-        this.processDirectory(fullPath, path.join(relativePath, item));
-      } else if (this.config.fileExtensions.includes(path.extname(item))) {
-        const content = fs.readFileSync(fullPath, "utf-8");
-        this.prependBlocks = {};
-        this.gatherSnippetNames(content);
-        this.gatherImports(content);
-        if (!this.shouldExcludeFile(content)) {
-          const fileSnippets = this.extractSnippetsFromFile(content, fullPath);
-          this.writeSnippetsToFile(fileSnippets, fullPath, relativePath);
-        }
-      }
-    });
-  }
-  writeSnippetsToFile(snippets, fullPath, relativePath) {
-    for (const [snippetName, snippetContent] of Object.entries(snippets)) {
-      let outputPath;
-      switch (this.config.outputDirectoryStructure) {
-        case "match":
-          outputPath = path.join(
-            this.config.snippetOutputDirectory,
-            relativePath,
-            `${snippetName}.snippet${path.extname(fullPath)}`
-          );
-          break;
-        case "byLanguage":
-        default:
-          outputPath = this.determineOutputPath(snippetName, fullPath);
-          break;
-      }
-      if (!fs.existsSync(path.dirname(outputPath))) {
-        fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-      }
-      fs.writeFileSync(
-        outputPath,
-        `export default ${JSON.stringify(snippetContent)};`
-      );
-    }
-  }
-  determineOutputPath(snippetName, fullPath) {
-    const extension = path.extname(fullPath);
-    const language = this.getLanguageFromExtension(extension);
-    const version2 = this.config.version || "v1";
-    return path.join(
-      this.config.snippetOutputDirectory,
-      version2,
-      language,
-      `${snippetName}.snippet.js`
-    );
-  }
-  getLanguageFromExtension(extension) {
-    const extensionToLanguageMap = {
-      ".js": "js",
-      ".ts": "typescript",
-      ".kt": "kt",
-      ".swift": "swift",
-      ".gradle": "gradle",
-      ".bash": "bash",
-      ".xml": "xml"
-    };
-    return extensionToLanguageMap[extension] || "other";
-  }
-  extractSnippets() {
-    if (!fs.existsSync(this.config.snippetOutputDirectory)) {
-      fs.mkdirSync(this.config.snippetOutputDirectory, { recursive: true });
-    }
-    this.processDirectory(this.config.rootDirectory);
-  }
-};
-var SnippetExtractor_default = SnippetExtractor;
-
-// config/shnip.config.ts
-var config = {
-  rootDirectory: "./site-new/testsuites",
-  snippetOutputDirectory: "./site-new/snippets",
-  fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
-  exclude: [
-    "pfiOverviewReadOfferingsJs",
-    "pfiOverviewWriteJs",
-    "pfiOverviewWriteOfferingsJs"
-  ],
-  snippetTags: {
-    start: ":snippet-start:",
-    end: ":snippet-end:",
-    prependStart: ":prepend-start:",
-    prependEnd: ":prepend-end:"
-  },
-  outputDirectoryStructure: "byLanguage",
-  version: "1.0.0"
-};
-
-// src/bin/cli.ts
-import fs3 from "fs";
-import path3 from "path";
-
-// node_modules/minimatch/dist/esm/index.js
-var import_brace_expansion = __toESM(require_brace_expansion(), 1);
-
-// node_modules/minimatch/dist/esm/assert-valid-pattern.js
-var MAX_PATTERN_LENGTH = 1024 * 64;
-var assertValidPattern = (pattern) => {
-  if (typeof pattern !== "string") {
-    throw new TypeError("invalid pattern");
-  }
-  if (pattern.length > MAX_PATTERN_LENGTH) {
-    throw new TypeError("pattern is too long");
-  }
-};
-
-// node_modules/minimatch/dist/esm/brace-expressions.js
-var posixClasses = {
-  "[:alnum:]": ["\\p{L}\\p{Nl}\\p{Nd}", true],
-  "[:alpha:]": ["\\p{L}\\p{Nl}", true],
-  "[:ascii:]": ["\\x00-\\x7f", false],
-  "[:blank:]": ["\\p{Zs}\\t", true],
-  "[:cntrl:]": ["\\p{Cc}", true],
-  "[:digit:]": ["\\p{Nd}", true],
-  "[:graph:]": ["\\p{Z}\\p{C}", true, true],
-  "[:lower:]": ["\\p{Ll}", true],
-  "[:print:]": ["\\p{C}", true],
-  "[:punct:]": ["\\p{P}", true],
-  "[:space:]": ["\\p{Z}\\t\\r\\n\\v\\f", true],
-  "[:upper:]": ["\\p{Lu}", true],
-  "[:word:]": ["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}", true],
-  "[:xdigit:]": ["A-Fa-f0-9", false]
-};
-var braceEscape = (s) => s.replace(/[[\]\\-]/g, "\\$&");
-var regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
-var rangesToString = (ranges) => ranges.join("");
-var parseClass = (glob2, position) => {
-  const pos = position;
-  if (glob2.charAt(pos) !== "[") {
-    throw new Error("not in a brace expression");
-  }
-  const ranges = [];
-  const negs = [];
-  let i = pos + 1;
-  let sawStart = false;
-  let uflag = false;
-  let escaping = false;
-  let negate = false;
-  let endPos = pos;
-  let rangeStart = "";
-  WHILE: while (i < glob2.length) {
-    const c = glob2.charAt(i);
-    if ((c === "!" || c === "^") && i === pos + 1) {
-      negate = true;
-      i++;
-      continue;
-    }
-    if (c === "]" && sawStart && !escaping) {
-      endPos = i + 1;
-      break;
-    }
-    sawStart = true;
-    if (c === "\\") {
-      if (!escaping) {
-        escaping = true;
-        i++;
-        continue;
-      }
-    }
-    if (c === "[" && !escaping) {
-      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
-        if (glob2.startsWith(cls, i)) {
-          if (rangeStart) {
-            return ["$.", false, glob2.length - pos, true];
-          }
-          i += cls.length;
-          if (neg)
-            negs.push(unip);
-          else
-            ranges.push(unip);
-          uflag = uflag || u;
-          continue WHILE;
-        }
-      }
-    }
-    escaping = false;
-    if (rangeStart) {
-      if (c > rangeStart) {
-        ranges.push(braceEscape(rangeStart) + "-" + braceEscape(c));
-      } else if (c === rangeStart) {
-        ranges.push(braceEscape(c));
-      }
-      rangeStart = "";
-      i++;
-      continue;
-    }
-    if (glob2.startsWith("-]", i + 1)) {
-      ranges.push(braceEscape(c + "-"));
-      i += 2;
-      continue;
-    }
-    if (glob2.startsWith("-", i + 1)) {
-      rangeStart = c;
-      i += 2;
-      continue;
-    }
-    ranges.push(braceEscape(c));
-    i++;
-  }
-  if (endPos < i) {
-    return ["", false, 0, false];
-  }
-  if (!ranges.length && !negs.length) {
-    return ["$.", false, glob2.length - pos, true];
-  }
-  if (negs.length === 0 && ranges.length === 1 && /^\\?.$/.test(ranges[0]) && !negate) {
-    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
-    return [regexpEscape(r), false, endPos - pos, false];
-  }
-  const sranges = "[" + (negate ? "^" : "") + rangesToString(ranges) + "]";
-  const snegs = "[" + (negate ? "" : "^") + rangesToString(negs) + "]";
-  const comb = ranges.length && negs.length ? "(" + sranges + "|" + snegs + ")" : ranges.length ? sranges : snegs;
-  return [comb, uflag, endPos - pos, true];
-};
-
-// node_modules/minimatch/dist/esm/unescape.js
-var unescape = (s, { windowsPathsNoEscape = false } = {}) => {
-  return windowsPathsNoEscape ? s.replace(/\[([^\/\\])\]/g, "$1") : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1");
-};
-
-// node_modules/minimatch/dist/esm/ast.js
-var types = /* @__PURE__ */ new Set(["!", "?", "+", "*", "@"]);
-var isExtglobType = (c) => types.has(c);
-var startNoTraversal = "(?!(?:^|/)\\.\\.?(?:$|/))";
-var startNoDot = "(?!\\.)";
-var addPatternStart = /* @__PURE__ */ new Set(["[", "."]);
-var justDots = /* @__PURE__ */ new Set(["..", "."]);
-var reSpecials = new Set("().*{}+?[]^$\\!");
-var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
-var qmark = "[^/]";
-var star = qmark + "*?";
-var starNoEmpty = qmark + "+?";
-var _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, partsToRegExp_fn, parseGlob_fn;
-var _AST = class _AST {
-  constructor(type, parent, options = {}) {
-    __privateAdd(this, _AST_instances);
-    __publicField(this, "type");
-    __privateAdd(this, _root);
-    __privateAdd(this, _hasMagic);
-    __privateAdd(this, _uflag, false);
-    __privateAdd(this, _parts, []);
-    __privateAdd(this, _parent);
-    __privateAdd(this, _parentIndex);
-    __privateAdd(this, _negs);
-    __privateAdd(this, _filledNegs, false);
-    __privateAdd(this, _options);
-    __privateAdd(this, _toString);
-    // set to true if it's an extglob with no children
-    // (which really means one child of '')
-    __privateAdd(this, _emptyExt, false);
-    this.type = type;
-    if (type)
-      __privateSet(this, _hasMagic, true);
-    __privateSet(this, _parent, parent);
-    __privateSet(this, _root, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _root) : this);
-    __privateSet(this, _options, __privateGet(this, _root) === this ? options : __privateGet(__privateGet(this, _root), _options));
-    __privateSet(this, _negs, __privateGet(this, _root) === this ? [] : __privateGet(__privateGet(this, _root), _negs));
-    if (type === "!" && !__privateGet(__privateGet(this, _root), _filledNegs))
-      __privateGet(this, _negs).push(this);
-    __privateSet(this, _parentIndex, __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0);
-  }
-  get hasMagic() {
-    if (__privateGet(this, _hasMagic) !== void 0)
-      return __privateGet(this, _hasMagic);
-    for (const p of __privateGet(this, _parts)) {
-      if (typeof p === "string")
-        continue;
-      if (p.type || p.hasMagic)
-        return __privateSet(this, _hasMagic, true);
-    }
-    return __privateGet(this, _hasMagic);
-  }
-  // reconstructs the pattern
-  toString() {
-    if (__privateGet(this, _toString) !== void 0)
-      return __privateGet(this, _toString);
-    if (!this.type) {
-      return __privateSet(this, _toString, __privateGet(this, _parts).map((p) => String(p)).join(""));
-    } else {
-      return __privateSet(this, _toString, this.type + "(" + __privateGet(this, _parts).map((p) => String(p)).join("|") + ")");
-    }
-  }
-  push(...parts) {
-    for (const p of parts) {
-      if (p === "")
-        continue;
-      if (typeof p !== "string" && !(p instanceof _AST && __privateGet(p, _parent) === this)) {
-        throw new Error("invalid part: " + p);
-      }
-      __privateGet(this, _parts).push(p);
-    }
-  }
-  toJSON() {
-    const ret = this.type === null ? __privateGet(this, _parts).slice().map((p) => typeof p === "string" ? p : p.toJSON()) : [this.type, ...__privateGet(this, _parts).map((p) => p.toJSON())];
-    if (this.isStart() && !this.type)
-      ret.unshift([]);
-    if (this.isEnd() && (this === __privateGet(this, _root) || __privateGet(__privateGet(this, _root), _filledNegs) && __privateGet(this, _parent)?.type === "!")) {
-      ret.push({});
-    }
-    return ret;
-  }
-  isStart() {
-    if (__privateGet(this, _root) === this)
-      return true;
-    if (!__privateGet(this, _parent)?.isStart())
-      return false;
-    if (__privateGet(this, _parentIndex) === 0)
-      return true;
-    const p = __privateGet(this, _parent);
-    for (let i = 0; i < __privateGet(this, _parentIndex); i++) {
-      const pp = __privateGet(p, _parts)[i];
-      if (!(pp instanceof _AST && pp.type === "!")) {
-        return false;
-      }
-    }
-    return true;
-  }
-  isEnd() {
-    if (__privateGet(this, _root) === this)
-      return true;
-    if (__privateGet(this, _parent)?.type === "!")
-      return true;
-    if (!__privateGet(this, _parent)?.isEnd())
-      return false;
-    if (!this.type)
-      return __privateGet(this, _parent)?.isEnd();
-    const pl = __privateGet(this, _parent) ? __privateGet(__privateGet(this, _parent), _parts).length : 0;
-    return __privateGet(this, _parentIndex) === pl - 1;
-  }
-  copyIn(part) {
-    if (typeof part === "string")
-      this.push(part);
-    else
-      this.push(part.clone(this));
-  }
-  clone(parent) {
-    const c = new _AST(this.type, parent);
-    for (const p of __privateGet(this, _parts)) {
-      c.copyIn(p);
-    }
-    return c;
-  }
-  static fromGlob(pattern, options = {}) {
-    var _a3;
-    const ast = new _AST(null, void 0, options);
-    __privateMethod(_a3 = _AST, _AST_static, parseAST_fn).call(_a3, pattern, ast, 0, options);
-    return ast;
-  }
-  // returns the regular expression if there's magic, or the unescaped
-  // string if not.
-  toMMPattern() {
-    if (this !== __privateGet(this, _root))
-      return __privateGet(this, _root).toMMPattern();
-    const glob2 = this.toString();
-    const [re, body, hasMagic2, uflag] = this.toRegExpSource();
-    const anyMagic = hasMagic2 || __privateGet(this, _hasMagic) || __privateGet(this, _options).nocase && !__privateGet(this, _options).nocaseMagicOnly && glob2.toUpperCase() !== glob2.toLowerCase();
-    if (!anyMagic) {
-      return body;
-    }
-    const flags = (__privateGet(this, _options).nocase ? "i" : "") + (uflag ? "u" : "");
-    return Object.assign(new RegExp(`^${re}$`, flags), {
-      _src: re,
-      _glob: glob2
-    });
-  }
-  get options() {
-    return __privateGet(this, _options);
-  }
-  // returns the string match, the regexp source, whether there's magic
-  // in the regexp (so a regular expression is required) and whether or
-  // not the uflag is needed for the regular expression (for posix classes)
-  // TODO: instead of injecting the start/end at this point, just return
-  // the BODY of the regexp, along with the start/end portions suitable
-  // for binding the start/end in either a joined full-path makeRe context
-  // (where we bind to (^|/), or a standalone matchPart context (where
-  // we bind to ^, and not /).  Otherwise slashes get duped!
-  //
-  // In part-matching mode, the start is:
-  // - if not isStart: nothing
-  // - if traversal possible, but not allowed: ^(?!\.\.?$)
-  // - if dots allowed or not possible: ^
-  // - if dots possible and not allowed: ^(?!\.)
-  // end is:
-  // - if not isEnd(): nothing
-  // - else: $
-  //
-  // In full-path matching mode, we put the slash at the START of the
-  // pattern, so start is:
-  // - if first pattern: same as part-matching mode
-  // - if not isStart(): nothing
-  // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
-  // - if dots allowed or not possible: /
-  // - if dots possible and not allowed: /(?!\.)
-  // end is:
-  // - if last pattern, same as part-matching mode
-  // - else nothing
-  //
-  // Always put the (?:$|/) on negated tails, though, because that has to be
-  // there to bind the end of the negated pattern portion, and it's easier to
-  // just stick it in now rather than try to inject it later in the middle of
-  // the pattern.
-  //
-  // We can just always return the same end, and leave it up to the caller
-  // to know whether it's going to be used joined or in parts.
-  // And, if the start is adjusted slightly, can do the same there:
-  // - if not isStart: nothing
-  // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
-  // - if dots allowed or not possible: (?:/|^)
-  // - if dots possible and not allowed: (?:/|^)(?!\.)
-  //
-  // But it's better to have a simpler binding without a conditional, for
-  // performance, so probably better to return both start options.
-  //
-  // Then the caller just ignores the end if it's not the first pattern,
-  // and the start always gets applied.
-  //
-  // But that's always going to be $ if it's the ending pattern, or nothing,
-  // so the caller can just attach $ at the end of the pattern when building.
-  //
-  // So the todo is:
-  // - better detect what kind of start is needed
-  // - return both flavors of starting pattern
-  // - attach $ at the end of the pattern when creating the actual RegExp
-  //
-  // Ah, but wait, no, that all only applies to the root when the first pattern
-  // is not an extglob. If the first pattern IS an extglob, then we need all
-  // that dot prevention biz to live in the extglob portions, because eg
-  // +(*|.x*) can match .xy but not .yx.
-  //
-  // So, return the two flavors if it's #root and the first child is not an
-  // AST, otherwise leave it to the child AST to handle it, and there,
-  // use the (?:^|/) style of start binding.
-  //
-  // Even simplified further:
-  // - Since the start for a join is eg /(?!\.) and the start for a part
-  // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
-  // or start or whatever) and prepend ^ or / at the Regexp construction.
-  toRegExpSource(allowDot) {
-    const dot = allowDot ?? !!__privateGet(this, _options).dot;
-    if (__privateGet(this, _root) === this)
-      __privateMethod(this, _AST_instances, fillNegs_fn).call(this);
-    if (!this.type) {
-      const noEmpty = this.isStart() && this.isEnd();
-      const src = __privateGet(this, _parts).map((p) => {
-        var _a3;
-        const [re, _, hasMagic2, uflag] = typeof p === "string" ? __privateMethod(_a3 = _AST, _AST_static, parseGlob_fn).call(_a3, p, __privateGet(this, _hasMagic), noEmpty) : p.toRegExpSource(allowDot);
-        __privateSet(this, _hasMagic, __privateGet(this, _hasMagic) || hasMagic2);
-        __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag);
-        return re;
-      }).join("");
-      let start2 = "";
-      if (this.isStart()) {
-        if (typeof __privateGet(this, _parts)[0] === "string") {
-          const dotTravAllowed = __privateGet(this, _parts).length === 1 && justDots.has(__privateGet(this, _parts)[0]);
-          if (!dotTravAllowed) {
-            const aps = addPatternStart;
-            const needNoTrav = (
-              // dots are allowed, and the pattern starts with [ or .
-              dot && aps.has(src.charAt(0)) || // the pattern starts with \., and then [ or .
-              src.startsWith("\\.") && aps.has(src.charAt(2)) || // the pattern starts with \.\., and then [ or .
-              src.startsWith("\\.\\.") && aps.has(src.charAt(4))
-            );
-            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
-            start2 = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : "";
-          }
-        }
-      }
-      let end = "";
-      if (this.isEnd() && __privateGet(__privateGet(this, _root), _filledNegs) && __privateGet(this, _parent)?.type === "!") {
-        end = "(?:$|\\/)";
-      }
-      const final2 = start2 + src + end;
-      return [
-        final2,
-        unescape(src),
-        __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)),
-        __privateGet(this, _uflag)
-      ];
-    }
-    const repeated = this.type === "*" || this.type === "+";
-    const start = this.type === "!" ? "(?:(?!(?:" : "(?:";
-    let body = __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, dot);
-    if (this.isStart() && this.isEnd() && !body && this.type !== "!") {
-      const s = this.toString();
-      __privateSet(this, _parts, [s]);
-      this.type = null;
-      __privateSet(this, _hasMagic, void 0);
-      return [s, unescape(this.toString()), false, false];
-    }
-    let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? "" : __privateMethod(this, _AST_instances, partsToRegExp_fn).call(this, true);
-    if (bodyDotAllowed === body) {
-      bodyDotAllowed = "";
-    }
-    if (bodyDotAllowed) {
-      body = `(?:${body})(?:${bodyDotAllowed})*?`;
-    }
-    let final = "";
-    if (this.type === "!" && __privateGet(this, _emptyExt)) {
-      final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
-    } else {
-      const close = this.type === "!" ? (
-        // !() must match something,but !(x) can match ''
-        "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star + ")"
-      ) : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
-      final = start + body + close;
-    }
-    return [
-      final,
-      unescape(body),
-      __privateSet(this, _hasMagic, !!__privateGet(this, _hasMagic)),
-      __privateGet(this, _uflag)
-    ];
-  }
-};
-_root = new WeakMap();
-_hasMagic = new WeakMap();
-_uflag = new WeakMap();
-_parts = new WeakMap();
-_parent = new WeakMap();
-_parentIndex = new WeakMap();
-_negs = new WeakMap();
-_filledNegs = new WeakMap();
-_options = new WeakMap();
-_toString = new WeakMap();
-_emptyExt = new WeakMap();
-_AST_instances = new WeakSet();
-fillNegs_fn = function() {
-  if (this !== __privateGet(this, _root))
-    throw new Error("should only call on root");
-  if (__privateGet(this, _filledNegs))
-    return this;
-  this.toString();
-  __privateSet(this, _filledNegs, true);
-  let n;
-  while (n = __privateGet(this, _negs).pop()) {
-    if (n.type !== "!")
-      continue;
-    let p = n;
-    let pp = __privateGet(p, _parent);
-    while (pp) {
-      for (let i = __privateGet(p, _parentIndex) + 1; !pp.type && i < __privateGet(pp, _parts).length; i++) {
-        for (const part of __privateGet(n, _parts)) {
-          if (typeof part === "string") {
-            throw new Error("string part in extglob AST??");
-          }
-          part.copyIn(__privateGet(pp, _parts)[i]);
-        }
-      }
-      p = pp;
-      pp = __privateGet(p, _parent);
-    }
-  }
-  return this;
-};
-_AST_static = new WeakSet();
-parseAST_fn = function(str, ast, pos, opt) {
-  var _a3, _b3;
-  let escaping = false;
-  let inBrace = false;
-  let braceStart = -1;
-  let braceNeg = false;
-  if (ast.type === null) {
-    let i2 = pos;
-    let acc2 = "";
-    while (i2 < str.length) {
-      const c = str.charAt(i2++);
-      if (escaping || c === "\\") {
-        escaping = !escaping;
-        acc2 += c;
-        continue;
-      }
-      if (inBrace) {
-        if (i2 === braceStart + 1) {
-          if (c === "^" || c === "!") {
-            braceNeg = true;
-          }
-        } else if (c === "]" && !(i2 === braceStart + 2 && braceNeg)) {
-          inBrace = false;
-        }
-        acc2 += c;
-        continue;
-      } else if (c === "[") {
-        inBrace = true;
-        braceStart = i2;
-        braceNeg = false;
-        acc2 += c;
-        continue;
-      }
-      if (!opt.noext && isExtglobType(c) && str.charAt(i2) === "(") {
-        ast.push(acc2);
-        acc2 = "";
-        const ext2 = new _AST(c, ast);
-        i2 = __privateMethod(_a3 = _AST, _AST_static, parseAST_fn).call(_a3, str, ext2, i2, opt);
-        ast.push(ext2);
-        continue;
-      }
-      acc2 += c;
-    }
-    ast.push(acc2);
-    return i2;
-  }
-  let i = pos + 1;
-  let part = new _AST(null, ast);
-  const parts = [];
-  let acc = "";
-  while (i < str.length) {
-    const c = str.charAt(i++);
-    if (escaping || c === "\\") {
-      escaping = !escaping;
-      acc += c;
-      continue;
-    }
-    if (inBrace) {
-      if (i === braceStart + 1) {
-        if (c === "^" || c === "!") {
-          braceNeg = true;
-        }
-      } else if (c === "]" && !(i === braceStart + 2 && braceNeg)) {
-        inBrace = false;
-      }
-      acc += c;
-      continue;
-    } else if (c === "[") {
-      inBrace = true;
-      braceStart = i;
-      braceNeg = false;
-      acc += c;
-      continue;
-    }
-    if (isExtglobType(c) && str.charAt(i) === "(") {
-      part.push(acc);
-      acc = "";
-      const ext2 = new _AST(c, part);
-      part.push(ext2);
-      i = __privateMethod(_b3 = _AST, _AST_static, parseAST_fn).call(_b3, str, ext2, i, opt);
-      continue;
-    }
-    if (c === "|") {
-      part.push(acc);
-      acc = "";
-      parts.push(part);
-      part = new _AST(null, ast);
-      continue;
-    }
-    if (c === ")") {
-      if (acc === "" && __privateGet(ast, _parts).length === 0) {
-        __privateSet(ast, _emptyExt, true);
-      }
-      part.push(acc);
-      acc = "";
-      ast.push(...parts, part);
-      return i;
-    }
-    acc += c;
-  }
-  ast.type = null;
-  __privateSet(ast, _hasMagic, void 0);
-  __privateSet(ast, _parts, [str.substring(pos - 1)]);
-  return i;
-};
-partsToRegExp_fn = function(dot) {
-  return __privateGet(this, _parts).map((p) => {
-    if (typeof p === "string") {
-      throw new Error("string type in extglob ast??");
-    }
-    const [re, _, _hasMagic2, uflag] = p.toRegExpSource(dot);
-    __privateSet(this, _uflag, __privateGet(this, _uflag) || uflag);
-    return re;
-  }).filter((p) => !(this.isStart() && this.isEnd()) || !!p).join("|");
-};
-parseGlob_fn = function(glob2, hasMagic2, noEmpty = false) {
-  let escaping = false;
-  let re = "";
-  let uflag = false;
-  for (let i = 0; i < glob2.length; i++) {
-    const c = glob2.charAt(i);
-    if (escaping) {
-      escaping = false;
-      re += (reSpecials.has(c) ? "\\" : "") + c;
-      continue;
-    }
-    if (c === "\\") {
-      if (i === glob2.length - 1) {
-        re += "\\\\";
-      } else {
-        escaping = true;
-      }
-      continue;
-    }
-    if (c === "[") {
-      const [src, needUflag, consumed, magic] = parseClass(glob2, i);
-      if (consumed) {
-        re += src;
-        uflag = uflag || needUflag;
-        i += consumed - 1;
-        hasMagic2 = hasMagic2 || magic;
-        continue;
-      }
-    }
-    if (c === "*") {
-      if (noEmpty && glob2 === "*")
-        re += starNoEmpty;
-      else
-        re += star;
-      hasMagic2 = true;
-      continue;
-    }
-    if (c === "?") {
-      re += qmark;
-      hasMagic2 = true;
-      continue;
-    }
-    re += regExpEscape(c);
-  }
-  return [re, unescape(glob2), !!hasMagic2, uflag];
-};
-__privateAdd(_AST, _AST_static);
-var AST = _AST;
-
-// node_modules/minimatch/dist/esm/escape.js
-var escape = (s, { windowsPathsNoEscape = false } = {}) => {
-  return windowsPathsNoEscape ? s.replace(/[?*()[\]]/g, "[$&]") : s.replace(/[?*()[\]\\]/g, "\\$&");
-};
-
-// node_modules/minimatch/dist/esm/index.js
-var minimatch = (p, pattern, options = {}) => {
-  assertValidPattern(pattern);
-  if (!options.nocomment && pattern.charAt(0) === "#") {
-    return false;
-  }
-  return new Minimatch(pattern, options).match(p);
-};
-var starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
-var starDotExtTest = (ext2) => (f) => !f.startsWith(".") && f.endsWith(ext2);
-var starDotExtTestDot = (ext2) => (f) => f.endsWith(ext2);
-var starDotExtTestNocase = (ext2) => {
-  ext2 = ext2.toLowerCase();
-  return (f) => !f.startsWith(".") && f.toLowerCase().endsWith(ext2);
-};
-var starDotExtTestNocaseDot = (ext2) => {
-  ext2 = ext2.toLowerCase();
-  return (f) => f.toLowerCase().endsWith(ext2);
-};
-var starDotStarRE = /^\*+\.\*+$/;
-var starDotStarTest = (f) => !f.startsWith(".") && f.includes(".");
-var starDotStarTestDot = (f) => f !== "." && f !== ".." && f.includes(".");
-var dotStarRE = /^\.\*+$/;
-var dotStarTest = (f) => f !== "." && f !== ".." && f.startsWith(".");
-var starRE = /^\*+$/;
-var starTest = (f) => f.length !== 0 && !f.startsWith(".");
-var starTestDot = (f) => f.length !== 0 && f !== "." && f !== "..";
-var qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
-var qmarksTestNocase = ([$0, ext2 = ""]) => {
-  const noext = qmarksTestNoExt([$0]);
-  if (!ext2)
-    return noext;
-  ext2 = ext2.toLowerCase();
-  return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
-};
-var qmarksTestNocaseDot = ([$0, ext2 = ""]) => {
-  const noext = qmarksTestNoExtDot([$0]);
-  if (!ext2)
-    return noext;
-  ext2 = ext2.toLowerCase();
-  return (f) => noext(f) && f.toLowerCase().endsWith(ext2);
-};
-var qmarksTestDot = ([$0, ext2 = ""]) => {
-  const noext = qmarksTestNoExtDot([$0]);
-  return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
-};
-var qmarksTest = ([$0, ext2 = ""]) => {
-  const noext = qmarksTestNoExt([$0]);
-  return !ext2 ? noext : (f) => noext(f) && f.endsWith(ext2);
-};
-var qmarksTestNoExt = ([$0]) => {
-  const len = $0.length;
-  return (f) => f.length === len && !f.startsWith(".");
-};
-var qmarksTestNoExtDot = ([$0]) => {
-  const len = $0.length;
-  return (f) => f.length === len && f !== "." && f !== "..";
-};
-var defaultPlatform = typeof process === "object" && process ? typeof process.env === "object" && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__ || process.platform : "posix";
-var path2 = {
-  win32: { sep: "\\" },
-  posix: { sep: "/" }
-};
-var sep = defaultPlatform === "win32" ? path2.win32.sep : path2.posix.sep;
-minimatch.sep = sep;
-var GLOBSTAR = Symbol("globstar **");
-minimatch.GLOBSTAR = GLOBSTAR;
-var qmark2 = "[^/]";
-var star2 = qmark2 + "*?";
-var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";
-var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?";
-var filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);
-minimatch.filter = filter;
-var ext = (a, b = {}) => Object.assign({}, a, b);
-var defaults = (def) => {
-  if (!def || typeof def !== "object" || !Object.keys(def).length) {
-    return minimatch;
-  }
-  const orig = minimatch;
-  const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
-  return Object.assign(m, {
-    Minimatch: class Minimatch extends orig.Minimatch {
-      constructor(pattern, options = {}) {
-        super(pattern, ext(def, options));
-      }
-      static defaults(options) {
-        return orig.defaults(ext(def, options)).Minimatch;
-      }
-    },
-    AST: class AST extends orig.AST {
-      /* c8 ignore start */
-      constructor(type, parent, options = {}) {
-        super(type, parent, ext(def, options));
-      }
-      /* c8 ignore stop */
-      static fromGlob(pattern, options = {}) {
-        return orig.AST.fromGlob(pattern, ext(def, options));
-      }
-    },
-    unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
-    escape: (s, options = {}) => orig.escape(s, ext(def, options)),
-    filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
-    defaults: (options) => orig.defaults(ext(def, options)),
-    makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
-    braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
-    match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
-    sep: orig.sep,
-    GLOBSTAR
-  });
-};
-minimatch.defaults = defaults;
-var braceExpand = (pattern, options = {}) => {
-  assertValidPattern(pattern);
-  if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
-    return [pattern];
-  }
-  return (0, import_brace_expansion.default)(pattern);
-};
-minimatch.braceExpand = braceExpand;
-var makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
-minimatch.makeRe = makeRe;
-var match = (list, pattern, options = {}) => {
-  const mm = new Minimatch(pattern, options);
-  list = list.filter((f) => mm.match(f));
-  if (mm.options.nonull && !list.length) {
-    list.push(pattern);
-  }
-  return list;
-};
-minimatch.match = match;
-var globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
-var regExpEscape2 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
-var Minimatch = class {
-  constructor(pattern, options = {}) {
-    __publicField(this, "options");
-    __publicField(this, "set");
-    __publicField(this, "pattern");
-    __publicField(this, "windowsPathsNoEscape");
-    __publicField(this, "nonegate");
-    __publicField(this, "negate");
-    __publicField(this, "comment");
-    __publicField(this, "empty");
-    __publicField(this, "preserveMultipleSlashes");
-    __publicField(this, "partial");
-    __publicField(this, "globSet");
-    __publicField(this, "globParts");
-    __publicField(this, "nocase");
-    __publicField(this, "isWindows");
-    __publicField(this, "platform");
-    __publicField(this, "windowsNoMagicRoot");
-    __publicField(this, "regexp");
-    assertValidPattern(pattern);
-    options = options || {};
-    this.options = options;
-    this.pattern = pattern;
-    this.platform = options.platform || defaultPlatform;
-    this.isWindows = this.platform === "win32";
-    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
-    if (this.windowsPathsNoEscape) {
-      this.pattern = this.pattern.replace(/\\/g, "/");
-    }
-    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
-    this.regexp = null;
-    this.negate = false;
-    this.nonegate = !!options.nonegate;
-    this.comment = false;
-    this.empty = false;
-    this.partial = !!options.partial;
-    this.nocase = !!this.options.nocase;
-    this.windowsNoMagicRoot = options.windowsNoMagicRoot !== void 0 ? options.windowsNoMagicRoot : !!(this.isWindows && this.nocase);
-    this.globSet = [];
-    this.globParts = [];
-    this.set = [];
-    this.make();
-  }
-  hasMagic() {
-    if (this.options.magicalBraces && this.set.length > 1) {
-      return true;
-    }
-    for (const pattern of this.set) {
-      for (const part of pattern) {
-        if (typeof part !== "string")
-          return true;
-      }
-    }
-    return false;
-  }
-  debug(..._) {
-  }
-  make() {
-    const pattern = this.pattern;
-    const options = this.options;
-    if (!options.nocomment && pattern.charAt(0) === "#") {
-      this.comment = true;
-      return;
-    }
-    if (!pattern) {
-      this.empty = true;
-      return;
-    }
-    this.parseNegate();
-    this.globSet = [...new Set(this.braceExpand())];
-    if (options.debug) {
-      this.debug = (...args) => console.error(...args);
-    }
-    this.debug(this.pattern, this.globSet);
-    const rawGlobParts = this.globSet.map((s) => this.slashSplit(s));
-    this.globParts = this.preprocess(rawGlobParts);
-    this.debug(this.pattern, this.globParts);
-    let set = this.globParts.map((s, _, __) => {
-      if (this.isWindows && this.windowsNoMagicRoot) {
-        const isUNC = s[0] === "" && s[1] === "" && (s[2] === "?" || !globMagic.test(s[2])) && !globMagic.test(s[3]);
-        const isDrive = /^[a-z]:/i.test(s[0]);
-        if (isUNC) {
-          return [...s.slice(0, 4), ...s.slice(4).map((ss) => this.parse(ss))];
-        } else if (isDrive) {
-          return [s[0], ...s.slice(1).map((ss) => this.parse(ss))];
-        }
-      }
-      return s.map((ss) => this.parse(ss));
-    });
-    this.debug(this.pattern, set);
-    this.set = set.filter((s) => s.indexOf(false) === -1);
-    if (this.isWindows) {
-      for (let i = 0; i < this.set.length; i++) {
-        const p = this.set[i];
-        if (p[0] === "" && p[1] === "" && this.globParts[i][2] === "?" && typeof p[3] === "string" && /^[a-z]:$/i.test(p[3])) {
-          p[2] = "?";
-        }
-      }
-    }
-    this.debug(this.pattern, this.set);
-  }
-  // various transforms to equivalent pattern sets that are
-  // faster to process in a filesystem walk.  The goal is to
-  // eliminate what we can, and push all ** patterns as far
-  // to the right as possible, even if it increases the number
-  // of patterns that we have to process.
-  preprocess(globParts) {
-    if (this.options.noglobstar) {
-      for (let i = 0; i < globParts.length; i++) {
-        for (let j = 0; j < globParts[i].length; j++) {
-          if (globParts[i][j] === "**") {
-            globParts[i][j] = "*";
-          }
-        }
-      }
-    }
-    const { optimizationLevel = 1 } = this.options;
-    if (optimizationLevel >= 2) {
-      globParts = this.firstPhasePreProcess(globParts);
-      globParts = this.secondPhasePreProcess(globParts);
-    } else if (optimizationLevel >= 1) {
-      globParts = this.levelOneOptimize(globParts);
-    } else {
-      globParts = this.adjascentGlobstarOptimize(globParts);
-    }
-    return globParts;
-  }
-  // just get rid of adjascent ** portions
-  adjascentGlobstarOptimize(globParts) {
-    return globParts.map((parts) => {
-      let gs = -1;
-      while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
-        let i = gs;
-        while (parts[i + 1] === "**") {
-          i++;
-        }
-        if (i !== gs) {
-          parts.splice(gs, i - gs);
-        }
-      }
-      return parts;
-    });
-  }
-  // get rid of adjascent ** and resolve .. portions
-  levelOneOptimize(globParts) {
-    return globParts.map((parts) => {
-      parts = parts.reduce((set, part) => {
-        const prev = set[set.length - 1];
-        if (part === "**" && prev === "**") {
-          return set;
-        }
-        if (part === "..") {
-          if (prev && prev !== ".." && prev !== "." && prev !== "**") {
-            set.pop();
-            return set;
-          }
-        }
-        set.push(part);
-        return set;
-      }, []);
-      return parts.length === 0 ? [""] : parts;
-    });
-  }
-  levelTwoFileOptimize(parts) {
-    if (!Array.isArray(parts)) {
-      parts = this.slashSplit(parts);
-    }
-    let didSomething = false;
-    do {
-      didSomething = false;
-      if (!this.preserveMultipleSlashes) {
-        for (let i = 1; i < parts.length - 1; i++) {
-          const p = parts[i];
-          if (i === 1 && p === "" && parts[0] === "")
-            continue;
-          if (p === "." || p === "") {
-            didSomething = true;
-            parts.splice(i, 1);
-            i--;
-          }
-        }
-        if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
-          didSomething = true;
-          parts.pop();
-        }
-      }
-      let dd = 0;
-      while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
-        const p = parts[dd - 1];
-        if (p && p !== "." && p !== ".." && p !== "**") {
-          didSomething = true;
-          parts.splice(dd - 1, 2);
-          dd -= 2;
-        }
-      }
-    } while (didSomething);
-    return parts.length === 0 ? [""] : parts;
-  }
-  // First phase: single-pattern processing
-  // 
 is 1 or more portions
-  //  is 1 or more portions
-  // 

is any portion other than ., .., '', or ** - // is . or '' - // - // **/.. is *brutal* for filesystem walking performance, because - // it effectively resets the recursive walk each time it occurs, - // and ** cannot be reduced out by a .. pattern part like a regexp - // or most strings (other than .., ., and '') can be. - // - //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/} - //

// -> 
/
-  // 
/

/../ ->

/
-  // **/**/ -> **/
-  //
-  // **/*/ -> */**/ <== not valid because ** doesn't follow
-  // this WOULD be allowed if ** did follow symlinks, or * didn't
-  firstPhasePreProcess(globParts) {
-    let didSomething = false;
-    do {
-      didSomething = false;
-      for (let parts of globParts) {
-        let gs = -1;
-        while (-1 !== (gs = parts.indexOf("**", gs + 1))) {
-          let gss = gs;
-          while (parts[gss + 1] === "**") {
-            gss++;
-          }
-          if (gss > gs) {
-            parts.splice(gs + 1, gss - gs);
-          }
-          let next = parts[gs + 1];
-          const p = parts[gs + 2];
-          const p2 = parts[gs + 3];
-          if (next !== "..")
-            continue;
-          if (!p || p === "." || p === ".." || !p2 || p2 === "." || p2 === "..") {
-            continue;
-          }
-          didSomething = true;
-          parts.splice(gs, 1);
-          const other = parts.slice(0);
-          other[gs] = "**";
-          globParts.push(other);
-          gs--;
-        }
-        if (!this.preserveMultipleSlashes) {
-          for (let i = 1; i < parts.length - 1; i++) {
-            const p = parts[i];
-            if (i === 1 && p === "" && parts[0] === "")
-              continue;
-            if (p === "." || p === "") {
-              didSomething = true;
-              parts.splice(i, 1);
-              i--;
-            }
-          }
-          if (parts[0] === "." && parts.length === 2 && (parts[1] === "." || parts[1] === "")) {
-            didSomething = true;
-            parts.pop();
-          }
-        }
-        let dd = 0;
-        while (-1 !== (dd = parts.indexOf("..", dd + 1))) {
-          const p = parts[dd - 1];
-          if (p && p !== "." && p !== ".." && p !== "**") {
-            didSomething = true;
-            const needDot = dd === 1 && parts[dd + 1] === "**";
-            const splin = needDot ? ["."] : [];
-            parts.splice(dd - 1, 2, ...splin);
-            if (parts.length === 0)
-              parts.push("");
-            dd -= 2;
-          }
-        }
-      }
-    } while (didSomething);
-    return globParts;
-  }
-  // second phase: multi-pattern dedupes
-  // {
/*/,
/

/} ->

/*/
-  // {
/,
/} -> 
/
-  // {
/**/,
/} -> 
/**/
-  //
-  // {
/**/,
/**/

/} ->

/**/
-  // ^-- not valid because ** doens't follow symlinks
-  secondPhasePreProcess(globParts) {
-    for (let i = 0; i < globParts.length - 1; i++) {
-      for (let j = i + 1; j < globParts.length; j++) {
-        const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
-        if (matched) {
-          globParts[i] = [];
-          globParts[j] = matched;
-          break;
-        }
-      }
-    }
-    return globParts.filter((gs) => gs.length);
-  }
-  partsMatch(a, b, emptyGSMatch = false) {
-    let ai = 0;
-    let bi = 0;
-    let result = [];
-    let which = "";
-    while (ai < a.length && bi < b.length) {
-      if (a[ai] === b[bi]) {
-        result.push(which === "b" ? b[bi] : a[ai]);
-        ai++;
-        bi++;
-      } else if (emptyGSMatch && a[ai] === "**" && b[bi] === a[ai + 1]) {
-        result.push(a[ai]);
-        ai++;
-      } else if (emptyGSMatch && b[bi] === "**" && a[ai] === b[bi + 1]) {
-        result.push(b[bi]);
-        bi++;
-      } else if (a[ai] === "*" && b[bi] && (this.options.dot || !b[bi].startsWith(".")) && b[bi] !== "**") {
-        if (which === "b")
-          return false;
-        which = "a";
-        result.push(a[ai]);
-        ai++;
-        bi++;
-      } else if (b[bi] === "*" && a[ai] && (this.options.dot || !a[ai].startsWith(".")) && a[ai] !== "**") {
-        if (which === "a")
-          return false;
-        which = "b";
-        result.push(b[bi]);
-        ai++;
-        bi++;
-      } else {
-        return false;
-      }
-    }
-    return a.length === b.length && result;
-  }
-  parseNegate() {
-    if (this.nonegate)
-      return;
-    const pattern = this.pattern;
-    let negate = false;
-    let negateOffset = 0;
-    for (let i = 0; i < pattern.length && pattern.charAt(i) === "!"; i++) {
-      negate = !negate;
-      negateOffset++;
-    }
-    if (negateOffset)
-      this.pattern = pattern.slice(negateOffset);
-    this.negate = negate;
-  }
-  // set partial to true to test if, for example,
-  // "/a/b" matches the start of "/*/b/*/d"
-  // Partial means, if you run out of file before you run
-  // out of pattern, then that's fine, as long as all
-  // the parts match.
-  matchOne(file, pattern, partial = false) {
-    const options = this.options;
-    if (this.isWindows) {
-      const fileDrive = typeof file[0] === "string" && /^[a-z]:$/i.test(file[0]);
-      const fileUNC = !fileDrive && file[0] === "" && file[1] === "" && file[2] === "?" && /^[a-z]:$/i.test(file[3]);
-      const patternDrive = typeof pattern[0] === "string" && /^[a-z]:$/i.test(pattern[0]);
-      const patternUNC = !patternDrive && pattern[0] === "" && pattern[1] === "" && pattern[2] === "?" && typeof pattern[3] === "string" && /^[a-z]:$/i.test(pattern[3]);
-      const fdi = fileUNC ? 3 : fileDrive ? 0 : void 0;
-      const pdi = patternUNC ? 3 : patternDrive ? 0 : void 0;
-      if (typeof fdi === "number" && typeof pdi === "number") {
-        const [fd, pd] = [file[fdi], pattern[pdi]];
-        if (fd.toLowerCase() === pd.toLowerCase()) {
-          pattern[pdi] = fd;
-          if (pdi > fdi) {
-            pattern = pattern.slice(pdi);
-          } else if (fdi > pdi) {
-            file = file.slice(fdi);
-          }
-        }
-      }
-    }
-    const { optimizationLevel = 1 } = this.options;
-    if (optimizationLevel >= 2) {
-      file = this.levelTwoFileOptimize(file);
-    }
-    this.debug("matchOne", this, { file, pattern });
-    this.debug("matchOne", file.length, pattern.length);
-    for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
-      this.debug("matchOne loop");
-      var p = pattern[pi];
-      var f = file[fi];
-      this.debug(pattern, p, f);
-      if (p === false) {
-        return false;
-      }
-      if (p === GLOBSTAR) {
-        this.debug("GLOBSTAR", [pattern, p, f]);
-        var fr = fi;
-        var pr = pi + 1;
-        if (pr === pl) {
-          this.debug("** at the end");
-          for (; fi < fl; fi++) {
-            if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".")
-              return false;
-          }
-          return true;
-        }
-        while (fr < fl) {
-          var swallowee = file[fr];
-          this.debug("\nglobstar while", file, fr, pattern, pr, swallowee);
-          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
-            this.debug("globstar found match!", fr, fl, swallowee);
-            return true;
-          } else {
-            if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
-              this.debug("dot detected!", file, fr, pattern, pr);
-              break;
-            }
-            this.debug("globstar swallow a segment, and continue");
-            fr++;
-          }
-        }
-        if (partial) {
-          this.debug("\n>>> no match, partial?", file, fr, pattern, pr);
-          if (fr === fl) {
-            return true;
-          }
-        }
-        return false;
-      }
-      let hit;
-      if (typeof p === "string") {
-        hit = f === p;
-        this.debug("string match", p, f, hit);
-      } else {
-        hit = p.test(f);
-        this.debug("pattern match", p, f, hit);
-      }
-      if (!hit)
-        return false;
-    }
-    if (fi === fl && pi === pl) {
-      return true;
-    } else if (fi === fl) {
-      return partial;
-    } else if (pi === pl) {
-      return fi === fl - 1 && file[fi] === "";
-    } else {
-      throw new Error("wtf?");
-    }
-  }
-  braceExpand() {
-    return braceExpand(this.pattern, this.options);
-  }
-  parse(pattern) {
-    assertValidPattern(pattern);
-    const options = this.options;
-    if (pattern === "**")
-      return GLOBSTAR;
-    if (pattern === "")
-      return "";
-    let m;
-    let fastTest = null;
-    if (m = pattern.match(starRE)) {
-      fastTest = options.dot ? starTestDot : starTest;
-    } else if (m = pattern.match(starDotExtRE)) {
-      fastTest = (options.nocase ? options.dot ? starDotExtTestNocaseDot : starDotExtTestNocase : options.dot ? starDotExtTestDot : starDotExtTest)(m[1]);
-    } else if (m = pattern.match(qmarksRE)) {
-      fastTest = (options.nocase ? options.dot ? qmarksTestNocaseDot : qmarksTestNocase : options.dot ? qmarksTestDot : qmarksTest)(m);
-    } else if (m = pattern.match(starDotStarRE)) {
-      fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
-    } else if (m = pattern.match(dotStarRE)) {
-      fastTest = dotStarTest;
-    }
-    const re = AST.fromGlob(pattern, this.options).toMMPattern();
-    if (fastTest && typeof re === "object") {
-      Reflect.defineProperty(re, "test", { value: fastTest });
-    }
-    return re;
-  }
-  makeRe() {
-    if (this.regexp || this.regexp === false)
-      return this.regexp;
-    const set = this.set;
-    if (!set.length) {
-      this.regexp = false;
-      return this.regexp;
-    }
-    const options = this.options;
-    const twoStar = options.noglobstar ? star2 : options.dot ? twoStarDot : twoStarNoDot;
-    const flags = new Set(options.nocase ? ["i"] : []);
-    let re = set.map((pattern) => {
-      const pp = pattern.map((p) => {
-        if (p instanceof RegExp) {
-          for (const f of p.flags.split(""))
-            flags.add(f);
-        }
-        return typeof p === "string" ? regExpEscape2(p) : p === GLOBSTAR ? GLOBSTAR : p._src;
-      });
-      pp.forEach((p, i) => {
-        const next = pp[i + 1];
-        const prev = pp[i - 1];
-        if (p !== GLOBSTAR || prev === GLOBSTAR) {
-          return;
-        }
-        if (prev === void 0) {
-          if (next !== void 0 && next !== GLOBSTAR) {
-            pp[i + 1] = "(?:\\/|" + twoStar + "\\/)?" + next;
-          } else {
-            pp[i] = twoStar;
-          }
-        } else if (next === void 0) {
-          pp[i - 1] = prev + "(?:\\/|" + twoStar + ")?";
-        } else if (next !== GLOBSTAR) {
-          pp[i - 1] = prev + "(?:\\/|\\/" + twoStar + "\\/)" + next;
-          pp[i + 1] = GLOBSTAR;
-        }
-      });
-      return pp.filter((p) => p !== GLOBSTAR).join("/");
-    }).join("|");
-    const [open, close] = set.length > 1 ? ["(?:", ")"] : ["", ""];
-    re = "^" + open + re + close + "$";
-    if (this.negate)
-      re = "^(?!" + re + ").+$";
-    try {
-      this.regexp = new RegExp(re, [...flags].join(""));
-    } catch (ex) {
-      this.regexp = false;
-    }
-    return this.regexp;
-  }
-  slashSplit(p) {
-    if (this.preserveMultipleSlashes) {
-      return p.split("/");
-    } else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
-      return ["", ...p.split(/\/+/)];
-    } else {
-      return p.split(/\/+/);
-    }
-  }
-  match(f, partial = this.partial) {
-    this.debug("match", f, this.pattern);
-    if (this.comment) {
-      return false;
-    }
-    if (this.empty) {
-      return f === "";
-    }
-    if (f === "/" && partial) {
-      return true;
-    }
-    const options = this.options;
-    if (this.isWindows) {
-      f = f.split("\\").join("/");
-    }
-    const ff = this.slashSplit(f);
-    this.debug(this.pattern, "split", ff);
-    const set = this.set;
-    this.debug(this.pattern, "set", set);
-    let filename = ff[ff.length - 1];
-    if (!filename) {
-      for (let i = ff.length - 2; !filename && i >= 0; i--) {
-        filename = ff[i];
-      }
-    }
-    for (let i = 0; i < set.length; i++) {
-      const pattern = set[i];
-      let file = ff;
-      if (options.matchBase && pattern.length === 1) {
-        file = [filename];
-      }
-      const hit = this.matchOne(file, pattern, partial);
-      if (hit) {
-        if (options.flipNegate) {
-          return true;
-        }
-        return !this.negate;
-      }
-    }
-    if (options.flipNegate) {
-      return false;
-    }
-    return this.negate;
-  }
-  static defaults(def) {
-    return minimatch.defaults(def).Minimatch;
-  }
-};
-minimatch.AST = AST;
-minimatch.Minimatch = Minimatch;
-minimatch.escape = escape;
-minimatch.unescape = unescape;
-
-// node_modules/glob/dist/esm/glob.js
-import { fileURLToPath as fileURLToPath2 } from "node:url";
-
-// node_modules/lru-cache/dist/esm/index.js
-var perf = typeof performance === "object" && performance && typeof performance.now === "function" ? performance : Date;
-var warned = /* @__PURE__ */ new Set();
-var PROCESS = typeof process === "object" && !!process ? process : {};
-var emitWarning = (msg, type, code, fn) => {
-  typeof PROCESS.emitWarning === "function" ? PROCESS.emitWarning(msg, type, code, fn) : console.error(`[${code}] ${type}: ${msg}`);
-};
-var AC = globalThis.AbortController;
-var AS = globalThis.AbortSignal;
-if (typeof AC === "undefined") {
-  AS = class AbortSignal {
-    constructor() {
-      __publicField(this, "onabort");
-      __publicField(this, "_onabort", []);
-      __publicField(this, "reason");
-      __publicField(this, "aborted", false);
-    }
-    addEventListener(_, fn) {
-      this._onabort.push(fn);
-    }
-  };
-  AC = class AbortController {
-    constructor() {
-      __publicField(this, "signal", new AS());
-      warnACPolyfill();
-    }
-    abort(reason) {
-      if (this.signal.aborted)
-        return;
-      this.signal.reason = reason;
-      this.signal.aborted = true;
-      for (const fn of this.signal._onabort) {
-        fn(reason);
-      }
-      this.signal.onabort?.(reason);
-    }
-  };
-  let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== "1";
-  const warnACPolyfill = () => {
-    if (!printACPolyfillWarning)
-      return;
-    printACPolyfillWarning = false;
-    emitWarning("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.", "NO_ABORT_CONTROLLER", "ENOTSUP", warnACPolyfill);
-  };
-}
-var shouldWarn = (code) => !warned.has(code);
-var TYPE = Symbol("type");
-var isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
-var getUintArray = (max) => !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null;
-var ZeroArray = class extends Array {
-  constructor(size) {
-    super(size);
-    this.fill(0);
-  }
-};
-var _constructing;
-var _Stack = class _Stack {
-  constructor(max, HeapCls) {
-    __publicField(this, "heap");
-    __publicField(this, "length");
-    if (!__privateGet(_Stack, _constructing)) {
-      throw new TypeError("instantiate Stack using Stack.create(n)");
-    }
-    this.heap = new HeapCls(max);
-    this.length = 0;
-  }
-  static create(max) {
-    const HeapCls = getUintArray(max);
-    if (!HeapCls)
-      return [];
-    __privateSet(_Stack, _constructing, true);
-    const s = new _Stack(max, HeapCls);
-    __privateSet(_Stack, _constructing, false);
-    return s;
-  }
-  push(n) {
-    this.heap[this.length++] = n;
-  }
-  pop() {
-    return this.heap[--this.length];
-  }
-};
-_constructing = new WeakMap();
-// private constructor
-__privateAdd(_Stack, _constructing, false);
-var Stack = _Stack;
-var _a, _b, _max, _maxSize, _dispose, _disposeAfter, _fetchMethod, _memoMethod, _size, _calculatedSize, _keyMap, _keyList, _valList, _next, _prev, _head, _tail, _free, _disposed, _sizes, _starts, _ttls, _hasDispose, _hasFetchMethod, _hasDisposeAfter, _LRUCache_instances, initializeTTLTracking_fn, _updateItemAge, _statusTTL, _setItemTTL, _isStale, initializeSizeTracking_fn, _removeItemSize, _addItemSize, _requireSize, indexes_fn, rindexes_fn, isValidIndex_fn, evict_fn, backgroundFetch_fn, isBackgroundFetch_fn, connect_fn, moveToTail_fn, delete_fn, clear_fn;
-var _LRUCache = class _LRUCache {
-  constructor(options) {
-    __privateAdd(this, _LRUCache_instances);
-    // options that cannot be changed without disaster
-    __privateAdd(this, _max);
-    __privateAdd(this, _maxSize);
-    __privateAdd(this, _dispose);
-    __privateAdd(this, _disposeAfter);
-    __privateAdd(this, _fetchMethod);
-    __privateAdd(this, _memoMethod);
-    /**
-     * {@link LRUCache.OptionsBase.ttl}
-     */
-    __publicField(this, "ttl");
-    /**
-     * {@link LRUCache.OptionsBase.ttlResolution}
-     */
-    __publicField(this, "ttlResolution");
-    /**
-     * {@link LRUCache.OptionsBase.ttlAutopurge}
-     */
-    __publicField(this, "ttlAutopurge");
-    /**
-     * {@link LRUCache.OptionsBase.updateAgeOnGet}
-     */
-    __publicField(this, "updateAgeOnGet");
-    /**
-     * {@link LRUCache.OptionsBase.updateAgeOnHas}
-     */
-    __publicField(this, "updateAgeOnHas");
-    /**
-     * {@link LRUCache.OptionsBase.allowStale}
-     */
-    __publicField(this, "allowStale");
-    /**
-     * {@link LRUCache.OptionsBase.noDisposeOnSet}
-     */
-    __publicField(this, "noDisposeOnSet");
-    /**
-     * {@link LRUCache.OptionsBase.noUpdateTTL}
-     */
-    __publicField(this, "noUpdateTTL");
-    /**
-     * {@link LRUCache.OptionsBase.maxEntrySize}
-     */
-    __publicField(this, "maxEntrySize");
-    /**
-     * {@link LRUCache.OptionsBase.sizeCalculation}
-     */
-    __publicField(this, "sizeCalculation");
-    /**
-     * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
-     */
-    __publicField(this, "noDeleteOnFetchRejection");
-    /**
-     * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
-     */
-    __publicField(this, "noDeleteOnStaleGet");
-    /**
-     * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
-     */
-    __publicField(this, "allowStaleOnFetchAbort");
-    /**
-     * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
-     */
-    __publicField(this, "allowStaleOnFetchRejection");
-    /**
-     * {@link LRUCache.OptionsBase.ignoreFetchAbort}
-     */
-    __publicField(this, "ignoreFetchAbort");
-    // computed properties
-    __privateAdd(this, _size);
-    __privateAdd(this, _calculatedSize);
-    __privateAdd(this, _keyMap);
-    __privateAdd(this, _keyList);
-    __privateAdd(this, _valList);
-    __privateAdd(this, _next);
-    __privateAdd(this, _prev);
-    __privateAdd(this, _head);
-    __privateAdd(this, _tail);
-    __privateAdd(this, _free);
-    __privateAdd(this, _disposed);
-    __privateAdd(this, _sizes);
-    __privateAdd(this, _starts);
-    __privateAdd(this, _ttls);
-    __privateAdd(this, _hasDispose);
-    __privateAdd(this, _hasFetchMethod);
-    __privateAdd(this, _hasDisposeAfter);
-    // conditionally set private methods related to TTL
-    __privateAdd(this, _updateItemAge, () => {
-    });
-    __privateAdd(this, _statusTTL, () => {
-    });
-    __privateAdd(this, _setItemTTL, () => {
-    });
-    /* c8 ignore stop */
-    __privateAdd(this, _isStale, () => false);
-    __privateAdd(this, _removeItemSize, (_i2) => {
-    });
-    __privateAdd(this, _addItemSize, (_i2, _s2, _st) => {
-    });
-    __privateAdd(this, _requireSize, (_k2, _v, size, sizeCalculation) => {
-      if (size || sizeCalculation) {
-        throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");
-      }
-      return 0;
-    });
-    /**
-     * A String value that is used in the creation of the default string
-     * description of an object. Called by the built-in method
-     * `Object.prototype.toString`.
-     */
-    __publicField(this, _a, "LRUCache");
-    const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort } = options;
-    if (max !== 0 && !isPosInt(max)) {
-      throw new TypeError("max option must be a nonnegative integer");
-    }
-    const UintArray = max ? getUintArray(max) : Array;
-    if (!UintArray) {
-      throw new Error("invalid max value: " + max);
-    }
-    __privateSet(this, _max, max);
-    __privateSet(this, _maxSize, maxSize);
-    this.maxEntrySize = maxEntrySize || __privateGet(this, _maxSize);
-    this.sizeCalculation = sizeCalculation;
-    if (this.sizeCalculation) {
-      if (!__privateGet(this, _maxSize) && !this.maxEntrySize) {
-        throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");
-      }
-      if (typeof this.sizeCalculation !== "function") {
-        throw new TypeError("sizeCalculation set to non-function");
-      }
-    }
-    if (memoMethod !== void 0 && typeof memoMethod !== "function") {
-      throw new TypeError("memoMethod must be a function if defined");
-    }
-    __privateSet(this, _memoMethod, memoMethod);
-    if (fetchMethod !== void 0 && typeof fetchMethod !== "function") {
-      throw new TypeError("fetchMethod must be a function if specified");
-    }
-    __privateSet(this, _fetchMethod, fetchMethod);
-    __privateSet(this, _hasFetchMethod, !!fetchMethod);
-    __privateSet(this, _keyMap, /* @__PURE__ */ new Map());
-    __privateSet(this, _keyList, new Array(max).fill(void 0));
-    __privateSet(this, _valList, new Array(max).fill(void 0));
-    __privateSet(this, _next, new UintArray(max));
-    __privateSet(this, _prev, new UintArray(max));
-    __privateSet(this, _head, 0);
-    __privateSet(this, _tail, 0);
-    __privateSet(this, _free, Stack.create(max));
-    __privateSet(this, _size, 0);
-    __privateSet(this, _calculatedSize, 0);
-    if (typeof dispose === "function") {
-      __privateSet(this, _dispose, dispose);
-    }
-    if (typeof disposeAfter === "function") {
-      __privateSet(this, _disposeAfter, disposeAfter);
-      __privateSet(this, _disposed, []);
-    } else {
-      __privateSet(this, _disposeAfter, void 0);
-      __privateSet(this, _disposed, void 0);
-    }
-    __privateSet(this, _hasDispose, !!__privateGet(this, _dispose));
-    __privateSet(this, _hasDisposeAfter, !!__privateGet(this, _disposeAfter));
-    this.noDisposeOnSet = !!noDisposeOnSet;
-    this.noUpdateTTL = !!noUpdateTTL;
-    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
-    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
-    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
-    this.ignoreFetchAbort = !!ignoreFetchAbort;
-    if (this.maxEntrySize !== 0) {
-      if (__privateGet(this, _maxSize) !== 0) {
-        if (!isPosInt(__privateGet(this, _maxSize))) {
-          throw new TypeError("maxSize must be a positive integer if specified");
-        }
-      }
-      if (!isPosInt(this.maxEntrySize)) {
-        throw new TypeError("maxEntrySize must be a positive integer if specified");
-      }
-      __privateMethod(this, _LRUCache_instances, initializeSizeTracking_fn).call(this);
-    }
-    this.allowStale = !!allowStale;
-    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
-    this.updateAgeOnGet = !!updateAgeOnGet;
-    this.updateAgeOnHas = !!updateAgeOnHas;
-    this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1;
-    this.ttlAutopurge = !!ttlAutopurge;
-    this.ttl = ttl || 0;
-    if (this.ttl) {
-      if (!isPosInt(this.ttl)) {
-        throw new TypeError("ttl must be a positive integer if specified");
-      }
-      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
-    }
-    if (__privateGet(this, _max) === 0 && this.ttl === 0 && __privateGet(this, _maxSize) === 0) {
-      throw new TypeError("At least one of max, maxSize, or ttl is required");
-    }
-    if (!this.ttlAutopurge && !__privateGet(this, _max) && !__privateGet(this, _maxSize)) {
-      const code = "LRU_CACHE_UNBOUNDED";
-      if (shouldWarn(code)) {
-        warned.add(code);
-        const msg = "TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.";
-        emitWarning(msg, "UnboundedCacheWarning", code, _LRUCache);
-      }
-    }
-  }
-  /**
-   * Do not call this method unless you need to inspect the
-   * inner workings of the cache.  If anything returned by this
-   * object is modified in any way, strange breakage may occur.
-   *
-   * These fields are private for a reason!
-   *
-   * @internal
-   */
-  static unsafeExposeInternals(c) {
-    return {
-      // properties
-      starts: __privateGet(c, _starts),
-      ttls: __privateGet(c, _ttls),
-      sizes: __privateGet(c, _sizes),
-      keyMap: __privateGet(c, _keyMap),
-      keyList: __privateGet(c, _keyList),
-      valList: __privateGet(c, _valList),
-      next: __privateGet(c, _next),
-      prev: __privateGet(c, _prev),
-      get head() {
-        return __privateGet(c, _head);
-      },
-      get tail() {
-        return __privateGet(c, _tail);
-      },
-      free: __privateGet(c, _free),
-      // methods
-      isBackgroundFetch: (p) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, isBackgroundFetch_fn).call(_a3, p);
-      },
-      backgroundFetch: (k, index, options, context) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, backgroundFetch_fn).call(_a3, k, index, options, context);
-      },
-      moveToTail: (index) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, moveToTail_fn).call(_a3, index);
-      },
-      indexes: (options) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, indexes_fn).call(_a3, options);
-      },
-      rindexes: (options) => {
-        var _a3;
-        return __privateMethod(_a3 = c, _LRUCache_instances, rindexes_fn).call(_a3, options);
-      },
-      isStale: (index) => {
-        var _a3;
-        return __privateGet(_a3 = c, _isStale).call(_a3, index);
-      }
-    };
-  }
-  // Protected read-only members
-  /**
-   * {@link LRUCache.OptionsBase.max} (read-only)
-   */
-  get max() {
-    return __privateGet(this, _max);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.maxSize} (read-only)
-   */
-  get maxSize() {
-    return __privateGet(this, _maxSize);
-  }
-  /**
-   * The total computed size of items in the cache (read-only)
-   */
-  get calculatedSize() {
-    return __privateGet(this, _calculatedSize);
-  }
-  /**
-   * The number of items stored in the cache (read-only)
-   */
-  get size() {
-    return __privateGet(this, _size);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
-   */
-  get fetchMethod() {
-    return __privateGet(this, _fetchMethod);
-  }
-  get memoMethod() {
-    return __privateGet(this, _memoMethod);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.dispose} (read-only)
-   */
-  get dispose() {
-    return __privateGet(this, _dispose);
-  }
-  /**
-   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
-   */
-  get disposeAfter() {
-    return __privateGet(this, _disposeAfter);
-  }
-  /**
-   * Return the number of ms left in the item's TTL. If item is not in cache,
-   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.
-   */
-  getRemainingTTL(key) {
-    return __privateGet(this, _keyMap).has(key) ? Infinity : 0;
-  }
-  /**
-   * Return a generator yielding `[key, value]` pairs,
-   * in order from most recently used to least recently used.
-   */
-  *entries() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]];
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.entries}
-   *
-   * Return a generator yielding `[key, value]` pairs,
-   * in order from least recently used to most recently used.
-   */
-  *rentries() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      if (__privateGet(this, _valList)[i] !== void 0 && __privateGet(this, _keyList)[i] !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield [__privateGet(this, _keyList)[i], __privateGet(this, _valList)[i]];
-      }
-    }
-  }
-  /**
-   * Return a generator yielding the keys in the cache,
-   * in order from most recently used to least recently used.
-   */
-  *keys() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const k = __privateGet(this, _keyList)[i];
-      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield k;
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.keys}
-   *
-   * Return a generator yielding the keys in the cache,
-   * in order from least recently used to most recently used.
-   */
-  *rkeys() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const k = __privateGet(this, _keyList)[i];
-      if (k !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield k;
-      }
-    }
-  }
-  /**
-   * Return a generator yielding the values in the cache,
-   * in order from most recently used to least recently used.
-   */
-  *values() {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield __privateGet(this, _valList)[i];
-      }
-    }
-  }
-  /**
-   * Inverse order version of {@link LRUCache.values}
-   *
-   * Return a generator yielding the values in the cache,
-   * in order from least recently used to most recently used.
-   */
-  *rvalues() {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      if (v !== void 0 && !__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, __privateGet(this, _valList)[i])) {
-        yield __privateGet(this, _valList)[i];
-      }
-    }
-  }
-  /**
-   * Iterating over the cache itself yields the same results as
-   * {@link LRUCache.entries}
-   */
-  [(_b = Symbol.iterator, _a = Symbol.toStringTag, _b)]() {
-    return this.entries();
-  }
-  /**
-   * Find a value for which the supplied fn method returns a truthy value,
-   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.
-   */
-  find(fn, getOptions = {}) {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      if (fn(value, __privateGet(this, _keyList)[i], this)) {
-        return this.get(__privateGet(this, _keyList)[i], getOptions);
-      }
-    }
-  }
-  /**
-   * Call the supplied function on each item in the cache, in order from most
-   * recently used to least recently used.
-   *
-   * `fn` is called as `fn(value, key, cache)`.
-   *
-   * If `thisp` is provided, function will be called in the `this`-context of
-   * the provided object, or the cache if no `thisp` object is provided.
-   *
-   * Does not update age or recenty of use, or iterate over stale values.
-   */
-  forEach(fn, thisp = this) {
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      fn.call(thisp, value, __privateGet(this, _keyList)[i], this);
-    }
-  }
-  /**
-   * The same as {@link LRUCache.forEach} but items are iterated over in
-   * reverse order.  (ie, less recently used items are iterated over first.)
-   */
-  rforEach(fn, thisp = this) {
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this)) {
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0)
-        continue;
-      fn.call(thisp, value, __privateGet(this, _keyList)[i], this);
-    }
-  }
-  /**
-   * Delete any stale entries. Returns true if anything was removed,
-   * false otherwise.
-   */
-  purgeStale() {
-    let deleted = false;
-    for (const i of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
-      if (__privateGet(this, _isStale).call(this, i)) {
-        __privateMethod(this, _LRUCache_instances, delete_fn).call(this, __privateGet(this, _keyList)[i], "expire");
-        deleted = true;
-      }
-    }
-    return deleted;
-  }
-  /**
-   * Get the extended info about a given entry, to get its value, size, and
-   * TTL info simultaneously. Returns `undefined` if the key is not present.
-   *
-   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive
-   * serialization, the `start` value is always the current timestamp, and the
-   * `ttl` is a calculated remaining time to live (negative if expired).
-   *
-   * Always returns stale values, if their info is found in the cache, so be
-   * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})
-   * if relevant.
-   */
-  info(key) {
-    const i = __privateGet(this, _keyMap).get(key);
-    if (i === void 0)
-      return void 0;
-    const v = __privateGet(this, _valList)[i];
-    const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-    if (value === void 0)
-      return void 0;
-    const entry = { value };
-    if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-      const ttl = __privateGet(this, _ttls)[i];
-      const start = __privateGet(this, _starts)[i];
-      if (ttl && start) {
-        const remain = ttl - (perf.now() - start);
-        entry.ttl = remain;
-        entry.start = Date.now();
-      }
-    }
-    if (__privateGet(this, _sizes)) {
-      entry.size = __privateGet(this, _sizes)[i];
-    }
-    return entry;
-  }
-  /**
-   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
-   * passed to {@link LRLUCache#load}.
-   *
-   * The `start` fields are calculated relative to a portable `Date.now()`
-   * timestamp, even if `performance.now()` is available.
-   *
-   * Stale entries are always included in the `dump`, even if
-   * {@link LRUCache.OptionsBase.allowStale} is false.
-   *
-   * Note: this returns an actual array, not a generator, so it can be more
-   * easily passed around.
-   */
-  dump() {
-    const arr = [];
-    for (const i of __privateMethod(this, _LRUCache_instances, indexes_fn).call(this, { allowStale: true })) {
-      const key = __privateGet(this, _keyList)[i];
-      const v = __privateGet(this, _valList)[i];
-      const value = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-      if (value === void 0 || key === void 0)
-        continue;
-      const entry = { value };
-      if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-        entry.ttl = __privateGet(this, _ttls)[i];
-        const age = perf.now() - __privateGet(this, _starts)[i];
-        entry.start = Math.floor(Date.now() - age);
-      }
-      if (__privateGet(this, _sizes)) {
-        entry.size = __privateGet(this, _sizes)[i];
-      }
-      arr.unshift([key, entry]);
-    }
-    return arr;
-  }
-  /**
-   * Reset the cache and load in the items in entries in the order listed.
-   *
-   * The shape of the resulting cache may be different if the same options are
-   * not used in both caches.
-   *
-   * The `start` fields are assumed to be calculated relative to a portable
-   * `Date.now()` timestamp, even if `performance.now()` is available.
-   */
-  load(arr) {
-    this.clear();
-    for (const [key, entry] of arr) {
-      if (entry.start) {
-        const age = Date.now() - entry.start;
-        entry.start = perf.now() - age;
-      }
-      this.set(key, entry.value, entry);
-    }
-  }
-  /**
-   * Add a value to the cache.
-   *
-   * Note: if `undefined` is specified as a value, this is an alias for
-   * {@link LRUCache#delete}
-   *
-   * Fields on the {@link LRUCache.SetOptions} options param will override
-   * their corresponding values in the constructor options for the scope
-   * of this single `set()` operation.
-   *
-   * If `start` is provided, then that will set the effective start
-   * time for the TTL calculation. Note that this must be a previous
-   * value of `performance.now()` if supported, or a previous value of
-   * `Date.now()` if not.
-   *
-   * Options object may also include `size`, which will prevent
-   * calling the `sizeCalculation` function and just use the specified
-   * number if it is a positive integer, and `noDisposeOnSet` which
-   * will prevent calling a `dispose` function in the case of
-   * overwrites.
-   *
-   * If the `size` (or return value of `sizeCalculation`) for a given
-   * entry is greater than `maxEntrySize`, then the item will not be
-   * added to the cache.
-   *
-   * Will update the recency of the entry.
-   *
-   * If the value is `undefined`, then this is an alias for
-   * `cache.delete(key)`. `undefined` is never stored in the cache.
-   */
-  set(k, v, setOptions = {}) {
-    var _a3, _b3, _c2;
-    if (v === void 0) {
-      this.delete(k);
-      return this;
-    }
-    const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status } = setOptions;
-    let { noUpdateTTL = this.noUpdateTTL } = setOptions;
-    const size = __privateGet(this, _requireSize).call(this, k, v, setOptions.size || 0, sizeCalculation);
-    if (this.maxEntrySize && size > this.maxEntrySize) {
-      if (status) {
-        status.set = "miss";
-        status.maxEntrySizeExceeded = true;
-      }
-      __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "set");
-      return this;
-    }
-    let index = __privateGet(this, _size) === 0 ? void 0 : __privateGet(this, _keyMap).get(k);
-    if (index === void 0) {
-      index = __privateGet(this, _size) === 0 ? __privateGet(this, _tail) : __privateGet(this, _free).length !== 0 ? __privateGet(this, _free).pop() : __privateGet(this, _size) === __privateGet(this, _max) ? __privateMethod(this, _LRUCache_instances, evict_fn).call(this, false) : __privateGet(this, _size);
-      __privateGet(this, _keyList)[index] = k;
-      __privateGet(this, _valList)[index] = v;
-      __privateGet(this, _keyMap).set(k, index);
-      __privateGet(this, _next)[__privateGet(this, _tail)] = index;
-      __privateGet(this, _prev)[index] = __privateGet(this, _tail);
-      __privateSet(this, _tail, index);
-      __privateWrapper(this, _size)._++;
-      __privateGet(this, _addItemSize).call(this, index, size, status);
-      if (status)
-        status.set = "add";
-      noUpdateTTL = false;
-    } else {
-      __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-      const oldVal = __privateGet(this, _valList)[index];
-      if (v !== oldVal) {
-        if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal)) {
-          oldVal.__abortController.abort(new Error("replaced"));
-          const { __staleWhileFetching: s } = oldVal;
-          if (s !== void 0 && !noDisposeOnSet) {
-            if (__privateGet(this, _hasDispose)) {
-              (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, s, k, "set");
-            }
-            if (__privateGet(this, _hasDisposeAfter)) {
-              __privateGet(this, _disposed)?.push([s, k, "set"]);
-            }
-          }
-        } else if (!noDisposeOnSet) {
-          if (__privateGet(this, _hasDispose)) {
-            (_b3 = __privateGet(this, _dispose)) == null ? void 0 : _b3.call(this, oldVal, k, "set");
-          }
-          if (__privateGet(this, _hasDisposeAfter)) {
-            __privateGet(this, _disposed)?.push([oldVal, k, "set"]);
-          }
-        }
-        __privateGet(this, _removeItemSize).call(this, index);
-        __privateGet(this, _addItemSize).call(this, index, size, status);
-        __privateGet(this, _valList)[index] = v;
-        if (status) {
-          status.set = "replace";
-          const oldValue = oldVal && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, oldVal) ? oldVal.__staleWhileFetching : oldVal;
-          if (oldValue !== void 0)
-            status.oldValue = oldValue;
-        }
-      } else if (status) {
-        status.set = "update";
-      }
-    }
-    if (ttl !== 0 && !__privateGet(this, _ttls)) {
-      __privateMethod(this, _LRUCache_instances, initializeTTLTracking_fn).call(this);
-    }
-    if (__privateGet(this, _ttls)) {
-      if (!noUpdateTTL) {
-        __privateGet(this, _setItemTTL).call(this, index, ttl, start);
-      }
-      if (status)
-        __privateGet(this, _statusTTL).call(this, status, index);
-    }
-    if (!noDisposeOnSet && __privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-      const dt = __privateGet(this, _disposed);
-      let task;
-      while (task = dt?.shift()) {
-        (_c2 = __privateGet(this, _disposeAfter)) == null ? void 0 : _c2.call(this, ...task);
-      }
-    }
-    return this;
-  }
-  /**
-   * Evict the least recently used item, returning its value or
-   * `undefined` if cache is empty.
-   */
-  pop() {
-    var _a3;
-    try {
-      while (__privateGet(this, _size)) {
-        const val = __privateGet(this, _valList)[__privateGet(this, _head)];
-        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
-        if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, val)) {
-          if (val.__staleWhileFetching) {
-            return val.__staleWhileFetching;
-          }
-        } else if (val !== void 0) {
-          return val;
-        }
-      }
-    } finally {
-      if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-        const dt = __privateGet(this, _disposed);
-        let task;
-        while (task = dt?.shift()) {
-          (_a3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _a3.call(this, ...task);
-        }
-      }
-    }
-  }
-  /**
-   * Check if a key is in the cache, without updating the recency of use.
-   * Will return false if the item is stale, even though it is technically
-   * in the cache.
-   *
-   * Check if a key is in the cache, without updating the recency of
-   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set
-   * to `true` in either the options or the constructor.
-   *
-   * Will return `false` if the item is stale, even though it is technically in
-   * the cache. The difference can be determined (if it matters) by using a
-   * `status` argument, and inspecting the `has` field.
-   *
-   * Will not update item age unless
-   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
-   */
-  has(k, hasOptions = {}) {
-    const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      const v = __privateGet(this, _valList)[index];
-      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) && v.__staleWhileFetching === void 0) {
-        return false;
-      }
-      if (!__privateGet(this, _isStale).call(this, index)) {
-        if (updateAgeOnHas) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        if (status) {
-          status.has = "hit";
-          __privateGet(this, _statusTTL).call(this, status, index);
-        }
-        return true;
-      } else if (status) {
-        status.has = "stale";
-        __privateGet(this, _statusTTL).call(this, status, index);
-      }
-    } else if (status) {
-      status.has = "miss";
-    }
-    return false;
-  }
-  /**
-   * Like {@link LRUCache#get} but doesn't update recency or delete stale
-   * items.
-   *
-   * Returns `undefined` if the item is stale, unless
-   * {@link LRUCache.OptionsBase.allowStale} is set.
-   */
-  peek(k, peekOptions = {}) {
-    const { allowStale = this.allowStale } = peekOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index === void 0 || !allowStale && __privateGet(this, _isStale).call(this, index)) {
-      return;
-    }
-    const v = __privateGet(this, _valList)[index];
-    return __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v) ? v.__staleWhileFetching : v;
-  }
-  async fetch(k, fetchOptions = {}) {
-    const {
-      // get options
-      allowStale = this.allowStale,
-      updateAgeOnGet = this.updateAgeOnGet,
-      noDeleteOnStaleGet = this.noDeleteOnStaleGet,
-      // set options
-      ttl = this.ttl,
-      noDisposeOnSet = this.noDisposeOnSet,
-      size = 0,
-      sizeCalculation = this.sizeCalculation,
-      noUpdateTTL = this.noUpdateTTL,
-      // fetch exclusive options
-      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,
-      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,
-      ignoreFetchAbort = this.ignoreFetchAbort,
-      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,
-      context,
-      forceRefresh = false,
-      status,
-      signal
-    } = fetchOptions;
-    if (!__privateGet(this, _hasFetchMethod)) {
-      if (status)
-        status.fetch = "get";
-      return this.get(k, {
-        allowStale,
-        updateAgeOnGet,
-        noDeleteOnStaleGet,
-        status
-      });
-    }
-    const options = {
-      allowStale,
-      updateAgeOnGet,
-      noDeleteOnStaleGet,
-      ttl,
-      noDisposeOnSet,
-      size,
-      sizeCalculation,
-      noUpdateTTL,
-      noDeleteOnFetchRejection,
-      allowStaleOnFetchRejection,
-      allowStaleOnFetchAbort,
-      ignoreFetchAbort,
-      status,
-      signal
-    };
-    let index = __privateGet(this, _keyMap).get(k);
-    if (index === void 0) {
-      if (status)
-        status.fetch = "miss";
-      const p = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index, options, context);
-      return p.__returned = p;
-    } else {
-      const v = __privateGet(this, _valList)[index];
-      if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-        const stale = allowStale && v.__staleWhileFetching !== void 0;
-        if (status) {
-          status.fetch = "inflight";
-          if (stale)
-            status.returnedStale = true;
-        }
-        return stale ? v.__staleWhileFetching : v.__returned = v;
-      }
-      const isStale = __privateGet(this, _isStale).call(this, index);
-      if (!forceRefresh && !isStale) {
-        if (status)
-          status.fetch = "hit";
-        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-        if (updateAgeOnGet) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        if (status)
-          __privateGet(this, _statusTTL).call(this, status, index);
-        return v;
-      }
-      const p = __privateMethod(this, _LRUCache_instances, backgroundFetch_fn).call(this, k, index, options, context);
-      const hasStale = p.__staleWhileFetching !== void 0;
-      const staleVal = hasStale && allowStale;
-      if (status) {
-        status.fetch = isStale ? "stale" : "refresh";
-        if (staleVal && isStale)
-          status.returnedStale = true;
-      }
-      return staleVal ? p.__staleWhileFetching : p.__returned = p;
-    }
-  }
-  async forceFetch(k, fetchOptions = {}) {
-    const v = await this.fetch(k, fetchOptions);
-    if (v === void 0)
-      throw new Error("fetch() returned undefined");
-    return v;
-  }
-  memo(k, memoOptions = {}) {
-    const memoMethod = __privateGet(this, _memoMethod);
-    if (!memoMethod) {
-      throw new Error("no memoMethod provided to constructor");
-    }
-    const { context, forceRefresh, ...options } = memoOptions;
-    const v = this.get(k, options);
-    if (!forceRefresh && v !== void 0)
-      return v;
-    const vv = memoMethod(k, v, {
-      options,
-      context
-    });
-    this.set(k, vv, options);
-    return vv;
-  }
-  /**
-   * Return a value from the cache. Will update the recency of the cache
-   * entry found.
-   *
-   * If the key is not found, get() will return `undefined`.
-   */
-  get(k, getOptions = {}) {
-    const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status } = getOptions;
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      const value = __privateGet(this, _valList)[index];
-      const fetching = __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, value);
-      if (status)
-        __privateGet(this, _statusTTL).call(this, status, index);
-      if (__privateGet(this, _isStale).call(this, index)) {
-        if (status)
-          status.get = "stale";
-        if (!fetching) {
-          if (!noDeleteOnStaleGet) {
-            __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "expire");
-          }
-          if (status && allowStale)
-            status.returnedStale = true;
-          return allowStale ? value : void 0;
-        } else {
-          if (status && allowStale && value.__staleWhileFetching !== void 0) {
-            status.returnedStale = true;
-          }
-          return allowStale ? value.__staleWhileFetching : void 0;
-        }
-      } else {
-        if (status)
-          status.get = "hit";
-        if (fetching) {
-          return value.__staleWhileFetching;
-        }
-        __privateMethod(this, _LRUCache_instances, moveToTail_fn).call(this, index);
-        if (updateAgeOnGet) {
-          __privateGet(this, _updateItemAge).call(this, index);
-        }
-        return value;
-      }
-    } else if (status) {
-      status.get = "miss";
-    }
-  }
-  /**
-   * Deletes a key out of the cache.
-   *
-   * Returns true if the key was deleted, false otherwise.
-   */
-  delete(k) {
-    return __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "delete");
-  }
-  /**
-   * Clear the cache entirely, throwing away all values.
-   */
-  clear() {
-    return __privateMethod(this, _LRUCache_instances, clear_fn).call(this, "delete");
-  }
-};
-_max = new WeakMap();
-_maxSize = new WeakMap();
-_dispose = new WeakMap();
-_disposeAfter = new WeakMap();
-_fetchMethod = new WeakMap();
-_memoMethod = new WeakMap();
-_size = new WeakMap();
-_calculatedSize = new WeakMap();
-_keyMap = new WeakMap();
-_keyList = new WeakMap();
-_valList = new WeakMap();
-_next = new WeakMap();
-_prev = new WeakMap();
-_head = new WeakMap();
-_tail = new WeakMap();
-_free = new WeakMap();
-_disposed = new WeakMap();
-_sizes = new WeakMap();
-_starts = new WeakMap();
-_ttls = new WeakMap();
-_hasDispose = new WeakMap();
-_hasFetchMethod = new WeakMap();
-_hasDisposeAfter = new WeakMap();
-_LRUCache_instances = new WeakSet();
-initializeTTLTracking_fn = function() {
-  const ttls = new ZeroArray(__privateGet(this, _max));
-  const starts = new ZeroArray(__privateGet(this, _max));
-  __privateSet(this, _ttls, ttls);
-  __privateSet(this, _starts, starts);
-  __privateSet(this, _setItemTTL, (index, ttl, start = perf.now()) => {
-    starts[index] = ttl !== 0 ? start : 0;
-    ttls[index] = ttl;
-    if (ttl !== 0 && this.ttlAutopurge) {
-      const t = setTimeout(() => {
-        if (__privateGet(this, _isStale).call(this, index)) {
-          __privateMethod(this, _LRUCache_instances, delete_fn).call(this, __privateGet(this, _keyList)[index], "expire");
-        }
-      }, ttl + 1);
-      if (t.unref) {
-        t.unref();
-      }
-    }
-  });
-  __privateSet(this, _updateItemAge, (index) => {
-    starts[index] = ttls[index] !== 0 ? perf.now() : 0;
-  });
-  __privateSet(this, _statusTTL, (status, index) => {
-    if (ttls[index]) {
-      const ttl = ttls[index];
-      const start = starts[index];
-      if (!ttl || !start)
-        return;
-      status.ttl = ttl;
-      status.start = start;
-      status.now = cachedNow || getNow();
-      const age = status.now - start;
-      status.remainingTTL = ttl - age;
-    }
-  });
-  let cachedNow = 0;
-  const getNow = () => {
-    const n = perf.now();
-    if (this.ttlResolution > 0) {
-      cachedNow = n;
-      const t = setTimeout(() => cachedNow = 0, this.ttlResolution);
-      if (t.unref) {
-        t.unref();
-      }
-    }
-    return n;
-  };
-  this.getRemainingTTL = (key) => {
-    const index = __privateGet(this, _keyMap).get(key);
-    if (index === void 0) {
-      return 0;
-    }
-    const ttl = ttls[index];
-    const start = starts[index];
-    if (!ttl || !start) {
-      return Infinity;
-    }
-    const age = (cachedNow || getNow()) - start;
-    return ttl - age;
-  };
-  __privateSet(this, _isStale, (index) => {
-    const s = starts[index];
-    const t = ttls[index];
-    return !!t && !!s && (cachedNow || getNow()) - s > t;
-  });
-};
-_updateItemAge = new WeakMap();
-_statusTTL = new WeakMap();
-_setItemTTL = new WeakMap();
-_isStale = new WeakMap();
-initializeSizeTracking_fn = function() {
-  const sizes = new ZeroArray(__privateGet(this, _max));
-  __privateSet(this, _calculatedSize, 0);
-  __privateSet(this, _sizes, sizes);
-  __privateSet(this, _removeItemSize, (index) => {
-    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) - sizes[index]);
-    sizes[index] = 0;
-  });
-  __privateSet(this, _requireSize, (k, v, size, sizeCalculation) => {
-    if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-      return 0;
-    }
-    if (!isPosInt(size)) {
-      if (sizeCalculation) {
-        if (typeof sizeCalculation !== "function") {
-          throw new TypeError("sizeCalculation must be a function");
-        }
-        size = sizeCalculation(v, k);
-        if (!isPosInt(size)) {
-          throw new TypeError("sizeCalculation return invalid (expect positive integer)");
-        }
-      } else {
-        throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");
-      }
-    }
-    return size;
-  });
-  __privateSet(this, _addItemSize, (index, size, status) => {
-    sizes[index] = size;
-    if (__privateGet(this, _maxSize)) {
-      const maxSize = __privateGet(this, _maxSize) - sizes[index];
-      while (__privateGet(this, _calculatedSize) > maxSize) {
-        __privateMethod(this, _LRUCache_instances, evict_fn).call(this, true);
-      }
-    }
-    __privateSet(this, _calculatedSize, __privateGet(this, _calculatedSize) + sizes[index]);
-    if (status) {
-      status.entrySize = size;
-      status.totalCalculatedSize = __privateGet(this, _calculatedSize);
-    }
-  });
-};
-_removeItemSize = new WeakMap();
-_addItemSize = new WeakMap();
-_requireSize = new WeakMap();
-indexes_fn = function* ({ allowStale = this.allowStale } = {}) {
-  if (__privateGet(this, _size)) {
-    for (let i = __privateGet(this, _tail); true; ) {
-      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i)) {
-        break;
-      }
-      if (allowStale || !__privateGet(this, _isStale).call(this, i)) {
-        yield i;
-      }
-      if (i === __privateGet(this, _head)) {
-        break;
-      } else {
-        i = __privateGet(this, _prev)[i];
-      }
-    }
-  }
-};
-rindexes_fn = function* ({ allowStale = this.allowStale } = {}) {
-  if (__privateGet(this, _size)) {
-    for (let i = __privateGet(this, _head); true; ) {
-      if (!__privateMethod(this, _LRUCache_instances, isValidIndex_fn).call(this, i)) {
-        break;
-      }
-      if (allowStale || !__privateGet(this, _isStale).call(this, i)) {
-        yield i;
-      }
-      if (i === __privateGet(this, _tail)) {
-        break;
-      } else {
-        i = __privateGet(this, _next)[i];
-      }
-    }
-  }
-};
-isValidIndex_fn = function(index) {
-  return index !== void 0 && __privateGet(this, _keyMap).get(__privateGet(this, _keyList)[index]) === index;
-};
-evict_fn = function(free) {
-  var _a3;
-  const head = __privateGet(this, _head);
-  const k = __privateGet(this, _keyList)[head];
-  const v = __privateGet(this, _valList)[head];
-  if (__privateGet(this, _hasFetchMethod) && __privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-    v.__abortController.abort(new Error("evicted"));
-  } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
-    if (__privateGet(this, _hasDispose)) {
-      (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, "evict");
-    }
-    if (__privateGet(this, _hasDisposeAfter)) {
-      __privateGet(this, _disposed)?.push([v, k, "evict"]);
-    }
-  }
-  __privateGet(this, _removeItemSize).call(this, head);
-  if (free) {
-    __privateGet(this, _keyList)[head] = void 0;
-    __privateGet(this, _valList)[head] = void 0;
-    __privateGet(this, _free).push(head);
-  }
-  if (__privateGet(this, _size) === 1) {
-    __privateSet(this, _head, __privateSet(this, _tail, 0));
-    __privateGet(this, _free).length = 0;
-  } else {
-    __privateSet(this, _head, __privateGet(this, _next)[head]);
-  }
-  __privateGet(this, _keyMap).delete(k);
-  __privateWrapper(this, _size)._--;
-  return head;
-};
-backgroundFetch_fn = function(k, index, options, context) {
-  const v = index === void 0 ? void 0 : __privateGet(this, _valList)[index];
-  if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-    return v;
-  }
-  const ac = new AC();
-  const { signal } = options;
-  signal?.addEventListener("abort", () => ac.abort(signal.reason), {
-    signal: ac.signal
-  });
-  const fetchOpts = {
-    signal: ac.signal,
-    options,
-    context
-  };
-  const cb = (v2, updateCache = false) => {
-    const { aborted } = ac.signal;
-    const ignoreAbort = options.ignoreFetchAbort && v2 !== void 0;
-    if (options.status) {
-      if (aborted && !updateCache) {
-        options.status.fetchAborted = true;
-        options.status.fetchError = ac.signal.reason;
-        if (ignoreAbort)
-          options.status.fetchAbortIgnored = true;
-      } else {
-        options.status.fetchResolved = true;
-      }
-    }
-    if (aborted && !ignoreAbort && !updateCache) {
-      return fetchFail(ac.signal.reason);
-    }
-    const bf2 = p;
-    if (__privateGet(this, _valList)[index] === p) {
-      if (v2 === void 0) {
-        if (bf2.__staleWhileFetching) {
-          __privateGet(this, _valList)[index] = bf2.__staleWhileFetching;
-        } else {
-          __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "fetch");
-        }
-      } else {
-        if (options.status)
-          options.status.fetchUpdated = true;
-        this.set(k, v2, fetchOpts.options);
-      }
-    }
-    return v2;
-  };
-  const eb = (er) => {
-    if (options.status) {
-      options.status.fetchRejected = true;
-      options.status.fetchError = er;
-    }
-    return fetchFail(er);
-  };
-  const fetchFail = (er) => {
-    const { aborted } = ac.signal;
-    const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
-    const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
-    const noDelete = allowStale || options.noDeleteOnFetchRejection;
-    const bf2 = p;
-    if (__privateGet(this, _valList)[index] === p) {
-      const del = !noDelete || bf2.__staleWhileFetching === void 0;
-      if (del) {
-        __privateMethod(this, _LRUCache_instances, delete_fn).call(this, k, "fetch");
-      } else if (!allowStaleAborted) {
-        __privateGet(this, _valList)[index] = bf2.__staleWhileFetching;
-      }
-    }
-    if (allowStale) {
-      if (options.status && bf2.__staleWhileFetching !== void 0) {
-        options.status.returnedStale = true;
-      }
-      return bf2.__staleWhileFetching;
-    } else if (bf2.__returned === bf2) {
-      throw er;
-    }
-  };
-  const pcall = (res, rej) => {
-    var _a3;
-    const fmp = (_a3 = __privateGet(this, _fetchMethod)) == null ? void 0 : _a3.call(this, k, v, fetchOpts);
-    if (fmp && fmp instanceof Promise) {
-      fmp.then((v2) => res(v2 === void 0 ? void 0 : v2), rej);
-    }
-    ac.signal.addEventListener("abort", () => {
-      if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {
-        res(void 0);
-        if (options.allowStaleOnFetchAbort) {
-          res = (v2) => cb(v2, true);
-        }
-      }
-    });
-  };
-  if (options.status)
-    options.status.fetchDispatched = true;
-  const p = new Promise(pcall).then(cb, eb);
-  const bf = Object.assign(p, {
-    __abortController: ac,
-    __staleWhileFetching: v,
-    __returned: void 0
-  });
-  if (index === void 0) {
-    this.set(k, bf, { ...fetchOpts.options, status: void 0 });
-    index = __privateGet(this, _keyMap).get(k);
-  } else {
-    __privateGet(this, _valList)[index] = bf;
-  }
-  return bf;
-};
-isBackgroundFetch_fn = function(p) {
-  if (!__privateGet(this, _hasFetchMethod))
-    return false;
-  const b = p;
-  return !!b && b instanceof Promise && b.hasOwnProperty("__staleWhileFetching") && b.__abortController instanceof AC;
-};
-connect_fn = function(p, n) {
-  __privateGet(this, _prev)[n] = p;
-  __privateGet(this, _next)[p] = n;
-};
-moveToTail_fn = function(index) {
-  if (index !== __privateGet(this, _tail)) {
-    if (index === __privateGet(this, _head)) {
-      __privateSet(this, _head, __privateGet(this, _next)[index]);
-    } else {
-      __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _prev)[index], __privateGet(this, _next)[index]);
-    }
-    __privateMethod(this, _LRUCache_instances, connect_fn).call(this, __privateGet(this, _tail), index);
-    __privateSet(this, _tail, index);
-  }
-};
-delete_fn = function(k, reason) {
-  var _a3, _b3;
-  let deleted = false;
-  if (__privateGet(this, _size) !== 0) {
-    const index = __privateGet(this, _keyMap).get(k);
-    if (index !== void 0) {
-      deleted = true;
-      if (__privateGet(this, _size) === 1) {
-        __privateMethod(this, _LRUCache_instances, clear_fn).call(this, reason);
-      } else {
-        __privateGet(this, _removeItemSize).call(this, index);
-        const v = __privateGet(this, _valList)[index];
-        if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-          v.__abortController.abort(new Error("deleted"));
-        } else if (__privateGet(this, _hasDispose) || __privateGet(this, _hasDisposeAfter)) {
-          if (__privateGet(this, _hasDispose)) {
-            (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, reason);
-          }
-          if (__privateGet(this, _hasDisposeAfter)) {
-            __privateGet(this, _disposed)?.push([v, k, reason]);
-          }
-        }
-        __privateGet(this, _keyMap).delete(k);
-        __privateGet(this, _keyList)[index] = void 0;
-        __privateGet(this, _valList)[index] = void 0;
-        if (index === __privateGet(this, _tail)) {
-          __privateSet(this, _tail, __privateGet(this, _prev)[index]);
-        } else if (index === __privateGet(this, _head)) {
-          __privateSet(this, _head, __privateGet(this, _next)[index]);
-        } else {
-          const pi = __privateGet(this, _prev)[index];
-          __privateGet(this, _next)[pi] = __privateGet(this, _next)[index];
-          const ni = __privateGet(this, _next)[index];
-          __privateGet(this, _prev)[ni] = __privateGet(this, _prev)[index];
-        }
-        __privateWrapper(this, _size)._--;
-        __privateGet(this, _free).push(index);
-      }
-    }
-  }
-  if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)?.length) {
-    const dt = __privateGet(this, _disposed);
-    let task;
-    while (task = dt?.shift()) {
-      (_b3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _b3.call(this, ...task);
-    }
-  }
-  return deleted;
-};
-clear_fn = function(reason) {
-  var _a3, _b3;
-  for (const index of __privateMethod(this, _LRUCache_instances, rindexes_fn).call(this, { allowStale: true })) {
-    const v = __privateGet(this, _valList)[index];
-    if (__privateMethod(this, _LRUCache_instances, isBackgroundFetch_fn).call(this, v)) {
-      v.__abortController.abort(new Error("deleted"));
-    } else {
-      const k = __privateGet(this, _keyList)[index];
-      if (__privateGet(this, _hasDispose)) {
-        (_a3 = __privateGet(this, _dispose)) == null ? void 0 : _a3.call(this, v, k, reason);
-      }
-      if (__privateGet(this, _hasDisposeAfter)) {
-        __privateGet(this, _disposed)?.push([v, k, reason]);
-      }
-    }
-  }
-  __privateGet(this, _keyMap).clear();
-  __privateGet(this, _valList).fill(void 0);
-  __privateGet(this, _keyList).fill(void 0);
-  if (__privateGet(this, _ttls) && __privateGet(this, _starts)) {
-    __privateGet(this, _ttls).fill(0);
-    __privateGet(this, _starts).fill(0);
-  }
-  if (__privateGet(this, _sizes)) {
-    __privateGet(this, _sizes).fill(0);
-  }
-  __privateSet(this, _head, 0);
-  __privateSet(this, _tail, 0);
-  __privateGet(this, _free).length = 0;
-  __privateSet(this, _calculatedSize, 0);
-  __privateSet(this, _size, 0);
-  if (__privateGet(this, _hasDisposeAfter) && __privateGet(this, _disposed)) {
-    const dt = __privateGet(this, _disposed);
-    let task;
-    while (task = dt?.shift()) {
-      (_b3 = __privateGet(this, _disposeAfter)) == null ? void 0 : _b3.call(this, ...task);
-    }
-  }
-};
-var LRUCache = _LRUCache;
-
-// node_modules/path-scurry/dist/esm/index.js
-import { posix, win32 } from "node:path";
-import { fileURLToPath } from "node:url";
-import { lstatSync, readdir as readdirCB, readdirSync, readlinkSync, realpathSync as rps } from "fs";
-import * as actualFS from "node:fs";
-import { lstat, readdir, readlink, realpath } from "node:fs/promises";
-
-// node_modules/minipass/dist/esm/index.js
-import { EventEmitter } from "node:events";
-import Stream from "node:stream";
-import { StringDecoder } from "node:string_decoder";
-var proc = typeof process === "object" && process ? process : {
-  stdout: null,
-  stderr: null
-};
-var isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof Stream || isReadable(s) || isWritable(s));
-var isReadable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
-s.pipe !== Stream.Writable.prototype.pipe;
-var isWritable = (s) => !!s && typeof s === "object" && s instanceof EventEmitter && typeof s.write === "function" && typeof s.end === "function";
-var EOF = Symbol("EOF");
-var MAYBE_EMIT_END = Symbol("maybeEmitEnd");
-var EMITTED_END = Symbol("emittedEnd");
-var EMITTING_END = Symbol("emittingEnd");
-var EMITTED_ERROR = Symbol("emittedError");
-var CLOSED = Symbol("closed");
-var READ = Symbol("read");
-var FLUSH = Symbol("flush");
-var FLUSHCHUNK = Symbol("flushChunk");
-var ENCODING = Symbol("encoding");
-var DECODER = Symbol("decoder");
-var FLOWING = Symbol("flowing");
-var PAUSED = Symbol("paused");
-var RESUME = Symbol("resume");
-var BUFFER = Symbol("buffer");
-var PIPES = Symbol("pipes");
-var BUFFERLENGTH = Symbol("bufferLength");
-var BUFFERPUSH = Symbol("bufferPush");
-var BUFFERSHIFT = Symbol("bufferShift");
-var OBJECTMODE = Symbol("objectMode");
-var DESTROYED = Symbol("destroyed");
-var ERROR = Symbol("error");
-var EMITDATA = Symbol("emitData");
-var EMITEND = Symbol("emitEnd");
-var EMITEND2 = Symbol("emitEnd2");
-var ASYNC = Symbol("async");
-var ABORT = Symbol("abort");
-var ABORTED = Symbol("aborted");
-var SIGNAL = Symbol("signal");
-var DATALISTENERS = Symbol("dataListeners");
-var DISCARDED = Symbol("discarded");
-var defer = (fn) => Promise.resolve().then(fn);
-var nodefer = (fn) => fn();
-var isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
-var isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
-var isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
-var Pipe = class {
-  constructor(src, dest, opts) {
-    __publicField(this, "src");
-    __publicField(this, "dest");
-    __publicField(this, "opts");
-    __publicField(this, "ondrain");
-    this.src = src;
-    this.dest = dest;
-    this.opts = opts;
-    this.ondrain = () => src[RESUME]();
-    this.dest.on("drain", this.ondrain);
-  }
-  unpipe() {
-    this.dest.removeListener("drain", this.ondrain);
-  }
-  // only here for the prototype
-  /* c8 ignore start */
-  proxyErrors(_er) {
-  }
-  /* c8 ignore stop */
-  end() {
-    this.unpipe();
-    if (this.opts.end)
-      this.dest.end();
-  }
-};
-var PipeProxyErrors = class extends Pipe {
-  unpipe() {
-    this.src.removeListener("error", this.proxyErrors);
-    super.unpipe();
-  }
-  constructor(src, dest, opts) {
-    super(src, dest, opts);
-    this.proxyErrors = (er) => dest.emit("error", er);
-    src.on("error", this.proxyErrors);
-  }
-};
-var isObjectModeOptions = (o) => !!o.objectMode;
-var isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
-var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
-var Minipass = class extends EventEmitter {
-  /**
-   * If `RType` is Buffer, then options do not need to be provided.
-   * Otherwise, an options object must be provided to specify either
-   * {@link Minipass.SharedOptions.objectMode} or
-   * {@link Minipass.SharedOptions.encoding}, as appropriate.
-   */
-  constructor(...args) {
-    const options = args[0] || {};
-    super();
-    __publicField(this, _s, false);
-    __publicField(this, _r, false);
-    __publicField(this, _q, []);
-    __publicField(this, _p, []);
-    __publicField(this, _o);
-    __publicField(this, _n);
-    __publicField(this, _m);
-    __publicField(this, _l);
-    __publicField(this, _k, false);
-    __publicField(this, _j, false);
-    __publicField(this, _i, false);
-    __publicField(this, _h, false);
-    __publicField(this, _g, null);
-    __publicField(this, _f, 0);
-    __publicField(this, _e, false);
-    __publicField(this, _d);
-    __publicField(this, _c, false);
-    __publicField(this, _b2, 0);
-    __publicField(this, _a2, false);
-    /**
-     * true if the stream can be written
-     */
-    __publicField(this, "writable", true);
-    /**
-     * true if the stream can be read
-     */
-    __publicField(this, "readable", true);
-    if (options.objectMode && typeof options.encoding === "string") {
-      throw new TypeError("Encoding and objectMode may not be used together");
-    }
-    if (isObjectModeOptions(options)) {
-      this[OBJECTMODE] = true;
-      this[ENCODING] = null;
-    } else if (isEncodingOptions(options)) {
-      this[ENCODING] = options.encoding;
-      this[OBJECTMODE] = false;
-    } else {
-      this[OBJECTMODE] = false;
-      this[ENCODING] = null;
-    }
-    this[ASYNC] = !!options.async;
-    this[DECODER] = this[ENCODING] ? new StringDecoder(this[ENCODING]) : null;
-    if (options && options.debugExposeBuffer === true) {
-      Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
-    }
-    if (options && options.debugExposePipes === true) {
-      Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
-    }
-    const { signal } = options;
-    if (signal) {
-      this[SIGNAL] = signal;
-      if (signal.aborted) {
-        this[ABORT]();
-      } else {
-        signal.addEventListener("abort", () => this[ABORT]());
-      }
-    }
-  }
-  /**
-   * The amount of data stored in the buffer waiting to be read.
-   *
-   * For Buffer strings, this will be the total byte length.
-   * For string encoding streams, this will be the string character length,
-   * according to JavaScript's `string.length` logic.
-   * For objectMode streams, this is a count of the items waiting to be
-   * emitted.
-   */
-  get bufferLength() {
-    return this[BUFFERLENGTH];
-  }
-  /**
-   * The `BufferEncoding` currently in use, or `null`
-   */
-  get encoding() {
-    return this[ENCODING];
-  }
-  /**
-   * @deprecated - This is a read only property
-   */
-  set encoding(_enc) {
-    throw new Error("Encoding must be set at instantiation time");
-  }
-  /**
-   * @deprecated - Encoding may only be set at instantiation time
-   */
-  setEncoding(_enc) {
-    throw new Error("Encoding must be set at instantiation time");
-  }
-  /**
-   * True if this is an objectMode stream
-   */
-  get objectMode() {
-    return this[OBJECTMODE];
-  }
-  /**
-   * @deprecated - This is a read-only property
-   */
-  set objectMode(_om) {
-    throw new Error("objectMode must be set at instantiation time");
-  }
-  /**
-   * true if this is an async stream
-   */
-  get ["async"]() {
-    return this[ASYNC];
-  }
-  /**
-   * Set to true to make this stream async.
-   *
-   * Once set, it cannot be unset, as this would potentially cause incorrect
-   * behavior.  Ie, a sync stream can be made async, but an async stream
-   * cannot be safely made sync.
-   */
-  set ["async"](a) {
-    this[ASYNC] = this[ASYNC] || !!a;
-  }
-  // drop everything and get out of the flow completely
-  [(_s = FLOWING, _r = PAUSED, _q = PIPES, _p = BUFFER, _o = OBJECTMODE, _n = ENCODING, _m = ASYNC, _l = DECODER, _k = EOF, _j = EMITTED_END, _i = EMITTING_END, _h = CLOSED, _g = EMITTED_ERROR, _f = BUFFERLENGTH, _e = DESTROYED, _d = SIGNAL, _c = ABORTED, _b2 = DATALISTENERS, _a2 = DISCARDED, ABORT)]() {
-    this[ABORTED] = true;
-    this.emit("abort", this[SIGNAL]?.reason);
-    this.destroy(this[SIGNAL]?.reason);
-  }
-  /**
-   * True if the stream has been aborted.
-   */
-  get aborted() {
-    return this[ABORTED];
-  }
-  /**
-   * No-op setter. Stream aborted status is set via the AbortSignal provided
-   * in the constructor options.
-   */
-  set aborted(_) {
-  }
-  write(chunk, encoding, cb) {
-    if (this[ABORTED])
-      return false;
-    if (this[EOF])
-      throw new Error("write after end");
-    if (this[DESTROYED]) {
-      this.emit("error", Object.assign(new Error("Cannot call write after a stream was destroyed"), { code: "ERR_STREAM_DESTROYED" }));
-      return true;
-    }
-    if (typeof encoding === "function") {
-      cb = encoding;
-      encoding = "utf8";
-    }
-    if (!encoding)
-      encoding = "utf8";
-    const fn = this[ASYNC] ? defer : nodefer;
-    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
-      if (isArrayBufferView(chunk)) {
-        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
-      } else if (isArrayBufferLike(chunk)) {
-        chunk = Buffer.from(chunk);
-      } else if (typeof chunk !== "string") {
-        throw new Error("Non-contiguous data written to non-objectMode stream");
-      }
-    }
-    if (this[OBJECTMODE]) {
-      if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
-        this[FLUSH](true);
-      if (this[FLOWING])
-        this.emit("data", chunk);
-      else
-        this[BUFFERPUSH](chunk);
-      if (this[BUFFERLENGTH] !== 0)
-        this.emit("readable");
-      if (cb)
-        fn(cb);
-      return this[FLOWING];
-    }
-    if (!chunk.length) {
-      if (this[BUFFERLENGTH] !== 0)
-        this.emit("readable");
-      if (cb)
-        fn(cb);
-      return this[FLOWING];
-    }
-    if (typeof chunk === "string" && // unless it is a string already ready for us to use
-    !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)) {
-      chunk = Buffer.from(chunk, encoding);
-    }
-    if (Buffer.isBuffer(chunk) && this[ENCODING]) {
-      chunk = this[DECODER].write(chunk);
-    }
-    if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
-      this[FLUSH](true);
-    if (this[FLOWING])
-      this.emit("data", chunk);
-    else
-      this[BUFFERPUSH](chunk);
-    if (this[BUFFERLENGTH] !== 0)
-      this.emit("readable");
-    if (cb)
-      fn(cb);
-    return this[FLOWING];
-  }
-  /**
-   * Low-level explicit read method.
-   *
-   * In objectMode, the argument is ignored, and one item is returned if
-   * available.
-   *
-   * `n` is the number of bytes (or in the case of encoding streams,
-   * characters) to consume. If `n` is not provided, then the entire buffer
-   * is returned, or `null` is returned if no data is available.
-   *
-   * If `n` is greater that the amount of data in the internal buffer,
-   * then `null` is returned.
-   */
-  read(n) {
-    if (this[DESTROYED])
-      return null;
-    this[DISCARDED] = false;
-    if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
-      this[MAYBE_EMIT_END]();
-      return null;
-    }
-    if (this[OBJECTMODE])
-      n = null;
-    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
-      this[BUFFER] = [
-        this[ENCODING] ? this[BUFFER].join("") : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])
-      ];
-    }
-    const ret = this[READ](n || null, this[BUFFER][0]);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [READ](n, chunk) {
-    if (this[OBJECTMODE])
-      this[BUFFERSHIFT]();
-    else {
-      const c = chunk;
-      if (n === c.length || n === null)
-        this[BUFFERSHIFT]();
-      else if (typeof c === "string") {
-        this[BUFFER][0] = c.slice(n);
-        chunk = c.slice(0, n);
-        this[BUFFERLENGTH] -= n;
-      } else {
-        this[BUFFER][0] = c.subarray(n);
-        chunk = c.subarray(0, n);
-        this[BUFFERLENGTH] -= n;
-      }
-    }
-    this.emit("data", chunk);
-    if (!this[BUFFER].length && !this[EOF])
-      this.emit("drain");
-    return chunk;
-  }
-  end(chunk, encoding, cb) {
-    if (typeof chunk === "function") {
-      cb = chunk;
-      chunk = void 0;
-    }
-    if (typeof encoding === "function") {
-      cb = encoding;
-      encoding = "utf8";
-    }
-    if (chunk !== void 0)
-      this.write(chunk, encoding);
-    if (cb)
-      this.once("end", cb);
-    this[EOF] = true;
-    this.writable = false;
-    if (this[FLOWING] || !this[PAUSED])
-      this[MAYBE_EMIT_END]();
-    return this;
-  }
-  // don't let the internal resume be overwritten
-  [RESUME]() {
-    if (this[DESTROYED])
-      return;
-    if (!this[DATALISTENERS] && !this[PIPES].length) {
-      this[DISCARDED] = true;
-    }
-    this[PAUSED] = false;
-    this[FLOWING] = true;
-    this.emit("resume");
-    if (this[BUFFER].length)
-      this[FLUSH]();
-    else if (this[EOF])
-      this[MAYBE_EMIT_END]();
-    else
-      this.emit("drain");
-  }
-  /**
-   * Resume the stream if it is currently in a paused state
-   *
-   * If called when there are no pipe destinations or `data` event listeners,
-   * this will place the stream in a "discarded" state, where all data will
-   * be thrown away. The discarded state is removed if a pipe destination or
-   * data handler is added, if pause() is called, or if any synchronous or
-   * asynchronous iteration is started.
-   */
-  resume() {
-    return this[RESUME]();
-  }
-  /**
-   * Pause the stream
-   */
-  pause() {
-    this[FLOWING] = false;
-    this[PAUSED] = true;
-    this[DISCARDED] = false;
-  }
-  /**
-   * true if the stream has been forcibly destroyed
-   */
-  get destroyed() {
-    return this[DESTROYED];
-  }
-  /**
-   * true if the stream is currently in a flowing state, meaning that
-   * any writes will be immediately emitted.
-   */
-  get flowing() {
-    return this[FLOWING];
-  }
-  /**
-   * true if the stream is currently in a paused state
-   */
-  get paused() {
-    return this[PAUSED];
-  }
-  [BUFFERPUSH](chunk) {
-    if (this[OBJECTMODE])
-      this[BUFFERLENGTH] += 1;
-    else
-      this[BUFFERLENGTH] += chunk.length;
-    this[BUFFER].push(chunk);
-  }
-  [BUFFERSHIFT]() {
-    if (this[OBJECTMODE])
-      this[BUFFERLENGTH] -= 1;
-    else
-      this[BUFFERLENGTH] -= this[BUFFER][0].length;
-    return this[BUFFER].shift();
-  }
-  [FLUSH](noDrain = false) {
-    do {
-    } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length);
-    if (!noDrain && !this[BUFFER].length && !this[EOF])
-      this.emit("drain");
-  }
-  [FLUSHCHUNK](chunk) {
-    this.emit("data", chunk);
-    return this[FLOWING];
-  }
-  /**
-   * Pipe all data emitted by this stream into the destination provided.
-   *
-   * Triggers the flow of data.
-   */
-  pipe(dest, opts) {
-    if (this[DESTROYED])
-      return dest;
-    this[DISCARDED] = false;
-    const ended = this[EMITTED_END];
-    opts = opts || {};
-    if (dest === proc.stdout || dest === proc.stderr)
-      opts.end = false;
-    else
-      opts.end = opts.end !== false;
-    opts.proxyErrors = !!opts.proxyErrors;
-    if (ended) {
-      if (opts.end)
-        dest.end();
-    } else {
-      this[PIPES].push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
-      if (this[ASYNC])
-        defer(() => this[RESUME]());
-      else
-        this[RESUME]();
-    }
-    return dest;
-  }
-  /**
-   * Fully unhook a piped destination stream.
-   *
-   * If the destination stream was the only consumer of this stream (ie,
-   * there are no other piped destinations or `'data'` event listeners)
-   * then the flow of data will stop until there is another consumer or
-   * {@link Minipass#resume} is explicitly called.
-   */
-  unpipe(dest) {
-    const p = this[PIPES].find((p2) => p2.dest === dest);
-    if (p) {
-      if (this[PIPES].length === 1) {
-        if (this[FLOWING] && this[DATALISTENERS] === 0) {
-          this[FLOWING] = false;
-        }
-        this[PIPES] = [];
-      } else
-        this[PIPES].splice(this[PIPES].indexOf(p), 1);
-      p.unpipe();
-    }
-  }
-  /**
-   * Alias for {@link Minipass#on}
-   */
-  addListener(ev, handler) {
-    return this.on(ev, handler);
-  }
-  /**
-   * Mostly identical to `EventEmitter.on`, with the following
-   * behavior differences to prevent data loss and unnecessary hangs:
-   *
-   * - Adding a 'data' event handler will trigger the flow of data
-   *
-   * - Adding a 'readable' event handler when there is data waiting to be read
-   *   will cause 'readable' to be emitted immediately.
-   *
-   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
-   *   already passed will cause the event to be emitted immediately and all
-   *   handlers removed.
-   *
-   * - Adding an 'error' event handler after an error has been emitted will
-   *   cause the event to be re-emitted immediately with the error previously
-   *   raised.
-   */
-  on(ev, handler) {
-    const ret = super.on(ev, handler);
-    if (ev === "data") {
-      this[DISCARDED] = false;
-      this[DATALISTENERS]++;
-      if (!this[PIPES].length && !this[FLOWING]) {
-        this[RESUME]();
-      }
-    } else if (ev === "readable" && this[BUFFERLENGTH] !== 0) {
-      super.emit("readable");
-    } else if (isEndish(ev) && this[EMITTED_END]) {
-      super.emit(ev);
-      this.removeAllListeners(ev);
-    } else if (ev === "error" && this[EMITTED_ERROR]) {
-      const h = handler;
-      if (this[ASYNC])
-        defer(() => h.call(this, this[EMITTED_ERROR]));
-      else
-        h.call(this, this[EMITTED_ERROR]);
-    }
-    return ret;
-  }
-  /**
-   * Alias for {@link Minipass#off}
-   */
-  removeListener(ev, handler) {
-    return this.off(ev, handler);
-  }
-  /**
-   * Mostly identical to `EventEmitter.off`
-   *
-   * If a 'data' event handler is removed, and it was the last consumer
-   * (ie, there are no pipe destinations or other 'data' event listeners),
-   * then the flow of data will stop until there is another consumer or
-   * {@link Minipass#resume} is explicitly called.
-   */
-  off(ev, handler) {
-    const ret = super.off(ev, handler);
-    if (ev === "data") {
-      this[DATALISTENERS] = this.listeners("data").length;
-      if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
-        this[FLOWING] = false;
-      }
-    }
-    return ret;
-  }
-  /**
-   * Mostly identical to `EventEmitter.removeAllListeners`
-   *
-   * If all 'data' event handlers are removed, and they were the last consumer
-   * (ie, there are no pipe destinations), then the flow of data will stop
-   * until there is another consumer or {@link Minipass#resume} is explicitly
-   * called.
-   */
-  removeAllListeners(ev) {
-    const ret = super.removeAllListeners(ev);
-    if (ev === "data" || ev === void 0) {
-      this[DATALISTENERS] = 0;
-      if (!this[DISCARDED] && !this[PIPES].length) {
-        this[FLOWING] = false;
-      }
-    }
-    return ret;
-  }
-  /**
-   * true if the 'end' event has been emitted
-   */
-  get emittedEnd() {
-    return this[EMITTED_END];
-  }
-  [MAYBE_EMIT_END]() {
-    if (!this[EMITTING_END] && !this[EMITTED_END] && !this[DESTROYED] && this[BUFFER].length === 0 && this[EOF]) {
-      this[EMITTING_END] = true;
-      this.emit("end");
-      this.emit("prefinish");
-      this.emit("finish");
-      if (this[CLOSED])
-        this.emit("close");
-      this[EMITTING_END] = false;
-    }
-  }
-  /**
-   * Mostly identical to `EventEmitter.emit`, with the following
-   * behavior differences to prevent data loss and unnecessary hangs:
-   *
-   * If the stream has been destroyed, and the event is something other
-   * than 'close' or 'error', then `false` is returned and no handlers
-   * are called.
-   *
-   * If the event is 'end', and has already been emitted, then the event
-   * is ignored. If the stream is in a paused or non-flowing state, then
-   * the event will be deferred until data flow resumes. If the stream is
-   * async, then handlers will be called on the next tick rather than
-   * immediately.
-   *
-   * If the event is 'close', and 'end' has not yet been emitted, then
-   * the event will be deferred until after 'end' is emitted.
-   *
-   * If the event is 'error', and an AbortSignal was provided for the stream,
-   * and there are no listeners, then the event is ignored, matching the
-   * behavior of node core streams in the presense of an AbortSignal.
-   *
-   * If the event is 'finish' or 'prefinish', then all listeners will be
-   * removed after emitting the event, to prevent double-firing.
-   */
-  emit(ev, ...args) {
-    const data = args[0];
-    if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
-      return false;
-    } else if (ev === "data") {
-      return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
-    } else if (ev === "end") {
-      return this[EMITEND]();
-    } else if (ev === "close") {
-      this[CLOSED] = true;
-      if (!this[EMITTED_END] && !this[DESTROYED])
-        return false;
-      const ret2 = super.emit("close");
-      this.removeAllListeners("close");
-      return ret2;
-    } else if (ev === "error") {
-      this[EMITTED_ERROR] = data;
-      super.emit(ERROR, data);
-      const ret2 = !this[SIGNAL] || this.listeners("error").length ? super.emit("error", data) : false;
-      this[MAYBE_EMIT_END]();
-      return ret2;
-    } else if (ev === "resume") {
-      const ret2 = super.emit("resume");
-      this[MAYBE_EMIT_END]();
-      return ret2;
-    } else if (ev === "finish" || ev === "prefinish") {
-      const ret2 = super.emit(ev);
-      this.removeAllListeners(ev);
-      return ret2;
-    }
-    const ret = super.emit(ev, ...args);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [EMITDATA](data) {
-    for (const p of this[PIPES]) {
-      if (p.dest.write(data) === false)
-        this.pause();
-    }
-    const ret = this[DISCARDED] ? false : super.emit("data", data);
-    this[MAYBE_EMIT_END]();
-    return ret;
-  }
-  [EMITEND]() {
-    if (this[EMITTED_END])
-      return false;
-    this[EMITTED_END] = true;
-    this.readable = false;
-    return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
-  }
-  [EMITEND2]() {
-    if (this[DECODER]) {
-      const data = this[DECODER].end();
-      if (data) {
-        for (const p of this[PIPES]) {
-          p.dest.write(data);
-        }
-        if (!this[DISCARDED])
-          super.emit("data", data);
-      }
-    }
-    for (const p of this[PIPES]) {
-      p.end();
-    }
-    const ret = super.emit("end");
-    this.removeAllListeners("end");
-    return ret;
-  }
-  /**
-   * Return a Promise that resolves to an array of all emitted data once
-   * the stream ends.
-   */
-  async collect() {
-    const buf = Object.assign([], {
-      dataLength: 0
-    });
-    if (!this[OBJECTMODE])
-      buf.dataLength = 0;
-    const p = this.promise();
-    this.on("data", (c) => {
-      buf.push(c);
-      if (!this[OBJECTMODE])
-        buf.dataLength += c.length;
-    });
-    await p;
-    return buf;
-  }
-  /**
-   * Return a Promise that resolves to the concatenation of all emitted data
-   * once the stream ends.
-   *
-   * Not allowed on objectMode streams.
-   */
-  async concat() {
-    if (this[OBJECTMODE]) {
-      throw new Error("cannot concat in objectMode");
-    }
-    const buf = await this.collect();
-    return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
-  }
-  /**
-   * Return a void Promise that resolves once the stream ends.
-   */
-  async promise() {
-    return new Promise((resolve6, reject) => {
-      this.on(DESTROYED, () => reject(new Error("stream destroyed")));
-      this.on("error", (er) => reject(er));
-      this.on("end", () => resolve6());
-    });
-  }
-  /**
-   * Asynchronous `for await of` iteration.
-   *
-   * This will continue emitting all chunks until the stream terminates.
-   */
-  [Symbol.asyncIterator]() {
-    this[DISCARDED] = false;
-    let stopped = false;
-    const stop = async () => {
-      this.pause();
-      stopped = true;
-      return { value: void 0, done: true };
-    };
-    const next = () => {
-      if (stopped)
-        return stop();
-      const res = this.read();
-      if (res !== null)
-        return Promise.resolve({ done: false, value: res });
-      if (this[EOF])
-        return stop();
-      let resolve6;
-      let reject;
-      const onerr = (er) => {
-        this.off("data", ondata);
-        this.off("end", onend);
-        this.off(DESTROYED, ondestroy);
-        stop();
-        reject(er);
-      };
-      const ondata = (value) => {
-        this.off("error", onerr);
-        this.off("end", onend);
-        this.off(DESTROYED, ondestroy);
-        this.pause();
-        resolve6({ value, done: !!this[EOF] });
-      };
-      const onend = () => {
-        this.off("error", onerr);
-        this.off("data", ondata);
-        this.off(DESTROYED, ondestroy);
-        stop();
-        resolve6({ done: true, value: void 0 });
-      };
-      const ondestroy = () => onerr(new Error("stream destroyed"));
-      return new Promise((res2, rej) => {
-        reject = rej;
-        resolve6 = res2;
-        this.once(DESTROYED, ondestroy);
-        this.once("error", onerr);
-        this.once("end", onend);
-        this.once("data", ondata);
-      });
-    };
-    return {
-      next,
-      throw: stop,
-      return: stop,
-      [Symbol.asyncIterator]() {
-        return this;
-      }
-    };
-  }
-  /**
-   * Synchronous `for of` iteration.
-   *
-   * The iteration will terminate when the internal buffer runs out, even
-   * if the stream has not yet terminated.
-   */
-  [Symbol.iterator]() {
-    this[DISCARDED] = false;
-    let stopped = false;
-    const stop = () => {
-      this.pause();
-      this.off(ERROR, stop);
-      this.off(DESTROYED, stop);
-      this.off("end", stop);
-      stopped = true;
-      return { done: true, value: void 0 };
-    };
-    const next = () => {
-      if (stopped)
-        return stop();
-      const value = this.read();
-      return value === null ? stop() : { done: false, value };
-    };
-    this.once("end", stop);
-    this.once(ERROR, stop);
-    this.once(DESTROYED, stop);
-    return {
-      next,
-      throw: stop,
-      return: stop,
-      [Symbol.iterator]() {
-        return this;
-      }
-    };
-  }
-  /**
-   * Destroy a stream, preventing it from being used for any further purpose.
-   *
-   * If the stream has a `close()` method, then it will be called on
-   * destruction.
-   *
-   * After destruction, any attempt to write data, read data, or emit most
-   * events will be ignored.
-   *
-   * If an error argument is provided, then it will be emitted in an
-   * 'error' event.
-   */
-  destroy(er) {
-    if (this[DESTROYED]) {
-      if (er)
-        this.emit("error", er);
-      else
-        this.emit(DESTROYED);
-      return this;
-    }
-    this[DESTROYED] = true;
-    this[DISCARDED] = true;
-    this[BUFFER].length = 0;
-    this[BUFFERLENGTH] = 0;
-    const wc = this;
-    if (typeof wc.close === "function" && !this[CLOSED])
-      wc.close();
-    if (er)
-      this.emit("error", er);
-    else
-      this.emit(DESTROYED);
-    return this;
-  }
-  /**
-   * Alias for {@link isStream}
-   *
-   * Former export location, maintained for backwards compatibility.
-   *
-   * @deprecated
-   */
-  static get isStream() {
-    return isStream;
-  }
-};
-
-// node_modules/path-scurry/dist/esm/index.js
-var realpathSync = rps.native;
-var defaultFS = {
-  lstatSync,
-  readdir: readdirCB,
-  readdirSync,
-  readlinkSync,
-  realpathSync,
-  promises: {
-    lstat,
-    readdir,
-    readlink,
-    realpath
-  }
-};
-var fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS ? defaultFS : {
-  ...defaultFS,
-  ...fsOption,
-  promises: {
-    ...defaultFS.promises,
-    ...fsOption.promises || {}
-  }
-};
-var uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
-var uncToDrive = (rootPath) => rootPath.replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
-var eitherSep = /[\\\/]/;
-var UNKNOWN = 0;
-var IFIFO = 1;
-var IFCHR = 2;
-var IFDIR = 4;
-var IFBLK = 6;
-var IFREG = 8;
-var IFLNK = 10;
-var IFSOCK = 12;
-var IFMT = 15;
-var IFMT_UNKNOWN = ~IFMT;
-var READDIR_CALLED = 16;
-var LSTAT_CALLED = 32;
-var ENOTDIR = 64;
-var ENOENT = 128;
-var ENOREADLINK = 256;
-var ENOREALPATH = 512;
-var ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
-var TYPEMASK = 1023;
-var entToType = (s) => s.isFile() ? IFREG : s.isDirectory() ? IFDIR : s.isSymbolicLink() ? IFLNK : s.isCharacterDevice() ? IFCHR : s.isBlockDevice() ? IFBLK : s.isSocket() ? IFSOCK : s.isFIFO() ? IFIFO : UNKNOWN;
-var normalizeCache = /* @__PURE__ */ new Map();
-var normalize = (s) => {
-  const c = normalizeCache.get(s);
-  if (c)
-    return c;
-  const n = s.normalize("NFKD");
-  normalizeCache.set(s, n);
-  return n;
-};
-var normalizeNocaseCache = /* @__PURE__ */ new Map();
-var normalizeNocase = (s) => {
-  const c = normalizeNocaseCache.get(s);
-  if (c)
-    return c;
-  const n = normalize(s.toLowerCase());
-  normalizeNocaseCache.set(s, n);
-  return n;
-};
-var ResolveCache = class extends LRUCache {
-  constructor() {
-    super({ max: 256 });
-  }
-};
-var ChildrenCache = class extends LRUCache {
-  constructor(maxSize = 16 * 1024) {
-    super({
-      maxSize,
-      // parent + children
-      sizeCalculation: (a) => a.length + 1
-    });
-  }
-};
-var setAsCwd = Symbol("PathScurry setAsCwd");
-var _fs, _dev, _mode, _nlink, _uid, _gid, _rdev, _blksize, _ino, _size2, _blocks, _atimeMs, _mtimeMs, _ctimeMs, _birthtimeMs, _atime, _mtime, _ctime, _birthtime, _matchName, _depth, _fullpath, _fullpathPosix, _relative, _relativePosix, _type, _children, _linkTarget, _realpath, _PathBase_instances, resolveParts_fn, readdirSuccess_fn, markENOENT_fn, markChildrenENOENT_fn, markENOREALPATH_fn, markENOTDIR_fn, readdirFail_fn, lstatFail_fn, readlinkFail_fn, readdirAddChild_fn, readdirAddNewChild_fn, readdirMaybePromoteChild_fn, readdirPromoteChild_fn, applyStat_fn, _onReaddirCB, _readdirCBInFlight, callOnReaddirCB_fn, _asyncReaddirInFlight;
-var PathBase = class {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    __privateAdd(this, _PathBase_instances);
-    /**
-     * the basename of this path
-     *
-     * **Important**: *always* test the path name against any test string
-     * usingthe {@link isNamed} method, and not by directly comparing this
-     * string. Otherwise, unicode path strings that the system sees as identical
-     * will not be properly treated as the same path, leading to incorrect
-     * behavior and possible security issues.
-     */
-    __publicField(this, "name");
-    /**
-     * the Path entry corresponding to the path root.
-     *
-     * @internal
-     */
-    __publicField(this, "root");
-    /**
-     * All roots found within the current PathScurry family
-     *
-     * @internal
-     */
-    __publicField(this, "roots");
-    /**
-     * a reference to the parent path, or undefined in the case of root entries
-     *
-     * @internal
-     */
-    __publicField(this, "parent");
-    /**
-     * boolean indicating whether paths are compared case-insensitively
-     * @internal
-     */
-    __publicField(this, "nocase");
-    /**
-     * boolean indicating that this path is the current working directory
-     * of the PathScurry collection that contains it.
-     */
-    __publicField(this, "isCWD", false);
-    // potential default fs override
-    __privateAdd(this, _fs);
-    // Stats fields
-    __privateAdd(this, _dev);
-    __privateAdd(this, _mode);
-    __privateAdd(this, _nlink);
-    __privateAdd(this, _uid);
-    __privateAdd(this, _gid);
-    __privateAdd(this, _rdev);
-    __privateAdd(this, _blksize);
-    __privateAdd(this, _ino);
-    __privateAdd(this, _size2);
-    __privateAdd(this, _blocks);
-    __privateAdd(this, _atimeMs);
-    __privateAdd(this, _mtimeMs);
-    __privateAdd(this, _ctimeMs);
-    __privateAdd(this, _birthtimeMs);
-    __privateAdd(this, _atime);
-    __privateAdd(this, _mtime);
-    __privateAdd(this, _ctime);
-    __privateAdd(this, _birthtime);
-    __privateAdd(this, _matchName);
-    __privateAdd(this, _depth);
-    __privateAdd(this, _fullpath);
-    __privateAdd(this, _fullpathPosix);
-    __privateAdd(this, _relative);
-    __privateAdd(this, _relativePosix);
-    __privateAdd(this, _type);
-    __privateAdd(this, _children);
-    __privateAdd(this, _linkTarget);
-    __privateAdd(this, _realpath);
-    __privateAdd(this, _onReaddirCB, []);
-    __privateAdd(this, _readdirCBInFlight, false);
-    __privateAdd(this, _asyncReaddirInFlight);
-    this.name = name;
-    __privateSet(this, _matchName, nocase ? normalizeNocase(name) : normalize(name));
-    __privateSet(this, _type, type & TYPEMASK);
-    this.nocase = nocase;
-    this.roots = roots;
-    this.root = root || this;
-    __privateSet(this, _children, children);
-    __privateSet(this, _fullpath, opts.fullpath);
-    __privateSet(this, _relative, opts.relative);
-    __privateSet(this, _relativePosix, opts.relativePosix);
-    this.parent = opts.parent;
-    if (this.parent) {
-      __privateSet(this, _fs, __privateGet(this.parent, _fs));
-    } else {
-      __privateSet(this, _fs, fsFromOption(opts.fs));
-    }
-  }
-  get dev() {
-    return __privateGet(this, _dev);
-  }
-  get mode() {
-    return __privateGet(this, _mode);
-  }
-  get nlink() {
-    return __privateGet(this, _nlink);
-  }
-  get uid() {
-    return __privateGet(this, _uid);
-  }
-  get gid() {
-    return __privateGet(this, _gid);
-  }
-  get rdev() {
-    return __privateGet(this, _rdev);
-  }
-  get blksize() {
-    return __privateGet(this, _blksize);
-  }
-  get ino() {
-    return __privateGet(this, _ino);
-  }
-  get size() {
-    return __privateGet(this, _size2);
-  }
-  get blocks() {
-    return __privateGet(this, _blocks);
-  }
-  get atimeMs() {
-    return __privateGet(this, _atimeMs);
-  }
-  get mtimeMs() {
-    return __privateGet(this, _mtimeMs);
-  }
-  get ctimeMs() {
-    return __privateGet(this, _ctimeMs);
-  }
-  get birthtimeMs() {
-    return __privateGet(this, _birthtimeMs);
-  }
-  get atime() {
-    return __privateGet(this, _atime);
-  }
-  get mtime() {
-    return __privateGet(this, _mtime);
-  }
-  get ctime() {
-    return __privateGet(this, _ctime);
-  }
-  get birthtime() {
-    return __privateGet(this, _birthtime);
-  }
-  /**
-   * This property is for compatibility with the Dirent class as of
-   * Node v20, where Dirent['parentPath'] refers to the path of the
-   * directory that was passed to readdir. For root entries, it's the path
-   * to the entry itself.
-   */
-  get parentPath() {
-    return (this.parent || this).fullpath();
-  }
-  /**
-   * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,
-   * this property refers to the *parent* path, not the path object itself.
-   */
-  get path() {
-    return this.parentPath;
-  }
-  /**
-   * Returns the depth of the Path object from its root.
-   *
-   * For example, a path at `/foo/bar` would have a depth of 2.
-   */
-  depth() {
-    if (__privateGet(this, _depth) !== void 0)
-      return __privateGet(this, _depth);
-    if (!this.parent)
-      return __privateSet(this, _depth, 0);
-    return __privateSet(this, _depth, this.parent.depth() + 1);
-  }
-  /**
-   * @internal
-   */
-  childrenCache() {
-    return __privateGet(this, _children);
-  }
-  /**
-   * Get the Path object referenced by the string path, resolved from this Path
-   */
-  resolve(path4) {
-    var _a3;
-    if (!path4) {
-      return this;
-    }
-    const rootPath = this.getRootString(path4);
-    const dir = path4.substring(rootPath.length);
-    const dirParts = dir.split(this.splitSep);
-    const result = rootPath ? __privateMethod(_a3 = this.getRoot(rootPath), _PathBase_instances, resolveParts_fn).call(_a3, dirParts) : __privateMethod(this, _PathBase_instances, resolveParts_fn).call(this, dirParts);
-    return result;
-  }
-  /**
-   * Returns the cached children Path objects, if still available.  If they
-   * have fallen out of the cache, then returns an empty array, and resets the
-   * READDIR_CALLED bit, so that future calls to readdir() will require an fs
-   * lookup.
-   *
-   * @internal
-   */
-  children() {
-    const cached = __privateGet(this, _children).get(this);
-    if (cached) {
-      return cached;
-    }
-    const children = Object.assign([], { provisional: 0 });
-    __privateGet(this, _children).set(this, children);
-    __privateSet(this, _type, __privateGet(this, _type) & ~READDIR_CALLED);
-    return children;
-  }
-  /**
-   * Resolves a path portion and returns or creates the child Path.
-   *
-   * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
-   * `'..'`.
-   *
-   * This should not be called directly.  If `pathPart` contains any path
-   * separators, it will lead to unsafe undefined behavior.
-   *
-   * Use `Path.resolve()` instead.
-   *
-   * @internal
-   */
-  child(pathPart, opts) {
-    if (pathPart === "" || pathPart === ".") {
-      return this;
-    }
-    if (pathPart === "..") {
-      return this.parent || this;
-    }
-    const children = this.children();
-    const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);
-    for (const p of children) {
-      if (__privateGet(p, _matchName) === name) {
-        return p;
-      }
-    }
-    const s = this.parent ? this.sep : "";
-    const fullpath = __privateGet(this, _fullpath) ? __privateGet(this, _fullpath) + s + pathPart : void 0;
-    const pchild = this.newChild(pathPart, UNKNOWN, {
-      ...opts,
-      parent: this,
-      fullpath
-    });
-    if (!this.canReaddir()) {
-      __privateSet(pchild, _type, __privateGet(pchild, _type) | ENOENT);
-    }
-    children.push(pchild);
-    return pchild;
-  }
-  /**
-   * The relative path from the cwd. If it does not share an ancestor with
-   * the cwd, then this ends up being equivalent to the fullpath()
-   */
-  relative() {
-    if (this.isCWD)
-      return "";
-    if (__privateGet(this, _relative) !== void 0) {
-      return __privateGet(this, _relative);
-    }
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _relative, this.name);
-    }
-    const pv = p.relative();
-    return pv + (!pv || !p.parent ? "" : this.sep) + name;
-  }
-  /**
-   * The relative path from the cwd, using / as the path separator.
-   * If it does not share an ancestor with
-   * the cwd, then this ends up being equivalent to the fullpathPosix()
-   * On posix systems, this is identical to relative().
-   */
-  relativePosix() {
-    if (this.sep === "/")
-      return this.relative();
-    if (this.isCWD)
-      return "";
-    if (__privateGet(this, _relativePosix) !== void 0)
-      return __privateGet(this, _relativePosix);
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _relativePosix, this.fullpathPosix());
-    }
-    const pv = p.relativePosix();
-    return pv + (!pv || !p.parent ? "" : "/") + name;
-  }
-  /**
-   * The fully resolved path string for this Path entry
-   */
-  fullpath() {
-    if (__privateGet(this, _fullpath) !== void 0) {
-      return __privateGet(this, _fullpath);
-    }
-    const name = this.name;
-    const p = this.parent;
-    if (!p) {
-      return __privateSet(this, _fullpath, this.name);
-    }
-    const pv = p.fullpath();
-    const fp = pv + (!p.parent ? "" : this.sep) + name;
-    return __privateSet(this, _fullpath, fp);
-  }
-  /**
-   * On platforms other than windows, this is identical to fullpath.
-   *
-   * On windows, this is overridden to return the forward-slash form of the
-   * full UNC path.
-   */
-  fullpathPosix() {
-    if (__privateGet(this, _fullpathPosix) !== void 0)
-      return __privateGet(this, _fullpathPosix);
-    if (this.sep === "/")
-      return __privateSet(this, _fullpathPosix, this.fullpath());
-    if (!this.parent) {
-      const p2 = this.fullpath().replace(/\\/g, "/");
-      if (/^[a-z]:\//i.test(p2)) {
-        return __privateSet(this, _fullpathPosix, `//?/${p2}`);
-      } else {
-        return __privateSet(this, _fullpathPosix, p2);
-      }
-    }
-    const p = this.parent;
-    const pfpp = p.fullpathPosix();
-    const fpp = pfpp + (!pfpp || !p.parent ? "" : "/") + this.name;
-    return __privateSet(this, _fullpathPosix, fpp);
-  }
-  /**
-   * Is the Path of an unknown type?
-   *
-   * Note that we might know *something* about it if there has been a previous
-   * filesystem operation, for example that it does not exist, or is not a
-   * link, or whether it has child entries.
-   */
-  isUnknown() {
-    return (__privateGet(this, _type) & IFMT) === UNKNOWN;
-  }
-  isType(type) {
-    return this[`is${type}`]();
-  }
-  getType() {
-    return this.isUnknown() ? "Unknown" : this.isDirectory() ? "Directory" : this.isFile() ? "File" : this.isSymbolicLink() ? "SymbolicLink" : this.isFIFO() ? "FIFO" : this.isCharacterDevice() ? "CharacterDevice" : this.isBlockDevice() ? "BlockDevice" : (
-      /* c8 ignore start */
-      this.isSocket() ? "Socket" : "Unknown"
-    );
-  }
-  /**
-   * Is the Path a regular file?
-   */
-  isFile() {
-    return (__privateGet(this, _type) & IFMT) === IFREG;
-  }
-  /**
-   * Is the Path a directory?
-   */
-  isDirectory() {
-    return (__privateGet(this, _type) & IFMT) === IFDIR;
-  }
-  /**
-   * Is the path a character device?
-   */
-  isCharacterDevice() {
-    return (__privateGet(this, _type) & IFMT) === IFCHR;
-  }
-  /**
-   * Is the path a block device?
-   */
-  isBlockDevice() {
-    return (__privateGet(this, _type) & IFMT) === IFBLK;
-  }
-  /**
-   * Is the path a FIFO pipe?
-   */
-  isFIFO() {
-    return (__privateGet(this, _type) & IFMT) === IFIFO;
-  }
-  /**
-   * Is the path a socket?
-   */
-  isSocket() {
-    return (__privateGet(this, _type) & IFMT) === IFSOCK;
-  }
-  /**
-   * Is the path a symbolic link?
-   */
-  isSymbolicLink() {
-    return (__privateGet(this, _type) & IFLNK) === IFLNK;
-  }
-  /**
-   * Return the entry if it has been subject of a successful lstat, or
-   * undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* simply
-   * mean that we haven't called lstat on it.
-   */
-  lstatCached() {
-    return __privateGet(this, _type) & LSTAT_CALLED ? this : void 0;
-  }
-  /**
-   * Return the cached link target if the entry has been the subject of a
-   * successful readlink, or undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * readlink() has been called at some point.
-   */
-  readlinkCached() {
-    return __privateGet(this, _linkTarget);
-  }
-  /**
-   * Returns the cached realpath target if the entry has been the subject
-   * of a successful realpath, or undefined otherwise.
-   *
-   * Does not read the filesystem, so an undefined result *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * realpath() has been called at some point.
-   */
-  realpathCached() {
-    return __privateGet(this, _realpath);
-  }
-  /**
-   * Returns the cached child Path entries array if the entry has been the
-   * subject of a successful readdir(), or [] otherwise.
-   *
-   * Does not read the filesystem, so an empty array *could* just mean we
-   * don't have any cached data. Only use it if you are very sure that a
-   * readdir() has been called recently enough to still be valid.
-   */
-  readdirCached() {
-    const children = this.children();
-    return children.slice(0, children.provisional);
-  }
-  /**
-   * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
-   * any indication that readlink will definitely fail.
-   *
-   * Returns false if the path is known to not be a symlink, if a previous
-   * readlink failed, or if the entry does not exist.
-   */
-  canReadlink() {
-    if (__privateGet(this, _linkTarget))
-      return true;
-    if (!this.parent)
-      return false;
-    const ifmt = __privateGet(this, _type) & IFMT;
-    return !(ifmt !== UNKNOWN && ifmt !== IFLNK || __privateGet(this, _type) & ENOREADLINK || __privateGet(this, _type) & ENOENT);
-  }
-  /**
-   * Return true if readdir has previously been successfully called on this
-   * path, indicating that cachedReaddir() is likely valid.
-   */
-  calledReaddir() {
-    return !!(__privateGet(this, _type) & READDIR_CALLED);
-  }
-  /**
-   * Returns true if the path is known to not exist. That is, a previous lstat
-   * or readdir failed to verify its existence when that would have been
-   * expected, or a parent entry was marked either enoent or enotdir.
-   */
-  isENOENT() {
-    return !!(__privateGet(this, _type) & ENOENT);
-  }
-  /**
-   * Return true if the path is a match for the given path name.  This handles
-   * case sensitivity and unicode normalization.
-   *
-   * Note: even on case-sensitive systems, it is **not** safe to test the
-   * equality of the `.name` property to determine whether a given pathname
-   * matches, due to unicode normalization mismatches.
-   *
-   * Always use this method instead of testing the `path.name` property
-   * directly.
-   */
-  isNamed(n) {
-    return !this.nocase ? __privateGet(this, _matchName) === normalize(n) : __privateGet(this, _matchName) === normalizeNocase(n);
-  }
-  /**
-   * Return the Path object corresponding to the target of a symbolic link.
-   *
-   * If the Path is not a symbolic link, or if the readlink call fails for any
-   * reason, `undefined` is returned.
-   *
-   * Result is cached, and thus may be outdated if the filesystem is mutated.
-   */
-  async readlink() {
-    const target = __privateGet(this, _linkTarget);
-    if (target) {
-      return target;
-    }
-    if (!this.canReadlink()) {
-      return void 0;
-    }
-    if (!this.parent) {
-      return void 0;
-    }
-    try {
-      const read = await __privateGet(this, _fs).promises.readlink(this.fullpath());
-      const linkTarget = (await this.parent.realpath())?.resolve(read);
-      if (linkTarget) {
-        return __privateSet(this, _linkTarget, linkTarget);
-      }
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
-      return void 0;
-    }
-  }
-  /**
-   * Synchronous {@link PathBase.readlink}
-   */
-  readlinkSync() {
-    const target = __privateGet(this, _linkTarget);
-    if (target) {
-      return target;
-    }
-    if (!this.canReadlink()) {
-      return void 0;
-    }
-    if (!this.parent) {
-      return void 0;
-    }
-    try {
-      const read = __privateGet(this, _fs).readlinkSync(this.fullpath());
-      const linkTarget = this.parent.realpathSync()?.resolve(read);
-      if (linkTarget) {
-        return __privateSet(this, _linkTarget, linkTarget);
-      }
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readlinkFail_fn).call(this, er.code);
-      return void 0;
-    }
-  }
-  /**
-   * Call lstat() on this Path, and update all known information that can be
-   * determined.
-   *
-   * Note that unlike `fs.lstat()`, the returned value does not contain some
-   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
-   * information is required, you will need to call `fs.lstat` yourself.
-   *
-   * If the Path refers to a nonexistent file, or if the lstat call fails for
-   * any reason, `undefined` is returned.  Otherwise the updated Path object is
-   * returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async lstat() {
-    if ((__privateGet(this, _type) & ENOENT) === 0) {
-      try {
-        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, await __privateGet(this, _fs).promises.lstat(this.fullpath()));
-        return this;
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
-      }
-    }
-  }
-  /**
-   * synchronous {@link PathBase.lstat}
-   */
-  lstatSync() {
-    if ((__privateGet(this, _type) & ENOENT) === 0) {
-      try {
-        __privateMethod(this, _PathBase_instances, applyStat_fn).call(this, __privateGet(this, _fs).lstatSync(this.fullpath()));
-        return this;
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, lstatFail_fn).call(this, er.code);
-      }
-    }
-  }
-  /**
-   * Standard node-style callback interface to get list of directory entries.
-   *
-   * If the Path cannot or does not contain any children, then an empty array
-   * is returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   *
-   * @param cb The callback called with (er, entries).  Note that the `er`
-   * param is somewhat extraneous, as all readdir() errors are handled and
-   * simply result in an empty set of entries being returned.
-   * @param allowZalgo Boolean indicating that immediately known results should
-   * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
-   * zalgo at your peril, the dark pony lord is devious and unforgiving.
-   */
-  readdirCB(cb, allowZalgo = false) {
-    if (!this.canReaddir()) {
-      if (allowZalgo)
-        cb(null, []);
-      else
-        queueMicrotask(() => cb(null, []));
-      return;
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      const c = children.slice(0, children.provisional);
-      if (allowZalgo)
-        cb(null, c);
-      else
-        queueMicrotask(() => cb(null, c));
-      return;
-    }
-    __privateGet(this, _onReaddirCB).push(cb);
-    if (__privateGet(this, _readdirCBInFlight)) {
-      return;
-    }
-    __privateSet(this, _readdirCBInFlight, true);
-    const fullpath = this.fullpath();
-    __privateGet(this, _fs).readdir(fullpath, { withFileTypes: true }, (er, entries) => {
-      if (er) {
-        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-        children.provisional = 0;
-      } else {
-        for (const e of entries) {
-          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-        }
-        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-      }
-      __privateMethod(this, _PathBase_instances, callOnReaddirCB_fn).call(this, children.slice(0, children.provisional));
-      return;
-    });
-  }
-  /**
-   * Return an array of known child entries.
-   *
-   * If the Path cannot or does not contain any children, then an empty array
-   * is returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async readdir() {
-    if (!this.canReaddir()) {
-      return [];
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      return children.slice(0, children.provisional);
-    }
-    const fullpath = this.fullpath();
-    if (__privateGet(this, _asyncReaddirInFlight)) {
-      await __privateGet(this, _asyncReaddirInFlight);
-    } else {
-      let resolve6 = () => {
-      };
-      __privateSet(this, _asyncReaddirInFlight, new Promise((res) => resolve6 = res));
-      try {
-        for (const e of await __privateGet(this, _fs).promises.readdir(fullpath, {
-          withFileTypes: true
-        })) {
-          __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-        }
-        __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-      } catch (er) {
-        __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-        children.provisional = 0;
-      }
-      __privateSet(this, _asyncReaddirInFlight, void 0);
-      resolve6();
-    }
-    return children.slice(0, children.provisional);
-  }
-  /**
-   * synchronous {@link PathBase.readdir}
-   */
-  readdirSync() {
-    if (!this.canReaddir()) {
-      return [];
-    }
-    const children = this.children();
-    if (this.calledReaddir()) {
-      return children.slice(0, children.provisional);
-    }
-    const fullpath = this.fullpath();
-    try {
-      for (const e of __privateGet(this, _fs).readdirSync(fullpath, {
-        withFileTypes: true
-      })) {
-        __privateMethod(this, _PathBase_instances, readdirAddChild_fn).call(this, e, children);
-      }
-      __privateMethod(this, _PathBase_instances, readdirSuccess_fn).call(this, children);
-    } catch (er) {
-      __privateMethod(this, _PathBase_instances, readdirFail_fn).call(this, er.code);
-      children.provisional = 0;
-    }
-    return children.slice(0, children.provisional);
-  }
-  canReaddir() {
-    if (__privateGet(this, _type) & ENOCHILD)
-      return false;
-    const ifmt = IFMT & __privateGet(this, _type);
-    if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
-      return false;
-    }
-    return true;
-  }
-  shouldWalk(dirs, walkFilter) {
-    return (__privateGet(this, _type) & IFDIR) === IFDIR && !(__privateGet(this, _type) & ENOCHILD) && !dirs.has(this) && (!walkFilter || walkFilter(this));
-  }
-  /**
-   * Return the Path object corresponding to path as resolved
-   * by realpath(3).
-   *
-   * If the realpath call fails for any reason, `undefined` is returned.
-   *
-   * Result is cached, and thus may be outdated if the filesystem is mutated.
-   * On success, returns a Path object.
-   */
-  async realpath() {
-    if (__privateGet(this, _realpath))
-      return __privateGet(this, _realpath);
-    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
-      return void 0;
-    try {
-      const rp = await __privateGet(this, _fs).promises.realpath(this.fullpath());
-      return __privateSet(this, _realpath, this.resolve(rp));
-    } catch (_) {
-      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
-    }
-  }
-  /**
-   * Synchronous {@link realpath}
-   */
-  realpathSync() {
-    if (__privateGet(this, _realpath))
-      return __privateGet(this, _realpath);
-    if ((ENOREALPATH | ENOREADLINK | ENOENT) & __privateGet(this, _type))
-      return void 0;
-    try {
-      const rp = __privateGet(this, _fs).realpathSync(this.fullpath());
-      return __privateSet(this, _realpath, this.resolve(rp));
-    } catch (_) {
-      __privateMethod(this, _PathBase_instances, markENOREALPATH_fn).call(this);
-    }
-  }
-  /**
-   * Internal method to mark this Path object as the scurry cwd,
-   * called by {@link PathScurry#chdir}
-   *
-   * @internal
-   */
-  [setAsCwd](oldCwd) {
-    if (oldCwd === this)
-      return;
-    oldCwd.isCWD = false;
-    this.isCWD = true;
-    const changed = /* @__PURE__ */ new Set([]);
-    let rp = [];
-    let p = this;
-    while (p && p.parent) {
-      changed.add(p);
-      __privateSet(p, _relative, rp.join(this.sep));
-      __privateSet(p, _relativePosix, rp.join("/"));
-      p = p.parent;
-      rp.push("..");
-    }
-    p = oldCwd;
-    while (p && p.parent && !changed.has(p)) {
-      __privateSet(p, _relative, void 0);
-      __privateSet(p, _relativePosix, void 0);
-      p = p.parent;
-    }
-  }
-};
-_fs = new WeakMap();
-_dev = new WeakMap();
-_mode = new WeakMap();
-_nlink = new WeakMap();
-_uid = new WeakMap();
-_gid = new WeakMap();
-_rdev = new WeakMap();
-_blksize = new WeakMap();
-_ino = new WeakMap();
-_size2 = new WeakMap();
-_blocks = new WeakMap();
-_atimeMs = new WeakMap();
-_mtimeMs = new WeakMap();
-_ctimeMs = new WeakMap();
-_birthtimeMs = new WeakMap();
-_atime = new WeakMap();
-_mtime = new WeakMap();
-_ctime = new WeakMap();
-_birthtime = new WeakMap();
-_matchName = new WeakMap();
-_depth = new WeakMap();
-_fullpath = new WeakMap();
-_fullpathPosix = new WeakMap();
-_relative = new WeakMap();
-_relativePosix = new WeakMap();
-_type = new WeakMap();
-_children = new WeakMap();
-_linkTarget = new WeakMap();
-_realpath = new WeakMap();
-_PathBase_instances = new WeakSet();
-resolveParts_fn = function(dirParts) {
-  let p = this;
-  for (const part of dirParts) {
-    p = p.child(part);
-  }
-  return p;
-};
-readdirSuccess_fn = function(children) {
-  var _a3;
-  __privateSet(this, _type, __privateGet(this, _type) | READDIR_CALLED);
-  for (let p = children.provisional; p < children.length; p++) {
-    const c = children[p];
-    if (c)
-      __privateMethod(_a3 = c, _PathBase_instances, markENOENT_fn).call(_a3);
-  }
-};
-markENOENT_fn = function() {
-  if (__privateGet(this, _type) & ENOENT)
-    return;
-  __privateSet(this, _type, (__privateGet(this, _type) | ENOENT) & IFMT_UNKNOWN);
-  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
-};
-markChildrenENOENT_fn = function() {
-  var _a3;
-  const children = this.children();
-  children.provisional = 0;
-  for (const p of children) {
-    __privateMethod(_a3 = p, _PathBase_instances, markENOENT_fn).call(_a3);
-  }
-};
-markENOREALPATH_fn = function() {
-  __privateSet(this, _type, __privateGet(this, _type) | ENOREALPATH);
-  __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
-};
-// save the information when we know the entry is not a dir
-markENOTDIR_fn = function() {
-  if (__privateGet(this, _type) & ENOTDIR)
-    return;
-  let t = __privateGet(this, _type);
-  if ((t & IFMT) === IFDIR)
-    t &= IFMT_UNKNOWN;
-  __privateSet(this, _type, t | ENOTDIR);
-  __privateMethod(this, _PathBase_instances, markChildrenENOENT_fn).call(this);
-};
-readdirFail_fn = function(code = "") {
-  if (code === "ENOTDIR" || code === "EPERM") {
-    __privateMethod(this, _PathBase_instances, markENOTDIR_fn).call(this);
-  } else if (code === "ENOENT") {
-    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
-  } else {
-    this.children().provisional = 0;
-  }
-};
-lstatFail_fn = function(code = "") {
-  var _a3;
-  if (code === "ENOTDIR") {
-    const p = this.parent;
-    __privateMethod(_a3 = p, _PathBase_instances, markENOTDIR_fn).call(_a3);
-  } else if (code === "ENOENT") {
-    __privateMethod(this, _PathBase_instances, markENOENT_fn).call(this);
-  }
-};
-readlinkFail_fn = function(code = "") {
-  var _a3;
-  let ter = __privateGet(this, _type);
-  ter |= ENOREADLINK;
-  if (code === "ENOENT")
-    ter |= ENOENT;
-  if (code === "EINVAL" || code === "UNKNOWN") {
-    ter &= IFMT_UNKNOWN;
-  }
-  __privateSet(this, _type, ter);
-  if (code === "ENOTDIR" && this.parent) {
-    __privateMethod(_a3 = this.parent, _PathBase_instances, markENOTDIR_fn).call(_a3);
-  }
-};
-readdirAddChild_fn = function(e, c) {
-  return __privateMethod(this, _PathBase_instances, readdirMaybePromoteChild_fn).call(this, e, c) || __privateMethod(this, _PathBase_instances, readdirAddNewChild_fn).call(this, e, c);
-};
-readdirAddNewChild_fn = function(e, c) {
-  const type = entToType(e);
-  const child = this.newChild(e.name, type, { parent: this });
-  const ifmt = __privateGet(child, _type) & IFMT;
-  if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
-    __privateSet(child, _type, __privateGet(child, _type) | ENOTDIR);
-  }
-  c.unshift(child);
-  c.provisional++;
-  return child;
-};
-readdirMaybePromoteChild_fn = function(e, c) {
-  for (let p = c.provisional; p < c.length; p++) {
-    const pchild = c[p];
-    const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);
-    if (name !== __privateGet(pchild, _matchName)) {
-      continue;
-    }
-    return __privateMethod(this, _PathBase_instances, readdirPromoteChild_fn).call(this, e, pchild, p, c);
-  }
-};
-readdirPromoteChild_fn = function(e, p, index, c) {
-  const v = p.name;
-  __privateSet(p, _type, __privateGet(p, _type) & IFMT_UNKNOWN | entToType(e));
-  if (v !== e.name)
-    p.name = e.name;
-  if (index !== c.provisional) {
-    if (index === c.length - 1)
-      c.pop();
-    else
-      c.splice(index, 1);
-    c.unshift(p);
-  }
-  c.provisional++;
-  return p;
-};
-applyStat_fn = function(st) {
-  const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid } = st;
-  __privateSet(this, _atime, atime);
-  __privateSet(this, _atimeMs, atimeMs);
-  __privateSet(this, _birthtime, birthtime);
-  __privateSet(this, _birthtimeMs, birthtimeMs);
-  __privateSet(this, _blksize, blksize);
-  __privateSet(this, _blocks, blocks);
-  __privateSet(this, _ctime, ctime);
-  __privateSet(this, _ctimeMs, ctimeMs);
-  __privateSet(this, _dev, dev);
-  __privateSet(this, _gid, gid);
-  __privateSet(this, _ino, ino);
-  __privateSet(this, _mode, mode);
-  __privateSet(this, _mtime, mtime);
-  __privateSet(this, _mtimeMs, mtimeMs);
-  __privateSet(this, _nlink, nlink);
-  __privateSet(this, _rdev, rdev);
-  __privateSet(this, _size2, size);
-  __privateSet(this, _uid, uid);
-  const ifmt = entToType(st);
-  __privateSet(this, _type, __privateGet(this, _type) & IFMT_UNKNOWN | ifmt | LSTAT_CALLED);
-  if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
-    __privateSet(this, _type, __privateGet(this, _type) | ENOTDIR);
-  }
-};
-_onReaddirCB = new WeakMap();
-_readdirCBInFlight = new WeakMap();
-callOnReaddirCB_fn = function(children) {
-  __privateSet(this, _readdirCBInFlight, false);
-  const cbs = __privateGet(this, _onReaddirCB).slice();
-  __privateGet(this, _onReaddirCB).length = 0;
-  cbs.forEach((cb) => cb(null, children));
-};
-_asyncReaddirInFlight = new WeakMap();
-var PathWin32 = class _PathWin32 extends PathBase {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    super(name, type, root, roots, nocase, children, opts);
-    /**
-     * Separator for generating path strings.
-     */
-    __publicField(this, "sep", "\\");
-    /**
-     * Separator for parsing path strings.
-     */
-    __publicField(this, "splitSep", eitherSep);
-  }
-  /**
-   * @internal
-   */
-  newChild(name, type = UNKNOWN, opts = {}) {
-    return new _PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
-  }
-  /**
-   * @internal
-   */
-  getRootString(path4) {
-    return win32.parse(path4).root;
-  }
-  /**
-   * @internal
-   */
-  getRoot(rootPath) {
-    rootPath = uncToDrive(rootPath.toUpperCase());
-    if (rootPath === this.root.name) {
-      return this.root;
-    }
-    for (const [compare, root] of Object.entries(this.roots)) {
-      if (this.sameRoot(rootPath, compare)) {
-        return this.roots[rootPath] = root;
-      }
-    }
-    return this.roots[rootPath] = new PathScurryWin32(rootPath, this).root;
-  }
-  /**
-   * @internal
-   */
-  sameRoot(rootPath, compare = this.root.name) {
-    rootPath = rootPath.toUpperCase().replace(/\//g, "\\").replace(uncDriveRegexp, "$1\\");
-    return rootPath === compare;
-  }
-};
-var PathPosix = class _PathPosix extends PathBase {
-  /**
-   * Do not create new Path objects directly.  They should always be accessed
-   * via the PathScurry class or other methods on the Path class.
-   *
-   * @internal
-   */
-  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
-    super(name, type, root, roots, nocase, children, opts);
-    /**
-     * separator for parsing path strings
-     */
-    __publicField(this, "splitSep", "/");
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "/");
-  }
-  /**
-   * @internal
-   */
-  getRootString(path4) {
-    return path4.startsWith("/") ? "/" : "";
-  }
-  /**
-   * @internal
-   */
-  getRoot(_rootPath) {
-    return this.root;
-  }
-  /**
-   * @internal
-   */
-  newChild(name, type = UNKNOWN, opts = {}) {
-    return new _PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
-  }
-};
-var _resolveCache, _resolvePosixCache, _children2, _fs2;
-var PathScurryBase = class {
-  /**
-   * This class should not be instantiated directly.
-   *
-   * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
-   *
-   * @internal
-   */
-  constructor(cwd = process.cwd(), pathImpl, sep2, { nocase, childrenCacheSize = 16 * 1024, fs: fs4 = defaultFS } = {}) {
-    /**
-     * The root Path entry for the current working directory of this Scurry
-     */
-    __publicField(this, "root");
-    /**
-     * The string path for the root of this Scurry's current working directory
-     */
-    __publicField(this, "rootPath");
-    /**
-     * A collection of all roots encountered, referenced by rootPath
-     */
-    __publicField(this, "roots");
-    /**
-     * The Path entry corresponding to this PathScurry's current working directory.
-     */
-    __publicField(this, "cwd");
-    __privateAdd(this, _resolveCache);
-    __privateAdd(this, _resolvePosixCache);
-    __privateAdd(this, _children2);
-    /**
-     * Perform path comparisons case-insensitively.
-     *
-     * Defaults true on Darwin and Windows systems, false elsewhere.
-     */
-    __publicField(this, "nocase");
-    __privateAdd(this, _fs2);
-    __privateSet(this, _fs2, fsFromOption(fs4));
-    if (cwd instanceof URL || cwd.startsWith("file://")) {
-      cwd = fileURLToPath(cwd);
-    }
-    const cwdPath = pathImpl.resolve(cwd);
-    this.roots = /* @__PURE__ */ Object.create(null);
-    this.rootPath = this.parseRootPath(cwdPath);
-    __privateSet(this, _resolveCache, new ResolveCache());
-    __privateSet(this, _resolvePosixCache, new ResolveCache());
-    __privateSet(this, _children2, new ChildrenCache(childrenCacheSize));
-    const split = cwdPath.substring(this.rootPath.length).split(sep2);
-    if (split.length === 1 && !split[0]) {
-      split.pop();
-    }
-    if (nocase === void 0) {
-      throw new TypeError("must provide nocase setting to PathScurryBase ctor");
-    }
-    this.nocase = nocase;
-    this.root = this.newRoot(__privateGet(this, _fs2));
-    this.roots[this.rootPath] = this.root;
-    let prev = this.root;
-    let len = split.length - 1;
-    const joinSep = pathImpl.sep;
-    let abs = this.rootPath;
-    let sawFirst = false;
-    for (const part of split) {
-      const l = len--;
-      prev = prev.child(part, {
-        relative: new Array(l).fill("..").join(joinSep),
-        relativePosix: new Array(l).fill("..").join("/"),
-        fullpath: abs += (sawFirst ? "" : joinSep) + part
-      });
-      sawFirst = true;
-    }
-    this.cwd = prev;
-  }
-  /**
-   * Get the depth of a provided path, string, or the cwd
-   */
-  depth(path4 = this.cwd) {
-    if (typeof path4 === "string") {
-      path4 = this.cwd.resolve(path4);
-    }
-    return path4.depth();
-  }
-  /**
-   * Return the cache of child entries.  Exposed so subclasses can create
-   * child Path objects in a platform-specific way.
-   *
-   * @internal
-   */
-  childrenCache() {
-    return __privateGet(this, _children2);
-  }
-  /**
-   * Resolve one or more path strings to a resolved string
-   *
-   * Same interface as require('path').resolve.
-   *
-   * Much faster than path.resolve() when called multiple times for the same
-   * path, because the resolved Path objects are cached.  Much slower
-   * otherwise.
-   */
-  resolve(...paths) {
-    let r = "";
-    for (let i = paths.length - 1; i >= 0; i--) {
-      const p = paths[i];
-      if (!p || p === ".")
-        continue;
-      r = r ? `${p}/${r}` : p;
-      if (this.isAbsolute(p)) {
-        break;
-      }
-    }
-    const cached = __privateGet(this, _resolveCache).get(r);
-    if (cached !== void 0) {
-      return cached;
-    }
-    const result = this.cwd.resolve(r).fullpath();
-    __privateGet(this, _resolveCache).set(r, result);
-    return result;
-  }
-  /**
-   * Resolve one or more path strings to a resolved string, returning
-   * the posix path.  Identical to .resolve() on posix systems, but on
-   * windows will return a forward-slash separated UNC path.
-   *
-   * Same interface as require('path').resolve.
-   *
-   * Much faster than path.resolve() when called multiple times for the same
-   * path, because the resolved Path objects are cached.  Much slower
-   * otherwise.
-   */
-  resolvePosix(...paths) {
-    let r = "";
-    for (let i = paths.length - 1; i >= 0; i--) {
-      const p = paths[i];
-      if (!p || p === ".")
-        continue;
-      r = r ? `${p}/${r}` : p;
-      if (this.isAbsolute(p)) {
-        break;
-      }
-    }
-    const cached = __privateGet(this, _resolvePosixCache).get(r);
-    if (cached !== void 0) {
-      return cached;
-    }
-    const result = this.cwd.resolve(r).fullpathPosix();
-    __privateGet(this, _resolvePosixCache).set(r, result);
-    return result;
-  }
-  /**
-   * find the relative path from the cwd to the supplied path string or entry
-   */
-  relative(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.relative();
-  }
-  /**
-   * find the relative path from the cwd to the supplied path string or
-   * entry, using / as the path delimiter, even on Windows.
-   */
-  relativePosix(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.relativePosix();
-  }
-  /**
-   * Return the basename for the provided string or Path object
-   */
-  basename(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.name;
-  }
-  /**
-   * Return the dirname for the provided string or Path object
-   */
-  dirname(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return (entry.parent || entry).fullpath();
-  }
-  async readdir(entry = this.cwd, opts = {
-    withFileTypes: true
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes } = opts;
-    if (!entry.canReaddir()) {
-      return [];
-    } else {
-      const p = await entry.readdir();
-      return withFileTypes ? p : p.map((e) => e.name);
-    }
-  }
-  readdirSync(entry = this.cwd, opts = {
-    withFileTypes: true
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true } = opts;
-    if (!entry.canReaddir()) {
-      return [];
-    } else if (withFileTypes) {
-      return entry.readdirSync();
-    } else {
-      return entry.readdirSync().map((e) => e.name);
-    }
-  }
-  /**
-   * Call lstat() on the string or Path object, and update all known
-   * information that can be determined.
-   *
-   * Note that unlike `fs.lstat()`, the returned value does not contain some
-   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
-   * information is required, you will need to call `fs.lstat` yourself.
-   *
-   * If the Path refers to a nonexistent file, or if the lstat call fails for
-   * any reason, `undefined` is returned.  Otherwise the updated Path object is
-   * returned.
-   *
-   * Results are cached, and thus may be out of date if the filesystem is
-   * mutated.
-   */
-  async lstat(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.lstat();
-  }
-  /**
-   * synchronous {@link PathScurryBase.lstat}
-   */
-  lstatSync(entry = this.cwd) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    }
-    return entry.lstatSync();
-  }
-  async readlink(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = await entry.readlink();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  readlinkSync(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = entry.readlinkSync();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  async realpath(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = await entry.realpath();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  realpathSync(entry = this.cwd, { withFileTypes } = {
-    withFileTypes: false
-  }) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      withFileTypes = entry.withFileTypes;
-      entry = this.cwd;
-    }
-    const e = entry.realpathSync();
-    return withFileTypes ? e : e?.fullpath();
-  }
-  async walk(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = [];
-    if (!filter2 || filter2(entry)) {
-      results.push(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set();
-    const walk = (dir, cb) => {
-      dirs.add(dir);
-      dir.readdirCB((er, entries) => {
-        if (er) {
-          return cb(er);
-        }
-        let len = entries.length;
-        if (!len)
-          return cb();
-        const next = () => {
-          if (--len === 0) {
-            cb();
-          }
-        };
-        for (const e of entries) {
-          if (!filter2 || filter2(e)) {
-            results.push(withFileTypes ? e : e.fullpath());
-          }
-          if (follow && e.isSymbolicLink()) {
-            e.realpath().then((r) => r?.isUnknown() ? r.lstat() : r).then((r) => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
-          } else {
-            if (e.shouldWalk(dirs, walkFilter)) {
-              walk(e, next);
-            } else {
-              next();
-            }
-          }
-        }
-      }, true);
-    };
-    const start = entry;
-    return new Promise((res, rej) => {
-      walk(start, (er) => {
-        if (er)
-          return rej(er);
-        res(results);
-      });
-    });
-  }
-  walkSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = [];
-    if (!filter2 || filter2(entry)) {
-      results.push(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set([entry]);
-    for (const dir of dirs) {
-      const entries = dir.readdirSync();
-      for (const e of entries) {
-        if (!filter2 || filter2(e)) {
-          results.push(withFileTypes ? e : e.fullpath());
-        }
-        let r = e;
-        if (e.isSymbolicLink()) {
-          if (!(follow && (r = e.realpathSync())))
-            continue;
-          if (r.isUnknown())
-            r.lstatSync();
-        }
-        if (r.shouldWalk(dirs, walkFilter)) {
-          dirs.add(r);
-        }
-      }
-    }
-    return results;
-  }
-  /**
-   * Support for `for await`
-   *
-   * Alias for {@link PathScurryBase.iterate}
-   *
-   * Note: As of Node 19, this is very slow, compared to other methods of
-   * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
-   * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
-   */
-  [Symbol.asyncIterator]() {
-    return this.iterate();
-  }
-  iterate(entry = this.cwd, options = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      options = entry;
-      entry = this.cwd;
-    }
-    return this.stream(entry, options)[Symbol.asyncIterator]();
-  }
-  /**
-   * Iterating over a PathScurry performs a synchronous walk.
-   *
-   * Alias for {@link PathScurryBase.iterateSync}
-   */
-  [Symbol.iterator]() {
-    return this.iterateSync();
-  }
-  *iterateSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    if (!filter2 || filter2(entry)) {
-      yield withFileTypes ? entry : entry.fullpath();
-    }
-    const dirs = /* @__PURE__ */ new Set([entry]);
-    for (const dir of dirs) {
-      const entries = dir.readdirSync();
-      for (const e of entries) {
-        if (!filter2 || filter2(e)) {
-          yield withFileTypes ? e : e.fullpath();
-        }
-        let r = e;
-        if (e.isSymbolicLink()) {
-          if (!(follow && (r = e.realpathSync())))
-            continue;
-          if (r.isUnknown())
-            r.lstatSync();
-        }
-        if (r.shouldWalk(dirs, walkFilter)) {
-          dirs.add(r);
-        }
-      }
-    }
-  }
-  stream(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = new Minipass({ objectMode: true });
-    if (!filter2 || filter2(entry)) {
-      results.write(withFileTypes ? entry : entry.fullpath());
-    }
-    const dirs = /* @__PURE__ */ new Set();
-    const queue = [entry];
-    let processing = 0;
-    const process2 = () => {
-      let paused = false;
-      while (!paused) {
-        const dir = queue.shift();
-        if (!dir) {
-          if (processing === 0)
-            results.end();
-          return;
-        }
-        processing++;
-        dirs.add(dir);
-        const onReaddir = (er, entries, didRealpaths = false) => {
-          if (er)
-            return results.emit("error", er);
-          if (follow && !didRealpaths) {
-            const promises2 = [];
-            for (const e of entries) {
-              if (e.isSymbolicLink()) {
-                promises2.push(e.realpath().then((r) => r?.isUnknown() ? r.lstat() : r));
-              }
-            }
-            if (promises2.length) {
-              Promise.all(promises2).then(() => onReaddir(null, entries, true));
-              return;
-            }
-          }
-          for (const e of entries) {
-            if (e && (!filter2 || filter2(e))) {
-              if (!results.write(withFileTypes ? e : e.fullpath())) {
-                paused = true;
-              }
-            }
-          }
-          processing--;
-          for (const e of entries) {
-            const r = e.realpathCached() || e;
-            if (r.shouldWalk(dirs, walkFilter)) {
-              queue.push(r);
-            }
-          }
-          if (paused && !results.flowing) {
-            results.once("drain", process2);
-          } else if (!sync2) {
-            process2();
-          }
-        };
-        let sync2 = true;
-        dir.readdirCB(onReaddir, true);
-        sync2 = false;
-      }
-    };
-    process2();
-    return results;
-  }
-  streamSync(entry = this.cwd, opts = {}) {
-    if (typeof entry === "string") {
-      entry = this.cwd.resolve(entry);
-    } else if (!(entry instanceof PathBase)) {
-      opts = entry;
-      entry = this.cwd;
-    }
-    const { withFileTypes = true, follow = false, filter: filter2, walkFilter } = opts;
-    const results = new Minipass({ objectMode: true });
-    const dirs = /* @__PURE__ */ new Set();
-    if (!filter2 || filter2(entry)) {
-      results.write(withFileTypes ? entry : entry.fullpath());
-    }
-    const queue = [entry];
-    let processing = 0;
-    const process2 = () => {
-      let paused = false;
-      while (!paused) {
-        const dir = queue.shift();
-        if (!dir) {
-          if (processing === 0)
-            results.end();
-          return;
-        }
-        processing++;
-        dirs.add(dir);
-        const entries = dir.readdirSync();
-        for (const e of entries) {
-          if (!filter2 || filter2(e)) {
-            if (!results.write(withFileTypes ? e : e.fullpath())) {
-              paused = true;
-            }
-          }
-        }
-        processing--;
-        for (const e of entries) {
-          let r = e;
-          if (e.isSymbolicLink()) {
-            if (!(follow && (r = e.realpathSync())))
-              continue;
-            if (r.isUnknown())
-              r.lstatSync();
-          }
-          if (r.shouldWalk(dirs, walkFilter)) {
-            queue.push(r);
-          }
-        }
-      }
-      if (paused && !results.flowing)
-        results.once("drain", process2);
-    };
-    process2();
-    return results;
-  }
-  chdir(path4 = this.cwd) {
-    const oldCwd = this.cwd;
-    this.cwd = typeof path4 === "string" ? this.cwd.resolve(path4) : path4;
-    this.cwd[setAsCwd](oldCwd);
-  }
-};
-_resolveCache = new WeakMap();
-_resolvePosixCache = new WeakMap();
-_children2 = new WeakMap();
-_fs2 = new WeakMap();
-var PathScurryWin32 = class extends PathScurryBase {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = true } = opts;
-    super(cwd, win32, "\\", { ...opts, nocase });
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "\\");
-    this.nocase = nocase;
-    for (let p = this.cwd; p; p = p.parent) {
-      p.nocase = this.nocase;
-    }
-  }
-  /**
-   * @internal
-   */
-  parseRootPath(dir) {
-    return win32.parse(dir).root.toUpperCase();
-  }
-  /**
-   * @internal
-   */
-  newRoot(fs4) {
-    return new PathWin32(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs4 });
-  }
-  /**
-   * Return true if the provided path string is an absolute path
-   */
-  isAbsolute(p) {
-    return p.startsWith("/") || p.startsWith("\\") || /^[a-z]:(\/|\\)/i.test(p);
-  }
-};
-var PathScurryPosix = class extends PathScurryBase {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = false } = opts;
-    super(cwd, posix, "/", { ...opts, nocase });
-    /**
-     * separator for generating path strings
-     */
-    __publicField(this, "sep", "/");
-    this.nocase = nocase;
-  }
-  /**
-   * @internal
-   */
-  parseRootPath(_dir) {
-    return "/";
-  }
-  /**
-   * @internal
-   */
-  newRoot(fs4) {
-    return new PathPosix(this.rootPath, IFDIR, void 0, this.roots, this.nocase, this.childrenCache(), { fs: fs4 });
-  }
-  /**
-   * Return true if the provided path string is an absolute path
-   */
-  isAbsolute(p) {
-    return p.startsWith("/");
-  }
-};
-var PathScurryDarwin = class extends PathScurryPosix {
-  constructor(cwd = process.cwd(), opts = {}) {
-    const { nocase = true } = opts;
-    super(cwd, { ...opts, nocase });
-  }
-};
-var Path = process.platform === "win32" ? PathWin32 : PathPosix;
-var PathScurry = process.platform === "win32" ? PathScurryWin32 : process.platform === "darwin" ? PathScurryDarwin : PathScurryPosix;
-
-// node_modules/glob/dist/esm/pattern.js
-var isPatternList = (pl) => pl.length >= 1;
-var isGlobList = (gl) => gl.length >= 1;
-var _patternList, _globList, _index, _platform, _rest, _globString, _isDrive, _isUNC, _isAbsolute, _followGlobstar;
-var _Pattern = class _Pattern {
-  constructor(patternList, globList, index, platform) {
-    __privateAdd(this, _patternList);
-    __privateAdd(this, _globList);
-    __privateAdd(this, _index);
-    __publicField(this, "length");
-    __privateAdd(this, _platform);
-    __privateAdd(this, _rest);
-    __privateAdd(this, _globString);
-    __privateAdd(this, _isDrive);
-    __privateAdd(this, _isUNC);
-    __privateAdd(this, _isAbsolute);
-    __privateAdd(this, _followGlobstar, true);
-    if (!isPatternList(patternList)) {
-      throw new TypeError("empty pattern list");
-    }
-    if (!isGlobList(globList)) {
-      throw new TypeError("empty glob list");
-    }
-    if (globList.length !== patternList.length) {
-      throw new TypeError("mismatched pattern list and glob list lengths");
-    }
-    this.length = patternList.length;
-    if (index < 0 || index >= this.length) {
-      throw new TypeError("index out of range");
-    }
-    __privateSet(this, _patternList, patternList);
-    __privateSet(this, _globList, globList);
-    __privateSet(this, _index, index);
-    __privateSet(this, _platform, platform);
-    if (__privateGet(this, _index) === 0) {
-      if (this.isUNC()) {
-        const [p0, p1, p2, p3, ...prest] = __privateGet(this, _patternList);
-        const [g0, g1, g2, g3, ...grest] = __privateGet(this, _globList);
-        if (prest[0] === "") {
-          prest.shift();
-          grest.shift();
-        }
-        const p = [p0, p1, p2, p3, ""].join("/");
-        const g = [g0, g1, g2, g3, ""].join("/");
-        __privateSet(this, _patternList, [p, ...prest]);
-        __privateSet(this, _globList, [g, ...grest]);
-        this.length = __privateGet(this, _patternList).length;
-      } else if (this.isDrive() || this.isAbsolute()) {
-        const [p1, ...prest] = __privateGet(this, _patternList);
-        const [g1, ...grest] = __privateGet(this, _globList);
-        if (prest[0] === "") {
-          prest.shift();
-          grest.shift();
-        }
-        const p = p1 + "/";
-        const g = g1 + "/";
-        __privateSet(this, _patternList, [p, ...prest]);
-        __privateSet(this, _globList, [g, ...grest]);
-        this.length = __privateGet(this, _patternList).length;
-      }
-    }
-  }
-  /**
-   * The first entry in the parsed list of patterns
-   */
-  pattern() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)];
-  }
-  /**
-   * true of if pattern() returns a string
-   */
-  isString() {
-    return typeof __privateGet(this, _patternList)[__privateGet(this, _index)] === "string";
-  }
-  /**
-   * true of if pattern() returns GLOBSTAR
-   */
-  isGlobstar() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)] === GLOBSTAR;
-  }
-  /**
-   * true if pattern() returns a regexp
-   */
-  isRegExp() {
-    return __privateGet(this, _patternList)[__privateGet(this, _index)] instanceof RegExp;
-  }
-  /**
-   * The /-joined set of glob parts that make up this pattern
-   */
-  globString() {
-    return __privateSet(this, _globString, __privateGet(this, _globString) || (__privateGet(this, _index) === 0 ? this.isAbsolute() ? __privateGet(this, _globList)[0] + __privateGet(this, _globList).slice(1).join("/") : __privateGet(this, _globList).join("/") : __privateGet(this, _globList).slice(__privateGet(this, _index)).join("/")));
-  }
-  /**
-   * true if there are more pattern parts after this one
-   */
-  hasMore() {
-    return this.length > __privateGet(this, _index) + 1;
-  }
-  /**
-   * The rest of the pattern after this part, or null if this is the end
-   */
-  rest() {
-    if (__privateGet(this, _rest) !== void 0)
-      return __privateGet(this, _rest);
-    if (!this.hasMore())
-      return __privateSet(this, _rest, null);
-    __privateSet(this, _rest, new _Pattern(__privateGet(this, _patternList), __privateGet(this, _globList), __privateGet(this, _index) + 1, __privateGet(this, _platform)));
-    __privateSet(__privateGet(this, _rest), _isAbsolute, __privateGet(this, _isAbsolute));
-    __privateSet(__privateGet(this, _rest), _isUNC, __privateGet(this, _isUNC));
-    __privateSet(__privateGet(this, _rest), _isDrive, __privateGet(this, _isDrive));
-    return __privateGet(this, _rest);
-  }
-  /**
-   * true if the pattern represents a //unc/path/ on windows
-   */
-  isUNC() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isUNC) !== void 0 ? __privateGet(this, _isUNC) : __privateSet(this, _isUNC, __privateGet(this, _platform) === "win32" && __privateGet(this, _index) === 0 && pl[0] === "" && pl[1] === "" && typeof pl[2] === "string" && !!pl[2] && typeof pl[3] === "string" && !!pl[3]);
-  }
-  // pattern like C:/...
-  // split = ['C:', ...]
-  // XXX: would be nice to handle patterns like `c:*` to test the cwd
-  // in c: for *, but I don't know of a way to even figure out what that
-  // cwd is without actually chdir'ing into it?
-  /**
-   * True if the pattern starts with a drive letter on Windows
-   */
-  isDrive() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isDrive) !== void 0 ? __privateGet(this, _isDrive) : __privateSet(this, _isDrive, __privateGet(this, _platform) === "win32" && __privateGet(this, _index) === 0 && this.length > 1 && typeof pl[0] === "string" && /^[a-z]:$/i.test(pl[0]));
-  }
-  // pattern = '/' or '/...' or '/x/...'
-  // split = ['', ''] or ['', ...] or ['', 'x', ...]
-  // Drive and UNC both considered absolute on windows
-  /**
-   * True if the pattern is rooted on an absolute path
-   */
-  isAbsolute() {
-    const pl = __privateGet(this, _patternList);
-    return __privateGet(this, _isAbsolute) !== void 0 ? __privateGet(this, _isAbsolute) : __privateSet(this, _isAbsolute, pl[0] === "" && pl.length > 1 || this.isDrive() || this.isUNC());
-  }
-  /**
-   * consume the root of the pattern, and return it
-   */
-  root() {
-    const p = __privateGet(this, _patternList)[0];
-    return typeof p === "string" && this.isAbsolute() && __privateGet(this, _index) === 0 ? p : "";
-  }
-  /**
-   * Check to see if the current globstar pattern is allowed to follow
-   * a symbolic link.
-   */
-  checkFollowGlobstar() {
-    return !(__privateGet(this, _index) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar));
-  }
-  /**
-   * Mark that the current globstar pattern is following a symbolic link
-   */
-  markFollowGlobstar() {
-    if (__privateGet(this, _index) === 0 || !this.isGlobstar() || !__privateGet(this, _followGlobstar))
-      return false;
-    __privateSet(this, _followGlobstar, false);
-    return true;
-  }
-};
-_patternList = new WeakMap();
-_globList = new WeakMap();
-_index = new WeakMap();
-_platform = new WeakMap();
-_rest = new WeakMap();
-_globString = new WeakMap();
-_isDrive = new WeakMap();
-_isUNC = new WeakMap();
-_isAbsolute = new WeakMap();
-_followGlobstar = new WeakMap();
-var Pattern = _Pattern;
-
-// node_modules/glob/dist/esm/ignore.js
-var defaultPlatform2 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
-var Ignore = class {
-  constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform2 }) {
-    __publicField(this, "relative");
-    __publicField(this, "relativeChildren");
-    __publicField(this, "absolute");
-    __publicField(this, "absoluteChildren");
-    __publicField(this, "platform");
-    __publicField(this, "mmopts");
-    this.relative = [];
-    this.absolute = [];
-    this.relativeChildren = [];
-    this.absoluteChildren = [];
-    this.platform = platform;
-    this.mmopts = {
-      dot: true,
-      nobrace,
-      nocase,
-      noext,
-      noglobstar,
-      optimizationLevel: 2,
-      platform,
-      nocomment: true,
-      nonegate: true
-    };
-    for (const ign of ignored)
-      this.add(ign);
-  }
-  add(ign) {
-    const mm = new Minimatch(ign, this.mmopts);
-    for (let i = 0; i < mm.set.length; i++) {
-      const parsed = mm.set[i];
-      const globParts = mm.globParts[i];
-      if (!parsed || !globParts) {
-        throw new Error("invalid pattern object");
-      }
-      while (parsed[0] === "." && globParts[0] === ".") {
-        parsed.shift();
-        globParts.shift();
-      }
-      const p = new Pattern(parsed, globParts, 0, this.platform);
-      const m = new Minimatch(p.globString(), this.mmopts);
-      const children = globParts[globParts.length - 1] === "**";
-      const absolute = p.isAbsolute();
-      if (absolute)
-        this.absolute.push(m);
-      else
-        this.relative.push(m);
-      if (children) {
-        if (absolute)
-          this.absoluteChildren.push(m);
-        else
-          this.relativeChildren.push(m);
-      }
-    }
-  }
-  ignored(p) {
-    const fullpath = p.fullpath();
-    const fullpaths = `${fullpath}/`;
-    const relative = p.relative() || ".";
-    const relatives = `${relative}/`;
-    for (const m of this.relative) {
-      if (m.match(relative) || m.match(relatives))
-        return true;
-    }
-    for (const m of this.absolute) {
-      if (m.match(fullpath) || m.match(fullpaths))
-        return true;
-    }
-    return false;
-  }
-  childrenIgnored(p) {
-    const fullpath = p.fullpath() + "/";
-    const relative = (p.relative() || ".") + "/";
-    for (const m of this.relativeChildren) {
-      if (m.match(relative))
-        return true;
-    }
-    for (const m of this.absoluteChildren) {
-      if (m.match(fullpath))
-        return true;
-    }
-    return false;
-  }
-};
-
-// node_modules/glob/dist/esm/processor.js
-var HasWalkedCache = class _HasWalkedCache {
-  constructor(store = /* @__PURE__ */ new Map()) {
-    __publicField(this, "store");
-    this.store = store;
-  }
-  copy() {
-    return new _HasWalkedCache(new Map(this.store));
-  }
-  hasWalked(target, pattern) {
-    return this.store.get(target.fullpath())?.has(pattern.globString());
-  }
-  storeWalked(target, pattern) {
-    const fullpath = target.fullpath();
-    const cached = this.store.get(fullpath);
-    if (cached)
-      cached.add(pattern.globString());
-    else
-      this.store.set(fullpath, /* @__PURE__ */ new Set([pattern.globString()]));
-  }
-};
-var MatchRecord = class {
-  constructor() {
-    __publicField(this, "store", /* @__PURE__ */ new Map());
-  }
-  add(target, absolute, ifDir) {
-    const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0);
-    const current = this.store.get(target);
-    this.store.set(target, current === void 0 ? n : n & current);
-  }
-  // match, absolute, ifdir
-  entries() {
-    return [...this.store.entries()].map(([path4, n]) => [
-      path4,
-      !!(n & 2),
-      !!(n & 1)
-    ]);
-  }
-};
-var SubWalks = class {
-  constructor() {
-    __publicField(this, "store", /* @__PURE__ */ new Map());
-  }
-  add(target, pattern) {
-    if (!target.canReaddir()) {
-      return;
-    }
-    const subs = this.store.get(target);
-    if (subs) {
-      if (!subs.find((p) => p.globString() === pattern.globString())) {
-        subs.push(pattern);
-      }
-    } else
-      this.store.set(target, [pattern]);
-  }
-  get(target) {
-    const subs = this.store.get(target);
-    if (!subs) {
-      throw new Error("attempting to walk unknown path");
-    }
-    return subs;
-  }
-  entries() {
-    return this.keys().map((k) => [k, this.store.get(k)]);
-  }
-  keys() {
-    return [...this.store.keys()].filter((t) => t.canReaddir());
-  }
-};
-var Processor = class _Processor {
-  constructor(opts, hasWalkedCache) {
-    __publicField(this, "hasWalkedCache");
-    __publicField(this, "matches", new MatchRecord());
-    __publicField(this, "subwalks", new SubWalks());
-    __publicField(this, "patterns");
-    __publicField(this, "follow");
-    __publicField(this, "dot");
-    __publicField(this, "opts");
-    this.opts = opts;
-    this.follow = !!opts.follow;
-    this.dot = !!opts.dot;
-    this.hasWalkedCache = hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache();
-  }
-  processPatterns(target, patterns) {
-    this.patterns = patterns;
-    const processingSet = patterns.map((p) => [target, p]);
-    for (let [t, pattern] of processingSet) {
-      this.hasWalkedCache.storeWalked(t, pattern);
-      const root = pattern.root();
-      const absolute = pattern.isAbsolute() && this.opts.absolute !== false;
-      if (root) {
-        t = t.resolve(root === "/" && this.opts.root !== void 0 ? this.opts.root : root);
-        const rest2 = pattern.rest();
-        if (!rest2) {
-          this.matches.add(t, true, false);
-          continue;
-        } else {
-          pattern = rest2;
-        }
-      }
-      if (t.isENOENT())
-        continue;
-      let p;
-      let rest;
-      let changed = false;
-      while (typeof (p = pattern.pattern()) === "string" && (rest = pattern.rest())) {
-        const c = t.resolve(p);
-        t = c;
-        pattern = rest;
-        changed = true;
-      }
-      p = pattern.pattern();
-      rest = pattern.rest();
-      if (changed) {
-        if (this.hasWalkedCache.hasWalked(t, pattern))
-          continue;
-        this.hasWalkedCache.storeWalked(t, pattern);
-      }
-      if (typeof p === "string") {
-        const ifDir = p === ".." || p === "" || p === ".";
-        this.matches.add(t.resolve(p), absolute, ifDir);
-        continue;
-      } else if (p === GLOBSTAR) {
-        if (!t.isSymbolicLink() || this.follow || pattern.checkFollowGlobstar()) {
-          this.subwalks.add(t, pattern);
-        }
-        const rp = rest?.pattern();
-        const rrest = rest?.rest();
-        if (!rest || (rp === "" || rp === ".") && !rrest) {
-          this.matches.add(t, absolute, rp === "" || rp === ".");
-        } else {
-          if (rp === "..") {
-            const tp = t.parent || t;
-            if (!rrest)
-              this.matches.add(tp, absolute, true);
-            else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {
-              this.subwalks.add(tp, rrest);
-            }
-          }
-        }
-      } else if (p instanceof RegExp) {
-        this.subwalks.add(t, pattern);
-      }
-    }
-    return this;
-  }
-  subwalkTargets() {
-    return this.subwalks.keys();
-  }
-  child() {
-    return new _Processor(this.opts, this.hasWalkedCache);
-  }
-  // return a new Processor containing the subwalks for each
-  // child entry, and a set of matches, and
-  // a hasWalkedCache that's a copy of this one
-  // then we're going to call
-  filterEntries(parent, entries) {
-    const patterns = this.subwalks.get(parent);
-    const results = this.child();
-    for (const e of entries) {
-      for (const pattern of patterns) {
-        const absolute = pattern.isAbsolute();
-        const p = pattern.pattern();
-        const rest = pattern.rest();
-        if (p === GLOBSTAR) {
-          results.testGlobstar(e, pattern, rest, absolute);
-        } else if (p instanceof RegExp) {
-          results.testRegExp(e, p, rest, absolute);
-        } else {
-          results.testString(e, p, rest, absolute);
-        }
-      }
-    }
-    return results;
-  }
-  testGlobstar(e, pattern, rest, absolute) {
-    if (this.dot || !e.name.startsWith(".")) {
-      if (!pattern.hasMore()) {
-        this.matches.add(e, absolute, false);
-      }
-      if (e.canReaddir()) {
-        if (this.follow || !e.isSymbolicLink()) {
-          this.subwalks.add(e, pattern);
-        } else if (e.isSymbolicLink()) {
-          if (rest && pattern.checkFollowGlobstar()) {
-            this.subwalks.add(e, rest);
-          } else if (pattern.markFollowGlobstar()) {
-            this.subwalks.add(e, pattern);
-          }
-        }
-      }
-    }
-    if (rest) {
-      const rp = rest.pattern();
-      if (typeof rp === "string" && // dots and empty were handled already
-      rp !== ".." && rp !== "" && rp !== ".") {
-        this.testString(e, rp, rest.rest(), absolute);
-      } else if (rp === "..") {
-        const ep = e.parent || e;
-        this.subwalks.add(ep, rest);
-      } else if (rp instanceof RegExp) {
-        this.testRegExp(e, rp, rest.rest(), absolute);
-      }
-    }
-  }
-  testRegExp(e, p, rest, absolute) {
-    if (!p.test(e.name))
-      return;
-    if (!rest) {
-      this.matches.add(e, absolute, false);
-    } else {
-      this.subwalks.add(e, rest);
-    }
-  }
-  testString(e, p, rest, absolute) {
-    if (!e.isNamed(p))
-      return;
-    if (!rest) {
-      this.matches.add(e, absolute, false);
-    } else {
-      this.subwalks.add(e, rest);
-    }
-  }
-};
-
-// node_modules/glob/dist/esm/walker.js
-var makeIgnore = (ignore, opts) => typeof ignore === "string" ? new Ignore([ignore], opts) : Array.isArray(ignore) ? new Ignore(ignore, opts) : ignore;
-var _onResume, _ignore, _sep, _GlobUtil_instances, ignored_fn, childrenIgnored_fn;
-var GlobUtil = class {
-  constructor(patterns, path4, opts) {
-    __privateAdd(this, _GlobUtil_instances);
-    __publicField(this, "path");
-    __publicField(this, "patterns");
-    __publicField(this, "opts");
-    __publicField(this, "seen", /* @__PURE__ */ new Set());
-    __publicField(this, "paused", false);
-    __publicField(this, "aborted", false);
-    __privateAdd(this, _onResume, []);
-    __privateAdd(this, _ignore);
-    __privateAdd(this, _sep);
-    __publicField(this, "signal");
-    __publicField(this, "maxDepth");
-    __publicField(this, "includeChildMatches");
-    this.patterns = patterns;
-    this.path = path4;
-    this.opts = opts;
-    __privateSet(this, _sep, !opts.posix && opts.platform === "win32" ? "\\" : "/");
-    this.includeChildMatches = opts.includeChildMatches !== false;
-    if (opts.ignore || !this.includeChildMatches) {
-      __privateSet(this, _ignore, makeIgnore(opts.ignore ?? [], opts));
-      if (!this.includeChildMatches && typeof __privateGet(this, _ignore).add !== "function") {
-        const m = "cannot ignore child matches, ignore lacks add() method.";
-        throw new Error(m);
-      }
-    }
-    this.maxDepth = opts.maxDepth || Infinity;
-    if (opts.signal) {
-      this.signal = opts.signal;
-      this.signal.addEventListener("abort", () => {
-        __privateGet(this, _onResume).length = 0;
-      });
-    }
-  }
-  // backpressure mechanism
-  pause() {
-    this.paused = true;
-  }
-  resume() {
-    if (this.signal?.aborted)
-      return;
-    this.paused = false;
-    let fn = void 0;
-    while (!this.paused && (fn = __privateGet(this, _onResume).shift())) {
-      fn();
-    }
-  }
-  onResume(fn) {
-    if (this.signal?.aborted)
-      return;
-    if (!this.paused) {
-      fn();
-    } else {
-      __privateGet(this, _onResume).push(fn);
-    }
-  }
-  // do the requisite realpath/stat checking, and return the path
-  // to add or undefined to filter it out.
-  async matchCheck(e, ifDir) {
-    if (ifDir && this.opts.nodir)
-      return void 0;
-    let rpc;
-    if (this.opts.realpath) {
-      rpc = e.realpathCached() || await e.realpath();
-      if (!rpc)
-        return void 0;
-      e = rpc;
-    }
-    const needStat = e.isUnknown() || this.opts.stat;
-    const s = needStat ? await e.lstat() : e;
-    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {
-      const target = await s.realpath();
-      if (target && (target.isUnknown() || this.opts.stat)) {
-        await target.lstat();
-      }
-    }
-    return this.matchCheckTest(s, ifDir);
-  }
-  matchCheckTest(e, ifDir) {
-    return e && (this.maxDepth === Infinity || e.depth() <= this.maxDepth) && (!ifDir || e.canReaddir()) && (!this.opts.nodir || !e.isDirectory()) && (!this.opts.nodir || !this.opts.follow || !e.isSymbolicLink() || !e.realpathCached()?.isDirectory()) && !__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e) ? e : void 0;
-  }
-  matchCheckSync(e, ifDir) {
-    if (ifDir && this.opts.nodir)
-      return void 0;
-    let rpc;
-    if (this.opts.realpath) {
-      rpc = e.realpathCached() || e.realpathSync();
-      if (!rpc)
-        return void 0;
-      e = rpc;
-    }
-    const needStat = e.isUnknown() || this.opts.stat;
-    const s = needStat ? e.lstatSync() : e;
-    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {
-      const target = s.realpathSync();
-      if (target && (target?.isUnknown() || this.opts.stat)) {
-        target.lstatSync();
-      }
-    }
-    return this.matchCheckTest(s, ifDir);
-  }
-  matchFinish(e, absolute) {
-    if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, e))
-      return;
-    if (!this.includeChildMatches && __privateGet(this, _ignore)?.add) {
-      const ign = `${e.relativePosix()}/**`;
-      __privateGet(this, _ignore).add(ign);
-    }
-    const abs = this.opts.absolute === void 0 ? absolute : this.opts.absolute;
-    this.seen.add(e);
-    const mark = this.opts.mark && e.isDirectory() ? __privateGet(this, _sep) : "";
-    if (this.opts.withFileTypes) {
-      this.matchEmit(e);
-    } else if (abs) {
-      const abs2 = this.opts.posix ? e.fullpathPosix() : e.fullpath();
-      this.matchEmit(abs2 + mark);
-    } else {
-      const rel = this.opts.posix ? e.relativePosix() : e.relative();
-      const pre = this.opts.dotRelative && !rel.startsWith(".." + __privateGet(this, _sep)) ? "." + __privateGet(this, _sep) : "";
-      this.matchEmit(!rel ? "." + mark : pre + rel + mark);
-    }
-  }
-  async match(e, absolute, ifDir) {
-    const p = await this.matchCheck(e, ifDir);
-    if (p)
-      this.matchFinish(p, absolute);
-  }
-  matchSync(e, absolute, ifDir) {
-    const p = this.matchCheckSync(e, ifDir);
-    if (p)
-      this.matchFinish(p, absolute);
-  }
-  walkCB(target, patterns, cb) {
-    if (this.signal?.aborted)
-      cb();
-    this.walkCB2(target, patterns, new Processor(this.opts), cb);
-  }
-  walkCB2(target, patterns, processor, cb) {
-    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
-      return cb();
-    if (this.signal?.aborted)
-      cb();
-    if (this.paused) {
-      this.onResume(() => this.walkCB2(target, patterns, processor, cb));
-      return;
-    }
-    processor.processPatterns(target, patterns);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      tasks++;
-      this.match(m, absolute, ifDir).then(() => next());
-    }
-    for (const t of processor.subwalkTargets()) {
-      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
-        continue;
-      }
-      tasks++;
-      const childrenCached = t.readdirCached();
-      if (t.calledReaddir())
-        this.walkCB3(t, childrenCached, processor, next);
-      else {
-        t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true);
-      }
-    }
-    next();
-  }
-  walkCB3(target, entries, processor, cb) {
-    processor = processor.filterEntries(target, entries);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      tasks++;
-      this.match(m, absolute, ifDir).then(() => next());
-    }
-    for (const [target2, patterns] of processor.subwalks.entries()) {
-      tasks++;
-      this.walkCB2(target2, patterns, processor.child(), next);
-    }
-    next();
-  }
-  walkCBSync(target, patterns, cb) {
-    if (this.signal?.aborted)
-      cb();
-    this.walkCB2Sync(target, patterns, new Processor(this.opts), cb);
-  }
-  walkCB2Sync(target, patterns, processor, cb) {
-    if (__privateMethod(this, _GlobUtil_instances, childrenIgnored_fn).call(this, target))
-      return cb();
-    if (this.signal?.aborted)
-      cb();
-    if (this.paused) {
-      this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb));
-      return;
-    }
-    processor.processPatterns(target, patterns);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      this.matchSync(m, absolute, ifDir);
-    }
-    for (const t of processor.subwalkTargets()) {
-      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
-        continue;
-      }
-      tasks++;
-      const children = t.readdirSync();
-      this.walkCB3Sync(t, children, processor, next);
-    }
-    next();
-  }
-  walkCB3Sync(target, entries, processor, cb) {
-    processor = processor.filterEntries(target, entries);
-    let tasks = 1;
-    const next = () => {
-      if (--tasks === 0)
-        cb();
-    };
-    for (const [m, absolute, ifDir] of processor.matches.entries()) {
-      if (__privateMethod(this, _GlobUtil_instances, ignored_fn).call(this, m))
-        continue;
-      this.matchSync(m, absolute, ifDir);
-    }
-    for (const [target2, patterns] of processor.subwalks.entries()) {
-      tasks++;
-      this.walkCB2Sync(target2, patterns, processor.child(), next);
-    }
-    next();
-  }
-};
-_onResume = new WeakMap();
-_ignore = new WeakMap();
-_sep = new WeakMap();
-_GlobUtil_instances = new WeakSet();
-ignored_fn = function(path4) {
-  return this.seen.has(path4) || !!__privateGet(this, _ignore)?.ignored?.(path4);
-};
-childrenIgnored_fn = function(path4) {
-  return !!__privateGet(this, _ignore)?.childrenIgnored?.(path4);
-};
-var GlobWalker = class extends GlobUtil {
-  constructor(patterns, path4, opts) {
-    super(patterns, path4, opts);
-    __publicField(this, "matches", /* @__PURE__ */ new Set());
-  }
-  matchEmit(e) {
-    this.matches.add(e);
-  }
-  async walk() {
-    if (this.signal?.aborted)
-      throw this.signal.reason;
-    if (this.path.isUnknown()) {
-      await this.path.lstat();
-    }
-    await new Promise((res, rej) => {
-      this.walkCB(this.path, this.patterns, () => {
-        if (this.signal?.aborted) {
-          rej(this.signal.reason);
-        } else {
-          res(this.matches);
-        }
-      });
-    });
-    return this.matches;
-  }
-  walkSync() {
-    if (this.signal?.aborted)
-      throw this.signal.reason;
-    if (this.path.isUnknown()) {
-      this.path.lstatSync();
-    }
-    this.walkCBSync(this.path, this.patterns, () => {
-      if (this.signal?.aborted)
-        throw this.signal.reason;
-    });
-    return this.matches;
-  }
-};
-var GlobStream = class extends GlobUtil {
-  constructor(patterns, path4, opts) {
-    super(patterns, path4, opts);
-    __publicField(this, "results");
-    this.results = new Minipass({
-      signal: this.signal,
-      objectMode: true
-    });
-    this.results.on("drain", () => this.resume());
-    this.results.on("resume", () => this.resume());
-  }
-  matchEmit(e) {
-    this.results.write(e);
-    if (!this.results.flowing)
-      this.pause();
-  }
-  stream() {
-    const target = this.path;
-    if (target.isUnknown()) {
-      target.lstat().then(() => {
-        this.walkCB(target, this.patterns, () => this.results.end());
-      });
-    } else {
-      this.walkCB(target, this.patterns, () => this.results.end());
-    }
-    return this.results;
-  }
-  streamSync() {
-    if (this.path.isUnknown()) {
-      this.path.lstatSync();
-    }
-    this.walkCBSync(this.path, this.patterns, () => this.results.end());
-    return this.results;
-  }
-};
-
-// node_modules/glob/dist/esm/glob.js
-var defaultPlatform3 = typeof process === "object" && process && typeof process.platform === "string" ? process.platform : "linux";
-var Glob = class {
-  /**
-   * All options are stored as properties on the `Glob` object.
-   *
-   * See {@link GlobOptions} for full options descriptions.
-   *
-   * Note that a previous `Glob` object can be passed as the
-   * `GlobOptions` to another `Glob` instantiation to re-use settings
-   * and caches with a new pattern.
-   *
-   * Traversal functions can be called multiple times to run the walk
-   * again.
-   */
-  constructor(pattern, opts) {
-    __publicField(this, "absolute");
-    __publicField(this, "cwd");
-    __publicField(this, "root");
-    __publicField(this, "dot");
-    __publicField(this, "dotRelative");
-    __publicField(this, "follow");
-    __publicField(this, "ignore");
-    __publicField(this, "magicalBraces");
-    __publicField(this, "mark");
-    __publicField(this, "matchBase");
-    __publicField(this, "maxDepth");
-    __publicField(this, "nobrace");
-    __publicField(this, "nocase");
-    __publicField(this, "nodir");
-    __publicField(this, "noext");
-    __publicField(this, "noglobstar");
-    __publicField(this, "pattern");
-    __publicField(this, "platform");
-    __publicField(this, "realpath");
-    __publicField(this, "scurry");
-    __publicField(this, "stat");
-    __publicField(this, "signal");
-    __publicField(this, "windowsPathsNoEscape");
-    __publicField(this, "withFileTypes");
-    __publicField(this, "includeChildMatches");
-    /**
-     * The options provided to the constructor.
-     */
-    __publicField(this, "opts");
-    /**
-     * An array of parsed immutable {@link Pattern} objects.
-     */
-    __publicField(this, "patterns");
-    if (!opts)
-      throw new TypeError("glob options required");
-    this.withFileTypes = !!opts.withFileTypes;
-    this.signal = opts.signal;
-    this.follow = !!opts.follow;
-    this.dot = !!opts.dot;
-    this.dotRelative = !!opts.dotRelative;
-    this.nodir = !!opts.nodir;
-    this.mark = !!opts.mark;
-    if (!opts.cwd) {
-      this.cwd = "";
-    } else if (opts.cwd instanceof URL || opts.cwd.startsWith("file://")) {
-      opts.cwd = fileURLToPath2(opts.cwd);
-    }
-    this.cwd = opts.cwd || "";
-    this.root = opts.root;
-    this.magicalBraces = !!opts.magicalBraces;
-    this.nobrace = !!opts.nobrace;
-    this.noext = !!opts.noext;
-    this.realpath = !!opts.realpath;
-    this.absolute = opts.absolute;
-    this.includeChildMatches = opts.includeChildMatches !== false;
-    this.noglobstar = !!opts.noglobstar;
-    this.matchBase = !!opts.matchBase;
-    this.maxDepth = typeof opts.maxDepth === "number" ? opts.maxDepth : Infinity;
-    this.stat = !!opts.stat;
-    this.ignore = opts.ignore;
-    if (this.withFileTypes && this.absolute !== void 0) {
-      throw new Error("cannot set absolute and withFileTypes:true");
-    }
-    if (typeof pattern === "string") {
-      pattern = [pattern];
-    }
-    this.windowsPathsNoEscape = !!opts.windowsPathsNoEscape || opts.allowWindowsEscape === false;
-    if (this.windowsPathsNoEscape) {
-      pattern = pattern.map((p) => p.replace(/\\/g, "/"));
-    }
-    if (this.matchBase) {
-      if (opts.noglobstar) {
-        throw new TypeError("base matching requires globstar");
-      }
-      pattern = pattern.map((p) => p.includes("/") ? p : `./**/${p}`);
-    }
-    this.pattern = pattern;
-    this.platform = opts.platform || defaultPlatform3;
-    this.opts = { ...opts, platform: this.platform };
-    if (opts.scurry) {
-      this.scurry = opts.scurry;
-      if (opts.nocase !== void 0 && opts.nocase !== opts.scurry.nocase) {
-        throw new Error("nocase option contradicts provided scurry option");
-      }
-    } else {
-      const Scurry = opts.platform === "win32" ? PathScurryWin32 : opts.platform === "darwin" ? PathScurryDarwin : opts.platform ? PathScurryPosix : PathScurry;
-      this.scurry = new Scurry(this.cwd, {
-        nocase: opts.nocase,
-        fs: opts.fs
-      });
-    }
-    this.nocase = this.scurry.nocase;
-    const nocaseMagicOnly = this.platform === "darwin" || this.platform === "win32";
-    const mmo = {
-      // default nocase based on platform
-      ...opts,
-      dot: this.dot,
-      matchBase: this.matchBase,
-      nobrace: this.nobrace,
-      nocase: this.nocase,
-      nocaseMagicOnly,
-      nocomment: true,
-      noext: this.noext,
-      nonegate: true,
-      optimizationLevel: 2,
-      platform: this.platform,
-      windowsPathsNoEscape: this.windowsPathsNoEscape,
-      debug: !!this.opts.debug
-    };
-    const mms = this.pattern.map((p) => new Minimatch(p, mmo));
-    const [matchSet, globParts] = mms.reduce((set, m) => {
-      set[0].push(...m.set);
-      set[1].push(...m.globParts);
-      return set;
-    }, [[], []]);
-    this.patterns = matchSet.map((set, i) => {
-      const g = globParts[i];
-      if (!g)
-        throw new Error("invalid pattern object");
-      return new Pattern(set, g, 0, this.platform);
-    });
-  }
-  async walk() {
-    return [
-      ...await new GlobWalker(this.patterns, this.scurry.cwd, {
-        ...this.opts,
-        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-        platform: this.platform,
-        nocase: this.nocase,
-        includeChildMatches: this.includeChildMatches
-      }).walk()
-    ];
-  }
-  walkSync() {
-    return [
-      ...new GlobWalker(this.patterns, this.scurry.cwd, {
-        ...this.opts,
-        maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-        platform: this.platform,
-        nocase: this.nocase,
-        includeChildMatches: this.includeChildMatches
-      }).walkSync()
-    ];
-  }
-  stream() {
-    return new GlobStream(this.patterns, this.scurry.cwd, {
-      ...this.opts,
-      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-      platform: this.platform,
-      nocase: this.nocase,
-      includeChildMatches: this.includeChildMatches
-    }).stream();
-  }
-  streamSync() {
-    return new GlobStream(this.patterns, this.scurry.cwd, {
-      ...this.opts,
-      maxDepth: this.maxDepth !== Infinity ? this.maxDepth + this.scurry.cwd.depth() : Infinity,
-      platform: this.platform,
-      nocase: this.nocase,
-      includeChildMatches: this.includeChildMatches
-    }).streamSync();
-  }
-  /**
-   * Default sync iteration function. Returns a Generator that
-   * iterates over the results.
-   */
-  iterateSync() {
-    return this.streamSync()[Symbol.iterator]();
-  }
-  [Symbol.iterator]() {
-    return this.iterateSync();
-  }
-  /**
-   * Default async iteration function. Returns an AsyncGenerator that
-   * iterates over the results.
-   */
-  iterate() {
-    return this.stream()[Symbol.asyncIterator]();
-  }
-  [Symbol.asyncIterator]() {
-    return this.iterate();
-  }
-};
-
-// node_modules/glob/dist/esm/has-magic.js
-var hasMagic = (pattern, options = {}) => {
-  if (!Array.isArray(pattern)) {
-    pattern = [pattern];
-  }
-  for (const p of pattern) {
-    if (new Minimatch(p, options).hasMagic())
-      return true;
-  }
-  return false;
-};
-
-// node_modules/glob/dist/esm/index.js
-function globStreamSync(pattern, options = {}) {
-  return new Glob(pattern, options).streamSync();
-}
-function globStream(pattern, options = {}) {
-  return new Glob(pattern, options).stream();
-}
-function globSync(pattern, options = {}) {
-  return new Glob(pattern, options).walkSync();
-}
-async function glob_(pattern, options = {}) {
-  return new Glob(pattern, options).walk();
-}
-function globIterateSync(pattern, options = {}) {
-  return new Glob(pattern, options).iterateSync();
-}
-function globIterate(pattern, options = {}) {
-  return new Glob(pattern, options).iterate();
-}
-var streamSync = globStreamSync;
-var stream = Object.assign(globStream, { sync: globStreamSync });
-var iterateSync = globIterateSync;
-var iterate = Object.assign(globIterate, {
-  sync: globIterateSync
-});
-var sync = Object.assign(globSync, {
-  stream: globStreamSync,
-  iterate: globIterateSync
-});
-var glob = Object.assign(glob_, {
-  glob: glob_,
-  globSync,
-  sync,
-  globStream,
-  stream,
-  globStreamSync,
-  streamSync,
-  globIterate,
-  iterate,
-  globIterateSync,
-  iterateSync,
-  Glob,
-  hasMagic,
-  escape,
-  unescape
-});
-glob.glob = glob;
-
-// node_modules/rimraf/dist/esm/opt-arg.js
-var typeOrUndef = (val, t) => typeof val === "undefined" || typeof val === t;
-var isRimrafOptions = (o) => !!o && typeof o === "object" && typeOrUndef(o.preserveRoot, "boolean") && typeOrUndef(o.tmp, "string") && typeOrUndef(o.maxRetries, "number") && typeOrUndef(o.retryDelay, "number") && typeOrUndef(o.backoff, "number") && typeOrUndef(o.maxBackoff, "number") && (typeOrUndef(o.glob, "boolean") || o.glob && typeof o.glob === "object") && typeOrUndef(o.filter, "function");
-var assertRimrafOptions = (o) => {
-  if (!isRimrafOptions(o)) {
-    throw new Error("invalid rimraf options");
-  }
-};
-var optArgT = (opt) => {
-  assertRimrafOptions(opt);
-  const { glob: glob2, ...options } = opt;
-  if (!glob2) {
-    return options;
-  }
-  const globOpt = glob2 === true ? opt.signal ? { signal: opt.signal } : {} : opt.signal ? {
-    signal: opt.signal,
-    ...glob2
-  } : glob2;
-  return {
-    ...options,
-    glob: {
-      ...globOpt,
-      // always get absolute paths from glob, to ensure
-      // that we are referencing the correct thing.
-      absolute: true,
-      withFileTypes: false
-    }
-  };
-};
-var optArg = (opt = {}) => optArgT(opt);
-var optArgSync = (opt = {}) => optArgT(opt);
-
-// node_modules/rimraf/dist/esm/path-arg.js
-import { parse, resolve } from "path";
-import { inspect } from "util";
-
-// node_modules/rimraf/dist/esm/platform.js
-var platform_default = process.env.__TESTING_RIMRAF_PLATFORM__ || process.platform;
-
-// node_modules/rimraf/dist/esm/path-arg.js
-var pathArg = (path4, opt = {}) => {
-  const type = typeof path4;
-  if (type !== "string") {
-    const ctor = path4 && type === "object" && path4.constructor;
-    const received = ctor && ctor.name ? `an instance of ${ctor.name}` : type === "object" ? inspect(path4) : `type ${type} ${path4}`;
-    const msg = `The "path" argument must be of type string. Received ${received}`;
-    throw Object.assign(new TypeError(msg), {
-      path: path4,
-      code: "ERR_INVALID_ARG_TYPE"
-    });
-  }
-  if (/\0/.test(path4)) {
-    const msg = "path must be a string without null bytes";
-    throw Object.assign(new TypeError(msg), {
-      path: path4,
-      code: "ERR_INVALID_ARG_VALUE"
-    });
-  }
-  path4 = resolve(path4);
-  const { root } = parse(path4);
-  if (path4 === root && opt.preserveRoot !== false) {
-    const msg = "refusing to remove root directory without preserveRoot:false";
-    throw Object.assign(new Error(msg), {
-      path: path4,
-      code: "ERR_PRESERVE_ROOT"
-    });
-  }
-  if (platform_default === "win32") {
-    const badWinChars = /[*|"<>?:]/;
-    const { root: root2 } = parse(path4);
-    if (badWinChars.test(path4.substring(root2.length))) {
-      throw Object.assign(new Error("Illegal characters in path."), {
-        path: path4,
-        code: "EINVAL"
-      });
-    }
-  }
-  return path4;
-};
-var path_arg_default = pathArg;
-
-// node_modules/rimraf/dist/esm/fs.js
-import fs2 from "fs";
-import { chmodSync, mkdirSync, renameSync, rmdirSync, rmSync, statSync, lstatSync as lstatSync2, unlinkSync } from "fs";
-import { readdirSync as rdSync } from "fs";
-var readdirSync2 = (path4) => rdSync(path4, { withFileTypes: true });
-var chmod = (path4, mode) => new Promise((res, rej) => fs2.chmod(path4, mode, (er, ...d) => er ? rej(er) : res(...d)));
-var mkdir = (path4, options) => new Promise((res, rej) => fs2.mkdir(path4, options, (er, made) => er ? rej(er) : res(made)));
-var readdir2 = (path4) => new Promise((res, rej) => fs2.readdir(path4, { withFileTypes: true }, (er, data) => er ? rej(er) : res(data)));
-var rename = (oldPath, newPath) => new Promise((res, rej) => fs2.rename(oldPath, newPath, (er, ...d) => er ? rej(er) : res(...d)));
-var rm = (path4, options) => new Promise((res, rej) => fs2.rm(path4, options, (er, ...d) => er ? rej(er) : res(...d)));
-var rmdir = (path4) => new Promise((res, rej) => fs2.rmdir(path4, (er, ...d) => er ? rej(er) : res(...d)));
-var stat = (path4) => new Promise((res, rej) => fs2.stat(path4, (er, data) => er ? rej(er) : res(data)));
-var lstat2 = (path4) => new Promise((res, rej) => fs2.lstat(path4, (er, data) => er ? rej(er) : res(data)));
-var unlink = (path4) => new Promise((res, rej) => fs2.unlink(path4, (er, ...d) => er ? rej(er) : res(...d)));
-var promises = {
-  chmod,
-  mkdir,
-  readdir: readdir2,
-  rename,
-  rm,
-  rmdir,
-  stat,
-  lstat: lstat2,
-  unlink
-};
-
-// node_modules/rimraf/dist/esm/rimraf-posix.js
-import { parse as parse2, resolve as resolve2 } from "path";
-
-// node_modules/rimraf/dist/esm/readdir-or-error.js
-var { readdir: readdir3 } = promises;
-var readdirOrError = (path4) => readdir3(path4).catch((er) => er);
-var readdirOrErrorSync = (path4) => {
-  try {
-    return readdirSync2(path4);
-  } catch (er) {
-    return er;
-  }
-};
-
-// node_modules/rimraf/dist/esm/ignore-enoent.js
-var ignoreENOENT = async (p) => p.catch((er) => {
-  if (er.code !== "ENOENT") {
-    throw er;
-  }
-});
-var ignoreENOENTSync = (fn) => {
-  try {
-    return fn();
-  } catch (er) {
-    if (er?.code !== "ENOENT") {
-      throw er;
-    }
-  }
-};
-
-// node_modules/rimraf/dist/esm/rimraf-posix.js
-var { lstat: lstat3, rmdir: rmdir2, unlink: unlink2 } = promises;
-var rimrafPosix = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafPosixDir(path4, opt, await lstat3(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafPosixSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafPosixDirSync(path4, opt, lstatSync2(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafPosixDir = async (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(unlink2(path4));
-    return true;
-  }
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafPosixDir(resolve2(path4, ent2.name), opt, ent2)))).reduce((a, b) => a && b, true);
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse2(path4).root) {
-    return false;
-  }
-  if (opt.filter && !await opt.filter(path4, ent)) {
-    return false;
-  }
-  await ignoreENOENT(rmdir2(path4));
-  return true;
-};
-var rimrafPosixDirSync = (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => unlinkSync(path4));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const p = resolve2(path4, ent2.name);
-    removedAll = rimrafPosixDirSync(p, opt, ent2) && removedAll;
-  }
-  if (opt.preserveRoot === false && path4 === parse2(path4).root) {
-    return false;
-  }
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.filter && !opt.filter(path4, ent)) {
-    return false;
-  }
-  ignoreENOENTSync(() => rmdirSync(path4));
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-windows.js
-import { parse as parse5, resolve as resolve5 } from "path";
-
-// node_modules/rimraf/dist/esm/fix-eperm.js
-var { chmod: chmod2 } = promises;
-var fixEPERM = (fn) => async (path4) => {
-  try {
-    return await fn(path4);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOENT") {
-      return;
-    }
-    if (fer?.code === "EPERM") {
-      try {
-        await chmod2(path4, 438);
-      } catch (er2) {
-        const fer2 = er2;
-        if (fer2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-      return await fn(path4);
-    }
-    throw er;
-  }
-};
-var fixEPERMSync = (fn) => (path4) => {
-  try {
-    return fn(path4);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOENT") {
-      return;
-    }
-    if (fer?.code === "EPERM") {
-      try {
-        chmodSync(path4, 438);
-      } catch (er2) {
-        const fer2 = er2;
-        if (fer2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-      return fn(path4);
-    }
-    throw er;
-  }
-};
-
-// node_modules/rimraf/dist/esm/retry-busy.js
-var MAXBACKOFF = 200;
-var RATE = 1.2;
-var MAXRETRIES = 10;
-var codes = /* @__PURE__ */ new Set(["EMFILE", "ENFILE", "EBUSY"]);
-var retryBusy = (fn) => {
-  const method = async (path4, opt, backoff = 1, total = 0) => {
-    const mbo = opt.maxBackoff || MAXBACKOFF;
-    const rate = opt.backoff || RATE;
-    const max = opt.maxRetries || MAXRETRIES;
-    let retries = 0;
-    while (true) {
-      try {
-        return await fn(path4);
-      } catch (er) {
-        const fer = er;
-        if (fer?.path === path4 && fer?.code && codes.has(fer.code)) {
-          backoff = Math.ceil(backoff * rate);
-          total = backoff + total;
-          if (total < mbo) {
-            return new Promise((res, rej) => {
-              setTimeout(() => {
-                method(path4, opt, backoff, total).then(res, rej);
-              }, backoff);
-            });
-          }
-          if (retries < max) {
-            retries++;
-            continue;
-          }
-        }
-        throw er;
-      }
-    }
-  };
-  return method;
-};
-var retryBusySync = (fn) => {
-  const method = (path4, opt) => {
-    const max = opt.maxRetries || MAXRETRIES;
-    let retries = 0;
-    while (true) {
-      try {
-        return fn(path4);
-      } catch (er) {
-        const fer = er;
-        if (fer?.path === path4 && fer?.code && codes.has(fer.code) && retries < max) {
-          retries++;
-          continue;
-        }
-        throw er;
-      }
-    }
-  };
-  return method;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-move-remove.js
-import { basename, parse as parse4, resolve as resolve4 } from "path";
-
-// node_modules/rimraf/dist/esm/default-tmp.js
-import { tmpdir } from "os";
-import { parse as parse3, resolve as resolve3 } from "path";
-var { stat: stat2 } = promises;
-var isDirSync = (path4) => {
-  try {
-    return statSync(path4).isDirectory();
-  } catch (er) {
-    return false;
-  }
-};
-var isDir = (path4) => stat2(path4).then((st) => st.isDirectory(), () => false);
-var win32DefaultTmp = async (path4) => {
-  const { root } = parse3(path4);
-  const tmp = tmpdir();
-  const { root: tmpRoot } = parse3(tmp);
-  if (root.toLowerCase() === tmpRoot.toLowerCase()) {
-    return tmp;
-  }
-  const driveTmp = resolve3(root, "/temp");
-  if (await isDir(driveTmp)) {
-    return driveTmp;
-  }
-  return root;
-};
-var win32DefaultTmpSync = (path4) => {
-  const { root } = parse3(path4);
-  const tmp = tmpdir();
-  const { root: tmpRoot } = parse3(tmp);
-  if (root.toLowerCase() === tmpRoot.toLowerCase()) {
-    return tmp;
-  }
-  const driveTmp = resolve3(root, "/temp");
-  if (isDirSync(driveTmp)) {
-    return driveTmp;
-  }
-  return root;
-};
-var posixDefaultTmp = async () => tmpdir();
-var posixDefaultTmpSync = () => tmpdir();
-var defaultTmp = platform_default === "win32" ? win32DefaultTmp : posixDefaultTmp;
-var defaultTmpSync = platform_default === "win32" ? win32DefaultTmpSync : posixDefaultTmpSync;
-
-// node_modules/rimraf/dist/esm/rimraf-move-remove.js
-var { lstat: lstat4, rename: rename2, unlink: unlink3, rmdir: rmdir3, chmod: chmod3 } = promises;
-var uniqueFilename = (path4) => `.${basename(path4)}.${Math.random()}`;
-var unlinkFixEPERM = async (path4) => unlink3(path4).catch((er) => {
-  if (er.code === "EPERM") {
-    return chmod3(path4, 438).then(() => unlink3(path4), (er2) => {
-      if (er2.code === "ENOENT") {
-        return;
-      }
-      throw er;
-    });
-  } else if (er.code === "ENOENT") {
-    return;
-  }
-  throw er;
-});
-var unlinkFixEPERMSync = (path4) => {
-  try {
-    unlinkSync(path4);
-  } catch (er) {
-    if (er?.code === "EPERM") {
-      try {
-        return chmodSync(path4, 438);
-      } catch (er2) {
-        if (er2?.code === "ENOENT") {
-          return;
-        }
-        throw er;
-      }
-    } else if (er?.code === "ENOENT") {
-      return;
-    }
-    throw er;
-  }
-};
-var rimrafMoveRemove = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafMoveRemoveDir(path4, opt, await lstat4(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafMoveRemoveDir = async (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  if (!opt.tmp) {
-    return rimrafMoveRemoveDir(path4, { ...opt, tmp: await defaultTmp(path4) }, ent);
-  }
-  if (path4 === opt.tmp && parse4(path4).root !== path4) {
-    throw new Error("cannot delete temp directory used for deletion");
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(tmpUnlink(path4, opt.tmp, unlinkFixEPERM));
-    return true;
-  }
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafMoveRemoveDir(resolve4(path4, ent2.name), opt, ent2)))).reduce((a, b) => a && b, true);
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse4(path4).root) {
-    return false;
-  }
-  if (opt.filter && !await opt.filter(path4, ent)) {
-    return false;
-  }
-  await ignoreENOENT(tmpUnlink(path4, opt.tmp, rmdir3));
-  return true;
-};
-var tmpUnlink = async (path4, tmp, rm3) => {
-  const tmpFile = resolve4(tmp, uniqueFilename(path4));
-  await rename2(path4, tmpFile);
-  return await rm3(tmpFile);
-};
-var rimrafMoveRemoveSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafMoveRemoveDirSync(path4, opt, lstatSync2(path4));
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafMoveRemoveDirSync = (path4, opt, ent) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  if (!opt.tmp) {
-    return rimrafMoveRemoveDirSync(path4, { ...opt, tmp: defaultTmpSync(path4) }, ent);
-  }
-  const tmp = opt.tmp;
-  if (path4 === opt.tmp && parse4(path4).root !== path4) {
-    throw new Error("cannot delete temp directory used for deletion");
-  }
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => tmpUnlinkSync(path4, tmp, unlinkFixEPERMSync));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const p = resolve4(path4, ent2.name);
-    removedAll = rimrafMoveRemoveDirSync(p, opt, ent2) && removedAll;
-  }
-  if (!removedAll) {
-    return false;
-  }
-  if (opt.preserveRoot === false && path4 === parse4(path4).root) {
-    return false;
-  }
-  if (opt.filter && !opt.filter(path4, ent)) {
-    return false;
-  }
-  ignoreENOENTSync(() => tmpUnlinkSync(path4, tmp, rmdirSync));
-  return true;
-};
-var tmpUnlinkSync = (path4, tmp, rmSync2) => {
-  const tmpFile = resolve4(tmp, uniqueFilename(path4));
-  renameSync(path4, tmpFile);
-  return rmSync2(tmpFile);
-};
-
-// node_modules/rimraf/dist/esm/rimraf-windows.js
-var { unlink: unlink4, rmdir: rmdir4, lstat: lstat5 } = promises;
-var rimrafWindowsFile = retryBusy(fixEPERM(unlink4));
-var rimrafWindowsFileSync = retryBusySync(fixEPERMSync(unlinkSync));
-var rimrafWindowsDirRetry = retryBusy(fixEPERM(rmdir4));
-var rimrafWindowsDirRetrySync = retryBusySync(fixEPERMSync(rmdirSync));
-var rimrafWindowsDirMoveRemoveFallback = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const { filter: filter2, ...options } = opt;
-  try {
-    return await rimrafWindowsDirRetry(path4, options);
-  } catch (er) {
-    if (er?.code === "ENOTEMPTY") {
-      return await rimrafMoveRemove(path4, options);
-    }
-    throw er;
-  }
-};
-var rimrafWindowsDirMoveRemoveFallbackSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const { filter: filter2, ...options } = opt;
-  try {
-    return rimrafWindowsDirRetrySync(path4, options);
-  } catch (er) {
-    const fer = er;
-    if (fer?.code === "ENOTEMPTY") {
-      return rimrafMoveRemoveSync(path4, options);
-    }
-    throw er;
-  }
-};
-var START = Symbol("start");
-var CHILD = Symbol("child");
-var FINISH = Symbol("finish");
-var rimrafWindows = async (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return await rimrafWindowsDir(path4, opt, await lstat5(path4), START);
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafWindowsSync = (path4, opt) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  try {
-    return rimrafWindowsDirSync(path4, opt, lstatSync2(path4), START);
-  } catch (er) {
-    if (er?.code === "ENOENT")
-      return true;
-    throw er;
-  }
-};
-var rimrafWindowsDir = async (path4, opt, ent, state = START) => {
-  if (opt?.signal?.aborted) {
-    throw opt.signal.reason;
-  }
-  const entries = ent.isDirectory() ? await readdirOrError(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(rimrafWindowsFile(path4, opt));
-    return true;
-  }
-  const s = state === START ? CHILD : state;
-  const removedAll = (await Promise.all(entries.map((ent2) => rimrafWindowsDir(resolve5(path4, ent2.name), opt, ent2, s)))).reduce((a, b) => a && b, true);
-  if (state === START) {
-    return rimrafWindowsDir(path4, opt, ent, FINISH);
-  } else if (state === FINISH) {
-    if (opt.preserveRoot === false && path4 === parse5(path4).root) {
-      return false;
-    }
-    if (!removedAll) {
-      return false;
-    }
-    if (opt.filter && !await opt.filter(path4, ent)) {
-      return false;
-    }
-    await ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path4, opt));
-  }
-  return true;
-};
-var rimrafWindowsDirSync = (path4, opt, ent, state = START) => {
-  const entries = ent.isDirectory() ? readdirOrErrorSync(path4) : null;
-  if (!Array.isArray(entries)) {
-    if (entries) {
-      if (entries.code === "ENOENT") {
-        return true;
-      }
-      if (entries.code !== "ENOTDIR") {
-        throw entries;
-      }
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => rimrafWindowsFileSync(path4, opt));
-    return true;
-  }
-  let removedAll = true;
-  for (const ent2 of entries) {
-    const s = state === START ? CHILD : state;
-    const p = resolve5(path4, ent2.name);
-    removedAll = rimrafWindowsDirSync(p, opt, ent2, s) && removedAll;
-  }
-  if (state === START) {
-    return rimrafWindowsDirSync(path4, opt, ent, FINISH);
-  } else if (state === FINISH) {
-    if (opt.preserveRoot === false && path4 === parse5(path4).root) {
-      return false;
-    }
-    if (!removedAll) {
-      return false;
-    }
-    if (opt.filter && !opt.filter(path4, ent)) {
-      return false;
-    }
-    ignoreENOENTSync(() => {
-      rimrafWindowsDirMoveRemoveFallbackSync(path4, opt);
-    });
-  }
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/rimraf-manual.js
-var rimrafManual = platform_default === "win32" ? rimrafWindows : rimrafPosix;
-var rimrafManualSync = platform_default === "win32" ? rimrafWindowsSync : rimrafPosixSync;
-
-// node_modules/rimraf/dist/esm/rimraf-native.js
-var { rm: rm2 } = promises;
-var rimrafNative = async (path4, opt) => {
-  await rm2(path4, {
-    ...opt,
-    force: true,
-    recursive: true
-  });
-  return true;
-};
-var rimrafNativeSync = (path4, opt) => {
-  rmSync(path4, {
-    ...opt,
-    force: true,
-    recursive: true
-  });
-  return true;
-};
-
-// node_modules/rimraf/dist/esm/use-native.js
-var version = process.env.__TESTING_RIMRAF_NODE_VERSION__ || process.version;
-var versArr = version.replace(/^v/, "").split(".");
-var [major = 0, minor = 0] = versArr.map((v) => parseInt(v, 10));
-var hasNative = major > 14 || major === 14 && minor >= 14;
-var useNative = !hasNative || platform_default === "win32" ? () => false : (opt) => !opt?.signal && !opt?.filter;
-var useNativeSync = !hasNative || platform_default === "win32" ? () => false : (opt) => !opt?.signal && !opt?.filter;
-
-// node_modules/rimraf/dist/esm/index.js
-var wrap = (fn) => async (path4, opt) => {
-  const options = optArg(opt);
-  if (options.glob) {
-    path4 = await glob(path4, options.glob);
-  }
-  if (Array.isArray(path4)) {
-    return !!(await Promise.all(path4.map((p) => fn(path_arg_default(p, options), options)))).reduce((a, b) => a && b, true);
-  } else {
-    return !!await fn(path_arg_default(path4, options), options);
-  }
-};
-var wrapSync = (fn) => (path4, opt) => {
-  const options = optArgSync(opt);
-  if (options.glob) {
-    path4 = globSync(path4, options.glob);
-  }
-  if (Array.isArray(path4)) {
-    return !!path4.map((p) => fn(path_arg_default(p, options), options)).reduce((a, b) => a && b, true);
-  } else {
-    return !!fn(path_arg_default(path4, options), options);
-  }
-};
-var nativeSync = wrapSync(rimrafNativeSync);
-var native = Object.assign(wrap(rimrafNative), { sync: nativeSync });
-var manualSync = wrapSync(rimrafManualSync);
-var manual = Object.assign(wrap(rimrafManual), { sync: manualSync });
-var windowsSync = wrapSync(rimrafWindowsSync);
-var windows = Object.assign(wrap(rimrafWindows), { sync: windowsSync });
-var posixSync = wrapSync(rimrafPosixSync);
-var posix2 = Object.assign(wrap(rimrafPosix), { sync: posixSync });
-var moveRemoveSync = wrapSync(rimrafMoveRemoveSync);
-var moveRemove = Object.assign(wrap(rimrafMoveRemove), {
-  sync: moveRemoveSync
-});
-var rimrafSync = wrapSync((path4, opt) => useNativeSync(opt) ? rimrafNativeSync(path4, opt) : rimrafManualSync(path4, opt));
-var rimraf_ = wrap((path4, opt) => useNative(opt) ? rimrafNative(path4, opt) : rimrafManual(path4, opt));
-var rimraf = Object.assign(rimraf_, {
-  rimraf: rimraf_,
-  sync: rimrafSync,
-  rimrafSync,
-  manual,
-  manualSync,
-  native,
-  nativeSync,
-  posix: posix2,
-  posixSync,
-  windows,
-  windowsSync,
-  moveRemove,
-  moveRemoveSync
-});
-rimraf.rimraf = rimraf;
-
-// src/bin/cli.ts
-import { fileURLToPath as fileURLToPath3 } from "url";
-var __filename = fileURLToPath3(import.meta.url);
-var __dirname = path3.dirname(__filename);
-function clearOutputDirectory(snippetOutputDirectory) {
-  if (fs3.existsSync(snippetOutputDirectory)) {
-    rimraf.sync(snippetOutputDirectory);
-  } else {
-    console.log(`Output directory does not exist: ${snippetOutputDirectory}`);
-  }
-}
-async function main() {
-  const args = process.argv.slice(2);
-  config.rootDirectory = path3.resolve(__dirname, "../", config.rootDirectory);
-  config.snippetOutputDirectory = path3.resolve(
-    __dirname,
-    "../",
-    config.snippetOutputDirectory
-  );
-  console.log("Config:", config);
-  if (args.includes("clear")) {
-    clearOutputDirectory(config.snippetOutputDirectory);
-    return;
-  }
-  const structureFlagIndex = args.indexOf("--structure");
-  if (structureFlagIndex !== -1 && args.length > structureFlagIndex + 1) {
-    const structureValue = args[structureFlagIndex + 1];
-    const validStructures = ["flat", "match", "organized", "byLanguage"];
-    if (validStructures.includes(structureValue)) {
-      config.outputDirectoryStructure = structureValue;
-    } else {
-      console.error(
-        `Invalid output directory structure: '${structureValue}'. Valid options are: ${validStructures.join(
-          ", "
-        )}`
-      );
-      process.exit(1);
-    }
-  } else if (structureFlagIndex !== -1) {
-    console.error(
-      "The --structure flag requires a value. Valid options are: flat, match, organized, byLanguage"
-    );
-    process.exit(1);
-  }
-  const extractor = new SnippetExtractor_default(config);
-  extractor.extractSnippets();
-}
-main();
diff --git a/shnip/dist/extract/SnippetExtractor.js b/shnip/dist/extract/SnippetExtractor.js
deleted file mode 100644
index bd7bfc522..000000000
--- a/shnip/dist/extract/SnippetExtractor.js
+++ /dev/null
@@ -1,189 +0,0 @@
-// src/extract/SnippetExtractor.ts
-import path from "path";
-import fs from "fs";
-var SnippetExtractor = class {
-  constructor(config) {
-    this.prependBlocks = {};
-    if (typeof window !== "undefined") {
-      throw new Error(
-        "SnippetExtractor can only be used in a Node.js environment"
-      );
-    }
-    this.config = {
-      ...config,
-      outputDirectoryStructure: config.outputDirectoryStructure || "byLanguage"
-    };
-    this.projectRoot = process.cwd();
-  }
-  gatherSnippetNames(content) {
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(start, startIndex)) !== -1) {
-      endIndex = content.indexOf(end, startIndex);
-      if (endIndex === -1) break;
-      const snippetNameLine = content.substring(startIndex + start.length, content.indexOf("\n", startIndex)).trim();
-      startIndex = endIndex + end.length;
-    }
-  }
-  gatherImports(content) {
-    const { prependStart, prependEnd } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(prependStart, startIndex)) !== -1) {
-      const endOfStartTag = content.indexOf("\n", startIndex);
-      const snippetNamesLine = content.substring(startIndex + prependStart.length, endOfStartTag).trim();
-      const snippetNames = snippetNamesLine.split(/\s+/);
-      endIndex = content.indexOf(prependEnd, endOfStartTag);
-      if (endIndex === -1) {
-        console.log("No matching :prepend-end: found for :prepend-start:");
-        break;
-      }
-      const importBlock = content.substring(endOfStartTag + 1, endIndex).trim();
-      snippetNames.forEach((name) => {
-        if (!this.prependBlocks[name]) {
-          this.prependBlocks[name] = [];
-        }
-        this.prependBlocks[name].push(importBlock);
-      });
-      startIndex = endIndex + prependEnd.length;
-    }
-  }
-  extractSnippetsFromFile(content, filePath) {
-    const snippets = {};
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    const fileExtension = path.extname(filePath);
-    while ((startIndex = content.indexOf(start, endIndex)) !== -1) {
-      const startTagClose = content.indexOf("\n", startIndex);
-      if (startTagClose === -1) {
-        console.log("Snippet start tag not followed by newline. Skipping...");
-        break;
-      }
-      endIndex = content.indexOf(end, startTagClose);
-      if (endIndex === -1) {
-        console.log("No closing tag found for a snippet. Skipping...");
-        break;
-      }
-      const snippetName = content.substring(startIndex + start.length, startTagClose).trim();
-      let snippetContent = content.substring(startTagClose + 1, endIndex);
-      snippetContent = this.normalizeIndentation(snippetContent, fileExtension);
-      if (this.prependBlocks[snippetName]) {
-        const importsToPrepend = this.prependBlocks[snippetName].map((block) => block.trimEnd().replace(/\/\/\s*$/, "")).join("\n");
-        const finalImports = importsToPrepend.length > 0 ? `${importsToPrepend}
-` : "";
-        snippetContent = `${finalImports}${snippetContent}`;
-      }
-      if (snippetName) {
-        snippets[snippetName] = snippetContent;
-      }
-      endIndex += end.length;
-    }
-    return snippets;
-  }
-  normalizeIndentation(snippetContent, fileExtension) {
-    const lines = snippetContent.split("\n");
-    const firstLineIndentation = lines[0].match(/^(\s*)/)?.[0].length || 0;
-    const normalizedLines = lines.map((line) => {
-      const currentIndentation = line.match(/^(\s*)/)?.[0].length || 0;
-      if (currentIndentation >= firstLineIndentation) {
-        return line.substring(firstLineIndentation);
-      }
-      return line;
-    });
-    const commentChar = fileExtension === ".bash" ? "#" : "//";
-    return normalizedLines.map((line) => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), "")).join("\n");
-  }
-  shouldExcludeFile(content) {
-    if (this.config.outputDirectoryStructure === "match") {
-      return this.config.exclude.some(
-        (excludeString) => content.includes(excludeString)
-      );
-    }
-    return false;
-  }
-  processDirectory(directory, relativePath = "") {
-    const absoluteDir = path.resolve(this.projectRoot, directory);
-    const items = fs.readdirSync(absoluteDir);
-    items.forEach((item) => {
-      const fullPath = path.join(absoluteDir, item);
-      const stat = fs.statSync(fullPath);
-      if (stat.isDirectory()) {
-        this.processDirectory(
-          path.join(directory, item),
-          path.join(relativePath, item)
-        );
-      } else if (this.config.fileExtensions.includes(path.extname(item))) {
-        const content = fs.readFileSync(fullPath, "utf-8");
-        this.prependBlocks = {};
-        this.gatherSnippetNames(content);
-        this.gatherImports(content);
-        if (!this.shouldExcludeFile(content)) {
-          const fileSnippets = this.extractSnippetsFromFile(content, fullPath);
-          this.writeSnippetsToFile(fileSnippets, fullPath, relativePath);
-        }
-      }
-    });
-  }
-  writeSnippetsToFile(snippets, fullPath, relativePath) {
-    for (const [snippetName, snippetContent] of Object.entries(snippets)) {
-      let outputPath;
-      switch (this.config.outputDirectoryStructure) {
-        case "match":
-          outputPath = path.join(
-            this.config.snippetOutputDirectory,
-            relativePath,
-            `${snippetName}.snippet${path.extname(fullPath)}`
-          );
-          break;
-        case "byLanguage":
-        default:
-          outputPath = this.determineOutputPath(snippetName, fullPath);
-          break;
-      }
-      if (!fs.existsSync(path.dirname(outputPath))) {
-        fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-      }
-      fs.writeFileSync(
-        outputPath,
-        `export default ${JSON.stringify(snippetContent)};`
-      );
-    }
-  }
-  determineOutputPath(snippetName, fullPath) {
-    const extension = path.extname(fullPath);
-    const language = this.getLanguageFromExtension(extension);
-    const version = this.config.version || "v1";
-    return path.join(
-      this.config.snippetOutputDirectory,
-      version,
-      language,
-      `${snippetName}.snippet.js`
-    );
-  }
-  getLanguageFromExtension(extension) {
-    const extensionToLanguageMap = {
-      ".js": "js",
-      ".ts": "typescript",
-      ".kt": "kt",
-      ".swift": "swift",
-      ".gradle": "gradle",
-      ".bash": "bash",
-      ".xml": "xml"
-    };
-    return extensionToLanguageMap[extension] || "other";
-  }
-  extractSnippets() {
-    const absoluteOutputDir = path.resolve(
-      this.projectRoot,
-      this.config.snippetOutputDirectory
-    );
-    if (!fs.existsSync(absoluteOutputDir)) {
-      fs.mkdirSync(absoluteOutputDir, { recursive: true });
-    }
-    this.processDirectory(this.config.rootDirectory);
-  }
-};
-var SnippetExtractor_default = SnippetExtractor;
-export {
-  SnippetExtractor,
-  SnippetExtractor_default as default
-};
diff --git a/shnip/dist/helpers/getSnippet.js b/shnip/dist/helpers/getSnippet.js
deleted file mode 100644
index 6cedc345e..000000000
--- a/shnip/dist/helpers/getSnippet.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// ../shnip.config.ts
-var config = {
-  rootDirectory: "./site-new/testsuites",
-  snippetOutputDirectory: "./site-new/snippets",
-  fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
-  exclude: [
-    "pfiOverviewReadOfferingsJs",
-    "pfiOverviewWriteJs",
-    "pfiOverviewWriteOfferingsJs"
-  ],
-  snippetTags: {
-    start: ":snippet-start:",
-    end: ":snippet-end:",
-    prependStart: ":prepend-start:",
-    prependEnd: ":prepend-end:"
-  },
-  outputDirectoryStructure: "byLanguage",
-  version: "1.0.0"
-};
-
-// src/helpers/getSnippet.ts
-async function getSnippet(snippetName, language = "javascript") {
-  try {
-    const snippetUrl = `${config.snippetOutputDirectory}/${config.version}/${language}/${snippetName}.snippet.js`;
-    const response = await fetch(snippetUrl);
-    console.log("snippetUrl", snippetUrl);
-    console.log("response", response);
-    if (!response.ok) {
-      throw new Error(
-        `Snippet not found: ${snippetName} for language: ${language}`
-      );
-    }
-    const snippetContent = await response.text();
-    return snippetContent;
-  } catch (error) {
-    console.error("Error loading snippet:", error);
-    throw error;
-  }
-}
-export {
-  getSnippet
-};
diff --git a/shnip/dist/index.js b/shnip/dist/index.js
deleted file mode 100644
index aec8ee21e..000000000
--- a/shnip/dist/index.js
+++ /dev/null
@@ -1,250 +0,0 @@
-// src/extract/SnippetExtractor.ts
-import path from "path";
-import fs from "fs";
-var SnippetExtractor = class {
-  constructor(config3) {
-    this.prependBlocks = {};
-    if (typeof window !== "undefined") {
-      throw new Error(
-        "SnippetExtractor can only be used in a Node.js environment"
-      );
-    }
-    this.config = {
-      ...config3,
-      outputDirectoryStructure: config3.outputDirectoryStructure || "byLanguage"
-    };
-    this.projectRoot = process.cwd();
-  }
-  gatherSnippetNames(content) {
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(start, startIndex)) !== -1) {
-      endIndex = content.indexOf(end, startIndex);
-      if (endIndex === -1) break;
-      const snippetNameLine = content.substring(startIndex + start.length, content.indexOf("\n", startIndex)).trim();
-      startIndex = endIndex + end.length;
-    }
-  }
-  gatherImports(content) {
-    const { prependStart, prependEnd } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    while ((startIndex = content.indexOf(prependStart, startIndex)) !== -1) {
-      const endOfStartTag = content.indexOf("\n", startIndex);
-      const snippetNamesLine = content.substring(startIndex + prependStart.length, endOfStartTag).trim();
-      const snippetNames = snippetNamesLine.split(/\s+/);
-      endIndex = content.indexOf(prependEnd, endOfStartTag);
-      if (endIndex === -1) {
-        console.log("No matching :prepend-end: found for :prepend-start:");
-        break;
-      }
-      const importBlock = content.substring(endOfStartTag + 1, endIndex).trim();
-      snippetNames.forEach((name) => {
-        if (!this.prependBlocks[name]) {
-          this.prependBlocks[name] = [];
-        }
-        this.prependBlocks[name].push(importBlock);
-      });
-      startIndex = endIndex + prependEnd.length;
-    }
-  }
-  extractSnippetsFromFile(content, filePath) {
-    const snippets = {};
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0, endIndex = 0;
-    const fileExtension = path.extname(filePath);
-    while ((startIndex = content.indexOf(start, endIndex)) !== -1) {
-      const startTagClose = content.indexOf("\n", startIndex);
-      if (startTagClose === -1) {
-        console.log("Snippet start tag not followed by newline. Skipping...");
-        break;
-      }
-      endIndex = content.indexOf(end, startTagClose);
-      if (endIndex === -1) {
-        console.log("No closing tag found for a snippet. Skipping...");
-        break;
-      }
-      const snippetName = content.substring(startIndex + start.length, startTagClose).trim();
-      let snippetContent = content.substring(startTagClose + 1, endIndex);
-      snippetContent = this.normalizeIndentation(snippetContent, fileExtension);
-      if (this.prependBlocks[snippetName]) {
-        const importsToPrepend = this.prependBlocks[snippetName].map((block) => block.trimEnd().replace(/\/\/\s*$/, "")).join("\n");
-        const finalImports = importsToPrepend.length > 0 ? `${importsToPrepend}
-` : "";
-        snippetContent = `${finalImports}${snippetContent}`;
-      }
-      if (snippetName) {
-        snippets[snippetName] = snippetContent;
-      }
-      endIndex += end.length;
-    }
-    return snippets;
-  }
-  normalizeIndentation(snippetContent, fileExtension) {
-    const lines = snippetContent.split("\n");
-    const firstLineIndentation = lines[0].match(/^(\s*)/)?.[0].length || 0;
-    const normalizedLines = lines.map((line) => {
-      const currentIndentation = line.match(/^(\s*)/)?.[0].length || 0;
-      if (currentIndentation >= firstLineIndentation) {
-        return line.substring(firstLineIndentation);
-      }
-      return line;
-    });
-    const commentChar = fileExtension === ".bash" ? "#" : "//";
-    return normalizedLines.map((line) => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), "")).join("\n");
-  }
-  shouldExcludeFile(content) {
-    if (this.config.outputDirectoryStructure === "match") {
-      return this.config.exclude.some(
-        (excludeString) => content.includes(excludeString)
-      );
-    }
-    return false;
-  }
-  processDirectory(directory, relativePath = "") {
-    const absoluteDir = path.resolve(this.projectRoot, directory);
-    const items = fs.readdirSync(absoluteDir);
-    items.forEach((item) => {
-      const fullPath = path.join(absoluteDir, item);
-      const stat = fs.statSync(fullPath);
-      if (stat.isDirectory()) {
-        this.processDirectory(
-          path.join(directory, item),
-          path.join(relativePath, item)
-        );
-      } else if (this.config.fileExtensions.includes(path.extname(item))) {
-        const content = fs.readFileSync(fullPath, "utf-8");
-        this.prependBlocks = {};
-        this.gatherSnippetNames(content);
-        this.gatherImports(content);
-        if (!this.shouldExcludeFile(content)) {
-          const fileSnippets = this.extractSnippetsFromFile(content, fullPath);
-          this.writeSnippetsToFile(fileSnippets, fullPath, relativePath);
-        }
-      }
-    });
-  }
-  writeSnippetsToFile(snippets, fullPath, relativePath) {
-    for (const [snippetName, snippetContent] of Object.entries(snippets)) {
-      let outputPath;
-      switch (this.config.outputDirectoryStructure) {
-        case "match":
-          outputPath = path.join(
-            this.config.snippetOutputDirectory,
-            relativePath,
-            `${snippetName}.snippet${path.extname(fullPath)}`
-          );
-          break;
-        case "byLanguage":
-        default:
-          outputPath = this.determineOutputPath(snippetName, fullPath);
-          break;
-      }
-      if (!fs.existsSync(path.dirname(outputPath))) {
-        fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-      }
-      fs.writeFileSync(
-        outputPath,
-        `export default ${JSON.stringify(snippetContent)};`
-      );
-    }
-  }
-  determineOutputPath(snippetName, fullPath) {
-    const extension = path.extname(fullPath);
-    const language = this.getLanguageFromExtension(extension);
-    const version = this.config.version || "v1";
-    return path.join(
-      this.config.snippetOutputDirectory,
-      version,
-      language,
-      `${snippetName}.snippet.js`
-    );
-  }
-  getLanguageFromExtension(extension) {
-    const extensionToLanguageMap = {
-      ".js": "js",
-      ".ts": "typescript",
-      ".kt": "kt",
-      ".swift": "swift",
-      ".gradle": "gradle",
-      ".bash": "bash",
-      ".xml": "xml"
-    };
-    return extensionToLanguageMap[extension] || "other";
-  }
-  extractSnippets() {
-    const absoluteOutputDir = path.resolve(
-      this.projectRoot,
-      this.config.snippetOutputDirectory
-    );
-    if (!fs.existsSync(absoluteOutputDir)) {
-      fs.mkdirSync(absoluteOutputDir, { recursive: true });
-    }
-    this.processDirectory(this.config.rootDirectory);
-  }
-};
-var SnippetExtractor_default = SnippetExtractor;
-
-// ../shnip.config.ts
-var config = {
-  rootDirectory: "./site-new/testsuites",
-  snippetOutputDirectory: "./site-new/snippets",
-  fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
-  exclude: [
-    "pfiOverviewReadOfferingsJs",
-    "pfiOverviewWriteJs",
-    "pfiOverviewWriteOfferingsJs"
-  ],
-  snippetTags: {
-    start: ":snippet-start:",
-    end: ":snippet-end:",
-    prependStart: ":prepend-start:",
-    prependEnd: ":prepend-end:"
-  },
-  outputDirectoryStructure: "byLanguage",
-  version: "1.0.0"
-};
-
-// src/helpers/getSnippet.ts
-async function getSnippet(snippetName, language = "javascript") {
-  try {
-    const snippetUrl = `${config.snippetOutputDirectory}/${config.version}/${language}/${snippetName}.snippet.js`;
-    const response = await fetch(snippetUrl);
-    console.log("snippetUrl", snippetUrl);
-    console.log("response", response);
-    if (!response.ok) {
-      throw new Error(
-        `Snippet not found: ${snippetName} for language: ${language}`
-      );
-    }
-    const snippetContent = await response.text();
-    return snippetContent;
-  } catch (error) {
-    console.error("Error loading snippet:", error);
-    throw error;
-  }
-}
-
-// config/shnip.config.ts
-var config2 = {
-  rootDirectory: "./site-new/testsuites",
-  snippetOutputDirectory: "./site-new/snippets",
-  fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
-  exclude: [
-    "pfiOverviewReadOfferingsJs",
-    "pfiOverviewWriteJs",
-    "pfiOverviewWriteOfferingsJs"
-  ],
-  snippetTags: {
-    start: ":snippet-start:",
-    end: ":snippet-end:",
-    prependStart: ":prepend-start:",
-    prependEnd: ":prepend-end:"
-  },
-  outputDirectoryStructure: "byLanguage",
-  version: "1.0.0"
-};
-export {
-  SnippetExtractor_default as SnippetExtractor,
-  getSnippet,
-  config2 as loadConfig
-};
diff --git a/shnip/dist/load/SnippetLoader.js b/shnip/dist/load/SnippetLoader.js
deleted file mode 100644
index cbefc78c7..000000000
--- a/shnip/dist/load/SnippetLoader.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// src/load/SnippetLoader.ts
-var snippetCache = {};
-async function getSnippet(snippetName, language = "javascript", config) {
-  const version = config.version || "v1";
-  const cacheKey = `${snippetName}-${language}-${version}`;
-  if (snippetCache[cacheKey]) {
-    return snippetCache[cacheKey];
-  }
-  const snippetUrl = `${config.snippetOutputDirectory}/${version}/${language}/${snippetName}.snippet.js`;
-  try {
-    const response = await fetch(snippetUrl);
-    if (!response.ok) {
-      throw new Error(`Failed to load snippet: ${snippetUrl}`);
-    }
-    const snippetContent = await response.text();
-    snippetCache[cacheKey] = snippetContent;
-    return snippetContent;
-  } catch (error) {
-    throw new Error(
-      `Snippet not found: ${snippetName} for language: ${language}`
-    );
-  }
-}
-export {
-  getSnippet
-};
diff --git a/shnip/dist/test.js b/shnip/dist/test.js
deleted file mode 100644
index 0322b11d8..000000000
--- a/shnip/dist/test.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// src/test.ts
-console.log("Hello from TypeScript");
diff --git a/shnip/package-lock.json b/shnip/package-lock.json
deleted file mode 100644
index e08fb4b08..000000000
--- a/shnip/package-lock.json
+++ /dev/null
@@ -1,1094 +0,0 @@
-{
-  "name": "shnip",
-  "version": "1.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "shnip",
-      "version": "1.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "rimraf": "5.0.5"
-      },
-      "bin": {
-        "shnip": "src/cli.js"
-      },
-      "devDependencies": {
-        "@types/node": "^22.7.4",
-        "esbuild": "^0.24.0",
-        "ts-node": "^10.9.2",
-        "typescript": "^5.6.2"
-      }
-    },
-    "node_modules/@cspotcode/source-map-support": {
-      "version": "0.8.1",
-      "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
-      "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/trace-mapping": "0.3.9"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz",
-      "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "aix"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/android-arm": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz",
-      "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/android-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz",
-      "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/android-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz",
-      "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "android"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz",
-      "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/darwin-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz",
-      "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz",
-      "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz",
-      "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "freebsd"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-arm": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz",
-      "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==",
-      "cpu": [
-        "arm"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz",
-      "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-ia32": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz",
-      "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-loong64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz",
-      "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==",
-      "cpu": [
-        "loong64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz",
-      "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==",
-      "cpu": [
-        "mips64el"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz",
-      "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==",
-      "cpu": [
-        "ppc64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz",
-      "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==",
-      "cpu": [
-        "riscv64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-s390x": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz",
-      "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==",
-      "cpu": [
-        "s390x"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/linux-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz",
-      "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "linux"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz",
-      "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "netbsd"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/openbsd-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz",
-      "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz",
-      "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "openbsd"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/sunos-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz",
-      "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "sunos"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/win32-arm64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz",
-      "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==",
-      "cpu": [
-        "arm64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/win32-ia32": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz",
-      "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==",
-      "cpu": [
-        "ia32"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@esbuild/win32-x64": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz",
-      "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@isaacs/cliui": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
-      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-      "dependencies": {
-        "string-width": "^5.1.2",
-        "string-width-cjs": "npm:string-width@^4.2.0",
-        "strip-ansi": "^7.0.1",
-        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-        "wrap-ansi": "^8.1.0",
-        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
-      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
-      "dev": true,
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
-    "node_modules/@jridgewell/sourcemap-codec": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-      "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-      "dev": true
-    },
-    "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.9",
-      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
-      "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
-      "dev": true,
-      "dependencies": {
-        "@jridgewell/resolve-uri": "^3.0.3",
-        "@jridgewell/sourcemap-codec": "^1.4.10"
-      }
-    },
-    "node_modules/@pkgjs/parseargs": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
-      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
-      "optional": true,
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/@tsconfig/node10": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
-      "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
-      "dev": true
-    },
-    "node_modules/@tsconfig/node12": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
-      "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
-      "dev": true
-    },
-    "node_modules/@tsconfig/node14": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
-      "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
-      "dev": true
-    },
-    "node_modules/@tsconfig/node16": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
-      "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
-      "dev": true
-    },
-    "node_modules/@types/node": {
-      "version": "22.7.4",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz",
-      "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==",
-      "dev": true,
-      "dependencies": {
-        "undici-types": "~6.19.2"
-      }
-    },
-    "node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
-      "dev": true,
-      "bin": {
-        "acorn": "bin/acorn"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/acorn-walk": {
-      "version": "8.3.4",
-      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
-      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
-      "dev": true,
-      "dependencies": {
-        "acorn": "^8.11.0"
-      },
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
-    "node_modules/ansi-regex": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "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==",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/arg": {
-      "version": "4.1.3",
-      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
-      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
-      "dev": true
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-    },
-    "node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "dependencies": {
-        "balanced-match": "^1.0.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==",
-      "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=="
-    },
-    "node_modules/create-require": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
-      "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
-      "dev": true
-    },
-    "node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dependencies": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/diff": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
-      "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.3.1"
-      }
-    },
-    "node_modules/eastasianwidth": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
-    },
-    "node_modules/emoji-regex": {
-      "version": "9.2.2",
-      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
-      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
-    },
-    "node_modules/esbuild": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz",
-      "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==",
-      "dev": true,
-      "hasInstallScript": true,
-      "bin": {
-        "esbuild": "bin/esbuild"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.24.0",
-        "@esbuild/android-arm": "0.24.0",
-        "@esbuild/android-arm64": "0.24.0",
-        "@esbuild/android-x64": "0.24.0",
-        "@esbuild/darwin-arm64": "0.24.0",
-        "@esbuild/darwin-x64": "0.24.0",
-        "@esbuild/freebsd-arm64": "0.24.0",
-        "@esbuild/freebsd-x64": "0.24.0",
-        "@esbuild/linux-arm": "0.24.0",
-        "@esbuild/linux-arm64": "0.24.0",
-        "@esbuild/linux-ia32": "0.24.0",
-        "@esbuild/linux-loong64": "0.24.0",
-        "@esbuild/linux-mips64el": "0.24.0",
-        "@esbuild/linux-ppc64": "0.24.0",
-        "@esbuild/linux-riscv64": "0.24.0",
-        "@esbuild/linux-s390x": "0.24.0",
-        "@esbuild/linux-x64": "0.24.0",
-        "@esbuild/netbsd-x64": "0.24.0",
-        "@esbuild/openbsd-arm64": "0.24.0",
-        "@esbuild/openbsd-x64": "0.24.0",
-        "@esbuild/sunos-x64": "0.24.0",
-        "@esbuild/win32-arm64": "0.24.0",
-        "@esbuild/win32-ia32": "0.24.0",
-        "@esbuild/win32-x64": "0.24.0"
-      }
-    },
-    "node_modules/foreground-child": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
-      "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
-      "dependencies": {
-        "cross-spawn": "^7.0.0",
-        "signal-exit": "^4.0.1"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/glob": {
-      "version": "10.4.5",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
-      "dependencies": {
-        "foreground-child": "^3.1.0",
-        "jackspeak": "^3.1.2",
-        "minimatch": "^9.0.4",
-        "minipass": "^7.1.2",
-        "package-json-from-dist": "^1.0.0",
-        "path-scurry": "^1.11.1"
-      },
-      "bin": {
-        "glob": "dist/esm/bin.mjs"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/is-fullwidth-code-point": {
-      "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==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
-    },
-    "node_modules/jackspeak": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
-      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
-      "dependencies": {
-        "@isaacs/cliui": "^8.0.2"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      },
-      "optionalDependencies": {
-        "@pkgjs/parseargs": "^0.11.0"
-      }
-    },
-    "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=="
-    },
-    "node_modules/make-error": {
-      "version": "1.3.6",
-      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
-      "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
-      "dev": true
-    },
-    "node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
-    "node_modules/package-json-from-dist": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
-      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
-    },
-    "node_modules/path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/path-scurry": {
-      "version": "1.11.1",
-      "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
-      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
-      "dependencies": {
-        "lru-cache": "^10.2.0",
-        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.18"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rimraf": {
-      "version": "5.0.5",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz",
-      "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==",
-      "dependencies": {
-        "glob": "^10.3.7"
-      },
-      "bin": {
-        "rimraf": "dist/esm/bin.mjs"
-      },
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dependencies": {
-        "shebang-regex": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/signal-exit": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
-      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
-      "engines": {
-        "node": ">=14"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/string-width": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
-      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
-      "dependencies": {
-        "eastasianwidth": "^0.2.0",
-        "emoji-regex": "^9.2.2",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/string-width-cjs": {
-      "name": "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==",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string-width-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/string-width-cjs/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=="
-    },
-    "node_modules/string-width-cjs/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "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==",
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/strip-ansi-cjs": {
-      "name": "strip-ansi",
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/ts-node": {
-      "version": "10.9.2",
-      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
-      "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
-      "dev": true,
-      "dependencies": {
-        "@cspotcode/source-map-support": "^0.8.0",
-        "@tsconfig/node10": "^1.0.7",
-        "@tsconfig/node12": "^1.0.7",
-        "@tsconfig/node14": "^1.0.0",
-        "@tsconfig/node16": "^1.0.2",
-        "acorn": "^8.4.1",
-        "acorn-walk": "^8.1.1",
-        "arg": "^4.1.0",
-        "create-require": "^1.1.0",
-        "diff": "^4.0.1",
-        "make-error": "^1.1.1",
-        "v8-compile-cache-lib": "^3.0.1",
-        "yn": "3.1.1"
-      },
-      "bin": {
-        "ts-node": "dist/bin.js",
-        "ts-node-cwd": "dist/bin-cwd.js",
-        "ts-node-esm": "dist/bin-esm.js",
-        "ts-node-script": "dist/bin-script.js",
-        "ts-node-transpile-only": "dist/bin-transpile.js",
-        "ts-script": "dist/bin-script-deprecated.js"
-      },
-      "peerDependencies": {
-        "@swc/core": ">=1.2.50",
-        "@swc/wasm": ">=1.2.50",
-        "@types/node": "*",
-        "typescript": ">=2.7"
-      },
-      "peerDependenciesMeta": {
-        "@swc/core": {
-          "optional": true
-        },
-        "@swc/wasm": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/typescript": {
-      "version": "5.6.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
-      "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
-      "dev": true,
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=14.17"
-      }
-    },
-    "node_modules/undici-types": {
-      "version": "6.19.8",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
-      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
-      "dev": true
-    },
-    "node_modules/v8-compile-cache-lib": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
-      "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
-      "dev": true
-    },
-    "node_modules/which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/node-which"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/wrap-ansi": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-      "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
-      "dependencies": {
-        "ansi-styles": "^6.1.0",
-        "string-width": "^5.0.1",
-        "strip-ansi": "^7.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi-cjs": {
-      "name": "wrap-ansi",
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "dependencies": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/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=="
-    },
-    "node_modules/wrap-ansi-cjs/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==",
-      "dependencies": {
-        "emoji-regex": "^8.0.0",
-        "is-fullwidth-code-point": "^3.0.0",
-        "strip-ansi": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/yn": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
-      "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    }
-  }
-}
diff --git a/shnip/package.json b/shnip/package.json
deleted file mode 100644
index 801987038..000000000
--- a/shnip/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "name": "shnip",
-  "type": "module",
-  "version": "1.0.0",
-  "description": "A snippet extraction tool for various programming languages.",
-  "main": "dist/index.js",
-  "bin": {
-    "shnip": "dist/bin/cli.js"
-  },
-  "scripts": {
-    "build": "node build.js",
-    "start": "node dist/src/bin/cli"
-  },
-  "keywords": [
-    "snippet",
-    "extractor",
-    "code",
-    "tool"
-  ],
-  "author": "Nick DeJesus",
-  "license": "MIT",
-  "dependencies": {
-    "rimraf": "5.0.5"
-  },
-  "devDependencies": {
-    "@types/node": "^22.7.4",
-    "esbuild": "^0.24.0",
-    "ts-node": "^10.9.2",
-    "typescript": "^5.6.2"
-  }
-}
diff --git a/shnip/src/bin/cli.ts b/shnip/src/bin/cli.ts
deleted file mode 100644
index 7f29c74af..000000000
--- a/shnip/src/bin/cli.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { SnippetExtractor } from "../index.js";
-import fs from "fs";
-import path from "path";
-import { rimraf } from "rimraf";
-import { fileURLToPath } from "url";
-import { config as rawConfig } from "../../config/shnip.config.js";
-
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = path.dirname(__filename);
-
-const projectRoot = path.resolve(__dirname, "../../../");
-const config = {
-  ...rawConfig,
-  rootDirectory: path.resolve(projectRoot, rawConfig.rootDirectory),
-  snippetOutputDirectory: path.resolve(
-    projectRoot,
-    rawConfig.snippetOutputDirectory
-  ),
-};
-
-function clearOutputDirectory(snippetOutputDirectory: string) {
-  if (fs.existsSync(snippetOutputDirectory)) {
-    rimraf.sync(snippetOutputDirectory);
-  } else {
-    console.log(`Output directory does not exist: ${snippetOutputDirectory}`);
-  }
-}
-
-async function main() {
-  const args = process.argv.slice(2);
-
-  // Resolve the root and snippet output directories from the config
-  config.rootDirectory = path.resolve(__dirname, "../", config.rootDirectory);
-  config.snippetOutputDirectory = path.resolve(
-    __dirname,
-    "../",
-    config.snippetOutputDirectory
-  );
-
-  // Check for "clear" argument to clear the output directory
-  if (args.includes("clear")) {
-    clearOutputDirectory(config.snippetOutputDirectory);
-    return;
-  }
-
-  const structureFlagIndex = args.indexOf("--structure");
-  if (structureFlagIndex !== -1 && args.length > structureFlagIndex + 1) {
-    const structureValue = args[structureFlagIndex + 1];
-    const validStructures = ["flat", "match", "organized", "byLanguage"];
-    if (validStructures.includes(structureValue)) {
-      config.outputDirectoryStructure = structureValue;
-    } else {
-      console.error(
-        `Invalid output directory structure: '${structureValue}'. Valid options are: ${validStructures.join(
-          ", "
-        )}`
-      );
-      process.exit(1);
-    }
-  } else if (structureFlagIndex !== -1) {
-    console.error(
-      "The --structure flag requires a value. Valid options are: flat, match, organized, byLanguage"
-    );
-    process.exit(1);
-  }
-
-  // Use SnippetExtractor with the config
-  const extractor = new SnippetExtractor(config);
-  extractor.extractSnippets();
-}
-
-main();
diff --git a/shnip/src/extract/SnippetExtractor.ts b/shnip/src/extract/SnippetExtractor.ts
deleted file mode 100644
index 8e095e861..000000000
--- a/shnip/src/extract/SnippetExtractor.ts
+++ /dev/null
@@ -1,259 +0,0 @@
-import path from "path";
-import fs from "fs";
-
-interface SnippetExtractorConfig {
-  rootDirectory: string;
-  snippetOutputDirectory: string;
-  fileExtensions: string[];
-  exclude: string[];
-  snippetTags: {
-    start: string;
-    end: string;
-    prependStart: string;
-    prependEnd: string;
-  };
-  outputDirectoryStructure: string;
-  version: string;
-}
-
-export class SnippetExtractor {
-  private config: SnippetExtractorConfig;
-  private prependBlocks: Record = {};
-  private projectRoot: string;
-
-  constructor(config: SnippetExtractorConfig) {
-    if (typeof window !== "undefined") {
-      throw new Error(
-        "SnippetExtractor can only be used in a Node.js environment"
-      );
-    }
-
-    this.config = {
-      ...config,
-      outputDirectoryStructure: config.outputDirectoryStructure || "byLanguage",
-    };
-    this.projectRoot = process.cwd();
-  }
-
-  private gatherSnippetNames(content: string) {
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0,
-      endIndex = 0;
-
-    while ((startIndex = content.indexOf(start, startIndex)) !== -1) {
-      endIndex = content.indexOf(end, startIndex);
-      if (endIndex === -1) break;
-
-      const snippetNameLine = content
-        .substring(startIndex + start.length, content.indexOf("\n", startIndex))
-        .trim();
-      startIndex = endIndex + end.length;
-    }
-  }
-
-  private gatherImports(content: string) {
-    const { prependStart, prependEnd } = this.config.snippetTags;
-    let startIndex = 0,
-      endIndex = 0;
-
-    while ((startIndex = content.indexOf(prependStart, startIndex)) !== -1) {
-      const endOfStartTag = content.indexOf("\n", startIndex);
-      const snippetNamesLine = content
-        .substring(startIndex + prependStart.length, endOfStartTag)
-        .trim();
-      const snippetNames = snippetNamesLine.split(/\s+/); // Assuming space-separated names
-
-      endIndex = content.indexOf(prependEnd, endOfStartTag);
-      if (endIndex === -1) {
-        console.log("No matching :prepend-end: found for :prepend-start:");
-        break;
-      }
-
-      const importBlock = content.substring(endOfStartTag + 1, endIndex).trim();
-
-      snippetNames.forEach((name) => {
-        if (!this.prependBlocks[name]) {
-          this.prependBlocks[name] = [];
-        }
-        this.prependBlocks[name].push(importBlock);
-      });
-
-      startIndex = endIndex + prependEnd.length;
-    }
-  }
-
-  private extractSnippetsFromFile(content: string, filePath: string) {
-    const snippets: Record = {};
-    const { start, end } = this.config.snippetTags;
-    let startIndex = 0,
-      endIndex = 0;
-    const fileExtension = path.extname(filePath);
-
-    while ((startIndex = content.indexOf(start, endIndex)) !== -1) {
-      const startTagClose = content.indexOf("\n", startIndex);
-      if (startTagClose === -1) {
-        console.log("Snippet start tag not followed by newline. Skipping...");
-        break;
-      }
-
-      endIndex = content.indexOf(end, startTagClose);
-      if (endIndex === -1) {
-        console.log("No closing tag found for a snippet. Skipping...");
-        break;
-      }
-
-      const snippetName = content
-        .substring(startIndex + start.length, startTagClose)
-        .trim();
-      let snippetContent = content.substring(startTagClose + 1, endIndex);
-
-      snippetContent = this.normalizeIndentation(snippetContent, fileExtension);
-
-      if (this.prependBlocks[snippetName]) {
-        const importsToPrepend = this.prependBlocks[snippetName]
-          .map((block) => block.trimEnd().replace(/\/\/\s*$/, ""))
-          .join("\n");
-
-        const finalImports =
-          importsToPrepend.length > 0 ? `${importsToPrepend}\n` : "";
-        snippetContent = `${finalImports}${snippetContent}`;
-      }
-
-      if (snippetName) {
-        snippets[snippetName] = snippetContent;
-      }
-
-      endIndex += end.length;
-    }
-
-    return snippets;
-  }
-
-  private normalizeIndentation(snippetContent: string, fileExtension: string) {
-    const lines = snippetContent.split("\n");
-    const firstLineIndentation = lines[0].match(/^(\s*)/)?.[0].length || 0;
-
-    const normalizedLines = lines.map((line) => {
-      const currentIndentation = line.match(/^(\s*)/)?.[0].length || 0;
-      if (currentIndentation >= firstLineIndentation) {
-        return line.substring(firstLineIndentation);
-      }
-      return line;
-    });
-
-    const commentChar = fileExtension === ".bash" ? "#" : "//";
-    return normalizedLines
-      .map((line) => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), ""))
-      .join("\n");
-  }
-
-  private shouldExcludeFile(content: string) {
-    if (this.config.outputDirectoryStructure === "match") {
-      return this.config.exclude.some((excludeString) =>
-        content.includes(excludeString)
-      );
-    }
-    return false;
-  }
-
-  public processDirectory(directory: string, relativePath = "") {
-    const absoluteDir = path.resolve(this.projectRoot, directory);
-
-    const items = fs.readdirSync(absoluteDir);
-    items.forEach((item: any) => {
-      const fullPath = path.join(absoluteDir, item);
-      const stat = fs.statSync(fullPath);
-
-      if (stat.isDirectory()) {
-        this.processDirectory(
-          path.join(directory, item),
-          path.join(relativePath, item)
-        );
-      } else if (this.config.fileExtensions.includes(path.extname(item))) {
-        const content = fs.readFileSync(fullPath, "utf-8");
-
-        this.prependBlocks = {};
-        this.gatherSnippetNames(content);
-        this.gatherImports(content);
-
-        if (!this.shouldExcludeFile(content)) {
-          const fileSnippets = this.extractSnippetsFromFile(content, fullPath);
-          this.writeSnippetsToFile(fileSnippets, fullPath, relativePath);
-        }
-      }
-    });
-  }
-
-  private writeSnippetsToFile(
-    snippets: Record,
-    fullPath: string,
-    relativePath: string
-  ) {
-    for (const [snippetName, snippetContent] of Object.entries(snippets)) {
-      let outputPath: string;
-
-      switch (this.config.outputDirectoryStructure) {
-        case "match":
-          outputPath = path.join(
-            this.config.snippetOutputDirectory,
-            relativePath,
-            `${snippetName}.snippet${path.extname(fullPath)}`
-          );
-          break;
-        case "byLanguage":
-        default:
-          outputPath = this.determineOutputPath(snippetName, fullPath);
-          break;
-      }
-
-      if (!fs.existsSync(path.dirname(outputPath))) {
-        fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-      }
-
-      fs.writeFileSync(
-        outputPath,
-        `export default ${JSON.stringify(snippetContent)};`
-      );
-    }
-  }
-
-  private determineOutputPath(snippetName: string, fullPath: string) {
-    const extension = path.extname(fullPath);
-    const language = this.getLanguageFromExtension(extension);
-    const version = this.config.version || "v1";
-
-    return path.join(
-      this.config.snippetOutputDirectory,
-      version,
-      language,
-      `${snippetName}.snippet.js`
-    );
-  }
-
-  private getLanguageFromExtension(extension: string): string {
-    const extensionToLanguageMap: Record = {
-      ".js": "js",
-      ".ts": "typescript",
-      ".kt": "kt",
-      ".swift": "swift",
-      ".gradle": "gradle",
-      ".bash": "bash",
-      ".xml": "xml",
-    };
-
-    return extensionToLanguageMap[extension] || "other";
-  }
-
-  public extractSnippets() {
-    const absoluteOutputDir = path.resolve(
-      this.projectRoot,
-      this.config.snippetOutputDirectory
-    );
-    if (!fs.existsSync(absoluteOutputDir)) {
-      fs.mkdirSync(absoluteOutputDir, { recursive: true });
-    }
-    this.processDirectory(this.config.rootDirectory);
-  }
-}
-
-export default SnippetExtractor;
diff --git a/shnip/src/helpers/getSnippet.ts b/shnip/src/helpers/getSnippet.ts
deleted file mode 100644
index f7280fbb0..000000000
--- a/shnip/src/helpers/getSnippet.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { config } from "../../../shnip.config";
-
-export async function getSnippet(
-  snippetName: string,
-  language: string = "javascript"
-): Promise {
-  try {
-    const snippetUrl = `${config.snippetOutputDirectory}/${config.version}/${language}/${snippetName}.snippet.js`;
-
-    const response = await fetch(snippetUrl);
-
-    console.log("snippetUrl", snippetUrl);
-    console.log("response", response);
-
-    if (!response.ok) {
-      throw new Error(
-        `Snippet not found: ${snippetName} for language: ${language}`
-      );
-    }
-
-    const snippetContent = await response.text();
-    return snippetContent;
-  } catch (error) {
-    console.error("Error loading snippet:", error);
-    throw error;
-  }
-}
diff --git a/shnip/src/index.ts b/shnip/src/index.ts
deleted file mode 100644
index d81681c99..000000000
--- a/shnip/src/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import SnippetExtractor from "./extract/SnippetExtractor.js";
-import { getSnippet } from "./helpers/getSnippet.js";
-import { config as loadConfig } from "../config/shnip.config.js";
-export { SnippetExtractor, getSnippet, loadConfig };
diff --git a/shnip/src/load/SnippetLoader.ts b/shnip/src/load/SnippetLoader.ts
deleted file mode 100644
index 62329d0d1..000000000
--- a/shnip/src/load/SnippetLoader.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-interface SnippetLoaderConfig {
-  snippetOutputDirectory: string; // This would be the public path where snippets are served
-  version?: string;
-}
-
-const snippetCache: Record = {};
-
-// Fetches the snippet as a static asset from the server
-export async function getSnippet(
-  snippetName: string,
-  language: string = "javascript",
-  config: SnippetLoaderConfig
-): Promise {
-  const version = config.version || "v1";
-  const cacheKey = `${snippetName}-${language}-${version}`;
-
-  // Check if the snippet is already cached
-  if (snippetCache[cacheKey]) {
-    return snippetCache[cacheKey];
-  }
-
-  // Construct the path to the snippet as a URL
-  const snippetUrl = `${config.snippetOutputDirectory}/${version}/${language}/${snippetName}.snippet.js`;
-
-  try {
-    // Fetch the snippet from the server (static asset)
-    const response = await fetch(snippetUrl);
-
-    if (!response.ok) {
-      throw new Error(`Failed to load snippet: ${snippetUrl}`);
-    }
-
-    // Get the content of the snippet
-    const snippetContent = await response.text();
-
-    // Cache the snippet content
-    snippetCache[cacheKey] = snippetContent;
-
-    return snippetContent;
-  } catch (error) {
-    throw new Error(
-      `Snippet not found: ${snippetName} for language: ${language}`
-    );
-  }
-}
diff --git a/shnip/tsconfig.json b/shnip/tsconfig.json
deleted file mode 100644
index beb4292b9..000000000
--- a/shnip/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "compilerOptions": {
-    "module": "ESNext",
-    "target": "ES2020",
-    "esModuleInterop": true,
-    "moduleResolution": "node",
-    "skipLibCheck": true,
-    "strict": true
-  },
-  "ts-node": {
-    "esm": true
-  }
-}
diff --git a/shnippet.config.json b/shnippet.config.json
index e51218942..978f5f66e 100644
--- a/shnippet.config.json
+++ b/shnippet.config.json
@@ -2,7 +2,11 @@
   "rootDirectory": "./site/testsuites",
   "outputDirectory": "./site/snippets",
   "fileExtensions": [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
-  "exclude": ["pfiOverviewReadOfferingsJs", "pfiOverviewWriteJs", "pfiOverviewWriteOfferingsJs"],
+  "exclude": [
+    "pfiOverviewReadOfferingsJs",
+    "pfiOverviewWriteJs",
+    "pfiOverviewWriteOfferingsJs"
+  ],
   "snippetTags": {
     "start": ":snippet-start:",
     "end": ":snippet-end:",
diff --git a/shnippet/config/default-config.json b/shnippet/config/default-config.json
deleted file mode 100644
index 5bbb30e6b..000000000
--- a/shnippet/config/default-config.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-    "rootDirectory": "./site/__tests__",
-    "snippetOutputDirectory": "./site/snippets",
-    "fileExtensions": [".js", ".ts"],
-    "snippetTags": {
-      "start": ":snippet-start:",
-      "end": ":snippet-end:"
-    }
-  }
-  
\ No newline at end of file
diff --git a/shnippet/package.json b/shnippet/package.json
deleted file mode 100644
index bc3d3c1d5..000000000
--- a/shnippet/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "name": "shnip",
-  "version": "1.0.0",
-  "description": "A snippet extraction tool for various programming languages.",
-  "main": "index.js",
-  "bin": {
-    "shnip": "./src/cli.js"
-  },
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "keywords": [
-    "snippet",
-    "extractor",
-    "code",
-    "tool"
-  ],
-  "author": "Nick DeJesus",
-  "license": "MIT",
-  "dependencies": {
-    "rimraf": "5.0.5"
-  }
-}
\ No newline at end of file
diff --git a/shnippet/src/cli.js b/shnippet/src/cli.js
deleted file mode 100644
index 676040c7b..000000000
--- a/shnippet/src/cli.js
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env node
-
-const SnippetExtractor = require("./index");
-const fs = require("fs");
-const path = require("path");
-const rimraf = require("rimraf");
-
-function findConfigFile() {
-  const configFileName = "shnippet.config.json";
-  const configPath = path.join(__dirname, "..", "..", configFileName);
-
-  if (!fs.existsSync(configPath)) {
-    console.error(`Configuration file not found: ${configPath}`);
-    process.exit(1);
-  }
-
-  return configPath;
-}
-
-function clearOutputDirectory(outputDirectory) {
-  if (fs.existsSync(outputDirectory)) {
-    rimraf.sync(outputDirectory);
-  } else {
-    console.log(`Output directory does not exist: ${outputDirectory}`);
-  }
-}
-
-function main() {
-  const args = process.argv.slice(2);
-  const configPath = findConfigFile();
-  const configDir = path.dirname(configPath);
-  let config = require(configPath);
-
-  config.rootDirectory = path.resolve(configDir, config.rootDirectory);
-  config.outputDirectory = path.resolve(configDir, config.outputDirectory);
-
-  // Check for "clear" argument
-  if (args.includes("clear")) {
-    clearOutputDirectory(config.outputDirectory);
-    return; // Exit after clearing the output directory
-  }
-
-  // Process --structure flag
-  const structureFlagIndex = args.indexOf("--structure");
-  if (structureFlagIndex !== -1 && args.length > structureFlagIndex + 1) {
-    const structureValue = args[structureFlagIndex + 1];
-    const validStructures = ["flat", "match", "organized", "byLanguage"];
-    if (validStructures.includes(structureValue)) {
-      config.outputDirectoryStructure = structureValue;
-    } else {
-      console.error(
-        `Invalid output directory structure: '${structureValue}'. Valid options are: ${validStructures.join(
-          ", "
-        )}`
-      );
-      process.exit(1);
-    }
-  } else if (structureFlagIndex !== -1) {
-    console.error(
-      "The --structure flag requires a value. Valid options are: flat, match, organized, byLanguage"
-    );
-    process.exit(1);
-  }
-
-  const extractor = new SnippetExtractor(config);
-  extractor.extractSnippets();
-}
-
-main();
diff --git a/shnippet/src/index.js b/shnippet/src/index.js
deleted file mode 100644
index c504a420c..000000000
--- a/shnippet/src/index.js
+++ /dev/null
@@ -1,288 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-
-class SnippetExtractor {
-  constructor(config) {
-    this.config = {
-      outputDirectoryStructure: 'byLanguage',
-      ...config,
-    };
-
-    this.prependBlocks = {};
-  }
-
-  gatherSnippetNames(content) {
-    const snippetStartTag = this.config.snippetTags.start;
-    const snippetEndTag = this.config.snippetTags.end;
-    let startIndex = 0,
-      endIndex = 0;
-
-    this.currentFileSnippetNames = [];
-
-    while ((startIndex = content.indexOf(snippetStartTag, startIndex)) !== -1) {
-      endIndex = content.indexOf(snippetEndTag, startIndex);
-      if (endIndex === -1) break;
-
-      const snippetNameLine = content
-        .substring(
-          startIndex + snippetStartTag.length,
-          content.indexOf('\n', startIndex)
-        )
-        .trim();
-      this.currentFileSnippetNames.push(snippetNameLine);
-
-      startIndex = endIndex + snippetEndTag.length;
-    }
-  }
-
-  gatherImports(content) {
-    const prependStartTag = this.config.snippetTags.prependStart;
-    const prependEndTag = this.config.snippetTags.prependEnd;
-    let startIndex = 0,
-      endIndex = 0;
-
-    while ((startIndex = content.indexOf(prependStartTag, startIndex)) !== -1) {
-      const endOfStartTag = content.indexOf('\n', startIndex);
-      const snippetNamesLine = content
-        .substring(startIndex + prependStartTag.length, endOfStartTag)
-        .trim();
-      const snippetNames = snippetNamesLine.split(/\s+/); // Assuming space-separated names
-
-      endIndex = content.indexOf(prependEndTag, endOfStartTag);
-      if (endIndex === -1) {
-        console.log('No matching :prepend-end: found for :prepend-start:');
-        break;
-      }
-
-      const importBlock = content.substring(endOfStartTag + 1, endIndex).trim();
-
-      snippetNames.forEach((name) => {
-        if (!this.prependBlocks[name]) {
-          this.prependBlocks[name] = [];
-        }
-        this.prependBlocks[name].push(importBlock);
-      });
-
-      startIndex = endIndex + prependEndTag.length;
-    }
-  }
-
-  extractSnippetsFromFile(content, filePath) {
-    const snippets = {};
-    let startIndex = 0, endIndex = 0;
-    const fileExtension = path.extname(filePath);
-  
-    while ((startIndex = content.indexOf(this.config.snippetTags.start, endIndex)) !== -1) {
-      const startTagClose = content.indexOf('\n', startIndex);
-      if (startTagClose === -1) {
-        console.log('Snippet start tag not followed by newline. Skipping...');
-        break;
-      }
-  
-      endIndex = content.indexOf(this.config.snippetTags.end, startTagClose);
-      if (endIndex === -1) {
-        console.log('No closing tag found for a snippet. Skipping...');
-        break;
-      }
-  
-      const snippetName = content.substring(startIndex + this.config.snippetTags.start.length, startTagClose).trim();
-      // Avoid trimming here to preserve original snippet indentation
-      let snippetContent = content.substring(startTagClose + 1, endIndex);
-  
-      // Normalize indentation and remove trailing comment characters here
-      snippetContent = this.normalizeIndentation(snippetContent, fileExtension);
-  
-      if (this.prependBlocks[snippetName]) {
-        const importsToPrepend = this.prependBlocks[snippetName].map(block => block.trimEnd().replace(/\/\/\s*$/, '')).join('\n');
-  
-        const finalImports = importsToPrepend.length > 0 ? `${importsToPrepend}\n` : '';
-        snippetContent = `${finalImports}${snippetContent}`;
-      }
-  
-      if (snippetName) {
-        snippets[snippetName] = snippetContent;
-      }
-  
-      endIndex += this.config.snippetTags.end.length; // Ensure we move past the end tag
-    }
-  
-    return snippets;
-  }
-  
-
-  normalizeIndentation(snippetContent, fileExtension) {
-    // Split the snippet into lines.
-    const lines = snippetContent.split('\n');
-  
-    // Determine the minimum indentation from the first line of the snippet.
-    const firstLine = lines[0];
-    const firstLineIndentation = firstLine.match(/^(\s*)/)[0].length;
-  
-    // Normalize the indentation of each line based on the first line's indentation.
-    const normalizedLines = lines.map(line => {
-      // Check if the current line's indentation is at least as much as the first line's indentation.
-      const currentIndentation = line.match(/^(\s*)/)[0].length;
-
-      if (currentIndentation >= firstLineIndentation) {
-        // Remove the same amount of indentation as the first line from the current line.
-        return line.substring(firstLineIndentation);
-      }
-      return line; // If the line is less indented than the first line, return it as is.
-    });
-  
-    // Determine the comment character based on the file extension.
-    const commentChar = fileExtension === '.bash' ? '#' : '//';
-  
-    // Remove trailing comment characters, if any, from each line.
-    return normalizedLines.map(line => line.replace(new RegExp(`\\s*${commentChar}\\s*$`), '')).join('\n');
-  }
-  
-  
-  
-  
-
-  shouldExcludeFile(content) {
-    // Check if the file content includes any of the strings in the exclude array (only for match)
-    if (this.config.outputDirectoryStructure == 'match') {
-      for (const excludeString of this.config.exclude) {
-        if (content.includes(excludeString)) {
-          return true; // Exclude this file
-        }
-      }
-      return false; // Do not exclude this file
-    }
-  }
-
-  processDirectory(directory, relativePath = '') {
-    const items = fs.readdirSync(directory);
-    for (const item of items) {
-      const fullPath = path.join(directory, item);
-      const stat = fs.statSync(fullPath);
-
-      if (stat.isDirectory()) {
-        this.processDirectory(fullPath, path.join(relativePath, item));
-      } else if (this.config.fileExtensions.includes(path.extname(item))) {
-        const content = fs.readFileSync(fullPath, 'utf-8');
-
-        this.prependBlocks = {};
-
-        this.gatherSnippetNames(content);
-        // Gather imports/prepends for the current file
-        this.gatherImports(content, fullPath);
-
-        if (!this.shouldExcludeFile(content)) {
-          const fileSnippets = this.extractSnippetsFromFile(content, fullPath);
-          this.writeSnippetsToFile(fileSnippets, fullPath, relativePath);
-        }
-      }
-    }
-  }
-
-  writeSnippetsToFile(snippets, fullPath, relativePath) {
-    for (const [snippetName, snippetContent] of Object.entries(snippets)) {
-      let outputPath;
-
-      switch (this.config.outputDirectoryStructure) {
-        case 'match':
-          // For "match", save the snippet in its original form without converting to a JS module
-          outputPath = path.join(
-            this.config.outputDirectory,
-            relativePath,
-            `${snippetName}.snippet${path.extname(fullPath)}`
-          );
-          if (!fs.existsSync(path.dirname(outputPath))) {
-            fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-          }
-          fs.writeFileSync(outputPath, snippetContent);
-          break;
-        case 'flat':
-        case 'byLanguage':
-        case 'organized':
-        default:
-          // Handle other cases as before
-          outputPath = this.determineOutputPath(
-            snippetName,
-            fullPath,
-            relativePath
-          );
-          // Ensure the output directory exists
-          if (!fs.existsSync(path.dirname(outputPath))) {
-            fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-          }
-          // For configurations other than "match", wrap the content in a JS module
-          fs.writeFileSync(
-            outputPath,
-            `export default ${JSON.stringify(snippetContent)};`
-          );
-          break;
-      }
-    }
-  }
-
-  determineOutputPath(snippetName, fullPath, relativePath) {
-    const extension = path.extname(fullPath);
-    const language = this.getLanguageFromExtension(extension);
-    let outputPath;
-
-    switch (this.config.outputDirectoryStructure) {
-      case 'flat':
-        outputPath = path.join(
-          this.config.outputDirectory,
-          `${snippetName}.snippet${extension}`
-        );
-        break;
-      case 'match':
-        outputPath = path.join(
-          this.config.outputDirectory,
-          relativePath,
-          `${snippetName}.snippet${extension}`
-        );
-        break;
-      case 'byLanguage':
-        outputPath = path.join(
-          this.config.outputDirectory,
-          language,
-          `${snippetName}.snippet.js`
-        );
-        break;
-      case 'organized':
-      default:
-        outputPath = path.join(
-          this.config.outputDirectory,
-          language,
-          snippetName,
-          `index${extension}`
-        );
-        break;
-    }
-
-    if (!fs.existsSync(path.dirname(outputPath))) {
-      fs.mkdirSync(path.dirname(outputPath), { recursive: true });
-    }
-
-    return outputPath;
-  }
-
-  getLanguageFromExtension(extension) {
-    const extensionToLanguageMap = {
-      '.js': 'js',
-      '.ts': 'typescript',
-      '.kt': 'kt',
-      '.swift': 'swift',
-      '.gradle': 'gradle',
-      '.bash': 'bash',
-      '.xml': 'xml',
-    };
-
-    return extensionToLanguageMap[extension] || 'other';
-  }
-
-  extractSnippets() {
-    if (!fs.existsSync(this.config.outputDirectory)) {
-      fs.mkdirSync(this.config.outputDirectory, { recursive: true });
-    }
-    this.processDirectory(this.config.rootDirectory);
-  }
-}
-
-module.exports = SnippetExtractor;
diff --git a/site-new/package.json b/site-new/package.json
index 6582a1d65..cbfc2df21 100644
--- a/site-new/package.json
+++ b/site-new/package.json
@@ -1,9 +1,8 @@
 {
-  "name": "site-new",
-  "version": "0.0.0",
+  "name": "site",
+  "version": "1.0.0",
   "private": true,
   "scripts": {
-    "docusaurus": "docusaurus",
     "start": "docusaurus start",
     "build": "docusaurus build",
     "swizzle": "docusaurus swizzle",
@@ -12,7 +11,8 @@
     "serve": "docusaurus serve",
     "write-translations": "docusaurus write-translations",
     "write-heading-ids": "docusaurus write-heading-ids",
-    "typecheck": "tsc"
+    "typecheck": "tsc",
+    "snippets": "pnpm shnip --config ./shnip.config.js"
   },
   "dependencies": {
     "@docusaurus/core": "3.5.2",
@@ -20,19 +20,50 @@
     "@docusaurus/plugin-content-docs": "3.5.2",
     "@docusaurus/preset-classic": "3.5.2",
     "@docusaurus/theme-common": "3.5.2",
+    "@fortawesome/fontawesome-svg-core": "6.4.2",
+    "@fortawesome/free-solid-svg-icons": "6.4.2",
+    "@fortawesome/react-fontawesome": "0.2.0",
     "@mdx-js/react": "^3.0.0",
     "@radix-ui/react-accordion": "^1.2.0",
     "@radix-ui/react-checkbox": "^1.1.1",
     "@radix-ui/react-label": "^2.1.0",
+    "@tbdex/http-client": "1.1.0",
+    "@tbdex/http-server": "1.1.0",
+    "@tbdex/protocol": "1.1.0",
+    "@web5/api": "0.12.0",
+    "@web5/common": "1.0.0",
+    "@web5/credentials": "1.1.1",
+    "@web5/crypto": "1.0.5",
+    "@web5/crypto-aws-kms": "1.0.5",
+    "@web5/dids": "1.1.5",
+    "@web5/identity-agent": "0.6.4",
+    "bluehawk": "1.4.0",
     "clsx": "^2.0.0",
     "date-fns": "^4.1.0",
     "docusaurus-plugin-sass": "^0.2.5",
+    "express": "4.18.2",
+    "font-awesome": "4.7.0",
+    "googleapis": "128.0.0",
+    "msw": "2.1.7",
+    "node-fetch": "3.3.2",
+    "process": "0.11.10",
     "prism-react-renderer": "^2.3.0",
+    "qrcode": "1.5.3",
     "react": "^18.0.0",
+    "react-confetti": "6.1.0",
     "react-dom": "^18.0.0",
+    "react-fontawesome": "1.7.1",
+    "react-markdown": "8.0.7",
     "react-player": "2.11.2",
+    "react-qr-reader": "3.0.0-beta-1",
+    "react-slick": "0.29.0",
+    "react18-json-view": "0.2.8",
     "sass": "1.63.6",
-    "tailwind-merge": "^2.5.2"
+    "shnip": "0.0.2-alpha",
+    "slick-carousel": "1.8.1",
+    "tailwind-merge": "^2.5.2",
+    "url": "0.11.4",
+    "xml2js": "0.6.2"
   },
   "devDependencies": {
     "@docusaurus/eslint-plugin": "^3.5.2",
@@ -67,4 +98,4 @@
   "engines": {
     "node": ">=18.0"
   }
-}
+}
\ No newline at end of file
diff --git a/shnip/config/shnip.config.ts b/site-new/shnip.config.js
similarity index 78%
rename from shnip/config/shnip.config.ts
rename to site-new/shnip.config.js
index c1c26c9d5..22ce78d8d 100644
--- a/shnip/config/shnip.config.ts
+++ b/site-new/shnip.config.js
@@ -1,6 +1,6 @@
 export const config = {
-  rootDirectory: "./site-new/testsuites",
-  snippetOutputDirectory: "./site-new/snippets",
+  rootDirectory: "./testsuites",
+  snippetOutputDirectory: "./snippets",
   fileExtensions: [".js", ".ts", ".kt", ".gradle", ".xml", ".bash", ".swift"],
   exclude: [
     "pfiOverviewReadOfferingsJs",
@@ -14,5 +14,4 @@ export const config = {
     prependEnd: ":prepend-end:",
   },
   outputDirectoryStructure: "byLanguage",
-  version: "1.0.0",
 };