diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6f877b5..d530241 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,18 +8,21 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v2 + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 with: version: latest - name: Setup Node.js environment - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 24 - name: Install dependencies run: pnpm install --ignore-scripts @@ -28,3 +31,5 @@ jobs: run: pnpm build - name: Test all packages run: pnpm test + env: + BEGIT_GH_API_KEY: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 5bf8787..ba04bab 100644 --- a/.gitignore +++ b/.gitignore @@ -94,6 +94,9 @@ dist # SWC Plugin Cache .swc +# Turbopack files +.turbo + # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js @@ -131,3 +134,9 @@ dist .yarn/build-state.yml .yarn/install-state.gz .pnp.* + +# Test directory +test + +# Build output +types \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 1ef1d53..39e2e9f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,2 @@ **/*.rs **/*.yaml -packages/swc-plugin-solid-cli \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 8af17f2..df8a347 100644 --- a/.prettierrc +++ b/.prettierrc @@ -7,5 +7,6 @@ "tabWidth": 2, "trailingComma": "all", "useTabs": true, - "quoteProps": "consistent" + "quoteProps": "consistent", + "endOfLine": "auto" } diff --git a/README.md b/README.md index 867dcb0..aa0e49a 100644 --- a/README.md +++ b/README.md @@ -2,83 +2,20 @@ Solid CLI

-# Solid CLI (This is currently very much still in beta) +# Solid CLI [![Build and Test](https://github.com/solidjs-community/solid-cli/actions/workflows/tests.yml/badge.svg)](https://github.com/solidjs-community/solid-cli/actions/workflows/tests.yml) [![Netlify Status](https://api.netlify.com/api/v1/badges/5233ac74-3f53-4c90-b95d-25b528b931a1/deploy-status)](https://app.netlify.com/sites/solid-cli/deploys) -A custom CLI built for the purpose of installing and managing SolidJS apps and projects. The goal of the CLI is to provide a useful and powerful utility to installing any dependencies, searching the Solid ecosystem etc. +A CLI for creating and managing SolidJS apps and projects. -# Roadmap/Features +## Commands -- [x] Templates - - [x] From Degit -- [x] Docs -- [ ] Primitives - - [ ] Add/remove/update primitives - - [x] Search list of primitives -- [ ] Integrations - - [ ] Auth.js - - [x] Tailwind - - [ ] PandaCSS - - [ ] Cypress - - [ ] PostCSS - - [x] UnoCSS - - [ ] Vanilla Extract - - [ ] Vitest - - [ ] Tauri - - [ ] Playwright -- [ ] Utilities - - [ ] eslint-plugin-solid - - [x] solid-devtools -- [ ] Misc - - [x] Launch new Stackblitz - - [ ] Launch new CodeSandBox -- [x] SolidStart - - [x] New route - - [x] New data file - - [x] Enable Adapters - - [x] Enable SSR/CSR/SSG mode +- `sd create`: See [create-solid](./packages/create-solid) +- `sd docs`: Opens the Solid docs in the browser +- `sd start`: Special keyword for SolidStart commands + - `route`: Creates a new route ie. `sd start route login` -# CLI Design +## Contributing -The CLI will use `solid` as the initialiation keyword. The CLI commands will then cascade based on groupings determined baed on what the action does defined by higher level actions. The actions will be: - -- `version`: Displays a changelog of recent Solid versions - - `start`: Specific command for Start versions -- `docs`: List a `man`-like page for versioned docs or link out to the docs -- `primitives`: Potential integration with Solid Primitives -- `add`, `remove`: Used for adding and installing integrations/packages ie. `solid add tailwind` -- `config`: For enabling a certain features ie. `solid config vite _____` -- `start`: Special keyword for SolidStart commands - - `mode`: Changes the Start serving mode (ssr/csr/ssg) `solid mode ssr` - - `route`: Creates a new route ie. `solid start route login` -- `new`: Opens your browser to a new template via CSB/SB ie. `solid new bare --stackblitz` opens -- `ecosystem` - - `add`: Starts the process of submitting your current project to our ecosystem listing (Solidex) ie. `solid ecosystem publish` - - `search`: Initializes an ecosystem search result `solid ecosystem search auth` - -# Development Path - -We will need to decide what framework and language we will use to develop this utility. - -## JS - -- [`Solid Ink`](https://github.com/devinxi/solid-ink) - Needs to be maintained but expands our ecosystem -- [`Ink`](https://github.com/vadimdemedes/ink) - React-based and popular -- [`Clack`](https://github.com/natemoo-re/clack) - Used by Astro -- [`Tiny Bin`](https://github.com/fabiospampinato/tiny-bin) - By Fabio! -- [`Prompts`](https://github.com/terkelg/prompts) - Popular and well maintained - -## Rust - -- [`TUI-RS`](https://github.com/fdehau/tui-rs) - Great for using SWC - -## Go - -- [`BubbleTea`](https://github.com/charmbracelet/bubbletea) - Beautiful CLI builder lots of tools -- [`Cobra`](https://github.com/spf13/cobra) - Used by K8 - -# Contributions - -Please feel free to contribute to this repo by expanding on this design document. Once we lock a general design a choice of technology will be decided. +Please feel free to contribute to this repo by creating an issue or a PR. diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index f3c937e..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -vitepress_docs/.vitepress/cache \ No newline at end of file diff --git a/docs/package.json b/docs/package.json deleted file mode 100644 index a7290e5..0000000 --- a/docs/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "private": true, - "scripts": { - "docs:dev": "vitepress dev vitepress_docs", - "docs:build": "vitepress build vitepress_docs", - "docs:preview": "vitepress preview vitepress_docs" - }, - "devDependencies": { - "flexsearch": "^0.7.31", - "vitepress": "1.0.0-beta.5", - "vitepress-plugin-search": "1.0.4-alpha.20", - "vue": "^3.3.4" - } -} diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml deleted file mode 100644 index 393c03e..0000000 --- a/docs/pnpm-lock.yaml +++ /dev/null @@ -1,948 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -devDependencies: - flexsearch: - specifier: ^0.7.31 - version: 0.7.31 - vitepress: - specifier: 1.0.0-beta.5 - version: 1.0.0-beta.5(@algolia/client-search@4.18.0)(search-insights@2.7.0) - vitepress-plugin-search: - specifier: 1.0.4-alpha.20 - version: 1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-beta.5)(vue@3.3.4) - vue: - specifier: ^3.3.4 - version: 3.3.4 - -packages: - - /@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} - dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights - dev: true - - /@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - search-insights: 2.7.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: true - - /@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): - resolution: {integrity: sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - '@algolia/client-search': 4.18.0 - algoliasearch: 4.18.0 - dev: true - - /@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0): - resolution: {integrity: sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/client-search': 4.18.0 - algoliasearch: 4.18.0 - dev: true - - /@algolia/cache-browser-local-storage@4.18.0: - resolution: {integrity: sha512-rUAs49NLlO8LVLgGzM4cLkw8NJLKguQLgvFmBEe3DyzlinoqxzQMHfKZs6TSq4LZfw/z8qHvRo8NcTAAUJQLcw==} - dependencies: - '@algolia/cache-common': 4.18.0 - dev: true - - /@algolia/cache-common@4.18.0: - resolution: {integrity: sha512-BmxsicMR4doGbeEXQu8yqiGmiyvpNvejYJtQ7rvzttEAMxOPoWEHrWyzBQw4x7LrBY9pMrgv4ZlUaF8PGzewHg==} - dev: true - - /@algolia/cache-in-memory@4.18.0: - resolution: {integrity: sha512-evD4dA1nd5HbFdufBxLqlJoob7E2ozlqJZuV3YlirNx5Na4q1LckIuzjNYZs2ddLzuTc/Xd5O3Ibf7OwPskHxw==} - dependencies: - '@algolia/cache-common': 4.18.0 - dev: true - - /@algolia/client-account@4.18.0: - resolution: {integrity: sha512-XsDnlROr3+Z1yjxBJjUMfMazi1V155kVdte6496atvBgOEtwCzTs3A+qdhfsAnGUvaYfBrBkL0ThnhMIBCGcew==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/client-search': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-analytics@4.18.0: - resolution: {integrity: sha512-chEUSN4ReqU7uRQ1C8kDm0EiPE+eJeAXiWcBwLhEynfNuTfawN9P93rSZktj7gmExz0C8XmkbBU19IQ05wCNrQ==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/client-search': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-common@4.18.0: - resolution: {integrity: sha512-7N+soJFP4wn8tjTr3MSUT/U+4xVXbz4jmeRfWfVAzdAbxLAQbHa0o/POSdTvQ8/02DjCLelloZ1bb4ZFVKg7Wg==} - dependencies: - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-personalization@4.18.0: - resolution: {integrity: sha512-+PeCjODbxtamHcPl+couXMeHEefpUpr7IHftj4Y4Nia1hj8gGq4VlIcqhToAw8YjLeCTfOR7r7xtj3pJcYdP8A==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/client-search@4.18.0: - resolution: {integrity: sha512-F9xzQXTjm6UuZtnsLIew6KSraXQ0AzS/Ee+OD+mQbtcA/K1sg89tqb8TkwjtiYZ0oij13u3EapB3gPZwm+1Y6g==} - dependencies: - '@algolia/client-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /@algolia/logger-common@4.18.0: - resolution: {integrity: sha512-46etYgSlkoKepkMSyaoriSn2JDgcrpc/nkOgou/lm0y17GuMl9oYZxwKKTSviLKI5Irk9nSKGwnBTQYwXOYdRg==} - dev: true - - /@algolia/logger-console@4.18.0: - resolution: {integrity: sha512-3P3VUYMl9CyJbi/UU1uUNlf6Z8N2ltW3Oqhq/nR7vH0CjWv32YROq3iGWGxB2xt3aXobdUPXs6P0tHSKRmNA6g==} - dependencies: - '@algolia/logger-common': 4.18.0 - dev: true - - /@algolia/requester-browser-xhr@4.18.0: - resolution: {integrity: sha512-/AcWHOBub2U4TE/bPi4Gz1XfuLK6/7dj4HJG+Z2SfQoS1RjNLshZclU3OoKIkFp8D2NC7+BNsPvr9cPLyW8nyQ==} - dependencies: - '@algolia/requester-common': 4.18.0 - dev: true - - /@algolia/requester-common@4.18.0: - resolution: {integrity: sha512-xlT8R1qYNRBCi1IYLsx7uhftzdfsLPDGudeQs+xvYB4sQ3ya7+ppolB/8m/a4F2gCkEO6oxpp5AGemM7kD27jA==} - dev: true - - /@algolia/requester-node-http@4.18.0: - resolution: {integrity: sha512-TGfwj9aeTVgOUhn5XrqBhwUhUUDnGIKlI0kCBMdR58XfXcfdwomka+CPIgThRbfYw04oQr31A6/95ZH2QVJ9UQ==} - dependencies: - '@algolia/requester-common': 4.18.0 - dev: true - - /@algolia/transporter@4.18.0: - resolution: {integrity: sha512-xbw3YRUGtXQNG1geYFEDDuFLZt4Z8YNKbamHPkzr3rWc6qp4/BqEeXcI2u/P/oMq2yxtXgMxrCxOPA8lyIe5jw==} - dependencies: - '@algolia/cache-common': 4.18.0 - '@algolia/logger-common': 4.18.0 - '@algolia/requester-common': 4.18.0 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/parser@7.22.7: - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - dev: true - - /@docsearch/css@3.5.1: - resolution: {integrity: sha512-2Pu9HDg/uP/IT10rbQ+4OrTQuxIWdKVUEdcw9/w7kZJv9NeHS6skJx1xuRiFyoGKwAzcHXnLp7csE99sj+O1YA==} - dev: true - - /@docsearch/js@3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-EXi8de5njxgP6TV3N9ytnGRLG9zmBNTEZjR4VzwPcpPLbZxxTLG2gaFyJyKiFVQxHW/DPlMrDJA3qoRRGEkgZw==} - dependencies: - '@docsearch/react': 3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0) - preact: 10.16.0 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - react - - react-dom - - search-insights - dev: true - - /@docsearch/react@3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-t5mEODdLzZq4PTFAm/dvqcvZFdPDMdfPE5rJS5SC8OUq9mPzxEy6b+9THIqNM9P0ocCb4UC5jqBrxKclnuIbzQ==} - peerDependencies: - '@types/react': '>= 16.8.0 < 19.0.0' - react: '>= 16.8.0 < 19.0.0' - react-dom: '>= 16.8.0 < 19.0.0' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - react-dom: - optional: true - dependencies: - '@algolia/autocomplete-core': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0)(search-insights@2.7.0) - '@algolia/autocomplete-preset-algolia': 1.9.3(@algolia/client-search@4.18.0)(algoliasearch@4.18.0) - '@docsearch/css': 3.5.1 - algoliasearch: 4.18.0 - transitivePeerDependencies: - - '@algolia/client-search' - - search-insights - dev: true - - /@esbuild/android-arm64@0.18.13: - resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.18.13: - resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.18.13: - resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.18.13: - resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.18.13: - resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.18.13: - resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.18.13: - resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.18.13: - resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.18.13: - resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.18.13: - resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.18.13: - resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.18.13: - resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.18.13: - resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.18.13: - resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.18.13: - resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.18.13: - resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.13: - resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.18.13: - resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.13: - resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.13: - resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.18.13: - resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@types/flexsearch@0.7.3: - resolution: {integrity: sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==} - dev: true - - /@types/linkify-it@3.0.2: - resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} - dev: true - - /@types/markdown-it@12.2.3: - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} - dependencies: - '@types/linkify-it': 3.0.2 - '@types/mdurl': 1.0.2 - dev: true - - /@types/mdurl@1.0.2: - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} - dev: true - - /@types/web-bluetooth@0.0.17: - resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==} - dev: true - - /@vitejs/plugin-vue@4.2.3(vite@4.4.0-beta.3)(vue@3.3.4): - resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.0.0 - vue: ^3.2.25 - dependencies: - vite: 4.4.0-beta.3 - vue: 3.3.4 - dev: true - - /@vue/compiler-core@3.3.4: - resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} - dependencies: - '@babel/parser': 7.22.7 - '@vue/shared': 3.3.4 - estree-walker: 2.0.2 - source-map-js: 1.0.2 - dev: true - - /@vue/compiler-dom@3.3.4: - resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==} - dependencies: - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 - dev: true - - /@vue/compiler-sfc@3.3.4: - resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} - dependencies: - '@babel/parser': 7.22.7 - '@vue/compiler-core': 3.3.4 - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-ssr': 3.3.4 - '@vue/reactivity-transform': 3.3.4 - '@vue/shared': 3.3.4 - estree-walker: 2.0.2 - magic-string: 0.30.1 - postcss: 8.4.26 - source-map-js: 1.0.2 - dev: true - - /@vue/compiler-ssr@3.3.4: - resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==} - dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/shared': 3.3.4 - dev: true - - /@vue/devtools-api@6.5.0: - resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - dev: true - - /@vue/reactivity-transform@3.3.4: - resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} - dependencies: - '@babel/parser': 7.22.7 - '@vue/compiler-core': 3.3.4 - '@vue/shared': 3.3.4 - estree-walker: 2.0.2 - magic-string: 0.30.1 - dev: true - - /@vue/reactivity@3.3.4: - resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} - dependencies: - '@vue/shared': 3.3.4 - dev: true - - /@vue/runtime-core@3.3.4: - resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==} - dependencies: - '@vue/reactivity': 3.3.4 - '@vue/shared': 3.3.4 - dev: true - - /@vue/runtime-dom@3.3.4: - resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==} - dependencies: - '@vue/runtime-core': 3.3.4 - '@vue/shared': 3.3.4 - csstype: 3.1.2 - dev: true - - /@vue/server-renderer@3.3.4(vue@3.3.4): - resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==} - peerDependencies: - vue: 3.3.4 - dependencies: - '@vue/compiler-ssr': 3.3.4 - '@vue/shared': 3.3.4 - vue: 3.3.4 - dev: true - - /@vue/shared@3.3.4: - resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} - dev: true - - /@vueuse/core@10.2.1(vue@3.3.4): - resolution: {integrity: sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==} - dependencies: - '@types/web-bluetooth': 0.0.17 - '@vueuse/metadata': 10.2.1 - '@vueuse/shared': 10.2.1(vue@3.3.4) - vue-demi: 0.14.5(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/integrations@10.2.1(focus-trap@7.5.2)(vue@3.3.4): - resolution: {integrity: sha512-FDP5lni+z9FjHE9H3xuvwSjoRV9U8jmDvJpmHPCBjUgPGYRynwb60eHWXCFJXLUtb4gSIHy0e+iaEbrKdalCkQ==} - peerDependencies: - async-validator: '*' - axios: '*' - change-case: '*' - drauu: '*' - focus-trap: '*' - fuse.js: '*' - idb-keyval: '*' - jwt-decode: '*' - nprogress: '*' - qrcode: '*' - sortablejs: '*' - universal-cookie: '*' - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - dependencies: - '@vueuse/core': 10.2.1(vue@3.3.4) - '@vueuse/shared': 10.2.1(vue@3.3.4) - focus-trap: 7.5.2 - vue-demi: 0.14.5(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /@vueuse/metadata@10.2.1: - resolution: {integrity: sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ==} - dev: true - - /@vueuse/shared@10.2.1(vue@3.3.4): - resolution: {integrity: sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==} - dependencies: - vue-demi: 0.14.5(vue@3.3.4) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - dev: true - - /algoliasearch@4.18.0: - resolution: {integrity: sha512-pCuVxC1SVcpc08ENH32T4sLKSyzoU7TkRIDBMwSLfIiW+fq4znOmWDkAygHZ6pRcO9I1UJdqlfgnV7TRj+MXrA==} - dependencies: - '@algolia/cache-browser-local-storage': 4.18.0 - '@algolia/cache-common': 4.18.0 - '@algolia/cache-in-memory': 4.18.0 - '@algolia/client-account': 4.18.0 - '@algolia/client-analytics': 4.18.0 - '@algolia/client-common': 4.18.0 - '@algolia/client-personalization': 4.18.0 - '@algolia/client-search': 4.18.0 - '@algolia/logger-common': 4.18.0 - '@algolia/logger-console': 4.18.0 - '@algolia/requester-browser-xhr': 4.18.0 - '@algolia/requester-common': 4.18.0 - '@algolia/requester-node-http': 4.18.0 - '@algolia/transporter': 4.18.0 - dev: true - - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /body-scroll-lock@4.0.0-beta.0: - resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} - dev: true - - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: true - - /entities@3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - dev: true - - /esbuild@0.18.13: - resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.13 - '@esbuild/android-arm64': 0.18.13 - '@esbuild/android-x64': 0.18.13 - '@esbuild/darwin-arm64': 0.18.13 - '@esbuild/darwin-x64': 0.18.13 - '@esbuild/freebsd-arm64': 0.18.13 - '@esbuild/freebsd-x64': 0.18.13 - '@esbuild/linux-arm': 0.18.13 - '@esbuild/linux-arm64': 0.18.13 - '@esbuild/linux-ia32': 0.18.13 - '@esbuild/linux-loong64': 0.18.13 - '@esbuild/linux-mips64el': 0.18.13 - '@esbuild/linux-ppc64': 0.18.13 - '@esbuild/linux-riscv64': 0.18.13 - '@esbuild/linux-s390x': 0.18.13 - '@esbuild/linux-x64': 0.18.13 - '@esbuild/netbsd-x64': 0.18.13 - '@esbuild/openbsd-x64': 0.18.13 - '@esbuild/sunos-x64': 0.18.13 - '@esbuild/win32-arm64': 0.18.13 - '@esbuild/win32-ia32': 0.18.13 - '@esbuild/win32-x64': 0.18.13 - dev: true - - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /flexsearch@0.7.31: - resolution: {integrity: sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==} - dev: true - - /focus-trap@7.5.2: - resolution: {integrity: sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==} - dependencies: - tabbable: 6.2.0 - dev: true - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /linkify-it@4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} - dependencies: - uc.micro: 1.0.6 - dev: true - - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /mark.js@8.11.1: - resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} - dev: true - - /markdown-it@13.0.1: - resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 3.0.1 - linkify-it: 4.0.1 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true - - /minisearch@6.1.0: - resolution: {integrity: sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==} - dev: true - - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /postcss@8.4.26: - resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /preact@10.16.0: - resolution: {integrity: sha512-XTSj3dJ4roKIC93pald6rWuB2qQJO9gO2iLLyTe87MrjQN+HklueLsmskbywEWqCHlclgz3/M4YLL2iBr9UmMA==} - dev: true - - /rollup@3.26.2: - resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /search-insights@2.7.0: - resolution: {integrity: sha512-GLbVaGgzYEKMvuJbHRhLi1qoBFnjXZGZ6l4LxOYPCp4lI2jDRB3jPU9/XNhMwv6kvnA9slTreq6pvK+b3o3aqg==} - engines: {node: '>=8.16.0'} - dev: true - - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} - dependencies: - ansi-sequence-parser: 1.1.0 - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true - - /vite@4.4.0-beta.3: - resolution: {integrity: sha512-IC/thYTvArOFRJ4qvvudnu4KKZOVc+gduS3I9OfC5SbP/Rf4kkP7z6Of2QpKeOSVqwIK24khW6VOUmVD/0yzSQ==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.18.13 - postcss: 8.4.26 - rollup: 3.26.2 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vitepress-plugin-search@1.0.4-alpha.20(flexsearch@0.7.31)(vitepress@1.0.0-beta.5)(vue@3.3.4): - resolution: {integrity: sha512-zG+ev9pw1Mg7htABlFCNXb8XwnKN+qfTKw+vU0Ers6RIrABx+45EAAFBoaL1mEpl1FRFn1o/dQ7F4b8GP6HdGQ==} - engines: {node: ^14.13.1 || ^16.7.0 || >=18} - peerDependencies: - flexsearch: ^0.7.31 - vitepress: ^1.0.0-alpha.65 - vue: '3' - dependencies: - '@types/flexsearch': 0.7.3 - '@types/markdown-it': 12.2.3 - flexsearch: 0.7.31 - glob-to-regexp: 0.4.1 - markdown-it: 13.0.1 - vitepress: 1.0.0-beta.5(@algolia/client-search@4.18.0)(search-insights@2.7.0) - vue: 3.3.4 - dev: true - - /vitepress@1.0.0-beta.5(@algolia/client-search@4.18.0)(search-insights@2.7.0): - resolution: {integrity: sha512-/RjqqRsSEKkzF6HhK5e5Ij+bZ7ETb9jNCRRgIMm10gJ+ZLC3D1OqkE465lEqCeJUgt2HZ6jmWjDqIBfrJSpv7w==} - hasBin: true - dependencies: - '@docsearch/css': 3.5.1 - '@docsearch/js': 3.5.1(@algolia/client-search@4.18.0)(search-insights@2.7.0) - '@vitejs/plugin-vue': 4.2.3(vite@4.4.0-beta.3)(vue@3.3.4) - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.2.1(vue@3.3.4) - '@vueuse/integrations': 10.2.1(focus-trap@7.5.2)(vue@3.3.4) - body-scroll-lock: 4.0.0-beta.0 - focus-trap: 7.5.2 - mark.js: 8.11.1 - minisearch: 6.1.0 - shiki: 0.14.3 - vite: 4.4.0-beta.3 - vue: 3.3.4 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - lightningcss - - nprogress - - qrcode - - react - - react-dom - - sass - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - universal-cookie - dev: true - - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true - - /vscode-textmate@8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} - dev: true - - /vue-demi@0.14.5(vue@3.3.4): - resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - dependencies: - vue: 3.3.4 - dev: true - - /vue@3.3.4: - resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} - dependencies: - '@vue/compiler-dom': 3.3.4 - '@vue/compiler-sfc': 3.3.4 - '@vue/runtime-dom': 3.3.4 - '@vue/server-renderer': 3.3.4(vue@3.3.4) - '@vue/shared': 3.3.4 - dev: true diff --git a/docs/pnpm-workspace.yaml b/docs/pnpm-workspace.yaml deleted file mode 100644 index e69de29..0000000 diff --git a/docs/vitepress_docs/.vitepress/config.ts b/docs/vitepress_docs/.vitepress/config.ts deleted file mode 100644 index d82218a..0000000 --- a/docs/vitepress_docs/.vitepress/config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { defineConfig } from "vitepress"; -import { SearchPlugin } from "vitepress-plugin-search"; -// https://vitepress.dev/reference/site-config -export default defineConfig({ - title: "Solid-CLI Docs", - description: "Documentation for the Solid CLI", - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: "Home", link: "/" }, - { text: "Guide", link: "/about" }, - ], - - sidebar: [ - { - text: "Getting started", - items: [ - { text: "About", link: "/about" }, - { text: "Installation", link: "/installation" }, - { text: "Basic Commands", link: "/basic-commands" }, - { text: "Solid-Start Commands", link: "/start-commands" }, - ], - }, - { text: "Supported Integrations", link: "/supported-integrations" }, - ], - socialLinks: [ - { - icon: "github", - link: "https://github.com/solidjs-community/solid-cli", - }, - ], - }, - vite: { plugins: [SearchPlugin()] }, -}); diff --git a/docs/vitepress_docs/.vitepress/theme/index.ts b/docs/vitepress_docs/.vitepress/theme/index.ts deleted file mode 100644 index 09d0a1a..0000000 --- a/docs/vitepress_docs/.vitepress/theme/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -// https://vitepress.dev/guide/custom-theme -import { h } from "vue"; -import Theme from "vitepress/theme"; -import "./style.css"; - -export default { - extends: Theme, - Layout: () => { - return h(Theme.Layout, null, { - // https://vitepress.dev/guide/extending-default-theme#layout-slots - }); - }, - enhanceApp({ app, router, siteData }) { - // ... - }, -}; diff --git a/docs/vitepress_docs/.vitepress/theme/style.css b/docs/vitepress_docs/.vitepress/theme/style.css deleted file mode 100644 index bab0266..0000000 --- a/docs/vitepress_docs/.vitepress/theme/style.css +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Customize default theme styling by overriding CSS variables: - * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css - */ - -/** - * Colors - * -------------------------------------------------------------------------- */ - -:root { - --vp-c-brand: #646cff; - --vp-c-brand-light: #747bff; - --vp-c-brand-lighter: #9499ff; - --vp-c-brand-lightest: #bcc0ff; - --vp-c-brand-dark: #535bf2; - --vp-c-brand-darker: #454ce1; - --vp-c-brand-dimm: rgba(100, 108, 255, 0.08); -} - -/** - * Component: Button - * -------------------------------------------------------------------------- */ - -:root { - --vp-button-brand-border: var(--vp-c-brand-light); - --vp-button-brand-text: var(--vp-c-white); - --vp-button-brand-bg: var(--vp-c-brand); - --vp-button-brand-hover-border: var(--vp-c-brand-light); - --vp-button-brand-hover-text: var(--vp-c-white); - --vp-button-brand-hover-bg: var(--vp-c-brand-light); - --vp-button-brand-active-border: var(--vp-c-brand-light); - --vp-button-brand-active-text: var(--vp-c-white); - --vp-button-brand-active-bg: var(--vp-button-brand-bg); -} - -/** - * Component: Home - * -------------------------------------------------------------------------- */ - -:root { - --vp-home-hero-name-color: transparent; - --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe 30%, #41d1ff); - - --vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%); - --vp-home-hero-image-filter: blur(40px); -} - -@media (min-width: 640px) { - :root { - --vp-home-hero-image-filter: blur(56px); - } -} - -@media (min-width: 960px) { - :root { - --vp-home-hero-image-filter: blur(72px); - } -} - -/** - * Component: Custom Block - * -------------------------------------------------------------------------- */ - -:root { - --vp-custom-block-tip-border: var(--vp-c-brand); - --vp-custom-block-tip-text: var(--vp-c-brand-darker); - --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); -} - -.dark { - --vp-custom-block-tip-border: var(--vp-c-brand); - --vp-custom-block-tip-text: var(--vp-c-brand-lightest); - --vp-custom-block-tip-bg: var(--vp-c-brand-dimm); -} - -/** - * Component: Algolia - * -------------------------------------------------------------------------- */ - -.DocSearch { - --docsearch-primary-color: var(--vp-c-brand) !important; -} diff --git a/docs/vitepress_docs/about.md b/docs/vitepress_docs/about.md deleted file mode 100644 index 504eb5c..0000000 --- a/docs/vitepress_docs/about.md +++ /dev/null @@ -1,17 +0,0 @@ -# About - -The Solid CLI is a tool aiming to make the Solid development experience easier, faster, and less error prone. - -## Features - -### Automatic Config manipulation - -Can automatically update your config to enable solid features, such as toggling SSR, or adding adapters. - -### Adding integrations - -Can automatically install and configure supported packages. - -### Project creation - -Provides an easy way to create new projects, whether that be locally, or on a platform such as stackblitz or codesandbox. diff --git a/docs/vitepress_docs/basic-commands.md b/docs/vitepress_docs/basic-commands.md deleted file mode 100644 index 8fe045c..0000000 --- a/docs/vitepress_docs/basic-commands.md +++ /dev/null @@ -1,84 +0,0 @@ -# Basic Commands - -### `Add` - -```sh -solid add -``` - -Used to add packages and setup integrations. - -::: info -By default, when no arguments or flags are passed, this command will open up a searchable multiselect for you to be able to search through -all supported integrations and packages. You can select the ones you want to use through there. -::: - -**Options** - -| Option | Description | -| --------------- | ------------------------------------------------------------------------------------------------------ | -| `` | List of integrations you want to add to your project (ie. unocss, vitepwa, solid-devtools) | -| `--force` | Force apply any changes to the config to add the integration(s) even if they already exist `(boolean)` | - ---- - -### `New` - -```sh -solid new -``` - -Creates a new solid project with the selected variation and name. - -This can also be used to spin up a new stackblitz or codesandbox instance. - -**Options** - -| Option | Description | -| -------------------------- | ------------------------------------------------------------------------------------------- | -| `` | The variation you want to start the project from. One of the following: "bare", "js", "ts". | -| `` | The name of the project and the folder to create it in. | -| `--stackblitz (short: -s)` | Create the project with the variation in a stackblitz instance. `(boolean)` | - ---- - -### `Docs` - -```sh -solid docs -``` - -Searches for a given keyword within the main solid documentation sites - -**Options** - -| Option | Description | -| ----------- | ---------------------------------------------- | -| `` | The keyword to search within the docs websites | - ---- - -### `Set` - -```sh -solid set -``` - -Sets a specified config parameter to a specified value - -**Options** - -| Option | Description | -| --------- | -------------------------------- | -| `` | The key within the config to set | -| `` | The value to set that key to | - ---- - -### `Playground` - -```sh -solid playground -``` - -Attempts to open the [Solid Playground](https://playground.solidjs.com) in the browser diff --git a/docs/vitepress_docs/index.md b/docs/vitepress_docs/index.md deleted file mode 100644 index 551ee49..0000000 --- a/docs/vitepress_docs/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "Solid-CLI Docs" - text: "Documentation for the Solid CLI" - tagline: A solid cli - actions: - - theme: brand - text: Get started - link: /about -features: - - title: Package manager - icon: 📦 - details: Installs solid related packages, and automatically configures them in your project. - - title: Customisable - details: Plugins can be used to extend or manipulate existing functionality - icon: 🎨 - - title: Automatic configuration - icon: ♻ - details: Can automatically enable or disable features within solid, such as automatically enabling SSR ---- diff --git a/docs/vitepress_docs/installation.md b/docs/vitepress_docs/installation.md deleted file mode 100644 index 405da30..0000000 --- a/docs/vitepress_docs/installation.md +++ /dev/null @@ -1,31 +0,0 @@ -# Installation - -The CLI can be installed locally to your project via - -```sh -npm install @solid-cli/core -``` - -Or installed globally: - -```sh -npm install -g @solid-cli/core -``` - -It can then be invoked via the keyword `solid`, and the help page can be displayed with `solid --help` - -```txt -┌ Solid-CLI -solid - -where can be one of: - -- add - Can add and install integrations: `solid add unocss`. -- docs -- new - Creates a new solid project -- set -- start - Commands specific to solid start -- playground - -For more help, try running `solid --help` -``` diff --git a/docs/vitepress_docs/start-commands.md b/docs/vitepress_docs/start-commands.md deleted file mode 100644 index 2ffa10d..0000000 --- a/docs/vitepress_docs/start-commands.md +++ /dev/null @@ -1,64 +0,0 @@ -# Solid-Start Commands - -### `Mode` - -```sh -solid start mode -``` - -Set the rendering mode for solid to build for and use (ie. Client-Side Rendering (CSR), Server-Side Rendering (SSR), Static-Site Generation (SSG)) - -**Options** - -| Option | Description | -| -------- | -------------------------------------------------------------- | -| `` | The rendering mode to use. One of the following: csr, ssr, ssg | - ---- - -### `Route` - -```sh -solid start route -``` - -Creates a new route file in the file routes directory. - -**Options** - -| Option | Description | -| -------- | ------------------------------------------- | -| `` | The path to the new route | -| `` | The name of the `.tsx` file to be generated | - ---- - -### `Adapter` - -```sh -solid start adapter -``` - -Used to setup a Solid-Start specific adapter. - -**Options** - -| Option | Description | -| --------- | -------------------------------- | -| `` | The name of the adapter `string` | -| `--force` | Force setup the adapater | - -### `Data` - -```sh -solid start data -``` - -Creates a new data file at the given path - -**Options** - -| Option | Description | -| -------- | ----------------------------------------------- | -| `` | The path to the new data file | -| `` | The name of the `.data.ts` file to be generated | diff --git a/docs/vitepress_docs/supported-integrations.md b/docs/vitepress_docs/supported-integrations.md deleted file mode 100644 index 96c32ec..0000000 --- a/docs/vitepress_docs/supported-integrations.md +++ /dev/null @@ -1,21 +0,0 @@ -# Supported Integrations - -## Adapters - -- [Aws](https://github.com/solidjs/solid-start/tree/main/packages/start-aws) -- [Cloudflare-pages](https://github.com/solidjs/solid-start/tree/main/packages/start-cloudflare-pages) -- [Cloudflare-workers](https://github.com/solidjs/solid-start/tree/main/packages/start-cloudflare-workers) -- [Deno](https://github.com/solidjs/solid-start/tree/main/packages/start-deno) -- [Netlify](https://github.com/solidjs/solid-start/tree/main/packages/start-netlify) -- [Node](https://github.com/solidjs/solid-start/tree/main/packages/start-node) -- [Static](https://github.com/solidjs/solid-start/tree/main/packages/start-static) -- [Vercel](https://github.com/solidjs/solid-start/tree/main/packages/start-vercel) - -## Packages - -These packages will be automatically installed and configured with sensible defaults: - -- [UnoCss](https://unocss.dev/) -- [Tailwind CSS](https://tailwindcss.com/) -- [Solid Devtools](https://github.com/thetarnav/solid-devtools) -- [VitePWA](https://vite-pwa-org.netlify.app) diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index bde8a57..0000000 --- a/examples/README.md +++ /dev/null @@ -1 +0,0 @@ -# Example plugins for the CLI diff --git a/examples/plugin_template/package.json b/examples/plugin_template/package.json deleted file mode 100644 index 4f9cffc..0000000 --- a/examples/plugin_template/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "test_plugin", - "version": "1.0.0", - "description": "", - "module": "./dist/index.mjs", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsup" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "cmd-ts": "^0.13.0" - }, - "devDependencies": { - "tsup": "^7.2.0" - } -} diff --git a/examples/plugin_template/pnpm-lock.yaml b/examples/plugin_template/pnpm-lock.yaml deleted file mode 100644 index b437238..0000000 --- a/examples/plugin_template/pnpm-lock.yaml +++ /dev/null @@ -1,930 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - cmd-ts: - specifier: ^0.13.0 - version: 0.13.0 - -devDependencies: - tsup: - specifier: ^7.2.0 - version: 7.2.0 - -packages: - - /@esbuild/android-arm64@0.18.19: - resolution: {integrity: sha512-4+jkUFQxZkQfQOOxfGVZB38YUWHMJX2ihZwF+2nh8m7bHdWXpixiurgGRN3c/KMSwlltbYI0/i929jwBRMFzbA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.18.19: - resolution: {integrity: sha512-1uOoDurJYh5MNqPqpj3l/TQCI1V25BXgChEldCB7D6iryBYqYKrbZIhYO5AI9fulf66sM8UJpc3UcCly2Tv28w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.18.19: - resolution: {integrity: sha512-ae5sHYiP/Ogj2YNrLZbWkBmyHIDOhPgpkGvFnke7XFGQldBDWvc/AyYwSLpNuKw9UNkgnLlB/jPpnBmlF3G9Bg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.18.19: - resolution: {integrity: sha512-HIpQvNQWFYROmWDANMRL+jZvvTQGOiTuwWBIuAsMaQrnStedM+nEKJBzKQ6bfT9RFKH2wZ+ej+DY7+9xHBTFPg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.18.19: - resolution: {integrity: sha512-m6JdvXJQt0thNLIcWOeG079h2ivhYH4B5sVCgqb/B29zTcFd7EE8/J1nIUHhdtwGeItdUeqKaqqb4towwxvglQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.18.19: - resolution: {integrity: sha512-G0p4EFMPZhGn/xVNspUyMQbORH3nlKTV0bFNHPIwLraBuAkTeMyxNviTe0ZXUbIXQrR1lrwniFjNFU4s+x7veQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.18.19: - resolution: {integrity: sha512-hBxgRlG42+W+j/1/cvlnSa+3+OBKeDCyO7OG2ICya1YJaSCYfSpuG30KfOnQHI7Ytgu4bRqCgrYXxQEzy0zM5Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.18.19: - resolution: {integrity: sha512-X8g33tczY0GsJq3lhyBrjnFtaKjWVpp1gMq5IlF9BQJ3TUfSK74nQnz9mRIEejmcV+OIYn6bkOJeUaU1Knrljg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.18.19: - resolution: {integrity: sha512-qtWyoQskfJlb9MD45mvzCEKeO4uCnDZ7lPFeNqbfaaJHqBiH9qA5Vu2EuckqYZuFMJWy1l4dxTf9NOulCVfUjg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.18.19: - resolution: {integrity: sha512-SAkRWJgb+KN+gOhmbiE6/wu23D6HRcGQi15cB13IVtBZZgXxygTV5GJlUAKLQ5Gcx0gtlmt+XIxEmSqA6sZTOw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.18.19: - resolution: {integrity: sha512-YLAslaO8NsB9UOxBchos82AOMRDbIAWChwDKfjlGrHSzS3v1kxce7dGlSTsrb0PJwo1KYccypN3VNjQVLtz7LA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.18.19: - resolution: {integrity: sha512-vSYFtlYds/oTI8aflEP65xo3MXChMwBOG1eWPGGKs/ev9zkTeXVvciU+nifq8J1JYMz+eQ4J9JDN0O2RKF8+1Q==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.18.19: - resolution: {integrity: sha512-tgG41lRVwlzqO9tv9l7aXYVw35BxKXLtPam1qALScwSqPivI8hjkZLNH0deaaSCYCFT9cBIdB+hUjWFlFFLL9A==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.18.19: - resolution: {integrity: sha512-EgBZFLoN1S5RuB4cCJI31pBPsjE1nZ+3+fHRjguq9Ibrzo29bOLSBcH1KZJvRNh5qtd+fcYIGiIUia8Jw5r1lQ==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.18.19: - resolution: {integrity: sha512-q1V1rtHRojAzjSigZEqrcLkpfh5K09ShCoIsdTakozVBnM5rgV58PLFticqDp5UJ9uE0HScov9QNbbl8HBo6QQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.18.19: - resolution: {integrity: sha512-D0IiYjpZRXxGZLQfsydeAD7ZWqdGyFLBj5f2UshJpy09WPs3qizDCsEr8zyzcym6Woj/UI9ZzMIXwvoXVtyt0A==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.19: - resolution: {integrity: sha512-3tt3SOS8L3D54R8oER41UdDshlBIAjYhdWRPiZCTZ1E41+shIZBpTjaW5UaN/jD1ENE/Ok5lkeqhoNMbxstyxw==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.18.19: - resolution: {integrity: sha512-MxbhcuAYQPlfln1EMc4T26OUoeg/YQc6wNoEV8xvktDKZhLtBxjkoeESSo9BbPaGKhAPzusXYj5n8n5A8iZSrA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.19: - resolution: {integrity: sha512-m0/UOq1wj25JpWqOJxoWBRM9VWc3c32xiNzd+ERlYstUZ6uwx5SZsQUtkiFHaYmcaoj+f6+Tfcl7atuAz3idwQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.19: - resolution: {integrity: sha512-L4vb6pcoB1cEcXUHU6EPnUhUc4+/tcz4OqlXTWPcSQWxegfmcOprhmIleKKwmMNQVc4wrx/+jB7tGkjjDmiupg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.18.19: - resolution: {integrity: sha512-rQng7LXSKdrDlNDb7/v0fujob6X0GAazoK/IPd9C3oShr642ri8uIBkgM37/l8B3Rd5sBQcqUXoDdEy75XC/jg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.18.19: - resolution: {integrity: sha512-z69jhyG20Gq4QL5JKPLqUT+eREuqnDAFItLbza4JCmpvUnIlY73YNjd5djlO7kBiiZnvTnJuAbOjIoZIOa1GjA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /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'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /bundle-require@4.0.1(esbuild@0.18.19): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.18.19 - load-tsconfig: 0.2.5 - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /cmd-ts@0.13.0: - resolution: {integrity: sha512-nsnxf6wNIM/JAS7T/x/1JmbEsjH0a8tezXqqpaL0O6+eV0/aDEnRxwjxpu0VzDdRcaC1ixGSbRlUuf/IU59I4g==} - dependencies: - chalk: 4.1.2 - debug: 4.3.4 - didyoumean: 1.2.2 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /esbuild@0.18.19: - resolution: {integrity: sha512-ra3CaIKCzJp5bU5BDfrCc0FRqKj71fQi+gbld0aj6lN0ifuX2fWJYPgLVLGwPfA+ruKna+OWwOvf/yHj6n+i0g==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.19 - '@esbuild/android-arm64': 0.18.19 - '@esbuild/android-x64': 0.18.19 - '@esbuild/darwin-arm64': 0.18.19 - '@esbuild/darwin-x64': 0.18.19 - '@esbuild/freebsd-arm64': 0.18.19 - '@esbuild/freebsd-x64': 0.18.19 - '@esbuild/linux-arm': 0.18.19 - '@esbuild/linux-arm64': 0.18.19 - '@esbuild/linux-ia32': 0.18.19 - '@esbuild/linux-loong64': 0.18.19 - '@esbuild/linux-mips64el': 0.18.19 - '@esbuild/linux-ppc64': 0.18.19 - '@esbuild/linux-riscv64': 0.18.19 - '@esbuild/linux-s390x': 0.18.19 - '@esbuild/linux-x64': 0.18.19 - '@esbuild/netbsd-x64': 0.18.19 - '@esbuild/openbsd-x64': 0.18.19 - '@esbuild/sunos-x64': 0.18.19 - '@esbuild/win32-arm64': 0.18.19 - '@esbuild/win32-ia32': 0.18.19 - '@esbuild/win32-x64': 0.18.19 - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: true - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: true - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /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 - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - - /postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 2.3.1 - dev: true - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rollup@3.27.2: - resolution: {integrity: sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true - - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - dependencies: - whatwg-url: 7.1.0 - dev: true - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /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 - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: true - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true - - /tsup@7.2.0: - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - bundle-require: 4.0.1(esbuild@0.18.19) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.19 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 3.27.2 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true - - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: true diff --git a/examples/plugin_template/src/index.ts b/examples/plugin_template/src/index.ts deleted file mode 100644 index dd44b62..0000000 --- a/examples/plugin_template/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { command } from "cmd-ts"; - -export default command({ - name: "custom", - description: "A completely custom command dynamically imported at runtime!", - args: {}, - handler() { - console.log("CUSTOM COMMAND WORKS!!"); - }, -}); diff --git a/examples/plugin_template/tsconfig.json b/examples/plugin_template/tsconfig.json deleted file mode 100644 index 71dfb43..0000000 --- a/examples/plugin_template/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "jsx": "preserve", - "noEmit": true, - "module": "ESNext", - "target": "ESNext", - "moduleResolution": "node", - "strict": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true, - "resolveJsonModule": true - } -} diff --git a/examples/plugin_template/tsup.config.ts b/examples/plugin_template/tsup.config.ts deleted file mode 100644 index d80d441..0000000 --- a/examples/plugin_template/tsup.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - target: "esnext", - format: "esm", - splitting: false, - sourcemap: true, - clean: true, -}); diff --git a/package.json b/package.json index 6e1b3a5..d897b76 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "solid-cli", "private": true, "version": "0.0.1", - "description": "A CLI for making the solidjs development experience easier, faster, and less error prone.", + "description": "A CLI for making the SolidJS development experience easier, faster, and less error prone.", "license": "MIT", "homepage": "https://solid-cli.netlify.app", "repository": { @@ -10,33 +10,35 @@ "url": "https://github.com/solidjs-community/solid-cli" }, "scripts": { - "test": "vitest", + "test": "vitest run", "test:all": "turbo run test", "build": "turbo run build", "release": "pnpm build && changeset publish", - "watch:all": "nodemon --no-stdin -q --watch packages/core/src -e ts --exec 'turbo run build --scope=core' --watch packages/reactivity/src -e ts --exec 'turbo run build --scope=reactivity' --watch packages/ui/src -e ts --exec 'turbo run build --scope=ui' --watch packages/utils/src -e ts --exec 'turbo run build --scope=utils'", - "watch:core": "nodemon --watch packages/core/src -e ts --exec 'turbo run build --scope=core'", - "watch:reactivity": "nodemon --watch packages/reactivity/src -e ts --exec 'turbo run build --scope=reactivity'", - "watch:ui": "nodemon --watch packages/ui/src -e ts --exec 'turbo run build --scope=ui'", - "watch:utils": "nodemon --watch packages/utils/src -e ts --exec 'turbo run build --scope=utils'", - "start": "cd packages/core && pnpm start", - "format": "prettier . --write" + "start": "pnpm build && cd packages/create-solid && pnpm start", + "format": "prettier --write .", + "watch:build": "turbo watch build", + "update-deps": "ncu -u --packageFile packages/**/package.json" }, - "keywords": [], - "author": "Thomas Beer & Rahul Batra", + "contributors": [ + { + "name": "Thomas Beer" + }, + { + "name": "Rahul Batra" + } + ], "workspaces": [ "./packages/*" ], "devDependencies": { - "@changesets/cli": "2.26.2", - "nodemon": "^3.0.1", - "prettier": "^3.0.2", - "turbo": "^1.10.12", - "vitest": "^0.33.0" + "@changesets/cli": "2.31.1", + "@types/node": "26.1.1", + "jiti": "^2.7.0", + "prettier": "^3.9.6", + "tsup": "^8.5.1", + "turbo": "^2.10.6", + "typescript": "^7.0.2", + "vitest": "^4.1.10" }, - "pnpm": { - "patchedDependencies": { - "detect-package-manager@2.0.1": "patches/detect-package-manager@2.0.1.patch" - } - } + "packageManager": "pnpm@11.15.1" } diff --git a/packages/commands/.gitignore b/packages/commands/.gitignore deleted file mode 100644 index fbf0622..0000000 --- a/packages/commands/.gitignore +++ /dev/null @@ -1 +0,0 @@ -types \ No newline at end of file diff --git a/packages/commands/package.json b/packages/commands/package.json deleted file mode 100644 index 98d6d45..0000000 --- a/packages/commands/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "@solid-cli/commands", - "version": "0.0.2", - "description": "The main command handlers for the Solid CLI", - "license": "MIT", - "homepage": "https://solid-cli.netlify.app", - "repository": { - "type": "git", - "url": "https://github.com/solidjs-community/solid-cli" - }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", - "types": "./types/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.mjs", - "types": "./types/index.d.ts" - } - }, - "scripts": { - "test": "vitest run", - "build": "tsc && tsup" - }, - "devDependencies": { - "@chialab/esbuild-plugin-meta-url": "^0.17.7", - "@types/node": "^20.5.0", - "prettier": "^3.0.2", - "tsup": "^7.2.0", - "typescript": "^5.1.6" - }, - "publishConfig": { - "access": "public" - }, - "dependencies": { - "@chialab/esbuild-plugin-meta-url": "^0.17.7", - "@clack/prompts": "0.6.3", - "@solid-cli/reactivity": "workspace:*", - "@solid-cli/transpiler": "workspace:*", - "@solid-cli/ui": "workspace:*", - "@solid-cli/utils": "workspace:*", - "detect-package-manager": "^2.0.1", - "execa": "^7.2.0", - "picocolors": "^1.0.0", - "sucrase": "^3.34.0" - } -} diff --git a/packages/commands/src/handlers/add.ts b/packages/commands/src/handlers/add.ts deleted file mode 100644 index 45572b7..0000000 --- a/packages/commands/src/handlers/add.ts +++ /dev/null @@ -1,208 +0,0 @@ -import { autocomplete } from "@solid-cli/ui"; -import { S_BAR, cancelable, spinnerify } from "@solid-cli/ui"; -import { Integrations, Supported, integrations, setRootFile } from "../lib/integrations"; -import * as p from "@clack/prompts"; -import color from "picocolors"; -import { PM } from "detect-package-manager"; -import { primitives, loadPrimitives } from "@solid-cli/utils/primitives"; -import { t } from "@solid-cli/utils"; -import { fileExists, getRootFile, getViteConfig, validateFilePath } from "../lib/utils/helpers"; -import { writeFile, readFile } from "@solid-cli/utils/fs"; -import { transformPlugins, type PluginOptions } from "@solid-cli/utils/transform"; -import { - UPDATESQUEUE, - clearQueue, - flushCommandUpdates, - flushFileUpdates, - flushPackageUpdates, - queueUpdate, - summarizeUpdates, -} from "@solid-cli/utils/updates"; -const handleAutocompleteAdd = async () => { - const supportedIntegrations = (Object.keys(integrations) as Supported[]).map((value) => ({ label: value, value })); - const opts = () => [...supportedIntegrations, ...primitives()]; - loadPrimitives().catch((e) => p.log.error(e)); - const a = await cancelable( - autocomplete({ - message: t.ADD_PACKAGES, - options: opts, - }), - ); - - if (a.length === 0) { - p.log.warn(t.NOTHING_SELECTED); - return; - } - const shouldInstall = await cancelable( - p.select({ - options: [ - { label: t.YES, value: true }, - { label: t.NO, value: false }, - { label: t.YES_FORCE, value: [true, "force"] }, - ], - message: `${t.CONFIRM_INSTALL(a.length)} \n${color.red(S_BAR)} \n${color.red(S_BAR)} ${ - " " + color.yellow(a.map((opt) => opt.label).join(" ")) + " " - } \n${color.red(S_BAR)} `, - }), - ); - - if (!shouldInstall) return; - - let forceTransform = false; - if (Array.isArray(shouldInstall) && shouldInstall[1] === "force") { - forceTransform = true; - } - const packages = a.map((opt) => opt.value as Supported); - - return { packages, forceTransform }; -}; -const isIntegration = (str: string) => { - if (Object.keys(integrations).includes(str)) return true; - return false; -}; -/** - * Transforms a list containing primitives, either by name or full package name, and returns the corresponding primitive objects - */ -const transformPrimitives = async (ps: string[]) => { - if (!ps.length) return []; - if (!primitives().length) { - await spinnerify({ - startText: t.LOADING_PRIMITIVES, - finishText: t.PRIMITIVES_LOADED, - fn: loadPrimitives, - }); - } - const mappedInput = ps.map((p) => p.replace("@solid-primitives/", "")); - return primitives().filter((p) => mappedInput.includes(p.value.replace("@solid-primitives/", ""))); -}; -// @ts-ignore -const installCommand = async (pM: PM): Promise => { - switch (pM) { - case "npm": - return "install"; - case "yarn": - return "add"; - case "pnpm": - return "add"; - } -}; -type Configs = Integrations[keyof Integrations][]; -export const handleAdd = async (packages?: string[], forceTransform: boolean = false) => { - if (!packages?.length) { - const autocompleted = await handleAutocompleteAdd(); - - if (!autocompleted) return; - - packages = autocompleted.packages; - forceTransform = autocompleted.forceTransform; - } - const possiblePrimitives: string[] = []; - const configs: Configs = packages - .map((n) => { - if (!n) return; - if (!isIntegration(n)) { - possiblePrimitives.push(n); - return; - } - const res = integrations[n as Supported]; - if (!res) { - p.log.error(t.NO_SUPPORT(n)); - return; - } - return res; - }) - .filter((p) => p) as Configs; - - const viteConfig = await getViteConfig(); - - for (let i = 0; i < configs.length; i++) { - const config = configs[i]; - config.installs.forEach((p) => queueUpdate({ type: "package", name: p })); - } - // Queue primitives - for (const primitive of await transformPrimitives(possiblePrimitives)) { - queueUpdate({ type: "package", name: primitive.value }); - } - - if (!configs.length) return; - - await spinnerify({ - startText: "Processing config", - finishText: "Config processed", - fn: async () => { - const code = await transformPlugins( - configs.map((c) => c.pluginOptions).filter(Boolean) as PluginOptions[], - { name: viteConfig, contents: (await readFile(viteConfig)).toString() }, - forceTransform, - undefined, - ); - writeFile(viteConfig, code); - }, - }); - - p.log.info("Preparing post install steps for integrations"); - let projectRoot = await getRootFile(); - setRootFile(projectRoot); - if (!fileExists(projectRoot)) { - p.log.error(color.red(`Can't find root file \`${projectRoot.split("/")[1]}\`.`)); - await cancelable( - p.text({ - message: `Type path to root: `, - validate(value) { - if (!value.length) return `Path can not be empty`; - const path = validateFilePath(value, ["root.tsx", "index.tsx"]); - if (!path) return `File at \`${value}\` not found. Please try again`; - else setRootFile(path); - }, - }), - ); - } - // Run our additional configs - await spinnerify({ - startText: "Running additional config steps", - finishText: "Additional config steps complete", - fn: async () => { - for (const cfg of configs) { - await cfg.additionalConfig?.(); - } - }, - }); - if (UPDATESQUEUE.length === 0) return; - const { fileUpdates, packageUpdates, commandUpdates } = summarizeUpdates(); - // Inspired by Qwik's CLI - if (fileUpdates.length) p.log.message([`${color.cyan("Modify")}`, ...fileUpdates.map((f) => ` - ${f}`)].join("\n")); - if (packageUpdates.length) - p.log.message([`${color.cyan("Install")}`, ...packageUpdates.map((p) => ` - ${p}`)].join("\n")); - if (commandUpdates.length) - p.log.message([`${color.cyan("Run commands")}`, ...commandUpdates.map((p) => ` - ${p}`)].join("\n")); - const confirmed = await p.confirm({ message: "Do you wish to continue?" }); - if (!confirmed || p.isCancel(confirmed)) return; - await spinnerify({ startText: "Writing files...", finishText: "Updates written", fn: flushFileUpdates }); - await spinnerify({ startText: "Installing packages...", finishText: "Packages installed", fn: flushPackageUpdates }); - await spinnerify({ startText: "Running setup commands", finishText: "Setup commands ran", fn: flushCommandUpdates }); - clearQueue(); - const postInstalls = configs.filter((c) => c.postInstall); - if (postInstalls.length === 0) return; - p.log.message( - `${postInstalls.length} ${ - postInstalls.length === 1 ? "package has" : "packages have" - } post install steps that need to run.`, - ); - const pInstallConfirmed = await p.confirm({ message: "Do you wish to continue?" }); - if (!pInstallConfirmed || p.isCancel(pInstallConfirmed)) return; - p.log.info("Running post installs"); - // Run postInstalls - for (const cfg of configs) { - await cfg.postInstall?.(); - } - p.log.success("Post install steps complete!"); - // await spinnerify({ - // startText: t.POST_INSTALL, - // finishText: t.POST_INSTALL_COMPLETE, - // fn: async () => { - // for (const cfg of configs) { - // await cfg.postInstall?.(); - // } - // }, - // }); -}; diff --git a/packages/commands/src/handlers/new.ts b/packages/commands/src/handlers/new.ts deleted file mode 100644 index c45dae6..0000000 --- a/packages/commands/src/handlers/new.ts +++ /dev/null @@ -1,259 +0,0 @@ -import * as p from "@clack/prompts"; -import { openInBrowser } from "@solid-cli/utils"; -import { detect } from "detect-package-manager"; -import { execa } from "execa"; -import { cancelable, spinnerify } from "@solid-cli/ui"; -import { t } from "@solid-cli/utils"; -import { insertAtEnd, readFileToString } from "@solid-cli/utils/fs"; -import { flushQueue } from "@solid-cli/utils/updates"; -import { getRunner } from "@solid-cli/utils/paths"; -import { rm } from "fs/promises"; -import { basename, join, resolve } from "path"; -import { Dirent, copyFileSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs"; -import prettier from "prettier"; -import { transform } from "sucrase"; -const gitIgnore = ` -dist -.solid -.output -.vercel -.netlify -netlify - -# Environment -.env -.env*.local - -# dependencies -/node_modules - -# IDEs and editors -/.idea -.project -.classpath -*.launch -.settings/ - -# Temp -gitignore - -# System Files -.DS_Store -Thumbs.db -`; - -const startSupported = [ - "bare", - "hackernews", - "todomvc", - "with-auth", - "with-authjs", - "with-mdx", - "with-prisma", - "with-solid-styled", - "with-tailwindcss", - "with-trpc", - "with-vitest", - "with-websocket", -] as const; -const localSupported = ["ts", "js"] as const; -const stackblitzSupported = ["bare"] as const; - -type AllSupported = (typeof localSupported)[number] | (typeof stackblitzSupported)[number]; - -const modifyReadme = async (name: string) => { - await insertAtEnd( - `${name}/README.md`, - "\n## This project was created with the [Solid CLI](https://solid-cli.netlify.app)\n", - ); - await flushQueue(); -}; - -const recurseFiles = (startPath: string, cb: (file: Dirent, startPath: string) => void) => { - startPath = resolve(startPath); - - const files = readdirSync(startPath, { withFileTypes: true }); - - for (const file of files) { - cb(file, startPath); - } -}; - -const convertToJS = async (file: Dirent, startPath: string) => { - const src = join(startPath, file.name); - const dest = resolve(startPath.replace(".solid-start", ""), file.name); - if (file.isDirectory()) { - mkdirSync(dest, { recursive: true }); - recurseFiles(resolve(startPath, file.name), convertToJS); - } else if (file.isFile()) { - if (src.endsWith(".ts") || src.endsWith(".tsx")) { - let { code } = transform(await readFileToString(src), { - transforms: ["typescript", "jsx"], - jsxRuntime: "preserve", - }); - code = await prettier.format(code, { - parser: "babel", - }); - - writeFileSync(dest.replace(".ts", ".js"), code, { flag: "wx" }); - } else { - copyFileSync(src, dest); - } - } -}; - -const handleTSConversion = async (tempDir: string, projectName: string) => { - await rm(resolve(tempDir, "tsconfig.json")); - writeFileSync( - resolve(projectName, "jsconfig.json"), - JSON.stringify( - { - compilerOptions: { - jsx: "preserve", - jsxImportSource: "solid-js", - paths: { - "~/*": ["./src/*"], - }, - }, - }, - null, - 2, - ), - { flag: "wx" }, - ); - - // Convert all ts files in temp directory into js - recurseFiles(tempDir, convertToJS); - - // Update package.json to remove type deps - const name = basename(resolve(projectName)); - const pkg_file = join(projectName, "package.json"); - const pkg_json = JSON.parse( - readFileSync(pkg_file, "utf-8") - .replace(/"name": ".+"/, (_m) => `"name": "${name}"`) - .replace(/"(.+)": "workspace:.+"/g, (_m, name) => `"${name}": "next"`), - ); - - delete pkg_json.dependencies["@types/cookie"]; - delete pkg_json.dependencies["@types/debug"]; - delete pkg_json.devDependencies["@types/babel__core"]; - delete pkg_json.devDependencies["@types/node"]; - delete pkg_json.devDependencies["typescript"]; - delete pkg_json.devDependencies["@types/wait-on"]; - - writeFileSync(pkg_file, JSON.stringify(pkg_json, null, 2)); - - // Remove temp directory - await rm(join(process.cwd(), tempDir), { - recursive: true, - force: true, - }); -}; - -const handleNewStartProject = async (projectName: string) => { - const template = await cancelable( - p.select({ - message: t.NEW_START, - initialValue: "ts", - options: startSupported.map((s) => ({ label: s, value: s })), - }), - ); - - const withTs = await cancelable(p.confirm({ message: "Use Typescript?" })); - - // If the user does not want ts, we create the project in a temp directory inside the project directory - const tempDir = withTs ? projectName : join(projectName, ".solid-start"); - - const pM = await detect(); - await spinnerify({ - startText: t.CREATING_PROJECT, - finishText: t.PROJECT_CREATED, - fn: () => - execa( - getRunner(pM), - ["degit", `solidjs/solid-start/examples/${template}#main`, tempDir].filter((e) => e !== null) as string[], - ), - }); - - if (!withTs) await handleTSConversion(tempDir, projectName); - - // Add .gitignore - writeFileSync(join(projectName, ".gitignore"), gitIgnore); - - await modifyReadme(projectName); - - p.log.info(`${t.GET_STARTED} - - cd ${projectName} - - npm install - - npm run dev`); -}; - -const handleAutocompleteNew = async () => { - const name = await cancelable( - p.text({ message: t.PROJECT_NAME, placeholder: "solid-project", defaultValue: "solid-project" }), - ); - - const isStart = await cancelable(p.confirm({ message: t.IS_START_PROJECT })); - - if (isStart) { - handleNewStartProject(name); - return; - } - - const template = (await cancelable( - p.select({ - message: t.TEMPLATE, - initialValue: "ts", - options: localSupported.map((s) => ({ label: s, value: s })), - }), - )) as unknown as AllSupported; - - await handleNew(template, name); -}; -export const handleNew = async ( - variation?: AllSupported, - name: string = "solid-project", - stackblitz: boolean = false, -) => { - if (!variation) { - await handleAutocompleteNew(); - return; - } - - if (stackblitz) { - await spinnerify({ - startText: t.OPENING_IN_BROWSER(variation), - finishText: t.OPENED_IN_BROWSER, - fn: () => openInBrowser(`https://solid.new/${variation}`), - }); - return; - } - - const withTs = await cancelable(p.confirm({ message: "Use Typescript?" })); - - // If the user does not want ts, we create the project in a temp directory inside the project directory - const tempDir = withTs ? name : join(name, ".solid-start"); - - const pM = await detect(); - - await spinnerify({ - startText: t.CREATING_PROJECT, - finishText: t.PROJECT_CREATED, - fn: () => - execa( - getRunner(pM), - ["degit", `solidjs/templates/${variation}`, name ?? null].filter((e) => e !== null) as string[], - ), - }); - - if (!withTs) await handleTSConversion(tempDir, name); - - // Add .gitignore - writeFileSync(join(name, ".gitignore"), gitIgnore); - - await modifyReadme(name ?? variation); - p.log.info(`${t.GET_STARTED} - - cd ${name} - - npm install - - npm run dev`); -}; diff --git a/packages/commands/src/handlers/start/adapter.ts b/packages/commands/src/handlers/start/adapter.ts deleted file mode 100644 index 7d18982..0000000 --- a/packages/commands/src/handlers/start/adapter.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { readFile, writeFile } from "@solid-cli/utils/fs"; -import { transformPlugins } from "@solid-cli/utils/transform"; -import * as p from "@clack/prompts"; -import { cancelable } from "@solid-cli/ui"; - -export const supportedAdapters = [ - "aws", - "cloudflare-pages", - "cloudflare-workers", - "deno", - "netlify", - "node", - "static", - "vercel", -] as const; - -type SupportedAdapters = (typeof supportedAdapters)[number]; - -const handleAutocompleteAdapter = async () => { - const name = (await cancelable( - p.select({ - message: "Select an adapter", - options: supportedAdapters.map((a) => ({ value: a, label: a })), - }), - )) as SupportedAdapters; - await handleAdapter(name, true); -}; - -export const handleAdapter = async (name?: string, forceTransform = false) => { - if (!name) { - await handleAutocompleteAdapter(); - return; - } - const sym = Symbol(name).toString(); - let code = await transformPlugins( - [ - { - importName: "solid", - importSource: "solid-start/vite", - isDefault: true, - options: { adapter: sym }, - }, - ], - { name: "vite.config.ts", contents: (await readFile("vite.config.ts")).toString() }, - forceTransform, - ); - code = `import ${name} from "solid-start-${name}";\n` + code; - code = code.replace(`"${sym}"`, `${name}({})`); - await writeFile("vite.config.ts", code); -}; diff --git a/packages/commands/src/handlers/start/api.ts b/packages/commands/src/handlers/start/api.ts deleted file mode 100644 index 79dd2bb..0000000 --- a/packages/commands/src/handlers/start/api.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { isSolidStart, createApi } from "@solid-cli/utils"; -import * as p from "@clack/prompts"; -import { cancelable, spinnerify } from "@solid-cli/ui"; - -const handleAutocompleteApi = async () => { - const path = await cancelable( - p.text({ - message: "Enter the path in which the api file will be created", - placeholder: "/user", - validate(value) { - if (!value.length) return "Path is required"; - }, - }), - ); - - const name = await cancelable( - p.text({ - message: "Enter the name for the api file (required)", - validate(value) { - if (!value.length) return "Name is required"; - }, - }), - ); - - await handleApi(path, name); -}; -export const handleApi = async (path?: string, name?: string) => { - if (!(await isSolidStart())) { - p.log.error("Cannot run command. Your project doesn't include solid-start"); - return; - } - if (!path) { - await handleAutocompleteApi(); - return; - } - await spinnerify({ - startText: "Creating new api file", - finishText: "Api file created", - fn: () => createApi(path, name), - }); -}; diff --git a/packages/commands/src/handlers/start/data.ts b/packages/commands/src/handlers/start/data.ts deleted file mode 100644 index 380bb1b..0000000 --- a/packages/commands/src/handlers/start/data.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { isSolidStart, createData } from "@solid-cli/utils"; -import * as p from "@clack/prompts"; -import { cancelable, spinnerify } from "@solid-cli/ui"; - -const handleAutocompleteData = async () => { - const path = await cancelable( - p.text({ - message: "Enter the path in which the data file will be created", - placeholder: "/user/login", - validate(value) { - if (!value.length) return "Path is required"; - }, - }), - ); - - const name = await cancelable( - p.text({ - message: "Enter the name for the data file (leave this blank for the default)", - }), - ); - - await handleData(path, name); -}; - -export const handleData = async (path?: string, name?: string) => { - if (!(await isSolidStart())) { - p.log.error("Cannot run command. Your project doesn't include solid-start"); - return; - } - if (!path) { - await handleAutocompleteData(); - return; - } - await spinnerify({ - startText: "Creating new data file", - finishText: "Data file created", - fn: () => createData(path, name), - }); -}; diff --git a/packages/commands/src/handlers/start/index.ts b/packages/commands/src/handlers/start/index.ts deleted file mode 100644 index 2145bbb..0000000 --- a/packages/commands/src/handlers/start/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./adapter"; -export * from "./api"; -export * from "./data"; -export * from "./mode"; -export * from "./route"; diff --git a/packages/commands/src/handlers/start/mode.ts b/packages/commands/src/handlers/start/mode.ts deleted file mode 100644 index e7244ee..0000000 --- a/packages/commands/src/handlers/start/mode.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { writeFile, readFile } from "@solid-cli/utils/fs"; -import { transformPlugins } from "@solid-cli/utils/transform"; -import { isSolidStart } from "@solid-cli/utils"; -import * as p from "@clack/prompts"; -import { cancelable } from "@solid-cli/ui"; - -export const supportedModes = ["csr", "ssr", "ssg"] as const; -type SupportedModes = (typeof supportedModes)[number]; - -const handleAutocompleteMode = async () => { - const mode = (await cancelable( - p.select({ - message: "Select a mode", - options: supportedModes.map((a) => ({ value: a, label: a.toUpperCase() })), - }), - )) as SupportedModes; - await handleMode(mode); -}; - -export const handleMode = async (mode?: SupportedModes) => { - if (!(await isSolidStart())) { - p.log.error("Cannot run command. Your project doesn't include solid-start"); - return; - } - if (!mode) { - handleAutocompleteMode(); - return; - } - p.log.info("Updating config"); - if (mode != "ssg") { - const newConfig = await transformPlugins( - [ - { - importName: "solid", - importSource: "solid-start/vite", - isDefault: true, - options: { ssr: mode === "ssr" }, - }, - ], - { name: "vite.config.ts", contents: (await readFile("vite.config.ts")).toString() }, - true, - true, - ); - await writeFile("vite.config.ts", newConfig); - } -}; diff --git a/packages/commands/src/handlers/start/route.ts b/packages/commands/src/handlers/start/route.ts deleted file mode 100644 index 6e1ea45..0000000 --- a/packages/commands/src/handlers/start/route.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as p from "@clack/prompts"; -import { isSolidStart, createRoute } from "@solid-cli/utils"; -import { cancelable, spinnerify } from "@solid-cli/ui"; -const handleAutocompleteRoute = async () => { - const path = await cancelable( - p.text({ - message: "Please provide a path for the route", - placeholder: "/user/login", - validate(value) { - if (!value.length) return "Path is required"; - }, - }), - ); - const name = await cancelable( - p.text({ - message: "Please provide a name for the route", - - validate(value) { - if (!value.length) return "Name for route is required"; - }, - }), - ); - - await handleRoute(path, name); -}; -export const handleRoute = async (path?: string, name?: string) => { - if (!(await isSolidStart())) { - p.log.error("Cannot run command. Your project doesn't include solid-start"); - return; - } - if (!path) { - await handleAutocompleteRoute(); - return; - } - await spinnerify({ - startText: "Creating new route", - finishText: "Route created", - fn: () => createRoute(path, name), - }); -}; diff --git a/packages/commands/src/index.ts b/packages/commands/src/index.ts deleted file mode 100644 index 32fff0a..0000000 --- a/packages/commands/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./handlers/add"; -export * from "./handlers/new"; -export * from "./handlers/start"; diff --git a/packages/commands/src/lib/integrations.ts b/packages/commands/src/lib/integrations.ts deleted file mode 100644 index 7abe789..0000000 --- a/packages/commands/src/lib/integrations.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { insertAfter, insertAtBeginning } from "@solid-cli/utils/fs"; -import { fileExists, validateFilePath } from "./utils/helpers"; -import { $ } from "execa"; -import { detect } from "detect-package-manager"; -import { getRunner } from "@solid-cli/utils/paths"; -import { createSignal } from "@solid-cli/reactivity"; -import * as p from "@clack/prompts"; -import color from "picocolors"; -import { cancelable } from "@solid-cli/ui"; -import { PluginOptions } from "@chialab/esbuild-plugin-meta-url"; -import { flushQueue } from "@solid-cli/utils/updates"; - -// All the integrations/packages that we support -export type Supported = keyof typeof integrations; - -export type IntegrationsValue = { - pluginOptions?: PluginOptions; - installs: string[]; - additionalConfig?: () => Promise; - postInstall?: () => Promise; -}; - -export type Integrations = Record; - -export const [rootFile, setRootFile] = createSignal(undefined); - -export const integrations = { - "tailwind": { - installs: ["tailwindcss", "postcss", "autoprefixer"], - postInstall: async () => { - const pM = await detect(); - await $`${getRunner(pM)} tailwindcss init -p`; - let tailwindConfig = "tailwind.config.js"; - if (!fileExists(tailwindConfig)) { - p.log.error(color.red(`Can't find tailwind config file`)); - await cancelable( - p.text({ - message: `Type path to tailwind config: `, - validate(value) { - if (!value.length) return `Path can not be empty`; - const path = validateFilePath(value, "tailwind.config"); - if (!path) return `Tailwind config at \`${value}\` not found. Please try again`; - else { - tailwindConfig = path; - } - }, - }), - ); - } - - let indexCss = "./src/index.css"; - if (!fileExists(indexCss)) { - p.log.error(color.red(`Can't find index.css`)); - await cancelable( - p.text({ - message: `Type path to index.css: `, - validate(value) { - if (!value.length) return `Path can not be empty`; - const path = validateFilePath(value, "index.css"); - if (!path) return `index.css at \`${value}\` not found. Please try again`; - else { - indexCss = path; - } - }, - }), - ); - } - p.log.info("Updating tailwind config"); - await insertAfter(tailwindConfig, "content: [", '"./index.html", "./src/**/*.{js,ts,jsx,tsx}"'); - await insertAtBeginning(indexCss, "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"); - // Instantly flush queue - await flushQueue(); - }, - }, - "unocss": { - pluginOptions: { - importName: "UnoCss", - importSource: "unocss/vite", - isDefault: true, - options: {}, - }, - installs: ["unocss"], - additionalConfig: async () => { - const path = rootFile(); - if (!path) return; - await insertAtBeginning(path, `import "virtual:uno.css";\n`); - }, - }, - "vitepwa": { - pluginOptions: { - importName: "VitePWA", - importSource: "vite-plugin-pwa", - isDefault: false, - options: {}, - }, - installs: ["vite-plugin-pwa"], - }, - "solid-devtools": { - pluginOptions: { - importName: "devtools", - importSource: "solid-devtools/vite", - isDefault: true, - options: {}, - }, - installs: ["solid-devtools"], - additionalConfig: async () => { - const path = rootFile(); - if (!path) return; - await insertAtBeginning(path, `import "solid-devtools";\n`); - }, - }, -}; diff --git a/packages/commands/src/lib/utils/helpers.ts b/packages/commands/src/lib/utils/helpers.ts deleted file mode 100644 index 1eea427..0000000 --- a/packages/commands/src/lib/utils/helpers.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { existsSync, lstatSync, readdirSync } from "fs"; -import { isSolidStart } from "@solid-cli/utils"; -import { join, resolve } from "path"; -import { $ } from "execa"; -import { cancelable } from "@solid-cli/ui"; -import * as p from "@clack/prompts"; -import color from "picocolors"; - -export const getProjectRoot = async () => { - const { stdout } = await $`npm root`; - - return stdout.slice(0, stdout.lastIndexOf("/")); -}; - -export const getRootFile = async () => { - if (await isSolidStart()) { - return "src/root.tsx"; - } - return "src/index.tsx"; -}; - -export const fileExists = (path: string) => { - return existsSync(path); -}; - -export function validateFilePath(path: string, lookingFor: string): string | undefined; -export function validateFilePath(path: string, lookingFor: string[]): string | undefined; -export function validateFilePath(path: string, lookingFor: string | string[]): string | undefined { - path = resolve(path); - const isDir = lstatSync(path).isDirectory(); - if (isDir) { - const files = readdirSync(path, { withFileTypes: true }); - - const config = files.find((file) => { - if (Array.isArray(lookingFor)) { - return lookingFor.some((s) => file.name.startsWith(s)); - } - - return file.name.startsWith(lookingFor); - }); - return config ? join(path, config.name) : undefined; - } - - const pathIsValid = Array.isArray(lookingFor) - ? lookingFor.some((s) => path.startsWith(s)) - : path.startsWith(lookingFor); - - const exists = fileExists(path) && pathIsValid; - - return exists ? path : undefined; -} - -export async function findFiles( - startPath: string, - lookingFor: string | string[], - opts: { depth?: number; ignoreDirs?: string[]; startsWith?: boolean }, -): Promise { - let { depth = Infinity, ignoreDirs = ["node_modules", "."], startsWith = true } = opts; - - startPath = resolve(startPath); - - const isDir = lstatSync(startPath).isDirectory(); - - if (!isDir) { - startPath = resolve(startPath.slice(0, startPath.lastIndexOf("/"))); - } - - let filePaths: string[] = []; - - const files = readdirSync(startPath, { withFileTypes: true }); - - for (const file of files) { - if (file.isDirectory() && !ignoreDirs.some((s) => file.name.includes(s))) { - if (Number.isFinite(depth) && depth-- <= 0) continue; - filePaths = filePaths.concat(await findFiles(resolve(startPath, file.name), lookingFor, opts)); - continue; - } - - if (file.isFile()) { - const fileMatch = Array.isArray(lookingFor) - ? lookingFor.some((s) => (startsWith ? file.name.startsWith(s) : file.name.endsWith(s))) - : startsWith - ? file.name.startsWith(lookingFor) - : file.name.endsWith(lookingFor); - - if (fileMatch) { - filePaths.push(resolve(startPath, file.name)); - } - } - } - - return filePaths; -} - -export const getViteConfig = async () => { - let configFile = "vite.config.ts"; - - const existsHere = fileExists(configFile); - - if (!existsHere) { - const root = await getProjectRoot(); - const existsInRoot = validateFilePath(root, "vite.config"); - if (existsInRoot) { - const correctConfig = await cancelable( - p.confirm({ - message: `Could not find vite config in current directory, but found vite config in \`${root}\`. Is this the correct vite config?`, - }), - ); - if (correctConfig) return existsInRoot; - } - - p.log.error(color.red(`Can't find vite config`)); - await cancelable( - p.text({ - message: "Type path to vite config: ", - validate(value) { - const path = validateFilePath(value, "vite.config"); - if (!path) return `Vite config not found. Please try again`; - else { - configFile = path; - } - }, - }), - ); - } - - return configFile; -}; diff --git a/packages/commands/tests/assets/sample_unocss_result.txt b/packages/commands/tests/assets/sample_unocss_result.txt deleted file mode 100644 index 5ae2640..0000000 --- a/packages/commands/tests/assets/sample_unocss_result.txt +++ /dev/null @@ -1,9 +0,0 @@ -import UnoCss from "unocss/vite"; -import solid from "solid-start/vite"; -// Simulates a vite config -export default defineConfig({ - plugins: [ - solid(), - UnoCss({}) - ] -}); diff --git a/packages/commands/tests/assets/sample_vite_config.txt b/packages/commands/tests/assets/sample_vite_config.txt deleted file mode 100644 index b501a09..0000000 --- a/packages/commands/tests/assets/sample_vite_config.txt +++ /dev/null @@ -1,5 +0,0 @@ -import solid from "solid-start/vite"; -// Simulates a vite config -export default defineConfig({ - plugins: [solid()], -}); diff --git a/packages/commands/tests/config_manipulation.test.ts b/packages/commands/tests/config_manipulation.test.ts deleted file mode 100644 index d94c0fb..0000000 --- a/packages/commands/tests/config_manipulation.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; -import { handleAdd } from "../src/handlers/add"; -import { readFile as readFile1 } from "fs"; -import { UPDATESQUEUE } from "../../utils/src/updates"; -const readFile = async (path: string): Promise => { - return await new Promise((res) => - // Can't use readFile from fs/promises because we've mocked it - readFile1(path, (_, data) => res(data.toString())), - ); -}; -const removeWhitespace = (str: string) => str.replace(/\s/g, ""); -vi.mock("fs/promises", () => { - return { - readFile: async (name: string) => { - if (name === "vite.config.ts") { - const sampleConfig: string = await readFile("./packages/commands/tests/assets/sample_vite_config.txt"); - return sampleConfig; - } - return "{}"; - }, - writeFile: async (contents: string) => { - return contents; - }, - }; -}); -vi.mock("execa", () => { - return { $: async () => ({ stdout: "" }) }; -}); - -vi.mock("@clack/prompts", async () => { - const actual: object = await vi.importActual("@clack/prompts"); - return { - ...actual, - confirm: async ({ message }: { message: string }) => true, - }; -}); - -vi.mock("@solid-cli/utils/updates", async () => { - const actual: object = await vi.importActual("@solid-cli/utils/updates"); - return { - ...actual, - clearQueue: async () => {}, - }; -}); - -vi.mock("../src/lib/utils/helpers.ts", async () => { - return { - getViteConfig: async (): Promise => new Promise((r) => r("vite.config.ts")), - fileExists: (path: string) => - path.includes("vite_config") || path.includes("root.tsx") || path.includes("index.tsx"), - getRootFile: async (): Promise => new Promise((r) => r("./src/root.tsx")), - }; -}); -describe("Update config", () => { - it( - "Adds a plugin properly to the config", - async () => { - await handleAdd(["unocss"]); - - const expected = await readFile("./packages/commands/tests/assets/sample_unocss_result.txt"); - // @ts-ignore - const newConfig = UPDATESQUEUE.find((u) => u.name === "vite.config.ts")?.contents; - expect(removeWhitespace(expected)).toBe(removeWhitespace(newConfig)); - }, - { timeout: 50000 }, - ); -}); diff --git a/packages/commands/tests/package_installs.test.ts b/packages/commands/tests/package_installs.test.ts deleted file mode 100644 index c0eff16..0000000 --- a/packages/commands/tests/package_installs.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { expect, describe, it } from "vitest"; - -describe("Package Installs", () => { - it("should install packages correctly", () => { - expect(true).toBe(true); - }); -}); diff --git a/packages/commands/tsconfig.json b/packages/commands/tsconfig.json deleted file mode 100644 index ecaf1e3..0000000 --- a/packages/commands/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "skipLibCheck": true, - "declaration": true, - "emitDeclarationOnly": true, - "moduleResolution": "Bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "allowSyntheticDefaultImports": true, - "strict": true, - // "noUnusedLocals": true, - // "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "outDir": "types" - }, - "include": ["src/*"] -} diff --git a/packages/commands/tsup.config.ts b/packages/commands/tsup.config.ts deleted file mode 100644 index 0399ef0..0000000 --- a/packages/commands/tsup.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from "tsup"; -import metaUrlPlugin from "@chialab/esbuild-plugin-meta-url"; - -export default defineConfig({ - entry: ["src/index.ts"], - target: "esnext", - format: "esm", - splitting: false, - sourcemap: true, - clean: true, - esbuildPlugins: [metaUrlPlugin()], -}); diff --git a/packages/core/.gitignore b/packages/core/.gitignore deleted file mode 100644 index bf96551..0000000 --- a/packages/core/.gitignore +++ /dev/null @@ -1,133 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional swc cache -.swc - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* diff --git a/packages/core/README.md b/packages/core/README.md deleted file mode 100644 index 51fc211..0000000 --- a/packages/core/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @solid-cli/core - -The main entry point package for the CLI. To install, just run `npm i -g @solid-cli/core`, and invoke with the `solid` command diff --git a/packages/core/package.json b/packages/core/package.json deleted file mode 100644 index 7079f2c..0000000 --- a/packages/core/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "@solid-cli/core", - "version": "0.0.15", - "description": "A CLI for Solid", - "author": "Thomas Beer & Rahul Batra", - "license": "MIT", - "homepage": "https://solid-cli.netlify.app", - "repository": { - "type": "git", - "url": "https://github.com/solidjs-community/solid-cli" - }, - "keywords": [ - "solidjs", - "solid", - "cli" - ], - "main": "dist/index.mjs", - "bin": { - "solid": "./dist/index.mjs" - }, - "files": [ - "dist" - ], - "dependencies": { - "@clack/core": "0.3.2", - "@clack/prompts": "0.6.3", - "@solid-cli/commands": "workspace:*", - "@solid-cli/reactivity": "workspace:*", - "@solid-cli/swc-plugin-solid-cli": "workspace:*", - "@solid-cli/ui": "workspace:*", - "@solid-cli/utils": "workspace:*", - "@solid-cli/transpiler": "workspace:*", - "@swc/core": "^1.3.75", - "cmd-ts": "^0.12.1", - "detect-package-manager": "^2.0.1", - "execa": "^7.2.0", - "picocolors": "^1.0.0", - "smol-toml": "^1.1.1", - "tiny-updater": "^3.5.1" - }, - "scripts": { - "start": "jiti ./src/index.ts", - "build": "tsc && tsup" - }, - "devDependencies": { - "@chialab/esbuild-plugin-meta-url": "^0.17.7", - "@types/node": "^20.4.9", - "jiti": "^1.19.1", - "tsup": "^7.2.0", - "typescript": "^5.1.6" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/core/pnpm-lock.yaml b/packages/core/pnpm-lock.yaml deleted file mode 100644 index 95ddd57..0000000 --- a/packages/core/pnpm-lock.yaml +++ /dev/null @@ -1,1164 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - '@clack/core': - specifier: 0.3.2 - version: 0.3.2 - '@clack/prompts': - specifier: 0.6.3 - version: 0.6.3 - '@swc/core': - specifier: ^1.3.68 - version: 1.3.68 - cmd-ts: - specifier: ^0.12.1 - version: 0.12.1 - detect-package-manager: - specifier: ^2.0.1 - version: 2.0.1 - execa: - specifier: ^7.1.1 - version: 7.1.1 - picocolors: - specifier: ^1.0.0 - version: 1.0.0 - tsup: - specifier: ^7.1.0 - version: 7.1.0(@swc/core@1.3.68) - -devDependencies: - '@types/node': - specifier: ^20.4.1 - version: 20.4.1 - jiti: - specifier: ^1.17.0 - version: 1.17.0 - -packages: - - /@clack/core@0.3.2: - resolution: {integrity: sha512-FZnsNynwGDIDktx6PEZK1EuCkFpY4ldEX6VYvfl0dqeoLPb9Jpw1xoUXaVcGR8ExmYNm1w2vdGdJkEUYD/2pqg==} - dependencies: - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false - - /@clack/prompts@0.6.3: - resolution: {integrity: sha512-AM+kFmAHawpUQv2q9+mcB6jLKxXGjgu/r2EQjEwujgpCdzrST6BJqYw00GRn56/L/Izw5U7ImoLmy00X/r80Pw==} - dependencies: - '@clack/core': 0.3.2 - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false - bundledDependencies: - - is-unicode-supported - - /@esbuild/android-arm64@0.18.12: - resolution: {integrity: sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm@0.18.12: - resolution: {integrity: sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-x64@0.18.12: - resolution: {integrity: sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-arm64@0.18.12: - resolution: {integrity: sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-x64@0.18.12: - resolution: {integrity: sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-arm64@0.18.12: - resolution: {integrity: sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-x64@0.18.12: - resolution: {integrity: sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm64@0.18.12: - resolution: {integrity: sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm@0.18.12: - resolution: {integrity: sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ia32@0.18.12: - resolution: {integrity: sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-loong64@0.18.12: - resolution: {integrity: sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-mips64el@0.18.12: - resolution: {integrity: sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ppc64@0.18.12: - resolution: {integrity: sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-riscv64@0.18.12: - resolution: {integrity: sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-s390x@0.18.12: - resolution: {integrity: sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-x64@0.18.12: - resolution: {integrity: sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/netbsd-x64@0.18.12: - resolution: {integrity: sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-x64@0.18.12: - resolution: {integrity: sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/sunos-x64@0.18.12: - resolution: {integrity: sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-arm64@0.18.12: - resolution: {integrity: sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-ia32@0.18.12: - resolution: {integrity: sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-x64@0.18.12: - resolution: {integrity: sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: false - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: false - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false - - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - 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==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: false - - /@swc/core-darwin-arm64@1.3.68: - resolution: {integrity: sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-darwin-x64@1.3.68: - resolution: {integrity: sha512-ZHl42g6yXhfX4PzAQ0BNvBXpt/OcbAHfubWRN6eXELK3fiNnxL7QBW1if7iizlq6iA+Mj1pwHyyUit1pz0+fgA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm-gnueabihf@1.3.68: - resolution: {integrity: sha512-Mk8f6KCOQ2CNAR4PtWajIjS6XKSSR7ZYDOCf1GXRxhS3qEyQH7V8elWvqWYqHcT4foO60NUmxA/NOM/dQrdO1A==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-gnu@1.3.68: - resolution: {integrity: sha512-RhBllggh9t9sIxaRgRcGrVaS7fDk6KsIqR6b9+dwU5OyDr4ZyHWw1ZaH/1/HAebuXYhNBjoNUiRtca6lKRIPgQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-musl@1.3.68: - resolution: {integrity: sha512-8K3zjU+tFgn6yGDEeD343gkKaHU9dhz77NiVkI1VzwRaT/Ag5pwl5eMQ1yStm8koNFzn3zq6rGjHfI5g2yI5Wg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-gnu@1.3.68: - resolution: {integrity: sha512-4xAnvsBOyeTL0AB8GWlRKDM/hsysJ5jr5qvdKKI3rZfJgnnxl/xSX6TJKPsJ8gygfUJ3BmfCbmUmEyeDZ3YPvA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-musl@1.3.68: - resolution: {integrity: sha512-RCpaBo1fcpy1EFdjF+I7N4lfzOaHXVV0iMw/ABM+0PD6tp3V/9pxsguaZyeAHyEiUlDA6PZ4TfXv5zfnXEgW4Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-arm64-msvc@1.3.68: - resolution: {integrity: sha512-v2WZvXrSslYEpY1nqpItyamL4DyaJinmOkXvM8Bc1LLKU5rGuvmBdjUYg/5Y+o0AUynuiWubpgHNOkBWiCvfqw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-ia32-msvc@1.3.68: - resolution: {integrity: sha512-HH5NJrIdzkJs+1xxprie0qSCMBeL9yeEhcC1yZTzYv8bwmabOUSdtKIqS55iYP/2hLWn9CTbvKPmLOIhCopW3Q==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-x64-msvc@1.3.68: - resolution: {integrity: sha512-9HZVtLQUgK8r/yXQdwe0VBexbIcrY6+fBROhs7AAPWdewpaUeLkwQEJk6TbYr9CQuHw26FFGg6SjwAiqXF+kgQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core@1.3.68: - resolution: {integrity: sha512-njGQuJO+Wy06dEayt70cf0c/KI3HGjm4iW9LLViVLBuYNzJ4SSdNfzejludzufu6im+dsDJ0i3QjgWhAIcVHMQ==} - engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.68 - '@swc/core-darwin-x64': 1.3.68 - '@swc/core-linux-arm-gnueabihf': 1.3.68 - '@swc/core-linux-arm64-gnu': 1.3.68 - '@swc/core-linux-arm64-musl': 1.3.68 - '@swc/core-linux-x64-gnu': 1.3.68 - '@swc/core-linux-x64-musl': 1.3.68 - '@swc/core-win32-arm64-msvc': 1.3.68 - '@swc/core-win32-ia32-msvc': 1.3.68 - '@swc/core-win32-x64-msvc': 1.3.68 - dev: false - - /@types/node@20.4.1: - resolution: {integrity: sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==} - dev: true - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: false - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: false - - /bundle-require@4.0.1(esbuild@0.18.12): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.18.12 - load-tsconfig: 0.2.5 - dev: false - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: false - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: false - - /cmd-ts@0.12.1: - resolution: {integrity: sha512-k93f6LgFEzx7/vBy5qV+tu1VI8YuH0DZmwNXPvRaDR4Qp7Fl9+pUSylX/CKHrWoKqHMJjNOLb1NeYTvHOjQ2Kw==} - dependencies: - chalk: 4.1.2 - debug: 4.3.4 - didyoumean: 1.2.2 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: false - - /detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: false - - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /esbuild@0.18.12: - resolution: {integrity: sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.12 - '@esbuild/android-arm64': 0.18.12 - '@esbuild/android-x64': 0.18.12 - '@esbuild/darwin-arm64': 0.18.12 - '@esbuild/darwin-x64': 0.18.12 - '@esbuild/freebsd-arm64': 0.18.12 - '@esbuild/freebsd-x64': 0.18.12 - '@esbuild/linux-arm': 0.18.12 - '@esbuild/linux-arm64': 0.18.12 - '@esbuild/linux-ia32': 0.18.12 - '@esbuild/linux-loong64': 0.18.12 - '@esbuild/linux-mips64el': 0.18.12 - '@esbuild/linux-ppc64': 0.18.12 - '@esbuild/linux-riscv64': 0.18.12 - '@esbuild/linux-s390x': 0.18.12 - '@esbuild/linux-x64': 0.18.12 - '@esbuild/netbsd-x64': 0.18.12 - '@esbuild/openbsd-x64': 0.18.12 - '@esbuild/sunos-x64': 0.18.12 - '@esbuild/win32-arm64': 0.18.12 - '@esbuild/win32-ia32': 0.18.12 - '@esbuild/win32-x64': 0.18.12 - dev: false - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: false - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: false - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.0 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: false - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: false - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /jiti@1.17.0: - resolution: {integrity: sha512-CByzPgFqYoB9odEeef7GNmQ3S5THIBOtzRYoSCya2Sv27AuQxy2jgoFjQ6VTF53xsq1MXRm+YWNvOoDHUAteOw==} - hasBin: true - dev: true - - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: false - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: false - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: false - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: false - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - 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: false - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: false - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: false - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: false - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: false - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: false - - /postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 2.3.1 - dev: false - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: false - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: false - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rollup@3.26.2: - resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: false - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - dependencies: - whatwg-url: 7.1.0 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: false - - /sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /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: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: false - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: false - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false - - /tsup@7.1.0(@swc/core@1.3.68): - resolution: {integrity: sha512-mazl/GRAk70j8S43/AbSYXGgvRP54oQeX8Un4iZxzATHt0roW0t6HYDVZIXMw0ZQIpvr1nFMniIVnN5186lW7w==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - '@swc/core': 1.3.68 - bundle-require: 4.0.1(esbuild@0.18.12) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.12 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 3.26.2 - source-map: 0.8.0-beta.0 - sucrase: 3.32.0 - tree-kill: 1.2.2 - transitivePeerDependencies: - - supports-color - - ts-node - dev: false - - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: false - - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: false diff --git a/packages/core/src/commands/index.ts b/packages/core/src/commands/index.ts deleted file mode 100644 index e06da10..0000000 --- a/packages/core/src/commands/index.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { openInBrowser } from "@solid-cli/utils"; -import { startCommands } from "./start"; -import * as p from "@clack/prompts"; -import { boolean, command, flag, optional, positional, restPositionals, string } from "cmd-ts"; -import { oneOf } from "@solid-cli/utils"; -import { cancelable } from "@solid-cli/ui"; -import { PossibleFields, setField, t } from "@solid-cli/utils"; -import { spinnerify } from "@solid-cli/ui"; -import { handleNew, handleAdd } from "@solid-cli/commands"; -const add = command({ - name: "add", - description: t.ADD_DESC, - args: { - packages: restPositionals({ - type: string, - displayName: "Package Name", - }), - forceTransform: flag({ type: boolean, long: "force", short: "f" }), - }, - handler: async ({ packages, forceTransform }) => { - await handleAdd(packages, forceTransform); - }, -}); -const new_ = command({ - name: "new", - description: t.NEW_DESC, - args: { - variation: positional({ - type: optional(oneOf(["bare", "ts", "js"] as const)), - displayName: t.NEW_VARIATION_DESC, - description: "", - }), - name: positional({ - type: optional(string), - displayName: t.PROJECT_NAME, - description: t.NEW_NAME_DESC, - }), - stackblitz: flag({ type: boolean, long: "stackblitz", short: "s" }), - }, - async handler({ variation, name, stackblitz }) { - if (!name && variation) { - const _name = await cancelable( - p.text({ - message: t.PROJECT_NAME, - placeholder: `solid-${variation}`, - defaultValue: `solid-${variation}`, - }), - ); - name = _name; - } - await handleNew(variation, name, stackblitz); - }, -}); -const docs = command({ - name: "docs", - args: { - keyword: positional({ type: optional(string), displayName: "Keyword" }), - open: flag({ type: boolean, long: "open", short: "o" }), - }, - async handler({ keyword, open }) { - if (!keyword) { - if (open) { - await spinnerify({ - startText: "Opening", - finishText: "Opened", - fn: () => openInBrowser("https://docs.solidjs.com"), - }); - return; - } - p.log.message("The solid documentation is available at https://docs.solidjs.com"); - return; - } - await spinnerify({ - startText: "Opening", - finishText: "Opened", - fn: () => - openInBrowser( - `https://www.google.com/search?q=${keyword}+site:docs.solidjs.com+OR+site:start.solidjs.com+OR+site:solidjs.com`, - ), - }); - }, -}); -const set = command({ - name: "set", - args: { field: positional({ type: oneOf(PossibleFields) }), value: positional({ type: string }) }, - async handler({ field, value }) { - await setField(field, value); - }, -}); -const playground = command({ - name: "playground", - args: {}, - async handler() { - await spinnerify({ - startText: "Opening", - finishText: "Opened", - fn: () => openInBrowser("https://playground.solidjs.com"), - }); - }, -}); -export default { - add, - docs, - new: new_, - set, - start: startCommands, - playground, -}; diff --git a/packages/core/src/commands/start.ts b/packages/core/src/commands/start.ts deleted file mode 100644 index 5900eb2..0000000 --- a/packages/core/src/commands/start.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { command, flag, optional, positional, string, subcommands } from "cmd-ts"; -import { oneOf } from "@solid-cli/utils"; -import { t } from "@solid-cli/utils"; -import { - handleAdapter, - handleApi, - handleData, - handleMode, - handleRoute, - supportedAdapters, - supportedModes, -} from "@solid-cli/commands"; - -const mode = command({ - name: "mode", - args: { - mode: positional({ - type: optional(oneOf(supportedModes)), - displayName: "Mode", - description: t.START_MODE_DESC, - }), - }, - async handler({ mode }) { - await handleMode(mode); - }, -}); -const route = command({ - name: "route", - args: { - path: positional({ type: optional(string), displayName: "Route Path" }), - name: positional({ - type: optional(string), - displayName: "Route name", - description: t.START_ROUTE_DESC, - }), - }, - async handler({ path, name }) { - await handleRoute(path, name); - }, -}); -const data = command({ - name: "data", - args: { - path: positional({ type: optional(string), displayName: "Data Path" }), - name: positional({ - type: optional(string), - displayName: "Data name", - description: t.START_DATA_DESC, - }), - }, - async handler({ path, name }) { - await handleData(path, name); - }, -}); -const adapter = command({ - name: "adapter", - args: { - name: positional({ - type: optional(oneOf(supportedAdapters)), - displayName: t.START_ADAPTER_DISPLAYNAME, - }), - forceTransform: flag({ short: "f", long: "force" }), - }, - async handler({ name, forceTransform }) { - await handleAdapter(name, forceTransform); - }, -}); - -const api = command({ - name: "api", - args: { - path: positional({ type: optional(string), displayName: "Api Path" }), - name: positional({ - type: optional(string), - displayName: t.START_API_DISPLAYNAME, - description: t.START_API_HINT, - }), - }, - async handler({ path, name }) { - await handleApi(path, name); - }, -}); - -export const startCommands = subcommands({ - name: "start", - description: "Commands specific to solid start", - cmds: { - mode, - route, - data, - adapter, - api, - }, -}); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts deleted file mode 100644 index b51ce88..0000000 --- a/packages/core/src/index.ts +++ /dev/null @@ -1,110 +0,0 @@ -#! /usr/bin/env node -import { run, subcommands } from "cmd-ts"; -import * as p from "@clack/prompts"; -import color from "picocolors"; -import { t, setLocale, getField } from "@solid-cli/utils"; -import { name, version } from "../package.json"; -import { readConfig } from "@solid-cli/utils"; -import loadCommands from "./plugins/plugins_entry"; -import updater from "tiny-updater"; -import { createAsync } from "@solid-cli/reactivity"; -import { - handleAdapter, - handleAdd, - handleApi, - handleData, - handleMode, - handleNew, - handleRoute, -} from "@solid-cli/commands"; -const possibleActions = () => - [ - { value: "add", label: t.ACTION_ADD, hint: "solid add ..." }, - { value: "new", label: t.ACTION_NEW, hint: "solid new ..." }, - { value: "start", label: t.ACTION_START, hint: "solid start ..." }, - ] as const; - -export const provideStartSuggestions = async () => { - let startAction = await p.select({ - message: t.SELECT_START_ACTION, - options: [ - { value: "mode", label: t.START_MODE, hint: t.START_MODE_HINT }, - { value: "route", label: t.START_ROUTE, hint: t.START_ROUTE_HINT }, - { value: "data", label: t.START_DATA, hint: t.START_DATA_HINT }, - { - value: "adapter", - label: t.START_ADAPTER, - hint: t.START_ADAPTER_HINT, - }, - { - value: "api", - label: t.START_API, - hint: t.START_API_HINT, - }, - ], - }); - switch (startAction) { - case "mode": - await handleMode(); - break; - case "route": - await handleRoute(); - break; - case "data": - await handleData(); - break; - case "adapter": - await handleAdapter(); - break; - case "api": - await handleApi(); - break; - } -}; - -const provideSuggestions = async () => { - type ActionType = ReturnType[number]["value"]; - let action = (await p.select({ - message: t.SELECT_ACTION, - // This thing really doesn't like `as const` things - options: possibleActions() as any, - })) as ActionType; - if (!action) return; - switch (action) { - case "add": - await handleAdd(); - break; - case "new": - await handleNew(); - break; - case "start": - await provideStartSuggestions(); - break; - } -}; - -const main = async () => { - p.intro(`\n${color.bgCyan(color.black(" Solid-CLI "))}`); - await readConfig(); - const needsUpdate = createAsync(async () => await updater({ name, version, ttl: 86_400_000 })); - setLocale(getField("lang")); - const cli = subcommands({ - name: "solid", - cmds: await loadCommands(), - version: version, - }); - const args = process.argv.slice(2); - - if (args.length === 0) { - await provideSuggestions(); - return; - } - - if (args.length === 1 && args[0] === "start") { - await provideStartSuggestions(); - return; - } - - await run(cli, args); -}; -main(); diff --git a/packages/core/src/plugins/plugins_entry.ts b/packages/core/src/plugins/plugins_entry.ts deleted file mode 100644 index f1aec75..0000000 --- a/packages/core/src/plugins/plugins_entry.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { join } from "path"; -import { config } from "@solid-cli/utils"; -import defaultCommands from "../commands"; - -const resolveImport = async (packagePath: string) => { - const packageJson = await import(join(packagePath, "package.json")); - return await import(join(packagePath, packageJson.module)); -}; -const loadUserCommands = async () => { - const pluginPaths = config()["plugins"] as string[]; - if (!pluginPaths) return null; - const imports = await Promise.all(pluginPaths.map((p) => resolveImport(p))); - const importedCommands = imports.map((i) => i.default); - let commands = {} as any; - importedCommands.forEach((c) => { - const name = c.name; - commands[name] = c; - }); - return commands; -}; -const loadCommands = async () => { - const cmds = { - ...defaultCommands, - ...(await loadUserCommands()), - }; - return cmds; -}; -export default loadCommands; diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts deleted file mode 100644 index 0399ef0..0000000 --- a/packages/core/tsup.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from "tsup"; -import metaUrlPlugin from "@chialab/esbuild-plugin-meta-url"; - -export default defineConfig({ - entry: ["src/index.ts"], - target: "esnext", - format: "esm", - splitting: false, - sourcemap: true, - clean: true, - esbuildPlugins: [metaUrlPlugin()], -}); diff --git a/packages/create-solid/CHANGELOG.md b/packages/create-solid/CHANGELOG.md new file mode 100644 index 0000000..cc52156 --- /dev/null +++ b/packages/create-solid/CHANGELOG.md @@ -0,0 +1,115 @@ +# create-solid + +## 0.10.0 + +### Minor Changes + +- Always scaffold from the latest templates + + - Template downloads are no longer pinned to a baked-in solidjs/templates commit. Scaffolds come from live HEAD of the default branch, matching the `templates.json` manifest, so upstream template changes and dependency repins reach users without a CLI release. + - Removed the `SOLID_CLI_TEMPLATES_REF` environment override that shipped in 0.9.0, along with the pin it existed to escape. + - HEAD is resolved to a commit sha before downloading so the tarball can be cached under it and reused by later scaffolds. That lookup goes through api.github.com, which is rate limited to 60 requests/hour for unauthenticated users, so any failure — rate limited, offline, slow — falls back to fetching HEAD from the archive endpoint directly, uncached. + - Solid 2.0 is labelled "Solid 2.0 (RC)" in the project picker now that Solid 2.0 core is a release candidate. It stays listed first but not preselected. + +## 0.9.0 + +### Minor Changes + +- 68caa9f: Solid 2.0 template support + + - New "Solid 2.0" top-level project type scaffolding the `solid-v2/*` templates from solidjs/templates (basic, bare, fullstack, fullstack-tanstack, with-\*). Listed first but not preselected while Solid 2.0 core is in beta; existing flags (`-s`, `-v`, `-l`, `--v2`) keep their meaning, plus new `--solid` and `--ssr` flags. + - Optional streaming SSR on templates that support it (currently `basic`): a scaffold-time flip that sets `ssr: true` in `vite.config.ts`, adds the generic production `server.js`, and points the `start` script at it. Defaults to No. + - JavaScript variants of the Solid 2.0 templates via the existing sucrase TS→JS conversion (no `index.html` rewrite; `.ts`/`.tsx` references inside `vite.config` are retargeted, `.d.ts` files dropped, minimal `jsconfig.json`). + - Template lists, subdir paths and per-template flags are now read from a `templates.json` manifest at the templates repo HEAD (2s timeout), with silent fallback to the baked-in lists — so new templates and future repo reorganizations no longer require a CLI release. + +## 0.8.1 + +### Patch Changes + +- make start v2 stable + +## 0.8.0 + +### Minor Changes + +- support fetching without the github API (so fetching should no work when hitting the github api limit) + +## 0.6.14 + +### Patch Changes + +- update dependencies and add to solid start v2 templates list + +## 0.6.13 + +### Patch Changes + +- Keep showing `pnpm install` & `pnpm dev` commands when initialising a project in the current working directory + +## 0.6.12 + +### Patch Changes + +- Update dependencies, add new template, and remove `cd` command if project is created in working directory + +## 0.6.11 + +### Patch Changes + +- Rename `with-pages-router-file-based` to `with-vite-plugin-pages` + +## 0.6.10 + +### Patch Changes + +- Fetch Vanilla templates from /vanilla subdirectory of solidjs/templates, rather than from repo root + +## 0.6.9 + +### Patch Changes + +- Fetch Start templates from solidjs/templates, rather than the Start repo + +## 0.6.8 + +### Patch Changes + +- Correctly perform TS->JS conversion by disabling ES transforms and preserving dynamic imports + +## 0.6.7 + +### Patch Changes + +- Add `with-strict-csp` template to Start + +## 0.6.6 + +### Patch Changes + +- Add CLI flags for creating `vanilla` and `library` projects + +## 0.6.5 + +### Patch Changes + +- Don't add "Created with Solid CLI" text to README if it's already there + +## 0.6.4 + +### Patch Changes + +- Update link in text added to project READMEs + +## 0.6.3 + +### Patch Changes + +- Add more command line arguments + +## 0.6.1 + +### Patch Changes + +- Fix regression from 0.5.x (.gitignore wasn't being written to new projects) + +## 0.6.0 diff --git a/packages/create-solid/README.md b/packages/create-solid/README.md index 4849ea1..ce864de 100644 --- a/packages/create-solid/README.md +++ b/packages/create-solid/README.md @@ -1,5 +1,29 @@ -# @solid-cli/create-solid +--- +description: Create Solid apps in one command with create-solid. +--- -A minimal version of the [main CLI](https://www.npmjs.com/package/@solid-cli/core) just for creating new projects. +# Create Solid -Invoked with the `create-solid` command +The easiest way to get started with Solid is by using `create-solid`. This CLI tool enables you to quickly start building a new Solid application, with everything set up for you. You can create a new app using the default SolidStart template or use one of the [Official SolidStart Examples](https://github.com/solidjs/solid-start/tree/main/examples). To get started, use the following command: + +```bash +#or +npm init solid@latest + +#or +pnpm create solid@latest + +# or +yarn create solid + +# or +bunx create-solid +``` + +## Why use Create Solid? + +`create-solid` allows you to create a new Solid app within seconds. It includes a number of benefits: + +- **Interactive Experience**: Running `npm init solid@latest` (with no arguments) launches an interactive experience that guides you through setting up a project. +- **Zero Dependencies**: Initializing a project is as quick as one second. Create Solid has zero runtime dependencies. +- **Support for Examples**: Create Solid App can bootstrap your application using an example from the SolidStart official examples collection. diff --git a/packages/create-solid/package.json b/packages/create-solid/package.json index c9936c8..bb67865 100644 --- a/packages/create-solid/package.json +++ b/packages/create-solid/package.json @@ -1,8 +1,11 @@ { - "name": "@solid-cli/create-solid", - "version": "0.0.5", - "description": "A stripped down Solid CLI just for creating new projects", - "author": "Thomas Beer & Rahul Batra", + "name": "create-solid", + "version": "0.10.0", + "description": "Create Solid apps with low configuration", + "author": "Thomas Beer", + "contributors": [ + "Rahul Batra" + ], "license": "MIT", "homepage": "https://solid-cli.netlify.app", "repository": { @@ -14,26 +17,27 @@ "solid", "cli" ], - "main": "dist/index.mjs", + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", "bin": { - "create-solid": "./dist/index.mjs" + "create-solid": "./dist/bin.mjs" }, "files": [ "dist" ], - "dependencies": { - "@solid-cli/commands": "workspace:*" - }, "scripts": { - "start": "jiti ./src/index.ts", - "build": "tsc && tsup" + "start": "jiti ./src/bin.ts", + "build": "tsc && tsup", + "test": "vitest run" }, "devDependencies": { - "jiti": "^1.19.1", - "tsup": "^7.2.0", - "typescript": "^5.1.6" + "@clack/prompts": "1.7.0", + "picocolors": "^1.1.1", + "citty": "^0.2.2", + "@solid-cli/create": "workspace:*" }, "publishConfig": { "access": "public" - } + }, + "dependencies": {} } diff --git a/packages/create-solid/src/bin.ts b/packages/create-solid/src/bin.ts new file mode 100644 index 0000000..5b848bd --- /dev/null +++ b/packages/create-solid/src/bin.ts @@ -0,0 +1,11 @@ +#! /usr/bin/env node + +import { runMain } from "citty"; +import { createSolid } from "@solid-cli/create"; +import { intro } from "@clack/prompts"; +import color from "picocolors"; +import packageJson from "../package.json" with { type: "json" }; + +intro(`\n${color.bgCyan(color.black(` Create-Solid v${packageJson.version}`))}`); + +runMain(createSolid(packageJson.version)); diff --git a/packages/create-solid/src/index.ts b/packages/create-solid/src/index.ts deleted file mode 100644 index 43b55c4..0000000 --- a/packages/create-solid/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/env node -import { handleNew } from "@solid-cli/commands"; -const main = async () => { - await handleNew(); -}; -main(); diff --git a/packages/create-solid/tsconfig.json b/packages/create-solid/tsconfig.json index b6d4e3a..1115998 100644 --- a/packages/create-solid/tsconfig.json +++ b/packages/create-solid/tsconfig.json @@ -1,7 +1,5 @@ { "compilerOptions": { - "baseUrl": ".", - "noEmit": true, "module": "ESNext", "target": "ESNext", "moduleResolution": "Bundler", @@ -9,6 +7,8 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true, - "resolveJsonModule": true - } + "resolveJsonModule": true, + "noEmit": true + }, + "include": ["src/*"] } diff --git a/packages/create-solid/tsup.config.ts b/packages/create-solid/tsup.config.ts index d80d441..ed15cdf 100644 --- a/packages/create-solid/tsup.config.ts +++ b/packages/create-solid/tsup.config.ts @@ -1,10 +1,17 @@ import { defineConfig } from "tsup"; export default defineConfig({ - entry: ["src/index.ts"], + entry: ["src/bin.ts"], target: "esnext", format: "esm", - splitting: false, - sourcemap: true, + splitting: true, + bundle: true, + sourcemap: false, clean: true, + treeshake: true, + minify: true, + banner: { + js: `import { createRequire } from "module"; + const require = createRequire(import.meta.url);`, + }, }); diff --git a/packages/create/CHANGELOG.md b/packages/create/CHANGELOG.md new file mode 100644 index 0000000..80a8250 --- /dev/null +++ b/packages/create/CHANGELOG.md @@ -0,0 +1,128 @@ +# @solid-cli/create + +## 0.10.0 + +### Minor Changes + +- Always scaffold from the latest templates + + - Template downloads are no longer pinned to a baked-in solidjs/templates commit. Scaffolds come from live HEAD of the default branch, matching the `templates.json` manifest, so upstream template changes and dependency repins reach users without a CLI release. + - Removed the `SOLID_CLI_TEMPLATES_REF` environment override that shipped in 0.9.0, along with the pin it existed to escape. + - HEAD is resolved to a commit sha before downloading so the tarball can be cached under it and reused by later scaffolds. That lookup goes through api.github.com, which is rate limited to 60 requests/hour for unauthenticated users, so any failure — rate limited, offline, slow — falls back to fetching HEAD from the archive endpoint directly, uncached. + - Solid 2.0 is labelled "Solid 2.0 (RC)" in the project picker now that Solid 2.0 core is a release candidate. It stays listed first but not preselected. + +## 0.9.0 + +### Minor Changes + +- 68caa9f: Solid 2.0 template support + + - New "Solid 2.0" top-level project type scaffolding the `solid-v2/*` templates from solidjs/templates (basic, bare, fullstack, fullstack-tanstack, with-\*). Listed first but not preselected while Solid 2.0 core is in beta; existing flags (`-s`, `-v`, `-l`, `--v2`) keep their meaning, plus new `--solid` and `--ssr` flags. + - Optional streaming SSR on templates that support it (currently `basic`): a scaffold-time flip that sets `ssr: true` in `vite.config.ts`, adds the generic production `server.js`, and points the `start` script at it. Defaults to No. + - JavaScript variants of the Solid 2.0 templates via the existing sucrase TS→JS conversion (no `index.html` rewrite; `.ts`/`.tsx` references inside `vite.config` are retargeted, `.d.ts` files dropped, minimal `jsconfig.json`). + - Template lists, subdir paths and per-template flags are now read from a `templates.json` manifest at the templates repo HEAD (2s timeout), with silent fallback to the baked-in lists — so new templates and future repo reorganizations no longer require a CLI release. + +## 0.8.1 + +### Patch Changes + +- 5621942: SolidStart v2 is now Stable + +## 0.8.0 + +### Minor Changes + +- support fetching without the github API (so fetching should no work when hitting the github api limit) + +### Patch Changes + +- Updated dependencies + - @solid-cli/utils@0.7.0 + +## 0.6.14 + +### Patch Changes + +- update dependencies and add to solid start v2 templates list +- Updated dependencies + - @solid-cli/utils@0.6.3 + +## 0.6.13 + +### Patch Changes + +- Keep showing `pnpm install` & `pnpm dev` commands when initialising a project in the current working directory + +## 0.6.12 + +### Patch Changes + +- Update dependencies, add new template, and remove `cd` command if project is created in working directory +- Updated dependencies + - @solid-cli/utils@0.6.2 + +## 0.6.11 + +### Patch Changes + +- Rename `with-pages-router-file-based` to `with-vite-plugin-pages` + +## 0.6.10 + +### Patch Changes + +- Fetch Vanilla templates from /vanilla subdirectory of solidjs/templates, rather than from repo root + +## 0.6.9 + +### Patch Changes + +- Fetch Start templates from solidjs/templates, rather than the Start repo + +## 0.6.8 + +### Patch Changes + +- Correctly perform TS->JS conversion by disabling ES transforms and preserving dynamic imports + +## 0.6.7 + +### Patch Changes + +- Add `with-strict-csp` template to Start + +## 0.6.6 + +### Patch Changes + +- Add CLI flags for creating `vanilla` and `library` projects + +## 0.6.5 + +### Patch Changes + +- Don't add "Created with Solid CLI" text to README if it's already there + +## 0.6.4 + +### Patch Changes + +- Update link in text added to project READMEs + +## 0.6.3 + +### Patch Changes + +- Add more command line arguments + +## 0.6.1 + +### Patch Changes + +- Fix regression from 0.5.x (.gitignore wasn't being written to new projects) + +## 0.6.0 + +### Patch Changes + +- @solid-cli/utils@0.6.0 diff --git a/packages/create/README.md b/packages/create/README.md new file mode 100644 index 0000000..74c4b75 --- /dev/null +++ b/packages/create/README.md @@ -0,0 +1,26 @@ +# @solid-cli/create + +A library for easily initialising Solid projects + +## Usage + +### Initialising a Vanilla project + +```ts +import { createVanilla } from "@solid-cli/create"; +createVanilla({ template: "ts", destination: "./ts" }); +``` + +### Initialising a Start project + +```ts +import { createStart } from "@solid-cli/create"; +createStart({ template: "basic", destination: "./basic" }); +``` + +### Initialising a Library project + +```ts +import { createLibrary } from "@solid-cli/create"; +createLibrary({ destination: "./library-project" }); +``` diff --git a/packages/create/package.json b/packages/create/package.json new file mode 100644 index 0000000..e745e00 --- /dev/null +++ b/packages/create/package.json @@ -0,0 +1,50 @@ +{ + "name": "@solid-cli/create", + "version": "0.10.0", + "description": "Create Solid apps with low configuration", + "author": "Thomas Beer", + "contributors": [ + "Rahul Batra" + ], + "license": "MIT", + "homepage": "https://solid-cli.netlify.app", + "repository": { + "type": "git", + "url": "https://github.com/solidjs-community/solid-cli" + }, + "keywords": [ + "solidjs", + "solid", + "cli" + ], + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./types/index.d.ts", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.mjs" + } + }, + "files": [ + "dist", + "types" + ], + "scripts": { + "start": "jiti ./src/bin.ts", + "build": "tsc && tsup", + "test": "vitest run" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@clack/prompts": "1.7.0", + "picocolors": "^1.1.1", + "@begit/core": "^0.4.0", + "citty": "^0.2.2", + "sucrase": "^3.35.1", + "@solid-cli/utils": "workspace:*" + } +} diff --git a/packages/create/src/create-library.ts b/packages/create/src/create-library.ts new file mode 100644 index 0000000..0366d98 --- /dev/null +++ b/packages/create/src/create-library.ts @@ -0,0 +1,14 @@ +import { downloadRepo, GithubFetcher } from "@begit/core"; + +export type CreateLibraryArgs = { + destination: string; +}; +export const createLibrary = ({ destination }: CreateLibraryArgs) => { + return downloadRepo( + { + repo: { owner: "solidjs-community", name: "solid-lib-starter" }, + dest: destination, + }, + GithubFetcher, + ); +}; diff --git a/packages/create/src/create-solid-v2.ts b/packages/create/src/create-solid-v2.ts new file mode 100644 index 0000000..cfac554 --- /dev/null +++ b/packages/create/src/create-solid-v2.ts @@ -0,0 +1,63 @@ +import { join } from "node:path"; +import { existsSync, writeFileSync } from "node:fs"; +import { readFile, writeFile } from "node:fs/promises"; +import { handleTSConversion } from "./utils/ts-conversion"; +import { GIT_IGNORE, JS_CONFIG_SOLID_V2, SolidV2Template } from "./utils/constants"; +import { downloadTemplate } from "./utils/download"; +import { applySsrFlip } from "./utils/ssr-flip"; + +export type CreateSolidV2Args = { + template: SolidV2Template | (string & {}); + destination: string; + /** Subdir prefix inside the templates repo (from templates.json), defaults to "solid-v2" */ + path?: string; +}; + +export const createSolidV2 = (args: CreateSolidV2Args, transpile?: boolean, ssr?: boolean) => { + if (transpile) { + return createSolidV2JS(args, ssr); + } + return createSolidV2TS(args, ssr); +}; + +export const createSolidV2TS = async ({ template, destination, path = "solid-v2" }: CreateSolidV2Args, ssr?: boolean) => { + await downloadTemplate(`${path}/${template}`, destination); + if (ssr) await applySsrFlip(destination); +}; + +/** + * Retarget `.ts`/`.tsx` filename mentions in converted text (vite config, + * README) to the transpiled `.js`/`.jsx` output. `.d.ts` files are deleted + * (not transpiled) by the conversion, so their mentions are left alone. + */ +export const retargetTSFilenames = (text: string) => + text + .replace(/\.tsx\b/g, ".jsx") + .replace(/(? { + const deduped = [...new Set(entries.split(",").map((entry) => entry.trim()).filter(Boolean))]; + return `extensions: [${deduped.join(", ")}]`; + }); + +export const createSolidV2JS = async (args: CreateSolidV2Args, ssr?: boolean) => { + // Create typescript project in `/.project` + // then transpile this to javascript and clean up. + // The SSR flip runs inside the temp dir, before conversion, so the config + // edit happens on the `.ts` source (server.js is already plain JS). + const tempDir = join(args.destination, ".project"); + await createSolidV2TS({ ...args, destination: tempDir }, ssr); + await handleTSConversion(tempDir, args.destination, JS_CONFIG_SOLID_V2); + // Solid 2.0 templates have no `index.html` (turnkey entries), but their vite + // config and README reference `.ts`/`.tsx` files (setup files, comments, + // route examples) — retarget those to the transpiled `.js`/`.jsx` output + for (const file of ["vite.config.js", "README.md"]) { + const filePath = join(args.destination, file); + if (existsSync(filePath)) { + await writeFile(filePath, retargetTSFilenames((await readFile(filePath)).toString())); + } + } + // Add .gitignore + writeFileSync(join(args.destination, ".gitignore"), GIT_IGNORE); +}; diff --git a/packages/create/src/create-start.ts b/packages/create/src/create-start.ts new file mode 100644 index 0000000..0b4bc29 --- /dev/null +++ b/packages/create/src/create-start.ts @@ -0,0 +1,33 @@ +import { join } from "path"; +import { writeFileSync } from "fs"; +import { handleTSConversion } from "./utils/ts-conversion"; +import { GIT_IGNORE, StartTemplate, StartTemplateV2 } from "./utils/constants"; +import { downloadTemplate } from "./utils/download"; +export type CreateStartArgs = { + template: StartTemplate | StartTemplateV2 | (string & {}); + destination: string; + /** Subdir prefix inside the templates repo (from templates.json), defaults to "solid-start-v2"/"solid-start-v1" */ + path?: string; +}; + +export const createStartTS = ({ template, destination, path }: CreateStartArgs, v2?: boolean) => { + const prefix = path ?? (v2 ? "solid-start-v2" : "solid-start-v1"); + return downloadTemplate(`${prefix}/${template}`, destination); +}; + +export const createStartJS = async ({ template, destination, path }: CreateStartArgs, v2?: boolean) => { + // Create typescript project in `/.project` + // then transpile this to javascript and clean up + const tempDir = join(destination, ".project"); + await createStartTS({ template, destination: tempDir, path }, v2); + await handleTSConversion(tempDir, destination); + // Add .gitignore + writeFileSync(join(destination, ".gitignore"), GIT_IGNORE); +}; + +export const createStart = (args: CreateStartArgs, transpile?: boolean, v2?: boolean) => { + if (transpile) { + return createStartJS(args, v2); + } + return createStartTS(args, v2); +}; diff --git a/packages/create/src/create-vanilla.ts b/packages/create/src/create-vanilla.ts new file mode 100644 index 0000000..a27d564 --- /dev/null +++ b/packages/create/src/create-vanilla.ts @@ -0,0 +1,36 @@ +import { join } from "node:path"; +import { writeFileSync } from "node:fs"; +import { readFile } from "node:fs/promises"; +import { handleTSConversion } from "./utils/ts-conversion"; +import { GIT_IGNORE, VanillaTemplate } from "./utils/constants"; +import { downloadTemplate } from "./utils/download"; + +export type CreateVanillaArgs = { + template: VanillaTemplate | (string & {}); + destination: string; + /** Subdir prefix inside the templates repo (from templates.json), defaults to "vanilla" */ + path?: string; +}; +export const createVanilla = (args: CreateVanillaArgs, transpile?: boolean) => { + if (transpile) { + return createVanillaJS(args); + } + return createVanillaTS(args); +}; + +export const createVanillaTS = async ({ template, destination, path = "vanilla" }: CreateVanillaArgs) => { + return await downloadTemplate(`${path}/${template}`, destination); +}; + +export const createVanillaJS = async ({ template, destination, path }: CreateVanillaArgs) => { + // Create typescript project in `/.project` + // then transpile this to javascript and clean up + const tempDir = join(destination, ".project"); + await createVanillaTS({ template, destination: tempDir, path }); + await handleTSConversion(tempDir, destination); + // Replace `index.tsx` with `index.jsx` in `index.html` + const indexPath = join(destination, "index.html"); + writeFileSync(indexPath, (await readFile(indexPath)).toString().replace("index.tsx", "index.jsx")); + // Add .gitignore + writeFileSync(join(destination, ".gitignore"), GIT_IGNORE); +}; diff --git a/packages/create/src/create.ts b/packages/create/src/create.ts new file mode 100644 index 0000000..1fe7984 --- /dev/null +++ b/packages/create/src/create.ts @@ -0,0 +1,12 @@ +import { createStart, CreateStartArgs } from "./create-start"; +import { createVanilla, CreateVanillaArgs } from "./create-vanilla"; + +export async function create(args: CreateVanillaArgs, js: boolean, isStart: false): Promise; +export async function create(args: CreateStartArgs, js: boolean, isStart: true): Promise; +export async function create(args: CreateVanillaArgs | CreateStartArgs, js: boolean, isStart: boolean) { + if (isStart) { + return createStart(args as CreateStartArgs, js); + } else { + return createVanilla(args as CreateVanillaArgs, js); + } +} diff --git a/packages/create/src/index.ts b/packages/create/src/index.ts new file mode 100644 index 0000000..624bf2a --- /dev/null +++ b/packages/create/src/index.ts @@ -0,0 +1,247 @@ +import { defineCommand } from "citty"; +import { createVanilla } from "./create-vanilla"; +import * as p from "@clack/prompts"; +import { cancelable, spinnerify } from "@solid-cli/utils/ui"; +import { createStart } from "./create-start"; +import { createSolidV2 } from "./create-solid-v2"; +import { GIT_IGNORE, isValidTemplate, LIBRARY_TEMPLATES, PROJECT_TYPES, ProjectType } from "./utils/constants"; +import { fetchTemplatesManifest, groupKeyFor, ManifestTemplate, resolveGroup } from "./utils/manifest"; +import { detectPackageManager } from "@solid-cli/utils/package-manager"; +import { existsSync, writeFileSync } from "node:fs"; +import { join } from "node:path"; +import { createLibrary } from "./create-library"; +import { readFile, writeFile } from "node:fs/promises"; +export { createVanilla, createStart, createLibrary, createSolidV2 }; + +const PROJECT_TYPE_LABELS: Record = { + solid: "Solid 2.0 (RC)", + start: "SolidStart (Solid 1.x)", + vanilla: "SolidJS + Vite (Solid 1.x)", + library: "Library", +}; + +export const createSolid = (version: string) => + defineCommand({ + meta: { + name: "create-solid", + description: "A CLI for scaffolding new Solid projects", + version: version, + }, + args: { + "projectNamePositional": { + type: "positional", + required: false, + description: "Project name", + }, + "templatePositional": { + type: "positional", + required: false, + description: "Template name", + }, + "project-name": { + type: "string", + required: false, + alias: "p", + description: "Project name", + }, + "template": { + type: "string", + required: false, + alias: "t", + description: "Template name", + }, + "solid": { + type: "boolean", + required: false, + description: "Create a Solid 2.0 project", + }, + "solidstart": { + type: "boolean", + required: false, + alias: "s", + description: "Create a SolidStart project", + }, + "v2": { + type: "boolean", + required: false, + description: "Create a SolidStart v2 project", + }, + "library": { + type: "boolean", + required: false, + alias: "l", + description: "Create a Library project", + }, + "vanilla": { + type: "boolean", + required: false, + alias: "v", + description: "Create a vanilla (SolidJS + Vite) project", + }, + "ssr": { + type: "boolean", + required: false, + description: "Enable server-side rendering (Solid 2.0 templates that support it)", + }, + "ts": { + type: "boolean", + required: false, + description: "Use typescript", + }, + "js": { + type: "boolean", + required: false, + description: "Use javascript", + }, + }, + async run({ + args: { + projectNamePositional, + templatePositional, + "project-name": projectNameOptional, + "template": templateOptional, + solid, + solidstart, + library, + vanilla, + ssr, + ts, + js, + v2, + }, + }) { + // Show prompts for any unknown arguments + let projectName = projectNamePositional ?? projectNameOptional; + let template = templatePositional ?? templateOptional; + let projectType: ProjectType | undefined = solid + ? "solid" + : solidstart + ? "start" + : vanilla + ? "vanilla" + : library + ? "library" + : undefined; + // False if user has selected ts, true if they have selected js, and undefined if they've done neither + let useJS = ts ? !ts : js ? js : undefined; + // Live template lists/paths from the templates repo; undefined falls back to the baked-in lists + const manifest = await fetchTemplatesManifest(); + projectName ??= await cancelable( + p.text({ message: "Project Name", placeholder: "solid-project", defaultValue: "solid-project" }), + ); + projectType ??= await cancelable( + p.select({ + message: "What type of project would you like to create?", + // Solid 2.0 is listed first but not preselected while core is a release candidate + initialValue: "start", + options: PROJECT_TYPES.map((t) => ({ + value: t, + label: PROJECT_TYPE_LABELS[t], + })), + }), + ); + if (!projectType) return; + + let useV2: string | undefined; + if (projectType === "start") { + useV2 = v2 + ? "v2" + : await cancelable( + p.select({ + message: "Which version of SolidStart?", + initialValue: "v2", + options: [ + { value: "v2", label: "2 (Stable)" }, + { value: "v1", label: "1 (Legacy)" }, + ], + }), + ); + } + const isV2 = useV2 === "v2"; + + // Don't offer javascript if `projectType` is library + useJS ??= projectType === "library" ? false : !(await cancelable(p.confirm({ message: "Use Typescript?" }))); + + if (!projectType) return; + const group = projectType === "library" ? undefined : resolveGroup(manifest, groupKeyFor(projectType, isV2)); + const template_opts: ManifestTemplate[] = group + ? group.templates + : LIBRARY_TEMPLATES.map((name) => ({ name })); + template ??= await cancelable( + p.select({ + message: "Which template would you like to use?", + initialValue: (template_opts.find((t) => t.default) ?? template_opts[0])?.name, + options: template_opts + .filter((t) => (useJS ? t : !t.name.startsWith("js"))) + .map((t) => ({ label: t.name, value: t.name })), + }), + ); + + if (!template) return; + const chosenTemplate = template_opts.find((t) => t.name === template); + + // SSR flip: only offered on Solid 2.0 templates that support it (e.g. "basic") + let enableSSR = false; + if (projectType === "solid" && chosenTemplate?.ssrToggle) { + enableSSR = + ssr ?? + (await cancelable( + p.confirm({ message: "Enable server-side rendering (streaming SSR)?", initialValue: false }), + )); + } else if (ssr) { + p.log.warn(`--ssr is not supported for this template and will be ignored`); + } + + // Need to transpile if the user wants Jabascript, but their selected template isn't Javascript + const transpileToJS = useJS && !template.startsWith("js"); + if (projectType === "solid" && chosenTemplate) { + await spinnerify({ + startText: "Creating project", + finishText: "Project created 🎉", + fn: () => createSolidV2({ template, destination: projectName, path: group?.path }, transpileToJS, enableSSR), + }); + } else if (projectType === "start" && chosenTemplate) { + await spinnerify({ + startText: "Creating project", + finishText: "Project created 🎉", + fn: () => createStart({ template, destination: projectName, path: group?.path }, transpileToJS, isV2), + }); + } else if (projectType === "library" && isValidTemplate("library", template)) { + await spinnerify({ + startText: "Creating project", + finishText: "Project created 🎉", + fn: () => createLibrary({ destination: projectName }), + }); + } else if (projectType === "vanilla" && chosenTemplate) { + await spinnerify({ + startText: "Creating project", + finishText: "Project created 🎉", + fn: () => createVanilla({ template, destination: projectName, path: group?.path }, transpileToJS), + }); + } else { + p.log.error(`Template ${template} is not valid for project type ${projectType}`); + process.exit(0); + } + // Add .gitignore + writeFileSync(join(projectName, ".gitignore"), GIT_IGNORE); + // Add "Created with Solid CLI" text to bottom of README + const readmePath = `${projectName}/README.md`; + if (existsSync(readmePath)) { + const contents = (await readFile(readmePath)).toString(); + if (!contents.includes("This project was created with the [Solid CLI]")) + await writeFile( + readmePath, + contents + + "\n## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)\n", + ); + } + // Next steps.. + const pM = detectPackageManager(); + p.note( + (projectName === "." ? "" : `cd ${projectName}\n`) + + `${pM.name} install +${pM.name} ${pM.runScriptCommand("dev")}`, + "To get started, run:", + ); + }, + }); diff --git a/packages/create/src/utils/constants.ts b/packages/create/src/utils/constants.ts new file mode 100644 index 0000000..6a0ecb6 --- /dev/null +++ b/packages/create/src/utils/constants.ts @@ -0,0 +1,184 @@ +export const GIT_IGNORE = `dist +.wrangler +.output +.vercel +.netlify +.vinxi +app.config.timestamp_*.js + +# Environment +.env +.env*.local + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +*.launch +.settings/ + +# Temp +gitignore + +# System Files +.DS_Store +Thumbs.db +`; + +export const JS_CONFIG = { + compilerOptions: { + jsx: "preserve", + jsxImportSource: "solid-js", + paths: { + "~/*": ["./src/*"], + }, + }, +}; + +// The solid-v2 templates don't use the `~/*` path alias, and Solid 2.0's JSX +// runtime lives in `@solidjs/web` (matches the templates' tsconfig.json) +export const JS_CONFIG_SOLID_V2 = { + compilerOptions: { + jsx: "preserve", + jsxImportSource: "@solidjs/web", + }, +}; + +// Supported templates + +/**Supported Vanilla Templates */ +export const VANILLA_TEMPLATES = [ + "basic", + "bare", + "with-vitest", + "with-uvu", + "with-unocss", + "with-tailwindcss", + "with-sass", + "with-solid-router", + "with-vite-plugin-pages", + "with-tanstack-router-config-based", + "with-tanstack-router-file-based", + "with-tanstack-start", + "with-jest", + "with-bootstrap", +] as const satisfies string[]; +export type VanillaTemplate = (typeof VANILLA_TEMPLATES)[number]; + +/** + * @description This list is hardcoded. But templates are fetched from another github repo. + * @see https://github.com/solidjs/templates/tree/main/solid-start + */ +export const START_TEMPLATES = [ + "basic", + "bare", + "with-solidbase", + "with-auth", + "with-authjs", + "with-drizzle", + "with-mdx", + "with-prisma", + "with-solid-styled", + "with-tailwindcss", + "with-tanstack-router", + "with-trpc", + "with-unocss", + "with-vitest", + "with-strict-csp", +] as const satisfies string[]; + +export type StartTemplate = (typeof START_TEMPLATES)[number]; + +export const START_TEMPLATES_V2 = [ + "basic", + "bare", + "with-auth", + "with-authjs", + "with-drizzle", + "with-mdx", + "with-prisma", + "with-solid-styled", + "with-solidbase", + "with-strict-csp", + "with-tailwindcss", + "with-trpc", + "with-unocss", + "with-vitest", +] as const satisfies string[]; + +export type StartTemplateV2 = (typeof START_TEMPLATES_V2)[number]; + +/** + * Solid 2.0 templates (templates repo: `solid-v2/`) + * @see https://github.com/solidjs/templates/tree/main/solid-v2 + */ +export const SOLID_V2_TEMPLATES = [ + "basic", + "bare", + "fullstack", + "fullstack-tanstack", + "with-bootstrap", + "with-sass", + "with-tailwindcss", + "with-tanstack-router", + "with-unocss", + "with-vitest-browser-mode", +] as const satisfies string[]; +export type SolidV2Template = (typeof SOLID_V2_TEMPLATES)[number]; + +/**Supported Library Templates */ +export const LIBRARY_TEMPLATES = ["solid-lib-starter"] as const satisfies string[]; +export type LibraryTemplate = (typeof LIBRARY_TEMPLATES)[number]; + +// "solid" (Solid 2.0) is listed first, but "start" remains the preselected +// default while Solid 2.0 core is a release candidate +export const PROJECT_TYPES = ["solid", "start", "vanilla", "library"] as const satisfies string[]; +export type ProjectType = (typeof PROJECT_TYPES)[number]; + +/** + * Fetches the template list for the project type given + * @param projectType type of project + */ +export function getTemplatesList(projectType: "vanilla", v2?: boolean): VanillaTemplate[]; +export function getTemplatesList(projectType: "solid", v2?: boolean): SolidV2Template[]; +export function getTemplatesList(projectType: "start", v2?: boolean): StartTemplate[] | StartTemplateV2[]; +export function getTemplatesList(projectType: "library", v2?: boolean): LibraryTemplate[]; +export function getTemplatesList( + projectType: ProjectType, + v2?: boolean, +): VanillaTemplate[] | SolidV2Template[] | StartTemplate[] | StartTemplateV2[] | LibraryTemplate[]; +export function getTemplatesList(projectType: ProjectType, v2?: boolean) { + if (projectType === "solid") { + return SOLID_V2_TEMPLATES as unknown as SolidV2Template[]; + } else if (projectType === "start") { + if (v2) { + return START_TEMPLATES_V2 as unknown as StartTemplateV2[]; + } + return START_TEMPLATES as StartTemplate[]; + } else if (projectType === "library") { + return LIBRARY_TEMPLATES as LibraryTemplate[]; + } + return VANILLA_TEMPLATES as VanillaTemplate[]; +} + +/** + * Tests is the template given is a valid template, and returns it as a template if it is + * @param type expected type of the template + * @param maybe_template the template string to test + * @returns the template string if it is valid, undefined if not + */ +export function isValidTemplate(type: "vanilla", maybe_template: string): maybe_template is VanillaTemplate; +export function isValidTemplate(type: "solid", maybe_template: string): maybe_template is SolidV2Template; +export function isValidTemplate( + type: "start", + maybe_template: string, + v2?: boolean, +): maybe_template is StartTemplate | StartTemplateV2; +export function isValidTemplate(type: "library", maybe_template: string): maybe_template is LibraryTemplate; +export function isValidTemplate(type: ProjectType, maybe_template: string, v2?: boolean) { + const templates = getTemplatesList(type, v2); + return templates.find((t) => t === maybe_template) !== undefined; +} diff --git a/packages/create/src/utils/download.ts b/packages/create/src/utils/download.ts new file mode 100644 index 0000000..93fc918 --- /dev/null +++ b/packages/create/src/utils/download.ts @@ -0,0 +1,54 @@ +import { downloadRepo, GithubFetcher } from "@begit/core"; + +export const TEMPLATES_REPO = { owner: "solidjs", name: "templates" } as const; + +/** A slow commit lookup must not hold up a scaffold — it is only there to enable caching */ +const LATEST_COMMIT_TIMEOUT_MS = 2000; + +/** + * Resolves HEAD of the templates repo to a commit sha, so begit can key its + * tarball cache on it and reuse the download across scaffolds. + * + * This goes through api.github.com, which is rate limited to 60 requests/hour + * for unauthenticated users (the archive endpoint the tarball itself comes from + * is not). Every failure — rate limited, offline, timeout, unexpected payload — + * resolves to `undefined`, and the caller falls back to fetching HEAD directly. + */ +export const latestTemplatesCommit = async (): Promise => { + const lookup = (async () => { + try { + return await GithubFetcher.fetchLatestCommit(TEMPLATES_REPO); + } catch { + return undefined; + } + })(); + let timer: ReturnType; + const timeout = new Promise((resolve) => { + timer = setTimeout(() => resolve(undefined), LATEST_COMMIT_TIMEOUT_MS); + }); + return Promise.race([lookup, timeout]).finally(() => clearTimeout(timer)); +}; + +/** + * Downloads `subdir` of the solidjs/templates repo into `destination`. + * + * No ref is pinned: scaffolds always come from live HEAD of the default branch, + * matching the `templates.json` manifest, so template updates reach users + * without a CLI release. HEAD is resolved to a sha first so begit can cache the + * tarball under it and skip the download next time; when that lookup fails we + * fetch HEAD directly instead, uncached — slower, but never a broken scaffold. + */ +export const downloadTemplate = async (subdir: string, destination: string) => { + const hash = await latestTemplatesCommit(); + return downloadRepo( + { + repo: { ...TEMPLATES_REPO, subdir, hash }, + dest: destination, + // HEAD is already resolved (or deliberately left unresolved) above, so begit + // must not call the API itself. Without a sha there is nothing to key a cache + // entry on, so the tarball is discarded rather than left behind unkeyed. + opts: { cache: !!hash, fetch_latest_commit: false }, + }, + GithubFetcher, + ); +}; diff --git a/packages/create/src/utils/file-system.ts b/packages/create/src/utils/file-system.ts new file mode 100644 index 0000000..c17c0f9 --- /dev/null +++ b/packages/create/src/utils/file-system.ts @@ -0,0 +1,17 @@ +import { Dirent, readdirSync } from "node:fs"; +import { readFile } from "node:fs/promises"; +import { resolve } from "node:path"; + +export const recurseFiles = (startPath: string, cb: (file: Dirent, startPath: string) => void) => { + startPath = resolve(startPath); + + const files = readdirSync(startPath, { withFileTypes: true }); + + for (const file of files) { + cb(file, startPath); + } +}; + +export const readFileToString = async (path: string) => { + return (await readFile(path)).toString(); +}; diff --git a/packages/create/src/utils/manifest.ts b/packages/create/src/utils/manifest.ts new file mode 100644 index 0000000..6855e68 --- /dev/null +++ b/packages/create/src/utils/manifest.ts @@ -0,0 +1,119 @@ +import { + SOLID_V2_TEMPLATES, + START_TEMPLATES, + START_TEMPLATES_V2, + VANILLA_TEMPLATES, + ProjectType, +} from "./constants"; + +/** + * `templates.json` manifest published at the root of the solidjs/templates repo. + * When reachable, it is the source of truth for template names, subdir paths and + * per-template flags, so the templates repo can add/reorganize templates without + * requiring a CLI release. The baked-in lists in `constants.ts` are the fallback. + */ +export type ManifestTemplate = { + name: string; + /** Preselected in the template prompt */ + default?: boolean; + /** Offer the "Enable server-side rendering?" prompt for this template */ + ssrToggle?: boolean; +}; + +export type ManifestGroup = { + label?: string; + /** Subdir prefix inside the templates repo, e.g. "solid-v2" */ + path: string; + status?: string; + templates: ManifestTemplate[]; +}; + +export type TemplatesManifest = { + version: number; + groups: Record; +}; + +/** Manifest groups the CLI understands (library comes from a different repo and stays baked-in) */ +export type ManifestGroupKey = "solid" | "start-v2" | "start-v1" | "vanilla"; + +export const MANIFEST_URL = "https://raw.githubusercontent.com/solidjs/templates/HEAD/templates.json"; +const MANIFEST_TIMEOUT_MS = 2000; + +const asTemplates = (names: readonly string[], defaultName?: string, ssrToggle?: string): ManifestTemplate[] => + names.map((name) => ({ + name, + ...(name === defaultName ? { default: true } : {}), + ...(name === ssrToggle ? { ssrToggle: true } : {}), + })); + +/** Baked-in fallback, used whenever the manifest can't be fetched or parsed */ +export const BAKED_GROUPS: Record = { + "solid": { + label: "Solid 2.0", + path: "solid-v2", + templates: asTemplates(SOLID_V2_TEMPLATES, "basic", "basic"), + }, + "start-v2": { + label: "SolidStart 2", + path: "solid-start-v2", + templates: asTemplates(START_TEMPLATES_V2, "basic"), + }, + "start-v1": { + label: "SolidStart 1", + path: "solid-start-v1", + templates: asTemplates(START_TEMPLATES, "basic"), + }, + "vanilla": { + label: "SolidJS + Vite", + path: "vanilla", + templates: asTemplates(VANILLA_TEMPLATES, "basic"), + }, +}; + +/** + * Validates an untrusted parsed JSON value into a `TemplatesManifest`. + * Returns `undefined` for anything unusable (unknown major version, wrong shape), + * dropping malformed groups/entries rather than failing outright. + */ +export const parseManifest = (raw: unknown): TemplatesManifest | undefined => { + if (!raw || typeof raw !== "object") return undefined; + const manifest = raw as TemplatesManifest; + if (manifest.version !== 1) return undefined; + if (!manifest.groups || typeof manifest.groups !== "object") return undefined; + const groups: Record = {}; + for (const [key, group] of Object.entries(manifest.groups)) { + if (!group || typeof group !== "object") continue; + if (typeof group.path !== "string" || !Array.isArray(group.templates)) continue; + const templates = group.templates.filter( + (t): t is ManifestTemplate => !!t && typeof t === "object" && typeof t.name === "string", + ); + if (templates.length === 0) continue; + groups[key] = { ...group, templates }; + } + if (Object.keys(groups).length === 0) return undefined; + return { version: 1, groups }; +}; + +/** + * Fetches the live manifest from the templates repo (HEAD, small file, short timeout). + * Any failure — offline, timeout, 404, malformed JSON, unknown version — resolves to + * `undefined` so callers silently fall back to the baked-in lists. + */ +export const fetchTemplatesManifest = async (): Promise => { + try { + const url = process.env.SOLID_CLI_TEMPLATES_MANIFEST_URL || MANIFEST_URL; + const res = await fetch(url, { signal: AbortSignal.timeout(MANIFEST_TIMEOUT_MS) }); + if (!res.ok) return undefined; + return parseManifest(await res.json()); + } catch { + return undefined; + } +}; + +/** Maps the CLI's project type (+ SolidStart version) to a manifest group key */ +export const groupKeyFor = (projectType: Exclude, startV2?: boolean): ManifestGroupKey => + projectType === "start" ? (startV2 ? "start-v2" : "start-v1") : projectType; + +/** Resolves a group from the manifest, falling back to the baked-in lists */ +export const resolveGroup = (manifest: TemplatesManifest | undefined, key: ManifestGroupKey): ManifestGroup => + manifest?.groups[key] ?? BAKED_GROUPS[key]; diff --git a/packages/create/src/utils/ssr-flip.ts b/packages/create/src/utils/ssr-flip.ts new file mode 100644 index 0000000..08b59d6 --- /dev/null +++ b/packages/create/src/utils/ssr-flip.ts @@ -0,0 +1,133 @@ +import { existsSync } from "node:fs"; +import { readFile, writeFile } from "node:fs/promises"; +import { join } from "node:path"; +import { log } from "@clack/prompts"; + +/** + * Flips a client-mode Solid 2.0 template (e.g. `solid-v2/basic`) into streaming SSR. + * The delta to the `solid-v2/fullstack` template's server posture is exactly three files: + * 1. `vite.config.ts` — add `ssr: true` to the `solid({ start: true, ... })` call + * 2. `server.js` — the generic production node server (verbatim from `solid-v2/fullstack`) + * 3. `package.json` — point the `start` script at that server + */ + +export const SSR_ANCHOR = "solid({ start: true"; +/** The template documents the flip with this hint; drop it once the flip is applied */ +export const SSR_HINT_COMMENT = " // add `ssr: true` for streaming SSR"; +export const SSR_START_SCRIPT = "node --env-file-if-exists=.env server.js"; + +/** + * Production node server for turnkey SSR apps. Verbatim copy of + * `solid-v2/fullstack/server.js` from the templates repo — fully generic: it only + * imports node builtins plus the built server bundle's `handleRequest`. + * Regenerate with `node scripts/gen-ssr-flip-server.mjs ` + * when the template changes. + */ +// @generated-server-js-start +export const SERVER_JS = `// The entire production server for a turnkey SSR app: static client assets +// plus one import — the built server bundle's \`handleRequest\`, an +// adapter-agnostic web \`Request -> Response\` handler that streams the SSR +// render, resolves hashed client assets through the build manifest, and +// (with serverFunctions enabled) serves the \`/_server\` endpoint too. The +// node <-> web plumbing below is the only glue; on a web-native platform +// (workers, Deno, Bun.serve) \`handleRequest\` is used directly. +import { createServer } from 'node:http'; +import { readFileSync } from 'node:fs'; +import { Readable } from 'node:stream'; +import { fileURLToPath } from 'node:url'; +import path from 'node:path'; +import { handleRequest } from './dist/server/server.js'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const port = process.env.PORT || 3000; + +const MIME = { + '.js': 'application/javascript', + '.css': 'text/css', + '.html': 'text/html', + '.json': 'application/json', + '.ico': 'image/x-icon', + '.svg': 'image/svg+xml', +}; + +function webRequest(req) { + const url = new URL(req.url || '/', \`http://\${req.headers.host || \`localhost:\${port}\`}\`); + const method = req.method || 'GET'; + const body = method === 'GET' || method === 'HEAD' ? undefined : Readable.toWeb(req); + return new Request(url, { + method, + headers: req.headers, + body, + ...(body ? { duplex: 'half' } : {}), + }); +} + +const server = createServer(async (req, res) => { + const url = req.url || '/'; + + // Static client assets first. + if (url !== '/' && !url.includes('..')) { + try { + const content = readFileSync(path.resolve(__dirname, 'dist/client' + url.split('?')[0])); + res.setHeader('Content-Type', MIME[path.extname(url)] || 'application/octet-stream'); + res.end(content); + return; + } catch { + // Fall through to the handler (SSR routes, /_server, ...). + } + } + + try { + const response = await handleRequest(webRequest(req)); + res.statusCode = response.status; + const cookies = response.headers.getSetCookie?.(); + response.headers.forEach((value, key) => { + if (key !== 'set-cookie') res.setHeader(key, value); + }); + if (cookies?.length) res.setHeader('set-cookie', cookies); + if (response.body) { + for await (const chunk of response.body) res.write(chunk); + } + res.end(); + } catch (e) { + console.error(e); + res.statusCode = 500; + res.end(e.message); + } +}); + +server.listen(port, () => { + console.log(\`Server running at http://localhost:\${port}\`); +}); +`; +// @generated-server-js-end + +/** + * Applies the SSR flip to a scaffolded template directory (before any TS→JS conversion, + * so the config edit happens on the `.ts` source). + * + * If the `vite.config.ts` anchor is missing (template drifted), the flip is aborted + * with a warning instead of writing a broken config, leaving a working client-mode app. + */ +export const applySsrFlip = async (dir: string): Promise => { + const viteConfigPath = join(dir, "vite.config.ts"); + const abort = (reason: string) => { + log.warn(`Skipping SSR setup: ${reason}. The project was created in client mode.`); + return false; + }; + if (!existsSync(viteConfigPath)) return abort("no vite.config.ts found"); + const viteConfig = (await readFile(viteConfigPath)).toString(); + if (!viteConfig.includes(SSR_ANCHOR)) return abort("unrecognized vite.config.ts"); + + await writeFile( + viteConfigPath, + viteConfig.replace(SSR_ANCHOR, `${SSR_ANCHOR}, ssr: true`).replace(SSR_HINT_COMMENT, ""), + ); + await writeFile(join(dir, "server.js"), SERVER_JS); + + const packageJsonPath = join(dir, "package.json"); + const packageJson = JSON.parse((await readFile(packageJsonPath)).toString()); + packageJson.scripts = { ...packageJson.scripts, start: SSR_START_SCRIPT }; + await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n"); + return true; +}; diff --git a/packages/create/src/utils/ts-conversion.ts b/packages/create/src/utils/ts-conversion.ts new file mode 100644 index 0000000..e0bd5a0 --- /dev/null +++ b/packages/create/src/utils/ts-conversion.ts @@ -0,0 +1,43 @@ +import { copyFileSync, Dirent, mkdirSync, writeFileSync } from "node:fs"; +import { readFileToString, recurseFiles } from "./file-system"; +import { join, resolve } from "node:path"; +import { transform } from "sucrase"; +import { rm } from "node:fs/promises"; +import { JS_CONFIG } from "./constants"; + +const convertToJS = async (file: Dirent, startPath: string) => { + const src = join(startPath, file.name); + const dest = resolve(startPath.replace(".project", ""), file.name); + if (file.isDirectory()) { + mkdirSync(dest, { recursive: true }); + recurseFiles(resolve(startPath, file.name), convertToJS); + } else if (file.isFile()) { + if (src.endsWith(".d.ts")) { + // Type declarations have no JS counterpart + } else if (src.endsWith(".ts") || src.endsWith(".tsx")) { + let { code } = transform(await readFileToString(src), { + transforms: ["typescript", "jsx"], + jsxRuntime: "preserve", + disableESTransforms: true, + preserveDynamicImport: true, + }); + + writeFileSync(dest.replace(".ts", ".js"), code, { flag: "wx" }); + } else { + copyFileSync(src, dest); + } + } +}; +export const handleTSConversion = async (tempDir: string, projectName: string, jsConfig: object = JS_CONFIG) => { + await rm(resolve(tempDir, "tsconfig.json")); + writeFileSync(resolve(projectName, "jsconfig.json"), JSON.stringify(jsConfig, null, 2), { flag: "wx" }); + + // Convert all ts files in temp directory into js + recurseFiles(tempDir, convertToJS); + + // Remove temp directory + await rm(join(process.cwd(), tempDir), { + recursive: true, + force: true, + }); +}; diff --git a/packages/create/tests/download.test.ts b/packages/create/tests/download.test.ts new file mode 100644 index 0000000..703e386 --- /dev/null +++ b/packages/create/tests/download.test.ts @@ -0,0 +1,38 @@ +import { afterEach, expect, it, vi } from "vitest"; +import { GithubFetcher } from "@begit/core"; +import { latestTemplatesCommit } from "../src/utils/download"; + +afterEach(() => { + vi.restoreAllMocks(); + vi.useRealTimers(); +}); + +it("resolves HEAD to a sha so begit can cache the tarball under it", async () => { + vi.spyOn(GithubFetcher, "fetchLatestCommit").mockResolvedValue("c3032d9"); + + expect(await latestTemplatesCommit()).toBe("c3032d9"); +}); + +it("falls back to no sha when the commit lookup throws", async () => { + // Offline, DNS failure, or a non-JSON response from the API + vi.spyOn(GithubFetcher, "fetchLatestCommit").mockRejectedValue(new Error("fetch failed")); + + expect(await latestTemplatesCommit()).toBeUndefined(); +}); + +it("falls back to no sha when the API answers without one", async () => { + // What a rate-limited response looks like by the time begit is done with it + vi.spyOn(GithubFetcher, "fetchLatestCommit").mockResolvedValue(undefined); + + expect(await latestTemplatesCommit()).toBeUndefined(); +}); + +it("falls back to no sha rather than letting a hanging lookup block the scaffold", async () => { + vi.useFakeTimers(); + vi.spyOn(GithubFetcher, "fetchLatestCommit").mockReturnValue(new Promise(() => {})); + + const resolved = latestTemplatesCommit(); + await vi.advanceTimersByTimeAsync(2000); + + expect(await resolved).toBeUndefined(); +}); diff --git a/packages/create/tests/fixtures/solid-v2-basic/package.json b/packages/create/tests/fixtures/solid-v2-basic/package.json new file mode 100644 index 0000000..8e3b105 --- /dev/null +++ b/packages/create/tests/fixtures/solid-v2-basic/package.json @@ -0,0 +1,30 @@ +{ + "name": "example-basic", + "version": "0.0.0", + "description": "", + "type": "module", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "vite build", + "serve": "vite preview", + "test": "vitest" + }, + "license": "MIT", + "devDependencies": { + "@solidjs/testing-library": "1.0.0-beta.2", + "@solidjs/vite-plugin": "^3.0.0-next.28", + "@testing-library/jest-dom": "^6.6.3", + "filesystem-routing": "0.2.1", + "jsdom": "^25.0.1", + "typescript": "^5.9.2", + "vite": "^8.1.5", + "vitest": "^4.0.0" + }, + "dependencies": { + "@solidjs/meta": "^1.0.0-next.2", + "@solidjs/router": "^2.0.0-next.16", + "@solidjs/web": "^2.0.0-rc.0", + "solid-js": "^2.0.0-rc.0" + } +} diff --git a/packages/create/tests/fixtures/solid-v2-basic/vite.config.ts b/packages/create/tests/fixtures/solid-v2-basic/vite.config.ts new file mode 100644 index 0000000..683f1c7 --- /dev/null +++ b/packages/create/tests/fixtures/solid-v2-basic/vite.config.ts @@ -0,0 +1,32 @@ +import { fileRoutes } from 'filesystem-routing/vite'; +import { defineConfig } from 'vitest/config'; +import solid from '@solidjs/vite-plugin'; + +export default defineConfig({ + // Turnkey client mode: no index.html and no mount file — the plugin + // generates the entries around src/App.tsx, wrapped in src/Document.tsx + // (or a built-in shell). `vite build` prerenders the shell into + // dist/client/index.html and emits a purely static dist/client. + plugins: [ + // `extensions` makes @solidjs/vite-plugin also compile the `?pick=` route + // modules the fileRoutes plugin emits (their ids end in a query string). + solid({ start: true, extensions: ['.jsx', '.tsx'] }), // add `ssr: true` for streaming SSR + fileRoutes(), + ], + server: { + port: 3000, + }, + test: { + environment: 'jsdom', + globals: false, + setupFiles: ['./vitest-setup.ts'], + // if you have few tests, try commenting this + // out to improve performance: + isolate: false, + }, + build: { + target: 'esnext', + // Keep images as asset files instead of inlining them into the JS bundle. + assetsInlineLimit: 0, + }, +}); diff --git a/packages/create/tests/manifest.test.ts b/packages/create/tests/manifest.test.ts new file mode 100644 index 0000000..ae78e1b --- /dev/null +++ b/packages/create/tests/manifest.test.ts @@ -0,0 +1,80 @@ +import { afterEach, expect, it } from "vitest"; +import { fetchTemplatesManifest, parseManifest, resolveGroup } from "../src/utils/manifest"; + +const validManifest = { + version: 1, + groups: { + solid: { + label: "Solid 2.0", + path: "solid-v2", + templates: [{ name: "basic", default: true, ssrToggle: true }, { name: "bare" }], + }, + }, +}; + +it("parses a valid manifest", () => { + const manifest = parseManifest(validManifest); + expect(manifest).toBeDefined(); + expect(manifest!.groups["solid"].path).toBe("solid-v2"); + expect(manifest!.groups["solid"].templates.map((t) => t.name)).toEqual(["basic", "bare"]); +}); + +it("rejects unknown manifest versions and malformed documents", () => { + expect(parseManifest({ ...validManifest, version: 2 })).toBeUndefined(); + expect(parseManifest(null)).toBeUndefined(); + expect(parseManifest("nonsense")).toBeUndefined(); + expect(parseManifest({ version: 1 })).toBeUndefined(); + expect(parseManifest({ version: 1, groups: { solid: { templates: "not-an-array" } } })).toBeUndefined(); +}); + +it("drops malformed groups and template entries but keeps the rest", () => { + const manifest = parseManifest({ + version: 1, + groups: { + solid: { path: "solid-v2", templates: [{ name: "basic" }, { notAName: true }, "bare"] }, + broken: { path: 42, templates: [{ name: "x" }] }, + }, + }); + expect(manifest).toBeDefined(); + expect(Object.keys(manifest!.groups)).toEqual(["solid"]); + expect(manifest!.groups["solid"].templates).toEqual([{ name: "basic" }]); +}); + +it("resolves groups from the manifest, falling back to baked-in lists", () => { + const manifest = parseManifest(validManifest); + expect(resolveGroup(manifest, "solid").templates.map((t) => t.name)).toEqual(["basic", "bare"]); + + // Groups missing from the manifest fall back per-group + expect(resolveGroup(manifest, "vanilla").path).toBe("vanilla"); + + // No manifest at all: everything comes from the baked-in lists + const baked = resolveGroup(undefined, "solid"); + expect(baked.path).toBe("solid-v2"); + expect(baked.templates.map((t) => t.name)).toEqual([ + "basic", + "bare", + "fullstack", + "fullstack-tanstack", + "with-bootstrap", + "with-sass", + "with-tailwindcss", + "with-tanstack-router", + "with-unocss", + "with-vitest-browser-mode", + ]); + const basic = baked.templates.find((t) => t.name === "basic")!; + expect(basic.default).toBe(true); + expect(basic.ssrToggle).toBe(true); + expect(resolveGroup(undefined, "start-v2").path).toBe("solid-start-v2"); + expect(resolveGroup(undefined, "start-v1").path).toBe("solid-start-v1"); +}); + +afterEach(() => { + delete process.env.SOLID_CLI_TEMPLATES_MANIFEST_URL; +}); + +it("silently returns undefined when the manifest fetch fails", async () => { + // Unroutable address: connection is refused immediately + process.env.SOLID_CLI_TEMPLATES_MANIFEST_URL = "http://127.0.0.1:1/templates.json"; + expect(await fetchTemplatesManifest()).toBeUndefined(); +}); diff --git a/packages/create/tests/ssr-flip.test.ts b/packages/create/tests/ssr-flip.test.ts new file mode 100644 index 0000000..bdaa739 --- /dev/null +++ b/packages/create/tests/ssr-flip.test.ts @@ -0,0 +1,48 @@ +import { beforeEach, expect, it } from "vitest"; +import { mkdtempSync, copyFileSync, existsSync, readFileSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { applySsrFlip, SERVER_JS, SSR_HINT_COMMENT, SSR_START_SCRIPT } from "../src/utils/ssr-flip"; + +const fixtures = fileURLToPath(new URL("./fixtures/solid-v2-basic/", import.meta.url)); + +let dir: string; +beforeEach(() => { + dir = mkdtempSync(join(tmpdir(), "ssr-flip-")); + copyFileSync(join(fixtures, "vite.config.ts"), join(dir, "vite.config.ts")); + copyFileSync(join(fixtures, "package.json"), join(dir, "package.json")); +}); + +it("flips the basic template to streaming SSR", async () => { + expect(await applySsrFlip(dir)).toBe(true); + + const viteConfig = readFileSync(join(dir, "vite.config.ts")).toString(); + expect(viteConfig).toContain("solid({ start: true, ssr: true"); + expect(viteConfig).not.toContain(SSR_HINT_COMMENT); + + // The production server is a verbatim copy of solid-v2/fullstack/server.js + expect(readFileSync(join(dir, "server.js")).toString()).toBe(SERVER_JS); + + const packageJson = JSON.parse(readFileSync(join(dir, "package.json")).toString()); + expect(packageJson.scripts.start).toBe(SSR_START_SCRIPT); + // The other scripts are untouched + expect(packageJson.scripts.dev).toBe("vite"); + expect(packageJson.scripts.build).toBe("vite build"); +}); + +it("aborts without writing anything when the vite config anchor is missing", async () => { + const drifted = `import { defineConfig } from "vite";\nexport default defineConfig({});\n`; + writeFileSync(join(dir, "vite.config.ts"), drifted); + const packageJsonBefore = readFileSync(join(dir, "package.json")).toString(); + + expect(await applySsrFlip(dir)).toBe(false); + + expect(readFileSync(join(dir, "vite.config.ts")).toString()).toBe(drifted); + expect(existsSync(join(dir, "server.js"))).toBe(false); + expect(readFileSync(join(dir, "package.json")).toString()).toBe(packageJsonBefore); +}); + +it("aborts when there is no vite.config.ts", async () => { + expect(await applySsrFlip(mkdtempSync(join(tmpdir(), "ssr-flip-empty-")))).toBe(false); +}); diff --git a/packages/create/tests/template.test.ts b/packages/create/tests/template.test.ts new file mode 100644 index 0000000..179b2ee --- /dev/null +++ b/packages/create/tests/template.test.ts @@ -0,0 +1,77 @@ +import { afterEach, expect, it } from "vitest"; +import { existsSync, readdirSync, readFileSync, rmSync } from "node:fs"; +import { join } from "node:path"; +import { createSolidV2, createVanilla } from "../src"; +import { fetchTemplatesManifest, resolveGroup, type ManifestGroupKey } from "../src/utils/manifest"; + +/** + * These download from live solidjs/templates HEAD, so they assert the plumbing — + * that the right subdir was fetched and extracted into a usable project — rather + * than specific files or dependency versions. Template contents, pins and file + * layout all change upstream without a CLI release, and must not fail CI here. + */ + +/** Template name + subdir the CLI would actually use, from the live manifest (baked-in fallback) */ +const liveTarget = async (key: ManifestGroupKey) => { + const group = resolveGroup(await fetchTemplatesManifest(), key); + const template = group.templates.find((t) => t.default) ?? group.templates[0]; + return { path: group.path, template: template.name }; +}; + +// begit resolves the destination against `process.cwd()`, so scaffold targets have to be +// repo-relative. `test/` is gitignored; each run starts from a clean directory so a +// leftover scaffold can never satisfy the assertions on its own. +const destinations: string[] = []; +const scratch = (name: string) => { + const destination = join("test", name); + rmSync(destination, { recursive: true, force: true }); + destinations.push(destination); + return destination; +}; + +afterEach(() => { + for (const destination of destinations.splice(0)) rmSync(destination, { recursive: true, force: true }); +}); + +const expectScaffold = (destination: string) => { + const packageJsonPath = join(destination, "package.json"); + expect(existsSync(packageJsonPath)).toBe(true); + + const packageJson = JSON.parse(readFileSync(packageJsonPath).toString()); + expect(typeof packageJson.name).toBe("string"); + expect(Object.keys(packageJson.scripts ?? {}).length).toBeGreaterThan(0); + expect(Object.keys(packageJson.dependencies ?? {}).length).toBeGreaterThan(0); + + // Some source to build, whatever the entry files happen to be called + expect(readdirSync(join(destination, "src")).length).toBeGreaterThan(0); +}; + +// A cold begit cache means pulling the whole templates tarball (~3MB), which does not +// reliably fit in vitest's 5s default on a slow or contended connection +const DOWNLOAD_TIMEOUT_MS = 60_000; + +it( + "downloads and extracts the vanilla template", + async () => { + const destination = scratch("vanilla"); + const { path, template } = await liveTarget("vanilla"); + + await createVanilla({ template, destination, path }, false); + + expectScaffold(destination); + }, + DOWNLOAD_TIMEOUT_MS, +); + +it( + "downloads and extracts the solid-v2 template", + async () => { + const destination = scratch("solid-v2"); + const { path, template } = await liveTarget("solid"); + + await createSolidV2({ template, destination, path }, false); + + expectScaffold(destination); + }, + DOWNLOAD_TIMEOUT_MS, +); diff --git a/packages/create/tests/ts-retarget.test.ts b/packages/create/tests/ts-retarget.test.ts new file mode 100644 index 0000000..cabb70b --- /dev/null +++ b/packages/create/tests/ts-retarget.test.ts @@ -0,0 +1,28 @@ +import { expect, it } from "vitest"; +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { retargetTSFilenames } from "../src/create-solid-v2"; + +const fixtureConfig = fileURLToPath(new URL("./fixtures/solid-v2-basic/vite.config.ts", import.meta.url)); + +it("dedupes the extensions array instead of writing ['.jsx', '.jsx']", () => { + const converted = retargetTSFilenames(readFileSync(fixtureConfig).toString()); + + expect(converted).toContain("extensions: ['.jsx']"); + expect(converted).not.toContain("'.tsx'"); + expect(converted).not.toContain("'.jsx', '.jsx'"); + // Setup files are transpiled alongside the rest of the template + expect(converted).toContain("./vitest-setup.js"); +}); + +it("retargets filename mentions in comments and prose", () => { + const converted = retargetTSFilenames( + "// generates the entries around src/App.tsx\nSee `vite.config.ts` and `src/routes/users/[id].tsx`. Type declarations stay in `global.d.ts`.", + ); + + expect(converted).toContain("src/App.jsx"); + expect(converted).toContain("`vite.config.js`"); + expect(converted).toContain("[id].jsx"); + // `.d.ts` files are deleted by the conversion, not renamed + expect(converted).toContain("global.d.ts"); +}); diff --git a/packages/ui/tsconfig.json b/packages/create/tsconfig.json similarity index 57% rename from packages/ui/tsconfig.json rename to packages/create/tsconfig.json index ecaf1e3..e8c3977 100644 --- a/packages/ui/tsconfig.json +++ b/packages/create/tsconfig.json @@ -1,19 +1,17 @@ { "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, "module": "ESNext", + "target": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, "skipLibCheck": true, + "resolveJsonModule": true, + "types": ["node"], "declaration": true, "emitDeclarationOnly": true, - "moduleResolution": "Bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "allowSyntheticDefaultImports": true, - "strict": true, - // "noUnusedLocals": true, - // "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, + "rootDir": "./src", "outDir": "types" }, "include": ["src/*"] diff --git a/packages/create/tsup.config.ts b/packages/create/tsup.config.ts new file mode 100644 index 0000000..4a06abf --- /dev/null +++ b/packages/create/tsup.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + target: "esnext", + format: "esm", + splitting: true, + sourcemap: false, + clean: true, + treeshake: true, + banner: { + js: `import { createRequire } from "module"; + const require = createRequire(import.meta.url);`, + }, +}); diff --git a/packages/full-solid/CHANGELOG.md b/packages/full-solid/CHANGELOG.md new file mode 100644 index 0000000..95f2d0e --- /dev/null +++ b/packages/full-solid/CHANGELOG.md @@ -0,0 +1,27 @@ +# @solid-cli/full + +## 0.8.0 + +### Minor Changes + +- support fetching without the github API (so fetching should no work when hitting the github api limit) + +## 0.6.4 + +### Patch Changes + +- update dependencies and add to solid start v2 templates list + +## 0.6.3 + +### Patch Changes + +- Update dependencies, add new template, and remove `cd` command if project is created in working directory + +## 0.6.1 + +### Patch Changes + +- Fix regression from 0.5.x (.gitignore wasn't being written to new projects) + +## 0.6.0 diff --git a/packages/full-solid/README.md b/packages/full-solid/README.md new file mode 100644 index 0000000..0a9a706 --- /dev/null +++ b/packages/full-solid/README.md @@ -0,0 +1 @@ +# Full Solid diff --git a/packages/full-solid/package.json b/packages/full-solid/package.json new file mode 100644 index 0000000..bc95197 --- /dev/null +++ b/packages/full-solid/package.json @@ -0,0 +1,42 @@ +{ + "name": "@solid-cli/full", + "version": "0.8.0", + "description": "Create Solid apps with low configuration", + "author": "Thomas Beer", + "contributors": [ + "Rahul Batra" + ], + "license": "MIT", + "homepage": "https://solid-cli.netlify.app", + "repository": { + "type": "git", + "url": "https://github.com/solidjs-community/solid-cli" + }, + "keywords": [ + "solidjs", + "solid", + "cli" + ], + "main": "dist/index.mjs", + "bin": { + "sd": "./dist/bin.mjs" + }, + "files": [ + "dist" + ], + "scripts": { + "start": "jiti ./src/bin.ts", + "build": "tsc && tsup", + "test": "vitest run" + }, + "devDependencies": { + "@clack/prompts": "1.7.0", + "picocolors": "^1.1.1", + "citty": "^0.2.2", + "@solid-cli/create": "workspace:*", + "@solid-cli/utils": "workspace:*" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/full-solid/src/bin.ts b/packages/full-solid/src/bin.ts new file mode 100644 index 0000000..5f2c97c --- /dev/null +++ b/packages/full-solid/src/bin.ts @@ -0,0 +1,32 @@ +#! /usr/bin/env node + +import { defineCommand, runMain } from "citty"; +import { createSolid } from "@solid-cli/create"; +import packageJson from "../package.json" with { type: "json" }; +import { intro } from "@clack/prompts"; +import * as color from "picocolors"; +import * as p from "@clack/prompts"; +import { debuginfo } from "./debug"; +import { startCommands } from "./start"; +import { openInBrowser } from "@solid-cli/utils"; +intro(`\n${color.bgCyan(color.black(` Solid CLI v${packageJson.version}`))}`); + +const main = defineCommand({ + meta: { + description: "The full Solid CLI", + }, + subCommands: { + create: createSolid(packageJson.version), + debug: debuginfo, + start: startCommands, + docs: defineCommand({ + meta: { description: "Open the Solid Docs in your browser" }, + async run() { + openInBrowser("https://docs.solidjs.com"); + p.log.success("Opened successfully"); + }, + }), + }, +}); + +runMain(main); diff --git a/packages/full-solid/src/debug/index.ts b/packages/full-solid/src/debug/index.ts new file mode 100644 index 0000000..77e8c14 --- /dev/null +++ b/packages/full-solid/src/debug/index.ts @@ -0,0 +1,58 @@ +/// This subcommand prints useful debug info to stdout +import { readFile } from "fs/promises"; +import os from "os"; +import { defineCommand } from "citty"; +import { detectRuntime } from "./runtime-detector"; +import * as p from "@clack/prompts"; +type DebugInfo = { + runtime: { name: string; version: string }; + os: { platform: string; release: string }; + packages: Record; +}; +const getPackageJSON = async () => { + const f = await readFile("package.json"); + const parsed = JSON.parse(f.toString()); + return parsed; +}; +const prettyPrintRecord = (record: Record) => { + let str = ""; + for (const key in record) { + const value = record[key]; + str += ` ${key}: ${value}\n`; + } + return str; +}; + +export const prettyPrint = (info: DebugInfo) => { + return `System: + OS: ${info.os.platform} ${info.os.release} +Runtime: + ${info.runtime.name}: ${info.runtime.version} +${ + Object.keys(info.packages).length !== 0 + ? `Dependencies: +${prettyPrintRecord(info.packages)}` + : "" +}`; +}; +export const fetchDebugInfo = async (): Promise => { + const parsed = await getPackageJSON(); + const packages: Record = parsed.dependencies ?? {}; + const runtime = detectRuntime(); + return { + runtime, + os: { + platform: os.platform(), + release: os.release(), + }, + packages, + }; +}; + +export const debuginfo = defineCommand({ + meta: { description: "Print important debug info" }, + async run(_ctx) { + const info = await fetchDebugInfo(); + p.log.info(prettyPrint(info)); + }, +}); diff --git a/packages/full-solid/src/debug/runtime-detector.ts b/packages/full-solid/src/debug/runtime-detector.ts new file mode 100644 index 0000000..014cc4b --- /dev/null +++ b/packages/full-solid/src/debug/runtime-detector.ts @@ -0,0 +1,20 @@ +type RuntimeName = "Bun" | "Node" | "Deno"; +type Runtime = { name: RuntimeName; version: string }; +declare global { + var Bun: { version: string } | undefined; + var Deno: { version: { deno: string } } | undefined; +} +export const detectRuntime = (): Runtime => { + if (globalThis.Bun) { + return { name: "Bun", version: globalThis.Bun?.version }; + } + if (globalThis.Deno) { + return { name: "Deno", version: globalThis.Deno?.version?.deno }; + } + // @ts-ignore + if (typeof process !== undefined && !!process.versions?.node) { + // @ts-ignore + return { name: "Node", version: process?.version }; + } + throw new Error("Unable to detect"); +}; diff --git a/packages/full-solid/src/start/index.ts b/packages/full-solid/src/start/index.ts new file mode 100644 index 0000000..520876a --- /dev/null +++ b/packages/full-solid/src/start/index.ts @@ -0,0 +1,42 @@ +import { createApi, createRoute } from "@solid-cli/utils"; +import { defineCommand } from "citty"; +import * as p from "@clack/prompts"; +import { green } from "picocolors"; +import { cancelable } from "@solid-cli/utils/ui"; +export const startCommands = defineCommand({ + meta: { description: "Start-specific commands" }, + subCommands: { + route: defineCommand({ + meta: { description: "Creates a new route" }, + args: { + path: { + type: "positional", + required: false, + description: "Route path", + }, + api: { + type: "boolean", + required: false, + default: false, + alias: "a", + }, + }, + async run({ args: { path, api } }) { + path ||= await cancelable( + p.text({ + message: "Route path", + validate(value) { + if (!value || value.length === 0) return "A route path is required"; + }, + }), + ); + if (api) { + await createApi(path as string); + } else { + await createRoute(path as string); + } + p.log.success(`Route ${green(path as string)} successfully created!`); + }, + }), + }, +}); diff --git a/packages/full-solid/tests/debuginfo.test.ts b/packages/full-solid/tests/debuginfo.test.ts new file mode 100644 index 0000000..6bbe6cf --- /dev/null +++ b/packages/full-solid/tests/debuginfo.test.ts @@ -0,0 +1,8 @@ +import { expect, it } from "vitest"; +import { fetchDebugInfo, prettyPrint } from "../src/debug"; + +it("Runs", async () => { + const output = prettyPrint(await fetchDebugInfo()); + + expect(output).contains("Runtime", "System"); +}); diff --git a/packages/core/tsconfig.json b/packages/full-solid/tsconfig.json similarity index 75% rename from packages/core/tsconfig.json rename to packages/full-solid/tsconfig.json index b6d4e3a..b354b62 100644 --- a/packages/core/tsconfig.json +++ b/packages/full-solid/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "baseUrl": ".", "noEmit": true, "module": "ESNext", "target": "ESNext", @@ -9,6 +8,8 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true, - "resolveJsonModule": true - } + "resolveJsonModule": true, + "types": ["node"] + }, + "include": ["src/*"] } diff --git a/packages/full-solid/tsup.config.ts b/packages/full-solid/tsup.config.ts new file mode 100644 index 0000000..ed15cdf --- /dev/null +++ b/packages/full-solid/tsup.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/bin.ts"], + target: "esnext", + format: "esm", + splitting: true, + bundle: true, + sourcemap: false, + clean: true, + treeshake: true, + minify: true, + banner: { + js: `import { createRequire } from "module"; + const require = createRequire(import.meta.url);`, + }, +}); diff --git a/packages/reactivity/.gitignore b/packages/reactivity/.gitignore deleted file mode 100644 index fbf0622..0000000 --- a/packages/reactivity/.gitignore +++ /dev/null @@ -1 +0,0 @@ -types \ No newline at end of file diff --git a/packages/reactivity/README.md b/packages/reactivity/README.md deleted file mode 100644 index d46f097..0000000 --- a/packages/reactivity/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @solid-cli/reactivity - -A lightweight reactivity system which powers some of the CLI. It is an eager system (derived state is updated immediately when the sources change) diff --git a/packages/reactivity/package.json b/packages/reactivity/package.json deleted file mode 100644 index f4a8c97..0000000 --- a/packages/reactivity/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@solid-cli/reactivity", - "version": "0.0.9", - "description": "The minimal, eager reactive system that powers the Solid CLI", - "license": "MIT", - "homepage": "https://solid-cli.netlify.app", - "repository": { - "type": "git", - "url": "https://github.com/solidjs-community/solid-cli" - }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", - "types": "./types/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.mjs", - "types": "./types/index.d.ts" - } - }, - "scripts": { - "test": "vitest run", - "build": "tsc && tsup" - }, - "author": "Thomas Beer", - "devDependencies": { - "tsup": "^7.2.0", - "typescript": "^5.1.6" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/reactivity/src/api/index.ts b/packages/reactivity/src/api/index.ts deleted file mode 100644 index ffedb90..0000000 --- a/packages/reactivity/src/api/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Computation, Getter, Signal, batch, runWithListener } from "../core"; -export { batch, getListener, type Getter, type Setter, type Signal } from "../core"; -type OnOptions = { defer: boolean }; -export function on(deps: Getter, fn: (val: G) => T, options?: OnOptions): () => T | undefined; -export function on(deps: Getter[] | Getter, fn: (val: any) => T, options?: OnOptions) { - let shouldDefer = options?.defer ?? false; - return () => { - // Track all getters on call - let args: any[] = []; - Array.isArray(deps) ? deps.forEach((d) => args.push(d())) : args.push(deps()); - if (shouldDefer) { - shouldDefer = false; - return; - } - // Ensure that the function isn't tracked - return untrack(() => fn(args.length === 1 ? args[0] : args)); - }; -} -export function createSignal(val: T) { - const comp = new Computation(() => val); - const set = (fnOrVal: T | ((val: T | null) => T) | null) => { - if (typeof fnOrVal === "function") { - let fn = fnOrVal as (val: T | null) => T; - const newVal = fn(untrack(comp.get)); - comp.set(newVal); - } else { - comp.set(fnOrVal as T); - } - }; - return [comp.get, set] as Signal; -} -export function createEffect(fn: () => T) { - new Computation(fn); -} -export function createMemo(fn: () => T) { - const comp = new Computation(fn); - return comp.get; -} -export function createAsync(fn: () => Promise) { - const [get, set] = createSignal(null); - const [loading, setLoading] = createSignal(true); - fn().then((val) => { - batch(() => { - set(val); - setLoading(false); - }); - }); - Object.defineProperties(get, { - loading: { - get() { - return loading(); - }, - }, - }); - return get as Getter & { loading: boolean }; -} -export function untrack(fn: () => T) { - return runWithListener(null, fn); -} diff --git a/packages/reactivity/src/core/index.ts b/packages/reactivity/src/core/index.ts deleted file mode 100644 index 63e923a..0000000 --- a/packages/reactivity/src/core/index.ts +++ /dev/null @@ -1,104 +0,0 @@ -export type Getter = () => T; -export type Setter = (val: T | ((val: T | null) => T)) => void; -export type Signal = [Getter, Setter]; -let OBSERVER: Computation | null = null; -let BATCHING = false; -const UPDATEQUEUE: Computation[] = []; -export class Computation { - fn: () => T; - value: T | null = null; - state: number = 0; - queueSlot: number = -1; - sources: Set> = new Set(); - observers: Set> = new Set(); - constructor(fn: () => T) { - this.fn = fn; - this.update(); - } - track() { - if (!OBSERVER) return; - this.observers.add(OBSERVER); - OBSERVER.sources.add(this); - } - get = () => { - // We need to make sure memos update if they're accessed during a `batch` - if (this.queueSlot != -1) { - UPDATEQUEUE.splice(this.queueSlot, 1); - const prev = BATCHING; - BATCHING = false; - this.update(); - BATCHING = prev; - this.queueSlot = -1; - } - this.track(); - return this.value; - }; - set = (newVal: T) => { - if (newVal === this.value) return; - this.value = newVal; - this.notifyObservers(); - }; - removeParentObservers() { - if (!this.sources) return; - this.sources.forEach((s) => s.observers.delete(this)); - this.sources.clear(); - } - pullSourceUpdates() { - if (!this.sources) return; - this.sources.forEach((s) => s.update()); - } - update() { - if (BATCHING) { - if (this.queueSlot != -1) return; - this.queueSlot = UPDATEQUEUE.length; - UPDATEQUEUE.push(this); - return; - } - // this.removeParentObservers(); - const prev = OBSERVER; - OBSERVER = this; - const newVal = this.fn(); - OBSERVER = prev; - if (newVal === this.value) return; - this.value = newVal; - } - increment() { - this.state++; - // Only increment children if the state has increased to 1, as we don't want to repeatedly re-increment if this node has multiple parents that need updating - if (this.state === 1) { - this.observers.forEach((o) => o.increment()); - } - } - decrement() { - this.state--; - if (this.state === 0) { - this.update(); - this.observers.forEach((o) => o.decrement()); - } - } - notifyObservers() { - this.observers.forEach((o) => o.increment()); - this.observers.forEach((o) => o.decrement()); - } -} -function stabilize() { - UPDATEQUEUE.forEach((u) => u.update()); - UPDATEQUEUE.length = 0; -} -export function batch(fn: () => T) { - BATCHING = true; - const res = fn(); - BATCHING = false; - stabilize(); - return res; -} -export function getListener() { - return OBSERVER; -} -export function runWithListener(listener: Computation | null, fn: () => T) { - const prev = OBSERVER; - OBSERVER = listener; - const res = fn(); - OBSERVER = prev; - return res; -} diff --git a/packages/reactivity/src/index.ts b/packages/reactivity/src/index.ts deleted file mode 100644 index d158c57..0000000 --- a/packages/reactivity/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./api"; diff --git a/packages/reactivity/test/async.test.ts b/packages/reactivity/test/async.test.ts deleted file mode 100644 index 481fd75..0000000 --- a/packages/reactivity/test/async.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { describe, expect, test } from "vitest"; -import { createAsync, createEffect } from "../src"; - -describe("createAsync", () => { - test("An async function resolves to a value", async () => { - const asyncFn = createAsync(async () => { - return 123; - }); - const res = await new Promise((res) => { - createEffect(() => { - const result = asyncFn(); - if (result) res(result); - }); - }); - expect(res).toBe(123); - }); - test("An async function has a loading state", async () => { - const asyncFn = createAsync(async () => { - return 123; - }); - expect(asyncFn.loading).toBe(true); - queueMicrotask(() => expect(asyncFn.loading).toBe(false)); - }); -}); diff --git a/packages/reactivity/test/batch.test.ts b/packages/reactivity/test/batch.test.ts deleted file mode 100644 index 4a9f647..0000000 --- a/packages/reactivity/test/batch.test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { test, expect } from "vitest"; -import { describe } from "vitest"; -import { batch, createAsync, createEffect, createMemo, createSignal } from "../src"; - -describe("batch", () => { - test("Multiple updates should only trigger an effect once", () => { - const [get, set] = createSignal(0); - let updates = 0; - createEffect(() => { - get(); - updates++; - }); - batch(() => { - set(1); - set(2); - }); - expect(updates).toBe(2); - expect(get()).toBe(2); - }); - test("A memo called within a batch should get its value updated", () => { - const [get, set] = createSignal(0); - const memo = createMemo(() => get() * 2); - batch(() => { - set(1); - expect(memo()).toBe(2); - }); - }); - test("An effect depending on both loading and data should only run once when the async resolves", async () => { - const data = createAsync(async () => { - return 123; - }); - let updates = 0; - await new Promise((res) => - createEffect(() => { - // We track both the data itself and the loading signal - const d = data(); - const loading = data.loading; - updates++; - if (d === 123 && loading === false) res(d); - }), - ); - expect(updates).toBe(2); - }); - test("A derived memo accessed within a batch should resolve to the correct value", () => { - const [get, set] = createSignal(0); - const memo = createMemo(() => get() * 2); - let updates = 0; - // First update on initial run - const derived = createMemo(() => { - updates++; - return memo()! * 2; - }); - batch(() => { - set(1); - set(2); - // 2nd Update on access - expect(derived()).toBe(8); - set(3); - // 3rd update on access - expect(derived()).toBe(12); - }); - expect(updates).toBe(3); - }); - test.skip("Diamond problem with memos accessed in a batch", () => { - const [get, set] = createSignal(0); - let updates = 0; - const A = createMemo(() => { - updates++; - get(); - }); - const B = createMemo(() => A()! * 2); - const C = createMemo(() => A()! * 3); - const D = createMemo(() => B()! + C()!); - batch(() => { - set(2); - }); - // Actually currently get 3 here - expect(updates).toBe(2); - }); -}); diff --git a/packages/reactivity/test/effects.test.ts b/packages/reactivity/test/effects.test.ts deleted file mode 100644 index 6156aaf..0000000 --- a/packages/reactivity/test/effects.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { describe, test, expect } from "vitest"; -import { createEffect, createSignal } from "../src"; -describe("createEffect", () => { - test("An effect executes once when created", () => { - let updates = 0; - createEffect(() => { - updates++; - }); - expect(updates).toBe(1); - }); - test("An effect re-executes when a dependency changes", () => { - let updates = 0; - const [value, setValue] = createSignal(0); - createEffect(() => { - value(); - updates++; - }); - expect(updates).toBe(1); - setValue(1); - expect(updates).toBe(2); - }); - test("Changes propagate correctly", () => { - const [get, set] = createSignal(0); - let updates = 0; - createEffect(() => { - get(); - updates++; - }); - expect(updates).toBe(1); - set(1); - expect(updates).toBe(2); - set(2); - expect(updates).toBe(3); - }); -}); diff --git a/packages/reactivity/test/memos.test.ts b/packages/reactivity/test/memos.test.ts deleted file mode 100644 index 88e28ef..0000000 --- a/packages/reactivity/test/memos.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { describe, test, expect } from "vitest"; -import { createMemo, createSignal } from "../src"; -describe("createMemo", () => { - test("A memo is executed once on creation", () => { - let updates = 0; - createMemo(() => { - updates++; - }); - expect(updates).toBe(1); - }); - test("A memo updates when its dependencies change", () => { - const [value, setValue] = createSignal(0); - let updates = 0; - createMemo(() => { - value(); - updates++; - }); - expect(updates).toBe(1); - setValue(1); - expect(updates).toBe(2); - }); - test("Memos don't overexecute if a dependency doesn't change", () => { - const [value, setValue] = createSignal(0); - const memo1 = createMemo(() => { - value(); - return 1; - }); - let updates = 0; - const memo2 = createMemo(() => { - updates++; - return memo1(); - }); - expect(memo2()).toBe(1); - setValue(0); - expect(updates).toBe(1); - }); - test("Memos don't overexecute in a diamond (The diamond problem)", () => { - const [A, setA] = createSignal(0); - const B = createMemo(() => { - console.log("B updating"); - return A() * 2; - }); - const C = createMemo(() => { - console.log("C updating"); - return A() + 2; - }); - let updates = 0; - const D = createMemo(() => { - updates++; - return B()! + C()!; - }); - expect(D()).toBe(2); - setA(1); - expect(D()).toBe(5); - expect(updates).toBe(2); - }); -}); diff --git a/packages/reactivity/test/signals.test.ts b/packages/reactivity/test/signals.test.ts deleted file mode 100644 index c227cfe..0000000 --- a/packages/reactivity/test/signals.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { describe, test, expect } from "vitest"; -import { createSignal } from "../src"; -describe("createSignal", () => { - test("A signal should hold a value that can be updated", () => { - const [value, setValue] = createSignal(0); - expect(value()).toBe(0); - setValue(1); - expect(value()).toBe(1); - }); -}); diff --git a/packages/reactivity/tsconfig.json b/packages/reactivity/tsconfig.json deleted file mode 100644 index 1bd37fb..0000000 --- a/packages/reactivity/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "skipLibCheck": true, - "declaration": true, - "emitDeclarationOnly": true, - /* Bundler mode */ - "moduleResolution": "bundler", - // "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - // "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, - "outDir": "types" - }, - "include": ["src/*"] -} diff --git a/packages/reactivity/tsup.config.ts b/packages/reactivity/tsup.config.ts deleted file mode 100644 index 0289b01..0000000 --- a/packages/reactivity/tsup.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - target: "esnext", - format: ["esm", "cjs"], - splitting: false, - sourcemap: true, - clean: true, -}); diff --git a/packages/swc-plugin-solid-cli/.cargo/config b/packages/swc-plugin-solid-cli/.cargo/config deleted file mode 100644 index eaa0fee..0000000 --- a/packages/swc-plugin-solid-cli/.cargo/config +++ /dev/null @@ -1,5 +0,0 @@ -# These command aliases are not final, may change -[alias] -# Alias to build actual plugin binary for the specified target. -build-wasi = "build --target wasm32-wasi" -build-wasm32 = "build --target wasm32-unknown-unknown" diff --git a/packages/swc-plugin-solid-cli/.gitignore b/packages/swc-plugin-solid-cli/.gitignore deleted file mode 100644 index 28aa12d..0000000 --- a/packages/swc-plugin-solid-cli/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target -^target/ -target -output/*.rlib \ No newline at end of file diff --git a/packages/swc-plugin-solid-cli/Cargo.lock b/packages/swc-plugin-solid-cli/Cargo.lock deleted file mode 100644 index 6d4c603..0000000 --- a/packages/swc-plugin-solid-cli/Cargo.lock +++ /dev/null @@ -1,2305 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "aho-corasick" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" -dependencies = [ - "memchr", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "anyhow" -version = "1.0.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "ast_node" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "better_scoped_tls" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794edcc9b3fb07bb4aecaa11f093fd45663b4feadb782d68303a2268bc2701de" -dependencies = [ - "scoped-tls", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bytecheck" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.18", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cc" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" -dependencies = [ - "libc", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "dashmap" -version = "5.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" -dependencies = [ - "cfg-if", - "hashbrown 0.14.0", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "data-encoding" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" - -[[package]] -name = "debugid" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" -dependencies = [ - "serde", - "uuid", -] - -[[package]] -name = "deranged" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" - -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - -[[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "either" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" - -[[package]] -name = "enum-iterator" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" -dependencies = [ - "enum-iterator-derive", -] - -[[package]] -name = "enum-iterator-derive" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "errno" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "from_variant" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" -dependencies = [ - "pmutil", - "proc-macro2", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getset" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "gimli" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.6", -] - -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "if_chain" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "is-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4467ed1321b310c2625c5aa6c1b1ffc5de4d9e42668cf697a08fb033ee8265e" -dependencies = [ - "Inflector", - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "is_ci" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "linux-raw-sys" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" - -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "miette" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c90329e44f9208b55f45711f9558cec15d7ef8295cc65ecd6d4188ae8edc58c" -dependencies = [ - "atty", - "backtrace", - "miette-derive", - "once_cell", - "owo-colors", - "supports-color", - "supports-hyperlinks", - "supports-unicode", - "terminal_size", - "textwrap", - "thiserror", - "unicode-width", -] - -[[package]] -name = "miette-derive" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b5bc45b761bcf1b5e6e6c4128cd93b84c218721a8d9b894aa0aff4ed180174c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - -[[package]] -name = "object" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "owo-colors" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "petgraph" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" -dependencies = [ - "fixedbitset", - "indexmap", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_macros", - "phf_shared", - "proc-macro-hack", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" - -[[package]] -name = "pmutil" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "pretty_assertions" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" -dependencies = [ - "diff", - "yansi", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "psm" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" -dependencies = [ - "cc", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "quote" -version = "1.0.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "radix_fmt" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce082a9940a7ace2ad4a8b7d0b1eac6aa378895f18be598230c5f2284ac05426" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "regex" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.3.6", - "regex-syntax 0.7.4", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.7.4", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" - -[[package]] -name = "relative-path" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698" - -[[package]] -name = "rend" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "rkyv" -version = "0.7.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" -dependencies = [ - "bitvec", - "bytecheck", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustix" -version = "0.38.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399" -dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "ryu-js" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6518fc26bced4d53678a22d6e423e9d8716377def84545fe328236e3af070e7f" - -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "serde" -version = "1.0.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.183" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "serde_json" -version = "1.0.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - -[[package]] -name = "smallvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - -[[package]] -name = "smartstring" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" -dependencies = [ - "autocfg", - "static_assertions", - "version_check", -] - -[[package]] -name = "smawk" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" - -[[package]] -name = "sourcemap" -version = "6.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9221a6bba3e9cfa7decfe64edf5233311e1bf837ea3234df6e7f35836e1093d" -dependencies = [ - "data-encoding", - "debugid", - "if_chain", - "rustc_version", - "serde", - "serde_json", - "unicode-id", - "url", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "stacker" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" -dependencies = [ - "cc", - "cfg-if", - "libc", - "psm", - "winapi", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "string_enum" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "supports-color" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6f" -dependencies = [ - "atty", - "is_ci", -] - -[[package]] -name = "supports-hyperlinks" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590b34f7c5f01ecc9d78dba4b3f445f31df750a67621cf31626f3b7441ce6406" -dependencies = [ - "atty", -] - -[[package]] -name = "supports-unicode" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8b945e45b417b125a8ec51f1b7df2f8df7920367700d1f98aedd21e5735f8b2" -dependencies = [ - "atty", -] - -[[package]] -name = "swc-plugin-solid-cli" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", - "swc_core", - "testing", -] - -[[package]] -name = "swc_atoms" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8066e17abb484602da673e2d35138ab32ce53f26368d9c92113510e1659220b" -dependencies = [ - "bytecheck", - "once_cell", - "rkyv", - "rustc-hash", - "serde", - "string_cache", - "string_cache_codegen", - "triomphe", -] - -[[package]] -name = "swc_cached" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b8051bbf1c23817f9f2912fce18d9a6efcaaf8f8e1a4c69dbaf72bcaf71136" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "dashmap", - "once_cell", - "regex", - "serde", -] - -[[package]] -name = "swc_common" -version = "0.31.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e30cd01afa791b15263fcfe8f77ecbbd020ddef659f0f58d3c7b794ad65c1738" -dependencies = [ - "ahash 0.8.3", - "anyhow", - "ast_node", - "atty", - "better_scoped_tls", - "bytecheck", - "cfg-if", - "either", - "from_variant", - "new_debug_unreachable", - "num-bigint", - "once_cell", - "parking_lot", - "rkyv", - "rustc-hash", - "serde", - "siphasher", - "sourcemap", - "string_cache", - "swc_atoms", - "swc_eq_ignore_macros", - "swc_visit", - "termcolor", - "tracing", - "unicode-width", - "url", -] - -[[package]] -name = "swc_config" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba1c7a40d38f9dd4e9a046975d3faf95af42937b34b2b963be4d8f01239584b" -dependencies = [ - "indexmap", - "serde", - "serde_json", - "swc_config_macro", -] - -[[package]] -name = "swc_config_macro" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "swc_core" -version = "0.79.51" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c4030b2c5887d0f2d3ce5ef4928c9377d731ce50336895cdeee162605a74ce" -dependencies = [ - "once_cell", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_minifier", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_testing", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_plugin", - "swc_plugin_macro", - "swc_plugin_proxy", - "vergen", -] - -[[package]] -name = "swc_ecma_ast" -version = "0.107.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce6ba552db5098e9e7b5e7fcc30ef1e9f2b33ec930a94489288e21f8e95b213" -dependencies = [ - "bitflags 2.3.3", - "bytecheck", - "is-macro", - "num-bigint", - "rkyv", - "scoped-tls", - "serde", - "string_enum", - "swc_atoms", - "swc_common", - "unicode-id", -] - -[[package]] -name = "swc_ecma_codegen" -version = "0.142.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20b9c1920bee89a90cfd100d5c2d22e0557760a86cc00726935209635301b482" -dependencies = [ - "memchr", - "num-bigint", - "once_cell", - "rustc-hash", - "serde", - "sourcemap", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_codegen_macros", - "tracing", -] - -[[package]] -name = "swc_ecma_codegen_macros" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "swc_ecma_minifier" -version = "0.184.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b52e83587eef45091514c4c1d93d4a9e4e958f43cd9b56d19d4ebd8a878b1d5" -dependencies = [ - "ahash 0.8.3", - "arrayvec", - "indexmap", - "num-bigint", - "num_cpus", - "once_cell", - "parking_lot", - "radix_fmt", - "regex", - "rustc-hash", - "ryu-js", - "serde", - "serde_json", - "swc_atoms", - "swc_cached", - "swc_common", - "swc_config", - "swc_ecma_ast", - "swc_ecma_codegen", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_optimization", - "swc_ecma_usage_analyzer", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_timer", - "tracing", -] - -[[package]] -name = "swc_ecma_parser" -version = "0.137.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eaccdcfd630dfa46e90d2b9ea20260e20ad275361b747ad8c9b93300470627" -dependencies = [ - "either", - "num-bigint", - "num-traits", - "serde", - "smallvec", - "smartstring", - "stacker", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "tracing", - "typed-arena", -] - -[[package]] -name = "swc_ecma_testing" -version = "0.20.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35902aefa048253d193d7b0a4500f2bc98ed24f6607597ef967f612a2c4e45a2" -dependencies = [ - "anyhow", - "hex", - "sha-1", - "testing", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_base" -version = "0.130.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f477cba9333b082dc67c66fff068decf3678c572b55175678bc57fde582af72f" -dependencies = [ - "better_scoped_tls", - "bitflags 2.3.3", - "indexmap", - "once_cell", - "phf", - "rustc-hash", - "serde", - "smallvec", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_utils", - "swc_ecma_visit", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_macros" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59c4b6ed5d78d3ad9fc7c6f8ab4f85bba99573d31d9a2c0a712077a6b45efd2" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "swc_ecma_transforms_optimization" -version = "0.190.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74be6367b3830f4e2dcefb8c6b968600b3e1b3baf64872d365d0d5b89de55d61" -dependencies = [ - "ahash 0.8.3", - "dashmap", - "indexmap", - "once_cell", - "petgraph", - "rustc-hash", - "serde_json", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_parser", - "swc_ecma_transforms_base", - "swc_ecma_transforms_macros", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_fast_graph", - "tracing", -] - -[[package]] -name = "swc_ecma_transforms_testing" -version = "0.133.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c58533aa8ed009af31adf1fbcd4b4cfb437721122e1c2a4505bede26eb0cc50" -dependencies = [ - "ansi_term", - "anyhow", - "base64", - "hex", - "serde", - "serde_json", - "sha-1", - "sourcemap", - "swc_common", - "swc_ecma_ast", - "swc_ecma_codegen", - "swc_ecma_parser", - "swc_ecma_testing", - "swc_ecma_transforms_base", - "swc_ecma_utils", - "swc_ecma_visit", - "tempfile", - "testing", -] - -[[package]] -name = "swc_ecma_usage_analyzer" -version = "0.16.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e4d2948720c9aa83915e01dd49f69837bd13a3eb60965a1ed5ba4e97555c" -dependencies = [ - "ahash 0.8.3", - "indexmap", - "rustc-hash", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_utils", - "swc_ecma_visit", - "swc_timer", - "tracing", -] - -[[package]] -name = "swc_ecma_utils" -version = "0.120.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d757778f6789a54bf2739007057af2917a6ac3b1d686fb06b56b88feda24e4bc" -dependencies = [ - "indexmap", - "num_cpus", - "once_cell", - "rustc-hash", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_ecma_visit", - "tracing", - "unicode-id", -] - -[[package]] -name = "swc_ecma_visit" -version = "0.93.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b701da2f2b16308865e2ab18db13df60cdf563b243430ca99e8ad6f8b760d83a" -dependencies = [ - "num-bigint", - "swc_atoms", - "swc_common", - "swc_ecma_ast", - "swc_visit", - "tracing", -] - -[[package]] -name = "swc_eq_ignore_macros" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "swc_error_reporters" -version = "0.15.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b190cdaf440a894db49d50bc497fcc14fdf0f013fdaf7be2e69874cd1b5d0" -dependencies = [ - "anyhow", - "miette", - "once_cell", - "parking_lot", - "swc_common", -] - -[[package]] -name = "swc_fast_graph" -version = "0.19.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cc84ef676e0901c5a7a01394b98f5219beee0e22f746fbe2c90ee998ceda15" -dependencies = [ - "indexmap", - "petgraph", - "rustc-hash", - "swc_common", -] - -[[package]] -name = "swc_macros_common" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" -dependencies = [ - "pmutil", - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "swc_plugin" -version = "0.90.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5df720531bfbd7ceb1139319c39c20c446abfb8f7e0eb47b104205a71152b4" -dependencies = [ - "once_cell", -] - -[[package]] -name = "swc_plugin_macro" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "785309d342a69df4c929ee59e14e36889ca832f1d2a3c1d03c47c93126c72dbc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "swc_plugin_proxy" -version = "0.36.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61b44c091eed6107b5d5970edb63acbe872e885495aae90de8450672d4b9868" -dependencies = [ - "better_scoped_tls", - "rkyv", - "swc_common", - "swc_ecma_ast", - "swc_trace_macro", - "tracing", -] - -[[package]] -name = "swc_timer" -version = "0.19.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560c944a65d817fba2fbfd39a914d04b446da9bb1f1c5d74b42a28259d733df" -dependencies = [ - "tracing", -] - -[[package]] -name = "swc_trace_macro" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff9719b6085dd2824fd61938a881937be14b08f95e2d27c64c825a9f65e052ba" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "swc_visit" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e87c337fbb2d191bf371173dea6a957f01899adb8f189c6c31b122a6cfc98fc3" -dependencies = [ - "either", - "swc_visit_macros", -] - -[[package]] -name = "swc_visit_macros" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" -dependencies = [ - "Inflector", - "pmutil", - "proc-macro2", - "quote", - "swc_macros_common", - "syn 2.0.28", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall", - "rustix", - "windows-sys", -] - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "testing" -version = "0.33.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df186694fbd668f4c7c8071c5e442b0c8781c5282202724ac44dad6092f74802" -dependencies = [ - "ansi_term", - "cargo_metadata", - "difference", - "once_cell", - "pretty_assertions", - "regex", - "serde_json", - "swc_common", - "swc_error_reporters", - "testing_macros", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "testing_macros" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c15b796025051a07f1ac695ee0cac0883f05a0d510c9d171ef8d31a992e6a5" -dependencies = [ - "anyhow", - "glob", - "once_cell", - "pmutil", - "proc-macro2", - "quote", - "regex", - "relative-path", - "syn 2.0.28", -] - -[[package]] -name = "textwrap" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d" -dependencies = [ - "smawk", - "unicode-linebreak", - "unicode-width", -] - -[[package]] -name = "thiserror" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" -dependencies = [ - "deranged", - "itoa", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" - -[[package]] -name = "time-macros" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" -dependencies = [ - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.28", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "triomphe" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f" -dependencies = [ - "serde", - "stable_deref_trait", -] - -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-id" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70b6494226b36008c8366c288d77190b3fad2eb4c10533139c1c1f461127f1a" - -[[package]] -name = "unicode-ident" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - -[[package]] -name = "unicode-linebreak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "url" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "uuid" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vergen" -version = "7.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21b881cd6636ece9735721cf03c1fe1e774fe258683d084bb2812ab67435749" -dependencies = [ - "anyhow", - "cfg-if", - "enum-iterator", - "getset", - "rustversion", - "thiserror", - "time", -] - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" diff --git a/packages/swc-plugin-solid-cli/Cargo.toml b/packages/swc-plugin-solid-cli/Cargo.toml deleted file mode 100644 index 91f1e06..0000000 --- a/packages/swc-plugin-solid-cli/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "swc-plugin-solid-cli" -version = "0.1.0" -edition = "2021" - -[lib] -crate-type = ["cdylib", "rlib"] - -[profile.release] -lto = true -strip = "symbols" -codegen-units = 1 -[dependencies] -serde = "1" -serde_json = "1.0" -swc_core = { version = "0.79", features = [ - "ecma_plugin_transform", - "ecma_utils", - "ecma_minifier", - "ecma_visit", - "ecma_ast", - "common", -] } -[dev-dependencies] -swc_core = { version = "0.79", features = ["testing_transform", "ecma_parser"] } - -testing = { version = "0.33" } -# .cargo/config defines few alias to build plugin. -# cargo build-wasi generates wasm-wasi32 binary -# cargo build-wasm32 generates wasm32-unknown-unknown binary. diff --git a/packages/swc-plugin-solid-cli/README.md b/packages/swc-plugin-solid-cli/README.md deleted file mode 100644 index e0e27ac..0000000 --- a/packages/swc-plugin-solid-cli/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @solid-cli/swc-plugin-solid-cli - -An SWC plugin for updating a project's vite config, primarily used by the CLI to add new vite plugins and automatically configure them with sensible defaults diff --git a/packages/swc-plugin-solid-cli/output/swc_plugin_solid_cli.wasm b/packages/swc-plugin-solid-cli/output/swc_plugin_solid_cli.wasm deleted file mode 100644 index d8f9eef..0000000 Binary files a/packages/swc-plugin-solid-cli/output/swc_plugin_solid_cli.wasm and /dev/null differ diff --git a/packages/swc-plugin-solid-cli/package.json b/packages/swc-plugin-solid-cli/package.json deleted file mode 100644 index 1b5b55b..0000000 --- a/packages/swc-plugin-solid-cli/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@solid-cli/swc-plugin-solid-cli", - "version": "0.0.3", - "description": "An SWC plugin for transforming a project's vite config", - "author": "Thomas Beer", - "license": "MIT", - "homepage": "https://solid-cli.netlify.app", - "repository": { - "type": "git", - "url": "https://github.com/solidjs-community/solid-cli" - }, - "keywords": [ - "swc-plugin" - ], - "main": "output/swc_plugin_solid_cli.wasm", - "scripts": { - "prepublishOnly": "cargo build-wasi --release --out-dir=./output -Z unstable-options", - "build": "", - "test": "cargo +nightly test" - }, - "preferUnplugged": true, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/swc-plugin-solid-cli/rust-toolchain.toml b/packages/swc-plugin-solid-cli/rust-toolchain.toml deleted file mode 100644 index 5d56faf..0000000 --- a/packages/swc-plugin-solid-cli/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly" diff --git a/packages/swc-plugin-solid-cli/src/config.rs b/packages/swc-plugin-solid-cli/src/config.rs deleted file mode 100644 index d7c5f05..0000000 --- a/packages/swc-plugin-solid-cli/src/config.rs +++ /dev/null @@ -1,41 +0,0 @@ -use serde::{Deserialize, Serialize}; -use serde_json::{json, Value}; -pub trait Testing { - fn test() -> Self; -} -#[derive(Serialize, Deserialize, Default, Debug)] -#[serde(rename_all = "camelCase")] -pub struct PluginConfig { - pub import_name: String, - pub import_source: String, - pub is_default: bool, - pub options: Value, -} - -impl PluginConfig { - fn test() -> Self { - Self { - import_name: "UnoCss".to_string(), - import_source: "unocss/vite".to_string(), - is_default: true, - options: json!({}), - } - } -} - -#[derive(Serialize, Deserialize, Default, Debug)] -#[serde(rename_all = "camelCase")] -pub struct Config { - pub additional_plugins: Vec, - pub force_transform: bool, - pub merge_configs: bool, -} -impl Testing for Config { - fn test() -> Self { - Self { - additional_plugins: vec![PluginConfig::test()], - force_transform: true, - merge_configs: false, - } - } -} diff --git a/packages/swc-plugin-solid-cli/src/lib.rs b/packages/swc-plugin-solid-cli/src/lib.rs deleted file mode 100644 index 84eb859..0000000 --- a/packages/swc-plugin-solid-cli/src/lib.rs +++ /dev/null @@ -1,361 +0,0 @@ -#![feature(let_chains)] -use std::collections::HashMap; -pub mod config; -use config::Config; -use serde_json::Value; - -use swc_core::common::DUMMY_SP; -use swc_core::ecma::ast::{ - ArrayLit, Bool, Callee, ExprOrSpread, ImportDecl, ImportDefaultSpecifier, ImportNamedSpecifier, - ImportSpecifier, KeyValueProp, Lit, Module, ModuleDecl, ModuleItem, Null, ObjectLit, Prop, - PropName, PropOrSpread, Str, -}; -use swc_core::ecma::utils::{prepend_stmt, swc_common, ExprExt}; - -use swc_core::ecma::{ - ast::{CallExpr, Expr, Ident, Program}, - visit::{as_folder, FoldWith, VisitMut, VisitMutWith}, -}; -use swc_core::plugin::errors::HANDLER; -use swc_core::plugin::{plugin_transform, proxies::TransformPluginProgramMetadata}; - -pub struct TransformVisitor { - original_imports: Vec, - new_imports: HashMap, - config: Config, -} -impl TransformVisitor { - pub fn new(config: Config) -> Self { - Self { - original_imports: Default::default(), - new_imports: Default::default(), - config, - } - } -} -/** - * Converts from serde_json's `Value` format to an swc `Expr`, which can then just be passed - */ -fn to_expr(val: &Value) -> Expr { - match val { - Value::Null => Expr::Lit(Lit::Null(Null { span: DUMMY_SP })), - Value::Number(n) => Expr::Lit(Lit::Num(n.as_f64().unwrap().into())), - Value::Bool(b) => Expr::Lit(Lit::Bool(Bool { - span: DUMMY_SP, - value: *b, - })), - Value::String(s) => Expr::Lit(Lit::Str(Str { - span: DUMMY_SP, - value: s.clone().into(), - raw: None, - })), - Value::Array(arr) => Expr::Array(ArrayLit { - span: DUMMY_SP, - elems: arr - .iter() - .map(|v| { - Some(ExprOrSpread { - spread: None, - expr: Box::new(to_expr(v)), - }) - }) - .collect(), - }), - Value::Object(obj) => Expr::Object(ObjectLit { - span: DUMMY_SP, - props: obj - .iter() - .map(|(k, v)| { - PropOrSpread::Prop(Box::new(Prop::KeyValue(KeyValueProp { - key: PropName::Ident(Ident::new(k.clone().into(), DUMMY_SP)), - value: Box::new(to_expr(v)), - }))) - }) - .collect(), - }), - } -} -impl TransformVisitor { - // Taken almost verbatim from https://github.com/modderme123/swc-plugin-jsx-dom-expressions - pub fn insert_imports(&mut self, module: &mut Module) { - let mut entries = self.new_imports.drain().collect::>(); - entries.sort_by(|(a, _), (b, _)| a.cmp(b)); - for (name, val) in entries { - let specifier = if val.1 { - ImportSpecifier::Default(ImportDefaultSpecifier { - local: val.0, - span: DUMMY_SP, - }) - } else { - ImportSpecifier::Named(ImportNamedSpecifier { - local: val.0, - imported: None, - span: DUMMY_SP, - is_type_only: false, - }) - }; - prepend_stmt( - &mut module.body, - ModuleItem::ModuleDecl(ModuleDecl::Import(ImportDecl { - specifiers: vec![specifier], - src: Box::new(Str { - span: DUMMY_SP, - value: name.into(), - raw: None, - }), - span: DUMMY_SP, - type_only: false, - asserts: None, - })), - ); - } - } -} -fn get_import_names(import_decl: &ImportDecl) -> Vec<&str> { - import_decl - .specifiers - .iter() - .map(|s| match s { - ImportSpecifier::Named(s) => s.local.sym.as_ref(), - ImportSpecifier::Default(s) => s.local.sym.as_ref(), - ImportSpecifier::Namespace(s) => s.local.sym.as_ref(), - }) - .collect() -} -fn is_plugin_already_added( - visitor: &TransformVisitor, - elems: &[Option], - plugin_name: &str, - plugin_import_path: &str, -) -> i32 { - for (n, elem) in elems.iter().enumerate().take(elems.iter().len()) { - // Assuming that plugins are always call expressions, and always imported as such - // Can be fixed in the future by just visiting with self, and collecting all the identifiers that we find - if let Some(elem) = elem && let Expr::Call(call_expr) = elem.expr.as_expr() && let Callee::Expr(callee_expr) = &call_expr.callee { - if let Expr::Ident(i) = &**callee_expr { - let local_name = i.sym.as_ref(); - if plugin_name == local_name { - // Checking if the import is from the same place - for import in &visitor.original_imports{ - let imported_from = import.src.value.as_ref(); - let import_names = get_import_names(import); - if import_names.contains(&local_name) && imported_from == plugin_import_path { - // Plugin already exists, so we don't need to add it - return n.try_into().unwrap() - } - } - } - } - } - } - -1 -} -fn get_key_name(key: &PropName) -> String { - match key { - PropName::Ident(i) => i.sym.to_string(), - PropName::Str(s) => s.value.to_string(), - PropName::Num(n) => n.value.to_string(), - PropName::BigInt(b) => b.value.to_string(), - PropName::Computed(_) => { - HANDLER.with(|handler| { - handler - .struct_span_err( - DUMMY_SP, - "Plugin already exists, and force_transform is not enabled", - ) - .emit() - }); - panic!(); - } - } -} -/** - * Merge two objects. - * `obj1` takes precedence. - */ -fn merge_objects(obj1: &ObjectLit, obj2: &ObjectLit) -> Vec { - // Storing string here gives a really quick way to access the prop name - let mut new_props: Vec<(String, &PropOrSpread)> = vec![]; - for prop in &obj1.props { - if let PropOrSpread::Prop(p) = prop { - if let Prop::KeyValue(key_val) = &**p { - let name = get_key_name(&key_val.key); - new_props.push((name, prop)) - } - } - } - for prop in &obj2.props { - if let PropOrSpread::Prop(p) = prop { - if let Prop::KeyValue(key_val) = &**p { - let prop_name = &get_key_name(&key_val.key); - let mut exists = false; - for (name, _) in &new_props { - if prop_name == name { - exists = true; - } - } - if exists { - continue; - } - // We can now add this prop - new_props.push((prop_name.to_owned(), prop)) - } - } - } - let mut data_to_ret = vec![]; - for (_, prop) in new_props { - data_to_ret.push(prop.clone()); - } - data_to_ret -} -fn generate_plugin_expr( - name: &str, - extra_config: &Value, - original_config: &Option, -) -> Option { - Some(ExprOrSpread { - spread: None, - expr: Box::new(Expr::Call(CallExpr { - span: Default::default(), - callee: Callee::Expr(Box::new(Expr::Ident(Ident::new( - name.into(), - swc_common::DUMMY_SP, - )))), - args: vec![ExprOrSpread { - spread: None, - expr: Box::new({ - let mut converted = to_expr(extra_config); - if let Some(ExprOrSpread { expr, .. }) = &original_config { - if let Expr::Call(call_expr) = &**expr { - if call_expr.args.len() > 0 && let Expr::Object(obj) = &*call_expr.args[0].expr { - if let Expr::Object(new_cfg) = &converted { - let merged = merge_objects(new_cfg, obj); - converted = Expr::Object(ObjectLit { - span: DUMMY_SP, - props: merged, - }) - } - } - } - } - converted - }), - }], - type_args: None, - })), - }) -} -fn add_new_plugins(visitor: &mut TransformVisitor, arr_lit: &ArrayLit) -> PropOrSpread { - let mut elems: Vec> = arr_lit.elems.clone(); - for plugin_config in &visitor.config.additional_plugins { - // Checking if plugin already exists - let ind = is_plugin_already_added( - visitor, - &elems, - &plugin_config.import_name, - &plugin_config.import_source, - ); - if ind != -1 && !visitor.config.force_transform { - HANDLER.with(|handler| { - handler - .struct_span_err( - DUMMY_SP, - "Plugin already exists, and force_transform is not enabled", - ) - .emit() - }); - } - // The plugin must already exist, so we can just mutate what's already there - if ind != -1 { - let plugin_expr = generate_plugin_expr( - &plugin_config.import_name, - &plugin_config.options, - &elems[ind as usize], - ); - elems[ind as usize] = plugin_expr; - continue; - } - let plugin_expr = - generate_plugin_expr(&plugin_config.import_name, &plugin_config.options, &None); - elems.push(plugin_expr); - // Add to imports - visitor.new_imports.insert( - plugin_config.import_source.clone(), - ( - Ident::new( - plugin_config.import_name.clone().into(), - swc_common::DUMMY_SP, - ), - plugin_config.is_default, - ), - ); - } - // Building new prop - PropOrSpread::Prop(Box::new(Prop::KeyValue(KeyValueProp { - key: PropName::Ident(Ident::new("plugins".into(), swc_common::DUMMY_SP)), - value: Box::new(Expr::Array(ArrayLit { - span: Default::default(), - elems, - })), - }))) -} -fn update_argument(visitor: &mut TransformVisitor, arg: &mut ExprOrSpread) { - if let Expr::Object(obj) = arg.expr.as_expr() { - let mut new_props: Vec = obj.props.clone(); - let mut mutated_existing = false; - - for prop_spread in new_props.iter_mut() { - if let PropOrSpread::Prop(prop) = prop_spread { - if let Prop::KeyValue(key_value_prop) = &**prop && let Some(i) = key_value_prop.key.as_ident() && i.sym.to_string() == "plugins" && let Expr::Array(arr_lit) = &*key_value_prop.value { - *prop_spread = add_new_plugins(visitor, arr_lit); - mutated_existing = true; - } - } - } - if !mutated_existing { - // `plugins` prop doesn't exist. So we need to create it - new_props.push(add_new_plugins( - visitor, - &ArrayLit { - span: Default::default(), - elems: vec![], - }, - )); - } - // Can add new props to the obj here - arg.expr = Box::new(Expr::Object(ObjectLit { - span: Default::default(), - props: new_props, - })) - } -} -impl VisitMut for TransformVisitor { - // Implement necessary visit_mut_* methods for actual custom transform. - // A comprehensive list of possible visitor methods can be found here: - // https://rustdoc.swc.rs/swc_ecma_visit/trait.VisitMut.html - - fn visit_mut_call_expr(&mut self, call_expr: &mut CallExpr) { - if let Expr::Ident(i) = &**call_expr.callee.as_expr().unwrap() { - if i.sym.to_string() == "defineConfig" { - let config_arg = &mut call_expr.args[0]; - update_argument(self, config_arg); - } - } - } - fn visit_mut_import_decl(&mut self, n: &mut ImportDecl) { - self.original_imports.push(n.clone()); - } - fn visit_mut_module(&mut self, module: &mut Module) { - module.visit_mut_children_with(self); - self.insert_imports(module); - } -} - -#[plugin_transform] -pub fn process_transform(program: Program, metadata: TransformPluginProgramMetadata) -> Program { - let plugin_config = metadata.get_transform_plugin_config(); - let config: config::Config = plugin_config - .and_then(|json| serde_json::from_str(&json).ok()) - .unwrap(); - program.fold_with(&mut as_folder(TransformVisitor::new(config))) -} diff --git a/packages/swc-plugin-solid-cli/tests/fixture.rs b/packages/swc-plugin-solid-cli/tests/fixture.rs deleted file mode 100644 index 8513854..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture.rs +++ /dev/null @@ -1,65 +0,0 @@ -use std::path::PathBuf; - -use serde_json::json; -use swc_core::common::{chain, Mark}; -use swc_core::{ - ecma::parser::{EsConfig, Syntax}, - ecma::transforms::base::resolver, - ecma::transforms::testing::test_fixture, - ecma::visit::as_folder, -}; - -use swc_plugin_solid_cli::config::{Config, PluginConfig, Testing}; -use swc_plugin_solid_cli::TransformVisitor; -use testing::fixture; - -fn syntax() -> Syntax { - Syntax::Es(EsConfig { - jsx: true, - ..Default::default() - }) -} - -#[fixture("tests/fixture/basic_tests/**/code.js")] -fn jsx_dom_expressions_fixture_babel(input: PathBuf) { - let output = input.parent().unwrap().join("output.js"); - - test_fixture( - syntax(), - &|_t| { - chain!( - resolver(Mark::new(), Mark::new(), false), - as_folder(TransformVisitor::new(Config::test())) - ) - }, - &input, - &output, - Default::default(), - ); -} -#[fixture("tests/fixture/merge_tests/**/code.js")] -fn merge_tests(input: PathBuf) { - let output = input.parent().unwrap().join("output.js"); - - test_fixture( - syntax(), - &|_t| { - chain!( - resolver(Mark::new(), Mark::new(), false), - as_folder(TransformVisitor::new(Config { - additional_plugins: vec![PluginConfig { - import_name: "UnoCss".to_string(), - import_source: "unocss/vite".to_string(), - is_default: true, - options: json!({"flag2": false}), - }], - force_transform: true, - merge_configs: true, - })) - ) - }, - &input, - &output, - Default::default(), - ); -} diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/code.js deleted file mode 100644 index 421eb55..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/code.js +++ /dev/null @@ -1,2 +0,0 @@ -import { defineConfig } from "vite"; -export default defineConfig({ plugins: [solid()] }); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/output.js deleted file mode 100644 index f3faa3a..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/basic_config/output.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [solid(), UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/code.js deleted file mode 100644 index 34c5847..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/code.js +++ /dev/null @@ -1 +0,0 @@ -export default defineConfig({}, false); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/output.js deleted file mode 100644 index fb466e0..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/non_destructive/output.js +++ /dev/null @@ -1,7 +0,0 @@ -import UnoCss from "unocss/vite"; -export default defineConfig( - { - plugins: [UnoCss({})], - }, - false, -); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/code.js deleted file mode 100644 index f3faa3a..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/code.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [solid(), UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/output.js deleted file mode 100644 index f3faa3a..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/plugin_already_exists/output.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [solid(), UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/code.js deleted file mode 100644 index 462ea7d..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/code.js +++ /dev/null @@ -1,4 +0,0 @@ -import UnoCss from "not_unocss/vite"; -export default defineConfig({ - plugins: [UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/output.js deleted file mode 100644 index b225752..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_different_import/output.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import UnoCss1 from "not_unocss/vite"; -export default defineConfig({ - plugins: [UnoCss1({}), UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/code.js deleted file mode 100644 index 15c091f..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/code.js +++ /dev/null @@ -1,4 +0,0 @@ -import UnoCss from "unocss/vite"; -export default defineConfig({ - plugins: [UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/output.js deleted file mode 100644 index 15c091f..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/same_name_same_import/output.js +++ /dev/null @@ -1,4 +0,0 @@ -import UnoCss from "unocss/vite"; -export default defineConfig({ - plugins: [UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/code.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/code.js deleted file mode 100644 index bc5959a..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/code.js +++ /dev/null @@ -1 +0,0 @@ -export default defineConfig({}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/output.js b/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/output.js deleted file mode 100644 index 15c091f..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/basic_tests/without_plugins/output.js +++ /dev/null @@ -1,4 +0,0 @@ -import UnoCss from "unocss/vite"; -export default defineConfig({ - plugins: [UnoCss({})], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/code.js b/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/code.js deleted file mode 100644 index 84813d6..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/code.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [UnoCss({ flag2: true })], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/output.js b/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/output.js deleted file mode 100644 index 8486d14..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/same_flag/output.js +++ /dev/null @@ -1,9 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [ - UnoCss({ - flag2: false, - }), - ], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/code.js b/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/code.js deleted file mode 100644 index 1d4308f..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/code.js +++ /dev/null @@ -1,5 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [UnoCss({ flag: true })], -}); diff --git a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/output.js b/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/output.js deleted file mode 100644 index 327b0f0..0000000 --- a/packages/swc-plugin-solid-cli/tests/fixture/merge_tests/test_merging/output.js +++ /dev/null @@ -1,10 +0,0 @@ -import UnoCss from "unocss/vite"; -import { defineConfig } from "vite"; -export default defineConfig({ - plugins: [ - UnoCss({ - flag2: false, - flag: true, - }), - ], -}); diff --git a/packages/ui/.gitignore b/packages/ui/.gitignore deleted file mode 100644 index fbf0622..0000000 --- a/packages/ui/.gitignore +++ /dev/null @@ -1 +0,0 @@ -types \ No newline at end of file diff --git a/packages/ui/package.json b/packages/ui/package.json deleted file mode 100644 index 9a3194a..0000000 --- a/packages/ui/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@solid-cli/ui", - "version": "0.0.5", - "license": "MIT", - "homepage": "https://solid-cli.netlify.app", - "repository": { - "type": "git", - "url": "https://github.com/solidjs-community/solid-cli" - }, - "description": "A collection of UI utilities for the Solid CLI", - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", - "types": "./types/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.mjs", - "types": "./types/index.d.ts" - } - }, - "scripts": { - "test": "vitest run", - "build": "tsc && tsup" - }, - "devDependencies": { - "tsup": "^7.2.0", - "typescript": "^5.1.6", - "@types/node": "20.4.8" - }, - "publishConfig": { - "access": "public" - }, - "dependencies": { - "@clack/core": "0.3.2", - "@clack/prompts": "0.6.3", - "picocolors": "^1.0.0", - "@solid-cli/reactivity": "workspace:*", - "@solid-cli/utils": "workspace:*" - } -} diff --git a/packages/ui/src/components/autocomplete/index.ts b/packages/ui/src/components/autocomplete/index.ts deleted file mode 100644 index 739ab93..0000000 --- a/packages/ui/src/components/autocomplete/index.ts +++ /dev/null @@ -1,304 +0,0 @@ -import { Key } from "node:readline"; -import { Prompt } from "@clack/core"; -import { TextOptions } from "@clack/prompts"; -import { S_CHECKBOX_ACTIVE, S_CHECKBOX_SELECTED, S_CHECKBOX_INACTIVE, S_BAR, S_BAR_END, box, S_INFO } from "./utils"; -import color from "picocolors"; -import { createEffect } from "@solid-cli/reactivity"; -import { t } from "@solid-cli/utils"; -import { Option } from "@solid-cli/utils/util-types"; - -const buildRegex = (str: string) => { - let s = ""; - - for (let i = 0; i < str.length; i++) { - s += str[i] + ".*"; - } - - s = ".*" + s; - - return RegExp(s); -}; - -const search = (values: T[], lookFor: string) => { - const group = lookFor.match(/(\w+)\/(\w+)?/); - - if (group) { - const groupData = values.filter((option) => option.group && option.group.includes(group[1])); - - const sp = group[2]; - - if (!sp) return groupData; - - const r = buildRegex(sp); - return groupData.filter((v) => r.test((v.label ?? v.value).toLowerCase())); - } - - const r = buildRegex(lookFor); - - return !lookFor.length ? values : values.filter((v) => r.test((v.label ?? v.value).toLowerCase())); -}; - -const sortByGroup = (options: T[]) => { - return [...options].sort((a, b) => { - if (a.group && b.group) return 0; - - if (a.group && !b.group) return 1; - - return -1; - }); -}; - -const opt = ( - option: any, - state: "inactive" | "active" | "selected" | "active-selected" | "submitted" | "cancelled", -) => { - const label = option.label ?? String(option.value); - if (state === "active") { - return `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${option.hint ? color.dim(`(${option.hint})`) : ""}`; - } else if (state === "selected") { - return `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`; - } else if (state === "cancelled") { - return `${color.strikethrough(color.dim(label))}`; - } else if (state === "active-selected") { - return `${color.green(S_CHECKBOX_SELECTED)} ${label} ${option.hint ? color.dim(`(${option.hint})`) : ""}`; - } else if (state === "submitted") { - return `${color.dim(label)}`; - } - return `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`; -}; - -const aliases = new Map([ - ["k", "up"], - ["j", "down"], - ["h", "left"], - ["l", "right"], -]); - -interface AutocompleteTextOptions extends TextOptions { - options: () => T[]; - render: (this: Omit, "prompt">) => string | void; -} - -class AutocompleteText extends Prompt { - valueWithCursor = ""; - options: T[]; - - get __cursor() { - return this._cursor; - } - cursor: number = 0; - - filteredOptions: T[]; - selected: T[]; - - mode: "search" | "explore" = "explore"; - - private toggleValue() { - const cursorOption = this.filteredOptions[this.cursor]; - const selected = this.selected.find((v) => v.value === cursorOption.value) !== undefined; - - this.selected = selected - ? this.selected.filter((v) => v.value !== cursorOption.value) - : [...this.selected, cursorOption]; - } - - constructor(opts: AutocompleteTextOptions) { - super(opts); - - // // @ts-ignore - // this.rl?.clearLine(); - this.options = opts.options(); - this.filteredOptions = opts.options(); - this.selected = []; - - if (this.mode === "explore") this.value = this.options; - - createEffect(() => { - this.options = opts.options(); - this.filteredOptions = sortByGroup(search(opts.options(), "")); - this.value = this.options; - // @ts-ignore - this.render(); - }); - - this.customKeyPress = this.customKeyPress.bind(this); - - this.on("finalize", () => { - if (!this.value) { - this.value = opts.defaultValue; - } - this.valueWithCursor = this.value; - this.value = this.selected; - }); - - this.on("value", () => { - if (this.value[this.value.length - 1] === "/" && this.mode === "explore") { - // @ts-ignore - this.rl.clearLine(); - this.value = ""; - this.mode = "search"; - return; - } - if (this.mode === "explore") return; - const value = this.value as string; - if (this._cursor >= value.length) { - this.valueWithCursor = `${value}${color.inverse(color.hidden("_"))}`; - } else { - const s1 = value.slice(0, this._cursor); - const s2 = value.slice(this._cursor); - this.valueWithCursor = `${s1}${color.inverse(s2)}${s2.slice(1)}`; - } - - const indexSelector = value.match(/:(\d+)/); - // if (!indexSelector) this.cursor = 0; - - const last = value[value.length - 1]; - if (last === ":") { - const tillSelector = value.slice(0, value.length - 1); - - if (tillSelector.length > 0) { - this.filteredOptions = sortByGroup(search(this.options, tillSelector)); - } else { - this.filteredOptions = sortByGroup(this.options); - } - - return; - } - - if (indexSelector && indexSelector[1]) { - const index = Number(indexSelector[1]); - - if (this.filteredOptions.length > 1 && index > this.filteredOptions.length - 1) { - this.state = "error"; - return; - } - this.cursor = index; - return; - } - - const before = this.filteredOptions.length; - this.filteredOptions = sortByGroup(search(this.options, value.toLowerCase())); - const after = this.filteredOptions.length; - - if (before !== after) { - this.cursor = 0; - } - }); - this.on("cursor", (key) => { - if (this.mode === "explore" && key === "/") return; - switch (key) { - case "left": - case "up": - this.cursor = this.cursor === 0 ? this.filteredOptions.length - 1 : this.cursor - 1; - break; - case "down": - case "right": - this.cursor = this.cursor === this.filteredOptions.length - 1 ? 0 : this.cursor + 1; - break; - case "tab": - this.toggleValue(); - break; - } - }); - this.input.on("keypress", this.customKeyPress); - } - - private customKeyPress(char: string, key?: Key) { - if (this.mode === "explore" && key?.name && aliases.has(key.name)) { - this.emit("cursor", aliases.get(key.name)); - } - if (key?.name === "tab") { - const focusedOption = this.filteredOptions[this.cursor]; - const selected = this.selected.find((v) => v?.value === focusedOption?.value) !== undefined; - if (selected) { - this.selected = this.selected.filter((v) => v !== focusedOption); - } else { - this.selected = this.filteredOptions?.length === 0 ? this.selected : [...this.selected, focusedOption]; - } - // @ts-ignore - this.rl.clearLine(); - } else if (key?.name === "escape") { - if (this.mode === "search") { - this.mode = "explore"; - return; - } - } - } -} - -const BULLET = "•"; - -const instructions = color.gray( - `↓/j down ${BULLET} ↑/k up ${BULLET} tab select ${BULLET} Ctrl-C cancel ${BULLET} / filter`, -); - -const searchInstructions = color.gray( - `tab select ${BULLET} ESC cancel filter ${BULLET} : to highlight by index`, -); - -export const autocomplete = (opts: Omit, "render">) => { - return new AutocompleteText({ - options: opts.options, - message: opts.message, - validate: opts.validate, - placeholder: opts.placeholder, - defaultValue: opts.defaultValue, - initialValue: opts.initialValue, - render() { - const selected = - this.selected.length === 0 - ? color.gray(t.NOTHING_SELECTED) - : this.selected.map((option, i) => `${color.yellow(option.label)}`).join(" "); - const placeholder = opts.placeholder - ? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1)) - : color.inverse(color.hidden("_")); - - const value = typeof this.value === "string" ? (!this.value ? placeholder : this.valueWithCursor) : ""; - - const textView = `${color.cyan("?")} Filter: ` + value + "\n"; - - const noResults = color.red(t.AUTOCOMPLETE_NO_RESULTS); - - let uniqueGroups = new Set(); - let start = Math.max(0, this.cursor - 11); - const filteredOptions = this.filteredOptions - .map((option, i) => { - if (i < start || i > start + 11) return; - - const selected = this.selected.find((v) => v.value === option.value) !== undefined; - const has = option.group && uniqueGroups.has(option.group); - if (!has && option.group) { - uniqueGroups.add(option.group); - } - - const isFocused = this.cursor === i; - - const active = (i === 0 && this.mode === "search") || (this.mode === "explore" && isFocused); - const state = selected ? "selected" : active ? "active" : "inactive"; - - const spacing = i > 9 ? " " : " "; - - const groupView = `${ - has || !option.group ? "" : `\n${color.cyan(S_BAR)}${color.bgBlue(color.black(option.group))}` - } ${!has && option.group ? `\n${color.cyan(S_BAR)} ` : ""}`; - - return groupView + `${i}:${spacing}` + (isFocused ? color.bgBlack(opt(option, state)) : opt(option, state)); - }) - .filter(Boolean) - .join(`\n${color.cyan(S_BAR)} `); - - // prettier-ignore - const options = `${color.cyan(S_BAR)} ${this.filteredOptions.length ? filteredOptions : noResults}\n${color.cyan(S_BAR_END,)}\n`; - - return ( - `${color.cyan(S_BAR)} \n ${color.cyan(S_BAR)} ${color.yellow(S_CHECKBOX_SELECTED)} ${ - t.AUTOCOMPLETE_SELECTED - }: ${selected}\n${color.cyan(S_BAR)} \n` + - (this.mode === "search" ? `${color.cyan(S_BAR)} ` + textView : "") + - options + - "\n" + - (this.mode === "search" ? searchInstructions : instructions) - ); - }, - }).prompt() as Promise; -}; diff --git a/packages/ui/src/components/autocomplete/utils.ts b/packages/ui/src/components/autocomplete/utils.ts deleted file mode 100644 index 8c28cfb..0000000 --- a/packages/ui/src/components/autocomplete/utils.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { isCancel } from "@clack/core"; -import { log } from "@clack/prompts"; -import color from "picocolors"; -// Taken from https://github.com/natemoo-re/clack/blob/main/packages/prompts/src/index.ts#L642 -const S_STEP_ACTIVE = "◆"; -const S_STEP_CANCEL = "■"; -const S_STEP_ERROR = "▲"; -const S_STEP_SUBMIT = "◇"; - -const S_BAR_START = "┌"; -const S_BAR = "│"; -const S_BAR_END = "└"; - -const S_RADIO_ACTIVE = "●"; -const S_RADIO_INACTIVE = "○"; -const S_CHECKBOX_ACTIVE = "◻"; -const S_CHECKBOX_SELECTED = "◼"; -const S_CHECKBOX_INACTIVE = "◻"; -const S_PASSWORD_MASK = "▪"; - -const S_BAR_H = "─"; -const S_CORNER_TOP_RIGHT = "╮"; -const S_CONNECT_LEFT = "├"; -const S_CORNER_BOTTOM_RIGHT = "╯"; - -const S_INFO = "●"; -const S_SUCCESS = "◆"; -const S_WARN = "▲"; -const S_ERROR = "■"; - -// Adapted from https://github.com/chalk/ansi-regex -// @see LICENSE -function ansiRegex() { - const pattern = [ - "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", - "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))", - ].join("|"); - - return new RegExp(pattern, "g"); -} - -const strip = (str: string) => str.replace(ansiRegex(), ""); -const box = (message = "", title = "") => { - const lines = `\n${message}\n`.split("\n"); - const len = - Math.max( - lines.reduce((sum, ln) => { - ln = strip(ln); - return ln.length > sum ? ln.length : sum; - }, 0), - strip(title).length, - ) + 2; - const msg = lines - .map((ln) => `${color.gray(S_BAR)} ${color.dim(ln)}${" ".repeat(len - strip(ln).length)}${color.gray(S_BAR)}`) - .join("\n"); - return `${color.gray(S_BAR)}\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray( - S_BAR_H.repeat(Math.max(len - title.length - 1, 1)) + S_CORNER_TOP_RIGHT, - )}\n${msg}\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\n`; -}; - -export { - S_CONNECT_LEFT, - S_CORNER_BOTTOM_RIGHT, - S_CORNER_TOP_RIGHT, - S_BAR, - S_BAR_START, - S_BAR_END, - S_BAR_H, - S_INFO, - S_ERROR, - S_WARN, - S_SUCCESS, - S_RADIO_ACTIVE, - S_RADIO_INACTIVE, - S_PASSWORD_MASK, - S_CHECKBOX_ACTIVE, - S_CHECKBOX_INACTIVE, - S_CHECKBOX_SELECTED, - S_STEP_ACTIVE, - S_STEP_ERROR, - S_STEP_CANCEL, - S_STEP_SUBMIT, -}; - -const cancelable = async (prompt: Promise, cancelMessage: string = "Canceled"): Promise => { - const value = await prompt; - - if (isCancel(value)) { - log.warn(cancelMessage); - process.exit(0); - } - - return value; -}; - -export { strip, box, cancelable }; diff --git a/packages/ui/src/components/form/index.ts b/packages/ui/src/components/form/index.ts deleted file mode 100644 index 99dff16..0000000 --- a/packages/ui/src/components/form/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { TextOptions, text } from "@clack/prompts"; - -interface Field extends TextOptions { - name: string; - render?: (this: Field) => Promise; -} - -export const form = async (fields: Field[]) => { - let returns: { name: string; value: any }[] = []; - - for (const field of fields) { - if (field.render) { - const r = await field.render.bind(field)(); - if (r) { - returns.push({ name: field.name, value: r }); - } - continue; - } - - const r = await text({ ...field }); - - returns.push({ name: field.name, value: r }); - } - - // console.log(JSON.stringify(returns)); - - return returns; -}; diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts deleted file mode 100644 index 083c425..0000000 --- a/packages/ui/src/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./components/autocomplete"; -export * from "./components/form"; -export * from "./components/autocomplete/utils"; -export * from "./components/spinnerify"; diff --git a/packages/ui/tsup.config.ts b/packages/ui/tsup.config.ts deleted file mode 100644 index 0289b01..0000000 --- a/packages/ui/tsup.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - target: "esnext", - format: ["esm", "cjs"], - splitting: false, - sourcemap: true, - clean: true, -}); diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md new file mode 100644 index 0000000..544c42c --- /dev/null +++ b/packages/utils/CHANGELOG.md @@ -0,0 +1,21 @@ +# @solid-cli/utils + +## 0.7.0 + +### Minor Changes + +- support fetching without the github API (so fetching should no work when hitting the github api limit) + +## 0.6.3 + +### Patch Changes + +- update dependencies and add to solid start v2 templates list + +## 0.6.2 + +### Patch Changes + +- Update dependencies + +## 0.6.0 diff --git a/packages/utils/package.json b/packages/utils/package.json index 8af9dc5..f1f0e3d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@solid-cli/utils", - "version": "0.0.5", + "version": "0.7.0", "description": "A collection of utilities for the Solid CLI", "license": "MIT", "homepage": "https://solid-cli.netlify.app", @@ -8,70 +8,74 @@ "type": "git", "url": "https://github.com/solidjs-community/solid-cli" }, + "files": [ + "dist", + "types" + ], "main": "./dist/index.mjs", "module": "./dist/index.mjs", "types": "./types/index.d.ts", "exports": { ".": { + "types": "./types/index.d.ts", "import": "./dist/index.mjs", - "require": "./dist/index.mjs", - "types": "./types/index.d.ts" + "require": "./dist/index.mjs" }, "./paths": { + "types": "./types/paths/index.d.ts", "import": "./dist/paths/index.mjs", - "require": "./dist/paths/index.mjs", - "types": "./types/paths/index.d.ts" + "require": "./dist/paths/index.mjs" }, "./transform": { + "types": "./types/transform/index.d.ts", "import": "./dist/transform/index.mjs", - "require": "./dist/transform/index.mjs", - "types": "./types/transform/index.d.ts" + "require": "./dist/transform/index.mjs" }, "./updates": { + "types": "./types/updates/index.d.ts", "import": "./dist/updates/index.mjs", - "require": "./dist/updates/index.mjs", - "types": "./types/updates/index.d.ts" + "require": "./dist/updates/index.mjs" }, "./fs": { + "types": "./types/fs/index.d.ts", "import": "./dist/fs/index.mjs", - "require": "./dist/fs/index.mjs", - "types": "./types/fs/index.d.ts" + "require": "./dist/fs/index.mjs" }, "./util-types": { + "types": "./types/util-types/index.d.ts", "import": "./dist/util-types/index.mjs", - "require": "./dist/util-types/index.mjs", - "types": "./types/util-types/index.d.ts" + "require": "./dist/util-types/index.mjs" }, "./primitives": { + "types": "./types/primitives/index.d.ts", "import": "./dist/primitives/index.mjs", - "require": "./dist/primitives/index.mjs", - "types": "./types/primitives/index.d.ts" + "require": "./dist/primitives/index.mjs" + }, + "./package-manager": { + "types": "./types/package-manager/index.d.ts", + "import": "./dist/package-manager/index.mjs", + "require": "./dist/package-manager/index.mjs" + }, + "./ui": { + "types": "./types/ui/index.d.ts", + "import": "./dist/ui/index.mjs", + "require": "./dist/ui/index.mjs" } }, "scripts": { "test": "vitest run", - "build": "tsc && tsup && jiti ./scripts/postBuild.ts" + "build": "tsc && tsup" }, "devDependencies": { - "@chialab/esbuild-plugin-meta-url": "^0.17.7", - "@types/node": "20.4.8", - "jiti": "^1.19.1", - "tsup": "^7.2.0", - "typescript": "^5.1.6", - "vitest": "^0.33.0" + "magicast": "^0.5.3" }, "publishConfig": { "access": "public" }, "dependencies": { - "@clack/core": "0.3.2", - "@clack/prompts": "0.6.3", - "@solid-cli/reactivity": "workspace:*", - "@swc/core": "^1.3.76", - "cmd-ts": "^0.12.1", - "detect-package-manager": "^2.0.1", - "execa": "^7.2.0", - "picocolors": "^1.0.0", - "smol-toml": "^1.1.1" + "@clack/core": "1.4.3", + "@clack/prompts": "1.7.0", + "execa": "^10.0.0", + "picocolors": "^1.1.1" } } diff --git a/packages/utils/scripts/postBuild.ts b/packages/utils/scripts/postBuild.ts deleted file mode 100644 index c67b979..0000000 --- a/packages/utils/scripts/postBuild.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { readdir, copyFile, unlink } from "fs/promises"; -const main = async () => { - const files = await readdir("./dist"); - const name = files.find((f) => f.startsWith("swc_plugin_solid_cli")); - if (!name) throw new Error("No file found"); - await copyFile(`./dist/${name}`, `./dist/transform/${name}`); - await unlink(`./dist/${name}`); -}; -main().catch(console.error); diff --git a/packages/utils/src/cmd-ts/index.ts b/packages/utils/src/cmd-ts/index.ts deleted file mode 100644 index 1896305..0000000 --- a/packages/utils/src/cmd-ts/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./oneOf"; diff --git a/packages/utils/src/cmd-ts/oneOf.ts b/packages/utils/src/cmd-ts/oneOf.ts deleted file mode 100644 index 79fabcb..0000000 --- a/packages/utils/src/cmd-ts/oneOf.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Type } from "cmd-ts"; -import { inspect } from "util"; - -export function oneOf(literals: readonly T[], case_sensitive: boolean = false): Type { - const examples = literals.map((x) => inspect(x)).join(", "); - return { - async from(str) { - const value = literals.find((x) => (case_sensitive ? x === str : x.toLowerCase() === str.toLowerCase())); - if (!value) { - throw new Error(`Invalid value '${str}'. Expected one of: ${examples}`); - } - return value; - }, - description: `One of ${examples}`, - }; -} diff --git a/packages/utils/src/config/index.ts b/packages/utils/src/config/index.ts deleted file mode 100644 index b0f2488..0000000 --- a/packages/utils/src/config/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { readFile, writeFile } from "fs/promises"; -import { homedir } from "../paths"; -import { join } from "path"; -import { parse, stringify } from "smol-toml"; -import { createSignal } from "@solid-cli/reactivity"; -export const PossibleFields = ["lang"] as const; -const defaultConfig = { - lang: Intl.DateTimeFormat().resolvedOptions().locale.split("-")[0], -} as Record; -type Field = (typeof PossibleFields)[number]; -const configPath: string = join(homedir(), "/solid-cli.config.toml"); -export const [config, setConfig] = createSignal(defaultConfig); -export const readConfig = async () => { - try { - const file = await readFile(configPath, "utf-8"); - setConfig(parse(file)); - } catch { - await writeConfig(); - } -}; -export const writeConfig = async () => { - await writeFile(configPath, stringify(config())); -}; -export const setField = async (field: Field, value: any) => { - if (!(field in defaultConfig)) { - throw new Error(`Field ${field} does not exist`); - } - setConfig((prev) => ({ ...prev, [field]: value })); - await writeConfig(); -}; -export const getField = (field: Field) => { - if (!config()[field] && defaultConfig[field]) setField(field, defaultConfig[field]); - return config()[field]; -}; diff --git a/packages/utils/src/fs/index.ts b/packages/utils/src/fs/index.ts index 8f992b3..2f064d0 100644 --- a/packages/utils/src/fs/index.ts +++ b/packages/utils/src/fs/index.ts @@ -1,21 +1,24 @@ -import { readFile as readFile1 } from "fs/promises"; -import { queueUpdate, readQueuedFile, unqueueUpdate } from "../updates"; -export const writeFile = (path: string, data: string, checked: boolean = false) => { - // First, unqueue all previous updates to this file - unqueueUpdate(path, "file"); - queueUpdate({ type: "file", name: path, contents: data, checked }); -}; -export const readFile = async (path: string) => { - const queued = readQueuedFile(path); - if (queued) return queued.contents; - return await readFile1(path); -}; +import { readFile, writeFile } from "fs/promises"; +// import { queueUpdate, readQueuedFile, unqueueUpdate } from "../updates"; +// export const writeFile = (path: string, data: string, checked: boolean = false) => { +// // First, unqueue all previous updates to this file +// unqueueUpdate(path, "file"); +// queueUpdate({ type: "file", name: path, contents: data, checked }); +// }; +// export const readFile = async (path: string) => { +// const queued = readQueuedFile(path); +// if (queued) return queued.contents; +// return await readFile1(path); +// }; export const readFileToString = async (path: string) => { return (await readFile(path)).toString(); }; +// export const writeChecked = async (path: string, contents: string) => { +// unqueueUpdate(path, "file"); +// queueUpdate({ type: "file", name: path, contents, checked: true }); +// }; export const writeChecked = async (path: string, contents: string) => { - unqueueUpdate(path, "file"); - queueUpdate({ type: "file", name: path, contents, checked: true }); + await writeFile(path, contents); }; export const insertAtBeginning = async (path: string, text: string) => { const contents = await readFileToString(path); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 1310c11..b8f0dc1 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,5 +1,2 @@ -export * from "./translations"; -export * from "./config"; export * from "./start"; export * from "./open"; -export * from "./cmd-ts"; diff --git a/packages/utils/src/open/index.ts b/packages/utils/src/open/index.ts index 52b7814..b946650 100644 --- a/packages/utils/src/open/index.ts +++ b/packages/utils/src/open/index.ts @@ -1,5 +1,4 @@ -// Taken verbatim from https://github.com/withastro/astro/blob/main/packages/astro/src/cli/open.ts#L29 -import type { ExecaChildProcess } from "execa"; +// Taken verbatim from https://github.com/withastro/astro/blob/main/packages/astro/src/cli/docs/open.ts import { execa } from "execa"; /** @@ -27,7 +26,7 @@ const getPlatformSpecificCommand = (): [string] | [string, string[]] => { } }; -export async function openInBrowser(url: string): Promise { +export async function openInBrowser(url: string) { const [command, args = []] = getPlatformSpecificCommand(); return execa(command, [...args, encodeURI(url)]); } diff --git a/packages/utils/src/package-manager/index.ts b/packages/utils/src/package-manager/index.ts new file mode 100644 index 0000000..d7c6230 --- /dev/null +++ b/packages/utils/src/package-manager/index.ts @@ -0,0 +1,77 @@ +// Taken almost verbatim from https://github.com/solidjs/solid-start/blob/f351f42ba8566cbfa72b483dd63d4debcb386230/packages/create-solid/cli/index.js#L62C1-L80C2 +export const detectPackageManager = (): PackageManager => { + // This environment variable is set by npm and yarn but pnpm seems less consistent + const userAgent = process.env.npm_config_user_agent || ""; + + switch (true) { + case userAgent.startsWith("yarn"): + return { + name: "yarn", + runner: "npx", + installCommand: "add", + runScriptCommand(s) { + return `run ${s}`; + }, + }; + case userAgent.startsWith("pnpm"): + return { + name: "pnpm", + runner: "pnpx", + installCommand: "add", + runScriptCommand(s) { + return s; + }, + }; + case userAgent.startsWith("bun"): + return { + name: "bun", + runner: "bunx", + installCommand: "add", + runScriptCommand(s) { + return s; + }, + }; + case userAgent.startsWith("deno"): + return { + name: "deno", + runner: "deno run", + installCommand: "add", + runScriptCommand(s) { + return `task ${s}`; + }, + }; + case userAgent.startsWith("nub"): + return { + name: "nub", + runner: "nubx", + installCommand: "add", + runScriptCommand(s) { + return `run ${s}`; + }, + }; + default: + return { + name: "npm", + runner: "npx", + installCommand: "install", + runScriptCommand(s) { + return `run ${s}`; + }, + }; + } +}; + +export const getInstallCommand = (packageManager: PackageManager): string => { + return packageManager.installCommand; +}; + +export const getRunnerCommand = (packageManager: PackageManager) => { + return packageManager.runner; +}; + +export type PackageManager = { + name: string; + runner: string; + installCommand: string; + runScriptCommand: (script: string) => string; +}; diff --git a/packages/utils/src/paths/index.ts b/packages/utils/src/paths/index.ts index 0f82d83..5a71876 100644 --- a/packages/utils/src/paths/index.ts +++ b/packages/utils/src/paths/index.ts @@ -1,4 +1,3 @@ -import { PM } from "detect-package-manager"; import { homedir as oshomedir, tmpdir as ostmpdir } from "os"; export const homedir = () => { @@ -8,13 +7,3 @@ export const homedir = () => { export const tmpdir = () => { return process.env.XDG_CACHE_HOME ?? ostmpdir(); }; -export const getRunner = (pM: PM) => { - switch (pM) { - case "npm": - return "npx"; - case "yarn": - return "npx"; - case "pnpm": - return "pnpx"; - } -}; diff --git a/packages/utils/src/primitives/index.ts b/packages/utils/src/primitives/index.ts deleted file mode 100644 index 571269a..0000000 --- a/packages/utils/src/primitives/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { tmpdir } from "../paths"; -import type { Option } from "../util-types"; -import { createSignal } from "@solid-cli/reactivity"; -import { readFile, writeFile } from "fs/promises"; -export const [primitives, setPrimitives] = createSignal([]); -const fetchPrimitives = async () => { - const result = await ( - await fetch("https://registry.npmjs.com/-/v1/search?text=scope:solid-primitives&size=250.json") - ).json(); - - const primitives: Option[] = result.objects.map((v: any) => { - const opt: Option = { - label: v.package.name.split("/")[1], - value: v.package.name, - group: "primitives", - }; - - return opt; - }); - - return primitives; -}; -type Cache = { - timeCached: string; - primitives: Option[]; -}; -const cache = async (primitives: Option[]) => { - const tmp = tmpdir(); - const t = new Date(); - const cache: Cache = { - timeCached: t.toUTCString(), - primitives, - }; - await writeFile(`${tmp}/primitives.json`, JSON.stringify(cache)); -}; -const daysSinceEpoch = (seconds: number) => { - return seconds / (60 * 60 * 24); -}; -const getCached = async () => { - const tmp = tmpdir(); - const cached = JSON.parse((await readFile(`${tmp}/primitives.json`)).toString()) as Cache; - const timeCached = new Date(Date.parse(cached.timeCached)); - const currentTime = new Date(); - if (daysSinceEpoch(currentTime.getTime() - timeCached.getTime()) > 1) { - throw new Error("Stale cache"); - } - return cached.primitives as Option[]; -}; -export const refetchPrimitives = async () => { - const p = await fetchPrimitives(); - setPrimitives(p); - await cache(p); -}; -export const loadPrimitives = async () => { - try { - const cached = await getCached(); - setPrimitives(cached); - } catch (e) { - // Cannot fetch from cache, must fetch - await refetchPrimitives(); - } -}; diff --git a/packages/utils/src/start/add_api.ts b/packages/utils/src/start/add_api.ts index 2602166..98ec483 100644 --- a/packages/utils/src/start/add_api.ts +++ b/packages/utils/src/start/add_api.ts @@ -3,8 +3,12 @@ import { writeChecked } from "../fs"; export const createApi = async (path: string, name?: string) => { const path_parts = path.split("/"); + path_parts.unshift("src", "routes", "api"); + await mkdir(path_parts.join("/"), { recursive: true }); - path_parts.push(name ? `${name}.ts` : "hello.ts"); + + path_parts.push(name ? `${name}.ts` : "index.ts"); + await writeChecked(path_parts.join("/"), ""); }; diff --git a/packages/utils/src/start/add_data.ts b/packages/utils/src/start/add_data.ts index eca4aa7..ea2dc01 100644 --- a/packages/utils/src/start/add_data.ts +++ b/packages/utils/src/start/add_data.ts @@ -3,8 +3,12 @@ import { writeChecked } from "../fs"; export const createData = async (path: string, name?: string) => { const path_parts = path.split("/"); + path_parts.unshift("src", "routes"); + await mkdir(path_parts.join("/"), { recursive: true }); + path_parts.push(name ? `${name}.data.ts` : "Index.data.ts"); + await writeChecked(path_parts.join("/"), ""); }; diff --git a/packages/utils/src/start/add_route.ts b/packages/utils/src/start/add_route.ts index fecb3b4..93a6461 100644 --- a/packages/utils/src/start/add_route.ts +++ b/packages/utils/src/start/add_route.ts @@ -1,13 +1,19 @@ import { mkdir } from "fs/promises"; import { writeChecked } from "../fs"; + const default_file = `export default function Route() { return <>; } `; + export const createRoute = async (path: string, name?: string) => { const path_parts = path.split("/"); + path_parts.unshift("src", "routes"); + await mkdir(path_parts.join("/"), { recursive: true }); + path_parts.push(name ? `(${name}).tsx` : "index.tsx"); + await writeChecked(path_parts.join("/"), default_file); }; diff --git a/packages/utils/src/start/index.ts b/packages/utils/src/start/index.ts index ae286b1..30e7de5 100644 --- a/packages/utils/src/start/index.ts +++ b/packages/utils/src/start/index.ts @@ -8,7 +8,7 @@ export const isSolidStart = async () => { const allDeps = deps.concat(devDeps); for (let i = 0; i < allDeps.length; i++) { const dep = allDeps[i]; - if (dep === "solid-start") return true; + if (dep === "@solidjs/start") return true; } return false; }; diff --git a/packages/utils/src/transform/index.ts b/packages/utils/src/transform/index.ts index e8c24fd..7d7ff72 100644 --- a/packages/utils/src/transform/index.ts +++ b/packages/utils/src/transform/index.ts @@ -1,39 +1,37 @@ -import { transform } from "@swc/core"; -import { fileURLToPath } from "url"; +import { generateCode, parseModule } from "magicast"; +import { addVitePlugin } from "magicast/helpers"; +import { addPlugins } from "./parse"; + export type Config = { + type: "app" | "vite"; name: string; contents: string; }; + +// TODO: Handle case when vite config is a function + export const transformPlugins = async ( new_plugins: PluginOptions[], config: Config, - force_transform = false, - merge_configs = false, - wasm_path = fileURLToPath(new URL("../../../swc-plugin-solid-cli/output/swc_plugin_solid_cli.wasm", import.meta.url)), + _force_transform = false, + _merge_configs = false, ) => { - const res = await transform(config.contents, { - filename: config.name, - jsc: { - parser: { - syntax: "typescript", - tsx: false, - }, - target: "es2022", - experimental: { - plugins: [ - [ - wasm_path, - { - additionalPlugins: new_plugins, - forceTransform: force_transform, - mergeConfigs: merge_configs, - }, - ], - ], - }, - }, - }); - return res.code; + const mod = parseModule(config.contents, { trailingComma: false, flowObjectCommas: false }); + + if (config.type === "vite") { + for (const plugin of new_plugins) { + addVitePlugin(mod, { + imported: plugin.isDefault ? "default" : plugin.importName, + from: plugin.importSource, + constructor: plugin.importName, + options: plugin.options, + }); + } + + return generateCode(mod).code; + } + + return addPlugins(mod, new_plugins).code; }; // All the integrations/packages that we support // export const supported = ["unocss", "vitepwa", "solid-devtools"] as const; diff --git a/packages/utils/src/transform/parse.ts b/packages/utils/src/transform/parse.ts new file mode 100644 index 0000000..6d23dd7 --- /dev/null +++ b/packages/utils/src/transform/parse.ts @@ -0,0 +1,125 @@ +import { ASTNode, ProxifiedModule, generateCode } from "magicast"; +import { PluginOptions } from "."; + +type ASTNodeFull = ASTNode & { + key?: ASTNodeFull; + value?: ASTNodeFull; + name?: string; + body?: ASTNodeFull[] | ASTNodeFull; +}; + +type ArrayExpression = Extract; + +const isNodeFunction = (node: ASTNodeFull) => node.type === "BlockStatement" || node.type === "ArrowFunctionExpression"; + +const getReturnStatement = (node: ASTNode | undefined) => { + if (!node) return; + if (node.type === "BlockStatement" && node.body) { + let returnStatement; + + for (const leaf of node.body) { + if (leaf.type === "ReturnStatement") { + returnStatement = leaf; + break; + } + } + + return returnStatement; + } +}; + +const findOrCreatePluginsProperty = (node: ASTNodeFull) => { + if (node.type === "ObjectExpression" && node.properties) { + for (const leaf of node.properties) { + if ( + leaf.type === "ObjectProperty" && + leaf.key.loc?.identifierName === "plugins" && + leaf.value.type === "ArrayExpression" + ) { + return leaf.value; + } + } + + const value: ArrayExpression = { + type: "ArrayExpression", + elements: [], + }; + + node.properties.push({ + type: "ObjectProperty", + key: { + type: "Identifier", + name: "plugins", + }, + computed: false, + shorthand: false, + value, + }); + + return value; + } +}; + +const findPlugins = (mod: ProxifiedModule): ArrayExpression | undefined => { + const props: ASTNodeFull[] = mod.exports.default.$args[0].$ast.properties; + + let viteFound = false; + for (const prop of props) { + const key = prop.key?.name; + if (key === "vite") { + const isProperty = prop.type === "ObjectProperty"; + const isMethod = prop.type === "ObjectMethod"; + + if (isMethod || (isProperty && isNodeFunction(prop.value))) { + const returnValue = getReturnStatement( + isProperty && prop.value.type === "ArrowFunctionExpression" && prop.value.body.type === "BlockStatement" + ? prop.value.body + : isMethod && prop.body.body + ? prop.body + : undefined, + ); + + if (!returnValue) break; + + const arg = returnValue.argument; + if (arg?.type === "ObjectExpression") { + return findOrCreatePluginsProperty(arg); + } + } else if (isProperty && prop.value.type === "ObjectExpression") { + return findOrCreatePluginsProperty(prop.value); + } + + viteFound = true; + + break; + } + } + + if (!viteFound) { + props.push({ + type: "ObjectProperty", + computed: false, + shorthand: false, + value: { type: "ObjectExpression", properties: [] }, + key: { name: "vite", type: "Identifier" }, + }); + return findPlugins(mod); + } +}; + +export const addPlugins = (mod: ProxifiedModule, plugins: PluginOptions[]) => { + // const mod = parseModule(config.contents, { trailingComma: false, flowObjectCommas: false }); + + const current = findPlugins(mod); + + for (const plugin of plugins) { + mod.imports.$add({ + from: plugin.importSource, + imported: plugin.isDefault ? "default" : plugin.importName, + local: plugin.importName, + }); + current?.elements.push(`${plugin.importName}({})` as any); + } + + return generateCode(mod); +}; diff --git a/packages/utils/src/translations/index.ts b/packages/utils/src/translations/index.ts deleted file mode 100644 index 77ffa7b..0000000 --- a/packages/utils/src/translations/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./translations"; diff --git a/packages/utils/src/translations/translations.ts b/packages/utils/src/translations/translations.ts deleted file mode 100644 index 59a643e..0000000 --- a/packages/utils/src/translations/translations.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { createEffect, createMemo, createSignal } from "@solid-cli/reactivity"; -import { SL, SupportedLanguages, TemplateFunction, Translations } from "./types"; -import { on } from "@solid-cli/reactivity"; -import { log } from "@clack/prompts"; -import { config, setConfig } from "../config"; -export const [locale, setLocale] = createSignal(null); -export const validatedLocale = createMemo(() => { - const l = locale(); - if (!l) return "en"; - const supported = !!SupportedLanguages.find((lang) => lang.toLowerCase() === l.toLowerCase()); - if (!supported) { - log.warn(`Unsupported language: ${l}. Defaulting to English.`); - } - return supported ? l : "en"; -}); -createEffect( - on( - validatedLocale, - (l) => { - setConfig({ ...config(), lang: l }); - }, - { defer: true }, - ), -); -const TRANSLATIONS = { - AUTOCOMPLETE_SELECTED: { - en: "Selected Packages", - es: "Paquetes seleccionados", - fr: "Forfaits sélectionnés", - ja: "選択されたパッケージ", - }, - AUTOCOMPLETE_NO_RESULTS: { - en: "No results", - es: "No hay resultados", - fr: "Aucun résultat", - ja: "結果がありません", - }, - SELECT_START_ACTION: { - en: "Select a SolidStart specific action", - es: "Seleccione una acción específica de SolidStart", - fr: "Sélectionnez une action spécifique à SolidStart", - ja: "SolidStart 固有のアクションを選択します", - }, - SELECT_ACTION: { - en: "Select an action", - es: "Seleccione una acción", - fr: "Sélectionnez une action", - ja: "アクションを選択してください", - }, - ACTION_ADD: { - en: "Add an integration", - es: "Añadir una integración", - fr: "Ajouter une intégration", - ja: "統合を追加する", - }, - ACTION_NEW: { - en: "Create new project", - es: "Crear nuevo proyecto", - fr: "Créer un nouveau projet", - ja: "新しいプロジェクトを作成する", - }, - ACTION_START: { - en: "A start specific action", - es: "Una acción específica de inicio", - fr: "Une action spécifique de démarrage", - ja: "特定のアクションを開始する", - }, - NEW_VARIATION_DESC: { - en: "The variation to create, for example `bare`", - es: "La variación a crear, por ejemplo `bare`", - fr: "La variante à créer, par exemple `bare`", - ja: "作成するバリエーション、たとえば「bare」", - }, - NEW_NAME_DESC: { - en: "The name of the folder to create", - es: "El nombre de la carpeta a crear.", - fr: "Le nom du dossier à créer", - ja: "作成するフォルダーの名前", - }, - IS_START_PROJECT: { - en: "Is this a Solid-Start project?", - es: "¿Es este un proyecto de Solid-Start?", - fr: "Est-ce un projet Solid-Start ?", - ja: "これはソリッドスタートプロジェクトですか?", - }, - START_MODE: { - en: "Mode", - es: "Modo", - fr: "Mode", - ja: "モード", - }, - START_MODE_HINT: { - en: "Changes the mode of the solid app (SSR, CSR, SSG)", - es: "Cambia el modo de la aplicación sólida (SSR, CSR, SSG)", - fr: "Modifie le mode de l'application solide (SSR, CSR, SSG)", - ja: "ソリッドアプリのモードを変更します(SSR、CSR、SSG)", - }, - START_MODE_DESC: { - en: "The rendering mode for solid to build for, and use.", - es: "El modo de renderizado de solid para construir y usar.", - fr: "Le mode de rendu du solid pour lequel construire et utiliser.", - ja: "solid がビルドして使用するレンダリング モード。", - }, - START_ROUTE: { - en: "Route", - es: "Ruta", - fr: "Itinéraire", - ja: "ルート", - }, - START_ROUTE_HINT: { - en: "Allows you to create a new file system route", - es: "Le permite crear una nueva ruta de sistema de archivos", - fr: "Vous permet de créer une nouvelle route de système de fichiers", - ja: "新しいファイル システム ルートを作成できます。", - }, - START_ROUTE_DESC: { - en: "The name of `.tsx` file to be generated", - es: "El nombre del archivo `.tsx` que se generará", - fr: "Le nom du fichier `.tsx` à générer", - ja: "生成される `.tsx` ファイルの名前", - }, - START_DATA: { - en: "Data File", - es: "Archivo de datos", - fr: "Fichier de données", - ja: "データファイル", - }, - START_DATA_HINT: { - en: "Allows you to create a new data file within a route", - es: "Le permite crear un nuevo archivo de datos dentro de una ruta", - fr: "Permet de créer un nouveau fichier de données au sein d'un itinéraire", - ja: "ルート内に新しいデータ ファイルを作成できます。", - }, - START_DATA_DESC: { - en: "The name of the `.data.ts` file to be generated.", - es: "El nombre del archivo `.data.ts` que se generará.", - fr: "Le nom du fichier `.data.ts` à générer.", - ja: "生成される `.data.ts` ファイルの名前。", - }, - START_ADAPTER: { - en: "Adapter", - es: "Adaptador", - fr: "Adaptateur", - ja: "アダプタ", - }, - START_ADAPTER_HINT: { - en: "Allows for setting and updating the adapter used to build a start app", - es: "Permite configurar y actualizar el adaptador utilizado para crear una aplicación de inicio", - fr: "Permet de définir et de mettre à jour l'adaptateur utilisé pour créer une application de démarrage", - ja: "スタートアプリの構築に使用されるアダプターの設定と更新が可能", - }, - START_ADAPTER_DISPLAYNAME: { - en: "Adapter name", - es: "Nombre del adaptador", - fr: "Nom de l'adaptateur", - ja: "アダプター名", - }, - START_API: { - en: "API", - es: "API", - fr: "API", - ja: "API", - }, - START_API_HINT: { - en: "Create an API route", - es: "Crear una ruta API", - fr: "Créer une route d'API", - ja: "APIルートを作成する", - }, - START_API_DISPLAYNAME: { - en: "API file name", - es: "Nombre de archivo API", - fr: "Nom du fichier API", - ja: "APIファイル名", - }, - CANCELED: { - en: "Canceled", - es: "Cancelado", - fr: "Annulé", - ja: "キャンセル", - }, - CONFIRM_INSTALL: (n: number) => ({ - en: `Install the following (${n}) packages?`, - es: `Instale lo siguiente (${n}) paquetes?`, - fr: `Installez les éléments suivants (${n}) paquets?`, - ja: `以下をインストールします (${n}) パッケージ?`, - }), - NEW_START: { - en: "Which template would you like to use?", - es: "¿Qué plantilla te gustaría usar?", - fr: "Quel modèle souhaitez-vous utiliser ?", - ja: "どのテンプレートを使いたいですか?", - }, - ADD_DESC: { - en: "Can add and install integrations: `solid add unocss`.", - es: "Puede agregar e instalar integraciones: `solid add unocss`.", - fr: "Peut ajouter et installer des intégrations : `solid add unocss`.", - ja: "統合を追加およびインストールできます: `solid add unocss`。", - }, - NEW_DESC: { - en: "Creates a new solid project", - es: "Crea un nuevo proyecto sólido.", - fr: "Crée un nouveau projet solide", - ja: "新しいソリッドプロジェクトを作成します", - }, - ADD_PACKAGES: { - en: "Add packages", - es: "Agregar paquetes", - fr: "Ajouter des forfaits", - ja: "パッケージの追加", - }, - NOTHING_SELECTED: { - en: "Nothing selected", - es: "Nada seleccionado", - fr: "Rien de sélectionné", - ja: "何も選択されていません", - }, - YES: { - en: "Yes", - es: "Sí", - fr: "Oui", - ja: "はい", - }, - NO: { - en: "No", - es: "No", - fr: "Non", - ja: "いいえ", - }, - YES_FORCE: { - en: "Yes (force)", - es: "Sí (fuerza)", - fr: "Oui (forcer)", - ja: "はい(強制)", - }, - PROJECT_CREATED: { - en: "Project successfully created! 🎉", - es: "¡Proyecto creado con éxito! 🎉", - fr: "Projet créé avec succès! 🎉", - ja: "プロジェクトが正常に作成されました。 🎉", - }, - CREATING_PROJECT: { - en: "Creating project", - es: "Creando proyecto", - fr: "Création de projet", - ja: "プロジェクトの作成", - }, - TEMPLATE: { - en: "Template", - es: "Plantilla", - fr: "Modèle", - ja: "レンプレート", - }, - GET_STARTED: { - en: "To get started, run:", - es: "Para empezar, ejecuta:", - fr: "Pour commencer, exécutez :", - ja: "開始するには、次を実行します。", - }, - PROJECT_NAME: { - en: "Project Name", - es: "Nombre del proyecto", - fr: "nom du projet", - ja: "プロジェクト名", - }, - LOADING_PRIMITIVES: { - en: "Loading primitives", - es: "Cargando primitivas", - fr: "Chargement des primitives", - ja: "プリミティブのロード", - }, - PRIMITIVES_LOADED: { - en: "Primitives loaded", - es: "Primitivos cargados", - fr: "Primitives chargées", - ja: "プリミティブがロードされました", - }, - INSTALLING_VIA: (pm: string) => ({ - en: `Installing packages via ${pm}`, - es: `Instalación de paquetes a través de ${pm}`, - fr: `Installation de packages via ${pm}`, - ja: `経由でパッケージをインストールする ${pm}`, - }), - CONFIG_UPDATED: { - en: "Config updated", - es: "Configuración actualizada", - fr: "Configuration mise à jour", - ja: "構成が更新されました", - }, - PACKAGES_INSTALLED: { - en: "Packages installed", - es: "Paquetes instalados", - fr: "Paquets installés", - ja: "インストールされたパッケージ", - }, - POST_INSTALL: { - en: "Running post install steps", - es: "Ejecución de pasos posteriores a la instalación", - fr: "Exécution des étapes de post-installation", - ja: "インストール後の手順の実行", - }, - POST_INSTALL_COMPLETE: { - en: "Post install complete", - es: "Post instalación completa", - fr: "Post-installation terminée", - ja: "インストール後の完了", - }, - NO_SUPPORT: (n: string) => ({ - en: `Can't automatically configure ${n}: we don't support it.`, - es: `No se puede configurar automáticamente ${n}: no lo admitimos`, - fr: `Impossible de configurer automatiquement ${n}: nous ne le prenons pas en charge`, - ja: `${n} を自動的に構成できません: サポートされていません`, - }), - OPENING_IN_BROWSER: (s: string) => ({ - en: `Opening ${s} in browser`, - es: `Abriendo ${s} en el navegador`, - fr: `Ouverture de ${s} dans le navigateur`, - ja: `ブラウザで ${s} を開く`, - }), - OPENED_IN_BROWSER: { - en: "Successfully Opened in Browser", - es: "Abierto con éxito en el navegador", - fr: "Ouvert avec succès dans le navigateur", - ja: "ブラウザで正常に開きました", - }, -} as const satisfies Translations; - -export const t = new Proxy(TRANSLATIONS, { - get(target, p, _receiver) { - const l = validatedLocale() as SL; - let text = target[p as keyof typeof target]; - - if (typeof text === "function") { - return new Proxy(text, { - apply(target, thisArg, argArray) { - const newT = Reflect.apply(target, thisArg, argArray); - if (l in newT) { - return newT[l]; - } - return newT["en"]; - }, - }); - } - - if (l in text) { - return text[l as keyof typeof text]; - } - return text["en"]; - }, -}) as unknown as { - [k in keyof typeof TRANSLATIONS]: (typeof TRANSLATIONS)[k] extends TemplateFunction - ? (...args: Parameters<(typeof TRANSLATIONS)[k]>) => string - : string; -}; diff --git a/packages/utils/src/translations/types.ts b/packages/utils/src/translations/types.ts deleted file mode 100644 index 26eba3b..0000000 --- a/packages/utils/src/translations/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const SupportedLanguages = ["en", "fr", "es", "de", "ru", "zh", "ja", "ko"] as const; -export type SL = (typeof SupportedLanguages)[number]; - -export type LanguageTranslations = Partial>; -export type TemplateFunction = (...args: any[]) => LanguageTranslations; -export type Translations = Record; diff --git a/packages/utils/src/ui/cancelable.ts b/packages/utils/src/ui/cancelable.ts new file mode 100644 index 0000000..35f0255 --- /dev/null +++ b/packages/utils/src/ui/cancelable.ts @@ -0,0 +1,14 @@ +import { log } from "@clack/prompts"; +export const cancelable = async ( + prompt: Promise, + cancelMessage: string = "Canceled", +): Promise => { + const value = await prompt; + + if (typeof value === "symbol") { + log.warn(cancelMessage); + process.exit(0); + } + + return value; +}; diff --git a/packages/utils/src/ui/index.ts b/packages/utils/src/ui/index.ts new file mode 100644 index 0000000..a41de7c --- /dev/null +++ b/packages/utils/src/ui/index.ts @@ -0,0 +1,3 @@ +import { cancelable } from "./cancelable"; +import { spinnerify } from "./spinnerify"; +export { cancelable, spinnerify }; diff --git a/packages/ui/src/components/spinnerify/index.ts b/packages/utils/src/ui/spinnerify.ts similarity index 100% rename from packages/ui/src/components/spinnerify/index.ts rename to packages/utils/src/ui/spinnerify.ts diff --git a/packages/utils/src/updates/index.ts b/packages/utils/src/updates/index.ts index 4bf3b78..65e3854 100644 --- a/packages/utils/src/updates/index.ts +++ b/packages/utils/src/updates/index.ts @@ -1,38 +1,29 @@ import { open, writeFile } from "fs/promises"; import { $ } from "execa"; -import { detect, type PM } from "detect-package-manager"; +import { detectPackageManager, getInstallCommand } from "../package-manager"; +declare global { + var UPDATESQUEUE: Update[] | undefined; +} // Batch all updates here, so we can confirm with the user then flush -// @ts-ignore export const UPDATESQUEUE: Update[] = globalThis.UPDATESQUEUE ?? []; -// @ts-ignore globalThis.UPDATESQUEUE = UPDATESQUEUE; -type PackageUpdate = { type: "package"; name: string }; +type PackageUpdate = { type: "package"; name: string; dev: boolean }; type CommandUpdate = { type: "command"; name: string }; type FileUpdate = { type: "file"; name: string; contents: string; checked: boolean }; -// Don't bother explicitely handling plugin updates, since they're just a file update +// Don't bother explicitly handling plugin updates, since they're just a file update export type Update = PackageUpdate | CommandUpdate | FileUpdate; type UpdateSummary = { - packageUpdates: string[]; + packageUpdates: PackageUpdate[]; commandUpdates: string[]; fileUpdates: string[]; }; -const installCommand = (pM: PM): string => { - switch (pM) { - case "npm": - return "install"; - case "yarn": - return "add"; - case "pnpm": - return "add"; - } -}; export const clearQueue = () => { UPDATESQUEUE.length = 0; }; export const summarizeUpdates = (): UpdateSummary => { const fileUpdates = UPDATESQUEUE.filter((u) => u.type === "file").map((s) => s.name); - const packageUpdates = UPDATESQUEUE.filter((u) => u.type === "package").map((s) => s.name); + const packageUpdates = UPDATESQUEUE.filter((u) => u.type === "package") as PackageUpdate[]; const commandUpdates = UPDATESQUEUE.filter((u) => u.type === "command").map((s) => s.name); return { packageUpdates, commandUpdates, fileUpdates }; }; @@ -54,7 +45,7 @@ export const readQueuedFile = (name: string) => { }; export const flushFileUpdates = async () => { const fileUpdates = UPDATESQUEUE.filter((u) => u.type === "file") as FileUpdate[]; - + for (const update of fileUpdates) { if (!update.checked) { await writeFile(update.name, update.contents); @@ -70,10 +61,14 @@ export const flushFileUpdates = async () => { }; export const flushPackageUpdates = async () => { const packageUpdates = UPDATESQUEUE.filter((u) => u.type === "package") as PackageUpdate[]; - const pM = await detect(); - const instlCmd = installCommand(pM); + const pM = detectPackageManager(); + const instlCmd = getInstallCommand(pM); for (const update of packageUpdates) { - await $`${pM} ${instlCmd} ${update.name}`; + if (update.dev) { + await $`${pM.name} ${instlCmd} -D ${update.name}`; + } else { + await $`${pM.name} ${instlCmd} ${update.name}`; + } } }; export const flushCommandUpdates = async () => { diff --git a/packages/utils/src/util-types/index.ts b/packages/utils/src/util-types/index.ts deleted file mode 100644 index 45e9400..0000000 --- a/packages/utils/src/util-types/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type Option = { - value: any; - label?: string; - hint?: string; - group?: string; -}; diff --git a/packages/utils/tests/plugin_transforms.test.ts b/packages/utils/tests/plugin_transforms.test.ts index 55459f1..c065043 100644 --- a/packages/utils/tests/plugin_transforms.test.ts +++ b/packages/utils/tests/plugin_transforms.test.ts @@ -3,6 +3,45 @@ import { Config, transformPlugins } from "../src/transform"; import { PluginOptions } from "../src/transform"; const removeWhitespace = (str: string) => str.replace(/\s/g, ""); + +const makeExampleConfig = ( + plugins: string[], + imports: string[] = [], + functionVersion: "arrow" | "method" | "none" = "none", +) => { + const pluginsStr = `plugins: [${plugins.join(", ")}]`; + const viteOptionStr = + functionVersion === "arrow" + ? // @prettier-ignore + ` + vite: (options) => { + return {${pluginsStr}}; + }` + : functionVersion === "method" + ? // @prettier-ignore + ` + vite(options) { + return {${pluginsStr}}; + }` + : // @prettier-ignore + ` + vite: { + ${pluginsStr} + }`; + + const result = + // @prettier-ignore + `${imports.join("\n")} + import { defineConfig } from "@solidjs/start/config"; + + // Simulates an app config + export default defineConfig({ + ${viteOptionStr} + });`; + + return result; +}; + const examplePlugin: PluginOptions = { importName: "examplePlugin", importSource: "example", @@ -10,25 +49,88 @@ const examplePlugin: PluginOptions = { options: {}, }; describe("transformPlugins", () => { - test("Config is updated properly", async () => { + test("SPA config is updated properly", async () => { const config: Config = { + type: "vite", name: "vite.config.ts", - contents: `import solid from "solid-start/vite"; - // Simulates a vite config - export default defineConfig({ - plugins: [solid()], - }); - `, + contents: ` + import { defineConfig } from "vite"; + + // Simulates a vite config + export default defineConfig({ +plugins: [] + }); + `, + }; + const expected = ` + import examplePlugin from "example"; + import { defineConfig } from "vite"; + + // Simulates a vite config + export default defineConfig({ + plugins: [examplePlugin({})] + }); + `; + + const result = await transformPlugins([examplePlugin], config); + + expect(removeWhitespace(result)).toBe(removeWhitespace(expected)); + }); + test("No vite property defined config is updated properly", async () => { + const config: Config = { + type: "app", + name: "app.config.ts", + contents: ` + import { defineConfig } from "@solidjs/start/config"; + + // Simulates an app config + export default defineConfig({ + }); + `, + }; + const expected = makeExampleConfig(["examplePlugin({})"], ['import examplePlugin from "example";']); + const result = await transformPlugins([examplePlugin], config); + + expect(removeWhitespace(result)).toBe(removeWhitespace(expected)); + }); + test("Object config is updated properly", async () => { + const config: Config = { + type: "app", + name: "app.config.ts", + contents: makeExampleConfig(["solid()"]), + }; + const expected = makeExampleConfig(["solid()", "examplePlugin({})"], ['import examplePlugin from "example";']); + const result = await transformPlugins([examplePlugin], config); + + expect(removeWhitespace(result)).toBe(removeWhitespace(expected)); + }); + test("Arrow-function config is updated properly", async () => { + const config: Config = { + type: "app", + name: "app.config.ts", + contents: makeExampleConfig(["solid()"], [], "arrow"), + }; + const expected = makeExampleConfig( + ["solid()", "examplePlugin({})"], + ['import examplePlugin from "example";'], + "arrow", + ); + const result = await transformPlugins([examplePlugin], config); + + expect(removeWhitespace(result)).toBe(removeWhitespace(expected)); + }); + + test("Object method config is updated properly", async () => { + const config: Config = { + type: "app", + name: "app.config.ts", + contents: makeExampleConfig(["solid()"], [], "method"), }; - const expected = `import examplePlugin from "example"; - import solid from "solid-start/vite"; - // Simulates a vite config - export default defineConfig({ - plugins: [ - solid(), - examplePlugin({}) - ] - });`; + const expected = makeExampleConfig( + ["solid()", "examplePlugin({})"], + ['import examplePlugin from "example";'], + "method", + ); const result = await transformPlugins([examplePlugin], config); expect(removeWhitespace(result)).toBe(removeWhitespace(expected)); diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 085de6c..34933f5 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -7,7 +7,7 @@ "skipLibCheck": true, "declaration": true, "emitDeclarationOnly": true, - "moduleResolution": "Node", + "moduleResolution": "Bundler", "resolveJsonModule": true, "isolatedModules": true, "allowSyntheticDefaultImports": true, @@ -15,7 +15,9 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "outDir": "types" + "rootDir": "./src", + "outDir": "types", + "declarationMap": true }, "include": ["src/*", "src/**/*"] } diff --git a/packages/utils/tsup.config.ts b/packages/utils/tsup.config.ts index 861ed77..1b4f756 100644 --- a/packages/utils/tsup.config.ts +++ b/packages/utils/tsup.config.ts @@ -1,5 +1,4 @@ import { defineConfig } from "tsup"; -import metaUrlPlugin from "@chialab/esbuild-plugin-meta-url"; export default defineConfig({ entry: ["src"], @@ -8,5 +7,5 @@ export default defineConfig({ splitting: false, sourcemap: true, clean: true, - esbuildPlugins: [metaUrlPlugin()], + minify: true, }); diff --git a/patches/detect-package-manager@2.0.1.patch b/patches/detect-package-manager@2.0.1.patch deleted file mode 100644 index c052925..0000000 --- a/patches/detect-package-manager@2.0.1.patch +++ /dev/null @@ -1,105 +0,0 @@ -diff --git a/package.json b/package.json -index 7e338208773e2385934056669fcd5f9db1d20408..1d16444bd700ed288585bf881a827ecb0bb7f98d 100644 ---- a/package.json -+++ b/package.json -@@ -1,50 +1,52 @@ - { -- "name": "detect-package-manager", -- "version": "2.0.1", -- "description": "Detect which package manager you're using (yarn or npm)", -- "repository": { -- "url": "egoist/detect-package-manager", -- "type": "git" -- }, -- "main": "dist/index.js", -- "module": "dist/index.mjs", -- "exports": { -- ".": { -- "require": "./dist/index.js", -- "default": "./dist/index.mjs" -- } -- }, -- "types": "./dist/index.d.ts", -- "files": [ -- "dist" -- ], -- "keywords": [ -- "npm", -- "yarn", -- "package-manager", -- "detect", -- "check", -- "pnpm" -- ], -- "scripts": { -- "build": "tsup src/index.ts --format esm,cjs --dts", -- "test": "node -r sucrase/register test.ts", -- "prepublishOnly": "npm run build" -- }, -- "author": "egoist <0x142857@gmail.com>", -- "license": "MIT", -- "dependencies": { -- "execa": "^5.1.1" -- }, -- "devDependencies": { -- "@types/node": "^16.11.4", -- "ava": "^3.15.0", -- "sucrase": "^3.20.3", -- "tsup": "^5.4.4", -- "typescript": "^4.4.4", -- "uvu": "^0.5.2" -- }, -- "engines": { -- "node": ">=12" -- } -+ "name": "detect-package-manager", -+ "version": "2.0.1", -+ "description": "Detect which package manager you're using (yarn or npm)", -+ "repository": { -+ "url": "egoist/detect-package-manager", -+ "type": "git" -+ }, -+ "main": "dist/index.js", -+ "module": "dist/index.mjs", -+ "exports": { -+ ".": { -+ "require": "./dist/index.js", -+ "default": "./dist/index.mjs", -+ "import": "./dist/index.mjs", -+ "types": "./dist/index.d.ts" -+ } -+ }, -+ "types": "./dist/index.d.ts", -+ "files": [ -+ "dist" -+ ], -+ "keywords": [ -+ "npm", -+ "yarn", -+ "package-manager", -+ "detect", -+ "check", -+ "pnpm" -+ ], -+ "scripts": { -+ "build": "tsup src/index.ts --format esm,cjs --dts", -+ "test": "node -r sucrase/register test.ts", -+ "prepublishOnly": "npm run build" -+ }, -+ "author": "egoist <0x142857@gmail.com>", -+ "license": "MIT", -+ "dependencies": { -+ "execa": "^5.1.1" -+ }, -+ "devDependencies": { -+ "@types/node": "^16.11.4", -+ "ava": "^3.15.0", -+ "sucrase": "^3.20.3", -+ "tsup": "^5.4.4", -+ "typescript": "^4.4.4", -+ "uvu": "^0.5.2" -+ }, -+ "engines": { -+ "node": ">=12" -+ } - } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d433d9b..443594d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3598 +1,3243 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - detect-package-manager@2.0.1: - hash: z3ggdkumlo4f7lrrhi5q7ehiyi - path: patches/detect-package-manager@2.0.1.patch - importers: .: devDependencies: '@changesets/cli': - specifier: 2.26.2 - version: 2.26.2 - nodemon: - specifier: ^3.0.1 - version: 3.0.1 + specifier: 2.31.1 + version: 2.31.1(@types/node@26.1.1) + '@types/node': + specifier: 26.1.1 + version: 26.1.1 + jiti: + specifier: ^2.7.0 + version: 2.7.0 prettier: - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^3.9.6 + version: 3.9.6 + tsup: + specifier: ^8.5.1 + version: 8.5.1(@swc/core@1.5.5)(jiti@2.7.0)(postcss@8.5.6)(typescript@7.0.2) turbo: - specifier: ^1.10.12 - version: 1.10.12 + specifier: ^2.10.6 + version: 2.10.6 + typescript: + specifier: ^7.0.2 + version: 7.0.2 vitest: - specifier: ^0.33.0 - version: 0.33.0 + specifier: ^4.1.10 + version: 4.1.10(@types/node@26.1.1)(vite@7.3.1(@types/node@26.1.1)(jiti@2.7.0)) - packages/commands: + packages/create: dependencies: - '@chialab/esbuild-plugin-meta-url': - specifier: ^0.17.7 - version: 0.17.7 + '@begit/core': + specifier: ^0.4.0 + version: 0.4.0 '@clack/prompts': - specifier: 0.6.3 - version: 0.6.3 - '@solid-cli/reactivity': - specifier: workspace:* - version: link:../reactivity - '@solid-cli/transpiler': - specifier: workspace:* - version: link:../transpiler - '@solid-cli/ui': - specifier: workspace:* - version: link:../ui + specifier: 1.7.0 + version: 1.7.0 '@solid-cli/utils': specifier: workspace:* version: link:../utils - detect-package-manager: - specifier: ^2.0.1 - version: 2.0.1(patch_hash=z3ggdkumlo4f7lrrhi5q7ehiyi) - execa: - specifier: ^7.2.0 - version: 7.2.0 + citty: + specifier: ^0.2.2 + version: 0.2.2 picocolors: - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.1.1 + version: 1.1.1 sucrase: - specifier: ^3.34.0 - version: 3.34.0 - devDependencies: - '@types/node': - specifier: ^20.5.0 - version: 20.5.0 - prettier: - specifier: ^3.0.2 - version: 3.0.2 - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.76)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^3.35.1 + version: 3.35.1 - packages/core: - dependencies: - '@clack/core': - specifier: 0.3.2 - version: 0.3.2 + packages/create-solid: + devDependencies: '@clack/prompts': - specifier: 0.6.3 - version: 0.6.3 - '@solid-cli/commands': - specifier: workspace:* - version: link:../commands - '@solid-cli/reactivity': - specifier: workspace:* - version: link:../reactivity - '@solid-cli/swc-plugin-solid-cli': - specifier: workspace:* - version: link:../swc-plugin-solid-cli - '@solid-cli/transpiler': - specifier: workspace:* - version: link:../transpiler - '@solid-cli/ui': + specifier: 1.7.0 + version: 1.7.0 + '@solid-cli/create': specifier: workspace:* - version: link:../ui - '@solid-cli/utils': - specifier: workspace:* - version: link:../utils - '@swc/core': - specifier: ^1.3.75 - version: 1.3.75 - cmd-ts: - specifier: ^0.12.1 - version: 0.12.1 - detect-package-manager: - specifier: ^2.0.1 - version: 2.0.1(patch_hash=z3ggdkumlo4f7lrrhi5q7ehiyi) - execa: - specifier: ^7.2.0 - version: 7.2.0 + version: link:../create + citty: + specifier: ^0.2.2 + version: 0.2.2 picocolors: - specifier: ^1.0.0 - version: 1.0.0 - smol-toml: specifier: ^1.1.1 version: 1.1.1 - tiny-updater: - specifier: ^3.5.1 - version: 3.5.1 - devDependencies: - '@chialab/esbuild-plugin-meta-url': - specifier: ^0.17.7 - version: 0.17.7 - '@types/node': - specifier: ^20.4.9 - version: 20.4.9 - jiti: - specifier: ^1.19.1 - version: 1.19.1 - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.75)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 - - packages/create-solid: - dependencies: - '@solid-cli/commands': - specifier: workspace:* - version: link:../commands - devDependencies: - jiti: - specifier: ^1.19.1 - version: 1.19.1 - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.76)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 - - packages/reactivity: - devDependencies: - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.76)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 - packages/swc-plugin-solid-cli: {} - - packages/transpiler: - dependencies: - vitest: - specifier: ^0.33.0 - version: 0.33.0 + packages/full-solid: devDependencies: - '@napi-rs/cli': - specifier: ^2.16.3 - version: 2.16.3 - - packages/ui: - dependencies: - '@clack/core': - specifier: 0.3.2 - version: 0.3.2 '@clack/prompts': - specifier: 0.6.3 - version: 0.6.3 - '@solid-cli/reactivity': + specifier: 1.7.0 + version: 1.7.0 + '@solid-cli/create': specifier: workspace:* - version: link:../reactivity + version: link:../create '@solid-cli/utils': specifier: workspace:* version: link:../utils + citty: + specifier: ^0.2.2 + version: 0.2.2 picocolors: - specifier: ^1.0.0 - version: 1.0.0 - devDependencies: - '@types/node': - specifier: 20.4.8 - version: 20.4.8 - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.76)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^1.1.1 + version: 1.1.1 packages/utils: dependencies: '@clack/core': - specifier: 0.3.2 - version: 0.3.2 + specifier: 1.4.3 + version: 1.4.3 '@clack/prompts': - specifier: 0.6.3 - version: 0.6.3 - '@solid-cli/reactivity': - specifier: workspace:* - version: link:../reactivity - '@swc/core': - specifier: ^1.3.76 - version: 1.3.76 - cmd-ts: - specifier: ^0.12.1 - version: 0.12.1 - detect-package-manager: - specifier: ^2.0.1 - version: 2.0.1(patch_hash=z3ggdkumlo4f7lrrhi5q7ehiyi) + specifier: 1.7.0 + version: 1.7.0 execa: - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^10.0.0 + version: 10.0.0 picocolors: - specifier: ^1.0.0 - version: 1.0.0 - smol-toml: specifier: ^1.1.1 version: 1.1.1 devDependencies: - '@chialab/esbuild-plugin-meta-url': - specifier: ^0.17.7 - version: 0.17.7 - '@types/node': - specifier: 20.4.8 - version: 20.4.8 - jiti: - specifier: ^1.19.1 - version: 1.19.1 - tsup: - specifier: ^7.2.0 - version: 7.2.0(@swc/core@1.3.76)(typescript@5.1.6) - typescript: - specifier: ^5.1.6 - version: 5.1.6 - vitest: - specifier: ^0.33.0 - version: 0.33.0 + magicast: + specifier: ^0.5.3 + version: 0.5.3 packages: - /@babel/code-frame@7.22.10: - resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.10 - chalk: 2.4.2 - dev: true - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/highlight@7.22.10: - resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/runtime@7.22.10: - resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: true - /@changesets/apply-release-plan@6.1.4: - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/config': 2.3.1 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 2.0.0 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.5.4 - dev: true + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true - /@changesets/assemble-release-plan@5.2.4: - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 - dev: true + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} - /@changesets/changelog-git@0.1.14: - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} - dependencies: - '@changesets/types': 5.2.1 - dev: true + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} - /@changesets/cli@2.26.2: - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} - hasBin: true - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/get-release-plan': 3.0.17 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@changesets/write': 0.2.3 - '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 7.5.0 - ansi-colors: 4.1.3 - chalk: 2.4.2 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 7.5.4 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.1 - dev: true + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} - /@changesets/config@2.3.1: - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true + '@begit/core@0.4.0': + resolution: {integrity: sha512-Z4HNWYe5NZ5wZfDgDxmP9yJn1sYYtYABnJS+2l2BItqLijlcq1gvnRtw9KMXpTN8XD1xbe1QM1sWzu83VKRQig==} - /@changesets/errors@0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - dependencies: - extendable-error: 0.1.7 - dev: true + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - /@changesets/get-dependents-graph@1.3.6: - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} - dependencies: - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 - dev: true - - /@changesets/get-release-plan@3.0.17: - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/config': 2.3.1 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - dev: true + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} - /@changesets/get-version-range-type@0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - dev: true + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - /@changesets/git@2.0.0: - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 - dev: true + '@changesets/cli@2.31.1': + resolution: {integrity: sha512-uO05WTcRBwuVOJVSW8Cmpqw6q0WDL53ajGCMyszutvOe5toOnunbpM4jZzf+qxBOz7i0AzopZ8diBuewjmF40w==} + hasBin: true - /@changesets/logger@0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - dependencies: - chalk: 2.4.2 - dev: true + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} - /@changesets/parse@0.3.16: - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} - dependencies: - '@changesets/types': 5.2.1 - js-yaml: 3.14.1 - dev: true + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - /@changesets/pre@1.0.14: - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} - /@changesets/read@0.5.9: - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.16 - '@changesets/types': 5.2.1 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - /@changesets/types@5.2.1: - resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - dev: true + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} - /@changesets/write@0.2.3: - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/types': 5.2.1 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 - dev: true + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - /@chialab/esbuild-plugin-meta-url@0.17.7: - resolution: {integrity: sha512-f4Eg/+XSrcf9JlYUjI8IEupMOuGR7P3hMlfdbE8aMHM0+PJSIYeFV+udMZyNmSpCYfO3dpVtdulv5QDZfTvzWg==} - engines: {node: '>=13'} - dependencies: - '@chialab/esbuild-rna': 0.17.8 - '@chialab/estransform': 0.17.4 - '@chialab/node-resolve': 0.17.1 - mime-types: 2.1.35 + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} - /@chialab/esbuild-rna@0.17.8: - resolution: {integrity: sha512-hovU4W5zlyMnbJjexdczpQ9mcUfFsJuv9FWUhzpXiQwPprlp5lul+frTed9s8AyVDTDq2yq3Gx2Ac411QsXYGA==} - engines: {node: '>=13'} - dependencies: - '@chialab/estransform': 0.17.4 - '@chialab/node-resolve': 0.17.1 + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - /@chialab/estransform@0.17.4: - resolution: {integrity: sha512-p4nf8ECdmanwbRK6A/X/VYtJfkBk5vgChPh0GiCyZAPt6/mKPbe0v3y9WjLHfFdkv1bzjJzP3pjTJ1SZ1E1U8Q==} - engines: {node: '>=13'} - dependencies: - '@parcel/source-map': 2.1.1 + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} - /@chialab/node-resolve@0.17.1: - resolution: {integrity: sha512-YWaK0MKKeB0FILI6j7qiAlGoSC9MqJZDFXzlAgfOaMCbn8Feqh6njxv7mI3oVkdi7QwV6zPRaTN6hKig/NriMA==} - engines: {node: '>=13'} + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - /@clack/core@0.3.2: - resolution: {integrity: sha512-FZnsNynwGDIDktx6PEZK1EuCkFpY4ldEX6VYvfl0dqeoLPb9Jpw1xoUXaVcGR8ExmYNm1w2vdGdJkEUYD/2pqg==} - dependencies: - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - /@clack/prompts@0.6.3: - resolution: {integrity: sha512-AM+kFmAHawpUQv2q9+mcB6jLKxXGjgu/r2EQjEwujgpCdzrST6BJqYw00GRn56/L/Izw5U7ImoLmy00X/r80Pw==} - dependencies: - '@clack/core': 0.3.2 - picocolors: 1.0.0 - sisteransi: 1.0.5 - dev: false - bundledDependencies: - - is-unicode-supported + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + engines: {node: '>= 20.12.0'} + + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + engines: {node: '>= 20.12.0'} + + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + engines: {node: '>=18'} cpu: [arm] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + engines: {node: '>=18'} cpu: [x64] os: [android] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - requiresBuild: true - optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - requiresBuild: true - optional: true - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} - /@jridgewell/gen-mapping@0.3.3: + '@isaacs/fs-minipass@4.0.0': + resolution: {integrity: sha512-S00nN1Qt3z3dSP6Db45fj/mksrAq5XWNIJ/SWXGP8XPT2jrzEuYRCSEx08JpJwBcG2F1xgiOtBMGDU0AZHmxew==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: + '@jridgewell/set-array@1.1.2': resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.19: + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.19': resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@manypkg/find-root@1.1.0: + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.22.10 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - /@manypkg/get-packages@1.1.3: + '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.22.10 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - - /@napi-rs/cli@2.16.3: - resolution: {integrity: sha512-3mLNPlbbOhpbIUKicLrJtIearlHXUuXL3UeueYyRRplpVMNkdn8xCyzY6PcYZi3JXR8bmCOiWgkVmLnrSL7DKw==} - engines: {node: '>= 10'} - hasBin: true - dev: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - /@parcel/source-map@2.1.1: - resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} - engines: {node: ^12.18.3 || >=14} - dependencies: - detect-libc: 1.0.3 + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@rollup/rollup-android-arm-eabi@4.34.9': + resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==} + cpu: [arm] + os: [android] - /@swc/core-darwin-arm64@1.3.75: - resolution: {integrity: sha512-anDnx9L465lGbjB2mvcV54NGHW6illr0IDvVV7JmkabYUVneaRdQvTr0tbHv3xjHnjrK1wuwVOHKV0LcQF2tnQ==} - engines: {node: '>=10'} + '@rollup/rollup-android-arm-eabi@4.55.1': + resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.34.9': + resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-android-arm64@4.55.1': + resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.34.9': + resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} cpu: [arm64] os: [darwin] - requiresBuild: true - optional: true - /@swc/core-darwin-arm64@1.3.76: - resolution: {integrity: sha512-ovviEhZ/1E81Z9OGrO0ivLWk4VCa3I3ZzM+cd3gugglRRwVwtlIaoIYqY5S3KiCAupDd1+UCl5X7Vbio7a/V8g==} - engines: {node: '>=10'} + '@rollup/rollup-darwin-arm64@4.55.1': + resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] - requiresBuild: true - optional: true - /@swc/core-darwin-x64@1.3.75: - resolution: {integrity: sha512-dIHDfrLmeZfr2xwi1whO7AmzdI3HdamgvxthaL+S8L1x8TeczAZEvsmZTjy3s8p3Va4rbGXcb3+uBhmfkqCbfw==} - engines: {node: '>=10'} + '@rollup/rollup-darwin-x64@4.34.9': + resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} cpu: [x64] os: [darwin] - requiresBuild: true - optional: true - /@swc/core-darwin-x64@1.3.76: - resolution: {integrity: sha512-tcySTDqs0SHCebtW35sCdcLWsmTEo7bEwx0gNL/spetqVT9fpFi6qU8qcnt7i2KaZHbeNl9g1aadu+Yrni+GzA==} - engines: {node: '>=10'} + '@rollup/rollup-darwin-x64@4.55.1': + resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - requiresBuild: true - optional: true - /@swc/core-linux-arm-gnueabihf@1.3.75: - resolution: {integrity: sha512-qeJmvMGrjC6xt+G0R4kVqqxvlhxJx7tTzhcEoWgLJnfvGZiF6SJdsef4OSM7HuReXrlBoEtJbfGPrLJtbV+C0w==} - engines: {node: '>=10'} + '@rollup/rollup-freebsd-arm64@4.34.9': + resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-arm64@4.55.1': + resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.34.9': + resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.55.1': + resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': + resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} cpu: [arm] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-arm-gnueabihf@1.3.76: - resolution: {integrity: sha512-apgzpGWy1AwoMF4urAAASsAjE7rEzZFIF+p6utuxhS7cNHzE0AyEVDYJbo+pzBdlZ8orBdzzsHtFwoEgKOjebA==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-arm64-gnu@1.3.75: - resolution: {integrity: sha512-sqA9JqHEJBF4AdNuwo5zRqq0HC3l31SPsG9zpRa4nRzG5daBBJ80H7fi6PZQud1rfNNq+Q08gjYrdrxwHstvjw==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm-musleabihf@4.34.9': + resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-arm64-gnu@1.3.76: - resolution: {integrity: sha512-c3c0zz6S0eludqidDpuqbadE0WT3OZczyQxe9Vw8lFFXES85mvNGtwYzyGK2o7TICpsuHrndwDIoYpmpWk879g==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm64-gnu@4.55.1': + resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-arm64-musl@1.3.75: - resolution: {integrity: sha512-95rQT5xTAL3eKhMJbJbLsZHHP9EUlh1rcrFoLf0gUApoVF8g94QjZ9hYZiI72mMP5WPjgTEXQVnVB9O2GxeaLw==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm64-musl@4.34.9': + resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true + libc: [musl] - /@swc/core-linux-arm64-musl@1.3.76: - resolution: {integrity: sha512-Is3bpq7F2qtlnkzEeOD6HIZJPpOmu3q6c82lKww90Q0NnrlSluVMozTHJgwVoFZyizH7uLnk0LuNcEAWLnmJIw==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm64-musl@4.55.1': + resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true + libc: [musl] - /@swc/core-linux-x64-gnu@1.3.75: - resolution: {integrity: sha512-If7UpAhnPduMmtC+TSgPpZ1UXZfp2hIpjUFxpeCmHHYLS6Fn/2GZC5hpEiu+wvFJF0hzPh93eNAHa9gUxGUG+w==} - engines: {node: '>=10'} + '@rollup/rollup-linux-loong64-gnu@4.55.1': + resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.55.1': + resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': + resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': + resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.55.1': + resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.34.9': + resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.55.1': + resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.34.9': + resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-s390x-gnu@4.55.1': + resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.34.9': + resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} cpu: [x64] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-x64-gnu@1.3.76: - resolution: {integrity: sha512-iwCeRzd9oSvUzqt7nU6p/ztceAWfnO9XVxBn502R5gs6QCBbE1HCKrWHDO77aKPK7ss+0NcIGHvXTd9L8/wRzw==} - engines: {node: '>=10'} + '@rollup/rollup-linux-x64-gnu@4.55.1': + resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] - requiresBuild: true - optional: true + libc: [glibc] - /@swc/core-linux-x64-musl@1.3.75: - resolution: {integrity: sha512-HOhxX0YNHTElCZqIviquka3CGYTN8rSQ6BdFfSk/K0O+ZEHx3qGte0qr+gGLPF/237GxreUkp3OMaWKuURtuCg==} - engines: {node: '>=10'} + '@rollup/rollup-linux-x64-musl@4.34.9': + resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} cpu: [x64] os: [linux] - requiresBuild: true - optional: true + libc: [musl] - /@swc/core-linux-x64-musl@1.3.76: - resolution: {integrity: sha512-a671g4tW8kyFeuICsgq4uB9ukQfiIyXJT4V6YSnmqhCTz5mazWuDxZ5wKnx/1g5nXTl+U5cWH2TZaCJatp4GKA==} - engines: {node: '>=10'} + '@rollup/rollup-linux-x64-musl@4.55.1': + resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] - requiresBuild: true - optional: true + libc: [musl] - /@swc/core-win32-arm64-msvc@1.3.75: - resolution: {integrity: sha512-7QPI+mvBXAerVfWahrgBNe+g7fK8PuetxFnZSEmXUcDXvWcdJXAndD7GjAJzbDyjQpLKHbsDKMiHYvfNxZoN/A==} - engines: {node: '>=10'} + '@rollup/rollup-openbsd-x64@4.55.1': + resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.55.1': + resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@swc/core-win32-arm64-msvc@1.3.76: - resolution: {integrity: sha512-+swEFtjdMezS0vKUhJC3psdSDtOJGY5pEOt4e8XOPvn7aQpKQ9LfF49XVtIwDSk5SGuWtVoLFzkSY3reWUJCyg==} - engines: {node: '>=10'} + '@rollup/rollup-win32-arm64-msvc@4.55.1': + resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@swc/core-win32-ia32-msvc@1.3.75: - resolution: {integrity: sha512-EfABCy4Wlq7O5ShWsm32FgDkSjyeyj/SQ4wnUIvWpkXhgfT1iNXky7KRU1HtX+SmnVk/k/NnabVZpIklYbjtZA==} - engines: {node: '>=10'} + '@rollup/rollup-win32-ia32-msvc@4.34.9': + resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} cpu: [ia32] os: [win32] - requiresBuild: true - optional: true - /@swc/core-win32-ia32-msvc@1.3.76: - resolution: {integrity: sha512-5CqwAykpGBJ3PqGLOlWGLGIPpBAG1IwWVDUfro3hhjQ7XJxV5Z1aQf5V5OJ90HJVtrEAVx2xx59UV/Dh081LOg==} - engines: {node: '>=10'} + '@rollup/rollup-win32-ia32-msvc@4.55.1': + resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] - requiresBuild: true - optional: true - /@swc/core-win32-x64-msvc@1.3.75: - resolution: {integrity: sha512-cTvP0pOD9C3pSp1cwtt85ZsrUkQz8RZfSPhM+jCGxKxmoowDCnInoOQ4Ica/ehyuUnQ4/IstSdYtYpO5yzPDJg==} - engines: {node: '>=10'} + '@rollup/rollup-win32-x64-gnu@4.55.1': + resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] - requiresBuild: true - optional: true - /@swc/core-win32-x64-msvc@1.3.76: - resolution: {integrity: sha512-CiMpWLLlR3Cew9067E7XxaLBwYYJ90r9EhGSO6V1pvYSWj7ET/Ppmtj1ZhzPJMqRXAP6xflfl5R5o4ee1m4WLA==} + '@rollup/rollup-win32-x64-msvc@4.34.9': + resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.55.1': + resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@swc/core-darwin-arm64@1.5.5': + resolution: {integrity: sha512-Ol5ZwZYdTOZsv2NwjcT/qVVALKzVFeh+IJ4GNarr3P99+38Dkwi81OqCI1o/WaDXQYKAQC/V+CzMbkEuJJfq9Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.5.5': + resolution: {integrity: sha512-XHWpKBIPKYLgh5/lV2PYjO84lkzf5JR51kjiloyz2Pa9HIV8tHoAP8bYdJwm4nUp2I7KcEh3pPH0AVu5LpxMKw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.5.5': + resolution: {integrity: sha512-vtoWNCWAe+CNSqtqIwFnIH48qgPPlUZKoQ4EVFeMM+7/kDi6SeNxoh5TierJs5bKAWxD49VkPvRoWFCk6V62mA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.5.5': + resolution: {integrity: sha512-L4l7M78U6h/rCAxId+y5Vu+1KfDRF6dJZtitFcaT293guiUQFwJv8gLxI4Jh5wFtZ0fYd0QaCuvh2Ip79CzGMg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.5.5': + resolution: {integrity: sha512-DkzJc13ukXa7oJpyn24BjIgsiOybYrc+IxjsQyfNlDrrs1QXP4elStcpkD02SsIuSyHjZV8Hw2HFBMQB3OHPrA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-x64-gnu@1.5.5': + resolution: {integrity: sha512-kj4ZwWJGeBEUzHrRQP2VudN+kkkYH7OI1dPVDc6kWQx5X4329JeKOas4qY0l7gDVjBbRwN9IbbPI6TIn2KfAug==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.5.5': + resolution: {integrity: sha512-6pTorCs4mYhPhYtC4jNOnhGgjNd3DZcRoZ9P0tzXXP69aCbYjvlgNH/NRvAROp9AaVFeZ7a7PmCWb6+Rbe7NKg==} engines: {node: '>=10'} cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.5.5': + resolution: {integrity: sha512-o0/9pstmEjwZyrY/bA+mymF0zH7E+GT/XCVqdKeWW9Wn3gTTyWa5MZnrFgI2THQ+AXwdglMB/Zo76ARQPaz/+A==} + engines: {node: '>=10'} + cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@swc/core@1.3.75: - resolution: {integrity: sha512-YLqd5oZVnaOq/OzkjRSsJUQqAfKYiD0fzUyVUPVlNNCoQEfVfSMcXH80hLmYe9aDH0T/a7qEMjWyIr/0kWqy1A==} + '@swc/core-win32-ia32-msvc@1.5.5': + resolution: {integrity: sha512-B+nypUwsmCuaH6RtKWgiPCb+ENjxstJPPJeMJvBqlJqyCaIkZzN4M07Ozi3xVv1VG21SRkd6G3xIqRoalrNc0Q==} engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.75 - '@swc/core-darwin-x64': 1.3.75 - '@swc/core-linux-arm-gnueabihf': 1.3.75 - '@swc/core-linux-arm64-gnu': 1.3.75 - '@swc/core-linux-arm64-musl': 1.3.75 - '@swc/core-linux-x64-gnu': 1.3.75 - '@swc/core-linux-x64-musl': 1.3.75 - '@swc/core-win32-arm64-msvc': 1.3.75 - '@swc/core-win32-ia32-msvc': 1.3.75 - '@swc/core-win32-x64-msvc': 1.3.75 - - /@swc/core@1.3.76: - resolution: {integrity: sha512-aYYTA2aVYkwJAZepQXtPnkUthhOfn8qd6rsh+lrJxonFrjmpI7RHt2tMDVTXP6XDX7fvnvrVtT1bwZfmBFPh0Q==} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.5.5': + resolution: {integrity: sha512-ry83ki9ZX0Q+GWGnqc2J618Z+FvKE8Ajn42F8EYi8Wj0q6Jz3mj+pJzgzakk2INm2ldEZ+FaRPipn4ozsZDcBg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.5.5': + resolution: {integrity: sha512-M8O22EEgdSONLd+7KRrXj8pn+RdAZZ7ISnPjE9KCQQlI0kkFNEquWR+uFdlFxQfwlyCe/Zb6uGXGDvtcov4IMg==} engines: {node: '>=10'} - requiresBuild: true peerDependencies: '@swc/helpers': ^0.5.0 peerDependenciesMeta: '@swc/helpers': optional: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.76 - '@swc/core-darwin-x64': 1.3.76 - '@swc/core-linux-arm-gnueabihf': 1.3.76 - '@swc/core-linux-arm64-gnu': 1.3.76 - '@swc/core-linux-arm64-musl': 1.3.76 - '@swc/core-linux-x64-gnu': 1.3.76 - '@swc/core-linux-x64-musl': 1.3.76 - '@swc/core-win32-arm64-msvc': 1.3.76 - '@swc/core-win32-ia32-msvc': 1.3.76 - '@swc/core-win32-x64-msvc': 1.3.76 - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.5 + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} - /@types/is-ci@3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.8.0 - dev: true + '@turbo/darwin-64@2.10.6': + resolution: {integrity: sha512-S+yIyZkmjYBQbIM7sTqMAwnLeMjSK60Q9grUDPbTWvkRjbsn5k1Rt5sPvTX80M4PnlYQBwLiYsjlu6tHsuIqQQ==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.10.6': + resolution: {integrity: sha512-gnS8G78EjvJzDc1+tFES5BYXdlF+292n+h57G9G+5LJYelRh195f4Ed22RCo4EFIbI4Du9S5xfE9YjrqhoZaxQ==} + cpu: [arm64] + os: [darwin] - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true + '@turbo/linux-64@2.10.6': + resolution: {integrity: sha512-lPv5AVkzvhs4z6Isr2ZE2UYt9Ndym5aWSMEIRh9OROnAdyEG1CFugJwAn/aFuDMmiCoHasyvD5tTDmVVTTrYxw==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.10.6': + resolution: {integrity: sha512-yeQ24es8pz+FhZxt25HIXj4ml7HpWMrmOL1BtCP4XUz7mBJZdAfC7z7HGF+wPSUZoKmoSZbL4r4QWbRddhPZIQ==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.10.6': + resolution: {integrity: sha512-JiFscBN83F43VG3oM+QU2LvgHcf11tgirLJ3c1QDJBtulTCbDwupzIjqB9yBlfiMWAe6g3ssD6gqLP6a4g7FzA==} + cpu: [x64] + os: [win32] - /@types/node@12.20.55: + '@turbo/windows-arm64@2.10.6': + resolution: {integrity: sha512-emWVdriXsaSVS5VXJxy4DppQ0UnGD+PUKu40DGjC3E5JXeoszL09B/1xU6B+Y8lJQg38cFoaB1NqGC4ayY5SQQ==} + cpu: [arm64] + os: [win32] + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true - /@types/node@20.4.8: - resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==} - dev: true + '@types/node@26.1.1': + resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} - /@types/node@20.4.9: - resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} - dev: true + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - /@types/node@20.5.0: - resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==} + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} - dev: true + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] - /@vitest/expect@0.33.0: - resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} - dependencies: - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - chai: 4.3.7 + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] - /@vitest/runner@0.33.0: - resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} - dependencies: - '@vitest/utils': 0.33.0 - p-limit: 4.0.0 - pathe: 1.1.1 + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] - /@vitest/snapshot@0.33.0: - resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} - dependencies: - magic-string: 0.30.2 - pathe: 1.1.1 - pretty-format: 29.6.2 + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] - /@vitest/spy@0.33.0: - resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} - dependencies: - tinyspy: 2.1.1 + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] - /@vitest/utils@0.33.0: - resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} - dependencies: - diff-sequences: 29.4.3 - loupe: 2.3.6 - pretty-format: 29.6.2 + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: true + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} hasBin: true - /ansi-colors@4.1.3: + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: true - /ansi-regex@5.0.1: + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} - /ansi-styles@4.3.0: + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} - /any-promise@1.3.0: + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /argparse@1.0.10: + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: true + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /array-union@2.1.0: + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true - - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - - /arraybuffer.prototype.slice@1.0.1: - resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - define-properties: 1.2.0 - get-intrinsic: 1.2.1 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - dev: true - - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true - - /balanced-match@1.0.2: + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /better-path-resolve@1.0.0: + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: true - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - /breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - dependencies: - wcwidth: 1.0.1 - dev: true - - /bundle-require@4.0.1(esbuild@0.18.20): - resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.18.20 - load-tsconfig: 0.2.5 - dev: true + esbuild: '>=0.18' - /cac@6.7.14: + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 - dev: true + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - - /cmd-ts@0.12.1: - resolution: {integrity: sha512-k93f6LgFEzx7/vBy5qV+tu1VI8YuH0DZmwNXPvRaDR4Qp7Fl9+pUSylX/CKHrWoKqHMJjNOLb1NeYTvHOjQ2Kw==} - dependencies: - chalk: 4.1.2 - debug: 4.3.4 - didyoumean: 1.2.2 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 + consola@3.4.0: + resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + engines: {node: ^14.18.0 || >=16.10.0} - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true - - /csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true - - /csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true - - /csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - dev: true - - /debug@3.2.7(supports-color@5.5.0): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - supports-color: 5.5.0 - dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.2 - - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /detect-indent@6.1.0: + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - dev: true - - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - /detect-package-manager@2.0.1(patch_hash=z3ggdkumlo4f7lrrhi5q7ehiyi): - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: false - patched: true - - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false - - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /dir-glob@3.0.1: + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - /emoji-regex@8.0.0: + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true - /enquirer@2.4.1: + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.1 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.0 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 - dev: true - - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} - /esprima@4.0.1: + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + engines: {node: '>=18'} + hasBin: true + + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - - /extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true + execa@10.0.0: + resolution: {integrity: sha512-Cxl6MKxB1dr1H0FHmiizJ+lavKF7pV+fcDZFyqMB8d5m7qUPm/OtZYcD5vPWePKxSnTQ57KuBd9mtdZ3oNCvyQ==} + engines: {node: '>=22'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - /find-up@4.1.0: + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: true + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} - /fs-extra@7.0.1: + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: + fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - requiresBuild: true - optional: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - dev: true - - /glob-parent@5.1.2: + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: true + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true - /globby@11.1.0: + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.1 - dev: true - /graceful-fs@4.2.11: + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + human-id@4.1.1: + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} + hasBin: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.1 - dev: true + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} - /human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: false + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - /ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - dev: true + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 - dev: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true - /ionstore@1.0.0: - resolution: {integrity: sha512-ikEvmeZFh9u5SkjKbFqJlmmhaQTulB3P7QoSoZ/xL8EDP5uj5QWbPeKcQ8ZJtszBLHRRnhIJJE8P1dhFx/oCMw==} - dev: false + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 - dev: true + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true + lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.8.0 - dev: true + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} - dependencies: - has: 1.0.3 - dev: true + magicast@0.5.3: + resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - dev: true - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: true + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.11 - dev: true + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} - /jiti@1.19.1: - resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} - hasBin: true - dev: true + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: true + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: true + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.34.9: + resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + rollup@4.55.1: + resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - dev: true - /kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - dev: true + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + tar@7.5.19: + resolution: {integrity: sha512-4LeEWl96twnS2Q7Bz4MGqgazLqO+hJN63GZxXoIqh1T3VweYD997gbU1ItNsQafqqXTXd5WFyFdReLtwvRBNiw==} + engines: {node: '>=18'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + turbo@2.10.6: + resolution: {integrity: sha512-3VfH7fK7WQ/ZHYjvfWyVnPRpcNaX3ZqXfGDMdc82eGdM0ESATyxFK4R4PM3wNsVFsdkUFZ4pZpkNeG37dxOv+g==} + hasBin: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + which-command@0.1.0: + resolution: {integrity: sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==} + engines: {node: '>=22'} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + +snapshots: + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.7': dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true + '@babel/types': 7.29.7 - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@begit/core@0.4.0': + dependencies: + tar: 7.5.19 + + '@changesets/apply-release-plan@7.1.1': + dependencies: + '@changesets/config': 3.1.4 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.6.3 + + '@changesets/assemble-release-plan@6.0.10': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.6.3 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.31.1(@types/node@26.1.1)': + dependencies: + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.4 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@26.1.1) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + package-manager-detector: 0.2.8 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.6.3 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' + + '@changesets/config@3.1.4': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.4': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.6.3 + + '@changesets/get-release-plan@4.0.16': + dependencies: + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.3': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.1.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.7': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.1 + prettier: 2.8.8 + + '@clack/core@1.4.3': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@clack/prompts@1.7.0': + dependencies: + '@clack/core': 1.4.3 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@esbuild/aix-ppc64@0.27.2': + optional: true + + '@esbuild/android-arm64@0.27.2': + optional: true + + '@esbuild/android-arm@0.27.2': + optional: true + + '@esbuild/android-x64@0.27.2': + optional: true + + '@esbuild/darwin-arm64@0.27.2': + optional: true + + '@esbuild/darwin-x64@0.27.2': + optional: true + + '@esbuild/freebsd-arm64@0.27.2': + optional: true + + '@esbuild/freebsd-x64@0.27.2': + optional: true + + '@esbuild/linux-arm64@0.27.2': + optional: true + + '@esbuild/linux-arm@0.27.2': + optional: true + + '@esbuild/linux-ia32@0.27.2': + optional: true + + '@esbuild/linux-loong64@0.27.2': + optional: true + + '@esbuild/linux-mips64el@0.27.2': + optional: true + + '@esbuild/linux-ppc64@0.27.2': + optional: true + + '@esbuild/linux-riscv64@0.27.2': + optional: true + + '@esbuild/linux-s390x@0.27.2': + optional: true + + '@esbuild/linux-x64@0.27.2': + optional: true + + '@esbuild/netbsd-arm64@0.27.2': + optional: true + + '@esbuild/netbsd-x64@0.27.2': + optional: true + + '@esbuild/openbsd-arm64@0.27.2': + optional: true + + '@esbuild/openbsd-x64@0.27.2': + optional: true + + '@esbuild/openharmony-arm64@0.27.2': + optional: true + + '@esbuild/sunos-x64@0.27.2': + optional: true + + '@esbuild/win32-arm64@0.27.2': + optional: true + + '@esbuild/win32-ia32@0.27.2': + optional: true + + '@esbuild/win32-x64@0.27.2': + optional: true + + '@inquirer/external-editor@1.0.3(@types/node@26.1.1)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 26.1.1 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.0': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.19': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.26.0 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.26.0 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.18.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/rollup-android-arm-eabi@4.34.9': + optional: true + + '@rollup/rollup-android-arm-eabi@4.55.1': + optional: true + + '@rollup/rollup-android-arm64@4.34.9': + optional: true + + '@rollup/rollup-android-arm64@4.55.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.55.1': + optional: true + + '@rollup/rollup-darwin-x64@4.34.9': + optional: true + + '@rollup/rollup-darwin-x64@4.55.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.34.9': + optional: true + + '@rollup/rollup-freebsd-arm64@4.55.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.34.9': + optional: true + + '@rollup/rollup-freebsd-x64@4.55.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.34.9': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.34.9': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.55.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.55.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.55.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.55.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.55.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.34.9': + optional: true + + '@rollup/rollup-linux-x64-musl@4.55.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.55.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.55.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.55.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.55.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.55.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.34.9': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.55.1': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@standard-schema/spec@1.1.0': {} + + '@swc/core-darwin-arm64@1.5.5': + optional: true + + '@swc/core-darwin-x64@1.5.5': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.5.5': + optional: true + + '@swc/core-linux-arm64-gnu@1.5.5': + optional: true + + '@swc/core-linux-arm64-musl@1.5.5': + optional: true + + '@swc/core-linux-x64-gnu@1.5.5': + optional: true + + '@swc/core-linux-x64-musl@1.5.5': + optional: true + + '@swc/core-win32-arm64-msvc@1.5.5': + optional: true + + '@swc/core-win32-ia32-msvc@1.5.5': + optional: true + + '@swc/core-win32-x64-msvc@1.5.5': + optional: true + + '@swc/core@1.5.5': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.5.5 + '@swc/core-darwin-x64': 1.5.5 + '@swc/core-linux-arm-gnueabihf': 1.5.5 + '@swc/core-linux-arm64-gnu': 1.5.5 + '@swc/core-linux-arm64-musl': 1.5.5 + '@swc/core-linux-x64-gnu': 1.5.5 + '@swc/core-linux-x64-musl': 1.5.5 + '@swc/core-win32-arm64-msvc': 1.5.5 + '@swc/core-win32-ia32-msvc': 1.5.5 + '@swc/core-win32-x64-msvc': 1.5.5 + optional: true + + '@swc/counter@0.1.3': + optional: true + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + optional: true + + '@turbo/darwin-64@2.10.6': + optional: true + + '@turbo/darwin-arm64@2.10.6': + optional: true + + '@turbo/linux-64@2.10.6': + optional: true + + '@turbo/linux-arm64@2.10.6': + optional: true + + '@turbo/windows-64@2.10.6': + optional: true + + '@turbo/windows-arm64@2.10.6': + optional: true - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + '@types/chai@5.2.2': dependencies: - p-locate: 4.1.0 - dev: true + '@types/deep-eql': 4.0.2 - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true + '@types/deep-eql@4.0.2': {} - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true + '@types/estree@1.0.6': {} - /lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: true + '@types/estree@1.0.8': {} - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 + '@types/node@12.20.55': {} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + '@types/node@26.1.1': dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true + undici-types: 8.3.0 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true - /magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + '@typescript/typescript-darwin-x64@7.0.2': + optional: true - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true - /meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true + '@typescript/typescript-linux-arm64@7.0.2': + optional: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + '@typescript/typescript-linux-arm@7.0.2': + optional: true - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 + '@typescript/typescript-linux-loong64@7.0.2': + optional: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: false + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 + '@typescript/typescript-linux-s390x@7.0.2': + optional: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true + '@typescript/typescript-linux-x64@7.0.2': + optional: true - /mixme@0.5.9: - resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} - engines: {node: '>= 8.0.0'} - dev: true + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true - /mlly@1.4.0: - resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} - dependencies: - acorn: 8.10.0 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.2.0 + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true - /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 + '@typescript/typescript-sunos-x64@7.0.2': + optional: true - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + '@typescript/typescript-win32-arm64@7.0.2': + optional: true - /nodemon@3.0.1: - resolution: {integrity: sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - chokidar: 3.5.3 - debug: 3.2.7(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.5.4 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.0 - undefsafe: 2.0.5 - dev: true - - /nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@vitest/expect@4.1.10': dependencies: - abbrev: 1.1.1 - dev: true + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.2 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + chai: 6.2.2 + tinyrainbow: 3.1.0 - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + '@vitest/mocker@4.1.10(vite@7.3.1(@types/node@26.1.1)(jiti@2.7.0))': dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.4 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.1(@types/node@26.1.1)(jiti@2.7.0) - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true + '@vitest/pretty-format@4.1.10': + dependencies: + tinyrainbow: 3.1.0 - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + '@vitest/runner@4.1.10': dependencies: - path-key: 3.1.1 + '@vitest/utils': 4.1.10 + pathe: 2.0.3 - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@vitest/snapshot@4.1.10': dependencies: - path-key: 4.0.0 - dev: false + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 + magic-string: 0.30.21 + pathe: 2.0.3 - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + '@vitest/spy@4.1.10': {} - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true + '@vitest/utils@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + acorn@8.14.1: {} - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true + ansi-colors@4.1.3: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 + ansi-regex@5.0.1: {} - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 + ansi-regex@6.0.1: {} - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + ansi-styles@4.3.0: dependencies: - mimic-fn: 4.0.0 - dev: false + color-convert: 2.0.1 - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: true + ansi-styles@6.2.1: {} - /outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true + any-promise@1.3.0: {} - /p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} + argparse@1.0.10: dependencies: - p-map: 2.1.0 - dev: true + sprintf-js: 1.0.3 - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true + argparse@2.0.1: {} - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true + array-union@2.1.0: {} - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 + balanced-match@1.0.2: {} - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + better-path-resolve@1.0.0: dependencies: - p-limit: 2.3.0 - dev: true + is-windows: 1.0.2 - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + brace-expansion@2.0.1: dependencies: - p-limit: 3.1.0 - dev: true - - /p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true + balanced-match: 1.0.2 - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + braces@3.0.3: + dependencies: + fill-range: 7.1.1 - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + bundle-require@5.1.0(esbuild@0.27.2): dependencies: - '@babel/code-frame': 7.22.10 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true + esbuild: 0.27.2 + load-tsconfig: 0.2.5 - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + cac@6.7.14: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + chai@6.2.2: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + chardet@2.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: false + chokidar@4.0.3: + dependencies: + readdirp: 4.0.2 - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + chownr@3.0.0: {} - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + citty@0.2.2: {} - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + color-name@1.1.4: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + commander@4.1.1: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + confbox@0.1.8: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + consola@3.4.0: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + convert-source-map@2.0.0: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + cross-spawn@7.0.6: dependencies: - find-up: 4.1.0 - dev: true + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + debug@4.4.1: dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.0 - pathe: 1.1.1 + ms: 2.1.3 - /postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 2.3.1 - dev: true + detect-indent@6.1.0: {} - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} - engines: {node: ^10 || ^12 || >=14} + dir-glob@3.0.1: dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 + path-type: 4.0.0 - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: true + eastasianwidth@0.2.0: {} - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + emoji-regex@8.0.0: {} - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} - engines: {node: '>=14'} - hasBin: true - dev: true + emoji-regex@9.2.2: {} - /pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + enquirer@2.4.1: dependencies: - '@jest/schemas': 29.6.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true + es-module-lexer@2.1.0: {} - /pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - dev: true + esbuild@0.27.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 + + esprima@4.0.1: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + execa@10.0.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + path-key: 4.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + which-command: 0.1.0 + yoctocolors: 2.1.2 - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true + expect-type@1.3.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + extendable-error@0.1.7: {} - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + fast-string-truncated-width@3.0.3: {} - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + fast-string-width@3.0.2: dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true + fast-string-truncated-width: 3.0.3 - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + fast-wrap-ansi@0.2.2: dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true + fast-string-width: 3.0.2 - /read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + fastq@1.18.0: dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true + reusify: 1.0.4 - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true + fdir@6.4.4(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} + fill-range@7.1.1: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true + to-regex-range: 5.0.1 - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.7.4 + rollup: 4.34.9 - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + foreground-child@3.1.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true + fs-extra@7.0.1: dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 - /rollup@3.28.0: - resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 + fsevents@2.3.3: + optional: true - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + get-stream@9.0.1: dependencies: - queue-microtask: 1.2.3 - dev: true + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 - /safe-array-concat@1.0.0: - resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} - engines: {node: '>=0.4'} + glob-parent@5.1.2: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true + is-glob: 4.0.3 - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + glob@10.3.10: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-regex: 1.1.4 - dev: true + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 5.0.0 + path-scurry: 1.10.1 - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true + graceful-fs@4.2.11: {} - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true + human-id@4.1.1: {} - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + human-signals@8.0.1: {} - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: dependencies: - shebang-regex: 1.0.0 - dev: true + safer-buffer: 2.1.2 - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 + ignore@5.3.2: {} - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + is-extglob@2.1.1: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + is-glob@4.0.3: dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 - dev: true + is-extglob: 2.1.1 - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + is-number@7.0.0: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + is-plain-obj@4.1.0: {} - /simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} + is-stream@4.0.1: {} + + is-subdir@1.2.0: dependencies: - semver: 7.5.4 - dev: true + better-path-resolve: 1.0.0 - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false + is-unicode-supported@2.1.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + is-windows@1.0.2: {} - /smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true + isexe@2.0.0: {} + + jackspeak@2.3.6: dependencies: - array.prototype.flat: 1.3.1 - breakword: 1.0.6 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 - /smol-toml@1.1.1: - resolution: {integrity: sha512-qyYMygHyDKiy82iiKTH/zXr0DZmEpsou0AMZnkXdYhA/0LhPLoZ/xHaOBrbecLbAJ/Gd5KhMWWH8TXtgv1g+DQ==} - engines: {node: '>= 18', pnpm: '>= 8'} - dev: false + jiti@2.7.0: {} - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + joycon@3.1.1: {} - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + js-yaml@3.14.1: dependencies: - whatwg-url: 7.1.0 - dev: true + argparse: 1.0.10 + esprima: 4.0.1 - /spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + js-yaml@4.1.1: dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - dev: true + argparse: 2.0.1 - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: true + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + lilconfig@3.1.2: {} - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true + lines-and-columns@1.2.4: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + load-tsconfig@0.2.5: {} + + locate-path@5.0.0: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: true + p-locate: 4.1.0 - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true + lodash.startcase@4.4.0: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + lru-cache@10.1.0: {} - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.3: + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.0 + source-map-js: 1.2.1 - /std-env@3.3.3: - resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} + merge2@1.4.1: {} - /stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + micromatch@4.0.8: dependencies: - mixme: 0.5.9 - dev: true + braces: 3.0.3 + picomatch: 2.3.1 - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + minimatch@9.0.3: dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true + brace-expansion: 2.0.1 + + minipass@5.0.0: {} - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} + minipass@7.1.2: {} + + minizlib@3.1.0: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true + minipass: 7.1.2 - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + mlly@1.7.4: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true + acorn: 8.14.1 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + mri@1.2.0: {} - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + ms@2.1.3: {} + + mz@2.7.0: dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 - dev: true + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + nanoid@3.3.11: {} + + npm-run-path@6.0.0: dependencies: - ansi-regex: 5.0.1 + path-key: 4.0.0 + unicorn-magic: 0.3.0 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + object-assign@4.1.1: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + obug@2.1.1: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: false + outdent@0.5.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + p-filter@2.1.0: dependencies: - min-indent: 1.0.1 - dev: true + p-map: 2.1.0 - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + p-limit@2.3.0: dependencies: - acorn: 8.10.0 + p-try: 2.2.0 - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true + p-locate@4.1.0: dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 + p-limit: 2.3.0 - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true + p-map@2.1.0: {} - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 + p-try@2.2.0: {} - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true + package-manager-detector@0.2.8: {} - /term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true + parse-ms@4.0.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 + path-exists@4.0.0: {} - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 + path-key@3.1.1: {} - /tiny-colors@2.0.2: - resolution: {integrity: sha512-FYzA5Q5myp26PIZ4mx/03SreNgB1dGqcHJnj1Z8UVQ8/CBw0c6qRoPgRdk8rKpviY5diZyOmRGYMYKLYbjnmWQ==} - dev: false + path-key@4.0.0: {} - /tiny-updater@3.5.1: - resolution: {integrity: sha512-kh1922FSNPTmrdr353x+xJRTrrVFl9zq/Q1Vz47YNWhTO0jn3ZyZd6Cahe8qW5MLXg+gia+0G7b6HIgW7pbBMg==} + path-scurry@1.10.1: dependencies: - ionstore: 1.0.0 - tiny-colors: 2.0.2 - when-exit: 2.1.1 - dev: false + lru-cache: 10.1.0 + minipass: 7.1.2 - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + path-type@4.0.0: {} - /tinypool@0.6.0: - resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} - engines: {node: '>=14.0.0'} + pathe@2.0.3: {} - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} - engines: {node: '>=14.0.0'} + picocolors@1.1.1: {} - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: true + picomatch@2.3.1: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true + picomatch@4.0.3: {} - /touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true + pify@4.0.1: {} + + pirates@4.0.6: {} + + pkg-types@1.3.1: dependencies: - nopt: 1.0.10 - dev: true + confbox: 0.1.8 + mlly: 1.7.4 + pathe: 2.0.3 - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + postcss-load-config@6.0.1(jiti@2.7.0)(postcss@8.5.6): dependencies: - punycode: 2.3.0 - dev: true + lilconfig: 3.1.2 + optionalDependencies: + jiti: 2.7.0 + postcss: 8.5.6 - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: true + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true + prettier@2.8.8: {} - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + prettier@3.9.6: {} - /tsup@7.2.0(@swc/core@1.3.75)(typescript@5.1.6): - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true + pretty-ms@9.3.0: dependencies: - '@swc/core': 1.3.75 - bundle-require: 4.0.1(esbuild@0.18.20) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 3.28.0 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true + parse-ms: 4.0.0 - /tsup@7.2.0(@swc/core@1.3.76)(typescript@5.1.6): - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - '@swc/core': 1.3.76 - bundle-require: 4.0.1(esbuild@0.18.20) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 3.28.0 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true + queue-microtask@1.2.3: {} - /tty-table@4.2.1: - resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} - engines: {node: '>=8.0.0'} - hasBin: true + read-yaml-file@1.1.0: dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - dev: true + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 - /turbo-darwin-64@1.10.12: - resolution: {integrity: sha512-vmDfGVPl5/aFenAbOj3eOx3ePNcWVUyZwYr7taRl0ZBbmv2TzjRiFotO4vrKCiTVnbqjQqAFQWY2ugbqCI1kOQ==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + readdirp@4.0.2: {} - /turbo-darwin-arm64@1.10.12: - resolution: {integrity: sha512-3JliEESLNX2s7g54SOBqqkqJ7UhcOGkS0ywMr5SNuvF6kWVTbuUq7uBU/sVbGq8RwvK1ONlhPvJne5MUqBCTCQ==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + regenerator-runtime@0.14.1: {} - /turbo-linux-64@1.10.12: - resolution: {integrity: sha512-siYhgeX0DidIfHSgCR95b8xPee9enKSOjCzx7EjTLmPqPaCiVebRYvbOIYdQWRqiaKh9yfhUtFmtMOMScUf1gg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + resolve-from@5.0.0: {} - /turbo-linux-arm64@1.10.12: - resolution: {integrity: sha512-K/ZhvD9l4SslclaMkTiIrnfcACgos79YcAo4kwc8bnMQaKuUeRpM15sxLpZp3xDjDg8EY93vsKyjaOhdFG2UbA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + reusify@1.0.4: {} - /turbo-windows-64@1.10.12: - resolution: {integrity: sha512-7FSgSwvktWDNOqV65l9AbZwcoueAILeE4L7JvjauNASAjjbuzXGCEq5uN8AQU3U5BOFj4TdXrVmO2dX+lLu8Zg==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + rollup@4.34.9: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.34.9 + '@rollup/rollup-android-arm64': 4.34.9 + '@rollup/rollup-darwin-arm64': 4.34.9 + '@rollup/rollup-darwin-x64': 4.34.9 + '@rollup/rollup-freebsd-arm64': 4.34.9 + '@rollup/rollup-freebsd-x64': 4.34.9 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.9 + '@rollup/rollup-linux-arm-musleabihf': 4.34.9 + '@rollup/rollup-linux-arm64-gnu': 4.34.9 + '@rollup/rollup-linux-arm64-musl': 4.34.9 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.9 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9 + '@rollup/rollup-linux-riscv64-gnu': 4.34.9 + '@rollup/rollup-linux-s390x-gnu': 4.34.9 + '@rollup/rollup-linux-x64-gnu': 4.34.9 + '@rollup/rollup-linux-x64-musl': 4.34.9 + '@rollup/rollup-win32-arm64-msvc': 4.34.9 + '@rollup/rollup-win32-ia32-msvc': 4.34.9 + '@rollup/rollup-win32-x64-msvc': 4.34.9 + fsevents: 2.3.3 + + rollup@4.55.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.55.1 + '@rollup/rollup-android-arm64': 4.55.1 + '@rollup/rollup-darwin-arm64': 4.55.1 + '@rollup/rollup-darwin-x64': 4.55.1 + '@rollup/rollup-freebsd-arm64': 4.55.1 + '@rollup/rollup-freebsd-x64': 4.55.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 + '@rollup/rollup-linux-arm-musleabihf': 4.55.1 + '@rollup/rollup-linux-arm64-gnu': 4.55.1 + '@rollup/rollup-linux-arm64-musl': 4.55.1 + '@rollup/rollup-linux-loong64-gnu': 4.55.1 + '@rollup/rollup-linux-loong64-musl': 4.55.1 + '@rollup/rollup-linux-ppc64-gnu': 4.55.1 + '@rollup/rollup-linux-ppc64-musl': 4.55.1 + '@rollup/rollup-linux-riscv64-gnu': 4.55.1 + '@rollup/rollup-linux-riscv64-musl': 4.55.1 + '@rollup/rollup-linux-s390x-gnu': 4.55.1 + '@rollup/rollup-linux-x64-gnu': 4.55.1 + '@rollup/rollup-linux-x64-musl': 4.55.1 + '@rollup/rollup-openbsd-x64': 4.55.1 + '@rollup/rollup-openharmony-arm64': 4.55.1 + '@rollup/rollup-win32-arm64-msvc': 4.55.1 + '@rollup/rollup-win32-ia32-msvc': 4.55.1 + '@rollup/rollup-win32-x64-gnu': 4.55.1 + '@rollup/rollup-win32-x64-msvc': 4.55.1 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 - /turbo-windows-arm64@1.10.12: - resolution: {integrity: sha512-gCNXF52dwom1HLY9ry/cneBPOKTBHhzpqhMylcyvJP0vp9zeMQQkt6yjYv+6QdnmELC92CtKNp2FsNZo+z0pyw==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + safer-buffer@2.1.2: {} - /turbo@1.10.12: - resolution: {integrity: sha512-WM3+jTfQWnB9W208pmP4oeehZcC6JQNlydb/ZHMRrhmQa+htGhWLCzd6Q9rLe0MwZLPpSPFV2/bN5egCLyoKjQ==} - hasBin: true - requiresBuild: true - optionalDependencies: - turbo-darwin-64: 1.10.12 - turbo-darwin-arm64: 1.10.12 - turbo-linux-64: 1.10.12 - turbo-linux-arm64: 1.10.12 - turbo-windows-64: 1.10.12 - turbo-windows-arm64: 1.10.12 - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + semver@7.6.3: {} - /type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + shebang-regex@3.0.0: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - dev: true - - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.12 - dev: true - - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - dev: true + siginfo@2.0.0: {} - /ufo@1.2.0: - resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} + signal-exit@4.1.0: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true + sisteransi@1.0.5: {} - /undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - dev: true + slash@3.0.0: {} - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true + source-map-js@1.2.1: {} - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + source-map@0.7.6: {} + + spawndamnit@3.0.1: dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true + cross-spawn: 7.0.6 + signal-exit: 4.1.0 - /vite-node@0.33.0(@types/node@20.5.0): - resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} - engines: {node: '>=v14.18.0'} - hasBin: true + sprintf-js@1.0.3: {} + + stackback@0.0.2: {} + + std-env@4.1.0: {} + + string-width@4.2.3: dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.0 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.5.0) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 - /vite@4.4.9(@types/node@20.5.0): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + string-width@5.1.2: dependencies: - '@types/node': 20.5.0 - esbuild: 0.18.20 - postcss: 8.4.28 - rollup: 3.28.0 - optionalDependencies: - fsevents: 2.3.2 + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 - /vitest@0.33.0: - resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true + strip-ansi@6.0.1: dependencies: - '@types/chai': 4.3.5 - '@types/chai-subset': 1.3.3 - '@types/node': 20.5.0 - '@vitest/expect': 0.33.0 - '@vitest/runner': 0.33.0 - '@vitest/snapshot': 0.33.0 - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 - acorn: 8.10.0 - acorn-walk: 8.2.0 - cac: 6.7.14 - chai: 4.3.7 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.2 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.3.3 - strip-literal: 1.3.0 - tinybench: 2.5.0 - tinypool: 0.6.0 - vite: 4.4.9(@types/node@20.5.0) - vite-node: 0.33.0(@types/node@20.5.0) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser + ansi-regex: 5.0.1 - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + strip-ansi@7.1.0: dependencies: - defaults: 1.0.4 - dev: true + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true + strip-final-newline@4.0.0: {} - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + sucrase@3.35.0: dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true + '@jridgewell/gen-mapping': 0.3.3 + 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 - /when-exit@2.1.1: - resolution: {integrity: sha512-XLipGldz/UcleuGaoQjbYuWwD+ICRnzIjlldtwTaTWr7aZz8yQW49rXk6MHQnh+KxOiWiJpM1vIyaxprOnlW4g==} - dev: false + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + tar@7.5.19: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true + '@isaacs/fs-minipass': 4.0.0 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true + term-size@2.2.1: {} - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} + thenify-all@1.6.0: dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: true + thenify: 3.3.1 - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} - engines: {node: '>= 0.4'} + thenify@3.3.1: dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true + any-promise: 1.3.0 - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true + tinybench@2.9.0: {} - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 + tinyexec@0.3.2: {} - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 + tinyexec@1.0.2: {} - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + tinyglobby@0.2.14: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true + fdir: 6.4.4(picomatch@4.0.3) + picomatch: 4.0.3 - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + tinyglobby@0.2.15: dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + tinyrainbow@3.1.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true + tree-kill@1.2.2: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + ts-interface-checker@0.1.13: {} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true + tsup@8.5.1(@swc/core@1.5.5)(jiti@2.7.0)(postcss@8.5.6)(typescript@7.0.2): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.2) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.0 + debug: 4.4.1 + esbuild: 0.27.2 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.6) + resolve-from: 5.0.0 + rollup: 4.34.9 + source-map: 0.7.6 + sucrase: 3.35.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.5.5 + postcss: 8.5.6 + typescript: 7.0.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true + turbo@2.10.6: + optionalDependencies: + '@turbo/darwin-64': 2.10.6 + '@turbo/darwin-arm64': 2.10.6 + '@turbo/linux-64': 2.10.6 + '@turbo/linux-arm64': 2.10.6 + '@turbo/windows-64': 2.10.6 + '@turbo/windows-arm64': 2.10.6 + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + ufo@1.6.1: {} + + undici-types@8.3.0: {} + + unicorn-magic@0.3.0: {} + + universalify@0.1.2: {} + + vite@7.3.1(@types/node@26.1.1)(jiti@2.7.0): + dependencies: + esbuild: 0.27.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.55.1 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 26.1.1 + fsevents: 2.3.3 + jiti: 2.7.0 + + vitest@4.1.10(@types/node@26.1.1)(vite@7.3.1(@types/node@26.1.1)(jiti@2.7.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@7.3.1(@types/node@26.1.1)(jiti@2.7.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 7.3.1(@types/node@26.1.1)(jiti@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 26.1.1 + transitivePeerDependencies: + - msw - /yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - dev: true + which-command@0.1.0: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + which@2.0.2: dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true + isexe: 2.0.0 - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + wrap-ansi@7.0.0: dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 + ansi-styles: 4.3.0 string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true + strip-ansi: 6.0.1 - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yallist@5.0.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} + yoctocolors@2.1.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b2f187c..0f024f2 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,14 @@ packages: - - packages/* \ No newline at end of file + - packages/* +allowBuilds: + '@swc/core': true + esbuild: true +minimumReleaseAgeExclude: + - '@begit/core@0.3.5 || 0.4.0' + - '@turbo/darwin-64@2.10.6' + - '@turbo/darwin-arm64@2.10.6' + - '@turbo/linux-64@2.10.6' + - '@turbo/linux-arm64@2.10.6' + - '@turbo/windows-64@2.10.6' + - '@turbo/windows-arm64@2.10.6' + - turbo@2.10.6 diff --git a/scripts/gen-ssr-flip-server.mjs b/scripts/gen-ssr-flip-server.mjs new file mode 100644 index 0000000..c1f199e --- /dev/null +++ b/scripts/gen-ssr-flip-server.mjs @@ -0,0 +1,15 @@ +// One-off generator: embeds solid-v2/fullstack/server.js into ssr-flip.ts as an +// escaped template literal, guaranteeing the scaffolded file byte-matches the template. +import { readFileSync, writeFileSync } from "node:fs"; + +const [src, dest] = process.argv.slice(2); +const content = readFileSync(src, "utf8"); +const escaped = content.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${"); + +const target = readFileSync(dest, "utf8"); +const updated = target.replace( + /(\/\/ @generated-server-js-start\nexport const SERVER_JS = `)[\s\S]*?(`;\n\/\/ @generated-server-js-end)/, + `$1${escaped}$2`, +); +writeFileSync(dest, updated); +console.log("embedded", content.length, "bytes"); diff --git a/setup.ts b/setup.ts new file mode 100644 index 0000000..0b2b690 --- /dev/null +++ b/setup.ts @@ -0,0 +1,6 @@ +import type { TestProject } from "vitest/node"; +import { existsSync, rmSync } from "fs"; +export default function setup(project: TestProject) { + // Clean up test directory before running tests + if (existsSync("./test")) rmSync("./test", { recursive: true }); +} diff --git a/turbo.json b/turbo.json index b8c62ae..08facab 100644 --- a/turbo.json +++ b/turbo.json @@ -1,9 +1,9 @@ { - "$schema": "https://turbo.build/schema.json", - "pipeline": { + "$schema": "https://v2-10-6.turborepo.dev/schema.json", + "tasks": { "build": { "dependsOn": ["^build"], - "outputs": ["dist/**"] + "outputs": ["dist/**", "types/**"] }, "test": { "dependsOn": ["^test"] diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..3bc10e7 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vitest/config"; +export default defineConfig({ + test: { + globalSetup: ["./setup.ts"], + // "test" is where template-download tests scaffold projects; + // the scaffolded templates carry test files of their own + exclude: ["**/node_modules/**", "**/test/**"], + }, +});