├── .github └── workflows │ └── publish.yml ├── .gitignore ├── .replit ├── .vscode └── settings.json ├── LICENSE.md ├── README.md ├── deno.json ├── deno.lock ├── dnt.ts ├── example-app ├── .gitignore ├── .npmrc ├── README.md ├── package-lock.json ├── package.json ├── src │ ├── app.d.ts │ ├── app.html │ └── routes │ │ ├── +page.svelte │ │ └── api │ │ └── summarize │ │ └── +server.py ├── static │ └── favicon.png ├── svelte.config.js ├── sveltekit_modal_config.py ├── tsconfig.json └── vite.config.ts ├── import-map.json ├── mod.ts ├── replit.nix ├── src ├── bin.mjs └── vite │ ├── mod.ts │ └── sveltekit_modal │ ├── __init__.py │ ├── app.py │ ├── config.py │ ├── deploy.py │ ├── pyproject.toml │ ├── serve.py │ ├── src │ └── routes │ │ └── api │ │ └── upload │ │ └── .gitkeep │ └── sveltekit_modal_config.py └── test └── example.test.ts /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | publish: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: actions/setup-node@v3 13 | with: 14 | node-version: v18.x 15 | registry-url: https://registry.npmjs.org/ 16 | - uses: denoland/setup-deno@v1 17 | with: 18 | deno-version: v1.x 19 | - name: Run dnt 🛠️ 20 | run: deno task dnt 21 | - name: Publish package on NPM 📦 22 | working-directory: ./npm 23 | run: npm publish --access public 24 | env: 25 | NODE_AUTH_TOKEN: ${{secrets.NPM_ACCESS_TOKEN}} 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .deno 2 | npm 3 | -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | run = [ 2 | "deno", 3 | "task", 4 | "test" 5 | ] 6 | 7 | hidden = [".replit", "replit.nix", ".vscode", ".deno", ".github", ".gitignore", "LICENSE.md", "deno.lock", "dnt.ts"] 8 | 9 | entrypoint = "README.md" 10 | 11 | [languages.deno] 12 | pattern = "**/*.{ts,js}" 13 | 14 | [languages.deno.languageServer] 15 | start = ["deno", "lsp"] 16 | [languages.deno.languageServer.initializationOptions] 17 | enable = true 18 | lint = true 19 | 20 | [env] 21 | DENO_DIR = "/home/runner/${REPL_SLUG}/.deno" 22 | 23 | [nix] 24 | channel = "stable-22_11" 25 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | ".replit": true, 4 | "replit.nix": true, 5 | ".vscode": true, 6 | ".deno": true, 7 | ".github": true, 8 | ".gitignore": true, 9 | "LICENSE.md": true, 10 | "deno.lock": true, 11 | "dnt.ts": true 12 | } 13 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 SemiCognitive 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | imageimage 2 | 3 | # sveltekit-modal 4 | Write Python endpoints in [SvelteKit](https://kit.svelte.dev/) using [Modal](https://modal.com). 5 | 6 | ## Why 7 | - Start deploying **Python endpoints** in **just a few steps** 8 | - GPU support for an entire ML Stack in your SvelteKit app 9 | - Integrates completely, write `+server.py` just like your `+server.js` files 10 | - Deploy the rest of your app anywhere, with [SvelteKit's adapters for Vercel, Netlify, Cloudflare, etc.](https://kit.svelte.dev/docs/adapters) 11 | - Serverless Python with [ease](https://kit.svelte.dev/docs/adapters) 12 | 13 | ## Add to your SvelteKit project 14 | - Open a [new](https://kit.svelte.dev/docs/creating-a-project) or **existing** SvelteKit Project 15 | - Install `npm i -D sveltekit-modal` 16 | - Sign up for [modal.com](https://modal.com/signup), the serverless python platform. All users get $30 free monthly credits! 17 | - Update `vite.config.js` 18 | ```javascript 19 | import { sveltekit } from '@sveltejs/kit/vite'; 20 | import { defineConfig } from 'vite'; 21 | 22 | import { sveltekit_modal } from 'sveltekit-modal/vite'; //Add this import 23 | 24 | export default defineConfig({ 25 | plugins: [sveltekit_modal(), sveltekit()] //Add the `sveltekit_modal()` plugin 26 | }); 27 | ``` 28 | - Update `svelte.config.js` 29 | ```javascript 30 | import adapter from '@sveltejs/adapter-auto'; 31 | import { vitePreprocess } from '@sveltejs/kit/vite'; 32 | 33 | /** @type {import('@sveltejs/kit').Config} */ 34 | const config = { 35 | preprocess: vitePreprocess(), 36 | kit: { 37 | adapter: adapter(), 38 | moduleExtensions: [".js", ".ts", ".py"] //Add this line, to resolve +server.py endpoints 39 | } 40 | }; 41 | 42 | export default config; 43 | ``` 44 | - Create `sveltekit_modal_config.py`. The option `stub_asgi` is passed to [Modal](https://modal.com/docs/reference/modal.Stub#asgi). This is where you can define GPU acceleration, secrets, and an Image for pip installs, etc. Explore their [docs](https://modal.com/docs/guide)! 45 | ```python 46 | import modal 47 | 48 | config = { 49 | 'name': 'sveltekit-example', 50 | 'log': False, 51 | 'stub_asgi': { 52 | 'image': modal.Image.debian_slim() 53 | } 54 | } 55 | ``` 56 | - Update `.gitignore`, add `!.env.production`. 57 | - Write your endpoints! See an example [here](https://github.com/semicognitive/sveltekit-modal-langchain). 58 | 59 | ## Use 60 | - Develop like a normal SvelteKit app, just `npm run dev` 61 | - Deploy all your python endpoints with one command, just `npx sveltekit-modal deploy` 62 | 63 | ## Examples 64 | 65 | The `example_app/` directory contains an incredibly bare and demonstrates how to get it working. 66 | 67 | - [semicognitive/sveltekit-modal-langchain](https://github.com/semicognitive/sveltekit-modal-langchain) demonstrates a nice version of the library with [langchain](https://github.com/hwchase17/langchain) and [tailwindcss](https://tailwindcss.com/) -------------------------------------------------------------------------------- /deno.json: -------------------------------------------------------------------------------- 1 | { 2 | "package": { 3 | "name": "sveltekit-modal", 4 | "description": "Write Python endpoints in SvelteKit using Modal", 5 | "github": "semicognitive/sveltekit-modal" 6 | }, 7 | "tasks": { 8 | "test": "deno test --lock-write --allow-all --parallel test/", 9 | "dnt": "deno run -A dnt.ts $(git describe --tags $(git rev-list --tags --max-count=1))" 10 | }, 11 | "importMap": "import-map.json", 12 | "compilerOptions": { 13 | "lib": ["es2021", "dom", "dom.iterable"], 14 | "strict": true 15 | }, 16 | "fmt": { 17 | "files": { 18 | "include": ["README.md", "mod.ts", "dnt.ts", "deno.json", "import-map.json", "src/"], 19 | "exclude": [] 20 | } 21 | }, 22 | "lint": { 23 | "files": { 24 | "include": ["mod.ts", "dnt.ts", "src/"], 25 | "exclude": [] 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /deno.lock: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2", 3 | "remote": { 4 | "https://deno.land/std@0.111.0/_util/assert.ts": "2f868145a042a11d5ad0a3c748dcf580add8a0dbc0e876eaa0026303a5488f58", 5 | "https://deno.land/std@0.111.0/_util/os.ts": "dfb186cc4e968c770ab6cc3288bd65f4871be03b93beecae57d657232ecffcac", 6 | "https://deno.land/std@0.111.0/bytes/bytes_list.ts": "3bff6a09c72b2e0b1e92e29bd3b135053894196cca07a2bba842901073efe5cb", 7 | "https://deno.land/std@0.111.0/bytes/equals.ts": "69f55fdbd45c71f920c1a621e6c0865dc780cd8ae34e0f5e55a9497b70c31c1b", 8 | "https://deno.land/std@0.111.0/bytes/mod.ts": "fedb80b8da2e7ad8dd251148e65f92a04c73d6c5a430b7d197dc39588c8dda6f", 9 | "https://deno.land/std@0.111.0/fmt/colors.ts": "8368ddf2d48dfe413ffd04cdbb7ae6a1009cf0dccc9c7ff1d76259d9c61a0621", 10 | "https://deno.land/std@0.111.0/fs/_util.ts": "f2ce811350236ea8c28450ed822a5f42a0892316515b1cd61321dec13569c56b", 11 | "https://deno.land/std@0.111.0/fs/ensure_dir.ts": "b7c103dc41a3d1dbbb522bf183c519c37065fdc234831a4a0f7d671b1ed5fea7", 12 | "https://deno.land/std@0.111.0/hash/sha256.ts": "bd85257c68d1fdd9da8457284c4fbb04efa9f4f2229b5f41a638d5b71a3a8d5c", 13 | "https://deno.land/std@0.111.0/io/buffer.ts": "fdf93ba9e5d20ff3369e2c42443efd89131f8a73066f7f59c033cc588a0e2cfe", 14 | "https://deno.land/std@0.111.0/io/types.d.ts": "89a27569399d380246ca7cdd9e14d5e68459f11fb6110790cc5ecbd4ee7f3215", 15 | "https://deno.land/std@0.111.0/path/_constants.ts": "1247fee4a79b70c89f23499691ef169b41b6ccf01887a0abd131009c5581b853", 16 | "https://deno.land/std@0.111.0/path/_interface.ts": "1fa73b02aaa24867e481a48492b44f2598cd9dfa513c7b34001437007d3642e4", 17 | "https://deno.land/std@0.111.0/path/_util.ts": "2e06a3b9e79beaf62687196bd4b60a4c391d862cfa007a20fc3a39f778ba073b", 18 | "https://deno.land/std@0.111.0/path/common.ts": "f41a38a0719a1e85aa11c6ba3bea5e37c15dd009d705bd8873f94c833568cbc4", 19 | "https://deno.land/std@0.111.0/path/glob.ts": "ea87985765b977cc284b92771003b2070c440e0807c90e1eb0ff3e095911a820", 20 | "https://deno.land/std@0.111.0/path/mod.ts": "4465dc494f271b02569edbb4a18d727063b5dbd6ed84283ff906260970a15d12", 21 | "https://deno.land/std@0.111.0/path/posix.ts": "34349174b9cd121625a2810837a82dd8b986bbaaad5ade690d1de75bbb4555b2", 22 | "https://deno.land/std@0.111.0/path/separator.ts": "8fdcf289b1b76fd726a508f57d3370ca029ae6976fcde5044007f062e643ff1c", 23 | "https://deno.land/std@0.111.0/path/win32.ts": "11549e8c6df8307a8efcfa47ad7b2a75da743eac7d4c89c9723a944661c8bd2e", 24 | "https://deno.land/std@0.111.0/streams/conversion.ts": "fe0059ed9d3c53eda4ba44eb71a6a9acb98c5fdb5ba1b6c6ab28004724c7641b", 25 | "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", 26 | "https://deno.land/std@0.140.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", 27 | "https://deno.land/std@0.140.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", 28 | "https://deno.land/std@0.140.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", 29 | "https://deno.land/std@0.140.0/fs/expand_glob.ts": "0c10130d67c9b02164b03df8e43c6d6defbf8e395cb69d09e84a8586e6d72ac3", 30 | "https://deno.land/std@0.140.0/fs/walk.ts": "117403ccd21fd322febe56ba06053b1ad5064c802170f19b1ea43214088fe95f", 31 | "https://deno.land/std@0.140.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", 32 | "https://deno.land/std@0.140.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", 33 | "https://deno.land/std@0.140.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", 34 | "https://deno.land/std@0.140.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", 35 | "https://deno.land/std@0.140.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", 36 | "https://deno.land/std@0.140.0/path/mod.ts": "d3e68d0abb393fb0bf94a6d07c46ec31dc755b544b13144dee931d8d5f06a52d", 37 | "https://deno.land/std@0.140.0/path/posix.ts": "293cdaec3ecccec0a9cc2b534302dfe308adb6f10861fa183275d6695faace44", 38 | "https://deno.land/std@0.140.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", 39 | "https://deno.land/std@0.140.0/path/win32.ts": "31811536855e19ba37a999cd8d1b62078235548d67902ece4aa6b814596dd757", 40 | "https://deno.land/std@0.143.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", 41 | "https://deno.land/std@0.143.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", 42 | "https://deno.land/std@0.143.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", 43 | "https://deno.land/std@0.143.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", 44 | "https://deno.land/std@0.143.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", 45 | "https://deno.land/std@0.143.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", 46 | "https://deno.land/std@0.143.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", 47 | "https://deno.land/std@0.143.0/path/mod.ts": "d3e68d0abb393fb0bf94a6d07c46ec31dc755b544b13144dee931d8d5f06a52d", 48 | "https://deno.land/std@0.143.0/path/posix.ts": "293cdaec3ecccec0a9cc2b534302dfe308adb6f10861fa183275d6695faace44", 49 | "https://deno.land/std@0.143.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", 50 | "https://deno.land/std@0.143.0/path/win32.ts": "31811536855e19ba37a999cd8d1b62078235548d67902ece4aa6b814596dd757", 51 | "https://deno.land/std@0.171.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", 52 | "https://deno.land/std@0.171.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", 53 | "https://deno.land/std@0.171.0/fmt/colors.ts": "938c5d44d889fb82eff6c358bea8baa7e85950a16c9f6dae3ec3a7a729164471", 54 | "https://deno.land/std@0.171.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32", 55 | "https://deno.land/std@0.171.0/fs/empty_dir.ts": "c3d2da4c7352fab1cf144a1ecfef58090769e8af633678e0f3fabaef98594688", 56 | "https://deno.land/std@0.171.0/fs/expand_glob.ts": "536055845aafc32de7e7a46c3b778a741825d5e2ed8580d9851a01ec7a5adf2e", 57 | "https://deno.land/std@0.171.0/fs/walk.ts": "ea95ffa6500c1eda6b365be488c056edc7c883a1db41ef46ec3bf057b1c0fe32", 58 | "https://deno.land/std@0.171.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", 59 | "https://deno.land/std@0.171.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", 60 | "https://deno.land/std@0.171.0/path/_util.ts": "86c2375a996c1931b2f2ac71fefd5ddf0cf0e579fa4ab12d3e4c552d4223b8d8", 61 | "https://deno.land/std@0.171.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", 62 | "https://deno.land/std@0.171.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", 63 | "https://deno.land/std@0.171.0/path/mod.ts": "4b83694ac500d7d31b0cdafc927080a53dc0c3027eb2895790fb155082b0d232", 64 | "https://deno.land/std@0.171.0/path/posix.ts": "2ecc259e6f34013889b7638ff90339a82d8178f629155761ce6001e41af55a43", 65 | "https://deno.land/std@0.171.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", 66 | "https://deno.land/std@0.171.0/path/win32.ts": "99170a0eb0e2b1ce41499c1e86bb55320cb6606299ad947f57ee0a291cdb93d5", 67 | "https://deno.land/std@0.174.0/fmt/colors.ts": "938c5d44d889fb82eff6c358bea8baa7e85950a16c9f6dae3ec3a7a729164471", 68 | "https://deno.land/std@0.174.0/testing/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea", 69 | "https://deno.land/std@0.174.0/testing/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7", 70 | "https://deno.land/std@0.174.0/testing/_test_suite.ts": "30f018feeb3835f12ab198d8a518f9089b1bcb2e8c838a8b615ab10d5005465c", 71 | "https://deno.land/std@0.174.0/testing/asserts.ts": "984ab0bfb3faeed92ffaa3a6b06536c66811185328c5dd146257c702c41b01ab", 72 | "https://deno.land/std@0.174.0/testing/bdd.ts": "c5ca6d85940dbcc19b4d2bc3608d49ab65d81470aa91306d5efa4b0d5c945731", 73 | "https://deno.land/std@0.177.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", 74 | "https://deno.land/std@0.177.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", 75 | "https://deno.land/std@0.177.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32", 76 | "https://deno.land/std@0.177.0/fs/copy.ts": "14214efd94fc3aa6db1e4af2b4b9578e50f7362b7f3725d5a14ad259a5df26c8", 77 | "https://deno.land/std@0.177.0/fs/empty_dir.ts": "c3d2da4c7352fab1cf144a1ecfef58090769e8af633678e0f3fabaef98594688", 78 | "https://deno.land/std@0.177.0/fs/ensure_dir.ts": "724209875497a6b4628dfb256116e5651c4f7816741368d6c44aab2531a1e603", 79 | "https://deno.land/std@0.177.0/fs/ensure_file.ts": "c38602670bfaf259d86ca824a94e6cb9e5eb73757fefa4ebf43a90dd017d53d9", 80 | "https://deno.land/std@0.177.0/fs/ensure_link.ts": "c0f5b2f0ec094ed52b9128eccb1ee23362a617457aa0f699b145d4883f5b2fb4", 81 | "https://deno.land/std@0.177.0/fs/ensure_symlink.ts": "2955cc8332aeca9bdfefd05d8d3976b94e282b0f353392a71684808ed2ffdd41", 82 | "https://deno.land/std@0.177.0/fs/eol.ts": "f1f2eb348a750c34500741987b21d65607f352cf7205f48f4319d417fff42842", 83 | "https://deno.land/std@0.177.0/fs/exists.ts": "b8c8a457b71e9d7f29b9d2f87aad8dba2739cbe637e8926d6ba6e92567875f8e", 84 | "https://deno.land/std@0.177.0/fs/expand_glob.ts": "45d17e89796a24bd6002e4354eda67b4301bb8ba67d2cac8453cdabccf1d9ab0", 85 | "https://deno.land/std@0.177.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898", 86 | "https://deno.land/std@0.177.0/fs/move.ts": "4cb47f880e3f0582c55e71c9f8b1e5e8cfaacb5e84f7390781dd563b7298ec19", 87 | "https://deno.land/std@0.177.0/fs/walk.ts": "ea95ffa6500c1eda6b365be488c056edc7c883a1db41ef46ec3bf057b1c0fe32", 88 | "https://deno.land/std@0.177.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", 89 | "https://deno.land/std@0.177.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", 90 | "https://deno.land/std@0.177.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", 91 | "https://deno.land/std@0.177.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", 92 | "https://deno.land/std@0.177.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", 93 | "https://deno.land/std@0.177.0/path/mod.ts": "4b83694ac500d7d31b0cdafc927080a53dc0c3027eb2895790fb155082b0d232", 94 | "https://deno.land/std@0.177.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", 95 | "https://deno.land/std@0.177.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", 96 | "https://deno.land/std@0.177.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", 97 | "https://deno.land/x/code_block_writer@11.0.3/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5", 98 | "https://deno.land/x/code_block_writer@11.0.3/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff", 99 | "https://deno.land/x/deno_cache@0.2.1/auth_tokens.ts": "01b94d25abd974153a3111653998b9a43c66d84a0e4b362fc5f4bbbf40a6e0f7", 100 | "https://deno.land/x/deno_cache@0.2.1/cache.ts": "67e301c20161546fea45405316314f4c3d85cc7a367b2fb72042903f308f55b7", 101 | "https://deno.land/x/deno_cache@0.2.1/deno_dir.ts": "e4dc68da5641aa337bcc06fb1df28fcb086b366dcbea7d8aaed7ac7c853fedb1", 102 | "https://deno.land/x/deno_cache@0.2.1/deps.ts": "2ebaba0ad86fff8b9027c6afd4c3909a17cd8bf8c9e263151c980c15c56a18ee", 103 | "https://deno.land/x/deno_cache@0.2.1/dirs.ts": "e07003fabed7112375d4a50040297aae768f9d06bb6c2655ca46880653b576b4", 104 | "https://deno.land/x/deno_cache@0.2.1/disk_cache.ts": "d7a361f0683a032bcca28513a7bbedc28c77cfcc6719e6f6cea156c0ff1108df", 105 | "https://deno.land/x/deno_cache@0.2.1/file_fetcher.ts": "352702994c190c45215f3b8086621e117e88bc2174b020faefb5eca653d71d6a", 106 | "https://deno.land/x/deno_cache@0.2.1/http_cache.ts": "af1500149496e2d0acadec24569e2a9c86a3f600cceef045dcf6f5ce8de72b3a", 107 | "https://deno.land/x/deno_cache@0.2.1/mod.ts": "709ab9d1068be5fd77b020b33e7a9394f1e9b453553b1e2336b72c90283cf3c0", 108 | "https://deno.land/x/deno_cache@0.2.1/util.ts": "652479928551259731686686ff2df6f26bc04e8e4d311137b2bf3bc10f779f48", 109 | "https://deno.land/x/deno_graph@0.6.0/lib/deno_graph.generated.js": "3e1cccd6376d4ad0ea789d66aa0f6b19f737fa8da37b5e6185ef5c269c974f54", 110 | "https://deno.land/x/deno_graph@0.6.0/lib/loader.ts": "13a11c1dea0d85e0ad211be77217b8c06138bbb916afef6f50a04cca415084a9", 111 | "https://deno.land/x/deno_graph@0.6.0/lib/media_type.ts": "36be751aa63d6ae36475b90dca5fae8fd7c3a77cf13684c48cf23a85ee607b31", 112 | "https://deno.land/x/deno_graph@0.6.0/lib/snippets/deno_graph-1c138d6136337537/src/deno_apis.js": "f13f2678d875372cf8489ceb7124623a39fa5bf8de8ee1ec722dbb2ec5ec7845", 113 | "https://deno.land/x/deno_graph@0.6.0/lib/types.d.ts": "68cb232e02a984658b40ffaf6cafb979a06fbfdce7f5bd4c7a83ed1a32a07687", 114 | "https://deno.land/x/deno_graph@0.6.0/mod.ts": "8fe3d39bdcb273adfb41a0bafbbaabec4c6fe6c611b47fed8f46f218edb37e8e", 115 | "https://deno.land/x/dnt@0.33.0/lib/compiler.ts": "dd589db479d6d7e69999865003ab83c41544e251ece4f21f2f2ee74557097ba6", 116 | "https://deno.land/x/dnt@0.33.0/lib/compiler_transforms.ts": "cbb1fd5948f5ced1aa5c5aed9e45134e2357ce1e7220924c1d7bded30dcd0dd0", 117 | "https://deno.land/x/dnt@0.33.0/lib/mod.deps.ts": "6648fb17b4a49677cb0c24f60ffb5067a86ad69ff97712d40fe0d62b281b1811", 118 | "https://deno.land/x/dnt@0.33.0/lib/npm_ignore.ts": "ddc1a7a76b288ca471bf1a6298527887a0f9eb7e25008072fd9c9fa9bb28c71a", 119 | "https://deno.land/x/dnt@0.33.0/lib/package_json.ts": "2d629dbaef8004971e38ce3661f04b915a35342b905c3d98ff4a25343c2a8293", 120 | "https://deno.land/x/dnt@0.33.0/lib/pkg/dnt_wasm.generated.js": "00257fc2f03321bb5f2b9bc23cb85e79fe55eb49a325d5ab925b9fc81b4aa963", 121 | "https://deno.land/x/dnt@0.33.0/lib/pkg/snippets/dnt-wasm-a15ef721fa5290c5/helpers.js": "2f623f83602d4fbb30caa63444b10e35b45e9c2b267e49585ec9bb790a4888d8", 122 | "https://deno.land/x/dnt@0.33.0/lib/shims.ts": "7998851b149cb230f5183590d3b66c06f696fefb1c31c24eb5736f1ef12a4de1", 123 | "https://deno.land/x/dnt@0.33.0/lib/test_runner/get_test_runner_code.ts": "2a4e26aa33120f3cc9e03b8538211a5047a4bad4c64e895944b87f2dcd55d904", 124 | "https://deno.land/x/dnt@0.33.0/lib/test_runner/test_runner.ts": "b91d77d9d4b82984cb2ba7431ba6935756ba72f62e7dd4db22cd47a680ebd952", 125 | "https://deno.land/x/dnt@0.33.0/lib/transform.deps.ts": "28cee4e09a7c6baf156d363cdeb408088d00e7cb7755946202cb62b47ed223ec", 126 | "https://deno.land/x/dnt@0.33.0/lib/types.ts": "34e45a3136c2f21f797173ea46d9ea5d1639eb7b834a5bd565aad4214fa32603", 127 | "https://deno.land/x/dnt@0.33.0/lib/utils.ts": "5b7bba18f4d4d91b79343216c93a7b21d9dd6019e4d3a7b25ba043d44a1fc237", 128 | "https://deno.land/x/dnt@0.33.0/mod.ts": "691ea4b644cc61123b7beed19e66af301f25985483b81d21cfe49a0be2877fd9", 129 | "https://deno.land/x/dnt@0.33.0/transform.ts": "5960cf0b84d5bfae3ca61569a344a467f448d8e96ab1eceee8cb181698fb6c65", 130 | "https://deno.land/x/ts_morph@17.0.1/bootstrap/mod.ts": "b53aad517f106c4079971fcd4a81ab79fadc40b50061a3ab2b741a09119d51e9", 131 | "https://deno.land/x/ts_morph@17.0.1/bootstrap/ts_morph_bootstrap.d.ts": "607e651c5ae5aa57c2ac4090759a6379e809c0cdc42114742ac67353b1a75038", 132 | "https://deno.land/x/ts_morph@17.0.1/bootstrap/ts_morph_bootstrap.js": "91a954daa993c5acb3361aa5279394f81ea6fe18b3854345c86111b336491cfc", 133 | "https://deno.land/x/ts_morph@17.0.1/common/DenoRuntime.ts": "537800e840d0994f9055164e11bf33eadf96419246af0d3c453793c3ae67bdb3", 134 | "https://deno.land/x/ts_morph@17.0.1/common/mod.ts": "01985d2ee7da8d1caee318a9d07664774fbee4e31602bc2bb6bb62c3489555ed", 135 | "https://deno.land/x/ts_morph@17.0.1/common/ts_morph_common.d.ts": "ee7767b0c68b23c65bb607c94b6cb3512e8237fbcb7d1d8383a33235cde2c068", 136 | "https://deno.land/x/ts_morph@17.0.1/common/ts_morph_common.js": "49a79124b941ba2b35d81ac9eb90fc33c957b2640cdb97569c1941bac5a3bbdb", 137 | "https://deno.land/x/ts_morph@17.0.1/common/typescript.d.ts": "57e52a0882af4e835473dda27e4316cc31149866970210f9f79b940e916b7838", 138 | "https://deno.land/x/ts_morph@17.0.1/common/typescript.js": "5dd669eb199ee2a539924c63a92e23d95df43dfe2fbe3a9d68c871648be1ad5e" 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /dnt.ts: -------------------------------------------------------------------------------- 1 | import { build } from "dnt"; 2 | import { copy, emptyDir } from "fs"; 3 | 4 | import denoconfig from "./deno.json" assert { type: "json" }; 5 | 6 | await emptyDir("./npm"); 7 | 8 | await build({ 9 | entryPoints: ["./mod.ts", { 10 | name: "./vite", 11 | path: "./src/vite/mod.ts", 12 | }], 13 | outDir: "./npm", 14 | typeCheck: true, 15 | declaration: true, 16 | scriptModule: false, 17 | test: false, 18 | importMap: denoconfig.importMap, 19 | compilerOptions: { 20 | lib: ["es2021", "dom", "dom.iterable"], 21 | }, 22 | shims: {}, 23 | package: { 24 | name: denoconfig.package.name, 25 | version: Deno.args[0], 26 | description: denoconfig.package.description, 27 | repository: { 28 | type: "git", 29 | url: `git+https://github.com/${denoconfig.package.github}.git`, 30 | }, 31 | homepage: `https://github.com/${denoconfig.package.github}#readme`, 32 | license: "MIT", 33 | bin: "./bin.mjs", 34 | exports: { 35 | ".": { 36 | "import": "./esm/mod.js", 37 | "types": "./types/mod.d.ts", 38 | }, 39 | "./vite": { 40 | "import": "./esm/src/vite/mod.js", 41 | "types": "./types/src/vite/mod.d.ts", 42 | }, 43 | "./package.json": "./package.json", 44 | }, 45 | //Legacy manual stuff for moduleResolution: node 46 | "types": "./types/mod.d.ts", 47 | "typesVersions": { 48 | "*": { 49 | "vite": [ 50 | "./types/src/vite/mod.d.ts", 51 | ], 52 | }, 53 | }, 54 | keywords: [ 55 | denoconfig.package.name, 56 | "svelte-kit", 57 | "sveltekit", 58 | "svelte", 59 | "modal", 60 | "python", 61 | ], 62 | engines: { 63 | "node": ">=16.0.0", 64 | }, 65 | author: denoconfig.package.github.split("/")[0], 66 | bugs: { 67 | url: `https://github.com/${denoconfig.package.github}/issues`, 68 | }, 69 | dependencies: { 70 | "zx": "^7.0.0", 71 | "rollup-plugin-globsync": "ConProgramming/rollup-plugin-globsync#650e6b4", //update ref 72 | }, 73 | peerDependencies: { 74 | "vite": "^4.0.0", 75 | }, 76 | }, 77 | }); 78 | 79 | // post build steps 80 | await copy("LICENSE.md", "npm/LICENSE.md"); 81 | await copy("README.md", "npm/README.md"); 82 | await copy("src/bin.mjs", "npm/bin.mjs"); 83 | await copy("src/vite/sveltekit_modal", "npm/esm/src/vite/sveltekit_modal"); 84 | -------------------------------------------------------------------------------- /example-app/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /example-app/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /example-app/README.md: -------------------------------------------------------------------------------- 1 | # create-svelte 2 | 3 | Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). 4 | 5 | ## Creating a project 6 | 7 | If you're seeing this, you've probably already done this step. Congrats! 8 | 9 | ```bash 10 | # create a new project in the current directory 11 | npm create svelte@latest 12 | 13 | # create a new project in my-app 14 | npm create svelte@latest my-app 15 | ``` 16 | 17 | ## Developing 18 | 19 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 | 21 | ```bash 22 | npm run dev 23 | 24 | # or start the server and open the app in a new browser tab 25 | npm run dev -- --open 26 | ``` 27 | 28 | ## Building 29 | 30 | To create a production version of your app: 31 | 32 | ```bash 33 | npm run build 34 | ``` 35 | 36 | You can preview the production build with `npm run preview`. 37 | 38 | > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. 39 | -------------------------------------------------------------------------------- /example-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-app", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "example-app", 9 | "version": "0.0.1", 10 | "devDependencies": { 11 | "@sveltejs/adapter-auto": "^2.0.0", 12 | "@sveltejs/kit": "^1.5.0", 13 | "svelte": "^3.54.0", 14 | "svelte-check": "^3.0.1", 15 | "sveltekit-modal": "file:../npm", 16 | "tslib": "^2.4.1", 17 | "typescript": "^5.0.0", 18 | "vite": "^4.2.0" 19 | } 20 | }, 21 | "node_modules/@esbuild/android-arm": { 22 | "version": "0.17.12", 23 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", 24 | "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", 25 | "cpu": [ 26 | "arm" 27 | ], 28 | "dev": true, 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">=12" 35 | } 36 | }, 37 | "node_modules/@esbuild/android-arm64": { 38 | "version": "0.17.12", 39 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", 40 | "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "dev": true, 45 | "optional": true, 46 | "os": [ 47 | "android" 48 | ], 49 | "engines": { 50 | "node": ">=12" 51 | } 52 | }, 53 | "node_modules/@esbuild/android-x64": { 54 | "version": "0.17.12", 55 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", 56 | "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", 57 | "cpu": [ 58 | "x64" 59 | ], 60 | "dev": true, 61 | "optional": true, 62 | "os": [ 63 | "android" 64 | ], 65 | "engines": { 66 | "node": ">=12" 67 | } 68 | }, 69 | "node_modules/@esbuild/darwin-arm64": { 70 | "version": "0.17.12", 71 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", 72 | "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", 73 | "cpu": [ 74 | "arm64" 75 | ], 76 | "dev": true, 77 | "optional": true, 78 | "os": [ 79 | "darwin" 80 | ], 81 | "engines": { 82 | "node": ">=12" 83 | } 84 | }, 85 | "node_modules/@esbuild/darwin-x64": { 86 | "version": "0.17.12", 87 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", 88 | "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", 89 | "cpu": [ 90 | "x64" 91 | ], 92 | "dev": true, 93 | "optional": true, 94 | "os": [ 95 | "darwin" 96 | ], 97 | "engines": { 98 | "node": ">=12" 99 | } 100 | }, 101 | "node_modules/@esbuild/freebsd-arm64": { 102 | "version": "0.17.12", 103 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", 104 | "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", 105 | "cpu": [ 106 | "arm64" 107 | ], 108 | "dev": true, 109 | "optional": true, 110 | "os": [ 111 | "freebsd" 112 | ], 113 | "engines": { 114 | "node": ">=12" 115 | } 116 | }, 117 | "node_modules/@esbuild/freebsd-x64": { 118 | "version": "0.17.12", 119 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", 120 | "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", 121 | "cpu": [ 122 | "x64" 123 | ], 124 | "dev": true, 125 | "optional": true, 126 | "os": [ 127 | "freebsd" 128 | ], 129 | "engines": { 130 | "node": ">=12" 131 | } 132 | }, 133 | "node_modules/@esbuild/linux-arm": { 134 | "version": "0.17.12", 135 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", 136 | "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", 137 | "cpu": [ 138 | "arm" 139 | ], 140 | "dev": true, 141 | "optional": true, 142 | "os": [ 143 | "linux" 144 | ], 145 | "engines": { 146 | "node": ">=12" 147 | } 148 | }, 149 | "node_modules/@esbuild/linux-arm64": { 150 | "version": "0.17.12", 151 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", 152 | "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", 153 | "cpu": [ 154 | "arm64" 155 | ], 156 | "dev": true, 157 | "optional": true, 158 | "os": [ 159 | "linux" 160 | ], 161 | "engines": { 162 | "node": ">=12" 163 | } 164 | }, 165 | "node_modules/@esbuild/linux-ia32": { 166 | "version": "0.17.12", 167 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", 168 | "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", 169 | "cpu": [ 170 | "ia32" 171 | ], 172 | "dev": true, 173 | "optional": true, 174 | "os": [ 175 | "linux" 176 | ], 177 | "engines": { 178 | "node": ">=12" 179 | } 180 | }, 181 | "node_modules/@esbuild/linux-loong64": { 182 | "version": "0.17.12", 183 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", 184 | "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", 185 | "cpu": [ 186 | "loong64" 187 | ], 188 | "dev": true, 189 | "optional": true, 190 | "os": [ 191 | "linux" 192 | ], 193 | "engines": { 194 | "node": ">=12" 195 | } 196 | }, 197 | "node_modules/@esbuild/linux-mips64el": { 198 | "version": "0.17.12", 199 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", 200 | "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", 201 | "cpu": [ 202 | "mips64el" 203 | ], 204 | "dev": true, 205 | "optional": true, 206 | "os": [ 207 | "linux" 208 | ], 209 | "engines": { 210 | "node": ">=12" 211 | } 212 | }, 213 | "node_modules/@esbuild/linux-ppc64": { 214 | "version": "0.17.12", 215 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", 216 | "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", 217 | "cpu": [ 218 | "ppc64" 219 | ], 220 | "dev": true, 221 | "optional": true, 222 | "os": [ 223 | "linux" 224 | ], 225 | "engines": { 226 | "node": ">=12" 227 | } 228 | }, 229 | "node_modules/@esbuild/linux-riscv64": { 230 | "version": "0.17.12", 231 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", 232 | "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", 233 | "cpu": [ 234 | "riscv64" 235 | ], 236 | "dev": true, 237 | "optional": true, 238 | "os": [ 239 | "linux" 240 | ], 241 | "engines": { 242 | "node": ">=12" 243 | } 244 | }, 245 | "node_modules/@esbuild/linux-s390x": { 246 | "version": "0.17.12", 247 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", 248 | "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", 249 | "cpu": [ 250 | "s390x" 251 | ], 252 | "dev": true, 253 | "optional": true, 254 | "os": [ 255 | "linux" 256 | ], 257 | "engines": { 258 | "node": ">=12" 259 | } 260 | }, 261 | "node_modules/@esbuild/linux-x64": { 262 | "version": "0.17.12", 263 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", 264 | "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", 265 | "cpu": [ 266 | "x64" 267 | ], 268 | "dev": true, 269 | "optional": true, 270 | "os": [ 271 | "linux" 272 | ], 273 | "engines": { 274 | "node": ">=12" 275 | } 276 | }, 277 | "node_modules/@esbuild/netbsd-x64": { 278 | "version": "0.17.12", 279 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", 280 | "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", 281 | "cpu": [ 282 | "x64" 283 | ], 284 | "dev": true, 285 | "optional": true, 286 | "os": [ 287 | "netbsd" 288 | ], 289 | "engines": { 290 | "node": ">=12" 291 | } 292 | }, 293 | "node_modules/@esbuild/openbsd-x64": { 294 | "version": "0.17.12", 295 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", 296 | "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", 297 | "cpu": [ 298 | "x64" 299 | ], 300 | "dev": true, 301 | "optional": true, 302 | "os": [ 303 | "openbsd" 304 | ], 305 | "engines": { 306 | "node": ">=12" 307 | } 308 | }, 309 | "node_modules/@esbuild/sunos-x64": { 310 | "version": "0.17.12", 311 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", 312 | "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", 313 | "cpu": [ 314 | "x64" 315 | ], 316 | "dev": true, 317 | "optional": true, 318 | "os": [ 319 | "sunos" 320 | ], 321 | "engines": { 322 | "node": ">=12" 323 | } 324 | }, 325 | "node_modules/@esbuild/win32-arm64": { 326 | "version": "0.17.12", 327 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", 328 | "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", 329 | "cpu": [ 330 | "arm64" 331 | ], 332 | "dev": true, 333 | "optional": true, 334 | "os": [ 335 | "win32" 336 | ], 337 | "engines": { 338 | "node": ">=12" 339 | } 340 | }, 341 | "node_modules/@esbuild/win32-ia32": { 342 | "version": "0.17.12", 343 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", 344 | "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", 345 | "cpu": [ 346 | "ia32" 347 | ], 348 | "dev": true, 349 | "optional": true, 350 | "os": [ 351 | "win32" 352 | ], 353 | "engines": { 354 | "node": ">=12" 355 | } 356 | }, 357 | "node_modules/@esbuild/win32-x64": { 358 | "version": "0.17.12", 359 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", 360 | "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", 361 | "cpu": [ 362 | "x64" 363 | ], 364 | "dev": true, 365 | "optional": true, 366 | "os": [ 367 | "win32" 368 | ], 369 | "engines": { 370 | "node": ">=12" 371 | } 372 | }, 373 | "node_modules/@jridgewell/resolve-uri": { 374 | "version": "3.1.0", 375 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 376 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 377 | "dev": true, 378 | "engines": { 379 | "node": ">=6.0.0" 380 | } 381 | }, 382 | "node_modules/@jridgewell/sourcemap-codec": { 383 | "version": "1.4.14", 384 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 385 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 386 | "dev": true 387 | }, 388 | "node_modules/@jridgewell/trace-mapping": { 389 | "version": "0.3.17", 390 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 391 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 392 | "dev": true, 393 | "dependencies": { 394 | "@jridgewell/resolve-uri": "3.1.0", 395 | "@jridgewell/sourcemap-codec": "1.4.14" 396 | } 397 | }, 398 | "node_modules/@nodelib/fs.scandir": { 399 | "version": "2.1.5", 400 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 401 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 402 | "dev": true, 403 | "dependencies": { 404 | "@nodelib/fs.stat": "2.0.5", 405 | "run-parallel": "^1.1.9" 406 | }, 407 | "engines": { 408 | "node": ">= 8" 409 | } 410 | }, 411 | "node_modules/@nodelib/fs.stat": { 412 | "version": "2.0.5", 413 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 414 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 415 | "dev": true, 416 | "engines": { 417 | "node": ">= 8" 418 | } 419 | }, 420 | "node_modules/@nodelib/fs.walk": { 421 | "version": "1.2.8", 422 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 423 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 424 | "dev": true, 425 | "dependencies": { 426 | "@nodelib/fs.scandir": "2.1.5", 427 | "fastq": "^1.6.0" 428 | }, 429 | "engines": { 430 | "node": ">= 8" 431 | } 432 | }, 433 | "node_modules/@polka/url": { 434 | "version": "1.0.0-next.21", 435 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 436 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", 437 | "dev": true 438 | }, 439 | "node_modules/@sveltejs/adapter-auto": { 440 | "version": "2.0.0", 441 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.0.0.tgz", 442 | "integrity": "sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==", 443 | "dev": true, 444 | "dependencies": { 445 | "import-meta-resolve": "^2.2.0" 446 | }, 447 | "peerDependencies": { 448 | "@sveltejs/kit": "^1.0.0" 449 | } 450 | }, 451 | "node_modules/@sveltejs/kit": { 452 | "version": "1.13.0", 453 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.13.0.tgz", 454 | "integrity": "sha512-t44xqlSTn/k+BridiJFTD8dCRPNd9msCSSPLZT+/3P9deNp/al6ed396MSpsskK7r2kevYmmxywK16qtn6Rvjw==", 455 | "dev": true, 456 | "hasInstallScript": true, 457 | "dependencies": { 458 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 459 | "@types/cookie": "^0.5.1", 460 | "cookie": "^0.5.0", 461 | "devalue": "^4.3.0", 462 | "esm-env": "^1.0.0", 463 | "kleur": "^4.1.5", 464 | "magic-string": "^0.30.0", 465 | "mime": "^3.0.0", 466 | "sade": "^1.8.1", 467 | "set-cookie-parser": "^2.5.1", 468 | "sirv": "^2.0.2", 469 | "tiny-glob": "^0.2.9", 470 | "undici": "5.21.0" 471 | }, 472 | "bin": { 473 | "svelte-kit": "svelte-kit.js" 474 | }, 475 | "engines": { 476 | "node": "^16.14 || >=18" 477 | }, 478 | "peerDependencies": { 479 | "svelte": "^3.54.0", 480 | "vite": "^4.0.0" 481 | } 482 | }, 483 | "node_modules/@sveltejs/vite-plugin-svelte": { 484 | "version": "2.0.3", 485 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.3.tgz", 486 | "integrity": "sha512-o+cguBFdwIGtRbNkYOyqTM7KvRUffxh5bfK4oJsWKG2obu+v/cbpT03tJrGl58C7tRXo/aEC0/axN5FVHBj0nA==", 487 | "dev": true, 488 | "dependencies": { 489 | "debug": "^4.3.4", 490 | "deepmerge": "^4.3.0", 491 | "kleur": "^4.1.5", 492 | "magic-string": "^0.29.0", 493 | "svelte-hmr": "^0.15.1", 494 | "vitefu": "^0.2.4" 495 | }, 496 | "engines": { 497 | "node": "^14.18.0 || >= 16" 498 | }, 499 | "peerDependencies": { 500 | "svelte": "^3.54.0", 501 | "vite": "^4.0.0" 502 | } 503 | }, 504 | "node_modules/@sveltejs/vite-plugin-svelte/node_modules/magic-string": { 505 | "version": "0.29.0", 506 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", 507 | "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", 508 | "dev": true, 509 | "dependencies": { 510 | "@jridgewell/sourcemap-codec": "^1.4.13" 511 | }, 512 | "engines": { 513 | "node": ">=12" 514 | } 515 | }, 516 | "node_modules/@types/cookie": { 517 | "version": "0.5.1", 518 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", 519 | "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", 520 | "dev": true 521 | }, 522 | "node_modules/@types/fs-extra": { 523 | "version": "11.0.1", 524 | "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", 525 | "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", 526 | "dev": true, 527 | "dependencies": { 528 | "@types/jsonfile": "*", 529 | "@types/node": "*" 530 | } 531 | }, 532 | "node_modules/@types/jsonfile": { 533 | "version": "6.1.1", 534 | "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", 535 | "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", 536 | "dev": true, 537 | "dependencies": { 538 | "@types/node": "*" 539 | } 540 | }, 541 | "node_modules/@types/minimist": { 542 | "version": "1.2.2", 543 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", 544 | "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", 545 | "dev": true 546 | }, 547 | "node_modules/@types/node": { 548 | "version": "18.15.5", 549 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", 550 | "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", 551 | "dev": true 552 | }, 553 | "node_modules/@types/ps-tree": { 554 | "version": "1.1.2", 555 | "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.2.tgz", 556 | "integrity": "sha512-ZREFYlpUmPQJ0esjxoG1fMvB2HNaD3z+mjqdSosZvd3RalncI9NEur73P8ZJz4YQdL64CmV1w0RuqoRUlhQRBw==", 557 | "dev": true 558 | }, 559 | "node_modules/@types/pug": { 560 | "version": "2.0.6", 561 | "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz", 562 | "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==", 563 | "dev": true 564 | }, 565 | "node_modules/@types/which": { 566 | "version": "2.0.2", 567 | "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", 568 | "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", 569 | "dev": true 570 | }, 571 | "node_modules/abort-controller": { 572 | "version": "3.0.0", 573 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 574 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 575 | "dev": true, 576 | "dependencies": { 577 | "event-target-shim": "^5.0.0" 578 | }, 579 | "engines": { 580 | "node": ">=6.5" 581 | } 582 | }, 583 | "node_modules/aggregate-error": { 584 | "version": "3.1.0", 585 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 586 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 587 | "dev": true, 588 | "dependencies": { 589 | "clean-stack": "^2.0.0", 590 | "indent-string": "^4.0.0" 591 | }, 592 | "engines": { 593 | "node": ">=8" 594 | } 595 | }, 596 | "node_modules/ansi-regex": { 597 | "version": "5.0.1", 598 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 599 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 600 | "dev": true, 601 | "engines": { 602 | "node": ">=8" 603 | } 604 | }, 605 | "node_modules/anymatch": { 606 | "version": "3.1.3", 607 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 608 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 609 | "dev": true, 610 | "dependencies": { 611 | "normalize-path": "^3.0.0", 612 | "picomatch": "^2.0.4" 613 | }, 614 | "engines": { 615 | "node": ">= 8" 616 | } 617 | }, 618 | "node_modules/aproba": { 619 | "version": "2.0.0", 620 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 621 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", 622 | "dev": true 623 | }, 624 | "node_modules/are-we-there-yet": { 625 | "version": "4.0.0", 626 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz", 627 | "integrity": "sha512-nSXlV+u3vtVjRgihdTzbfWYzxPWGo424zPgQbHD0ZqIla3jqYAewDcvee0Ua2hjS5IfTAmjGlx1Jf0PKwjZDEw==", 628 | "dev": true, 629 | "dependencies": { 630 | "delegates": "^1.0.0", 631 | "readable-stream": "^4.1.0" 632 | }, 633 | "engines": { 634 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 635 | } 636 | }, 637 | "node_modules/array-union": { 638 | "version": "2.1.0", 639 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 640 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 641 | "dev": true, 642 | "engines": { 643 | "node": ">=8" 644 | } 645 | }, 646 | "node_modules/balanced-match": { 647 | "version": "1.0.2", 648 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 649 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 650 | "dev": true 651 | }, 652 | "node_modules/base64-js": { 653 | "version": "1.5.1", 654 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 655 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 656 | "dev": true, 657 | "funding": [ 658 | { 659 | "type": "github", 660 | "url": "https://github.com/sponsors/feross" 661 | }, 662 | { 663 | "type": "patreon", 664 | "url": "https://www.patreon.com/feross" 665 | }, 666 | { 667 | "type": "consulting", 668 | "url": "https://feross.org/support" 669 | } 670 | ] 671 | }, 672 | "node_modules/binary-extensions": { 673 | "version": "2.2.0", 674 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 675 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 676 | "dev": true, 677 | "engines": { 678 | "node": ">=8" 679 | } 680 | }, 681 | "node_modules/brace-expansion": { 682 | "version": "1.1.11", 683 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 684 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 685 | "dev": true, 686 | "dependencies": { 687 | "balanced-match": "^1.0.0", 688 | "concat-map": "0.0.1" 689 | } 690 | }, 691 | "node_modules/braces": { 692 | "version": "3.0.2", 693 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 694 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 695 | "dev": true, 696 | "dependencies": { 697 | "fill-range": "^7.0.1" 698 | }, 699 | "engines": { 700 | "node": ">=8" 701 | } 702 | }, 703 | "node_modules/buffer": { 704 | "version": "6.0.3", 705 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 706 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 707 | "dev": true, 708 | "funding": [ 709 | { 710 | "type": "github", 711 | "url": "https://github.com/sponsors/feross" 712 | }, 713 | { 714 | "type": "patreon", 715 | "url": "https://www.patreon.com/feross" 716 | }, 717 | { 718 | "type": "consulting", 719 | "url": "https://feross.org/support" 720 | } 721 | ], 722 | "dependencies": { 723 | "base64-js": "^1.3.1", 724 | "ieee754": "^1.2.1" 725 | } 726 | }, 727 | "node_modules/buffer-crc32": { 728 | "version": "0.2.13", 729 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 730 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 731 | "dev": true, 732 | "engines": { 733 | "node": "*" 734 | } 735 | }, 736 | "node_modules/busboy": { 737 | "version": "1.6.0", 738 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 739 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 740 | "dev": true, 741 | "dependencies": { 742 | "streamsearch": "^1.1.0" 743 | }, 744 | "engines": { 745 | "node": ">=10.16.0" 746 | } 747 | }, 748 | "node_modules/callsites": { 749 | "version": "3.1.0", 750 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 751 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 752 | "dev": true, 753 | "engines": { 754 | "node": ">=6" 755 | } 756 | }, 757 | "node_modules/chalk": { 758 | "version": "5.2.0", 759 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", 760 | "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", 761 | "dev": true, 762 | "engines": { 763 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 764 | }, 765 | "funding": { 766 | "url": "https://github.com/chalk/chalk?sponsor=1" 767 | } 768 | }, 769 | "node_modules/chokidar": { 770 | "version": "3.5.3", 771 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 772 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 773 | "dev": true, 774 | "funding": [ 775 | { 776 | "type": "individual", 777 | "url": "https://paulmillr.com/funding/" 778 | } 779 | ], 780 | "dependencies": { 781 | "anymatch": "~3.1.2", 782 | "braces": "~3.0.2", 783 | "glob-parent": "~5.1.2", 784 | "is-binary-path": "~2.1.0", 785 | "is-glob": "~4.0.1", 786 | "normalize-path": "~3.0.0", 787 | "readdirp": "~3.6.0" 788 | }, 789 | "engines": { 790 | "node": ">= 8.10.0" 791 | }, 792 | "optionalDependencies": { 793 | "fsevents": "~2.3.2" 794 | } 795 | }, 796 | "node_modules/clean-stack": { 797 | "version": "2.2.0", 798 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 799 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 800 | "dev": true, 801 | "engines": { 802 | "node": ">=6" 803 | } 804 | }, 805 | "node_modules/color-support": { 806 | "version": "1.1.3", 807 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 808 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 809 | "dev": true, 810 | "bin": { 811 | "color-support": "bin.js" 812 | } 813 | }, 814 | "node_modules/concat-map": { 815 | "version": "0.0.1", 816 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 817 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 818 | "dev": true 819 | }, 820 | "node_modules/console-control-strings": { 821 | "version": "1.1.0", 822 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 823 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", 824 | "dev": true 825 | }, 826 | "node_modules/cookie": { 827 | "version": "0.5.0", 828 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 829 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 830 | "dev": true, 831 | "engines": { 832 | "node": ">= 0.6" 833 | } 834 | }, 835 | "node_modules/cp-file": { 836 | "version": "9.1.0", 837 | "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-9.1.0.tgz", 838 | "integrity": "sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==", 839 | "dev": true, 840 | "dependencies": { 841 | "graceful-fs": "^4.1.2", 842 | "make-dir": "^3.0.0", 843 | "nested-error-stacks": "^2.0.0", 844 | "p-event": "^4.1.0" 845 | }, 846 | "engines": { 847 | "node": ">=10" 848 | }, 849 | "funding": { 850 | "url": "https://github.com/sponsors/sindresorhus" 851 | } 852 | }, 853 | "node_modules/data-uri-to-buffer": { 854 | "version": "4.0.1", 855 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", 856 | "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", 857 | "dev": true, 858 | "engines": { 859 | "node": ">= 12" 860 | } 861 | }, 862 | "node_modules/debug": { 863 | "version": "4.3.4", 864 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 865 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 866 | "dev": true, 867 | "dependencies": { 868 | "ms": "2.1.2" 869 | }, 870 | "engines": { 871 | "node": ">=6.0" 872 | }, 873 | "peerDependenciesMeta": { 874 | "supports-color": { 875 | "optional": true 876 | } 877 | } 878 | }, 879 | "node_modules/deepmerge": { 880 | "version": "4.3.1", 881 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 882 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 883 | "dev": true, 884 | "engines": { 885 | "node": ">=0.10.0" 886 | } 887 | }, 888 | "node_modules/del": { 889 | "version": "6.1.1", 890 | "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", 891 | "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", 892 | "dev": true, 893 | "dependencies": { 894 | "globby": "^11.0.1", 895 | "graceful-fs": "^4.2.4", 896 | "is-glob": "^4.0.1", 897 | "is-path-cwd": "^2.2.0", 898 | "is-path-inside": "^3.0.2", 899 | "p-map": "^4.0.0", 900 | "rimraf": "^3.0.2", 901 | "slash": "^3.0.0" 902 | }, 903 | "engines": { 904 | "node": ">=10" 905 | }, 906 | "funding": { 907 | "url": "https://github.com/sponsors/sindresorhus" 908 | } 909 | }, 910 | "node_modules/del/node_modules/rimraf": { 911 | "version": "3.0.2", 912 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 913 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 914 | "dev": true, 915 | "dependencies": { 916 | "glob": "^7.1.3" 917 | }, 918 | "bin": { 919 | "rimraf": "bin.js" 920 | }, 921 | "funding": { 922 | "url": "https://github.com/sponsors/isaacs" 923 | } 924 | }, 925 | "node_modules/delegates": { 926 | "version": "1.0.0", 927 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 928 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", 929 | "dev": true 930 | }, 931 | "node_modules/detect-indent": { 932 | "version": "6.1.0", 933 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", 934 | "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", 935 | "dev": true, 936 | "engines": { 937 | "node": ">=8" 938 | } 939 | }, 940 | "node_modules/devalue": { 941 | "version": "4.3.0", 942 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", 943 | "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", 944 | "dev": true 945 | }, 946 | "node_modules/dir-glob": { 947 | "version": "3.0.1", 948 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 949 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 950 | "dev": true, 951 | "dependencies": { 952 | "path-type": "^4.0.0" 953 | }, 954 | "engines": { 955 | "node": ">=8" 956 | } 957 | }, 958 | "node_modules/duplexer": { 959 | "version": "0.1.2", 960 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", 961 | "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", 962 | "dev": true 963 | }, 964 | "node_modules/emoji-regex": { 965 | "version": "8.0.0", 966 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 967 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 968 | "dev": true 969 | }, 970 | "node_modules/es6-promise": { 971 | "version": "3.3.1", 972 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", 973 | "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", 974 | "dev": true 975 | }, 976 | "node_modules/esbuild": { 977 | "version": "0.17.12", 978 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", 979 | "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", 980 | "dev": true, 981 | "hasInstallScript": true, 982 | "bin": { 983 | "esbuild": "bin/esbuild" 984 | }, 985 | "engines": { 986 | "node": ">=12" 987 | }, 988 | "optionalDependencies": { 989 | "@esbuild/android-arm": "0.17.12", 990 | "@esbuild/android-arm64": "0.17.12", 991 | "@esbuild/android-x64": "0.17.12", 992 | "@esbuild/darwin-arm64": "0.17.12", 993 | "@esbuild/darwin-x64": "0.17.12", 994 | "@esbuild/freebsd-arm64": "0.17.12", 995 | "@esbuild/freebsd-x64": "0.17.12", 996 | "@esbuild/linux-arm": "0.17.12", 997 | "@esbuild/linux-arm64": "0.17.12", 998 | "@esbuild/linux-ia32": "0.17.12", 999 | "@esbuild/linux-loong64": "0.17.12", 1000 | "@esbuild/linux-mips64el": "0.17.12", 1001 | "@esbuild/linux-ppc64": "0.17.12", 1002 | "@esbuild/linux-riscv64": "0.17.12", 1003 | "@esbuild/linux-s390x": "0.17.12", 1004 | "@esbuild/linux-x64": "0.17.12", 1005 | "@esbuild/netbsd-x64": "0.17.12", 1006 | "@esbuild/openbsd-x64": "0.17.12", 1007 | "@esbuild/sunos-x64": "0.17.12", 1008 | "@esbuild/win32-arm64": "0.17.12", 1009 | "@esbuild/win32-ia32": "0.17.12", 1010 | "@esbuild/win32-x64": "0.17.12" 1011 | } 1012 | }, 1013 | "node_modules/esm-env": { 1014 | "version": "1.0.0", 1015 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 1016 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 1017 | "dev": true 1018 | }, 1019 | "node_modules/event-stream": { 1020 | "version": "3.3.4", 1021 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 1022 | "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", 1023 | "dev": true, 1024 | "dependencies": { 1025 | "duplexer": "~0.1.1", 1026 | "from": "~0", 1027 | "map-stream": "~0.1.0", 1028 | "pause-stream": "0.0.11", 1029 | "split": "0.3", 1030 | "stream-combiner": "~0.0.4", 1031 | "through": "~2.3.1" 1032 | } 1033 | }, 1034 | "node_modules/event-target-shim": { 1035 | "version": "5.0.1", 1036 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1037 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 1038 | "dev": true, 1039 | "engines": { 1040 | "node": ">=6" 1041 | } 1042 | }, 1043 | "node_modules/events": { 1044 | "version": "3.3.0", 1045 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1046 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1047 | "dev": true, 1048 | "engines": { 1049 | "node": ">=0.8.x" 1050 | } 1051 | }, 1052 | "node_modules/fast-glob": { 1053 | "version": "3.2.12", 1054 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 1055 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 1056 | "dev": true, 1057 | "dependencies": { 1058 | "@nodelib/fs.stat": "^2.0.2", 1059 | "@nodelib/fs.walk": "^1.2.3", 1060 | "glob-parent": "^5.1.2", 1061 | "merge2": "^1.3.0", 1062 | "micromatch": "^4.0.4" 1063 | }, 1064 | "engines": { 1065 | "node": ">=8.6.0" 1066 | } 1067 | }, 1068 | "node_modules/fastq": { 1069 | "version": "1.15.0", 1070 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 1071 | "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 1072 | "dev": true, 1073 | "dependencies": { 1074 | "reusify": "^1.0.4" 1075 | } 1076 | }, 1077 | "node_modules/fetch-blob": { 1078 | "version": "3.2.0", 1079 | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", 1080 | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", 1081 | "dev": true, 1082 | "funding": [ 1083 | { 1084 | "type": "github", 1085 | "url": "https://github.com/sponsors/jimmywarting" 1086 | }, 1087 | { 1088 | "type": "paypal", 1089 | "url": "https://paypal.me/jimmywarting" 1090 | } 1091 | ], 1092 | "dependencies": { 1093 | "node-domexception": "^1.0.0", 1094 | "web-streams-polyfill": "^3.0.3" 1095 | }, 1096 | "engines": { 1097 | "node": "^12.20 || >= 14.13" 1098 | } 1099 | }, 1100 | "node_modules/fill-range": { 1101 | "version": "7.0.1", 1102 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1103 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1104 | "dev": true, 1105 | "dependencies": { 1106 | "to-regex-range": "^5.0.1" 1107 | }, 1108 | "engines": { 1109 | "node": ">=8" 1110 | } 1111 | }, 1112 | "node_modules/formdata-polyfill": { 1113 | "version": "4.0.10", 1114 | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", 1115 | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", 1116 | "dev": true, 1117 | "dependencies": { 1118 | "fetch-blob": "^3.1.2" 1119 | }, 1120 | "engines": { 1121 | "node": ">=12.20.0" 1122 | } 1123 | }, 1124 | "node_modules/from": { 1125 | "version": "0.1.7", 1126 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 1127 | "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", 1128 | "dev": true 1129 | }, 1130 | "node_modules/fs-extra": { 1131 | "version": "11.1.1", 1132 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", 1133 | "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", 1134 | "dev": true, 1135 | "dependencies": { 1136 | "graceful-fs": "^4.2.0", 1137 | "jsonfile": "^6.0.1", 1138 | "universalify": "^2.0.0" 1139 | }, 1140 | "engines": { 1141 | "node": ">=14.14" 1142 | } 1143 | }, 1144 | "node_modules/fs.realpath": { 1145 | "version": "1.0.0", 1146 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1147 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1148 | "dev": true 1149 | }, 1150 | "node_modules/fsevents": { 1151 | "version": "2.3.2", 1152 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1153 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1154 | "dev": true, 1155 | "hasInstallScript": true, 1156 | "optional": true, 1157 | "os": [ 1158 | "darwin" 1159 | ], 1160 | "engines": { 1161 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1162 | } 1163 | }, 1164 | "node_modules/function-bind": { 1165 | "version": "1.1.1", 1166 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1167 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1168 | "dev": true 1169 | }, 1170 | "node_modules/gauge": { 1171 | "version": "5.0.0", 1172 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.0.tgz", 1173 | "integrity": "sha512-0s5T5eciEG7Q3ugkxAkFtaDhrrhXsCRivA5y8C9WMHWuI8UlMOJg7+Iwf7Mccii+Dfs3H5jHepU0joPVyQU0Lw==", 1174 | "dev": true, 1175 | "dependencies": { 1176 | "aproba": "^1.0.3 || ^2.0.0", 1177 | "color-support": "^1.1.3", 1178 | "console-control-strings": "^1.1.0", 1179 | "has-unicode": "^2.0.1", 1180 | "signal-exit": "^3.0.7", 1181 | "string-width": "^4.2.3", 1182 | "strip-ansi": "^6.0.1", 1183 | "wide-align": "^1.1.5" 1184 | }, 1185 | "engines": { 1186 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1187 | } 1188 | }, 1189 | "node_modules/glob": { 1190 | "version": "7.2.3", 1191 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1192 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1193 | "dev": true, 1194 | "dependencies": { 1195 | "fs.realpath": "^1.0.0", 1196 | "inflight": "^1.0.4", 1197 | "inherits": "2", 1198 | "minimatch": "^3.1.1", 1199 | "once": "^1.3.0", 1200 | "path-is-absolute": "^1.0.0" 1201 | }, 1202 | "engines": { 1203 | "node": "*" 1204 | }, 1205 | "funding": { 1206 | "url": "https://github.com/sponsors/isaacs" 1207 | } 1208 | }, 1209 | "node_modules/glob-parent": { 1210 | "version": "5.1.2", 1211 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1212 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1213 | "dev": true, 1214 | "dependencies": { 1215 | "is-glob": "^4.0.1" 1216 | }, 1217 | "engines": { 1218 | "node": ">= 6" 1219 | } 1220 | }, 1221 | "node_modules/globalyzer": { 1222 | "version": "0.1.0", 1223 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1224 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", 1225 | "dev": true 1226 | }, 1227 | "node_modules/globby": { 1228 | "version": "11.1.0", 1229 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1230 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1231 | "dev": true, 1232 | "dependencies": { 1233 | "array-union": "^2.1.0", 1234 | "dir-glob": "^3.0.1", 1235 | "fast-glob": "^3.2.9", 1236 | "ignore": "^5.2.0", 1237 | "merge2": "^1.4.1", 1238 | "slash": "^3.0.0" 1239 | }, 1240 | "engines": { 1241 | "node": ">=10" 1242 | }, 1243 | "funding": { 1244 | "url": "https://github.com/sponsors/sindresorhus" 1245 | } 1246 | }, 1247 | "node_modules/globrex": { 1248 | "version": "0.1.2", 1249 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1250 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 1251 | "dev": true 1252 | }, 1253 | "node_modules/graceful-fs": { 1254 | "version": "4.2.11", 1255 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1256 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1257 | "dev": true 1258 | }, 1259 | "node_modules/has": { 1260 | "version": "1.0.3", 1261 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1262 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1263 | "dev": true, 1264 | "dependencies": { 1265 | "function-bind": "^1.1.1" 1266 | }, 1267 | "engines": { 1268 | "node": ">= 0.4.0" 1269 | } 1270 | }, 1271 | "node_modules/has-unicode": { 1272 | "version": "2.0.1", 1273 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1274 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", 1275 | "dev": true 1276 | }, 1277 | "node_modules/ieee754": { 1278 | "version": "1.2.1", 1279 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1280 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1281 | "dev": true, 1282 | "funding": [ 1283 | { 1284 | "type": "github", 1285 | "url": "https://github.com/sponsors/feross" 1286 | }, 1287 | { 1288 | "type": "patreon", 1289 | "url": "https://www.patreon.com/feross" 1290 | }, 1291 | { 1292 | "type": "consulting", 1293 | "url": "https://feross.org/support" 1294 | } 1295 | ] 1296 | }, 1297 | "node_modules/ignore": { 1298 | "version": "5.2.4", 1299 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1300 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1301 | "dev": true, 1302 | "engines": { 1303 | "node": ">= 4" 1304 | } 1305 | }, 1306 | "node_modules/import-fresh": { 1307 | "version": "3.3.0", 1308 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1309 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1310 | "dev": true, 1311 | "dependencies": { 1312 | "parent-module": "^1.0.0", 1313 | "resolve-from": "^4.0.0" 1314 | }, 1315 | "engines": { 1316 | "node": ">=6" 1317 | }, 1318 | "funding": { 1319 | "url": "https://github.com/sponsors/sindresorhus" 1320 | } 1321 | }, 1322 | "node_modules/import-meta-resolve": { 1323 | "version": "2.2.2", 1324 | "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", 1325 | "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==", 1326 | "dev": true, 1327 | "funding": { 1328 | "type": "github", 1329 | "url": "https://github.com/sponsors/wooorm" 1330 | } 1331 | }, 1332 | "node_modules/indent-string": { 1333 | "version": "4.0.0", 1334 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1335 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1336 | "dev": true, 1337 | "engines": { 1338 | "node": ">=8" 1339 | } 1340 | }, 1341 | "node_modules/inflight": { 1342 | "version": "1.0.6", 1343 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1344 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1345 | "dev": true, 1346 | "dependencies": { 1347 | "once": "^1.3.0", 1348 | "wrappy": "1" 1349 | } 1350 | }, 1351 | "node_modules/inherits": { 1352 | "version": "2.0.4", 1353 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1354 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1355 | "dev": true 1356 | }, 1357 | "node_modules/is-binary-path": { 1358 | "version": "2.1.0", 1359 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1360 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1361 | "dev": true, 1362 | "dependencies": { 1363 | "binary-extensions": "^2.0.0" 1364 | }, 1365 | "engines": { 1366 | "node": ">=8" 1367 | } 1368 | }, 1369 | "node_modules/is-core-module": { 1370 | "version": "2.11.0", 1371 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1372 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "has": "^1.0.3" 1376 | }, 1377 | "funding": { 1378 | "url": "https://github.com/sponsors/ljharb" 1379 | } 1380 | }, 1381 | "node_modules/is-extglob": { 1382 | "version": "2.1.1", 1383 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1384 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1385 | "dev": true, 1386 | "engines": { 1387 | "node": ">=0.10.0" 1388 | } 1389 | }, 1390 | "node_modules/is-fullwidth-code-point": { 1391 | "version": "3.0.0", 1392 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1393 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1394 | "dev": true, 1395 | "engines": { 1396 | "node": ">=8" 1397 | } 1398 | }, 1399 | "node_modules/is-glob": { 1400 | "version": "4.0.3", 1401 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1402 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1403 | "dev": true, 1404 | "dependencies": { 1405 | "is-extglob": "^2.1.1" 1406 | }, 1407 | "engines": { 1408 | "node": ">=0.10.0" 1409 | } 1410 | }, 1411 | "node_modules/is-number": { 1412 | "version": "7.0.0", 1413 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1414 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1415 | "dev": true, 1416 | "engines": { 1417 | "node": ">=0.12.0" 1418 | } 1419 | }, 1420 | "node_modules/is-path-cwd": { 1421 | "version": "2.2.0", 1422 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", 1423 | "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", 1424 | "dev": true, 1425 | "engines": { 1426 | "node": ">=6" 1427 | } 1428 | }, 1429 | "node_modules/is-path-inside": { 1430 | "version": "3.0.3", 1431 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1432 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1433 | "dev": true, 1434 | "engines": { 1435 | "node": ">=8" 1436 | } 1437 | }, 1438 | "node_modules/isexe": { 1439 | "version": "2.0.0", 1440 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1441 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1442 | "dev": true 1443 | }, 1444 | "node_modules/jsonfile": { 1445 | "version": "6.1.0", 1446 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 1447 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 1448 | "dev": true, 1449 | "dependencies": { 1450 | "universalify": "^2.0.0" 1451 | }, 1452 | "optionalDependencies": { 1453 | "graceful-fs": "^4.1.6" 1454 | } 1455 | }, 1456 | "node_modules/kleur": { 1457 | "version": "4.1.5", 1458 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1459 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1460 | "dev": true, 1461 | "engines": { 1462 | "node": ">=6" 1463 | } 1464 | }, 1465 | "node_modules/magic-string": { 1466 | "version": "0.30.0", 1467 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 1468 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 1469 | "dev": true, 1470 | "dependencies": { 1471 | "@jridgewell/sourcemap-codec": "^1.4.13" 1472 | }, 1473 | "engines": { 1474 | "node": ">=12" 1475 | } 1476 | }, 1477 | "node_modules/make-dir": { 1478 | "version": "3.1.0", 1479 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1480 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1481 | "dev": true, 1482 | "dependencies": { 1483 | "semver": "^6.0.0" 1484 | }, 1485 | "engines": { 1486 | "node": ">=8" 1487 | }, 1488 | "funding": { 1489 | "url": "https://github.com/sponsors/sindresorhus" 1490 | } 1491 | }, 1492 | "node_modules/map-stream": { 1493 | "version": "0.1.0", 1494 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 1495 | "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", 1496 | "dev": true 1497 | }, 1498 | "node_modules/marky": { 1499 | "version": "1.2.5", 1500 | "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", 1501 | "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", 1502 | "dev": true 1503 | }, 1504 | "node_modules/merge2": { 1505 | "version": "1.4.1", 1506 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1507 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1508 | "dev": true, 1509 | "engines": { 1510 | "node": ">= 8" 1511 | } 1512 | }, 1513 | "node_modules/micromatch": { 1514 | "version": "4.0.5", 1515 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1516 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1517 | "dev": true, 1518 | "dependencies": { 1519 | "braces": "^3.0.2", 1520 | "picomatch": "^2.3.1" 1521 | }, 1522 | "engines": { 1523 | "node": ">=8.6" 1524 | } 1525 | }, 1526 | "node_modules/mime": { 1527 | "version": "3.0.0", 1528 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1529 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1530 | "dev": true, 1531 | "bin": { 1532 | "mime": "cli.js" 1533 | }, 1534 | "engines": { 1535 | "node": ">=10.0.0" 1536 | } 1537 | }, 1538 | "node_modules/min-indent": { 1539 | "version": "1.0.1", 1540 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 1541 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", 1542 | "dev": true, 1543 | "engines": { 1544 | "node": ">=4" 1545 | } 1546 | }, 1547 | "node_modules/minimatch": { 1548 | "version": "3.1.2", 1549 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1550 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1551 | "dev": true, 1552 | "dependencies": { 1553 | "brace-expansion": "^1.1.7" 1554 | }, 1555 | "engines": { 1556 | "node": "*" 1557 | } 1558 | }, 1559 | "node_modules/minimist": { 1560 | "version": "1.2.8", 1561 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1562 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1563 | "dev": true, 1564 | "funding": { 1565 | "url": "https://github.com/sponsors/ljharb" 1566 | } 1567 | }, 1568 | "node_modules/mkdirp": { 1569 | "version": "0.5.6", 1570 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 1571 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 1572 | "dev": true, 1573 | "dependencies": { 1574 | "minimist": "^1.2.6" 1575 | }, 1576 | "bin": { 1577 | "mkdirp": "bin/cmd.js" 1578 | } 1579 | }, 1580 | "node_modules/mri": { 1581 | "version": "1.2.0", 1582 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1583 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1584 | "dev": true, 1585 | "engines": { 1586 | "node": ">=4" 1587 | } 1588 | }, 1589 | "node_modules/mrmime": { 1590 | "version": "1.0.1", 1591 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", 1592 | "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", 1593 | "dev": true, 1594 | "engines": { 1595 | "node": ">=10" 1596 | } 1597 | }, 1598 | "node_modules/ms": { 1599 | "version": "2.1.2", 1600 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1601 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1602 | "dev": true 1603 | }, 1604 | "node_modules/nanoid": { 1605 | "version": "3.3.4", 1606 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1607 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1608 | "dev": true, 1609 | "bin": { 1610 | "nanoid": "bin/nanoid.cjs" 1611 | }, 1612 | "engines": { 1613 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1614 | } 1615 | }, 1616 | "node_modules/nested-error-stacks": { 1617 | "version": "2.1.1", 1618 | "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", 1619 | "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", 1620 | "dev": true 1621 | }, 1622 | "node_modules/node-domexception": { 1623 | "version": "1.0.0", 1624 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 1625 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 1626 | "dev": true, 1627 | "funding": [ 1628 | { 1629 | "type": "github", 1630 | "url": "https://github.com/sponsors/jimmywarting" 1631 | }, 1632 | { 1633 | "type": "github", 1634 | "url": "https://paypal.me/jimmywarting" 1635 | } 1636 | ], 1637 | "engines": { 1638 | "node": ">=10.5.0" 1639 | } 1640 | }, 1641 | "node_modules/node-fetch": { 1642 | "version": "3.2.10", 1643 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", 1644 | "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", 1645 | "dev": true, 1646 | "dependencies": { 1647 | "data-uri-to-buffer": "^4.0.0", 1648 | "fetch-blob": "^3.1.4", 1649 | "formdata-polyfill": "^4.0.10" 1650 | }, 1651 | "engines": { 1652 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1653 | }, 1654 | "funding": { 1655 | "type": "opencollective", 1656 | "url": "https://opencollective.com/node-fetch" 1657 | } 1658 | }, 1659 | "node_modules/normalize-path": { 1660 | "version": "3.0.0", 1661 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1662 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1663 | "dev": true, 1664 | "engines": { 1665 | "node": ">=0.10.0" 1666 | } 1667 | }, 1668 | "node_modules/npmlog": { 1669 | "version": "7.0.1", 1670 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", 1671 | "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", 1672 | "dev": true, 1673 | "dependencies": { 1674 | "are-we-there-yet": "^4.0.0", 1675 | "console-control-strings": "^1.1.0", 1676 | "gauge": "^5.0.0", 1677 | "set-blocking": "^2.0.0" 1678 | }, 1679 | "engines": { 1680 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1681 | } 1682 | }, 1683 | "node_modules/once": { 1684 | "version": "1.4.0", 1685 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1686 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1687 | "dev": true, 1688 | "dependencies": { 1689 | "wrappy": "1" 1690 | } 1691 | }, 1692 | "node_modules/p-event": { 1693 | "version": "4.2.0", 1694 | "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", 1695 | "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", 1696 | "dev": true, 1697 | "dependencies": { 1698 | "p-timeout": "^3.1.0" 1699 | }, 1700 | "engines": { 1701 | "node": ">=8" 1702 | }, 1703 | "funding": { 1704 | "url": "https://github.com/sponsors/sindresorhus" 1705 | } 1706 | }, 1707 | "node_modules/p-finally": { 1708 | "version": "1.0.0", 1709 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 1710 | "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", 1711 | "dev": true, 1712 | "engines": { 1713 | "node": ">=4" 1714 | } 1715 | }, 1716 | "node_modules/p-map": { 1717 | "version": "4.0.0", 1718 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1719 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1720 | "dev": true, 1721 | "dependencies": { 1722 | "aggregate-error": "^3.0.0" 1723 | }, 1724 | "engines": { 1725 | "node": ">=10" 1726 | }, 1727 | "funding": { 1728 | "url": "https://github.com/sponsors/sindresorhus" 1729 | } 1730 | }, 1731 | "node_modules/p-timeout": { 1732 | "version": "3.2.0", 1733 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 1734 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 1735 | "dev": true, 1736 | "dependencies": { 1737 | "p-finally": "^1.0.0" 1738 | }, 1739 | "engines": { 1740 | "node": ">=8" 1741 | } 1742 | }, 1743 | "node_modules/parent-module": { 1744 | "version": "1.0.1", 1745 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1746 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1747 | "dev": true, 1748 | "dependencies": { 1749 | "callsites": "^3.0.0" 1750 | }, 1751 | "engines": { 1752 | "node": ">=6" 1753 | } 1754 | }, 1755 | "node_modules/parse-ms": { 1756 | "version": "2.1.0", 1757 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", 1758 | "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", 1759 | "dev": true, 1760 | "engines": { 1761 | "node": ">=6" 1762 | } 1763 | }, 1764 | "node_modules/path-is-absolute": { 1765 | "version": "1.0.1", 1766 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1767 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1768 | "dev": true, 1769 | "engines": { 1770 | "node": ">=0.10.0" 1771 | } 1772 | }, 1773 | "node_modules/path-parse": { 1774 | "version": "1.0.7", 1775 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1776 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1777 | "dev": true 1778 | }, 1779 | "node_modules/path-type": { 1780 | "version": "4.0.0", 1781 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1782 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1783 | "dev": true, 1784 | "engines": { 1785 | "node": ">=8" 1786 | } 1787 | }, 1788 | "node_modules/pause-stream": { 1789 | "version": "0.0.11", 1790 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 1791 | "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", 1792 | "dev": true, 1793 | "dependencies": { 1794 | "through": "~2.3" 1795 | } 1796 | }, 1797 | "node_modules/picocolors": { 1798 | "version": "1.0.0", 1799 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1800 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1801 | "dev": true 1802 | }, 1803 | "node_modules/picomatch": { 1804 | "version": "2.3.1", 1805 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1806 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1807 | "dev": true, 1808 | "engines": { 1809 | "node": ">=8.6" 1810 | }, 1811 | "funding": { 1812 | "url": "https://github.com/sponsors/jonschlinkert" 1813 | } 1814 | }, 1815 | "node_modules/postcss": { 1816 | "version": "8.4.21", 1817 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1818 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1819 | "dev": true, 1820 | "funding": [ 1821 | { 1822 | "type": "opencollective", 1823 | "url": "https://opencollective.com/postcss/" 1824 | }, 1825 | { 1826 | "type": "tidelift", 1827 | "url": "https://tidelift.com/funding/github/npm/postcss" 1828 | } 1829 | ], 1830 | "dependencies": { 1831 | "nanoid": "^3.3.4", 1832 | "picocolors": "^1.0.0", 1833 | "source-map-js": "^1.0.2" 1834 | }, 1835 | "engines": { 1836 | "node": "^10 || ^12 || >=14" 1837 | } 1838 | }, 1839 | "node_modules/pretty-ms": { 1840 | "version": "7.0.1", 1841 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", 1842 | "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", 1843 | "dev": true, 1844 | "dependencies": { 1845 | "parse-ms": "^2.1.0" 1846 | }, 1847 | "engines": { 1848 | "node": ">=10" 1849 | }, 1850 | "funding": { 1851 | "url": "https://github.com/sponsors/sindresorhus" 1852 | } 1853 | }, 1854 | "node_modules/process": { 1855 | "version": "0.11.10", 1856 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1857 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 1858 | "dev": true, 1859 | "engines": { 1860 | "node": ">= 0.6.0" 1861 | } 1862 | }, 1863 | "node_modules/ps-tree": { 1864 | "version": "1.2.0", 1865 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", 1866 | "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", 1867 | "dev": true, 1868 | "dependencies": { 1869 | "event-stream": "=3.3.4" 1870 | }, 1871 | "bin": { 1872 | "ps-tree": "bin/ps-tree.js" 1873 | }, 1874 | "engines": { 1875 | "node": ">= 0.10" 1876 | } 1877 | }, 1878 | "node_modules/queue-microtask": { 1879 | "version": "1.2.3", 1880 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1881 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1882 | "dev": true, 1883 | "funding": [ 1884 | { 1885 | "type": "github", 1886 | "url": "https://github.com/sponsors/feross" 1887 | }, 1888 | { 1889 | "type": "patreon", 1890 | "url": "https://www.patreon.com/feross" 1891 | }, 1892 | { 1893 | "type": "consulting", 1894 | "url": "https://feross.org/support" 1895 | } 1896 | ] 1897 | }, 1898 | "node_modules/readable-stream": { 1899 | "version": "4.3.0", 1900 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", 1901 | "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", 1902 | "dev": true, 1903 | "dependencies": { 1904 | "abort-controller": "^3.0.0", 1905 | "buffer": "^6.0.3", 1906 | "events": "^3.3.0", 1907 | "process": "^0.11.10" 1908 | }, 1909 | "engines": { 1910 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1911 | } 1912 | }, 1913 | "node_modules/readdirp": { 1914 | "version": "3.6.0", 1915 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1916 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1917 | "dev": true, 1918 | "dependencies": { 1919 | "picomatch": "^2.2.1" 1920 | }, 1921 | "engines": { 1922 | "node": ">=8.10.0" 1923 | } 1924 | }, 1925 | "node_modules/resolve": { 1926 | "version": "1.22.1", 1927 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1928 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1929 | "dev": true, 1930 | "dependencies": { 1931 | "is-core-module": "^2.9.0", 1932 | "path-parse": "^1.0.7", 1933 | "supports-preserve-symlinks-flag": "^1.0.0" 1934 | }, 1935 | "bin": { 1936 | "resolve": "bin/resolve" 1937 | }, 1938 | "funding": { 1939 | "url": "https://github.com/sponsors/ljharb" 1940 | } 1941 | }, 1942 | "node_modules/resolve-from": { 1943 | "version": "4.0.0", 1944 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1945 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1946 | "dev": true, 1947 | "engines": { 1948 | "node": ">=4" 1949 | } 1950 | }, 1951 | "node_modules/reusify": { 1952 | "version": "1.0.4", 1953 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1954 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1955 | "dev": true, 1956 | "engines": { 1957 | "iojs": ">=1.0.0", 1958 | "node": ">=0.10.0" 1959 | } 1960 | }, 1961 | "node_modules/rimraf": { 1962 | "version": "2.7.1", 1963 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1964 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1965 | "dev": true, 1966 | "dependencies": { 1967 | "glob": "^7.1.3" 1968 | }, 1969 | "bin": { 1970 | "rimraf": "bin.js" 1971 | } 1972 | }, 1973 | "node_modules/rollup": { 1974 | "version": "3.20.0", 1975 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.0.tgz", 1976 | "integrity": "sha512-YsIfrk80NqUDrxrjWPXUa7PWvAfegZEXHuPsEZg58fGCdjL1I9C1i/NaG+L+27kxxwkrG/QEDEQc8s/ynXWWGQ==", 1977 | "dev": true, 1978 | "bin": { 1979 | "rollup": "dist/bin/rollup" 1980 | }, 1981 | "engines": { 1982 | "node": ">=14.18.0", 1983 | "npm": ">=8.0.0" 1984 | }, 1985 | "optionalDependencies": { 1986 | "fsevents": "~2.3.2" 1987 | } 1988 | }, 1989 | "node_modules/rollup-plugin-globsync": { 1990 | "version": "2.1.0", 1991 | "resolved": "git+ssh://git@github.com/ConProgramming/rollup-plugin-globsync.git#650e6b457fd5ff24aa62bfb47bf7d783fc04cf84", 1992 | "dev": true, 1993 | "license": "MIT", 1994 | "dependencies": { 1995 | "chokidar": "^3.3.1", 1996 | "cp-file": "^9.0.0", 1997 | "del": "^6.0.0", 1998 | "marky": "^1.2.1", 1999 | "npmlog": "^7.0.1", 2000 | "pretty-ms": "^7.0.1" 2001 | } 2002 | }, 2003 | "node_modules/run-parallel": { 2004 | "version": "1.2.0", 2005 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2006 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2007 | "dev": true, 2008 | "funding": [ 2009 | { 2010 | "type": "github", 2011 | "url": "https://github.com/sponsors/feross" 2012 | }, 2013 | { 2014 | "type": "patreon", 2015 | "url": "https://www.patreon.com/feross" 2016 | }, 2017 | { 2018 | "type": "consulting", 2019 | "url": "https://feross.org/support" 2020 | } 2021 | ], 2022 | "dependencies": { 2023 | "queue-microtask": "^1.2.2" 2024 | } 2025 | }, 2026 | "node_modules/sade": { 2027 | "version": "1.8.1", 2028 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 2029 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 2030 | "dev": true, 2031 | "dependencies": { 2032 | "mri": "^1.1.0" 2033 | }, 2034 | "engines": { 2035 | "node": ">=6" 2036 | } 2037 | }, 2038 | "node_modules/sander": { 2039 | "version": "0.5.1", 2040 | "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", 2041 | "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", 2042 | "dev": true, 2043 | "dependencies": { 2044 | "es6-promise": "^3.1.2", 2045 | "graceful-fs": "^4.1.3", 2046 | "mkdirp": "^0.5.1", 2047 | "rimraf": "^2.5.2" 2048 | } 2049 | }, 2050 | "node_modules/semver": { 2051 | "version": "6.3.0", 2052 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2053 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2054 | "dev": true, 2055 | "bin": { 2056 | "semver": "bin/semver.js" 2057 | } 2058 | }, 2059 | "node_modules/set-blocking": { 2060 | "version": "2.0.0", 2061 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2062 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", 2063 | "dev": true 2064 | }, 2065 | "node_modules/set-cookie-parser": { 2066 | "version": "2.6.0", 2067 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", 2068 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 2069 | "dev": true 2070 | }, 2071 | "node_modules/signal-exit": { 2072 | "version": "3.0.7", 2073 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2074 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2075 | "dev": true 2076 | }, 2077 | "node_modules/sirv": { 2078 | "version": "2.0.2", 2079 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", 2080 | "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", 2081 | "dev": true, 2082 | "dependencies": { 2083 | "@polka/url": "^1.0.0-next.20", 2084 | "mrmime": "^1.0.0", 2085 | "totalist": "^3.0.0" 2086 | }, 2087 | "engines": { 2088 | "node": ">= 10" 2089 | } 2090 | }, 2091 | "node_modules/slash": { 2092 | "version": "3.0.0", 2093 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2094 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2095 | "dev": true, 2096 | "engines": { 2097 | "node": ">=8" 2098 | } 2099 | }, 2100 | "node_modules/sorcery": { 2101 | "version": "0.11.0", 2102 | "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", 2103 | "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", 2104 | "dev": true, 2105 | "dependencies": { 2106 | "@jridgewell/sourcemap-codec": "^1.4.14", 2107 | "buffer-crc32": "^0.2.5", 2108 | "minimist": "^1.2.0", 2109 | "sander": "^0.5.0" 2110 | }, 2111 | "bin": { 2112 | "sorcery": "bin/sorcery" 2113 | } 2114 | }, 2115 | "node_modules/source-map-js": { 2116 | "version": "1.0.2", 2117 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2118 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2119 | "dev": true, 2120 | "engines": { 2121 | "node": ">=0.10.0" 2122 | } 2123 | }, 2124 | "node_modules/split": { 2125 | "version": "0.3.3", 2126 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 2127 | "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", 2128 | "dev": true, 2129 | "dependencies": { 2130 | "through": "2" 2131 | }, 2132 | "engines": { 2133 | "node": "*" 2134 | } 2135 | }, 2136 | "node_modules/stream-combiner": { 2137 | "version": "0.0.4", 2138 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 2139 | "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", 2140 | "dev": true, 2141 | "dependencies": { 2142 | "duplexer": "~0.1.1" 2143 | } 2144 | }, 2145 | "node_modules/streamsearch": { 2146 | "version": "1.1.0", 2147 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 2148 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 2149 | "dev": true, 2150 | "engines": { 2151 | "node": ">=10.0.0" 2152 | } 2153 | }, 2154 | "node_modules/string-width": { 2155 | "version": "4.2.3", 2156 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2157 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2158 | "dev": true, 2159 | "dependencies": { 2160 | "emoji-regex": "^8.0.0", 2161 | "is-fullwidth-code-point": "^3.0.0", 2162 | "strip-ansi": "^6.0.1" 2163 | }, 2164 | "engines": { 2165 | "node": ">=8" 2166 | } 2167 | }, 2168 | "node_modules/strip-ansi": { 2169 | "version": "6.0.1", 2170 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2171 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2172 | "dev": true, 2173 | "dependencies": { 2174 | "ansi-regex": "^5.0.1" 2175 | }, 2176 | "engines": { 2177 | "node": ">=8" 2178 | } 2179 | }, 2180 | "node_modules/strip-indent": { 2181 | "version": "3.0.0", 2182 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 2183 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 2184 | "dev": true, 2185 | "dependencies": { 2186 | "min-indent": "^1.0.0" 2187 | }, 2188 | "engines": { 2189 | "node": ">=8" 2190 | } 2191 | }, 2192 | "node_modules/supports-preserve-symlinks-flag": { 2193 | "version": "1.0.0", 2194 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2195 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2196 | "dev": true, 2197 | "engines": { 2198 | "node": ">= 0.4" 2199 | }, 2200 | "funding": { 2201 | "url": "https://github.com/sponsors/ljharb" 2202 | } 2203 | }, 2204 | "node_modules/svelte": { 2205 | "version": "3.57.0", 2206 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.57.0.tgz", 2207 | "integrity": "sha512-WMXEvF+RtAaclw0t3bPDTUe19pplMlfyKDsixbHQYgCWi9+O9VN0kXU1OppzrB9gPAvz4NALuoca2LfW2bOjTQ==", 2208 | "dev": true, 2209 | "engines": { 2210 | "node": ">= 8" 2211 | } 2212 | }, 2213 | "node_modules/svelte-check": { 2214 | "version": "3.1.4", 2215 | "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.1.4.tgz", 2216 | "integrity": "sha512-25Lb46ZS4IK/XpBMe4IBMrtYf23V8alqBX+szXoccb7uM0D2Wqq5rMRzYBONZnFVuU1bQG3R50lyIT5eRewv2g==", 2217 | "dev": true, 2218 | "dependencies": { 2219 | "@jridgewell/trace-mapping": "^0.3.17", 2220 | "chokidar": "^3.4.1", 2221 | "fast-glob": "^3.2.7", 2222 | "import-fresh": "^3.2.1", 2223 | "picocolors": "^1.0.0", 2224 | "sade": "^1.7.4", 2225 | "svelte-preprocess": "^5.0.0", 2226 | "typescript": "^4.9.4" 2227 | }, 2228 | "bin": { 2229 | "svelte-check": "bin/svelte-check" 2230 | }, 2231 | "peerDependencies": { 2232 | "svelte": "^3.55.0" 2233 | } 2234 | }, 2235 | "node_modules/svelte-check/node_modules/typescript": { 2236 | "version": "4.9.5", 2237 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 2238 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 2239 | "dev": true, 2240 | "bin": { 2241 | "tsc": "bin/tsc", 2242 | "tsserver": "bin/tsserver" 2243 | }, 2244 | "engines": { 2245 | "node": ">=4.2.0" 2246 | } 2247 | }, 2248 | "node_modules/svelte-hmr": { 2249 | "version": "0.15.1", 2250 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 2251 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 2252 | "dev": true, 2253 | "engines": { 2254 | "node": "^12.20 || ^14.13.1 || >= 16" 2255 | }, 2256 | "peerDependencies": { 2257 | "svelte": ">=3.19.0" 2258 | } 2259 | }, 2260 | "node_modules/svelte-preprocess": { 2261 | "version": "5.0.3", 2262 | "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", 2263 | "integrity": "sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==", 2264 | "dev": true, 2265 | "hasInstallScript": true, 2266 | "dependencies": { 2267 | "@types/pug": "^2.0.6", 2268 | "detect-indent": "^6.1.0", 2269 | "magic-string": "^0.27.0", 2270 | "sorcery": "^0.11.0", 2271 | "strip-indent": "^3.0.0" 2272 | }, 2273 | "engines": { 2274 | "node": ">= 14.10.0" 2275 | }, 2276 | "peerDependencies": { 2277 | "@babel/core": "^7.10.2", 2278 | "coffeescript": "^2.5.1", 2279 | "less": "^3.11.3 || ^4.0.0", 2280 | "postcss": "^7 || ^8", 2281 | "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0", 2282 | "pug": "^3.0.0", 2283 | "sass": "^1.26.8", 2284 | "stylus": "^0.55.0", 2285 | "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", 2286 | "svelte": "^3.23.0", 2287 | "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" 2288 | }, 2289 | "peerDependenciesMeta": { 2290 | "@babel/core": { 2291 | "optional": true 2292 | }, 2293 | "coffeescript": { 2294 | "optional": true 2295 | }, 2296 | "less": { 2297 | "optional": true 2298 | }, 2299 | "postcss": { 2300 | "optional": true 2301 | }, 2302 | "postcss-load-config": { 2303 | "optional": true 2304 | }, 2305 | "pug": { 2306 | "optional": true 2307 | }, 2308 | "sass": { 2309 | "optional": true 2310 | }, 2311 | "stylus": { 2312 | "optional": true 2313 | }, 2314 | "sugarss": { 2315 | "optional": true 2316 | }, 2317 | "typescript": { 2318 | "optional": true 2319 | } 2320 | } 2321 | }, 2322 | "node_modules/svelte-preprocess/node_modules/magic-string": { 2323 | "version": "0.27.0", 2324 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 2325 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 2326 | "dev": true, 2327 | "dependencies": { 2328 | "@jridgewell/sourcemap-codec": "^1.4.13" 2329 | }, 2330 | "engines": { 2331 | "node": ">=12" 2332 | } 2333 | }, 2334 | "node_modules/sveltekit-modal": { 2335 | "resolved": "file:../npm", 2336 | "dev": true, 2337 | "license": "MIT", 2338 | "dependencies": { 2339 | "rollup-plugin-globsync": "ConProgramming/rollup-plugin-globsync#650e6b4", 2340 | "vite": "^4.0.0", 2341 | "zx": "^7.0.0" 2342 | }, 2343 | "bin": { 2344 | "sveltekit-modal": "bin.mjs" 2345 | }, 2346 | "engines": { 2347 | "node": ">=16.0.0" 2348 | }, 2349 | "peerDependencies": { 2350 | "vite": "^4.0.0" 2351 | } 2352 | }, 2353 | "node_modules/through": { 2354 | "version": "2.3.8", 2355 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2356 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 2357 | "dev": true 2358 | }, 2359 | "node_modules/tiny-glob": { 2360 | "version": "0.2.9", 2361 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 2362 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 2363 | "dev": true, 2364 | "dependencies": { 2365 | "globalyzer": "0.1.0", 2366 | "globrex": "^0.1.2" 2367 | } 2368 | }, 2369 | "node_modules/to-regex-range": { 2370 | "version": "5.0.1", 2371 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2372 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2373 | "dev": true, 2374 | "dependencies": { 2375 | "is-number": "^7.0.0" 2376 | }, 2377 | "engines": { 2378 | "node": ">=8.0" 2379 | } 2380 | }, 2381 | "node_modules/totalist": { 2382 | "version": "3.0.0", 2383 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", 2384 | "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", 2385 | "dev": true, 2386 | "engines": { 2387 | "node": ">=6" 2388 | } 2389 | }, 2390 | "node_modules/tslib": { 2391 | "version": "2.5.0", 2392 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 2393 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 2394 | "dev": true 2395 | }, 2396 | "node_modules/typescript": { 2397 | "version": "5.0.2", 2398 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", 2399 | "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", 2400 | "dev": true, 2401 | "bin": { 2402 | "tsc": "bin/tsc", 2403 | "tsserver": "bin/tsserver" 2404 | }, 2405 | "engines": { 2406 | "node": ">=12.20" 2407 | } 2408 | }, 2409 | "node_modules/undici": { 2410 | "version": "5.21.0", 2411 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz", 2412 | "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==", 2413 | "dev": true, 2414 | "dependencies": { 2415 | "busboy": "^1.6.0" 2416 | }, 2417 | "engines": { 2418 | "node": ">=12.18" 2419 | } 2420 | }, 2421 | "node_modules/universalify": { 2422 | "version": "2.0.0", 2423 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 2424 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 2425 | "dev": true, 2426 | "engines": { 2427 | "node": ">= 10.0.0" 2428 | } 2429 | }, 2430 | "node_modules/vite": { 2431 | "version": "4.2.1", 2432 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.1.tgz", 2433 | "integrity": "sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==", 2434 | "dev": true, 2435 | "dependencies": { 2436 | "esbuild": "^0.17.5", 2437 | "postcss": "^8.4.21", 2438 | "resolve": "^1.22.1", 2439 | "rollup": "^3.18.0" 2440 | }, 2441 | "bin": { 2442 | "vite": "bin/vite.js" 2443 | }, 2444 | "engines": { 2445 | "node": "^14.18.0 || >=16.0.0" 2446 | }, 2447 | "optionalDependencies": { 2448 | "fsevents": "~2.3.2" 2449 | }, 2450 | "peerDependencies": { 2451 | "@types/node": ">= 14", 2452 | "less": "*", 2453 | "sass": "*", 2454 | "stylus": "*", 2455 | "sugarss": "*", 2456 | "terser": "^5.4.0" 2457 | }, 2458 | "peerDependenciesMeta": { 2459 | "@types/node": { 2460 | "optional": true 2461 | }, 2462 | "less": { 2463 | "optional": true 2464 | }, 2465 | "sass": { 2466 | "optional": true 2467 | }, 2468 | "stylus": { 2469 | "optional": true 2470 | }, 2471 | "sugarss": { 2472 | "optional": true 2473 | }, 2474 | "terser": { 2475 | "optional": true 2476 | } 2477 | } 2478 | }, 2479 | "node_modules/vitefu": { 2480 | "version": "0.2.4", 2481 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 2482 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 2483 | "dev": true, 2484 | "peerDependencies": { 2485 | "vite": "^3.0.0 || ^4.0.0" 2486 | }, 2487 | "peerDependenciesMeta": { 2488 | "vite": { 2489 | "optional": true 2490 | } 2491 | } 2492 | }, 2493 | "node_modules/web-streams-polyfill": { 2494 | "version": "3.2.1", 2495 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", 2496 | "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", 2497 | "dev": true, 2498 | "engines": { 2499 | "node": ">= 8" 2500 | } 2501 | }, 2502 | "node_modules/webpod": { 2503 | "version": "0.0.2", 2504 | "resolved": "https://registry.npmjs.org/webpod/-/webpod-0.0.2.tgz", 2505 | "integrity": "sha512-cSwwQIeg8v4i3p4ajHhwgR7N6VyxAf+KYSSsY6Pd3aETE+xEU4vbitz7qQkB0I321xnhDdgtxuiSfk5r/FVtjg==", 2506 | "dev": true, 2507 | "bin": { 2508 | "webpod": "dist/index.js" 2509 | } 2510 | }, 2511 | "node_modules/which": { 2512 | "version": "3.0.0", 2513 | "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", 2514 | "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", 2515 | "dev": true, 2516 | "dependencies": { 2517 | "isexe": "^2.0.0" 2518 | }, 2519 | "bin": { 2520 | "node-which": "bin/which.js" 2521 | }, 2522 | "engines": { 2523 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2524 | } 2525 | }, 2526 | "node_modules/wide-align": { 2527 | "version": "1.1.5", 2528 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 2529 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 2530 | "dev": true, 2531 | "dependencies": { 2532 | "string-width": "^1.0.2 || 2 || 3 || 4" 2533 | } 2534 | }, 2535 | "node_modules/wrappy": { 2536 | "version": "1.0.2", 2537 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2538 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2539 | "dev": true 2540 | }, 2541 | "node_modules/yaml": { 2542 | "version": "2.2.1", 2543 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", 2544 | "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", 2545 | "dev": true, 2546 | "engines": { 2547 | "node": ">= 14" 2548 | } 2549 | }, 2550 | "node_modules/zx": { 2551 | "version": "7.2.1", 2552 | "resolved": "https://registry.npmjs.org/zx/-/zx-7.2.1.tgz", 2553 | "integrity": "sha512-TgKwppaMLMNAXHhlhbBh7rMoOSx3/9qqnkv8frmhVlSomEuWkDijh/BCmYntkoS7ZQyemApAUyEi24jIrrS+hA==", 2554 | "dev": true, 2555 | "dependencies": { 2556 | "@types/fs-extra": "^11.0.1", 2557 | "@types/minimist": "^1.2.2", 2558 | "@types/node": "^18.14.2", 2559 | "@types/ps-tree": "^1.1.2", 2560 | "@types/which": "^2.0.2", 2561 | "chalk": "^5.2.0", 2562 | "fs-extra": "^11.1.0", 2563 | "globby": "^13.1.3", 2564 | "minimist": "^1.2.8", 2565 | "node-fetch": "3.2.10", 2566 | "ps-tree": "^1.2.0", 2567 | "webpod": "^0", 2568 | "which": "^3.0.0", 2569 | "yaml": "^2.2.1" 2570 | }, 2571 | "bin": { 2572 | "zx": "build/cli.js" 2573 | }, 2574 | "engines": { 2575 | "node": ">= 16.0.0" 2576 | } 2577 | }, 2578 | "node_modules/zx/node_modules/globby": { 2579 | "version": "13.1.3", 2580 | "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", 2581 | "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", 2582 | "dev": true, 2583 | "dependencies": { 2584 | "dir-glob": "^3.0.1", 2585 | "fast-glob": "^3.2.11", 2586 | "ignore": "^5.2.0", 2587 | "merge2": "^1.4.1", 2588 | "slash": "^4.0.0" 2589 | }, 2590 | "engines": { 2591 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2592 | }, 2593 | "funding": { 2594 | "url": "https://github.com/sponsors/sindresorhus" 2595 | } 2596 | }, 2597 | "node_modules/zx/node_modules/slash": { 2598 | "version": "4.0.0", 2599 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 2600 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", 2601 | "dev": true, 2602 | "engines": { 2603 | "node": ">=12" 2604 | }, 2605 | "funding": { 2606 | "url": "https://github.com/sponsors/sindresorhus" 2607 | } 2608 | } 2609 | } 2610 | } 2611 | -------------------------------------------------------------------------------- /example-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example-app", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 11 | }, 12 | "devDependencies": { 13 | "@sveltejs/adapter-auto": "^2.0.0", 14 | "@sveltejs/kit": "^1.5.0", 15 | "svelte": "^3.54.0", 16 | "svelte-check": "^3.0.1", 17 | "tslib": "^2.4.1", 18 | "typescript": "^5.0.0", 19 | "vite": "^4.2.0", 20 | "sveltekit-modal": "file:../npm" 21 | }, 22 | "type": "module" 23 | } 24 | -------------------------------------------------------------------------------- /example-app/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /example-app/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /example-app/src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 |

Just a test

15 |
((error = undefined), (message = undefined))} 20 | class="flex flex-col space-y-2 md:min-w-[28rem] lg:min-w-[32rem] xl:min-w-[36rem] max-w-6xl" 21 | > 22 | 25 | {#if error} 26 | {error} 27 | {/if} 28 | {#if message} 29 |
30 |
31 | Summary: {@html message} 32 |
33 | {/if} 34 | 35 |
36 | -------------------------------------------------------------------------------- /example-app/src/routes/api/summarize/+server.py: -------------------------------------------------------------------------------- 1 | async def POST(): 2 | return { 3 | "message": f"Hello, you hit the server!" 4 | } -------------------------------------------------------------------------------- /example-app/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/semicognitive/sveltekit-modal/ec38e1393cadcbba2a4f6dc09cb0a8da445a3f8f/example-app/static/favicon.png -------------------------------------------------------------------------------- /example-app/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from "@sveltejs/adapter-auto"; 2 | import { vitePreprocess } from "@sveltejs/kit/vite"; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter(), 15 | moduleExtensions: [".js", ".ts", ".py"], 16 | }, 17 | }; 18 | 19 | export default config; 20 | -------------------------------------------------------------------------------- /example-app/sveltekit_modal_config.py: -------------------------------------------------------------------------------- 1 | import modal 2 | 3 | config = { 4 | 'name': 'sveltekit-example', 5 | 'log': False, 6 | 'stub_asgi': { 7 | 'image': modal.Image.debian_slim() 8 | } 9 | } -------------------------------------------------------------------------------- /example-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /example-app/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from "@sveltejs/kit/vite"; 2 | import { defineConfig } from "vite"; 3 | 4 | import { sveltekit_modal } from "sveltekit-modal/vite"; //Add this import 5 | 6 | export default defineConfig({ 7 | plugins: [sveltekit_modal(), sveltekit()], 8 | }); 9 | -------------------------------------------------------------------------------- /import-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "imports": { 3 | "dnt": "https://deno.land/x/dnt@0.33.0/mod.ts", 4 | "fs": "https://deno.land/std@0.177.0/fs/mod.ts", 5 | "vite": "npm:vite@^4.0.0", 6 | "zx": "npm:zx@^7.0.0", 7 | "rollup-plugin-globsync": "npm:rollup-plugin-globsync@^2.1.0" 8 | } 9 | } -------------------------------------------------------------------------------- /mod.ts: -------------------------------------------------------------------------------- 1 | export default true; 2 | -------------------------------------------------------------------------------- /replit.nix: -------------------------------------------------------------------------------- 1 | { pkgs }: { 2 | deps = [ 3 | pkgs.deno 4 | pkgs.nodejs-18_x 5 | ]; 6 | } -------------------------------------------------------------------------------- /src/bin.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zx --install 2 | 3 | import "zx/globals"; 4 | 5 | import { parse, stringify } from "envfile"; 6 | 7 | const cmd = argv._[0]; 8 | switch (cmd) { 9 | case "deploy": 10 | $.verbose = true; 11 | $.env.PYTHONDONTWRITEBYTECODE = "1"; 12 | 13 | $.log = (entry) => { 14 | if (entry.kind == "stdout" || entry.kind == "stderr") log(entry); 15 | else return; 16 | }; 17 | 18 | cd(path.join(".", "node_modules", "sveltekit-modal", "esm/src/vite")); 19 | 20 | const python_path = await $`which python3`; 21 | const deploy_log = await $`${python_path} -m sveltekit_modal.deploy`; 22 | const modal_route_match = deploy_log.stdout 23 | .match(/https:\/\/.*?\.modal\.run/) 24 | ?.toString(); 25 | 26 | cd(path.join("..", "..", "..", "../../..")); 27 | 28 | await fs.ensureFile(".env.production"); 29 | 30 | const env_prod = await fs.readFile(".env.production", "utf-8").then(parse); 31 | await fs.writeFile( 32 | ".env.production", 33 | stringify({ ...env_prod, MODAL_APP_URL: modal_route_match }) 34 | ); 35 | break; 36 | default: 37 | echo`Invalid command ${cmd}. Did you mean "deploy"?`; 38 | break; 39 | } 40 | -------------------------------------------------------------------------------- /src/vite/mod.ts: -------------------------------------------------------------------------------- 1 | import { loadEnv, type Plugin } from "vite"; 2 | import { 3 | type ProcessPromise, 4 | $ as run$, 5 | cd as cd$, 6 | which, 7 | path, 8 | chalk, 9 | } from "zx"; 10 | import globsync from "rollup-plugin-globsync"; 11 | 12 | const get_pyServerEndpointAsString = (modal_url: URL) => ` 13 | const handle = (method) => (async ({ request, fetch, url }) => { 14 | const headers = new Headers() 15 | headers.append('content-type', request.headers.get('content-type')); 16 | headers.append('accept', request.headers.get('accept')); 17 | 18 | return fetch(new URL(url.pathname + '?', new URL('${modal_url}')) + url.search, { headers, method, body: request.body, signal: request.signal, duplex: 'half' }) 19 | }); 20 | 21 | export const GET = handle('GET'); 22 | export const POST = handle('POST'); 23 | export const PATCH = handle('PATCH'); 24 | export const PUT = handle('PUT'); 25 | export const DELETE = handle('DELETE'); 26 | `; 27 | 28 | export interface SveltekitModalOptions { 29 | python_path?: string; 30 | } 31 | 32 | export async function sveltekit_modal( 33 | opts: SveltekitModalOptions = {} 34 | ): Promise { 35 | const child_processes: ProcessPromise[] = []; 36 | async function kill_all_process() { 37 | for (const ps of child_processes) { 38 | await ps.kill(); 39 | await ps.exitCode; 40 | } 41 | } 42 | 43 | let modal_url: URL | undefined; 44 | 45 | const plugin_glob_sync: Plugin = globsync({ 46 | globs: ["src/routes/**/*.py", "sveltekit_modal_config.py"], 47 | dest: "./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal", 48 | clean: true, 49 | clean_globs: [ 50 | "./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/**/*", 51 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/__init__.py", 52 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/app.py", 53 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/config.py", 54 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/pyproject.toml", 55 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/deploy.py", 56 | "!./node_modules/sveltekit-modal/esm/src/vite/sveltekit_modal/serve.py", 57 | ], 58 | }); 59 | 60 | const plugin_modal_serve: Plugin = { 61 | name: "vite-plugin-sveltekit-modal-serve", 62 | apply: "serve", 63 | async closeBundle() { 64 | await kill_all_process(); 65 | }, 66 | async configureServer({ config }) { 67 | const packagelocation = path.join( 68 | config.root, 69 | "node_modules", 70 | "sveltekit-modal", 71 | "esm/src/vite" 72 | ); 73 | 74 | run$.verbose = false; 75 | run$.env.PYTHONDONTWRITEBYTECODE = "1"; 76 | 77 | cd$(packagelocation); 78 | 79 | const python_path = opts.python_path ?? (await which("python3")); 80 | const local_process: ProcessPromise = run$`${python_path} -m sveltekit_modal.serve`; 81 | child_processes.push(local_process); 82 | 83 | cd$(config.root); 84 | 85 | local_process.quiet(); 86 | local_process.nothrow(); 87 | 88 | local_process.stderr.on("data", (s) => { 89 | console.log(s.toString().trimEnd()); //Logs stderr always and all of stdout if 'log': True 90 | }); 91 | local_process.stderr.on("error", (s) => { 92 | console.error(chalk.red("Error: Modal Serve Failed")); 93 | console.error(s.toString().trimEnd()); 94 | }); 95 | local_process.stdout.on("data", (s) => { 96 | const out = s.toString().trimEnd(); 97 | 98 | const modal_route_match = out 99 | .match(/https:\/\/.*?\.modal\.run/) 100 | ?.toString(); 101 | if (modal_route_match) modal_url ??= new URL(modal_route_match); 102 | }); 103 | local_process.stdout.on("error", (s) => { 104 | console.error(chalk.red("Error: Modal Serve Failed")); 105 | console.error(s.toString().trimEnd()); 106 | }); 107 | }, 108 | }; 109 | 110 | const plugin_modal_build: Plugin = { 111 | name: "vite-plugin-sveltekit-modal-build", 112 | apply: "build", 113 | configResolved(config) { 114 | modal_url = new URL(loadEnv("production", config.root, "").MODAL_APP_URL); 115 | }, 116 | }; 117 | 118 | const plugin_py_server_endpoint: Plugin = { 119 | name: "vite-plugin-sveltekit-modal-py-server-endpoint", 120 | transform(src, id) { 121 | if (/\.py$/.test(id)) { 122 | if (modal_url === undefined) 123 | throw new Error( 124 | `${plugin_modal_serve.name} failed to produce a modal_url` 125 | ); 126 | 127 | return { 128 | code: get_pyServerEndpointAsString(modal_url), 129 | map: null, // provide source map if available 130 | }; 131 | } 132 | }, 133 | }; 134 | 135 | return [ 136 | plugin_glob_sync, 137 | plugin_modal_serve, 138 | plugin_modal_build, 139 | plugin_py_server_endpoint, 140 | ]; 141 | } 142 | -------------------------------------------------------------------------------- /src/vite/sveltekit_modal/__init__.py: -------------------------------------------------------------------------------- 1 | from .config import Config # For export 2 | -------------------------------------------------------------------------------- /src/vite/sveltekit_modal/app.py: -------------------------------------------------------------------------------- 1 | import os 2 | import re 3 | import glob 4 | import importlib 5 | import importlib.util 6 | 7 | from fastapi import FastAPI, Request 8 | from fastapi.responses import JSONResponse 9 | 10 | import modal 11 | 12 | from .sveltekit_modal_config import config 13 | 14 | #spec = importlib.util.spec_from_file_location(name="sveltekit_modal", location="sveltekit_modal.config.py") 15 | #config_module = importlib.util.module_from_spec(spec) 16 | # spec.loader.exec_module(config_module) 17 | #config: Config = config_module.config 18 | 19 | web_app = FastAPI() 20 | stub = modal.Stub(config.get('name')) 21 | 22 | # Add all +server.py routes to web_app 23 | for module_path in glob.glob('./sveltekit_modal/src/routes/**/*.py', recursive=True): 24 | module_route_match = re.match(r'./sveltekit_modal/src/routes(.*)/\+server.py', module_path) 25 | module_route = module_route_match.group(1) if module_route_match is not None else None 26 | if module_route is None: 27 | continue 28 | 29 | module_name_joined = module_path[2:].replace(os.path.sep, '.') 30 | module_name, module_package = module_name_joined.rsplit('.', maxsplit=1) 31 | 32 | mod = importlib.import_module(module_name, module_package) 33 | 34 | if hasattr(mod, 'GET'): 35 | web_app.add_api_route(module_route, mod.GET, methods=["GET"]) 36 | 37 | if hasattr(mod, 'POST'): 38 | web_app.add_api_route(module_route, mod.POST, methods=["POST"]) 39 | 40 | if hasattr(mod, 'PATCH'): 41 | web_app.add_api_route(module_route, mod.PATCH, methods=["PATCH"]) 42 | 43 | if hasattr(mod, 'PUT'): 44 | web_app.add_api_route(module_route, mod.PUT, methods=["PUT"]) 45 | 46 | if hasattr(mod, 'DELETE'): 47 | web_app.add_api_route(module_route, mod.DELETE, methods=["DELETE"]) 48 | 49 | 50 | @web_app.exception_handler(Exception) 51 | async def unicorn_exception_handler(request: Request, exc: Exception): 52 | return JSONResponse( 53 | status_code=500, 54 | content={"error": f"{exc}"}, 55 | ) 56 | 57 | 58 | @stub.function(**config.get('stub_asgi')) 59 | @stub.asgi_app() 60 | def app(): 61 | return web_app 62 | -------------------------------------------------------------------------------- /src/vite/sveltekit_modal/config.py: -------------------------------------------------------------------------------- 1 | from typing import TypedDict 2 | from typing import Collection, Dict, Optional, Union 3 | from modal import Image, Secret, Mount, SharedVolume, Proxy 4 | from modal.gpu import GPU_T 5 | 6 | 7 | class Config_Stub(TypedDict): 8 | label: str # Label for created endpoint. Final subdomain will be --