├── .eslintignore ├── .eslintrc.cjs ├── .github └── workflows │ ├── lint.yml │ ├── playwright.yml │ └── vitest.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── examples └── svelte │ ├── README.md │ ├── index.html │ ├── jsconfig.json │ ├── package.json │ ├── pnpm-lock.yaml │ ├── public │ └── vite.svg │ ├── src │ ├── App.svelte │ ├── app.css │ ├── assets │ │ └── svelte.svg │ ├── lib │ │ └── Counter.svelte │ ├── main.js │ └── vite-env.d.ts │ ├── svelte.config.js │ └── vite.config.js ├── mdsvex.config.js ├── package.json ├── playwright.config.ts ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html ├── index.test.ts ├── internal │ └── Toggle.svelte ├── lib │ ├── ContextMenu.svelte │ ├── ContextMenuParentNode.svelte │ ├── ContextMenuSchema.ts │ ├── index.js │ ├── types.ts │ └── utils.ts └── routes │ ├── +layout.svelte │ ├── +page.svelte │ ├── Hero.svelte │ ├── Install.svelte │ └── docs │ ├── +layout.svelte │ ├── basic-usage │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── browser-builtins │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── getting-started │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── install │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── lang.ts │ ├── philosophy │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── props │ ├── +page.svelte │ └── PageContent.svelte.md │ ├── schemas │ ├── +page.svelte │ └── PageContent.svelte.md │ └── style │ ├── +page.svelte │ └── PageContent.svelte.md ├── static ├── base.css ├── favicon.png ├── gruvbox.css └── images │ ├── github.svg │ └── npm.svg ├── svelte.config.js ├── tests ├── e2e │ └── docs.test.ts └── unit │ └── utils.test.ts ├── tsconfig.json └── vite.config.ts /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], 5 | plugins: ['svelte3', '@typescript-eslint'], 6 | ignorePatterns: ['*.cjs', '/dist/**'], 7 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 8 | settings: { 9 | 'svelte3/typescript': () => require('typescript') 10 | }, 11 | parserOptions: { 12 | sourceType: 'module', 13 | ecmaVersion: 2020 14 | }, 15 | env: { 16 | browser: true, 17 | es2017: true, 18 | node: true 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [16.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - run: npm i -g pnpm@latest-7 24 | - run: pnpm install 25 | - run: pnpm run lint 26 | # - run: pnpm run check 27 | -------------------------------------------------------------------------------- /.github/workflows/playwright.yml: -------------------------------------------------------------------------------- 1 | name: Playwright 2 | on: 3 | push: 4 | branches: [main] 5 | pull_request: 6 | branches: [main] 7 | jobs: 8 | test: 9 | timeout-minutes: 60 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: actions/setup-node@v3 14 | with: 15 | node-version: 18 16 | - name: Install pnpm 17 | run: npm i -g pnpm@latest-7 18 | - name: Install dependencies 19 | run: pnpm install 20 | - name: Install Playwright Browsers 21 | run: pnpx playwright install --with-deps 22 | - name: Run Playwright tests 23 | run: npx playwright test 24 | -------------------------------------------------------------------------------- /.github/workflows/vitest.yml: -------------------------------------------------------------------------------- 1 | name: Vitest 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [16.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - run: npm i -g pnpm@latest-7 24 | - run: pnpm install 25 | - run: pnpm run test:unit 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | /dist 7 | .env 8 | .env.* 9 | !.env.example 10 | 11 | # Ignore files for PNPM, NPM and YARN 12 | pnpm-lock.yaml 13 | package-lock.json 14 | yarn.lock 15 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Jacob Størdahl 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. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-right-click 2 | 3 | A custom context menu for your Svelte application. 4 | 5 | [![Unit tests](https://github.com/stordahl/svelte-right-click/actions/workflows/vitest.yml/badge.svg)](https://github.com/stordahl/svelte-right-click/actions/workflows/vitest.yml) 6 | 7 | [![E2E tests](https://github.com/stordahl/svelte-right-click/actions/workflows/playwright.yml/badge.svg)](https://github.com/stordahl/svelte-right-click/actions/workflows/playwright.yml) 8 | 9 | > Currently in Active Development 10 | 11 | ### [Svelte REPL demo](https://svelte.dev/repl/ccf8cf5e39f64955ba0317fc29d9b2b5?version=3.57.0) 12 | 13 | ## Features 14 | 15 | - Schema Driven ✏️ 16 | - TypeScript Support ✅ 17 | - Stylable via Style Props 🎨 18 | - Support for browser built-in context menu functions 💻 19 | 20 | ## Installation 21 | 22 | ```shell 23 | npm install --save-dev svelte-right-click 24 | # yarn add svelte-right-click 25 | # pnpm add svelte-right-click 26 | ``` 27 | 28 | ## Docs 29 | 30 | Read the full documentation [here](https://svelte-right-click.vercel.app) 31 | 32 | ## Contributing 33 | 34 | Contribution docs, issues templates, and more coming soon! 35 | -------------------------------------------------------------------------------- /examples/svelte/README.md: -------------------------------------------------------------------------------- 1 | # Svelte + Vite 2 | 3 | This template should help get you started developing with Svelte in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 | 9 | ## Need an official Svelte framework? 10 | 11 | Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 | 13 | ## Technical considerations 14 | 15 | **Why use this over SvelteKit?** 16 | 17 | - It brings its own routing solution which might not be preferable for some users. 18 | - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 | 20 | This template contains as little as possible to get started with Vite + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 | 22 | Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 | 24 | **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 | 26 | Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 | 28 | **Why include `.vscode/extensions.json`?** 29 | 30 | Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 | 32 | **Why enable `checkJs` in the JS template?** 33 | 34 | It is likely that most cases of changing variable types in runtime are likely to be accidental, rather than deliberate. This provides advanced typechecking out of the box. Should you like to take advantage of the dynamically-typed nature of JavaScript, it is trivial to change the configuration. 35 | 36 | **Why is HMR not preserving my local component state?** 37 | 38 | HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 | 40 | If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 41 | 42 | ```js 43 | // store.js 44 | // An extremely simple external store 45 | import { writable } from 'svelte/store'; 46 | export default writable(0); 47 | ``` 48 | -------------------------------------------------------------------------------- /examples/svelte/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + Svelte 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/svelte/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "Node", 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | /** 7 | * svelte-preprocess cannot figure out whether you have 8 | * a value or a type, so tell TypeScript to enforce using 9 | * `import type` instead of `import` for Types. 10 | */ 11 | "importsNotUsedAsValues": "error", 12 | "isolatedModules": true, 13 | "resolveJsonModule": true, 14 | /** 15 | * To have warnings / errors of the Svelte compiler at the 16 | * correct position, enable source maps by default. 17 | */ 18 | "sourceMap": true, 19 | "esModuleInterop": true, 20 | "skipLibCheck": true, 21 | "forceConsistentCasingInFileNames": true, 22 | /** 23 | * Typecheck JS in `.svelte` and `.js` files by default. 24 | * Disable this if you'd like to use dynamic types. 25 | */ 26 | "checkJs": true 27 | }, 28 | /** 29 | * Use global.d.ts instead of compilerOptions.types 30 | * to avoid limiting type declarations. 31 | */ 32 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 33 | } 34 | -------------------------------------------------------------------------------- /examples/svelte/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-right-click-example", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "devDependencies": { 12 | "@sveltejs/vite-plugin-svelte": "^2.0.3", 13 | "svelte": "^3.55.1", 14 | "vite": "^4.2.0" 15 | }, 16 | "dependencies": { 17 | "svelte-right-click": "latest" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /examples/svelte/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@sveltejs/vite-plugin-svelte': ^2.0.3 5 | svelte: ^3.55.1 6 | svelte-right-click: ^0.0.2 7 | vite: ^4.2.0 8 | 9 | dependencies: 10 | svelte-right-click: 0.0.2_svelte@3.57.0 11 | 12 | devDependencies: 13 | '@sveltejs/vite-plugin-svelte': 2.0.3_svelte@3.57.0+vite@4.2.1 14 | svelte: 3.57.0 15 | vite: 4.2.1 16 | 17 | packages: 18 | 19 | /@esbuild/android-arm/0.17.13: 20 | resolution: {integrity: sha512-5tZZ/hLIfBmt7E8JsE5KbsknoAFmoElkg+A/gjyPtmSQvJjPf+9GsSJihid8VMa08lrsYyaEXOT9RLh3xXQONw==} 21 | engines: {node: '>=12'} 22 | cpu: [arm] 23 | os: [android] 24 | requiresBuild: true 25 | dev: true 26 | optional: true 27 | 28 | /@esbuild/android-arm64/0.17.13: 29 | resolution: {integrity: sha512-F5DgvJMV2ZEpLNpPCO7FEk1wy8O5tg6cikWSB6uvvncsgE1xgbPlm+Boio/4820C2/mj713X83X1h01v0qoeHg==} 30 | engines: {node: '>=12'} 31 | cpu: [arm64] 32 | os: [android] 33 | requiresBuild: true 34 | dev: true 35 | optional: true 36 | 37 | /@esbuild/android-x64/0.17.13: 38 | resolution: {integrity: sha512-5m1UUslzpfVrumG3m3Zv2x9VNAcvMOQWJy009y6jt10tcHpzIq2/b0I0k4fz0QYqGSNS1GteRIhVPN4H7OyCXg==} 39 | engines: {node: '>=12'} 40 | cpu: [x64] 41 | os: [android] 42 | requiresBuild: true 43 | dev: true 44 | optional: true 45 | 46 | /@esbuild/darwin-arm64/0.17.13: 47 | resolution: {integrity: sha512-TXbXp/05r7heRsG8yWwbHw9diay+wXIyRNcIHFoNARRIGahYbTW/qwJzE37zkfxLIUPHgR/SyLTUlnTICg14ag==} 48 | engines: {node: '>=12'} 49 | cpu: [arm64] 50 | os: [darwin] 51 | requiresBuild: true 52 | dev: true 53 | optional: true 54 | 55 | /@esbuild/darwin-x64/0.17.13: 56 | resolution: {integrity: sha512-Ku9Db2sblCxFvQdEO7X9nBaLR/S81uch81e2Q2+Os5z1NcnsFjuqhIYH0Gm6KNNpIKaEbC7gCLbiIPbLLMX4Pg==} 57 | engines: {node: '>=12'} 58 | cpu: [x64] 59 | os: [darwin] 60 | requiresBuild: true 61 | dev: true 62 | optional: true 63 | 64 | /@esbuild/freebsd-arm64/0.17.13: 65 | resolution: {integrity: sha512-t1T5/nIf2j+FdSf1Fa3dcU0cXycr0nK4xJe52qjWa+1I249mM5NBY1ODjiabZxZ0x3CG05y4fd9bxfDLy9kQtA==} 66 | engines: {node: '>=12'} 67 | cpu: [arm64] 68 | os: [freebsd] 69 | requiresBuild: true 70 | dev: true 71 | optional: true 72 | 73 | /@esbuild/freebsd-x64/0.17.13: 74 | resolution: {integrity: sha512-/zbkgEO4gY2qGZr9UNAGI38w/FwUY4bx4EC88k9VeiCKNr3ukNgwH/oIgB5Z9/OqpkNLlcS4w9e2d/MIiy5fbw==} 75 | engines: {node: '>=12'} 76 | cpu: [x64] 77 | os: [freebsd] 78 | requiresBuild: true 79 | dev: true 80 | optional: true 81 | 82 | /@esbuild/linux-arm/0.17.13: 83 | resolution: {integrity: sha512-RrhjzrCF6aCDH248nUAQoldnRmN7nHMxv85GOj5AH+qkxxYvcig7fnUmgANngntRu4btXhN9WKHMgQ5seERDMw==} 84 | engines: {node: '>=12'} 85 | cpu: [arm] 86 | os: [linux] 87 | requiresBuild: true 88 | dev: true 89 | optional: true 90 | 91 | /@esbuild/linux-arm64/0.17.13: 92 | resolution: {integrity: sha512-siu3QZrQ7eGrSttvFaRKyjT7kNRbUuHEKzCCyqRh19MbpGokGY13jbIsBEjx6JmH3T50hds325oweS9Ey2ihAQ==} 93 | engines: {node: '>=12'} 94 | cpu: [arm64] 95 | os: [linux] 96 | requiresBuild: true 97 | dev: true 98 | optional: true 99 | 100 | /@esbuild/linux-ia32/0.17.13: 101 | resolution: {integrity: sha512-ADHA1PqP5gIegehVP0RvxMmNPxpLgetI8QCwYOjUheGXKIKWSdUN8ZS3rusQv3NGZmFCpYdMZzFoI0QtzzGAdw==} 102 | engines: {node: '>=12'} 103 | cpu: [ia32] 104 | os: [linux] 105 | requiresBuild: true 106 | dev: true 107 | optional: true 108 | 109 | /@esbuild/linux-loong64/0.17.13: 110 | resolution: {integrity: sha512-n1JQPxETmR0brkpWlJHeohReEPLH+m00bnJdNnFyHN3zLBt1QypevuZSmnmFWsC+7r7HTwWILj3lBDjtPH3ydg==} 111 | engines: {node: '>=12'} 112 | cpu: [loong64] 113 | os: [linux] 114 | requiresBuild: true 115 | dev: true 116 | optional: true 117 | 118 | /@esbuild/linux-mips64el/0.17.13: 119 | resolution: {integrity: sha512-d0pnD/j5KKQ43xtSIvOD+wNIy6D/Vh9GbXVRa3u4zCyiJMYWjxkPkbBzlEgNjdDmUM+5gBFen9k7B8Xscy+Myg==} 120 | engines: {node: '>=12'} 121 | cpu: [mips64el] 122 | os: [linux] 123 | requiresBuild: true 124 | dev: true 125 | optional: true 126 | 127 | /@esbuild/linux-ppc64/0.17.13: 128 | resolution: {integrity: sha512-C9sMpa/VcGLjVtsT01sXtzZNS7bAZ+icUclkKkiUwBQ9hzT+J+/Xpj+EykI5hB3KgtxQVo4XUahanFoZNxbQ1g==} 129 | engines: {node: '>=12'} 130 | cpu: [ppc64] 131 | os: [linux] 132 | requiresBuild: true 133 | dev: true 134 | optional: true 135 | 136 | /@esbuild/linux-riscv64/0.17.13: 137 | resolution: {integrity: sha512-jYkc5EpNpvjccAHNYekiAtklusVGWftR0VVLtng7dJzDyy+5adAsf1fOG3LllP0WALxS55/w6boLE/728J/bXw==} 138 | engines: {node: '>=12'} 139 | cpu: [riscv64] 140 | os: [linux] 141 | requiresBuild: true 142 | dev: true 143 | optional: true 144 | 145 | /@esbuild/linux-s390x/0.17.13: 146 | resolution: {integrity: sha512-4jAJI5O6E/hATL4lsrG2A+noDjZ377KlATVFKwV3SWaNHj+OvoXe/T84ScQIXEtPI7ndJyLkMYruXj8RR5Ilyw==} 147 | engines: {node: '>=12'} 148 | cpu: [s390x] 149 | os: [linux] 150 | requiresBuild: true 151 | dev: true 152 | optional: true 153 | 154 | /@esbuild/linux-x64/0.17.13: 155 | resolution: {integrity: sha512-eFLQhJq98qijGRcv9je/9M4Mz1suZ+pOtj62ArsLd0gubNGhhQDz6T30X2X3f1KZ8lkKkr+zN5vtZzx1GAMoFw==} 156 | engines: {node: '>=12'} 157 | cpu: [x64] 158 | os: [linux] 159 | requiresBuild: true 160 | dev: true 161 | optional: true 162 | 163 | /@esbuild/netbsd-x64/0.17.13: 164 | resolution: {integrity: sha512-F8PXDeT+3eQpPjf4bmNJapPLu0SKKlWRGPQvBQqVS+YDGoMKnyyYp2UENLFMV8zT7kS39zKxZRZvUL3fMz/7Ww==} 165 | engines: {node: '>=12'} 166 | cpu: [x64] 167 | os: [netbsd] 168 | requiresBuild: true 169 | dev: true 170 | optional: true 171 | 172 | /@esbuild/openbsd-x64/0.17.13: 173 | resolution: {integrity: sha512-9jWfzbFCnIZdHjNs+00KQHArUbp7kjQDNmiuqkwGOQFs67m4/dKNupBv2DP5hTqVlQY4tW4RG3qpb6Y3zOHJeA==} 174 | engines: {node: '>=12'} 175 | cpu: [x64] 176 | os: [openbsd] 177 | requiresBuild: true 178 | dev: true 179 | optional: true 180 | 181 | /@esbuild/sunos-x64/0.17.13: 182 | resolution: {integrity: sha512-ALbOMlTIBkAVi6KqYjONa7u2oH95RN7OpetFqMtjufFLBiSaayRuwUzhs2yuR9CfGT4qi0jv6HQDav+EG314TQ==} 183 | engines: {node: '>=12'} 184 | cpu: [x64] 185 | os: [sunos] 186 | requiresBuild: true 187 | dev: true 188 | optional: true 189 | 190 | /@esbuild/win32-arm64/0.17.13: 191 | resolution: {integrity: sha512-FJBLYL4PkrZGeuHzEqme+0DjNetxkJ+XbB+Aoeow7aQ53JCwsA0/mo8sS5aPkDHgCnMkN4A5GLoFTlDj3BKDrQ==} 192 | engines: {node: '>=12'} 193 | cpu: [arm64] 194 | os: [win32] 195 | requiresBuild: true 196 | dev: true 197 | optional: true 198 | 199 | /@esbuild/win32-ia32/0.17.13: 200 | resolution: {integrity: sha512-Qrvst9RkLz4qgi3hqswNliYuKW92/HGJnd7xLWkGaGPa8S4qsONf81FW0ebDc5iUHb0I7QJwQATutvghTabnFA==} 201 | engines: {node: '>=12'} 202 | cpu: [ia32] 203 | os: [win32] 204 | requiresBuild: true 205 | dev: true 206 | optional: true 207 | 208 | /@esbuild/win32-x64/0.17.13: 209 | resolution: {integrity: sha512-pZ/NIgz861XaUPlIkPFjP55nJ4PJa0o/CD4zgeRb1Q9FVE+8GvdB6ifJcK05jRhny5hKExhnRFIdgHmmCYH8vg==} 210 | engines: {node: '>=12'} 211 | cpu: [x64] 212 | os: [win32] 213 | requiresBuild: true 214 | dev: true 215 | optional: true 216 | 217 | /@jridgewell/sourcemap-codec/1.4.14: 218 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 219 | dev: true 220 | 221 | /@sveltejs/vite-plugin-svelte/2.0.3_svelte@3.57.0+vite@4.2.1: 222 | resolution: {integrity: sha512-o+cguBFdwIGtRbNkYOyqTM7KvRUffxh5bfK4oJsWKG2obu+v/cbpT03tJrGl58C7tRXo/aEC0/axN5FVHBj0nA==} 223 | engines: {node: ^14.18.0 || >= 16} 224 | peerDependencies: 225 | svelte: ^3.54.0 226 | vite: ^4.0.0 227 | dependencies: 228 | debug: 4.3.4 229 | deepmerge: 4.3.1 230 | kleur: 4.1.5 231 | magic-string: 0.29.0 232 | svelte: 3.57.0 233 | svelte-hmr: 0.15.1_svelte@3.57.0 234 | vite: 4.2.1 235 | vitefu: 0.2.4_vite@4.2.1 236 | transitivePeerDependencies: 237 | - supports-color 238 | dev: true 239 | 240 | /debug/4.3.4: 241 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 242 | engines: {node: '>=6.0'} 243 | peerDependencies: 244 | supports-color: '*' 245 | peerDependenciesMeta: 246 | supports-color: 247 | optional: true 248 | dependencies: 249 | ms: 2.1.2 250 | dev: true 251 | 252 | /deepmerge/4.3.1: 253 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 254 | engines: {node: '>=0.10.0'} 255 | dev: true 256 | 257 | /esbuild/0.17.13: 258 | resolution: {integrity: sha512-4ixMwdErBcQHgTBeoxnowENCPKWFAGxgTyKHMK8gqn9sZaC7ZNWFKtim16g2rzQ2b/FYyy3lIUUJboFtjolhqg==} 259 | engines: {node: '>=12'} 260 | hasBin: true 261 | requiresBuild: true 262 | optionalDependencies: 263 | '@esbuild/android-arm': 0.17.13 264 | '@esbuild/android-arm64': 0.17.13 265 | '@esbuild/android-x64': 0.17.13 266 | '@esbuild/darwin-arm64': 0.17.13 267 | '@esbuild/darwin-x64': 0.17.13 268 | '@esbuild/freebsd-arm64': 0.17.13 269 | '@esbuild/freebsd-x64': 0.17.13 270 | '@esbuild/linux-arm': 0.17.13 271 | '@esbuild/linux-arm64': 0.17.13 272 | '@esbuild/linux-ia32': 0.17.13 273 | '@esbuild/linux-loong64': 0.17.13 274 | '@esbuild/linux-mips64el': 0.17.13 275 | '@esbuild/linux-ppc64': 0.17.13 276 | '@esbuild/linux-riscv64': 0.17.13 277 | '@esbuild/linux-s390x': 0.17.13 278 | '@esbuild/linux-x64': 0.17.13 279 | '@esbuild/netbsd-x64': 0.17.13 280 | '@esbuild/openbsd-x64': 0.17.13 281 | '@esbuild/sunos-x64': 0.17.13 282 | '@esbuild/win32-arm64': 0.17.13 283 | '@esbuild/win32-ia32': 0.17.13 284 | '@esbuild/win32-x64': 0.17.13 285 | dev: true 286 | 287 | /fsevents/2.3.2: 288 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 289 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 290 | os: [darwin] 291 | requiresBuild: true 292 | dev: true 293 | optional: true 294 | 295 | /function-bind/1.1.1: 296 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 297 | dev: true 298 | 299 | /has/1.0.3: 300 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 301 | engines: {node: '>= 0.4.0'} 302 | dependencies: 303 | function-bind: 1.1.1 304 | dev: true 305 | 306 | /is-core-module/2.11.0: 307 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 308 | dependencies: 309 | has: 1.0.3 310 | dev: true 311 | 312 | /kleur/4.1.5: 313 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 314 | engines: {node: '>=6'} 315 | dev: true 316 | 317 | /magic-string/0.29.0: 318 | resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==} 319 | engines: {node: '>=12'} 320 | dependencies: 321 | '@jridgewell/sourcemap-codec': 1.4.14 322 | dev: true 323 | 324 | /ms/2.1.2: 325 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 326 | dev: true 327 | 328 | /nanoid/3.3.4: 329 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 330 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 331 | hasBin: true 332 | dev: true 333 | 334 | /path-parse/1.0.7: 335 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 336 | dev: true 337 | 338 | /picocolors/1.0.0: 339 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 340 | dev: true 341 | 342 | /postcss/8.4.21: 343 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 344 | engines: {node: ^10 || ^12 || >=14} 345 | dependencies: 346 | nanoid: 3.3.4 347 | picocolors: 1.0.0 348 | source-map-js: 1.0.2 349 | dev: true 350 | 351 | /resolve/1.22.1: 352 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 353 | hasBin: true 354 | dependencies: 355 | is-core-module: 2.11.0 356 | path-parse: 1.0.7 357 | supports-preserve-symlinks-flag: 1.0.0 358 | dev: true 359 | 360 | /rollup/3.20.2: 361 | resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} 362 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 363 | hasBin: true 364 | optionalDependencies: 365 | fsevents: 2.3.2 366 | dev: true 367 | 368 | /source-map-js/1.0.2: 369 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 370 | engines: {node: '>=0.10.0'} 371 | dev: true 372 | 373 | /supports-preserve-symlinks-flag/1.0.0: 374 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 375 | engines: {node: '>= 0.4'} 376 | dev: true 377 | 378 | /svelte-hmr/0.15.1_svelte@3.57.0: 379 | resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} 380 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 381 | peerDependencies: 382 | svelte: '>=3.19.0' 383 | dependencies: 384 | svelte: 3.57.0 385 | dev: true 386 | 387 | /svelte-right-click/0.0.2_svelte@3.57.0: 388 | resolution: {integrity: sha512-lLwPsdu6+4hV2e8evwRo5+ec1elMATkdaLQ3zhtygO0iE6fKoLcPX8q9XpOkzS54kpaQnRNbIOnXASj3k8veOQ==} 389 | peerDependencies: 390 | svelte: ^3.54.0 391 | dependencies: 392 | svelte: 3.57.0 393 | dev: false 394 | 395 | /svelte/3.57.0: 396 | resolution: {integrity: sha512-WMXEvF+RtAaclw0t3bPDTUe19pplMlfyKDsixbHQYgCWi9+O9VN0kXU1OppzrB9gPAvz4NALuoca2LfW2bOjTQ==} 397 | engines: {node: '>= 8'} 398 | 399 | /vite/4.2.1: 400 | resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} 401 | engines: {node: ^14.18.0 || >=16.0.0} 402 | hasBin: true 403 | peerDependencies: 404 | '@types/node': '>= 14' 405 | less: '*' 406 | sass: '*' 407 | stylus: '*' 408 | sugarss: '*' 409 | terser: ^5.4.0 410 | peerDependenciesMeta: 411 | '@types/node': 412 | optional: true 413 | less: 414 | optional: true 415 | sass: 416 | optional: true 417 | stylus: 418 | optional: true 419 | sugarss: 420 | optional: true 421 | terser: 422 | optional: true 423 | dependencies: 424 | esbuild: 0.17.13 425 | postcss: 8.4.21 426 | resolve: 1.22.1 427 | rollup: 3.20.2 428 | optionalDependencies: 429 | fsevents: 2.3.2 430 | dev: true 431 | 432 | /vitefu/0.2.4_vite@4.2.1: 433 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 434 | peerDependencies: 435 | vite: ^3.0.0 || ^4.0.0 436 | peerDependenciesMeta: 437 | vite: 438 | optional: true 439 | dependencies: 440 | vite: 4.2.1 441 | dev: true 442 | -------------------------------------------------------------------------------- /examples/svelte/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/svelte/src/App.svelte: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 |
20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |

Vite + Svelte

29 | 30 |
31 | 32 |
33 | 34 |

35 | Check out SvelteKit, the official Svelte app framework powered by Vite! 38 |

39 | 40 |

Click on the Vite and Svelte logos to learn more

41 |
42 | 43 | 60 | -------------------------------------------------------------------------------- /examples/svelte/src/app.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | -webkit-text-size-adjust: 100%; 15 | } 16 | 17 | a { 18 | font-weight: 500; 19 | color: #646cff; 20 | text-decoration: inherit; 21 | } 22 | a:hover { 23 | color: #535bf2; 24 | } 25 | 26 | body { 27 | margin: 0; 28 | display: flex; 29 | place-items: center; 30 | min-width: 320px; 31 | min-height: 100vh; 32 | } 33 | 34 | h1 { 35 | font-size: 3.2em; 36 | line-height: 1.1; 37 | } 38 | 39 | .card { 40 | padding: 2em; 41 | } 42 | 43 | #app { 44 | max-width: 1280px; 45 | margin: 0 auto; 46 | padding: 2rem; 47 | text-align: center; 48 | } 49 | 50 | button { 51 | border-radius: 8px; 52 | border: 1px solid transparent; 53 | padding: 0.6em 1.2em; 54 | font-size: 1em; 55 | font-weight: 500; 56 | font-family: inherit; 57 | background-color: #1a1a1a; 58 | cursor: pointer; 59 | transition: border-color 0.25s; 60 | } 61 | button:hover { 62 | border-color: #646cff; 63 | } 64 | button:focus, 65 | button:focus-visible { 66 | outline: 4px auto -webkit-focus-ring-color; 67 | } 68 | 69 | @media (prefers-color-scheme: light) { 70 | :root { 71 | color: #213547; 72 | background-color: #ffffff; 73 | } 74 | a:hover { 75 | color: #747bff; 76 | } 77 | button { 78 | background-color: #f9f9f9; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /examples/svelte/src/assets/svelte.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/svelte/src/lib/Counter.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | -------------------------------------------------------------------------------- /examples/svelte/src/main.js: -------------------------------------------------------------------------------- 1 | import './app.css'; 2 | import App from './App.svelte'; 3 | 4 | const app = new App({ 5 | target: document.getElementById('app') 6 | }); 7 | 8 | export default app; 9 | -------------------------------------------------------------------------------- /examples/svelte/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /examples/svelte/svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess() 7 | }; 8 | -------------------------------------------------------------------------------- /examples/svelte/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import { svelte } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [svelte()] 7 | }); 8 | -------------------------------------------------------------------------------- /mdsvex.config.js: -------------------------------------------------------------------------------- 1 | import { defineMDSveXConfig as defineConfig } from 'mdsvex'; 2 | 3 | const config = defineConfig({ 4 | extensions: ['.svelte.md', '.md', '.svx'], 5 | 6 | smartypants: { 7 | dashes: 'oldschool' 8 | }, 9 | 10 | remarkPlugins: [], 11 | rehypePlugins: [] 12 | }); 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-right-click", 3 | "version": "0.0.5", 4 | "scripts": { 5 | "dev": "vite dev", 6 | "dev:ex:svelte": "cd examples/svelte && pnpm run dev", 7 | "build": "vite build && npm run package", 8 | "preview": "vite preview", 9 | "package": "svelte-kit sync && svelte-package && publint", 10 | "prepublishOnly": "npm run package", 11 | "test": "playwright test", 12 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 13 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 14 | "test:unit": "vitest", 15 | "lint": "prettier --plugin-search-dir . --check . && eslint .", 16 | "format": "prettier --plugin-search-dir . --write ." 17 | }, 18 | "exports": { 19 | ".": { 20 | "types": "./dist/index.d.ts", 21 | "svelte": "./dist/index.js" 22 | } 23 | }, 24 | "files": [ 25 | "dist" 26 | ], 27 | "peerDependencies": { 28 | "svelte": "^3.54.0" 29 | }, 30 | "devDependencies": { 31 | "@playwright/test": "^1.32.1", 32 | "@sveltejs/adapter-auto": "^2.0.0", 33 | "@sveltejs/kit": "^1.14.0", 34 | "@sveltejs/package": "^2.0.2", 35 | "@typescript-eslint/eslint-plugin": "^5.56.0", 36 | "@typescript-eslint/parser": "^5.56.0", 37 | "eslint": "^8.36.0", 38 | "eslint-config-prettier": "^8.8.0", 39 | "eslint-plugin-svelte3": "^4.0.0", 40 | "jsdom": "^21.1.1", 41 | "mdsvex": "^0.10.6", 42 | "prettier": "^2.8.7", 43 | "prettier-plugin-svelte": "^2.10.0", 44 | "publint": "^0.1.11", 45 | "svelte": "^3.57.0", 46 | "svelte-check": "^3.1.4", 47 | "tslib": "^2.5.0", 48 | "typescript": "^4.9.5", 49 | "vite": "^4.2.1", 50 | "vitest": "^0.25.8" 51 | }, 52 | "svelte": "./dist/index.js", 53 | "types": "./dist/index.d.ts", 54 | "type": "module" 55 | } 56 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test'; 2 | 3 | const config: PlaywrightTestConfig = { 4 | webServer: { 5 | command: 'npm run build && npm run preview', 6 | port: 4173 7 | }, 8 | testDir: 'tests/e2e' 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@playwright/test': ^1.32.1 5 | '@sveltejs/adapter-auto': ^2.0.0 6 | '@sveltejs/kit': ^1.14.0 7 | '@sveltejs/package': ^2.0.2 8 | '@typescript-eslint/eslint-plugin': ^5.56.0 9 | '@typescript-eslint/parser': ^5.56.0 10 | eslint: ^8.36.0 11 | eslint-config-prettier: ^8.8.0 12 | eslint-plugin-svelte3: ^4.0.0 13 | jsdom: ^21.1.1 14 | mdsvex: ^0.10.6 15 | prettier: ^2.8.7 16 | prettier-plugin-svelte: ^2.10.0 17 | publint: ^0.1.11 18 | svelte: ^3.57.0 19 | svelte-check: ^3.1.4 20 | tslib: ^2.5.0 21 | typescript: ^4.9.5 22 | vite: ^4.2.1 23 | vitest: ^0.25.8 24 | 25 | devDependencies: 26 | '@playwright/test': 1.32.1 27 | '@sveltejs/adapter-auto': 2.0.0_@sveltejs+kit@1.14.0 28 | '@sveltejs/kit': 1.14.0_svelte@3.57.0+vite@4.2.1 29 | '@sveltejs/package': 2.0.2_wkdgp32a7s6524odeddpfzb52q 30 | '@typescript-eslint/eslint-plugin': 5.56.0_iskin7c6dxqunwflhstekcjqmq 31 | '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m 32 | eslint: 8.36.0 33 | eslint-config-prettier: 8.8.0_eslint@8.36.0 34 | eslint-plugin-svelte3: 4.0.0_wzem237sbvnwe7n34ytc5phasy 35 | jsdom: 21.1.1 36 | mdsvex: 0.10.6_svelte@3.57.0 37 | prettier: 2.8.7 38 | prettier-plugin-svelte: 2.10.0_5ir2xprf4ygk6mygilwnltaw3a 39 | publint: 0.1.11 40 | svelte: 3.57.0 41 | svelte-check: 3.1.4_svelte@3.57.0 42 | tslib: 2.5.0 43 | typescript: 4.9.5 44 | vite: 4.2.1 45 | vitest: 0.25.8_jsdom@21.1.1 46 | 47 | packages: 48 | 49 | /@esbuild/android-arm/0.17.13: 50 | resolution: {integrity: sha512-5tZZ/hLIfBmt7E8JsE5KbsknoAFmoElkg+A/gjyPtmSQvJjPf+9GsSJihid8VMa08lrsYyaEXOT9RLh3xXQONw==} 51 | engines: {node: '>=12'} 52 | cpu: [arm] 53 | os: [android] 54 | requiresBuild: true 55 | dev: true 56 | optional: true 57 | 58 | /@esbuild/android-arm64/0.17.13: 59 | resolution: {integrity: sha512-F5DgvJMV2ZEpLNpPCO7FEk1wy8O5tg6cikWSB6uvvncsgE1xgbPlm+Boio/4820C2/mj713X83X1h01v0qoeHg==} 60 | engines: {node: '>=12'} 61 | cpu: [arm64] 62 | os: [android] 63 | requiresBuild: true 64 | dev: true 65 | optional: true 66 | 67 | /@esbuild/android-x64/0.17.13: 68 | resolution: {integrity: sha512-5m1UUslzpfVrumG3m3Zv2x9VNAcvMOQWJy009y6jt10tcHpzIq2/b0I0k4fz0QYqGSNS1GteRIhVPN4H7OyCXg==} 69 | engines: {node: '>=12'} 70 | cpu: [x64] 71 | os: [android] 72 | requiresBuild: true 73 | dev: true 74 | optional: true 75 | 76 | /@esbuild/darwin-arm64/0.17.13: 77 | resolution: {integrity: sha512-TXbXp/05r7heRsG8yWwbHw9diay+wXIyRNcIHFoNARRIGahYbTW/qwJzE37zkfxLIUPHgR/SyLTUlnTICg14ag==} 78 | engines: {node: '>=12'} 79 | cpu: [arm64] 80 | os: [darwin] 81 | requiresBuild: true 82 | dev: true 83 | optional: true 84 | 85 | /@esbuild/darwin-x64/0.17.13: 86 | resolution: {integrity: sha512-Ku9Db2sblCxFvQdEO7X9nBaLR/S81uch81e2Q2+Os5z1NcnsFjuqhIYH0Gm6KNNpIKaEbC7gCLbiIPbLLMX4Pg==} 87 | engines: {node: '>=12'} 88 | cpu: [x64] 89 | os: [darwin] 90 | requiresBuild: true 91 | dev: true 92 | optional: true 93 | 94 | /@esbuild/freebsd-arm64/0.17.13: 95 | resolution: {integrity: sha512-t1T5/nIf2j+FdSf1Fa3dcU0cXycr0nK4xJe52qjWa+1I249mM5NBY1ODjiabZxZ0x3CG05y4fd9bxfDLy9kQtA==} 96 | engines: {node: '>=12'} 97 | cpu: [arm64] 98 | os: [freebsd] 99 | requiresBuild: true 100 | dev: true 101 | optional: true 102 | 103 | /@esbuild/freebsd-x64/0.17.13: 104 | resolution: {integrity: sha512-/zbkgEO4gY2qGZr9UNAGI38w/FwUY4bx4EC88k9VeiCKNr3ukNgwH/oIgB5Z9/OqpkNLlcS4w9e2d/MIiy5fbw==} 105 | engines: {node: '>=12'} 106 | cpu: [x64] 107 | os: [freebsd] 108 | requiresBuild: true 109 | dev: true 110 | optional: true 111 | 112 | /@esbuild/linux-arm/0.17.13: 113 | resolution: {integrity: sha512-RrhjzrCF6aCDH248nUAQoldnRmN7nHMxv85GOj5AH+qkxxYvcig7fnUmgANngntRu4btXhN9WKHMgQ5seERDMw==} 114 | engines: {node: '>=12'} 115 | cpu: [arm] 116 | os: [linux] 117 | requiresBuild: true 118 | dev: true 119 | optional: true 120 | 121 | /@esbuild/linux-arm64/0.17.13: 122 | resolution: {integrity: sha512-siu3QZrQ7eGrSttvFaRKyjT7kNRbUuHEKzCCyqRh19MbpGokGY13jbIsBEjx6JmH3T50hds325oweS9Ey2ihAQ==} 123 | engines: {node: '>=12'} 124 | cpu: [arm64] 125 | os: [linux] 126 | requiresBuild: true 127 | dev: true 128 | optional: true 129 | 130 | /@esbuild/linux-ia32/0.17.13: 131 | resolution: {integrity: sha512-ADHA1PqP5gIegehVP0RvxMmNPxpLgetI8QCwYOjUheGXKIKWSdUN8ZS3rusQv3NGZmFCpYdMZzFoI0QtzzGAdw==} 132 | engines: {node: '>=12'} 133 | cpu: [ia32] 134 | os: [linux] 135 | requiresBuild: true 136 | dev: true 137 | optional: true 138 | 139 | /@esbuild/linux-loong64/0.17.13: 140 | resolution: {integrity: sha512-n1JQPxETmR0brkpWlJHeohReEPLH+m00bnJdNnFyHN3zLBt1QypevuZSmnmFWsC+7r7HTwWILj3lBDjtPH3ydg==} 141 | engines: {node: '>=12'} 142 | cpu: [loong64] 143 | os: [linux] 144 | requiresBuild: true 145 | dev: true 146 | optional: true 147 | 148 | /@esbuild/linux-mips64el/0.17.13: 149 | resolution: {integrity: sha512-d0pnD/j5KKQ43xtSIvOD+wNIy6D/Vh9GbXVRa3u4zCyiJMYWjxkPkbBzlEgNjdDmUM+5gBFen9k7B8Xscy+Myg==} 150 | engines: {node: '>=12'} 151 | cpu: [mips64el] 152 | os: [linux] 153 | requiresBuild: true 154 | dev: true 155 | optional: true 156 | 157 | /@esbuild/linux-ppc64/0.17.13: 158 | resolution: {integrity: sha512-C9sMpa/VcGLjVtsT01sXtzZNS7bAZ+icUclkKkiUwBQ9hzT+J+/Xpj+EykI5hB3KgtxQVo4XUahanFoZNxbQ1g==} 159 | engines: {node: '>=12'} 160 | cpu: [ppc64] 161 | os: [linux] 162 | requiresBuild: true 163 | dev: true 164 | optional: true 165 | 166 | /@esbuild/linux-riscv64/0.17.13: 167 | resolution: {integrity: sha512-jYkc5EpNpvjccAHNYekiAtklusVGWftR0VVLtng7dJzDyy+5adAsf1fOG3LllP0WALxS55/w6boLE/728J/bXw==} 168 | engines: {node: '>=12'} 169 | cpu: [riscv64] 170 | os: [linux] 171 | requiresBuild: true 172 | dev: true 173 | optional: true 174 | 175 | /@esbuild/linux-s390x/0.17.13: 176 | resolution: {integrity: sha512-4jAJI5O6E/hATL4lsrG2A+noDjZ377KlATVFKwV3SWaNHj+OvoXe/T84ScQIXEtPI7ndJyLkMYruXj8RR5Ilyw==} 177 | engines: {node: '>=12'} 178 | cpu: [s390x] 179 | os: [linux] 180 | requiresBuild: true 181 | dev: true 182 | optional: true 183 | 184 | /@esbuild/linux-x64/0.17.13: 185 | resolution: {integrity: sha512-eFLQhJq98qijGRcv9je/9M4Mz1suZ+pOtj62ArsLd0gubNGhhQDz6T30X2X3f1KZ8lkKkr+zN5vtZzx1GAMoFw==} 186 | engines: {node: '>=12'} 187 | cpu: [x64] 188 | os: [linux] 189 | requiresBuild: true 190 | dev: true 191 | optional: true 192 | 193 | /@esbuild/netbsd-x64/0.17.13: 194 | resolution: {integrity: sha512-F8PXDeT+3eQpPjf4bmNJapPLu0SKKlWRGPQvBQqVS+YDGoMKnyyYp2UENLFMV8zT7kS39zKxZRZvUL3fMz/7Ww==} 195 | engines: {node: '>=12'} 196 | cpu: [x64] 197 | os: [netbsd] 198 | requiresBuild: true 199 | dev: true 200 | optional: true 201 | 202 | /@esbuild/openbsd-x64/0.17.13: 203 | resolution: {integrity: sha512-9jWfzbFCnIZdHjNs+00KQHArUbp7kjQDNmiuqkwGOQFs67m4/dKNupBv2DP5hTqVlQY4tW4RG3qpb6Y3zOHJeA==} 204 | engines: {node: '>=12'} 205 | cpu: [x64] 206 | os: [openbsd] 207 | requiresBuild: true 208 | dev: true 209 | optional: true 210 | 211 | /@esbuild/sunos-x64/0.17.13: 212 | resolution: {integrity: sha512-ALbOMlTIBkAVi6KqYjONa7u2oH95RN7OpetFqMtjufFLBiSaayRuwUzhs2yuR9CfGT4qi0jv6HQDav+EG314TQ==} 213 | engines: {node: '>=12'} 214 | cpu: [x64] 215 | os: [sunos] 216 | requiresBuild: true 217 | dev: true 218 | optional: true 219 | 220 | /@esbuild/win32-arm64/0.17.13: 221 | resolution: {integrity: sha512-FJBLYL4PkrZGeuHzEqme+0DjNetxkJ+XbB+Aoeow7aQ53JCwsA0/mo8sS5aPkDHgCnMkN4A5GLoFTlDj3BKDrQ==} 222 | engines: {node: '>=12'} 223 | cpu: [arm64] 224 | os: [win32] 225 | requiresBuild: true 226 | dev: true 227 | optional: true 228 | 229 | /@esbuild/win32-ia32/0.17.13: 230 | resolution: {integrity: sha512-Qrvst9RkLz4qgi3hqswNliYuKW92/HGJnd7xLWkGaGPa8S4qsONf81FW0ebDc5iUHb0I7QJwQATutvghTabnFA==} 231 | engines: {node: '>=12'} 232 | cpu: [ia32] 233 | os: [win32] 234 | requiresBuild: true 235 | dev: true 236 | optional: true 237 | 238 | /@esbuild/win32-x64/0.17.13: 239 | resolution: {integrity: sha512-pZ/NIgz861XaUPlIkPFjP55nJ4PJa0o/CD4zgeRb1Q9FVE+8GvdB6ifJcK05jRhny5hKExhnRFIdgHmmCYH8vg==} 240 | engines: {node: '>=12'} 241 | cpu: [x64] 242 | os: [win32] 243 | requiresBuild: true 244 | dev: true 245 | optional: true 246 | 247 | /@eslint-community/eslint-utils/4.4.0_eslint@8.36.0: 248 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 249 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 250 | peerDependencies: 251 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 252 | dependencies: 253 | eslint: 8.36.0 254 | eslint-visitor-keys: 3.3.0 255 | dev: true 256 | 257 | /@eslint-community/regexpp/4.4.1: 258 | resolution: {integrity: sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==} 259 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 260 | dev: true 261 | 262 | /@eslint/eslintrc/2.0.1: 263 | resolution: {integrity: sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==} 264 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 265 | dependencies: 266 | ajv: 6.12.6 267 | debug: 4.3.4 268 | espree: 9.5.0 269 | globals: 13.20.0 270 | ignore: 5.2.4 271 | import-fresh: 3.3.0 272 | js-yaml: 4.1.0 273 | minimatch: 3.1.2 274 | strip-json-comments: 3.1.1 275 | transitivePeerDependencies: 276 | - supports-color 277 | dev: true 278 | 279 | /@eslint/js/8.36.0: 280 | resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} 281 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 282 | dev: true 283 | 284 | /@humanwhocodes/config-array/0.11.8: 285 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 286 | engines: {node: '>=10.10.0'} 287 | dependencies: 288 | '@humanwhocodes/object-schema': 1.2.1 289 | debug: 4.3.4 290 | minimatch: 3.1.2 291 | transitivePeerDependencies: 292 | - supports-color 293 | dev: true 294 | 295 | /@humanwhocodes/module-importer/1.0.1: 296 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 297 | engines: {node: '>=12.22'} 298 | dev: true 299 | 300 | /@humanwhocodes/object-schema/1.2.1: 301 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 302 | dev: true 303 | 304 | /@jridgewell/resolve-uri/3.1.0: 305 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 306 | engines: {node: '>=6.0.0'} 307 | dev: true 308 | 309 | /@jridgewell/sourcemap-codec/1.4.14: 310 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 311 | dev: true 312 | 313 | /@jridgewell/trace-mapping/0.3.17: 314 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 315 | dependencies: 316 | '@jridgewell/resolve-uri': 3.1.0 317 | '@jridgewell/sourcemap-codec': 1.4.14 318 | dev: true 319 | 320 | /@nodelib/fs.scandir/2.1.5: 321 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 322 | engines: {node: '>= 8'} 323 | dependencies: 324 | '@nodelib/fs.stat': 2.0.5 325 | run-parallel: 1.2.0 326 | dev: true 327 | 328 | /@nodelib/fs.stat/2.0.5: 329 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 330 | engines: {node: '>= 8'} 331 | dev: true 332 | 333 | /@nodelib/fs.walk/1.2.8: 334 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 335 | engines: {node: '>= 8'} 336 | dependencies: 337 | '@nodelib/fs.scandir': 2.1.5 338 | fastq: 1.15.0 339 | dev: true 340 | 341 | /@playwright/test/1.32.1: 342 | resolution: {integrity: sha512-FTwjCuhlm1qHUGf4hWjfr64UMJD/z0hXYbk+O387Ioe6WdyZQ+0TBDAc6P+pHjx2xCv1VYNgrKbYrNixFWy4Dg==} 343 | engines: {node: '>=14'} 344 | hasBin: true 345 | dependencies: 346 | '@types/node': 18.15.9 347 | playwright-core: 1.32.1 348 | optionalDependencies: 349 | fsevents: 2.3.2 350 | dev: true 351 | 352 | /@polka/url/1.0.0-next.21: 353 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 354 | dev: true 355 | 356 | /@sveltejs/adapter-auto/2.0.0_@sveltejs+kit@1.14.0: 357 | resolution: {integrity: sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==} 358 | peerDependencies: 359 | '@sveltejs/kit': ^1.0.0 360 | dependencies: 361 | '@sveltejs/kit': 1.14.0_svelte@3.57.0+vite@4.2.1 362 | import-meta-resolve: 2.2.2 363 | dev: true 364 | 365 | /@sveltejs/kit/1.14.0_svelte@3.57.0+vite@4.2.1: 366 | resolution: {integrity: sha512-4e/cZT0z4IppEkqNvMrurGz6VE1gScukFU7XqwTL/yrGJGXHqS9D7RvsOcE1hASsgrMu6w/fKTIhxT5oN0K1Jw==} 367 | engines: {node: ^16.14 || >=18} 368 | hasBin: true 369 | requiresBuild: true 370 | peerDependencies: 371 | svelte: ^3.54.0 372 | vite: ^4.0.0 373 | dependencies: 374 | '@sveltejs/vite-plugin-svelte': 2.0.3_svelte@3.57.0+vite@4.2.1 375 | '@types/cookie': 0.5.1 376 | cookie: 0.5.0 377 | devalue: 4.3.0 378 | esm-env: 1.0.0 379 | kleur: 4.1.5 380 | magic-string: 0.30.0 381 | mime: 3.0.0 382 | sade: 1.8.1 383 | set-cookie-parser: 2.6.0 384 | sirv: 2.0.2 385 | svelte: 3.57.0 386 | tiny-glob: 0.2.9 387 | undici: 5.21.0 388 | vite: 4.2.1 389 | transitivePeerDependencies: 390 | - supports-color 391 | dev: true 392 | 393 | /@sveltejs/package/2.0.2_wkdgp32a7s6524odeddpfzb52q: 394 | resolution: {integrity: sha512-cCOCcO8yMHnhHyaR51nQtvKZ3o/vSU9UYI1EXLT1j2CKNPMuH1/g6JNwKcNNrtQGwwquudc69ZeYy8D/TDNwEw==} 395 | engines: {node: ^16.14 || >=18} 396 | hasBin: true 397 | peerDependencies: 398 | svelte: ^3.44.0 399 | dependencies: 400 | chokidar: 3.5.3 401 | kleur: 4.1.5 402 | sade: 1.8.1 403 | svelte: 3.57.0 404 | svelte2tsx: 0.6.10_wkdgp32a7s6524odeddpfzb52q 405 | transitivePeerDependencies: 406 | - typescript 407 | dev: true 408 | 409 | /@sveltejs/vite-plugin-svelte/2.0.3_svelte@3.57.0+vite@4.2.1: 410 | resolution: {integrity: sha512-o+cguBFdwIGtRbNkYOyqTM7KvRUffxh5bfK4oJsWKG2obu+v/cbpT03tJrGl58C7tRXo/aEC0/axN5FVHBj0nA==} 411 | engines: {node: ^14.18.0 || >= 16} 412 | peerDependencies: 413 | svelte: ^3.54.0 414 | vite: ^4.0.0 415 | dependencies: 416 | debug: 4.3.4 417 | deepmerge: 4.3.1 418 | kleur: 4.1.5 419 | magic-string: 0.29.0 420 | svelte: 3.57.0 421 | svelte-hmr: 0.15.1_svelte@3.57.0 422 | vite: 4.2.1 423 | vitefu: 0.2.4_vite@4.2.1 424 | transitivePeerDependencies: 425 | - supports-color 426 | dev: true 427 | 428 | /@tootallnate/once/2.0.0: 429 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 430 | engines: {node: '>= 10'} 431 | dev: true 432 | 433 | /@types/chai-subset/1.3.3: 434 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 435 | dependencies: 436 | '@types/chai': 4.3.4 437 | dev: true 438 | 439 | /@types/chai/4.3.4: 440 | resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} 441 | dev: true 442 | 443 | /@types/cookie/0.5.1: 444 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 445 | dev: true 446 | 447 | /@types/json-schema/7.0.11: 448 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 449 | dev: true 450 | 451 | /@types/node/18.15.9: 452 | resolution: {integrity: sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A==} 453 | dev: true 454 | 455 | /@types/pug/2.0.6: 456 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 457 | dev: true 458 | 459 | /@types/semver/7.3.13: 460 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 461 | dev: true 462 | 463 | /@types/unist/2.0.6: 464 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 465 | dev: true 466 | 467 | /@typescript-eslint/eslint-plugin/5.56.0_iskin7c6dxqunwflhstekcjqmq: 468 | resolution: {integrity: sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==} 469 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 470 | peerDependencies: 471 | '@typescript-eslint/parser': ^5.0.0 472 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 473 | typescript: '*' 474 | peerDependenciesMeta: 475 | typescript: 476 | optional: true 477 | dependencies: 478 | '@eslint-community/regexpp': 4.4.1 479 | '@typescript-eslint/parser': 5.56.0_vgl77cfdswitgr47lm5swmv43m 480 | '@typescript-eslint/scope-manager': 5.56.0 481 | '@typescript-eslint/type-utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m 482 | '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m 483 | debug: 4.3.4 484 | eslint: 8.36.0 485 | grapheme-splitter: 1.0.4 486 | ignore: 5.2.4 487 | natural-compare-lite: 1.4.0 488 | semver: 7.3.8 489 | tsutils: 3.21.0_typescript@4.9.5 490 | typescript: 4.9.5 491 | transitivePeerDependencies: 492 | - supports-color 493 | dev: true 494 | 495 | /@typescript-eslint/parser/5.56.0_vgl77cfdswitgr47lm5swmv43m: 496 | resolution: {integrity: sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==} 497 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 498 | peerDependencies: 499 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 500 | typescript: '*' 501 | peerDependenciesMeta: 502 | typescript: 503 | optional: true 504 | dependencies: 505 | '@typescript-eslint/scope-manager': 5.56.0 506 | '@typescript-eslint/types': 5.56.0 507 | '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 508 | debug: 4.3.4 509 | eslint: 8.36.0 510 | typescript: 4.9.5 511 | transitivePeerDependencies: 512 | - supports-color 513 | dev: true 514 | 515 | /@typescript-eslint/scope-manager/5.56.0: 516 | resolution: {integrity: sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==} 517 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 518 | dependencies: 519 | '@typescript-eslint/types': 5.56.0 520 | '@typescript-eslint/visitor-keys': 5.56.0 521 | dev: true 522 | 523 | /@typescript-eslint/type-utils/5.56.0_vgl77cfdswitgr47lm5swmv43m: 524 | resolution: {integrity: sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==} 525 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 526 | peerDependencies: 527 | eslint: '*' 528 | typescript: '*' 529 | peerDependenciesMeta: 530 | typescript: 531 | optional: true 532 | dependencies: 533 | '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 534 | '@typescript-eslint/utils': 5.56.0_vgl77cfdswitgr47lm5swmv43m 535 | debug: 4.3.4 536 | eslint: 8.36.0 537 | tsutils: 3.21.0_typescript@4.9.5 538 | typescript: 4.9.5 539 | transitivePeerDependencies: 540 | - supports-color 541 | dev: true 542 | 543 | /@typescript-eslint/types/5.56.0: 544 | resolution: {integrity: sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==} 545 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 546 | dev: true 547 | 548 | /@typescript-eslint/typescript-estree/5.56.0_typescript@4.9.5: 549 | resolution: {integrity: sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==} 550 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 551 | peerDependencies: 552 | typescript: '*' 553 | peerDependenciesMeta: 554 | typescript: 555 | optional: true 556 | dependencies: 557 | '@typescript-eslint/types': 5.56.0 558 | '@typescript-eslint/visitor-keys': 5.56.0 559 | debug: 4.3.4 560 | globby: 11.1.0 561 | is-glob: 4.0.3 562 | semver: 7.3.8 563 | tsutils: 3.21.0_typescript@4.9.5 564 | typescript: 4.9.5 565 | transitivePeerDependencies: 566 | - supports-color 567 | dev: true 568 | 569 | /@typescript-eslint/utils/5.56.0_vgl77cfdswitgr47lm5swmv43m: 570 | resolution: {integrity: sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==} 571 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 572 | peerDependencies: 573 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 574 | dependencies: 575 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.36.0 576 | '@types/json-schema': 7.0.11 577 | '@types/semver': 7.3.13 578 | '@typescript-eslint/scope-manager': 5.56.0 579 | '@typescript-eslint/types': 5.56.0 580 | '@typescript-eslint/typescript-estree': 5.56.0_typescript@4.9.5 581 | eslint: 8.36.0 582 | eslint-scope: 5.1.1 583 | semver: 7.3.8 584 | transitivePeerDependencies: 585 | - supports-color 586 | - typescript 587 | dev: true 588 | 589 | /@typescript-eslint/visitor-keys/5.56.0: 590 | resolution: {integrity: sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==} 591 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 592 | dependencies: 593 | '@typescript-eslint/types': 5.56.0 594 | eslint-visitor-keys: 3.3.0 595 | dev: true 596 | 597 | /abab/2.0.6: 598 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} 599 | dev: true 600 | 601 | /acorn-globals/7.0.1: 602 | resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} 603 | dependencies: 604 | acorn: 8.8.2 605 | acorn-walk: 8.2.0 606 | dev: true 607 | 608 | /acorn-jsx/5.3.2_acorn@8.8.2: 609 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 610 | peerDependencies: 611 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 612 | dependencies: 613 | acorn: 8.8.2 614 | dev: true 615 | 616 | /acorn-walk/8.2.0: 617 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 618 | engines: {node: '>=0.4.0'} 619 | dev: true 620 | 621 | /acorn/8.8.2: 622 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 623 | engines: {node: '>=0.4.0'} 624 | hasBin: true 625 | dev: true 626 | 627 | /agent-base/6.0.2: 628 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 629 | engines: {node: '>= 6.0.0'} 630 | dependencies: 631 | debug: 4.3.4 632 | transitivePeerDependencies: 633 | - supports-color 634 | dev: true 635 | 636 | /ajv/6.12.6: 637 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 638 | dependencies: 639 | fast-deep-equal: 3.1.3 640 | fast-json-stable-stringify: 2.1.0 641 | json-schema-traverse: 0.4.1 642 | uri-js: 4.4.1 643 | dev: true 644 | 645 | /ansi-regex/5.0.1: 646 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 647 | engines: {node: '>=8'} 648 | dev: true 649 | 650 | /ansi-styles/4.3.0: 651 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 652 | engines: {node: '>=8'} 653 | dependencies: 654 | color-convert: 2.0.1 655 | dev: true 656 | 657 | /anymatch/3.1.3: 658 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 659 | engines: {node: '>= 8'} 660 | dependencies: 661 | normalize-path: 3.0.0 662 | picomatch: 2.3.1 663 | dev: true 664 | 665 | /argparse/2.0.1: 666 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 667 | dev: true 668 | 669 | /array-union/2.1.0: 670 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 671 | engines: {node: '>=8'} 672 | dev: true 673 | 674 | /assertion-error/1.1.0: 675 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 676 | dev: true 677 | 678 | /asynckit/0.4.0: 679 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 680 | dev: true 681 | 682 | /balanced-match/1.0.2: 683 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 684 | dev: true 685 | 686 | /binary-extensions/2.2.0: 687 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 688 | engines: {node: '>=8'} 689 | dev: true 690 | 691 | /brace-expansion/1.1.11: 692 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 693 | dependencies: 694 | balanced-match: 1.0.2 695 | concat-map: 0.0.1 696 | dev: true 697 | 698 | /brace-expansion/2.0.1: 699 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 700 | dependencies: 701 | balanced-match: 1.0.2 702 | dev: true 703 | 704 | /braces/3.0.2: 705 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 706 | engines: {node: '>=8'} 707 | dependencies: 708 | fill-range: 7.0.1 709 | dev: true 710 | 711 | /buffer-crc32/0.2.13: 712 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 713 | dev: true 714 | 715 | /busboy/1.6.0: 716 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 717 | engines: {node: '>=10.16.0'} 718 | dependencies: 719 | streamsearch: 1.1.0 720 | dev: true 721 | 722 | /callsites/3.1.0: 723 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 724 | engines: {node: '>=6'} 725 | dev: true 726 | 727 | /chai/4.3.7: 728 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} 729 | engines: {node: '>=4'} 730 | dependencies: 731 | assertion-error: 1.1.0 732 | check-error: 1.0.2 733 | deep-eql: 4.1.3 734 | get-func-name: 2.0.0 735 | loupe: 2.3.6 736 | pathval: 1.1.1 737 | type-detect: 4.0.8 738 | dev: true 739 | 740 | /chalk/4.1.2: 741 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 742 | engines: {node: '>=10'} 743 | dependencies: 744 | ansi-styles: 4.3.0 745 | supports-color: 7.2.0 746 | dev: true 747 | 748 | /check-error/1.0.2: 749 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 750 | dev: true 751 | 752 | /chokidar/3.5.3: 753 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 754 | engines: {node: '>= 8.10.0'} 755 | dependencies: 756 | anymatch: 3.1.3 757 | braces: 3.0.2 758 | glob-parent: 5.1.2 759 | is-binary-path: 2.1.0 760 | is-glob: 4.0.3 761 | normalize-path: 3.0.0 762 | readdirp: 3.6.0 763 | optionalDependencies: 764 | fsevents: 2.3.2 765 | dev: true 766 | 767 | /color-convert/2.0.1: 768 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 769 | engines: {node: '>=7.0.0'} 770 | dependencies: 771 | color-name: 1.1.4 772 | dev: true 773 | 774 | /color-name/1.1.4: 775 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 776 | dev: true 777 | 778 | /combined-stream/1.0.8: 779 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 780 | engines: {node: '>= 0.8'} 781 | dependencies: 782 | delayed-stream: 1.0.0 783 | dev: true 784 | 785 | /concat-map/0.0.1: 786 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 787 | dev: true 788 | 789 | /cookie/0.5.0: 790 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 791 | engines: {node: '>= 0.6'} 792 | dev: true 793 | 794 | /cross-spawn/7.0.3: 795 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 796 | engines: {node: '>= 8'} 797 | dependencies: 798 | path-key: 3.1.1 799 | shebang-command: 2.0.0 800 | which: 2.0.2 801 | dev: true 802 | 803 | /cssstyle/3.0.0: 804 | resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} 805 | engines: {node: '>=14'} 806 | dependencies: 807 | rrweb-cssom: 0.6.0 808 | dev: true 809 | 810 | /data-urls/4.0.0: 811 | resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} 812 | engines: {node: '>=14'} 813 | dependencies: 814 | abab: 2.0.6 815 | whatwg-mimetype: 3.0.0 816 | whatwg-url: 12.0.1 817 | dev: true 818 | 819 | /debug/4.3.4: 820 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 821 | engines: {node: '>=6.0'} 822 | peerDependencies: 823 | supports-color: '*' 824 | peerDependenciesMeta: 825 | supports-color: 826 | optional: true 827 | dependencies: 828 | ms: 2.1.2 829 | dev: true 830 | 831 | /decimal.js/10.4.3: 832 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 833 | dev: true 834 | 835 | /dedent-js/1.0.1: 836 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 837 | dev: true 838 | 839 | /deep-eql/4.1.3: 840 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 841 | engines: {node: '>=6'} 842 | dependencies: 843 | type-detect: 4.0.8 844 | dev: true 845 | 846 | /deep-is/0.1.4: 847 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 848 | dev: true 849 | 850 | /deepmerge/4.3.1: 851 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 852 | engines: {node: '>=0.10.0'} 853 | dev: true 854 | 855 | /delayed-stream/1.0.0: 856 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 857 | engines: {node: '>=0.4.0'} 858 | dev: true 859 | 860 | /detect-indent/6.1.0: 861 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 862 | engines: {node: '>=8'} 863 | dev: true 864 | 865 | /devalue/4.3.0: 866 | resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==} 867 | dev: true 868 | 869 | /dir-glob/3.0.1: 870 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 871 | engines: {node: '>=8'} 872 | dependencies: 873 | path-type: 4.0.0 874 | dev: true 875 | 876 | /doctrine/3.0.0: 877 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 878 | engines: {node: '>=6.0.0'} 879 | dependencies: 880 | esutils: 2.0.3 881 | dev: true 882 | 883 | /domexception/4.0.0: 884 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} 885 | engines: {node: '>=12'} 886 | dependencies: 887 | webidl-conversions: 7.0.0 888 | dev: true 889 | 890 | /entities/4.4.0: 891 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 892 | engines: {node: '>=0.12'} 893 | dev: true 894 | 895 | /es6-promise/3.3.1: 896 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 897 | dev: true 898 | 899 | /esbuild/0.17.13: 900 | resolution: {integrity: sha512-4ixMwdErBcQHgTBeoxnowENCPKWFAGxgTyKHMK8gqn9sZaC7ZNWFKtim16g2rzQ2b/FYyy3lIUUJboFtjolhqg==} 901 | engines: {node: '>=12'} 902 | hasBin: true 903 | requiresBuild: true 904 | optionalDependencies: 905 | '@esbuild/android-arm': 0.17.13 906 | '@esbuild/android-arm64': 0.17.13 907 | '@esbuild/android-x64': 0.17.13 908 | '@esbuild/darwin-arm64': 0.17.13 909 | '@esbuild/darwin-x64': 0.17.13 910 | '@esbuild/freebsd-arm64': 0.17.13 911 | '@esbuild/freebsd-x64': 0.17.13 912 | '@esbuild/linux-arm': 0.17.13 913 | '@esbuild/linux-arm64': 0.17.13 914 | '@esbuild/linux-ia32': 0.17.13 915 | '@esbuild/linux-loong64': 0.17.13 916 | '@esbuild/linux-mips64el': 0.17.13 917 | '@esbuild/linux-ppc64': 0.17.13 918 | '@esbuild/linux-riscv64': 0.17.13 919 | '@esbuild/linux-s390x': 0.17.13 920 | '@esbuild/linux-x64': 0.17.13 921 | '@esbuild/netbsd-x64': 0.17.13 922 | '@esbuild/openbsd-x64': 0.17.13 923 | '@esbuild/sunos-x64': 0.17.13 924 | '@esbuild/win32-arm64': 0.17.13 925 | '@esbuild/win32-ia32': 0.17.13 926 | '@esbuild/win32-x64': 0.17.13 927 | dev: true 928 | 929 | /escape-string-regexp/4.0.0: 930 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 931 | engines: {node: '>=10'} 932 | dev: true 933 | 934 | /escodegen/2.0.0: 935 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 936 | engines: {node: '>=6.0'} 937 | hasBin: true 938 | dependencies: 939 | esprima: 4.0.1 940 | estraverse: 5.3.0 941 | esutils: 2.0.3 942 | optionator: 0.8.3 943 | optionalDependencies: 944 | source-map: 0.6.1 945 | dev: true 946 | 947 | /eslint-config-prettier/8.8.0_eslint@8.36.0: 948 | resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} 949 | hasBin: true 950 | peerDependencies: 951 | eslint: '>=7.0.0' 952 | dependencies: 953 | eslint: 8.36.0 954 | dev: true 955 | 956 | /eslint-plugin-svelte3/4.0.0_wzem237sbvnwe7n34ytc5phasy: 957 | resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} 958 | peerDependencies: 959 | eslint: '>=8.0.0' 960 | svelte: ^3.2.0 961 | dependencies: 962 | eslint: 8.36.0 963 | svelte: 3.57.0 964 | dev: true 965 | 966 | /eslint-scope/5.1.1: 967 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 968 | engines: {node: '>=8.0.0'} 969 | dependencies: 970 | esrecurse: 4.3.0 971 | estraverse: 4.3.0 972 | dev: true 973 | 974 | /eslint-scope/7.1.1: 975 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 976 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 977 | dependencies: 978 | esrecurse: 4.3.0 979 | estraverse: 5.3.0 980 | dev: true 981 | 982 | /eslint-visitor-keys/3.3.0: 983 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 984 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 985 | dev: true 986 | 987 | /eslint/8.36.0: 988 | resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} 989 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 990 | hasBin: true 991 | dependencies: 992 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.36.0 993 | '@eslint-community/regexpp': 4.4.1 994 | '@eslint/eslintrc': 2.0.1 995 | '@eslint/js': 8.36.0 996 | '@humanwhocodes/config-array': 0.11.8 997 | '@humanwhocodes/module-importer': 1.0.1 998 | '@nodelib/fs.walk': 1.2.8 999 | ajv: 6.12.6 1000 | chalk: 4.1.2 1001 | cross-spawn: 7.0.3 1002 | debug: 4.3.4 1003 | doctrine: 3.0.0 1004 | escape-string-regexp: 4.0.0 1005 | eslint-scope: 7.1.1 1006 | eslint-visitor-keys: 3.3.0 1007 | espree: 9.5.0 1008 | esquery: 1.5.0 1009 | esutils: 2.0.3 1010 | fast-deep-equal: 3.1.3 1011 | file-entry-cache: 6.0.1 1012 | find-up: 5.0.0 1013 | glob-parent: 6.0.2 1014 | globals: 13.20.0 1015 | grapheme-splitter: 1.0.4 1016 | ignore: 5.2.4 1017 | import-fresh: 3.3.0 1018 | imurmurhash: 0.1.4 1019 | is-glob: 4.0.3 1020 | is-path-inside: 3.0.3 1021 | js-sdsl: 4.4.0 1022 | js-yaml: 4.1.0 1023 | json-stable-stringify-without-jsonify: 1.0.1 1024 | levn: 0.4.1 1025 | lodash.merge: 4.6.2 1026 | minimatch: 3.1.2 1027 | natural-compare: 1.4.0 1028 | optionator: 0.9.1 1029 | strip-ansi: 6.0.1 1030 | strip-json-comments: 3.1.1 1031 | text-table: 0.2.0 1032 | transitivePeerDependencies: 1033 | - supports-color 1034 | dev: true 1035 | 1036 | /esm-env/1.0.0: 1037 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 1038 | dev: true 1039 | 1040 | /espree/9.5.0: 1041 | resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} 1042 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1043 | dependencies: 1044 | acorn: 8.8.2 1045 | acorn-jsx: 5.3.2_acorn@8.8.2 1046 | eslint-visitor-keys: 3.3.0 1047 | dev: true 1048 | 1049 | /esprima/4.0.1: 1050 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1051 | engines: {node: '>=4'} 1052 | hasBin: true 1053 | dev: true 1054 | 1055 | /esquery/1.5.0: 1056 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1057 | engines: {node: '>=0.10'} 1058 | dependencies: 1059 | estraverse: 5.3.0 1060 | dev: true 1061 | 1062 | /esrecurse/4.3.0: 1063 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1064 | engines: {node: '>=4.0'} 1065 | dependencies: 1066 | estraverse: 5.3.0 1067 | dev: true 1068 | 1069 | /estraverse/4.3.0: 1070 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1071 | engines: {node: '>=4.0'} 1072 | dev: true 1073 | 1074 | /estraverse/5.3.0: 1075 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1076 | engines: {node: '>=4.0'} 1077 | dev: true 1078 | 1079 | /esutils/2.0.3: 1080 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1081 | engines: {node: '>=0.10.0'} 1082 | dev: true 1083 | 1084 | /fast-deep-equal/3.1.3: 1085 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1086 | dev: true 1087 | 1088 | /fast-glob/3.2.12: 1089 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1090 | engines: {node: '>=8.6.0'} 1091 | dependencies: 1092 | '@nodelib/fs.stat': 2.0.5 1093 | '@nodelib/fs.walk': 1.2.8 1094 | glob-parent: 5.1.2 1095 | merge2: 1.4.1 1096 | micromatch: 4.0.5 1097 | dev: true 1098 | 1099 | /fast-json-stable-stringify/2.1.0: 1100 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1101 | dev: true 1102 | 1103 | /fast-levenshtein/2.0.6: 1104 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1105 | dev: true 1106 | 1107 | /fastq/1.15.0: 1108 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1109 | dependencies: 1110 | reusify: 1.0.4 1111 | dev: true 1112 | 1113 | /file-entry-cache/6.0.1: 1114 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1115 | engines: {node: ^10.12.0 || >=12.0.0} 1116 | dependencies: 1117 | flat-cache: 3.0.4 1118 | dev: true 1119 | 1120 | /fill-range/7.0.1: 1121 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1122 | engines: {node: '>=8'} 1123 | dependencies: 1124 | to-regex-range: 5.0.1 1125 | dev: true 1126 | 1127 | /find-up/5.0.0: 1128 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1129 | engines: {node: '>=10'} 1130 | dependencies: 1131 | locate-path: 6.0.0 1132 | path-exists: 4.0.0 1133 | dev: true 1134 | 1135 | /flat-cache/3.0.4: 1136 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1137 | engines: {node: ^10.12.0 || >=12.0.0} 1138 | dependencies: 1139 | flatted: 3.2.7 1140 | rimraf: 3.0.2 1141 | dev: true 1142 | 1143 | /flatted/3.2.7: 1144 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1145 | dev: true 1146 | 1147 | /form-data/4.0.0: 1148 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1149 | engines: {node: '>= 6'} 1150 | dependencies: 1151 | asynckit: 0.4.0 1152 | combined-stream: 1.0.8 1153 | mime-types: 2.1.35 1154 | dev: true 1155 | 1156 | /fs.realpath/1.0.0: 1157 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1158 | dev: true 1159 | 1160 | /fsevents/2.3.2: 1161 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1162 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1163 | os: [darwin] 1164 | requiresBuild: true 1165 | dev: true 1166 | optional: true 1167 | 1168 | /function-bind/1.1.1: 1169 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1170 | dev: true 1171 | 1172 | /get-func-name/2.0.0: 1173 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1174 | dev: true 1175 | 1176 | /glob-parent/5.1.2: 1177 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1178 | engines: {node: '>= 6'} 1179 | dependencies: 1180 | is-glob: 4.0.3 1181 | dev: true 1182 | 1183 | /glob-parent/6.0.2: 1184 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1185 | engines: {node: '>=10.13.0'} 1186 | dependencies: 1187 | is-glob: 4.0.3 1188 | dev: true 1189 | 1190 | /glob/7.2.3: 1191 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1192 | dependencies: 1193 | fs.realpath: 1.0.0 1194 | inflight: 1.0.6 1195 | inherits: 2.0.4 1196 | minimatch: 3.1.2 1197 | once: 1.4.0 1198 | path-is-absolute: 1.0.1 1199 | dev: true 1200 | 1201 | /glob/8.1.0: 1202 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 1203 | engines: {node: '>=12'} 1204 | dependencies: 1205 | fs.realpath: 1.0.0 1206 | inflight: 1.0.6 1207 | inherits: 2.0.4 1208 | minimatch: 5.1.6 1209 | once: 1.4.0 1210 | dev: true 1211 | 1212 | /globals/13.20.0: 1213 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1214 | engines: {node: '>=8'} 1215 | dependencies: 1216 | type-fest: 0.20.2 1217 | dev: true 1218 | 1219 | /globalyzer/0.1.0: 1220 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1221 | dev: true 1222 | 1223 | /globby/11.1.0: 1224 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1225 | engines: {node: '>=10'} 1226 | dependencies: 1227 | array-union: 2.1.0 1228 | dir-glob: 3.0.1 1229 | fast-glob: 3.2.12 1230 | ignore: 5.2.4 1231 | merge2: 1.4.1 1232 | slash: 3.0.0 1233 | dev: true 1234 | 1235 | /globrex/0.1.2: 1236 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1237 | dev: true 1238 | 1239 | /graceful-fs/4.2.11: 1240 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1241 | dev: true 1242 | 1243 | /grapheme-splitter/1.0.4: 1244 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1245 | dev: true 1246 | 1247 | /has-flag/4.0.0: 1248 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1249 | engines: {node: '>=8'} 1250 | dev: true 1251 | 1252 | /has/1.0.3: 1253 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1254 | engines: {node: '>= 0.4.0'} 1255 | dependencies: 1256 | function-bind: 1.1.1 1257 | dev: true 1258 | 1259 | /html-encoding-sniffer/3.0.0: 1260 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} 1261 | engines: {node: '>=12'} 1262 | dependencies: 1263 | whatwg-encoding: 2.0.0 1264 | dev: true 1265 | 1266 | /http-proxy-agent/5.0.0: 1267 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} 1268 | engines: {node: '>= 6'} 1269 | dependencies: 1270 | '@tootallnate/once': 2.0.0 1271 | agent-base: 6.0.2 1272 | debug: 4.3.4 1273 | transitivePeerDependencies: 1274 | - supports-color 1275 | dev: true 1276 | 1277 | /https-proxy-agent/5.0.1: 1278 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1279 | engines: {node: '>= 6'} 1280 | dependencies: 1281 | agent-base: 6.0.2 1282 | debug: 4.3.4 1283 | transitivePeerDependencies: 1284 | - supports-color 1285 | dev: true 1286 | 1287 | /iconv-lite/0.6.3: 1288 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1289 | engines: {node: '>=0.10.0'} 1290 | dependencies: 1291 | safer-buffer: 2.1.2 1292 | dev: true 1293 | 1294 | /ignore-walk/5.0.1: 1295 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 1296 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1297 | dependencies: 1298 | minimatch: 5.1.6 1299 | dev: true 1300 | 1301 | /ignore/5.2.4: 1302 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1303 | engines: {node: '>= 4'} 1304 | dev: true 1305 | 1306 | /import-fresh/3.3.0: 1307 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1308 | engines: {node: '>=6'} 1309 | dependencies: 1310 | parent-module: 1.0.1 1311 | resolve-from: 4.0.0 1312 | dev: true 1313 | 1314 | /import-meta-resolve/2.2.2: 1315 | resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} 1316 | dev: true 1317 | 1318 | /imurmurhash/0.1.4: 1319 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1320 | engines: {node: '>=0.8.19'} 1321 | dev: true 1322 | 1323 | /inflight/1.0.6: 1324 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1325 | dependencies: 1326 | once: 1.4.0 1327 | wrappy: 1.0.2 1328 | dev: true 1329 | 1330 | /inherits/2.0.4: 1331 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1332 | dev: true 1333 | 1334 | /is-binary-path/2.1.0: 1335 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1336 | engines: {node: '>=8'} 1337 | dependencies: 1338 | binary-extensions: 2.2.0 1339 | dev: true 1340 | 1341 | /is-core-module/2.11.0: 1342 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1343 | dependencies: 1344 | has: 1.0.3 1345 | dev: true 1346 | 1347 | /is-extglob/2.1.1: 1348 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1349 | engines: {node: '>=0.10.0'} 1350 | dev: true 1351 | 1352 | /is-glob/4.0.3: 1353 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1354 | engines: {node: '>=0.10.0'} 1355 | dependencies: 1356 | is-extglob: 2.1.1 1357 | dev: true 1358 | 1359 | /is-number/7.0.0: 1360 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1361 | engines: {node: '>=0.12.0'} 1362 | dev: true 1363 | 1364 | /is-path-inside/3.0.3: 1365 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1366 | engines: {node: '>=8'} 1367 | dev: true 1368 | 1369 | /is-potential-custom-element-name/1.0.1: 1370 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1371 | dev: true 1372 | 1373 | /isexe/2.0.0: 1374 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1375 | dev: true 1376 | 1377 | /js-sdsl/4.4.0: 1378 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} 1379 | dev: true 1380 | 1381 | /js-yaml/4.1.0: 1382 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1383 | hasBin: true 1384 | dependencies: 1385 | argparse: 2.0.1 1386 | dev: true 1387 | 1388 | /jsdom/21.1.1: 1389 | resolution: {integrity: sha512-Jjgdmw48RKcdAIQyUD1UdBh2ecH7VqwaXPN3ehoZN6MqgVbMn+lRm1aAT1AsdJRAJpwfa4IpwgzySn61h2qu3w==} 1390 | engines: {node: '>=14'} 1391 | peerDependencies: 1392 | canvas: ^2.5.0 1393 | peerDependenciesMeta: 1394 | canvas: 1395 | optional: true 1396 | dependencies: 1397 | abab: 2.0.6 1398 | acorn: 8.8.2 1399 | acorn-globals: 7.0.1 1400 | cssstyle: 3.0.0 1401 | data-urls: 4.0.0 1402 | decimal.js: 10.4.3 1403 | domexception: 4.0.0 1404 | escodegen: 2.0.0 1405 | form-data: 4.0.0 1406 | html-encoding-sniffer: 3.0.0 1407 | http-proxy-agent: 5.0.0 1408 | https-proxy-agent: 5.0.1 1409 | is-potential-custom-element-name: 1.0.1 1410 | nwsapi: 2.2.2 1411 | parse5: 7.1.2 1412 | rrweb-cssom: 0.6.0 1413 | saxes: 6.0.0 1414 | symbol-tree: 3.2.4 1415 | tough-cookie: 4.1.2 1416 | w3c-xmlserializer: 4.0.0 1417 | webidl-conversions: 7.0.0 1418 | whatwg-encoding: 2.0.0 1419 | whatwg-mimetype: 3.0.0 1420 | whatwg-url: 12.0.1 1421 | ws: 8.13.0 1422 | xml-name-validator: 4.0.0 1423 | transitivePeerDependencies: 1424 | - bufferutil 1425 | - supports-color 1426 | - utf-8-validate 1427 | dev: true 1428 | 1429 | /json-schema-traverse/0.4.1: 1430 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1431 | dev: true 1432 | 1433 | /json-stable-stringify-without-jsonify/1.0.1: 1434 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1435 | dev: true 1436 | 1437 | /kleur/4.1.5: 1438 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1439 | engines: {node: '>=6'} 1440 | dev: true 1441 | 1442 | /levn/0.3.0: 1443 | resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} 1444 | engines: {node: '>= 0.8.0'} 1445 | dependencies: 1446 | prelude-ls: 1.1.2 1447 | type-check: 0.3.2 1448 | dev: true 1449 | 1450 | /levn/0.4.1: 1451 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1452 | engines: {node: '>= 0.8.0'} 1453 | dependencies: 1454 | prelude-ls: 1.2.1 1455 | type-check: 0.4.0 1456 | dev: true 1457 | 1458 | /local-pkg/0.4.3: 1459 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 1460 | engines: {node: '>=14'} 1461 | dev: true 1462 | 1463 | /locate-path/6.0.0: 1464 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1465 | engines: {node: '>=10'} 1466 | dependencies: 1467 | p-locate: 5.0.0 1468 | dev: true 1469 | 1470 | /lodash.merge/4.6.2: 1471 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1472 | dev: true 1473 | 1474 | /loupe/2.3.6: 1475 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} 1476 | dependencies: 1477 | get-func-name: 2.0.0 1478 | dev: true 1479 | 1480 | /lower-case/2.0.2: 1481 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1482 | dependencies: 1483 | tslib: 2.5.0 1484 | dev: true 1485 | 1486 | /lru-cache/6.0.0: 1487 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1488 | engines: {node: '>=10'} 1489 | dependencies: 1490 | yallist: 4.0.0 1491 | dev: true 1492 | 1493 | /magic-string/0.27.0: 1494 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1495 | engines: {node: '>=12'} 1496 | dependencies: 1497 | '@jridgewell/sourcemap-codec': 1.4.14 1498 | dev: true 1499 | 1500 | /magic-string/0.29.0: 1501 | resolution: {integrity: sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==} 1502 | engines: {node: '>=12'} 1503 | dependencies: 1504 | '@jridgewell/sourcemap-codec': 1.4.14 1505 | dev: true 1506 | 1507 | /magic-string/0.30.0: 1508 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} 1509 | engines: {node: '>=12'} 1510 | dependencies: 1511 | '@jridgewell/sourcemap-codec': 1.4.14 1512 | dev: true 1513 | 1514 | /mdsvex/0.10.6_svelte@3.57.0: 1515 | resolution: {integrity: sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA==} 1516 | peerDependencies: 1517 | svelte: 3.x 1518 | dependencies: 1519 | '@types/unist': 2.0.6 1520 | prism-svelte: 0.4.7 1521 | prismjs: 1.29.0 1522 | svelte: 3.57.0 1523 | vfile-message: 2.0.4 1524 | dev: true 1525 | 1526 | /merge2/1.4.1: 1527 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1528 | engines: {node: '>= 8'} 1529 | dev: true 1530 | 1531 | /micromatch/4.0.5: 1532 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1533 | engines: {node: '>=8.6'} 1534 | dependencies: 1535 | braces: 3.0.2 1536 | picomatch: 2.3.1 1537 | dev: true 1538 | 1539 | /mime-db/1.52.0: 1540 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1541 | engines: {node: '>= 0.6'} 1542 | dev: true 1543 | 1544 | /mime-types/2.1.35: 1545 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1546 | engines: {node: '>= 0.6'} 1547 | dependencies: 1548 | mime-db: 1.52.0 1549 | dev: true 1550 | 1551 | /mime/3.0.0: 1552 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1553 | engines: {node: '>=10.0.0'} 1554 | hasBin: true 1555 | dev: true 1556 | 1557 | /min-indent/1.0.1: 1558 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1559 | engines: {node: '>=4'} 1560 | dev: true 1561 | 1562 | /minimatch/3.1.2: 1563 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1564 | dependencies: 1565 | brace-expansion: 1.1.11 1566 | dev: true 1567 | 1568 | /minimatch/5.1.6: 1569 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1570 | engines: {node: '>=10'} 1571 | dependencies: 1572 | brace-expansion: 2.0.1 1573 | dev: true 1574 | 1575 | /minimist/1.2.8: 1576 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1577 | dev: true 1578 | 1579 | /mkdirp/0.5.6: 1580 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1581 | hasBin: true 1582 | dependencies: 1583 | minimist: 1.2.8 1584 | dev: true 1585 | 1586 | /mri/1.2.0: 1587 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1588 | engines: {node: '>=4'} 1589 | dev: true 1590 | 1591 | /mrmime/1.0.1: 1592 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 1593 | engines: {node: '>=10'} 1594 | dev: true 1595 | 1596 | /ms/2.1.2: 1597 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1598 | dev: true 1599 | 1600 | /nanoid/3.3.4: 1601 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1602 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1603 | hasBin: true 1604 | dev: true 1605 | 1606 | /natural-compare-lite/1.4.0: 1607 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1608 | dev: true 1609 | 1610 | /natural-compare/1.4.0: 1611 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1612 | dev: true 1613 | 1614 | /no-case/3.0.4: 1615 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1616 | dependencies: 1617 | lower-case: 2.0.2 1618 | tslib: 2.5.0 1619 | dev: true 1620 | 1621 | /normalize-path/3.0.0: 1622 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1623 | engines: {node: '>=0.10.0'} 1624 | dev: true 1625 | 1626 | /npm-bundled/2.0.1: 1627 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 1628 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1629 | dependencies: 1630 | npm-normalize-package-bin: 2.0.0 1631 | dev: true 1632 | 1633 | /npm-normalize-package-bin/2.0.0: 1634 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 1635 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1636 | dev: true 1637 | 1638 | /npm-packlist/5.1.3: 1639 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 1640 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1641 | hasBin: true 1642 | dependencies: 1643 | glob: 8.1.0 1644 | ignore-walk: 5.0.1 1645 | npm-bundled: 2.0.1 1646 | npm-normalize-package-bin: 2.0.0 1647 | dev: true 1648 | 1649 | /nwsapi/2.2.2: 1650 | resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} 1651 | dev: true 1652 | 1653 | /once/1.4.0: 1654 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1655 | dependencies: 1656 | wrappy: 1.0.2 1657 | dev: true 1658 | 1659 | /optionator/0.8.3: 1660 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 1661 | engines: {node: '>= 0.8.0'} 1662 | dependencies: 1663 | deep-is: 0.1.4 1664 | fast-levenshtein: 2.0.6 1665 | levn: 0.3.0 1666 | prelude-ls: 1.1.2 1667 | type-check: 0.3.2 1668 | word-wrap: 1.2.3 1669 | dev: true 1670 | 1671 | /optionator/0.9.1: 1672 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1673 | engines: {node: '>= 0.8.0'} 1674 | dependencies: 1675 | deep-is: 0.1.4 1676 | fast-levenshtein: 2.0.6 1677 | levn: 0.4.1 1678 | prelude-ls: 1.2.1 1679 | type-check: 0.4.0 1680 | word-wrap: 1.2.3 1681 | dev: true 1682 | 1683 | /p-limit/3.1.0: 1684 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1685 | engines: {node: '>=10'} 1686 | dependencies: 1687 | yocto-queue: 0.1.0 1688 | dev: true 1689 | 1690 | /p-locate/5.0.0: 1691 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1692 | engines: {node: '>=10'} 1693 | dependencies: 1694 | p-limit: 3.1.0 1695 | dev: true 1696 | 1697 | /parent-module/1.0.1: 1698 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1699 | engines: {node: '>=6'} 1700 | dependencies: 1701 | callsites: 3.1.0 1702 | dev: true 1703 | 1704 | /parse5/7.1.2: 1705 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 1706 | dependencies: 1707 | entities: 4.4.0 1708 | dev: true 1709 | 1710 | /pascal-case/3.1.2: 1711 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1712 | dependencies: 1713 | no-case: 3.0.4 1714 | tslib: 2.5.0 1715 | dev: true 1716 | 1717 | /path-exists/4.0.0: 1718 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1719 | engines: {node: '>=8'} 1720 | dev: true 1721 | 1722 | /path-is-absolute/1.0.1: 1723 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1724 | engines: {node: '>=0.10.0'} 1725 | dev: true 1726 | 1727 | /path-key/3.1.1: 1728 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1729 | engines: {node: '>=8'} 1730 | dev: true 1731 | 1732 | /path-parse/1.0.7: 1733 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1734 | dev: true 1735 | 1736 | /path-type/4.0.0: 1737 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1738 | engines: {node: '>=8'} 1739 | dev: true 1740 | 1741 | /pathval/1.1.1: 1742 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1743 | dev: true 1744 | 1745 | /picocolors/1.0.0: 1746 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1747 | dev: true 1748 | 1749 | /picomatch/2.3.1: 1750 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1751 | engines: {node: '>=8.6'} 1752 | dev: true 1753 | 1754 | /playwright-core/1.32.1: 1755 | resolution: {integrity: sha512-KZYUQC10mXD2Am1rGlidaalNGYk3LU1vZqqNk0gT4XPty1jOqgup8KDP8l2CUlqoNKhXM5IfGjWgW37xvGllBA==} 1756 | engines: {node: '>=14'} 1757 | hasBin: true 1758 | dev: true 1759 | 1760 | /postcss/8.4.21: 1761 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 1762 | engines: {node: ^10 || ^12 || >=14} 1763 | dependencies: 1764 | nanoid: 3.3.4 1765 | picocolors: 1.0.0 1766 | source-map-js: 1.0.2 1767 | dev: true 1768 | 1769 | /prelude-ls/1.1.2: 1770 | resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} 1771 | engines: {node: '>= 0.8.0'} 1772 | dev: true 1773 | 1774 | /prelude-ls/1.2.1: 1775 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1776 | engines: {node: '>= 0.8.0'} 1777 | dev: true 1778 | 1779 | /prettier-plugin-svelte/2.10.0_5ir2xprf4ygk6mygilwnltaw3a: 1780 | resolution: {integrity: sha512-GXMY6t86thctyCvQq+jqElO+MKdB09BkL3hexyGP3Oi8XLKRFaJP1ud/xlWCZ9ZIa2BxHka32zhHfcuU+XsRQg==} 1781 | peerDependencies: 1782 | prettier: ^1.16.4 || ^2.0.0 1783 | svelte: ^3.2.0 1784 | dependencies: 1785 | prettier: 2.8.7 1786 | svelte: 3.57.0 1787 | dev: true 1788 | 1789 | /prettier/2.8.7: 1790 | resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} 1791 | engines: {node: '>=10.13.0'} 1792 | hasBin: true 1793 | dev: true 1794 | 1795 | /prism-svelte/0.4.7: 1796 | resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==} 1797 | dev: true 1798 | 1799 | /prismjs/1.29.0: 1800 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 1801 | engines: {node: '>=6'} 1802 | dev: true 1803 | 1804 | /psl/1.9.0: 1805 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 1806 | dev: true 1807 | 1808 | /publint/0.1.11: 1809 | resolution: {integrity: sha512-sD0rtIEadks83MkpomJswBO/YHExJLkta1TyqUhb0/aVV+o3ZlVnwsDPjCAow8tpfxmLGutCSLWq32yfhPB98w==} 1810 | engines: {node: '>=16'} 1811 | hasBin: true 1812 | dependencies: 1813 | npm-packlist: 5.1.3 1814 | picocolors: 1.0.0 1815 | sade: 1.8.1 1816 | dev: true 1817 | 1818 | /punycode/2.3.0: 1819 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1820 | engines: {node: '>=6'} 1821 | dev: true 1822 | 1823 | /querystringify/2.2.0: 1824 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 1825 | dev: true 1826 | 1827 | /queue-microtask/1.2.3: 1828 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1829 | dev: true 1830 | 1831 | /readdirp/3.6.0: 1832 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1833 | engines: {node: '>=8.10.0'} 1834 | dependencies: 1835 | picomatch: 2.3.1 1836 | dev: true 1837 | 1838 | /requires-port/1.0.0: 1839 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 1840 | dev: true 1841 | 1842 | /resolve-from/4.0.0: 1843 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1844 | engines: {node: '>=4'} 1845 | dev: true 1846 | 1847 | /resolve/1.22.1: 1848 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1849 | hasBin: true 1850 | dependencies: 1851 | is-core-module: 2.11.0 1852 | path-parse: 1.0.7 1853 | supports-preserve-symlinks-flag: 1.0.0 1854 | dev: true 1855 | 1856 | /reusify/1.0.4: 1857 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1858 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1859 | dev: true 1860 | 1861 | /rimraf/2.7.1: 1862 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1863 | hasBin: true 1864 | dependencies: 1865 | glob: 7.2.3 1866 | dev: true 1867 | 1868 | /rimraf/3.0.2: 1869 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1870 | hasBin: true 1871 | dependencies: 1872 | glob: 7.2.3 1873 | dev: true 1874 | 1875 | /rollup/3.20.2: 1876 | resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} 1877 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1878 | hasBin: true 1879 | optionalDependencies: 1880 | fsevents: 2.3.2 1881 | dev: true 1882 | 1883 | /rrweb-cssom/0.6.0: 1884 | resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} 1885 | dev: true 1886 | 1887 | /run-parallel/1.2.0: 1888 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1889 | dependencies: 1890 | queue-microtask: 1.2.3 1891 | dev: true 1892 | 1893 | /sade/1.8.1: 1894 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1895 | engines: {node: '>=6'} 1896 | dependencies: 1897 | mri: 1.2.0 1898 | dev: true 1899 | 1900 | /safer-buffer/2.1.2: 1901 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1902 | dev: true 1903 | 1904 | /sander/0.5.1: 1905 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1906 | dependencies: 1907 | es6-promise: 3.3.1 1908 | graceful-fs: 4.2.11 1909 | mkdirp: 0.5.6 1910 | rimraf: 2.7.1 1911 | dev: true 1912 | 1913 | /saxes/6.0.0: 1914 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 1915 | engines: {node: '>=v12.22.7'} 1916 | dependencies: 1917 | xmlchars: 2.2.0 1918 | dev: true 1919 | 1920 | /semver/7.3.8: 1921 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 1922 | engines: {node: '>=10'} 1923 | hasBin: true 1924 | dependencies: 1925 | lru-cache: 6.0.0 1926 | dev: true 1927 | 1928 | /set-cookie-parser/2.6.0: 1929 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1930 | dev: true 1931 | 1932 | /shebang-command/2.0.0: 1933 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1934 | engines: {node: '>=8'} 1935 | dependencies: 1936 | shebang-regex: 3.0.0 1937 | dev: true 1938 | 1939 | /shebang-regex/3.0.0: 1940 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1941 | engines: {node: '>=8'} 1942 | dev: true 1943 | 1944 | /sirv/2.0.2: 1945 | resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} 1946 | engines: {node: '>= 10'} 1947 | dependencies: 1948 | '@polka/url': 1.0.0-next.21 1949 | mrmime: 1.0.1 1950 | totalist: 3.0.0 1951 | dev: true 1952 | 1953 | /slash/3.0.0: 1954 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1955 | engines: {node: '>=8'} 1956 | dev: true 1957 | 1958 | /sorcery/0.11.0: 1959 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 1960 | hasBin: true 1961 | dependencies: 1962 | '@jridgewell/sourcemap-codec': 1.4.14 1963 | buffer-crc32: 0.2.13 1964 | minimist: 1.2.8 1965 | sander: 0.5.1 1966 | dev: true 1967 | 1968 | /source-map-js/1.0.2: 1969 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1970 | engines: {node: '>=0.10.0'} 1971 | dev: true 1972 | 1973 | /source-map/0.6.1: 1974 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1975 | engines: {node: '>=0.10.0'} 1976 | dev: true 1977 | 1978 | /streamsearch/1.1.0: 1979 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1980 | engines: {node: '>=10.0.0'} 1981 | dev: true 1982 | 1983 | /strip-ansi/6.0.1: 1984 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1985 | engines: {node: '>=8'} 1986 | dependencies: 1987 | ansi-regex: 5.0.1 1988 | dev: true 1989 | 1990 | /strip-indent/3.0.0: 1991 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1992 | engines: {node: '>=8'} 1993 | dependencies: 1994 | min-indent: 1.0.1 1995 | dev: true 1996 | 1997 | /strip-json-comments/3.1.1: 1998 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1999 | engines: {node: '>=8'} 2000 | dev: true 2001 | 2002 | /strip-literal/1.0.1: 2003 | resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} 2004 | dependencies: 2005 | acorn: 8.8.2 2006 | dev: true 2007 | 2008 | /supports-color/7.2.0: 2009 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2010 | engines: {node: '>=8'} 2011 | dependencies: 2012 | has-flag: 4.0.0 2013 | dev: true 2014 | 2015 | /supports-preserve-symlinks-flag/1.0.0: 2016 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2017 | engines: {node: '>= 0.4'} 2018 | dev: true 2019 | 2020 | /svelte-check/3.1.4_svelte@3.57.0: 2021 | resolution: {integrity: sha512-25Lb46ZS4IK/XpBMe4IBMrtYf23V8alqBX+szXoccb7uM0D2Wqq5rMRzYBONZnFVuU1bQG3R50lyIT5eRewv2g==} 2022 | hasBin: true 2023 | peerDependencies: 2024 | svelte: ^3.55.0 2025 | dependencies: 2026 | '@jridgewell/trace-mapping': 0.3.17 2027 | chokidar: 3.5.3 2028 | fast-glob: 3.2.12 2029 | import-fresh: 3.3.0 2030 | picocolors: 1.0.0 2031 | sade: 1.8.1 2032 | svelte: 3.57.0 2033 | svelte-preprocess: 5.0.3_wkdgp32a7s6524odeddpfzb52q 2034 | typescript: 4.9.5 2035 | transitivePeerDependencies: 2036 | - '@babel/core' 2037 | - coffeescript 2038 | - less 2039 | - postcss 2040 | - postcss-load-config 2041 | - pug 2042 | - sass 2043 | - stylus 2044 | - sugarss 2045 | dev: true 2046 | 2047 | /svelte-hmr/0.15.1_svelte@3.57.0: 2048 | resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} 2049 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 2050 | peerDependencies: 2051 | svelte: '>=3.19.0' 2052 | dependencies: 2053 | svelte: 3.57.0 2054 | dev: true 2055 | 2056 | /svelte-preprocess/5.0.3_wkdgp32a7s6524odeddpfzb52q: 2057 | resolution: {integrity: sha512-GrHF1rusdJVbOZOwgPWtpqmaexkydznKzy5qIC2FabgpFyKN57bjMUUUqPRfbBXK5igiEWn1uO/DXsa2vJ5VHA==} 2058 | engines: {node: '>= 14.10.0'} 2059 | requiresBuild: true 2060 | peerDependencies: 2061 | '@babel/core': ^7.10.2 2062 | coffeescript: ^2.5.1 2063 | less: ^3.11.3 || ^4.0.0 2064 | postcss: ^7 || ^8 2065 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 2066 | pug: ^3.0.0 2067 | sass: ^1.26.8 2068 | stylus: ^0.55.0 2069 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 2070 | svelte: ^3.23.0 2071 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 2072 | peerDependenciesMeta: 2073 | '@babel/core': 2074 | optional: true 2075 | coffeescript: 2076 | optional: true 2077 | less: 2078 | optional: true 2079 | postcss: 2080 | optional: true 2081 | postcss-load-config: 2082 | optional: true 2083 | pug: 2084 | optional: true 2085 | sass: 2086 | optional: true 2087 | stylus: 2088 | optional: true 2089 | sugarss: 2090 | optional: true 2091 | typescript: 2092 | optional: true 2093 | dependencies: 2094 | '@types/pug': 2.0.6 2095 | detect-indent: 6.1.0 2096 | magic-string: 0.27.0 2097 | sorcery: 0.11.0 2098 | strip-indent: 3.0.0 2099 | svelte: 3.57.0 2100 | typescript: 4.9.5 2101 | dev: true 2102 | 2103 | /svelte/3.57.0: 2104 | resolution: {integrity: sha512-WMXEvF+RtAaclw0t3bPDTUe19pplMlfyKDsixbHQYgCWi9+O9VN0kXU1OppzrB9gPAvz4NALuoca2LfW2bOjTQ==} 2105 | engines: {node: '>= 8'} 2106 | dev: true 2107 | 2108 | /svelte2tsx/0.6.10_wkdgp32a7s6524odeddpfzb52q: 2109 | resolution: {integrity: sha512-7CtUexhSHppSpLwVX7yI9OxJp7+esCNTuOF/CaVxWTgWp88QF/2/dCbpND/cTZmBxht5cFFQBwoLXXqFLdYe3Q==} 2110 | peerDependencies: 2111 | svelte: ^3.55 2112 | typescript: ^4.9.4 || ^5.0.0 2113 | dependencies: 2114 | dedent-js: 1.0.1 2115 | pascal-case: 3.1.2 2116 | svelte: 3.57.0 2117 | typescript: 4.9.5 2118 | dev: true 2119 | 2120 | /symbol-tree/3.2.4: 2121 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2122 | dev: true 2123 | 2124 | /text-table/0.2.0: 2125 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2126 | dev: true 2127 | 2128 | /tiny-glob/0.2.9: 2129 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2130 | dependencies: 2131 | globalyzer: 0.1.0 2132 | globrex: 0.1.2 2133 | dev: true 2134 | 2135 | /tinybench/2.4.0: 2136 | resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} 2137 | dev: true 2138 | 2139 | /tinypool/0.3.1: 2140 | resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} 2141 | engines: {node: '>=14.0.0'} 2142 | dev: true 2143 | 2144 | /tinyspy/1.1.1: 2145 | resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} 2146 | engines: {node: '>=14.0.0'} 2147 | dev: true 2148 | 2149 | /to-regex-range/5.0.1: 2150 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2151 | engines: {node: '>=8.0'} 2152 | dependencies: 2153 | is-number: 7.0.0 2154 | dev: true 2155 | 2156 | /totalist/3.0.0: 2157 | resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} 2158 | engines: {node: '>=6'} 2159 | dev: true 2160 | 2161 | /tough-cookie/4.1.2: 2162 | resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} 2163 | engines: {node: '>=6'} 2164 | dependencies: 2165 | psl: 1.9.0 2166 | punycode: 2.3.0 2167 | universalify: 0.2.0 2168 | url-parse: 1.5.10 2169 | dev: true 2170 | 2171 | /tr46/4.1.1: 2172 | resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} 2173 | engines: {node: '>=14'} 2174 | dependencies: 2175 | punycode: 2.3.0 2176 | dev: true 2177 | 2178 | /tslib/1.14.1: 2179 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2180 | dev: true 2181 | 2182 | /tslib/2.5.0: 2183 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 2184 | dev: true 2185 | 2186 | /tsutils/3.21.0_typescript@4.9.5: 2187 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2188 | engines: {node: '>= 6'} 2189 | peerDependencies: 2190 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2191 | dependencies: 2192 | tslib: 1.14.1 2193 | typescript: 4.9.5 2194 | dev: true 2195 | 2196 | /type-check/0.3.2: 2197 | resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} 2198 | engines: {node: '>= 0.8.0'} 2199 | dependencies: 2200 | prelude-ls: 1.1.2 2201 | dev: true 2202 | 2203 | /type-check/0.4.0: 2204 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2205 | engines: {node: '>= 0.8.0'} 2206 | dependencies: 2207 | prelude-ls: 1.2.1 2208 | dev: true 2209 | 2210 | /type-detect/4.0.8: 2211 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2212 | engines: {node: '>=4'} 2213 | dev: true 2214 | 2215 | /type-fest/0.20.2: 2216 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2217 | engines: {node: '>=10'} 2218 | dev: true 2219 | 2220 | /typescript/4.9.5: 2221 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 2222 | engines: {node: '>=4.2.0'} 2223 | hasBin: true 2224 | dev: true 2225 | 2226 | /undici/5.21.0: 2227 | resolution: {integrity: sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==} 2228 | engines: {node: '>=12.18'} 2229 | dependencies: 2230 | busboy: 1.6.0 2231 | dev: true 2232 | 2233 | /unist-util-stringify-position/2.0.3: 2234 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 2235 | dependencies: 2236 | '@types/unist': 2.0.6 2237 | dev: true 2238 | 2239 | /universalify/0.2.0: 2240 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 2241 | engines: {node: '>= 4.0.0'} 2242 | dev: true 2243 | 2244 | /uri-js/4.4.1: 2245 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2246 | dependencies: 2247 | punycode: 2.3.0 2248 | dev: true 2249 | 2250 | /url-parse/1.5.10: 2251 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 2252 | dependencies: 2253 | querystringify: 2.2.0 2254 | requires-port: 1.0.0 2255 | dev: true 2256 | 2257 | /vfile-message/2.0.4: 2258 | resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} 2259 | dependencies: 2260 | '@types/unist': 2.0.6 2261 | unist-util-stringify-position: 2.0.3 2262 | dev: true 2263 | 2264 | /vite/4.2.1: 2265 | resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} 2266 | engines: {node: ^14.18.0 || >=16.0.0} 2267 | hasBin: true 2268 | peerDependencies: 2269 | '@types/node': '>= 14' 2270 | less: '*' 2271 | sass: '*' 2272 | stylus: '*' 2273 | sugarss: '*' 2274 | terser: ^5.4.0 2275 | peerDependenciesMeta: 2276 | '@types/node': 2277 | optional: true 2278 | less: 2279 | optional: true 2280 | sass: 2281 | optional: true 2282 | stylus: 2283 | optional: true 2284 | sugarss: 2285 | optional: true 2286 | terser: 2287 | optional: true 2288 | dependencies: 2289 | esbuild: 0.17.13 2290 | postcss: 8.4.21 2291 | resolve: 1.22.1 2292 | rollup: 3.20.2 2293 | optionalDependencies: 2294 | fsevents: 2.3.2 2295 | dev: true 2296 | 2297 | /vite/4.2.1_@types+node@18.15.9: 2298 | resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} 2299 | engines: {node: ^14.18.0 || >=16.0.0} 2300 | hasBin: true 2301 | peerDependencies: 2302 | '@types/node': '>= 14' 2303 | less: '*' 2304 | sass: '*' 2305 | stylus: '*' 2306 | sugarss: '*' 2307 | terser: ^5.4.0 2308 | peerDependenciesMeta: 2309 | '@types/node': 2310 | optional: true 2311 | less: 2312 | optional: true 2313 | sass: 2314 | optional: true 2315 | stylus: 2316 | optional: true 2317 | sugarss: 2318 | optional: true 2319 | terser: 2320 | optional: true 2321 | dependencies: 2322 | '@types/node': 18.15.9 2323 | esbuild: 0.17.13 2324 | postcss: 8.4.21 2325 | resolve: 1.22.1 2326 | rollup: 3.20.2 2327 | optionalDependencies: 2328 | fsevents: 2.3.2 2329 | dev: true 2330 | 2331 | /vitefu/0.2.4_vite@4.2.1: 2332 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 2333 | peerDependencies: 2334 | vite: ^3.0.0 || ^4.0.0 2335 | peerDependenciesMeta: 2336 | vite: 2337 | optional: true 2338 | dependencies: 2339 | vite: 4.2.1 2340 | dev: true 2341 | 2342 | /vitest/0.25.8_jsdom@21.1.1: 2343 | resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} 2344 | engines: {node: '>=v14.16.0'} 2345 | hasBin: true 2346 | peerDependencies: 2347 | '@edge-runtime/vm': '*' 2348 | '@vitest/browser': '*' 2349 | '@vitest/ui': '*' 2350 | happy-dom: '*' 2351 | jsdom: '*' 2352 | peerDependenciesMeta: 2353 | '@edge-runtime/vm': 2354 | optional: true 2355 | '@vitest/browser': 2356 | optional: true 2357 | '@vitest/ui': 2358 | optional: true 2359 | happy-dom: 2360 | optional: true 2361 | jsdom: 2362 | optional: true 2363 | dependencies: 2364 | '@types/chai': 4.3.4 2365 | '@types/chai-subset': 1.3.3 2366 | '@types/node': 18.15.9 2367 | acorn: 8.8.2 2368 | acorn-walk: 8.2.0 2369 | chai: 4.3.7 2370 | debug: 4.3.4 2371 | jsdom: 21.1.1 2372 | local-pkg: 0.4.3 2373 | source-map: 0.6.1 2374 | strip-literal: 1.0.1 2375 | tinybench: 2.4.0 2376 | tinypool: 0.3.1 2377 | tinyspy: 1.1.1 2378 | vite: 4.2.1_@types+node@18.15.9 2379 | transitivePeerDependencies: 2380 | - less 2381 | - sass 2382 | - stylus 2383 | - sugarss 2384 | - supports-color 2385 | - terser 2386 | dev: true 2387 | 2388 | /w3c-xmlserializer/4.0.0: 2389 | resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} 2390 | engines: {node: '>=14'} 2391 | dependencies: 2392 | xml-name-validator: 4.0.0 2393 | dev: true 2394 | 2395 | /webidl-conversions/7.0.0: 2396 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 2397 | engines: {node: '>=12'} 2398 | dev: true 2399 | 2400 | /whatwg-encoding/2.0.0: 2401 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} 2402 | engines: {node: '>=12'} 2403 | dependencies: 2404 | iconv-lite: 0.6.3 2405 | dev: true 2406 | 2407 | /whatwg-mimetype/3.0.0: 2408 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 2409 | engines: {node: '>=12'} 2410 | dev: true 2411 | 2412 | /whatwg-url/12.0.1: 2413 | resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} 2414 | engines: {node: '>=14'} 2415 | dependencies: 2416 | tr46: 4.1.1 2417 | webidl-conversions: 7.0.0 2418 | dev: true 2419 | 2420 | /which/2.0.2: 2421 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2422 | engines: {node: '>= 8'} 2423 | hasBin: true 2424 | dependencies: 2425 | isexe: 2.0.0 2426 | dev: true 2427 | 2428 | /word-wrap/1.2.3: 2429 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2430 | engines: {node: '>=0.10.0'} 2431 | dev: true 2432 | 2433 | /wrappy/1.0.2: 2434 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2435 | dev: true 2436 | 2437 | /ws/8.13.0: 2438 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 2439 | engines: {node: '>=10.0.0'} 2440 | peerDependencies: 2441 | bufferutil: ^4.0.1 2442 | utf-8-validate: '>=5.0.2' 2443 | peerDependenciesMeta: 2444 | bufferutil: 2445 | optional: true 2446 | utf-8-validate: 2447 | optional: true 2448 | dev: true 2449 | 2450 | /xml-name-validator/4.0.0: 2451 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 2452 | engines: {node: '>=12'} 2453 | dev: true 2454 | 2455 | /xmlchars/2.2.0: 2456 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2457 | dev: true 2458 | 2459 | /yallist/4.0.0: 2460 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2461 | dev: true 2462 | 2463 | /yocto-queue/0.1.0: 2464 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2465 | engines: {node: '>=10'} 2466 | dev: true 2467 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | %sveltekit.head% 10 | 11 | 12 |
%sveltekit.body%
13 | 14 | 15 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/internal/Toggle.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
23 | {offLabel} 24 |
32 | 33 | 85 | -------------------------------------------------------------------------------- /src/lib/ContextMenu.svelte: -------------------------------------------------------------------------------- 1 | 53 | 54 | { 58 | setTimeout(() => open.set(false), 300); 59 | }} 60 | /> 61 | 62 | {#if $open} 63 |
68 |
    69 | {#each $contextMenuSchema.nodes as item} 70 | {#if item.node_type == 'action'} 71 | {@const cb = item.callback} 72 |
  • 73 | 74 |
  • 75 | {:else if item.node_type == 'parent'} 76 | 77 | {/if} 78 | {/each} 79 | {#if renderDefaults} 80 |
    81 | {#each $browserSchema.nodes as item} 82 | {#if item.node_type == 'action'} 83 | {@const cb = item.callback} 84 |
  • 85 | 86 |
  • 87 | {:else if item.node_type == 'parent'} 88 | 89 | {/if} 90 | {/each} 91 | {/if} 92 |
93 |
94 | {/if} 95 | 96 | 147 | -------------------------------------------------------------------------------- /src/lib/ContextMenuParentNode.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 |
  • ($open = true)} 19 | on:mouseleave={() => ($open = false)} 20 | > 21 | {item.node_content} 22 | {#if $open} 23 |
      28 | {#each item.children as child} 29 |
    • 30 | {#if child.node_type == 'action'} 31 | {@const cb = child.callback} 32 | 33 | {/if} 34 |
    • 35 | {/each} 36 |
    37 | {/if} 38 |
  • 39 | 40 | 84 | -------------------------------------------------------------------------------- /src/lib/ContextMenuSchema.ts: -------------------------------------------------------------------------------- 1 | import { writable, readable } from 'svelte/store'; 2 | import type { ContextMenuSchema } from './types'; 3 | import { pageBack, pageReload, pagePrint } from './utils'; 4 | 5 | const defaultSchema: ContextMenuSchema = { 6 | nodes: [ 7 | { 8 | node_type: 'parent', 9 | node_content: 'A Parent Node', 10 | node_is_open: false, 11 | children: [ 12 | { 13 | node_type: 'action', 14 | node_content: 'Send Message to the Console', 15 | callback: () => console.log('Hello from the Context Menu!') 16 | } 17 | ] 18 | }, 19 | { 20 | node_type: 'action', 21 | node_content: 'Fire an Alert!', 22 | callback: () => alert('Clicked the Custom Context Menu!') 23 | } 24 | ] 25 | }; 26 | 27 | /* 28 | default browser actions 29 | - [x] back 30 | - [x] reload 31 | - [x] print 32 | - [ ] save as 33 | - [ ] view source 34 | - [wont do] inspect 35 | */ 36 | const defaultBrowserSchema: ContextMenuSchema = { 37 | nodes: [ 38 | { 39 | node_type: 'parent', 40 | node_content: 'Browser Actions', 41 | node_is_open: false, 42 | children: [ 43 | { 44 | node_type: 'action', 45 | node_content: 'Back', 46 | callback: pageBack 47 | }, 48 | { 49 | node_type: 'action', 50 | node_content: 'Reload', 51 | callback: pageReload 52 | }, 53 | { 54 | node_type: 'action', 55 | node_content: 'Print', 56 | callback: pagePrint 57 | } 58 | /*{ 59 | node_type: "action", 60 | node_content: "Save", 61 | callback: pageSave, 62 | },*/ 63 | ] 64 | } 65 | ] 66 | }; 67 | 68 | export const contextMenuSchema = writable(defaultSchema); 69 | export const browserSchema = readable(defaultBrowserSchema); 70 | -------------------------------------------------------------------------------- /src/lib/index.js: -------------------------------------------------------------------------------- 1 | // components 2 | export { default as ContextMenu } from './ContextMenu.svelte'; 3 | 4 | // stores 5 | export { contextMenuSchema } from './ContextMenuSchema'; 6 | -------------------------------------------------------------------------------- /src/lib/types.ts: -------------------------------------------------------------------------------- 1 | import type { Writable } from 'svelte/store'; 2 | 3 | export type ContextMenuSchema = { 4 | container?: HTMLElement; 5 | nodes: ContextMenuSchemaNode[]; 6 | }; 7 | 8 | export type ContextMenuSchemaNode = ContextMenuSchemaParentNode | ContextMenuSchemaActionNode; 9 | 10 | export type ContextMenuSchemaParentNode = { 11 | node_type: 'parent'; 12 | node_content: string; 13 | node_is_open: boolean; 14 | children: ContextMenuSchemaActionNode[]; 15 | }; 16 | 17 | export type ContextMenuSchemaActionNode = { 18 | node_type: 'action'; 19 | node_content: string; 20 | callback: (openState?: Writable) => void; 21 | }; 22 | 23 | // internal 24 | export type CalculateCoordsFromChildArg = { 25 | eventX: number; 26 | eventY: number; 27 | childX: number; 28 | childY: number; 29 | container: HTMLElement; 30 | }; 31 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import type { Writable } from 'svelte/store'; 2 | import type { CalculateCoordsFromChildArg } from './types'; 3 | 4 | /* 5 | * @name callbackWrapper 6 | * @description calls the given callback, passing the openState store as an argument */ 7 | export function callbackWrapper( 8 | cb: (openState: Writable) => void, 9 | openState: Writable 10 | ) { 11 | cb(openState); 12 | } 13 | 14 | /** 15 | * @name pageBack 16 | * @description A generic wrapper around history.back() with error handling */ 17 | export function pageBack() { 18 | if (!history) throw new Error('svelte-right-click(pageBack): History Object not found.'); 19 | history.back(); 20 | } 21 | 22 | /** 23 | * @name pageReload 24 | * @description A generic wrapper around location.reload() with error handling */ 25 | export function pageReload() { 26 | if (!location) throw new Error('svelte-right-click(pageReload): Location Object not found.'); 27 | location.reload(); 28 | } 29 | 30 | /** 31 | * @name pagePrint 32 | * @description A generic wrapper around window.print() with error handling */ 33 | export function pagePrint(state: Writable) { 34 | window.addEventListener('beforeprint', () => state.set(false)); 35 | if (!window || !window.print) 36 | throw new Error('svelte-right-click(pagePrint): window.print Method not found.'); 37 | window.print(); 38 | } 39 | 40 | /** 41 | * @name pageSave 42 | * @description A progressively enhanced pageSave function */ 43 | /*export async function pageSave() { 44 | //await window.showSaveFilePicker() 45 | }*/ 46 | 47 | /** 48 | * @name calculateCoordsFromChild 49 | * @description re-calculate offsetX and offsetY based on the given container, not the target 50 | * @param eventX {number} - offsetX value from a mouse event 51 | * @param eventY {number} - offsetY value from a mouse event 52 | * @param childX {number} - child elements X position value 53 | * @param childY {number} - child elements Y position value 54 | * @param container {HTMLElement} - Container element 55 | */ 56 | export function calculateCoordsFromChild({ 57 | eventX, 58 | eventY, 59 | childX, 60 | childY, 61 | container 62 | }: CalculateCoordsFromChildArg) { 63 | const { left, top } = container.getBoundingClientRect(); 64 | const diffX = childX - left; 65 | const diffY = childY - top; 66 | return { 67 | x: eventX + diffX, 68 | y: eventY + diffY 69 | }; 70 | } 71 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 |
    2 |

    3 | svelte-right-click 4 |

    5 | 13 |
    14 |
    15 | 16 |
    17 | 22 | 23 | 68 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
    13 | 14 | 15 | 16 |
    17 | Right Click here! 18 | 19 |
    20 |
    21 | 22 | 47 | -------------------------------------------------------------------------------- /src/routes/Hero.svelte: -------------------------------------------------------------------------------- 1 |
    2 | a custom context menu for your Svelte application 3 | Read the docs 4 |
    5 | 6 | 22 | -------------------------------------------------------------------------------- /src/routes/Install.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |
    21 | 22 | {selection.cmd} 23 | 24 |
    25 | 34 |
    35 | 36 | 53 |
    54 | 55 | 94 | -------------------------------------------------------------------------------- /src/routes/docs/+layout.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
    12 | 27 |
    28 | 29 |
    30 |
    31 | 32 | 59 | -------------------------------------------------------------------------------- /src/routes/docs/basic-usage/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/basic-usage/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | ## Basic Usage 8 | 9 | {#if $lang === "TS"} 10 | 11 | ```svelte 12 | 13 | 39 | ``` 40 | 41 | {:else} 42 | 43 | ```svelte 44 | 45 | 70 | ``` 71 | 72 | {/if} 73 | 74 |
    75 | -------------------------------------------------------------------------------- /src/routes/docs/browser-builtins/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/browser-builtins/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | ## Browser Built-ins 2 | 3 | svelte-right-click provides access to some of the standard functionality you find in the browsers default context. Simply pass a prop to have them appended to the context menu after your schema is rendered. 4 | 5 | ```svelte 6 | 7 | ``` 8 | -------------------------------------------------------------------------------- /src/routes/docs/getting-started/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/getting-started/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | ## Getting Started 8 | 9 | To get started with svelte-right-click, first install the package in your project. 10 | 11 | ```shell 12 | npm install --save-dev svelte-right-click 13 | # pnpm add svelte-right-click 14 | # yarn add svelte-right-click 15 | ``` 16 | 17 | Initialize the component, create a basic schema, and pass the schema to the `contextMenuSchema` store. 18 | 19 | {#if $lang === "TS"} 20 | 21 | ```svelte 22 | 38 | 39 | 40 | ``` 41 | 42 | {:else} 43 | 44 | ```svelte 45 | 60 | 61 | 62 | ``` 63 | 64 | {/if} 65 | 66 |
    67 | -------------------------------------------------------------------------------- /src/routes/docs/install/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/install/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 |
    2 | 3 | ## Installation 4 | 5 | Install with your favorite package manager 6 | 7 | ```sh 8 | npm install --save-dev svelte-right-click 9 | # pnpm add svelte-right-click 10 | # yarn add svelte-right-click 11 | ``` 12 | 13 |
    14 | -------------------------------------------------------------------------------- /src/routes/docs/lang.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store'; 2 | import type { Writable } from 'svelte/store'; 3 | 4 | export const lang: Writable<'JS' | 'TS'> = writable('JS'); 5 | -------------------------------------------------------------------------------- /src/routes/docs/philosophy/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/philosophy/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | ## Philosophy 8 | 9 | Although there are existing libaries in the Svelte ecosystem for custom context menus, their mental model often doesn't make sense to me. That's why I'm building svelte-right-click. svelte-right-click is designed to exist at the very top level of your component tree, with it's state being managed by a Svelte store. This design pattern limits the amount of code needed to achieve this functionality. 10 | 11 | Due to this design philosophy, it's recommended to place the `` component at the root of your application (whether that is a your root +layout.svelte in SvelteKit, or in the App.svelte root of an SPA). From there, simply update or set a new schema into the provided store, and the context menu will update accordingly. 12 | 13 | If this philosophy doesn't jive with how you're building your app, and you want something more declarative, I recommend checking out Vincent La's library [svelte-contextmenu](https://github.com/vincentlaucsb/svelte-contextmenu). 14 | 15 |
    16 | -------------------------------------------------------------------------------- /src/routes/docs/props/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/props/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | ## Props 8 | 9 | svelte-right-click purposefully has limited props, but there are a few for global configuration. 10 | 11 | | Name | Description | Type | Default | 12 | | -------------- | --------------------------------------------------------------------- | ------------------- | ------- | 13 | | open | Toggle the context menus open state from the parent componenet | `Writable` | false | 14 | | renderDefaults | Render the included browser default functions inside the context menu | boolean | true | 15 | 16 |
    17 | -------------------------------------------------------------------------------- /src/routes/docs/schemas/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/schemas/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 | 4 | 5 |
    6 | 7 | ## Schemas 8 | 9 | svelte-right-click is driven by a schema that defines the nodes to render inside a context menu including their text content, callback functions to run on click, and any child nodes. 10 | 11 | ```typescript 12 | type ContextMenuSchema = { 13 | container?: HTMLElement; 14 | nodes: ContextMenuSchemaNode[]; 15 | }; 16 | ``` 17 | 18 | ### Container 19 | 20 | `container` is a an optional field in a schema, that "contains" the context menu within a given element, rather than globally on the page. Simply bind the element you want to enable ContextMenu within, then use the ref in your schema. 21 | 22 | {#if $lang == "TS"} 23 | 24 | ```svelte 25 | 38 | 39 |
    40 | 41 |
    42 | ``` 43 | 44 | {:else} 45 | 46 | ```svelte 47 | 59 | 60 |
    61 | 62 |
    63 | ``` 64 | 65 | {/if} 66 | 67 | ### Nodes 68 | 69 | `nodes` is an array field in a schema that represents the structure of the context menu. This arrays items can be one of two types: `ContextMenuParentNode` (parent node) & `ContextMenuSchemaActionNode` (action node). 70 | 71 | #### Parent Nodes 72 | 73 | Parent nodes define a sub tree of the context menu. 74 | 75 | ```typescript 76 | type ContextMenuSchemaParentNode = { 77 | node_type: 'parent'; 78 | node_content: string; // text to display inside the node 79 | node_is_open: boolean; // open/close state 80 | children: ContextMenuSchemaActionNode[]; 81 | }; 82 | ``` 83 | 84 | > Currently, parent nodes can not contain other parent nodes. This is to ensure the best UX for end users. 85 | 86 | #### Action Nodes 87 | 88 | Action nodes run a callback function provided in the schema. The callback recieves a Svelte store as an argument to allow for updating the context menus open state within the callback function. 89 | 90 | ```typescript 91 | type ContextMenuSchemaActionNode = { 92 | node_type: 'action'; 93 | node_content: string; 94 | callback: (openState?: Writable) => void; 95 | }; 96 | ``` 97 | 98 |
    99 | -------------------------------------------------------------------------------- /src/routes/docs/style/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/docs/style/PageContent.svelte.md: -------------------------------------------------------------------------------- 1 |
    2 | 3 | ## Styling 4 | 5 | Override the context menu's default styles using Svelte Style Props. Available props include... 6 | 7 | | Name | Description | Default | 8 | | ----------------------- | --------------------------------------- | ---------------------- | 9 | | --background-color | Parent elements background color | #FFFFFF | 10 | | --border | Parent elements border | 1px solid lightgrey | 11 | | --border-radius | Parent elements border radius | 5px | 12 | | --box-shadow | Parent elements box shadow | 0px 0px 15px #163a6726 | 13 | | --color | Font color for all elements | #000000 | 14 | | --font-family | Font family for all elements | sans-serif | 15 | | --font-size | Font size for all elements | 1rem | 16 | | --node-background-hover | Node elements background color on hover | lightgray | 17 | | --node-border-radius | Node elements border radius | 3px | 18 | | --node-padding | Node elements padding | 4px | 19 | | --padding | Parent elements padding | 5px | 20 | 21 |
    22 | -------------------------------------------------------------------------------- /static/base.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&display=swap'); 2 | 3 | * { 4 | margin: 0; 5 | padding: 0; 6 | box-sizing: border-box; 7 | } 8 | 9 | html { 10 | max-width: 100vw; 11 | font-family: 'DM Mono', monospace; 12 | } 13 | 14 | body { 15 | max-width: 100vw; 16 | min-height: 100vh; 17 | overflow-x: hidden; 18 | font-size: 16px; 19 | background: var(--black); 20 | padding: 2.5rem; 21 | display: flex; 22 | 23 | --ochre: hsla(34, 79%, 42%, 1); 24 | --earth-yellow: hsla(34, 79%, 68%, 1); 25 | --seashell: hsla(12, 48%, 94%, 1); 26 | --jet: hsla(15, 3%, 26%, 1); 27 | --raisin-black: hsla(240, 9%, 13%, 1); 28 | 29 | --white: var(--seashell); 30 | --black: var(--raisin-black); 31 | --grey: var(--jet); 32 | --gray: var(--grey); 33 | --yellow: var(--ochre); 34 | --light-yellow: var(--earth-yellow); 35 | 36 | --blue: rgba(0, 95, 227, 1); 37 | --light-blue: #7d9dff; 38 | 39 | /* Dynamic Colors */ 40 | --text-primary: var(--white); 41 | --text-secondary: var(--blue); 42 | } 43 | 44 | body > div { 45 | min-height: 100%; 46 | width: 100%; 47 | } 48 | 49 | h1, 50 | h2, 51 | h3, 52 | h4, 53 | h5, 54 | h6, 55 | p, 56 | span { 57 | color: var(--text-primary); 58 | } 59 | 60 | h1, 61 | h2, 62 | h3, 63 | h4, 64 | h5, 65 | h6 { 66 | margin-bottom: 20px; 67 | } 68 | 69 | p:not(blockquote p) { 70 | font-size: 1.1rem; 71 | margin-bottom: 15px; 72 | } 73 | 74 | blockquote { 75 | font-size: 1.2rem; 76 | border-left: 2px solid var(--yellow); 77 | padding-left: 15px; 78 | margin-bottom: 20px; 79 | } 80 | 81 | p code { 82 | background-color: var(--white); 83 | color: var(--black); 84 | padding: 3px; 85 | border-radius: 5px; 86 | white-space: nowrap; 87 | } 88 | 89 | pre, 90 | code { 91 | font-size: 13px; 92 | } 93 | 94 | :not(pre) > code[class*='language-'], 95 | pre[class*='language-'] { 96 | border-radius: 8px; 97 | } 98 | 99 | code span { 100 | color: unset; 101 | } 102 | 103 | .secondary { 104 | color: var(--text-secondary); 105 | } 106 | 107 | section { 108 | margin-bottom: 30px; 109 | } 110 | 111 | section > * { 112 | margin-bottom: 20px; 113 | } 114 | 115 | a:not(.button) { 116 | color: var(--light-yellow); 117 | } 118 | 119 | a:hover { 120 | text-decoration: underline; 121 | } 122 | 123 | a:visited:not(.button) { 124 | color: var(--light-yellow); 125 | } 126 | 127 | .button { 128 | background: var(--light-yellow); 129 | padding: 15px; 130 | border-radius: 8px; 131 | color: var(--black); 132 | text-decoration: none; 133 | } 134 | 135 | .button:hover { 136 | text-decoration: underline; 137 | } 138 | 139 | table { 140 | --table-border: 2px solid var(--light-yellow); 141 | border-collapse: collapse; 142 | margin-bottom: 1rem; 143 | color: var(--light-yellow); 144 | border: var(--table-border); 145 | } 146 | 147 | thead, 148 | tr { 149 | border-bottom: var(--table-border); 150 | } 151 | 152 | td, 153 | th { 154 | padding: 10px; 155 | border-right: var(--table-border); 156 | } 157 | 158 | th { 159 | font-size: 1.2rem; 160 | } 161 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stordahl/svelte-right-click/948098c1965849a09375fa5f4ece4f99c73390c5/static/favicon.png -------------------------------------------------------------------------------- /static/gruvbox.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Gruvbox light theme 3 | * 4 | * Based on Gruvbox: https://github.com/morhetz/gruvbox 5 | * Adapted from PrismJS gruvbox-dark theme: https://github.com/schnerring/prism-themes/blob/master/themes/prism-gruvbox-dark.css 6 | * 7 | * @author Michael Schnerring (https://schnerring.net) 8 | * @version 1.0 9 | */ 10 | 11 | code[class*='language-'], 12 | pre[class*='language-'] { 13 | color: #3c3836; /* fg1 / fg */ 14 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 15 | direction: ltr; 16 | text-align: left; 17 | white-space: pre; 18 | word-spacing: normal; 19 | word-break: normal; 20 | line-height: 1.5; 21 | font-size: 1em; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | } 32 | 33 | pre[class*='language-']::-moz-selection, 34 | pre[class*='language-'] ::-moz-selection, 35 | code[class*='language-']::-moz-selection, 36 | code[class*='language-'] ::-moz-selection { 37 | color: #282828; /* fg0 */ 38 | background: #a89984; /* bg4 */ 39 | } 40 | 41 | pre[class*='language-']::selection, 42 | pre[class*='language-'] ::selection, 43 | code[class*='language-']::selection, 44 | code[class*='language-'] ::selection { 45 | color: #282828; /* fg0 */ 46 | background: #a89984; /* bg4 */ 47 | } 48 | 49 | /* Code blocks */ 50 | pre[class*='language-'] { 51 | padding: 1em; 52 | overflow: auto; 53 | } 54 | 55 | :not(pre) > code[class*='language-'], 56 | pre[class*='language-'] { 57 | background: #f9f5d7; /* bg0_h */ 58 | } 59 | 60 | /* Inline code */ 61 | :not(pre) > code[class*='language-'] { 62 | padding: 0.1em; 63 | border-radius: 0.3em; 64 | } 65 | 66 | .token.comment, 67 | .token.prolog, 68 | .token.cdata { 69 | color: #7c6f64; /* fg4 / gray1 */ 70 | } 71 | 72 | .token.delimiter, 73 | .token.boolean, 74 | .token.keyword, 75 | .token.selector, 76 | .token.important, 77 | .token.atrule { 78 | color: #9d0006; /* red2 */ 79 | } 80 | 81 | .token.operator, 82 | .token.punctuation, 83 | .token.attr-name { 84 | color: #7c6f64; /* fg4 / gray1 */ 85 | } 86 | 87 | .token.tag, 88 | .token.tag .punctuation, 89 | .token.doctype, 90 | .token.builtin { 91 | color: #b57614; /* yellow2 */ 92 | } 93 | 94 | .token.entity, 95 | .token.number, 96 | .token.symbol { 97 | color: #8f3f71; /* purple2 */ 98 | } 99 | 100 | .token.property, 101 | .token.constant, 102 | .token.variable { 103 | color: #9d0006; /* red2 */ 104 | } 105 | 106 | .token.string, 107 | .token.char { 108 | color: #797403; /* green2 */ 109 | } 110 | 111 | .token.attr-value, 112 | .token.attr-value .punctuation { 113 | color: #7c6f64; /* fg4 / gray1 */ 114 | } 115 | 116 | .token.url { 117 | color: #797403; /* green2 */ 118 | text-decoration: underline; 119 | } 120 | 121 | .token.function { 122 | color: #b57614; /* yellow2 */ 123 | } 124 | 125 | .token.regex { 126 | background: #797403; /* green2 */ 127 | } 128 | 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | 133 | .token.italic { 134 | font-style: italic; 135 | } 136 | 137 | .token.inserted { 138 | background: #7c6f64; /* fg4 / gray1 */ 139 | } 140 | 141 | .token.deleted { 142 | background: #9d0006; /* red2 */ 143 | } 144 | -------------------------------------------------------------------------------- /static/images/github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /static/images/npm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { mdsvex } from 'mdsvex'; 2 | import mdsvexConfig from './mdsvex.config.js'; 3 | import adapter from '@sveltejs/adapter-auto'; 4 | import { vitePreprocess } from '@sveltejs/kit/vite'; 5 | 6 | /** @type {import('@sveltejs/kit').Config} */ 7 | const config = { 8 | extensions: ['.svelte', ...mdsvexConfig.extensions], 9 | 10 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 11 | // for more information about preprocessors 12 | preprocess: [vitePreprocess(), mdsvex(mdsvexConfig)], 13 | 14 | kit: { 15 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 16 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 17 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 18 | adapter: adapter(), 19 | alias: { 20 | '$internal/*': 'src/internal/*' 21 | } 22 | } 23 | }; 24 | 25 | export default config; 26 | -------------------------------------------------------------------------------- /tests/e2e/docs.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from '@playwright/test'; 2 | 3 | test('index page has expected h1', async ({ page }) => { 4 | await page.goto('/'); 5 | await expect(page.getByRole('heading', { name: 'svelte-right-click' })).toBeVisible(); 6 | }); 7 | -------------------------------------------------------------------------------- /tests/unit/utils.test.ts: -------------------------------------------------------------------------------- 1 | // @vitest-environment jsdom 2 | import { describe, it, expect } from 'vitest'; 3 | import { calculateCoordsFromChild } from '../../src/lib/utils'; 4 | import type { CalculateCoordsFromChildArg } from '../../src/lib/types'; 5 | 6 | describe('calculateCoodsFromChild', () => { 7 | it('returns the correct coordinate values', () => { 8 | const el = global.document.createElement('div') as HTMLElement; 9 | el.style.width = '200px'; 10 | el.style.height = '200px'; 11 | el.style.left = '200px'; 12 | el.style.top = '200px'; 13 | 14 | const args: CalculateCoordsFromChildArg = { 15 | eventX: 100, 16 | eventY: 100, 17 | childX: 300, 18 | childY: 300, 19 | container: el 20 | }; 21 | 22 | const res = calculateCoordsFromChild(args); 23 | expect(res).toMatchObject({ x: 400, y: 400 }); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /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 | "types": ["vitest/globals"] 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vitest/config'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | test: { 7 | include: ['tests/unit/*.{test,spec}.{js,ts}'] 8 | } 9 | }); 10 | --------------------------------------------------------------------------------