├── .npmrc ├── static └── favicon.png ├── .gitignore ├── vite.config.ts ├── .eslintignore ├── .prettierignore ├── src ├── lib │ ├── types.ts │ ├── index.ts │ ├── paginate.ts │ ├── LightPaginationNav.svelte │ ├── DarkPaginationNav.svelte │ ├── PaginationNav.svelte │ └── generateNavigationOptions.ts ├── app.html ├── app.d.ts └── routes │ └── +page.svelte ├── .prettierrc ├── svelte.config.js ├── .eslintrc.cjs ├── tsconfig.json ├── LICENSE ├── package.json ├── README.md ├── tests └── generateNavigationOptions.test.js └── pnpm-lock.yaml /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TahaSh/svelte-paginate/HEAD/static/favicon.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import type { UserConfig } from 'vite'; 3 | 4 | const config: UserConfig = { 5 | plugins: [sveltekit()] 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /src/lib/types.ts: -------------------------------------------------------------------------------- 1 | export enum SymbolType { 2 | PREVIOUS_PAGE = 'PREVIOUS_PAGE', 3 | NEXT_PAGE = 'NEXT_PAGE', 4 | ELLIPSIS = 'ELLIPSIS' 5 | } 6 | 7 | export interface NavigationOption { 8 | type: string 9 | value: number 10 | symbol?: SymbolType 11 | } 12 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export { paginate } from './paginate' 2 | export { default as PaginationNav } from './PaginationNav.svelte' 3 | export { default as LightPaginationNav } from './LightPaginationNav.svelte' 4 | export { default as DarkPaginationNav } from './DarkPaginationNav.svelte' 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "semi": false, 6 | "printWidth": 100, 7 | "plugins": ["prettier-plugin-svelte"], 8 | "pluginSearchDirs": ["."], 9 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 10 | } 11 | -------------------------------------------------------------------------------- /src/lib/paginate.ts: -------------------------------------------------------------------------------- 1 | interface PaginateInput { 2 | items: T[] 3 | pageSize: number 4 | currentPage: number 5 | } 6 | 7 | export function paginate({ items, pageSize, currentPage }: PaginateInput) { 8 | return items.slice((currentPage - 1) * pageSize, (currentPage - 1) * pageSize + pageSize) 9 | } 10 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // See https://kit.svelte.dev/docs/types#app 4 | // for information about these interfaces 5 | // and what to do when importing types 6 | declare namespace App { 7 | // interface Locals {} 8 | // interface PageData {} 9 | // interface Error {} 10 | // interface Platform {} 11 | } 12 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import preprocess from 'svelte-preprocess'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://github.com/sveltejs/svelte-preprocess 7 | // for more information about preprocessors 8 | preprocess: preprocess(), 9 | 10 | kit: { 11 | adapter: adapter() 12 | } 13 | }; 14 | 15 | export default config; 16 | -------------------------------------------------------------------------------- /.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'], 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 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /src/lib/LightPaginationNav.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 10 |
11 | 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Taha Shashtari 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 | -------------------------------------------------------------------------------- /src/lib/DarkPaginationNav.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 10 |
11 | 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-paginate", 3 | "version": "0.1.0", 4 | "description": "A Svelte plugin for paginating your data in no time", 5 | "author": "Taha Shashtari (taha@tahazsh.com)", 6 | "main": "package/index.js", 7 | "scripts": { 8 | "dev": "vite dev", 9 | "build": "svelte-kit sync && svelte-package", 10 | "prepublishOnly": "echo 'Did you mean to publish `./package/`, instead of `./`?' && exit 1", 11 | "test": "vitest", 12 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 13 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 14 | "lint": "prettier --plugin-search-dir . --check . && eslint .", 15 | "format": "prettier --plugin-search-dir . --write ." 16 | }, 17 | "devDependencies": { 18 | "@sveltejs/adapter-auto": "next", 19 | "@sveltejs/kit": "next", 20 | "@sveltejs/package": "next", 21 | "@typescript-eslint/eslint-plugin": "^5.27.0", 22 | "@typescript-eslint/parser": "^5.27.0", 23 | "eslint": "^8.16.0", 24 | "eslint-config-prettier": "^8.3.0", 25 | "eslint-plugin-svelte3": "^4.0.0", 26 | "prettier": "^2.6.2", 27 | "prettier-plugin-svelte": "^2.7.0", 28 | "svelte": "^3.44.0", 29 | "svelte-check": "^2.7.1", 30 | "svelte-preprocess": "^4.10.6", 31 | "tslib": "^2.3.1", 32 | "typescript": "^4.7.4", 33 | "vite": "^3.1.0", 34 | "vitest": "^0.24.4" 35 | }, 36 | "type": "module", 37 | "repository": { 38 | "type": "git", 39 | "url": "https://github.com/TahaSh/svelte-paginate" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 |
20 |
    21 | {#each paginatedItems as item (item.title)} 22 |
  • 27 | {item.title} 28 |
  • 29 | {/each} 30 |
31 | 32 | currentPage = e.detail.page} 39 | /> 40 | currentPage = e.detail.page} 47 | /> 48 |
49 | 50 | -------------------------------------------------------------------------------- /src/lib/PaginationNav.svelte: -------------------------------------------------------------------------------- 1 | 29 | 30 |
31 | {#each options as option} 32 | 46 | {#if option.type === 'number'} 47 | 48 | {option.value} 49 | 50 | {:else if option.type === 'symbol' && option.symbol === SymbolType.ELLIPSIS} 51 | 52 | ... 53 | 54 | {:else if option.type === 'symbol' && option.symbol === SymbolType.PREVIOUS_PAGE} 55 | 56 | 60 | 64 | 65 | 66 | {:else if option.type === 'symbol' && option.symbol === SymbolType.NEXT_PAGE} 67 | 68 | 72 | 76 | 77 | 78 | {/if} 79 | 80 | {/each} 81 |
-------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-paginate 2 | 3 | A Svelte plugin for paginating your data in no time. 4 | 5 | ## Installation 6 | 7 | ```bash 8 | npm install -D svelte-paginate 9 | ``` 10 | 11 | ## Usage 12 | 13 | ```html 14 | 22 | 23 |
    24 | {#each paginatedItems as item} 25 |
  • 26 | {item} 27 |
  • 28 | {/each} 29 |
30 | 31 | 39 | ``` 40 | 41 | In this example, we're paginating the data in the `items` list. Instead of displaying the list directly, we first pass it into the `paginate` function to return a subset of the list that we should display based on the current page and the page size. 42 | 43 | Since we've defined `paginatedItems` as a computed data, it should update the displayed paginated items whenever the `currentPage` changes. 44 | 45 | To navigate between pages you can either create your own navigation component or use one of the navigation components that come with `svelte-paginate` (such as ``, ``, or ``). Either way, you just need a way to update `currentPage`. 46 | 47 | ## `` 48 | 49 | For this component to work, it needs to know: 50 | - `totalItems`: the total number of the original list (unpaginated list). 51 | - `pageSize`: the number of items displayed per page. 52 | - `currentPage`: the currently selected page. 53 | 54 | This will display all page links in the navigation. If you want to limit the maximum number of the displayed links, use the `limit` prop. 55 | 56 | ## `limit` 57 | 58 | This prop takes a number that specifies how many items to display on each side. If you give it `1`, for example, your nav will look like this: 59 | 60 | ``` 61 | 1 … 4 5 6 … 13 62 | ``` 63 | 64 | In this case, `5` is the active page, and it has one page on each side, `4` and `6`. 65 | 66 | Let's see another example. This is how it will look if `limit = 2`: 67 | 68 | ``` 69 | 1 … 4 5 6 7 8 … 13 70 | ``` 71 | 72 | In this example, `6` is the active page, and it has two pages on each side. 73 | 74 | You can disable `limit` by setting it to `null`, which is the default value. 75 | 76 | ## `showStepOptions` 77 | 78 | If you set this prop to `true`, it will display the previous and next arrows on the navigation. 79 | 80 | ## Customizing the styling of the navigation component 81 | 82 | `svelte-paginate` comes with two themed navigation components: `` and ``. Both components use `` as the base navigation component. They are just modifying its CSS. 83 | 84 | If you want to create your own version, wrap the `` with a div and then use the following CSS selector: 85 | 86 | - `.your-nav :global(.pagination-nav)`: The navigation container element. 87 | - `.your-nav :global(.option)`: Each option in the navigation (including ellipsis, next and prev buttons). 88 | - `.your-nav :global(.option.active)`: The currently active page number. 89 | - `.your-nav :global(.option.ellipsis)`: The ellipsis option. 90 | - `.your-nav :global(.option.number)`: Only page numbers. 91 | - `.your-nav :global(.option.prev)`: The prev option. 92 | - `.your-nav :global(.option.next)`: The next option. 93 | - `.your-nav :global(.option.disabled)`: Targets the prev and next options when they are disabled (when you're on the first or last page). 94 | 95 | ## Customizing the options of the navigation component 96 | 97 | You can also change the content of each option type through slots. For example, if you want to display page numbers using this format: `Page: {pageNumber}`, you can do this: 98 | 99 | ```html 100 | 104 | 105 | Page: {pageNumber} 106 | 107 | 108 | ``` 109 | 110 | So using the `number` slot with its `value`, you can update how page numbers are displayed. Here's a list for the other option types: 111 | 112 | - Ellipsis: `` 113 | - Previous: `` 114 | - Next: `` 115 | 116 | 117 | ## License 118 | 119 | [MIT](http://opensource.org/licenses/MIT) -------------------------------------------------------------------------------- /src/lib/generateNavigationOptions.ts: -------------------------------------------------------------------------------- 1 | import { SymbolType } from './types' 2 | import type { NavigationOption } from './types' 3 | 4 | interface GenerateOptionsInput { 5 | totalItems: number 6 | pageSize: number 7 | currentPage: number 8 | showStepOptions?: boolean 9 | limit?: number 10 | } 11 | 12 | interface GenerateUnlimitedOptionsInput { 13 | totalPages: number 14 | } 15 | 16 | interface GenerateLimitedOptionsInput { 17 | totalPages: number 18 | currentPage: number 19 | limit: number 20 | } 21 | 22 | interface AddStepOptionsInput { 23 | options: ReturnType | ReturnType 24 | currentPage: number 25 | totalPages: number 26 | } 27 | 28 | export function generateNavigationOptions({ 29 | totalItems, 30 | pageSize, 31 | currentPage, 32 | limit, 33 | showStepOptions = false 34 | }: GenerateOptionsInput): NavigationOption[] { 35 | const totalPages = Math.ceil(totalItems / pageSize) 36 | const limited = limit && totalPages > getLimitThreshold(limit) 37 | const options = limited 38 | ? generateLimitedOptions({ totalPages, limit, currentPage }) 39 | : generateUnlimitedOptions({ totalPages }) 40 | return showStepOptions ? addStepOptions({ options, currentPage, totalPages }) : options 41 | } 42 | 43 | function generateUnlimitedOptions({ totalPages }: GenerateUnlimitedOptionsInput) { 44 | return new Array(totalPages).fill(null).map((_, index) => ({ 45 | type: 'number', 46 | value: index + 1 47 | })) 48 | } 49 | 50 | function generateLimitedOptions({ totalPages, limit, currentPage }: GenerateLimitedOptionsInput) { 51 | const boundarySize = limit * 2 + 2 52 | const firstBoundary = 1 + boundarySize 53 | const lastBoundary = totalPages - boundarySize 54 | const totalShownPages = firstBoundary + 2 55 | 56 | if (currentPage <= firstBoundary - limit) { 57 | return Array(totalShownPages) 58 | .fill(null) 59 | .map((_, index) => { 60 | if (index === totalShownPages - 1) { 61 | return { 62 | type: 'number', 63 | value: totalPages 64 | } 65 | } else if (index === totalShownPages - 2) { 66 | return { 67 | type: 'symbol', 68 | symbol: SymbolType.ELLIPSIS, 69 | value: firstBoundary + 1 70 | } 71 | } 72 | return { 73 | type: 'number', 74 | value: index + 1 75 | } 76 | }) 77 | } else if (currentPage >= lastBoundary + limit) { 78 | return Array(totalShownPages) 79 | .fill(null) 80 | .map((_, index) => { 81 | if (index === 0) { 82 | return { 83 | type: 'number', 84 | value: 1 85 | } 86 | } else if (index === 1) { 87 | return { 88 | type: 'symbol', 89 | symbol: SymbolType.ELLIPSIS, 90 | value: lastBoundary - 1 91 | } 92 | } 93 | return { 94 | type: 'number', 95 | value: lastBoundary + index - 2 96 | } 97 | }) 98 | } else if (currentPage >= firstBoundary - limit && currentPage <= lastBoundary + limit) { 99 | return Array(totalShownPages) 100 | .fill(null) 101 | .map((_, index) => { 102 | if (index === 0) { 103 | return { 104 | type: 'number', 105 | value: 1 106 | } 107 | } else if (index === 1) { 108 | return { 109 | type: 'symbol', 110 | symbol: SymbolType.ELLIPSIS, 111 | value: currentPage - limit + (index - 2) 112 | } 113 | } else if (index === totalShownPages - 1) { 114 | return { 115 | type: 'number', 116 | value: totalPages 117 | } 118 | } else if (index === totalShownPages - 2) { 119 | return { 120 | type: 'symbol', 121 | symbol: SymbolType.ELLIPSIS, 122 | value: currentPage + limit + 1 123 | } 124 | } 125 | return { 126 | type: 'number', 127 | value: currentPage - limit + (index - 2) 128 | } 129 | }) 130 | } 131 | return [] 132 | } 133 | 134 | function addStepOptions({ options, currentPage, totalPages }: AddStepOptionsInput) { 135 | return [ 136 | { 137 | type: 'symbol', 138 | symbol: SymbolType.PREVIOUS_PAGE, 139 | value: currentPage <= 1 ? 1 : currentPage - 1 140 | }, 141 | ...(options || []), 142 | { 143 | type: 'symbol', 144 | symbol: SymbolType.NEXT_PAGE, 145 | value: currentPage >= totalPages ? totalPages : currentPage + 1 146 | } 147 | ] 148 | } 149 | 150 | function getLimitThreshold(limit: number) { 151 | const maximumUnlimitedPages = 3 // This means we cannot limit 3 pages or less 152 | const numberOfBoundaryPages = 2 // The first and last pages are always shown 153 | return limit * 2 + maximumUnlimitedPages + numberOfBoundaryPages 154 | } 155 | -------------------------------------------------------------------------------- /tests/generateNavigationOptions.test.js: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest' 2 | import { generateNavigationOptions as generate } from '../src/lib/generateNavigationOptions' 3 | import { SymbolType } from '../src/lib/types' 4 | 5 | test('generates all number options without symbols', () => { 6 | expect(generate({ totalItems: 8, pageSize: 3, currentPage: 1 })).toEqual([ 7 | { type: 'number', value: 1 }, 8 | { type: 'number', value: 2 }, 9 | { type: 'number', value: 3 } 10 | ]) 11 | }) 12 | 13 | test('generates limited number options (limit = 1, pageSize = 10)', () => { 14 | const firstPart = [ 15 | { type: 'number', value: 1 }, 16 | { type: 'number', value: 2 }, 17 | { type: 'number', value: 3 }, 18 | { type: 'number', value: 4 }, 19 | { type: 'number', value: 5 }, 20 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 6 }, 21 | { type: 'number', value: 10 } 22 | ] 23 | const lastPart = [ 24 | { type: 'number', value: 1 }, 25 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 5 }, 26 | { type: 'number', value: 6 }, 27 | { type: 'number', value: 7 }, 28 | { type: 'number', value: 8 }, 29 | { type: 'number', value: 9 }, 30 | { type: 'number', value: 10 } 31 | ] 32 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 1, limit: 1 })).toEqual(firstPart) 33 | 34 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 2, limit: 1 })).toEqual(firstPart) 35 | 36 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 3, limit: 1 })).toEqual(firstPart) 37 | 38 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 4, limit: 1 })).toEqual(firstPart) 39 | 40 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 7, limit: 1 })).toEqual(lastPart) 41 | 42 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 8, limit: 1 })).toEqual(lastPart) 43 | 44 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 9, limit: 1 })).toEqual(lastPart) 45 | 46 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 10, limit: 1 })).toEqual(lastPart) 47 | 48 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 5, limit: 1 })).toEqual([ 49 | { type: 'number', value: 1 }, 50 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 3 }, 51 | { type: 'number', value: 4 }, 52 | { type: 'number', value: 5 }, 53 | { type: 'number', value: 6 }, 54 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 7 }, 55 | { type: 'number', value: 10 } 56 | ]) 57 | 58 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 6, limit: 1 })).toEqual([ 59 | { type: 'number', value: 1 }, 60 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 4 }, 61 | { type: 'number', value: 5 }, 62 | { type: 'number', value: 6 }, 63 | { type: 'number', value: 7 }, 64 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 8 }, 65 | { type: 'number', value: 10 } 66 | ]) 67 | }) 68 | 69 | test('generates limited number options (limit = 2, pageSize = 10)', () => { 70 | const firstPart = [ 71 | { type: 'number', value: 1 }, 72 | { type: 'number', value: 2 }, 73 | { type: 'number', value: 3 }, 74 | { type: 'number', value: 4 }, 75 | { type: 'number', value: 5 }, 76 | { type: 'number', value: 6 }, 77 | { type: 'number', value: 7 }, 78 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 8 }, 79 | { type: 'number', value: 10 } 80 | ] 81 | const lastPart = [ 82 | { type: 'number', value: 1 }, 83 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 3 }, 84 | { type: 'number', value: 4 }, 85 | { type: 'number', value: 5 }, 86 | { type: 'number', value: 6 }, 87 | { type: 'number', value: 7 }, 88 | { type: 'number', value: 8 }, 89 | { type: 'number', value: 9 }, 90 | { type: 'number', value: 10 } 91 | ] 92 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 1, limit: 2 })).toEqual(firstPart) 93 | 94 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 5, limit: 2 })).toEqual(firstPart) 95 | 96 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 6, limit: 2 })).toEqual(lastPart) 97 | 98 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 8, limit: 2 })).toEqual(lastPart) 99 | 100 | expect(generate({ totalItems: 28, pageSize: 3, currentPage: 10, limit: 2 })).toEqual(lastPart) 101 | }) 102 | 103 | test('generates limited number options (limit = 2, pageSize = 12)', () => { 104 | const firstPart = [ 105 | { type: 'number', value: 1 }, 106 | { type: 'number', value: 2 }, 107 | { type: 'number', value: 3 }, 108 | { type: 'number', value: 4 }, 109 | { type: 'number', value: 5 }, 110 | { type: 'number', value: 6 }, 111 | { type: 'number', value: 7 }, 112 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 8 }, 113 | { type: 'number', value: 12 } 114 | ] 115 | const lastPart = [ 116 | { type: 'number', value: 1 }, 117 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 5 }, 118 | { type: 'number', value: 6 }, 119 | { type: 'number', value: 7 }, 120 | { type: 'number', value: 8 }, 121 | { type: 'number', value: 9 }, 122 | { type: 'number', value: 10 }, 123 | { type: 'number', value: 11 }, 124 | { type: 'number', value: 12 } 125 | ] 126 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 1, limit: 2 })).toEqual(firstPart) 127 | 128 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 2, limit: 2 })).toEqual(firstPart) 129 | 130 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 5, limit: 2 })).toEqual(firstPart) 131 | 132 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 8, limit: 2 })).toEqual(lastPart) 133 | 134 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 10, limit: 2 })).toEqual(lastPart) 135 | 136 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 12, limit: 2 })).toEqual(lastPart) 137 | 138 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 6, limit: 2 })).toEqual([ 139 | { type: 'number', value: 1 }, 140 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 3 }, 141 | { type: 'number', value: 4 }, 142 | { type: 'number', value: 5 }, 143 | { type: 'number', value: 6 }, 144 | { type: 'number', value: 7 }, 145 | { type: 'number', value: 8 }, 146 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 9 }, 147 | { type: 'number', value: 12 } 148 | ]) 149 | 150 | expect(generate({ totalItems: 35, pageSize: 3, currentPage: 7, limit: 2 })).toEqual([ 151 | { type: 'number', value: 1 }, 152 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 4 }, 153 | { type: 'number', value: 5 }, 154 | { type: 'number', value: 6 }, 155 | { type: 'number', value: 7 }, 156 | { type: 'number', value: 8 }, 157 | { type: 'number', value: 9 }, 158 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 10 }, 159 | { type: 'number', value: 12 } 160 | ]) 161 | }) 162 | 163 | test('generates unlimited page numbers with step options', () => { 164 | expect(generate({ totalItems: 8, pageSize: 3, currentPage: 1, showStepOptions: true })).toEqual([ 165 | { type: 'symbol', symbol: SymbolType.PREVIOUS_PAGE, value: 1 }, 166 | { type: 'number', value: 1 }, 167 | { type: 'number', value: 2 }, 168 | { type: 'number', value: 3 }, 169 | { type: 'symbol', symbol: SymbolType.NEXT_PAGE, value: 2 } 170 | ]) 171 | 172 | expect(generate({ totalItems: 8, pageSize: 3, currentPage: 2, showStepOptions: true })).toEqual([ 173 | { type: 'symbol', symbol: SymbolType.PREVIOUS_PAGE, value: 1 }, 174 | { type: 'number', value: 1 }, 175 | { type: 'number', value: 2 }, 176 | { type: 'number', value: 3 }, 177 | { type: 'symbol', symbol: SymbolType.NEXT_PAGE, value: 3 } 178 | ]) 179 | 180 | expect(generate({ totalItems: 8, pageSize: 3, currentPage: 3, showStepOptions: true })).toEqual([ 181 | { type: 'symbol', symbol: SymbolType.PREVIOUS_PAGE, value: 2 }, 182 | { type: 'number', value: 1 }, 183 | { type: 'number', value: 2 }, 184 | { type: 'number', value: 3 }, 185 | { type: 'symbol', symbol: SymbolType.NEXT_PAGE, value: 3 } 186 | ]) 187 | }) 188 | 189 | test('generates limited page numbers with step options', () => { 190 | expect( 191 | generate({ totalItems: 28, pageSize: 3, currentPage: 1, limit: 1, showStepOptions: true }) 192 | ).toEqual([ 193 | { type: 'symbol', symbol: SymbolType.PREVIOUS_PAGE, value: 1 }, 194 | { type: 'number', value: 1 }, 195 | { type: 'number', value: 2 }, 196 | { type: 'number', value: 3 }, 197 | { type: 'number', value: 4 }, 198 | { type: 'number', value: 5 }, 199 | { type: 'symbol', symbol: SymbolType.ELLIPSIS, value: 6 }, 200 | { type: 'number', value: 10 }, 201 | { type: 'symbol', symbol: SymbolType.NEXT_PAGE, value: 2 } 202 | ]) 203 | }) 204 | 205 | test('ignores limit if it does not apply on the number of pages', () => { 206 | expect(generate({ totalItems: 19, pageSize: 3, currentPage: 1, limit: 1 })).toEqual([ 207 | { type: 'number', value: 1 }, 208 | { type: 'number', value: 2 }, 209 | { type: 'number', value: 3 }, 210 | { type: 'number', value: 4 }, 211 | { type: 'number', value: 5 }, 212 | { type: 'number', value: 6 }, 213 | { type: 'number', value: 7 } 214 | ]) 215 | 216 | expect(generate({ totalItems: 26, pageSize: 3, currentPage: 1, limit: 2 })).toEqual([ 217 | { type: 'number', value: 1 }, 218 | { type: 'number', value: 2 }, 219 | { type: 'number', value: 3 }, 220 | { type: 'number', value: 4 }, 221 | { type: 'number', value: 5 }, 222 | { type: 'number', value: 6 }, 223 | { type: 'number', value: 7 }, 224 | { type: 'number', value: 8 }, 225 | { type: 'number', value: 9 } 226 | ]) 227 | }) 228 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@sveltejs/adapter-auto': next 5 | '@sveltejs/kit': next 6 | '@sveltejs/package': next 7 | '@typescript-eslint/eslint-plugin': ^5.27.0 8 | '@typescript-eslint/parser': ^5.27.0 9 | eslint: ^8.16.0 10 | eslint-config-prettier: ^8.3.0 11 | eslint-plugin-svelte3: ^4.0.0 12 | prettier: ^2.6.2 13 | prettier-plugin-svelte: ^2.7.0 14 | svelte: ^3.44.0 15 | svelte-check: ^2.7.1 16 | svelte-preprocess: ^4.10.6 17 | tslib: ^2.3.1 18 | typescript: ^4.7.4 19 | vite: ^3.1.0 20 | vitest: ^0.24.4 21 | 22 | devDependencies: 23 | '@sveltejs/adapter-auto': 1.0.0-next.86 24 | '@sveltejs/kit': 1.0.0-next.529_svelte@3.52.0+vite@3.2.2 25 | '@sveltejs/package': 1.0.0-next.1_besnmoibwkhwtentvwuriss7pa 26 | '@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou 27 | '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m 28 | eslint: 8.26.0 29 | eslint-config-prettier: 8.5.0_eslint@8.26.0 30 | eslint-plugin-svelte3: 4.0.0_l6ppk7eerpslmlsqymzic46t24 31 | prettier: 2.7.1 32 | prettier-plugin-svelte: 2.8.0_lrllcp5xtrkmmdzifit4hd52ze 33 | svelte: 3.52.0 34 | svelte-check: 2.9.2_svelte@3.52.0 35 | svelte-preprocess: 4.10.7_besnmoibwkhwtentvwuriss7pa 36 | tslib: 2.4.0 37 | typescript: 4.8.4 38 | vite: 3.2.2 39 | vitest: 0.24.4 40 | 41 | packages: 42 | 43 | /@cloudflare/workers-types/3.18.0: 44 | resolution: {integrity: sha512-ehKOJVLMeR+tZkYhWEaLYQxl0TaIZu/kE86HF3/RidR8Xv5LuQxpbh+XXAoKVqsaphWLhIgBhgnlN5HGdheXSQ==} 45 | dev: true 46 | 47 | /@esbuild/android-arm/0.15.12: 48 | resolution: {integrity: sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==} 49 | engines: {node: '>=12'} 50 | cpu: [arm] 51 | os: [android] 52 | requiresBuild: true 53 | dev: true 54 | optional: true 55 | 56 | /@esbuild/linux-loong64/0.15.12: 57 | resolution: {integrity: sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==} 58 | engines: {node: '>=12'} 59 | cpu: [loong64] 60 | os: [linux] 61 | requiresBuild: true 62 | dev: true 63 | optional: true 64 | 65 | /@eslint/eslintrc/1.3.3: 66 | resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} 67 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 68 | dependencies: 69 | ajv: 6.12.6 70 | debug: 4.3.4 71 | espree: 9.4.0 72 | globals: 13.17.0 73 | ignore: 5.2.0 74 | import-fresh: 3.3.0 75 | js-yaml: 4.1.0 76 | minimatch: 3.1.2 77 | strip-json-comments: 3.1.1 78 | transitivePeerDependencies: 79 | - supports-color 80 | dev: true 81 | 82 | /@humanwhocodes/config-array/0.11.7: 83 | resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} 84 | engines: {node: '>=10.10.0'} 85 | dependencies: 86 | '@humanwhocodes/object-schema': 1.2.1 87 | debug: 4.3.4 88 | minimatch: 3.1.2 89 | transitivePeerDependencies: 90 | - supports-color 91 | dev: true 92 | 93 | /@humanwhocodes/module-importer/1.0.1: 94 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 95 | engines: {node: '>=12.22'} 96 | dev: true 97 | 98 | /@humanwhocodes/object-schema/1.2.1: 99 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 100 | dev: true 101 | 102 | /@iarna/toml/2.2.5: 103 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} 104 | dev: true 105 | 106 | /@jridgewell/resolve-uri/3.1.0: 107 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 108 | engines: {node: '>=6.0.0'} 109 | dev: true 110 | 111 | /@jridgewell/sourcemap-codec/1.4.14: 112 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 113 | dev: true 114 | 115 | /@jridgewell/trace-mapping/0.3.17: 116 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 117 | dependencies: 118 | '@jridgewell/resolve-uri': 3.1.0 119 | '@jridgewell/sourcemap-codec': 1.4.14 120 | dev: true 121 | 122 | /@mapbox/node-pre-gyp/1.0.10: 123 | resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} 124 | hasBin: true 125 | dependencies: 126 | detect-libc: 2.0.1 127 | https-proxy-agent: 5.0.1 128 | make-dir: 3.1.0 129 | node-fetch: 2.6.7 130 | nopt: 5.0.0 131 | npmlog: 5.0.1 132 | rimraf: 3.0.2 133 | semver: 7.3.8 134 | tar: 6.1.11 135 | transitivePeerDependencies: 136 | - encoding 137 | - supports-color 138 | dev: true 139 | 140 | /@nodelib/fs.scandir/2.1.5: 141 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 142 | engines: {node: '>= 8'} 143 | dependencies: 144 | '@nodelib/fs.stat': 2.0.5 145 | run-parallel: 1.2.0 146 | dev: true 147 | 148 | /@nodelib/fs.stat/2.0.5: 149 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 150 | engines: {node: '>= 8'} 151 | dev: true 152 | 153 | /@nodelib/fs.walk/1.2.8: 154 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 155 | engines: {node: '>= 8'} 156 | dependencies: 157 | '@nodelib/fs.scandir': 2.1.5 158 | fastq: 1.13.0 159 | dev: true 160 | 161 | /@polka/url/1.0.0-next.21: 162 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 163 | dev: true 164 | 165 | /@sveltejs/adapter-auto/1.0.0-next.86: 166 | resolution: {integrity: sha512-IKW1SUiXPPZ+qumQu5v48VH4aGmYiSLS83qbDlwfNmoRQejgU54f1M5s+isVmnr9kIOwbMQ0CfYhmZWJ7sEv6Q==} 167 | dependencies: 168 | '@sveltejs/adapter-cloudflare': 1.0.0-next.40 169 | '@sveltejs/adapter-netlify': 1.0.0-next.83 170 | '@sveltejs/adapter-vercel': 1.0.0-next.81 171 | transitivePeerDependencies: 172 | - encoding 173 | - supports-color 174 | dev: true 175 | 176 | /@sveltejs/adapter-cloudflare/1.0.0-next.40: 177 | resolution: {integrity: sha512-KT4TK40T9pl24nPFWHgw1QwAv9AjOkUymjFpS07Ro2zeBHJVgga1Jl0OA1bsiyEiLNRivNRwaWHFySlZ2JJpxQ==} 178 | dependencies: 179 | '@cloudflare/workers-types': 3.18.0 180 | esbuild: 0.15.12 181 | worktop: 0.8.0-next.14 182 | dev: true 183 | 184 | /@sveltejs/adapter-netlify/1.0.0-next.83: 185 | resolution: {integrity: sha512-4hPKs7T1v81KatpMm8AgPEe4LSvoRNWiooxbSlLL8su/nnVe2FHPlpGgRcdSsE9VUmlkyd+4YIbVFG0ZcYO4LQ==} 186 | dependencies: 187 | '@iarna/toml': 2.2.5 188 | esbuild: 0.15.12 189 | set-cookie-parser: 2.5.1 190 | dev: true 191 | 192 | /@sveltejs/adapter-vercel/1.0.0-next.81: 193 | resolution: {integrity: sha512-cuNolQSqabSs97J2hn9bnRDOscihIO+VEYltsc+POLU/ecv7pbUm1qdRakeG3+ehK1mfZ9dub6vEVuLKhm+Qng==} 194 | dependencies: 195 | '@vercel/nft': 0.22.1 196 | esbuild: 0.15.12 197 | transitivePeerDependencies: 198 | - encoding 199 | - supports-color 200 | dev: true 201 | 202 | /@sveltejs/kit/1.0.0-next.529_svelte@3.52.0+vite@3.2.2: 203 | resolution: {integrity: sha512-wM9Y38m8GVNT2YDQo41XNNa55OwTiGE+4fEuuhQnQY4nOSihXGllPsdIulnVsrxcSw9jKLkzwJdFr+i2y2y+OQ==} 204 | engines: {node: '>=16.14'} 205 | hasBin: true 206 | requiresBuild: true 207 | peerDependencies: 208 | svelte: ^3.44.0 209 | vite: ^3.1.0 210 | dependencies: 211 | '@sveltejs/vite-plugin-svelte': 1.1.0_svelte@3.52.0+vite@3.2.2 212 | '@types/cookie': 0.5.1 213 | cookie: 0.5.0 214 | devalue: 4.0.1 215 | kleur: 4.1.5 216 | magic-string: 0.26.7 217 | mime: 3.0.0 218 | sade: 1.8.1 219 | set-cookie-parser: 2.5.1 220 | sirv: 2.0.2 221 | svelte: 3.52.0 222 | tiny-glob: 0.2.9 223 | undici: 5.12.0 224 | vite: 3.2.2 225 | transitivePeerDependencies: 226 | - diff-match-patch 227 | - supports-color 228 | dev: true 229 | 230 | /@sveltejs/package/1.0.0-next.1_besnmoibwkhwtentvwuriss7pa: 231 | resolution: {integrity: sha512-U8XBk6Cfy8MjKG41Uyo+fqBpdhu7xUSnhiCNoODRaAtWV02RZoLh+McXrsxEvqi/ycgymctlhJhssqDnD+E+FA==} 232 | engines: {node: '>=16.9'} 233 | hasBin: true 234 | peerDependencies: 235 | svelte: ^3.44.0 236 | dependencies: 237 | chokidar: 3.5.3 238 | kleur: 4.1.5 239 | sade: 1.8.1 240 | svelte: 3.52.0 241 | svelte2tsx: 0.5.20_besnmoibwkhwtentvwuriss7pa 242 | transitivePeerDependencies: 243 | - typescript 244 | dev: true 245 | 246 | /@sveltejs/vite-plugin-svelte/1.1.0_svelte@3.52.0+vite@3.2.2: 247 | resolution: {integrity: sha512-cFRfEdztubtj1c/rYh7ArK7XCfFJn6wG6+J8/e9amFsKtEJILovoBrK0/mxt1AjPQg0vaX+fHPKvhx+q8mTPaQ==} 248 | engines: {node: ^14.18.0 || >= 16} 249 | peerDependencies: 250 | diff-match-patch: ^1.0.5 251 | svelte: ^3.44.0 252 | vite: ^3.0.0 253 | peerDependenciesMeta: 254 | diff-match-patch: 255 | optional: true 256 | dependencies: 257 | debug: 4.3.4 258 | deepmerge: 4.2.2 259 | kleur: 4.1.5 260 | magic-string: 0.26.7 261 | svelte: 3.52.0 262 | svelte-hmr: 0.15.0_svelte@3.52.0 263 | vite: 3.2.2 264 | transitivePeerDependencies: 265 | - supports-color 266 | dev: true 267 | 268 | /@types/chai-subset/1.3.3: 269 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 270 | dependencies: 271 | '@types/chai': 4.3.3 272 | dev: true 273 | 274 | /@types/chai/4.3.3: 275 | resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} 276 | dev: true 277 | 278 | /@types/cookie/0.5.1: 279 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 280 | dev: true 281 | 282 | /@types/json-schema/7.0.11: 283 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 284 | dev: true 285 | 286 | /@types/node/18.11.8: 287 | resolution: {integrity: sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==} 288 | dev: true 289 | 290 | /@types/pug/2.0.6: 291 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 292 | dev: true 293 | 294 | /@types/sass/1.43.1: 295 | resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} 296 | dependencies: 297 | '@types/node': 18.11.8 298 | dev: true 299 | 300 | /@types/semver/7.3.13: 301 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 302 | dev: true 303 | 304 | /@typescript-eslint/eslint-plugin/5.41.0_huremdigmcnkianavgfk3x6iou: 305 | resolution: {integrity: sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==} 306 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 307 | peerDependencies: 308 | '@typescript-eslint/parser': ^5.0.0 309 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 310 | typescript: '*' 311 | peerDependenciesMeta: 312 | typescript: 313 | optional: true 314 | dependencies: 315 | '@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m 316 | '@typescript-eslint/scope-manager': 5.41.0 317 | '@typescript-eslint/type-utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m 318 | '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m 319 | debug: 4.3.4 320 | eslint: 8.26.0 321 | ignore: 5.2.0 322 | regexpp: 3.2.0 323 | semver: 7.3.8 324 | tsutils: 3.21.0_typescript@4.8.4 325 | typescript: 4.8.4 326 | transitivePeerDependencies: 327 | - supports-color 328 | dev: true 329 | 330 | /@typescript-eslint/parser/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: 331 | resolution: {integrity: sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==} 332 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 333 | peerDependencies: 334 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 335 | typescript: '*' 336 | peerDependenciesMeta: 337 | typescript: 338 | optional: true 339 | dependencies: 340 | '@typescript-eslint/scope-manager': 5.41.0 341 | '@typescript-eslint/types': 5.41.0 342 | '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 343 | debug: 4.3.4 344 | eslint: 8.26.0 345 | typescript: 4.8.4 346 | transitivePeerDependencies: 347 | - supports-color 348 | dev: true 349 | 350 | /@typescript-eslint/scope-manager/5.41.0: 351 | resolution: {integrity: sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==} 352 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 353 | dependencies: 354 | '@typescript-eslint/types': 5.41.0 355 | '@typescript-eslint/visitor-keys': 5.41.0 356 | dev: true 357 | 358 | /@typescript-eslint/type-utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: 359 | resolution: {integrity: sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==} 360 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 361 | peerDependencies: 362 | eslint: '*' 363 | typescript: '*' 364 | peerDependenciesMeta: 365 | typescript: 366 | optional: true 367 | dependencies: 368 | '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 369 | '@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m 370 | debug: 4.3.4 371 | eslint: 8.26.0 372 | tsutils: 3.21.0_typescript@4.8.4 373 | typescript: 4.8.4 374 | transitivePeerDependencies: 375 | - supports-color 376 | dev: true 377 | 378 | /@typescript-eslint/types/5.41.0: 379 | resolution: {integrity: sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==} 380 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 381 | dev: true 382 | 383 | /@typescript-eslint/typescript-estree/5.41.0_typescript@4.8.4: 384 | resolution: {integrity: sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==} 385 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 386 | peerDependencies: 387 | typescript: '*' 388 | peerDependenciesMeta: 389 | typescript: 390 | optional: true 391 | dependencies: 392 | '@typescript-eslint/types': 5.41.0 393 | '@typescript-eslint/visitor-keys': 5.41.0 394 | debug: 4.3.4 395 | globby: 11.1.0 396 | is-glob: 4.0.3 397 | semver: 7.3.8 398 | tsutils: 3.21.0_typescript@4.8.4 399 | typescript: 4.8.4 400 | transitivePeerDependencies: 401 | - supports-color 402 | dev: true 403 | 404 | /@typescript-eslint/utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m: 405 | resolution: {integrity: sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==} 406 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 407 | peerDependencies: 408 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 409 | dependencies: 410 | '@types/json-schema': 7.0.11 411 | '@types/semver': 7.3.13 412 | '@typescript-eslint/scope-manager': 5.41.0 413 | '@typescript-eslint/types': 5.41.0 414 | '@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4 415 | eslint: 8.26.0 416 | eslint-scope: 5.1.1 417 | eslint-utils: 3.0.0_eslint@8.26.0 418 | semver: 7.3.8 419 | transitivePeerDependencies: 420 | - supports-color 421 | - typescript 422 | dev: true 423 | 424 | /@typescript-eslint/visitor-keys/5.41.0: 425 | resolution: {integrity: sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==} 426 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 427 | dependencies: 428 | '@typescript-eslint/types': 5.41.0 429 | eslint-visitor-keys: 3.3.0 430 | dev: true 431 | 432 | /@vercel/nft/0.22.1: 433 | resolution: {integrity: sha512-lYYZIoxRurqDOSoVIdBicGnpUIpfyaS5qVjdPq+EfI285WqtZK3NK/dyCkiyBul+X2U2OEhRyeMdXPCHGJbohw==} 434 | hasBin: true 435 | dependencies: 436 | '@mapbox/node-pre-gyp': 1.0.10 437 | acorn: 8.8.1 438 | async-sema: 3.1.1 439 | bindings: 1.5.0 440 | estree-walker: 2.0.2 441 | glob: 7.2.3 442 | graceful-fs: 4.2.10 443 | micromatch: 4.0.5 444 | node-gyp-build: 4.5.0 445 | resolve-from: 5.0.0 446 | rollup-pluginutils: 2.8.2 447 | transitivePeerDependencies: 448 | - encoding 449 | - supports-color 450 | dev: true 451 | 452 | /abbrev/1.1.1: 453 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 454 | dev: true 455 | 456 | /acorn-jsx/5.3.2_acorn@8.8.1: 457 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 458 | peerDependencies: 459 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 460 | dependencies: 461 | acorn: 8.8.1 462 | dev: true 463 | 464 | /acorn/8.8.1: 465 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 466 | engines: {node: '>=0.4.0'} 467 | hasBin: true 468 | dev: true 469 | 470 | /agent-base/6.0.2: 471 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 472 | engines: {node: '>= 6.0.0'} 473 | dependencies: 474 | debug: 4.3.4 475 | transitivePeerDependencies: 476 | - supports-color 477 | dev: true 478 | 479 | /ajv/6.12.6: 480 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 481 | dependencies: 482 | fast-deep-equal: 3.1.3 483 | fast-json-stable-stringify: 2.1.0 484 | json-schema-traverse: 0.4.1 485 | uri-js: 4.4.1 486 | dev: true 487 | 488 | /ansi-regex/5.0.1: 489 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 490 | engines: {node: '>=8'} 491 | dev: true 492 | 493 | /ansi-styles/4.3.0: 494 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 495 | engines: {node: '>=8'} 496 | dependencies: 497 | color-convert: 2.0.1 498 | dev: true 499 | 500 | /anymatch/3.1.2: 501 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 502 | engines: {node: '>= 8'} 503 | dependencies: 504 | normalize-path: 3.0.0 505 | picomatch: 2.3.1 506 | dev: true 507 | 508 | /aproba/2.0.0: 509 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 510 | dev: true 511 | 512 | /are-we-there-yet/2.0.0: 513 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 514 | engines: {node: '>=10'} 515 | dependencies: 516 | delegates: 1.0.0 517 | readable-stream: 3.6.0 518 | dev: true 519 | 520 | /argparse/2.0.1: 521 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 522 | dev: true 523 | 524 | /array-union/2.1.0: 525 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 526 | engines: {node: '>=8'} 527 | dev: true 528 | 529 | /assertion-error/1.1.0: 530 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 531 | dev: true 532 | 533 | /async-sema/3.1.1: 534 | resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} 535 | dev: true 536 | 537 | /balanced-match/1.0.2: 538 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 539 | dev: true 540 | 541 | /binary-extensions/2.2.0: 542 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 543 | engines: {node: '>=8'} 544 | dev: true 545 | 546 | /bindings/1.5.0: 547 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 548 | dependencies: 549 | file-uri-to-path: 1.0.0 550 | dev: true 551 | 552 | /brace-expansion/1.1.11: 553 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 554 | dependencies: 555 | balanced-match: 1.0.2 556 | concat-map: 0.0.1 557 | dev: true 558 | 559 | /braces/3.0.2: 560 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 561 | engines: {node: '>=8'} 562 | dependencies: 563 | fill-range: 7.0.1 564 | dev: true 565 | 566 | /buffer-crc32/0.2.13: 567 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 568 | dev: true 569 | 570 | /busboy/1.6.0: 571 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 572 | engines: {node: '>=10.16.0'} 573 | dependencies: 574 | streamsearch: 1.1.0 575 | dev: true 576 | 577 | /callsites/3.1.0: 578 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 579 | engines: {node: '>=6'} 580 | dev: true 581 | 582 | /chai/4.3.6: 583 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 584 | engines: {node: '>=4'} 585 | dependencies: 586 | assertion-error: 1.1.0 587 | check-error: 1.0.2 588 | deep-eql: 3.0.1 589 | get-func-name: 2.0.0 590 | loupe: 2.3.4 591 | pathval: 1.1.1 592 | type-detect: 4.0.8 593 | dev: true 594 | 595 | /chalk/4.1.2: 596 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 597 | engines: {node: '>=10'} 598 | dependencies: 599 | ansi-styles: 4.3.0 600 | supports-color: 7.2.0 601 | dev: true 602 | 603 | /check-error/1.0.2: 604 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 605 | dev: true 606 | 607 | /chokidar/3.5.3: 608 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 609 | engines: {node: '>= 8.10.0'} 610 | dependencies: 611 | anymatch: 3.1.2 612 | braces: 3.0.2 613 | glob-parent: 5.1.2 614 | is-binary-path: 2.1.0 615 | is-glob: 4.0.3 616 | normalize-path: 3.0.0 617 | readdirp: 3.6.0 618 | optionalDependencies: 619 | fsevents: 2.3.2 620 | dev: true 621 | 622 | /chownr/2.0.0: 623 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 624 | engines: {node: '>=10'} 625 | dev: true 626 | 627 | /color-convert/2.0.1: 628 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 629 | engines: {node: '>=7.0.0'} 630 | dependencies: 631 | color-name: 1.1.4 632 | dev: true 633 | 634 | /color-name/1.1.4: 635 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 636 | dev: true 637 | 638 | /color-support/1.1.3: 639 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 640 | hasBin: true 641 | dev: true 642 | 643 | /concat-map/0.0.1: 644 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 645 | dev: true 646 | 647 | /console-control-strings/1.1.0: 648 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 649 | dev: true 650 | 651 | /cookie/0.5.0: 652 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 653 | engines: {node: '>= 0.6'} 654 | dev: true 655 | 656 | /cross-spawn/7.0.3: 657 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 658 | engines: {node: '>= 8'} 659 | dependencies: 660 | path-key: 3.1.1 661 | shebang-command: 2.0.0 662 | which: 2.0.2 663 | dev: true 664 | 665 | /debug/4.3.4: 666 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 667 | engines: {node: '>=6.0'} 668 | peerDependencies: 669 | supports-color: '*' 670 | peerDependenciesMeta: 671 | supports-color: 672 | optional: true 673 | dependencies: 674 | ms: 2.1.2 675 | dev: true 676 | 677 | /dedent-js/1.0.1: 678 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 679 | dev: true 680 | 681 | /deep-eql/3.0.1: 682 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 683 | engines: {node: '>=0.12'} 684 | dependencies: 685 | type-detect: 4.0.8 686 | dev: true 687 | 688 | /deep-is/0.1.4: 689 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 690 | dev: true 691 | 692 | /deepmerge/4.2.2: 693 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 694 | engines: {node: '>=0.10.0'} 695 | dev: true 696 | 697 | /delegates/1.0.0: 698 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 699 | dev: true 700 | 701 | /detect-indent/6.1.0: 702 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 703 | engines: {node: '>=8'} 704 | dev: true 705 | 706 | /detect-libc/2.0.1: 707 | resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} 708 | engines: {node: '>=8'} 709 | dev: true 710 | 711 | /devalue/4.0.1: 712 | resolution: {integrity: sha512-Oksbel8g2rv5ivcCyImF1RXEU2FcS1OtCwVs4tJCCeVws/Dp9EE15fUbEsNr/xLD3ZxsQURBCDf56Lk1CgwCpg==} 713 | dev: true 714 | 715 | /dir-glob/3.0.1: 716 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 717 | engines: {node: '>=8'} 718 | dependencies: 719 | path-type: 4.0.0 720 | dev: true 721 | 722 | /doctrine/3.0.0: 723 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 724 | engines: {node: '>=6.0.0'} 725 | dependencies: 726 | esutils: 2.0.3 727 | dev: true 728 | 729 | /emoji-regex/8.0.0: 730 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 731 | dev: true 732 | 733 | /es6-promise/3.3.1: 734 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 735 | dev: true 736 | 737 | /esbuild-android-64/0.15.12: 738 | resolution: {integrity: sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==} 739 | engines: {node: '>=12'} 740 | cpu: [x64] 741 | os: [android] 742 | requiresBuild: true 743 | dev: true 744 | optional: true 745 | 746 | /esbuild-android-arm64/0.15.12: 747 | resolution: {integrity: sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==} 748 | engines: {node: '>=12'} 749 | cpu: [arm64] 750 | os: [android] 751 | requiresBuild: true 752 | dev: true 753 | optional: true 754 | 755 | /esbuild-darwin-64/0.15.12: 756 | resolution: {integrity: sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==} 757 | engines: {node: '>=12'} 758 | cpu: [x64] 759 | os: [darwin] 760 | requiresBuild: true 761 | dev: true 762 | optional: true 763 | 764 | /esbuild-darwin-arm64/0.15.12: 765 | resolution: {integrity: sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==} 766 | engines: {node: '>=12'} 767 | cpu: [arm64] 768 | os: [darwin] 769 | requiresBuild: true 770 | dev: true 771 | optional: true 772 | 773 | /esbuild-freebsd-64/0.15.12: 774 | resolution: {integrity: sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==} 775 | engines: {node: '>=12'} 776 | cpu: [x64] 777 | os: [freebsd] 778 | requiresBuild: true 779 | dev: true 780 | optional: true 781 | 782 | /esbuild-freebsd-arm64/0.15.12: 783 | resolution: {integrity: sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==} 784 | engines: {node: '>=12'} 785 | cpu: [arm64] 786 | os: [freebsd] 787 | requiresBuild: true 788 | dev: true 789 | optional: true 790 | 791 | /esbuild-linux-32/0.15.12: 792 | resolution: {integrity: sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==} 793 | engines: {node: '>=12'} 794 | cpu: [ia32] 795 | os: [linux] 796 | requiresBuild: true 797 | dev: true 798 | optional: true 799 | 800 | /esbuild-linux-64/0.15.12: 801 | resolution: {integrity: sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==} 802 | engines: {node: '>=12'} 803 | cpu: [x64] 804 | os: [linux] 805 | requiresBuild: true 806 | dev: true 807 | optional: true 808 | 809 | /esbuild-linux-arm/0.15.12: 810 | resolution: {integrity: sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==} 811 | engines: {node: '>=12'} 812 | cpu: [arm] 813 | os: [linux] 814 | requiresBuild: true 815 | dev: true 816 | optional: true 817 | 818 | /esbuild-linux-arm64/0.15.12: 819 | resolution: {integrity: sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==} 820 | engines: {node: '>=12'} 821 | cpu: [arm64] 822 | os: [linux] 823 | requiresBuild: true 824 | dev: true 825 | optional: true 826 | 827 | /esbuild-linux-mips64le/0.15.12: 828 | resolution: {integrity: sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==} 829 | engines: {node: '>=12'} 830 | cpu: [mips64el] 831 | os: [linux] 832 | requiresBuild: true 833 | dev: true 834 | optional: true 835 | 836 | /esbuild-linux-ppc64le/0.15.12: 837 | resolution: {integrity: sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==} 838 | engines: {node: '>=12'} 839 | cpu: [ppc64] 840 | os: [linux] 841 | requiresBuild: true 842 | dev: true 843 | optional: true 844 | 845 | /esbuild-linux-riscv64/0.15.12: 846 | resolution: {integrity: sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==} 847 | engines: {node: '>=12'} 848 | cpu: [riscv64] 849 | os: [linux] 850 | requiresBuild: true 851 | dev: true 852 | optional: true 853 | 854 | /esbuild-linux-s390x/0.15.12: 855 | resolution: {integrity: sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==} 856 | engines: {node: '>=12'} 857 | cpu: [s390x] 858 | os: [linux] 859 | requiresBuild: true 860 | dev: true 861 | optional: true 862 | 863 | /esbuild-netbsd-64/0.15.12: 864 | resolution: {integrity: sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==} 865 | engines: {node: '>=12'} 866 | cpu: [x64] 867 | os: [netbsd] 868 | requiresBuild: true 869 | dev: true 870 | optional: true 871 | 872 | /esbuild-openbsd-64/0.15.12: 873 | resolution: {integrity: sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==} 874 | engines: {node: '>=12'} 875 | cpu: [x64] 876 | os: [openbsd] 877 | requiresBuild: true 878 | dev: true 879 | optional: true 880 | 881 | /esbuild-sunos-64/0.15.12: 882 | resolution: {integrity: sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==} 883 | engines: {node: '>=12'} 884 | cpu: [x64] 885 | os: [sunos] 886 | requiresBuild: true 887 | dev: true 888 | optional: true 889 | 890 | /esbuild-windows-32/0.15.12: 891 | resolution: {integrity: sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==} 892 | engines: {node: '>=12'} 893 | cpu: [ia32] 894 | os: [win32] 895 | requiresBuild: true 896 | dev: true 897 | optional: true 898 | 899 | /esbuild-windows-64/0.15.12: 900 | resolution: {integrity: sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==} 901 | engines: {node: '>=12'} 902 | cpu: [x64] 903 | os: [win32] 904 | requiresBuild: true 905 | dev: true 906 | optional: true 907 | 908 | /esbuild-windows-arm64/0.15.12: 909 | resolution: {integrity: sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==} 910 | engines: {node: '>=12'} 911 | cpu: [arm64] 912 | os: [win32] 913 | requiresBuild: true 914 | dev: true 915 | optional: true 916 | 917 | /esbuild/0.15.12: 918 | resolution: {integrity: sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==} 919 | engines: {node: '>=12'} 920 | hasBin: true 921 | requiresBuild: true 922 | optionalDependencies: 923 | '@esbuild/android-arm': 0.15.12 924 | '@esbuild/linux-loong64': 0.15.12 925 | esbuild-android-64: 0.15.12 926 | esbuild-android-arm64: 0.15.12 927 | esbuild-darwin-64: 0.15.12 928 | esbuild-darwin-arm64: 0.15.12 929 | esbuild-freebsd-64: 0.15.12 930 | esbuild-freebsd-arm64: 0.15.12 931 | esbuild-linux-32: 0.15.12 932 | esbuild-linux-64: 0.15.12 933 | esbuild-linux-arm: 0.15.12 934 | esbuild-linux-arm64: 0.15.12 935 | esbuild-linux-mips64le: 0.15.12 936 | esbuild-linux-ppc64le: 0.15.12 937 | esbuild-linux-riscv64: 0.15.12 938 | esbuild-linux-s390x: 0.15.12 939 | esbuild-netbsd-64: 0.15.12 940 | esbuild-openbsd-64: 0.15.12 941 | esbuild-sunos-64: 0.15.12 942 | esbuild-windows-32: 0.15.12 943 | esbuild-windows-64: 0.15.12 944 | esbuild-windows-arm64: 0.15.12 945 | dev: true 946 | 947 | /escape-string-regexp/4.0.0: 948 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 949 | engines: {node: '>=10'} 950 | dev: true 951 | 952 | /eslint-config-prettier/8.5.0_eslint@8.26.0: 953 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 954 | hasBin: true 955 | peerDependencies: 956 | eslint: '>=7.0.0' 957 | dependencies: 958 | eslint: 8.26.0 959 | dev: true 960 | 961 | /eslint-plugin-svelte3/4.0.0_l6ppk7eerpslmlsqymzic46t24: 962 | resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} 963 | peerDependencies: 964 | eslint: '>=8.0.0' 965 | svelte: ^3.2.0 966 | dependencies: 967 | eslint: 8.26.0 968 | svelte: 3.52.0 969 | dev: true 970 | 971 | /eslint-scope/5.1.1: 972 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 973 | engines: {node: '>=8.0.0'} 974 | dependencies: 975 | esrecurse: 4.3.0 976 | estraverse: 4.3.0 977 | dev: true 978 | 979 | /eslint-scope/7.1.1: 980 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 981 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 982 | dependencies: 983 | esrecurse: 4.3.0 984 | estraverse: 5.3.0 985 | dev: true 986 | 987 | /eslint-utils/3.0.0_eslint@8.26.0: 988 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 989 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 990 | peerDependencies: 991 | eslint: '>=5' 992 | dependencies: 993 | eslint: 8.26.0 994 | eslint-visitor-keys: 2.1.0 995 | dev: true 996 | 997 | /eslint-visitor-keys/2.1.0: 998 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 999 | engines: {node: '>=10'} 1000 | dev: true 1001 | 1002 | /eslint-visitor-keys/3.3.0: 1003 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1004 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1005 | dev: true 1006 | 1007 | /eslint/8.26.0: 1008 | resolution: {integrity: sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg==} 1009 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1010 | hasBin: true 1011 | dependencies: 1012 | '@eslint/eslintrc': 1.3.3 1013 | '@humanwhocodes/config-array': 0.11.7 1014 | '@humanwhocodes/module-importer': 1.0.1 1015 | '@nodelib/fs.walk': 1.2.8 1016 | ajv: 6.12.6 1017 | chalk: 4.1.2 1018 | cross-spawn: 7.0.3 1019 | debug: 4.3.4 1020 | doctrine: 3.0.0 1021 | escape-string-regexp: 4.0.0 1022 | eslint-scope: 7.1.1 1023 | eslint-utils: 3.0.0_eslint@8.26.0 1024 | eslint-visitor-keys: 3.3.0 1025 | espree: 9.4.0 1026 | esquery: 1.4.0 1027 | esutils: 2.0.3 1028 | fast-deep-equal: 3.1.3 1029 | file-entry-cache: 6.0.1 1030 | find-up: 5.0.0 1031 | glob-parent: 6.0.2 1032 | globals: 13.17.0 1033 | grapheme-splitter: 1.0.4 1034 | ignore: 5.2.0 1035 | import-fresh: 3.3.0 1036 | imurmurhash: 0.1.4 1037 | is-glob: 4.0.3 1038 | is-path-inside: 3.0.3 1039 | js-sdsl: 4.1.5 1040 | js-yaml: 4.1.0 1041 | json-stable-stringify-without-jsonify: 1.0.1 1042 | levn: 0.4.1 1043 | lodash.merge: 4.6.2 1044 | minimatch: 3.1.2 1045 | natural-compare: 1.4.0 1046 | optionator: 0.9.1 1047 | regexpp: 3.2.0 1048 | strip-ansi: 6.0.1 1049 | strip-json-comments: 3.1.1 1050 | text-table: 0.2.0 1051 | transitivePeerDependencies: 1052 | - supports-color 1053 | dev: true 1054 | 1055 | /espree/9.4.0: 1056 | resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} 1057 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1058 | dependencies: 1059 | acorn: 8.8.1 1060 | acorn-jsx: 5.3.2_acorn@8.8.1 1061 | eslint-visitor-keys: 3.3.0 1062 | dev: true 1063 | 1064 | /esquery/1.4.0: 1065 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1066 | engines: {node: '>=0.10'} 1067 | dependencies: 1068 | estraverse: 5.3.0 1069 | dev: true 1070 | 1071 | /esrecurse/4.3.0: 1072 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1073 | engines: {node: '>=4.0'} 1074 | dependencies: 1075 | estraverse: 5.3.0 1076 | dev: true 1077 | 1078 | /estraverse/4.3.0: 1079 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1080 | engines: {node: '>=4.0'} 1081 | dev: true 1082 | 1083 | /estraverse/5.3.0: 1084 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1085 | engines: {node: '>=4.0'} 1086 | dev: true 1087 | 1088 | /estree-walker/0.6.1: 1089 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 1090 | dev: true 1091 | 1092 | /estree-walker/2.0.2: 1093 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1094 | dev: true 1095 | 1096 | /esutils/2.0.3: 1097 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1098 | engines: {node: '>=0.10.0'} 1099 | dev: true 1100 | 1101 | /fast-deep-equal/3.1.3: 1102 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1103 | dev: true 1104 | 1105 | /fast-glob/3.2.12: 1106 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1107 | engines: {node: '>=8.6.0'} 1108 | dependencies: 1109 | '@nodelib/fs.stat': 2.0.5 1110 | '@nodelib/fs.walk': 1.2.8 1111 | glob-parent: 5.1.2 1112 | merge2: 1.4.1 1113 | micromatch: 4.0.5 1114 | dev: true 1115 | 1116 | /fast-json-stable-stringify/2.1.0: 1117 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1118 | dev: true 1119 | 1120 | /fast-levenshtein/2.0.6: 1121 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1122 | dev: true 1123 | 1124 | /fastq/1.13.0: 1125 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1126 | dependencies: 1127 | reusify: 1.0.4 1128 | dev: true 1129 | 1130 | /file-entry-cache/6.0.1: 1131 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1132 | engines: {node: ^10.12.0 || >=12.0.0} 1133 | dependencies: 1134 | flat-cache: 3.0.4 1135 | dev: true 1136 | 1137 | /file-uri-to-path/1.0.0: 1138 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 1139 | dev: true 1140 | 1141 | /fill-range/7.0.1: 1142 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1143 | engines: {node: '>=8'} 1144 | dependencies: 1145 | to-regex-range: 5.0.1 1146 | dev: true 1147 | 1148 | /find-up/5.0.0: 1149 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1150 | engines: {node: '>=10'} 1151 | dependencies: 1152 | locate-path: 6.0.0 1153 | path-exists: 4.0.0 1154 | dev: true 1155 | 1156 | /flat-cache/3.0.4: 1157 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1158 | engines: {node: ^10.12.0 || >=12.0.0} 1159 | dependencies: 1160 | flatted: 3.2.7 1161 | rimraf: 3.0.2 1162 | dev: true 1163 | 1164 | /flatted/3.2.7: 1165 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1166 | dev: true 1167 | 1168 | /fs-minipass/2.1.0: 1169 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 1170 | engines: {node: '>= 8'} 1171 | dependencies: 1172 | minipass: 3.3.4 1173 | dev: true 1174 | 1175 | /fs.realpath/1.0.0: 1176 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1177 | dev: true 1178 | 1179 | /fsevents/2.3.2: 1180 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1181 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1182 | os: [darwin] 1183 | requiresBuild: true 1184 | dev: true 1185 | optional: true 1186 | 1187 | /function-bind/1.1.1: 1188 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1189 | dev: true 1190 | 1191 | /gauge/3.0.2: 1192 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 1193 | engines: {node: '>=10'} 1194 | dependencies: 1195 | aproba: 2.0.0 1196 | color-support: 1.1.3 1197 | console-control-strings: 1.1.0 1198 | has-unicode: 2.0.1 1199 | object-assign: 4.1.1 1200 | signal-exit: 3.0.7 1201 | string-width: 4.2.3 1202 | strip-ansi: 6.0.1 1203 | wide-align: 1.1.5 1204 | dev: true 1205 | 1206 | /get-func-name/2.0.0: 1207 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1208 | dev: true 1209 | 1210 | /glob-parent/5.1.2: 1211 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1212 | engines: {node: '>= 6'} 1213 | dependencies: 1214 | is-glob: 4.0.3 1215 | dev: true 1216 | 1217 | /glob-parent/6.0.2: 1218 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1219 | engines: {node: '>=10.13.0'} 1220 | dependencies: 1221 | is-glob: 4.0.3 1222 | dev: true 1223 | 1224 | /glob/7.2.3: 1225 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1226 | dependencies: 1227 | fs.realpath: 1.0.0 1228 | inflight: 1.0.6 1229 | inherits: 2.0.4 1230 | minimatch: 3.1.2 1231 | once: 1.4.0 1232 | path-is-absolute: 1.0.1 1233 | dev: true 1234 | 1235 | /globals/13.17.0: 1236 | resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} 1237 | engines: {node: '>=8'} 1238 | dependencies: 1239 | type-fest: 0.20.2 1240 | dev: true 1241 | 1242 | /globalyzer/0.1.0: 1243 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1244 | dev: true 1245 | 1246 | /globby/11.1.0: 1247 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1248 | engines: {node: '>=10'} 1249 | dependencies: 1250 | array-union: 2.1.0 1251 | dir-glob: 3.0.1 1252 | fast-glob: 3.2.12 1253 | ignore: 5.2.0 1254 | merge2: 1.4.1 1255 | slash: 3.0.0 1256 | dev: true 1257 | 1258 | /globrex/0.1.2: 1259 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1260 | dev: true 1261 | 1262 | /graceful-fs/4.2.10: 1263 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1264 | dev: true 1265 | 1266 | /grapheme-splitter/1.0.4: 1267 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1268 | dev: true 1269 | 1270 | /has-flag/4.0.0: 1271 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1272 | engines: {node: '>=8'} 1273 | dev: true 1274 | 1275 | /has-unicode/2.0.1: 1276 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1277 | dev: true 1278 | 1279 | /has/1.0.3: 1280 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1281 | engines: {node: '>= 0.4.0'} 1282 | dependencies: 1283 | function-bind: 1.1.1 1284 | dev: true 1285 | 1286 | /https-proxy-agent/5.0.1: 1287 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1288 | engines: {node: '>= 6'} 1289 | dependencies: 1290 | agent-base: 6.0.2 1291 | debug: 4.3.4 1292 | transitivePeerDependencies: 1293 | - supports-color 1294 | dev: true 1295 | 1296 | /ignore/5.2.0: 1297 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1298 | engines: {node: '>= 4'} 1299 | dev: true 1300 | 1301 | /import-fresh/3.3.0: 1302 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1303 | engines: {node: '>=6'} 1304 | dependencies: 1305 | parent-module: 1.0.1 1306 | resolve-from: 4.0.0 1307 | dev: true 1308 | 1309 | /imurmurhash/0.1.4: 1310 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1311 | engines: {node: '>=0.8.19'} 1312 | dev: true 1313 | 1314 | /inflight/1.0.6: 1315 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1316 | dependencies: 1317 | once: 1.4.0 1318 | wrappy: 1.0.2 1319 | dev: true 1320 | 1321 | /inherits/2.0.4: 1322 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1323 | dev: true 1324 | 1325 | /is-binary-path/2.1.0: 1326 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1327 | engines: {node: '>=8'} 1328 | dependencies: 1329 | binary-extensions: 2.2.0 1330 | dev: true 1331 | 1332 | /is-core-module/2.11.0: 1333 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1334 | dependencies: 1335 | has: 1.0.3 1336 | dev: true 1337 | 1338 | /is-extglob/2.1.1: 1339 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1340 | engines: {node: '>=0.10.0'} 1341 | dev: true 1342 | 1343 | /is-fullwidth-code-point/3.0.0: 1344 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1345 | engines: {node: '>=8'} 1346 | dev: true 1347 | 1348 | /is-glob/4.0.3: 1349 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1350 | engines: {node: '>=0.10.0'} 1351 | dependencies: 1352 | is-extglob: 2.1.1 1353 | dev: true 1354 | 1355 | /is-number/7.0.0: 1356 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1357 | engines: {node: '>=0.12.0'} 1358 | dev: true 1359 | 1360 | /is-path-inside/3.0.3: 1361 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1362 | engines: {node: '>=8'} 1363 | dev: true 1364 | 1365 | /isexe/2.0.0: 1366 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1367 | dev: true 1368 | 1369 | /js-sdsl/4.1.5: 1370 | resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} 1371 | dev: true 1372 | 1373 | /js-yaml/4.1.0: 1374 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1375 | hasBin: true 1376 | dependencies: 1377 | argparse: 2.0.1 1378 | dev: true 1379 | 1380 | /json-schema-traverse/0.4.1: 1381 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1382 | dev: true 1383 | 1384 | /json-stable-stringify-without-jsonify/1.0.1: 1385 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1386 | dev: true 1387 | 1388 | /kleur/4.1.5: 1389 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1390 | engines: {node: '>=6'} 1391 | dev: true 1392 | 1393 | /levn/0.4.1: 1394 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1395 | engines: {node: '>= 0.8.0'} 1396 | dependencies: 1397 | prelude-ls: 1.2.1 1398 | type-check: 0.4.0 1399 | dev: true 1400 | 1401 | /local-pkg/0.4.2: 1402 | resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} 1403 | engines: {node: '>=14'} 1404 | dev: true 1405 | 1406 | /locate-path/6.0.0: 1407 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1408 | engines: {node: '>=10'} 1409 | dependencies: 1410 | p-locate: 5.0.0 1411 | dev: true 1412 | 1413 | /lodash.merge/4.6.2: 1414 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1415 | dev: true 1416 | 1417 | /loupe/2.3.4: 1418 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 1419 | dependencies: 1420 | get-func-name: 2.0.0 1421 | dev: true 1422 | 1423 | /lower-case/2.0.2: 1424 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1425 | dependencies: 1426 | tslib: 2.4.0 1427 | dev: true 1428 | 1429 | /lru-cache/6.0.0: 1430 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1431 | engines: {node: '>=10'} 1432 | dependencies: 1433 | yallist: 4.0.0 1434 | dev: true 1435 | 1436 | /magic-string/0.25.9: 1437 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1438 | dependencies: 1439 | sourcemap-codec: 1.4.8 1440 | dev: true 1441 | 1442 | /magic-string/0.26.7: 1443 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} 1444 | engines: {node: '>=12'} 1445 | dependencies: 1446 | sourcemap-codec: 1.4.8 1447 | dev: true 1448 | 1449 | /make-dir/3.1.0: 1450 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1451 | engines: {node: '>=8'} 1452 | dependencies: 1453 | semver: 6.3.0 1454 | dev: true 1455 | 1456 | /merge2/1.4.1: 1457 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1458 | engines: {node: '>= 8'} 1459 | dev: true 1460 | 1461 | /micromatch/4.0.5: 1462 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1463 | engines: {node: '>=8.6'} 1464 | dependencies: 1465 | braces: 3.0.2 1466 | picomatch: 2.3.1 1467 | dev: true 1468 | 1469 | /mime/3.0.0: 1470 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1471 | engines: {node: '>=10.0.0'} 1472 | hasBin: true 1473 | dev: true 1474 | 1475 | /min-indent/1.0.1: 1476 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1477 | engines: {node: '>=4'} 1478 | dev: true 1479 | 1480 | /minimatch/3.1.2: 1481 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1482 | dependencies: 1483 | brace-expansion: 1.1.11 1484 | dev: true 1485 | 1486 | /minimist/1.2.7: 1487 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 1488 | dev: true 1489 | 1490 | /minipass/3.3.4: 1491 | resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} 1492 | engines: {node: '>=8'} 1493 | dependencies: 1494 | yallist: 4.0.0 1495 | dev: true 1496 | 1497 | /minizlib/2.1.2: 1498 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 1499 | engines: {node: '>= 8'} 1500 | dependencies: 1501 | minipass: 3.3.4 1502 | yallist: 4.0.0 1503 | dev: true 1504 | 1505 | /mkdirp/0.5.6: 1506 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1507 | hasBin: true 1508 | dependencies: 1509 | minimist: 1.2.7 1510 | dev: true 1511 | 1512 | /mkdirp/1.0.4: 1513 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1514 | engines: {node: '>=10'} 1515 | hasBin: true 1516 | dev: true 1517 | 1518 | /mri/1.2.0: 1519 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1520 | engines: {node: '>=4'} 1521 | dev: true 1522 | 1523 | /mrmime/1.0.1: 1524 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 1525 | engines: {node: '>=10'} 1526 | dev: true 1527 | 1528 | /ms/2.1.2: 1529 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1530 | dev: true 1531 | 1532 | /nanoid/3.3.4: 1533 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1534 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1535 | hasBin: true 1536 | dev: true 1537 | 1538 | /natural-compare/1.4.0: 1539 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1540 | dev: true 1541 | 1542 | /no-case/3.0.4: 1543 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1544 | dependencies: 1545 | lower-case: 2.0.2 1546 | tslib: 2.4.0 1547 | dev: true 1548 | 1549 | /node-fetch/2.6.7: 1550 | resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 1551 | engines: {node: 4.x || >=6.0.0} 1552 | peerDependencies: 1553 | encoding: ^0.1.0 1554 | peerDependenciesMeta: 1555 | encoding: 1556 | optional: true 1557 | dependencies: 1558 | whatwg-url: 5.0.0 1559 | dev: true 1560 | 1561 | /node-gyp-build/4.5.0: 1562 | resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} 1563 | hasBin: true 1564 | dev: true 1565 | 1566 | /nopt/5.0.0: 1567 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 1568 | engines: {node: '>=6'} 1569 | hasBin: true 1570 | dependencies: 1571 | abbrev: 1.1.1 1572 | dev: true 1573 | 1574 | /normalize-path/3.0.0: 1575 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1576 | engines: {node: '>=0.10.0'} 1577 | dev: true 1578 | 1579 | /npmlog/5.0.1: 1580 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 1581 | dependencies: 1582 | are-we-there-yet: 2.0.0 1583 | console-control-strings: 1.1.0 1584 | gauge: 3.0.2 1585 | set-blocking: 2.0.0 1586 | dev: true 1587 | 1588 | /object-assign/4.1.1: 1589 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1590 | engines: {node: '>=0.10.0'} 1591 | dev: true 1592 | 1593 | /once/1.4.0: 1594 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1595 | dependencies: 1596 | wrappy: 1.0.2 1597 | dev: true 1598 | 1599 | /optionator/0.9.1: 1600 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1601 | engines: {node: '>= 0.8.0'} 1602 | dependencies: 1603 | deep-is: 0.1.4 1604 | fast-levenshtein: 2.0.6 1605 | levn: 0.4.1 1606 | prelude-ls: 1.2.1 1607 | type-check: 0.4.0 1608 | word-wrap: 1.2.3 1609 | dev: true 1610 | 1611 | /p-limit/3.1.0: 1612 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1613 | engines: {node: '>=10'} 1614 | dependencies: 1615 | yocto-queue: 0.1.0 1616 | dev: true 1617 | 1618 | /p-locate/5.0.0: 1619 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1620 | engines: {node: '>=10'} 1621 | dependencies: 1622 | p-limit: 3.1.0 1623 | dev: true 1624 | 1625 | /parent-module/1.0.1: 1626 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1627 | engines: {node: '>=6'} 1628 | dependencies: 1629 | callsites: 3.1.0 1630 | dev: true 1631 | 1632 | /pascal-case/3.1.2: 1633 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1634 | dependencies: 1635 | no-case: 3.0.4 1636 | tslib: 2.4.0 1637 | dev: true 1638 | 1639 | /path-exists/4.0.0: 1640 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1641 | engines: {node: '>=8'} 1642 | dev: true 1643 | 1644 | /path-is-absolute/1.0.1: 1645 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1646 | engines: {node: '>=0.10.0'} 1647 | dev: true 1648 | 1649 | /path-key/3.1.1: 1650 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1651 | engines: {node: '>=8'} 1652 | dev: true 1653 | 1654 | /path-parse/1.0.7: 1655 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1656 | dev: true 1657 | 1658 | /path-type/4.0.0: 1659 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1660 | engines: {node: '>=8'} 1661 | dev: true 1662 | 1663 | /pathval/1.1.1: 1664 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1665 | dev: true 1666 | 1667 | /picocolors/1.0.0: 1668 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1669 | dev: true 1670 | 1671 | /picomatch/2.3.1: 1672 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1673 | engines: {node: '>=8.6'} 1674 | dev: true 1675 | 1676 | /postcss/8.4.18: 1677 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} 1678 | engines: {node: ^10 || ^12 || >=14} 1679 | dependencies: 1680 | nanoid: 3.3.4 1681 | picocolors: 1.0.0 1682 | source-map-js: 1.0.2 1683 | dev: true 1684 | 1685 | /prelude-ls/1.2.1: 1686 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1687 | engines: {node: '>= 0.8.0'} 1688 | dev: true 1689 | 1690 | /prettier-plugin-svelte/2.8.0_lrllcp5xtrkmmdzifit4hd52ze: 1691 | resolution: {integrity: sha512-QlXv/U3bUszks3XYDPsk1fsaQC+fo2lshwKbcbO+lrSVdJ+40mB1BfL8OCAk1W9y4pJxpqO/4gqm6NtF3zNGCw==} 1692 | peerDependencies: 1693 | prettier: ^1.16.4 || ^2.0.0 1694 | svelte: ^3.2.0 1695 | dependencies: 1696 | prettier: 2.7.1 1697 | svelte: 3.52.0 1698 | dev: true 1699 | 1700 | /prettier/2.7.1: 1701 | resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} 1702 | engines: {node: '>=10.13.0'} 1703 | hasBin: true 1704 | dev: true 1705 | 1706 | /punycode/2.1.1: 1707 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1708 | engines: {node: '>=6'} 1709 | dev: true 1710 | 1711 | /queue-microtask/1.2.3: 1712 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1713 | dev: true 1714 | 1715 | /readable-stream/3.6.0: 1716 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1717 | engines: {node: '>= 6'} 1718 | dependencies: 1719 | inherits: 2.0.4 1720 | string_decoder: 1.3.0 1721 | util-deprecate: 1.0.2 1722 | dev: true 1723 | 1724 | /readdirp/3.6.0: 1725 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1726 | engines: {node: '>=8.10.0'} 1727 | dependencies: 1728 | picomatch: 2.3.1 1729 | dev: true 1730 | 1731 | /regexparam/2.0.1: 1732 | resolution: {integrity: sha512-zRgSaYemnNYxUv+/5SeoHI0eJIgTL/A2pUtXUPLHQxUldagouJ9p+K6IbIZ/JiQuCEv2E2B1O11SjVQy3aMCkw==} 1733 | engines: {node: '>=8'} 1734 | dev: true 1735 | 1736 | /regexpp/3.2.0: 1737 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1738 | engines: {node: '>=8'} 1739 | dev: true 1740 | 1741 | /resolve-from/4.0.0: 1742 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1743 | engines: {node: '>=4'} 1744 | dev: true 1745 | 1746 | /resolve-from/5.0.0: 1747 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1748 | engines: {node: '>=8'} 1749 | dev: true 1750 | 1751 | /resolve/1.22.1: 1752 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1753 | hasBin: true 1754 | dependencies: 1755 | is-core-module: 2.11.0 1756 | path-parse: 1.0.7 1757 | supports-preserve-symlinks-flag: 1.0.0 1758 | dev: true 1759 | 1760 | /reusify/1.0.4: 1761 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1762 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1763 | dev: true 1764 | 1765 | /rimraf/2.7.1: 1766 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1767 | hasBin: true 1768 | dependencies: 1769 | glob: 7.2.3 1770 | dev: true 1771 | 1772 | /rimraf/3.0.2: 1773 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1774 | hasBin: true 1775 | dependencies: 1776 | glob: 7.2.3 1777 | dev: true 1778 | 1779 | /rollup-pluginutils/2.8.2: 1780 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 1781 | dependencies: 1782 | estree-walker: 0.6.1 1783 | dev: true 1784 | 1785 | /rollup/2.79.1: 1786 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 1787 | engines: {node: '>=10.0.0'} 1788 | hasBin: true 1789 | optionalDependencies: 1790 | fsevents: 2.3.2 1791 | dev: true 1792 | 1793 | /run-parallel/1.2.0: 1794 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1795 | dependencies: 1796 | queue-microtask: 1.2.3 1797 | dev: true 1798 | 1799 | /sade/1.8.1: 1800 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1801 | engines: {node: '>=6'} 1802 | dependencies: 1803 | mri: 1.2.0 1804 | dev: true 1805 | 1806 | /safe-buffer/5.2.1: 1807 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1808 | dev: true 1809 | 1810 | /sander/0.5.1: 1811 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1812 | dependencies: 1813 | es6-promise: 3.3.1 1814 | graceful-fs: 4.2.10 1815 | mkdirp: 0.5.6 1816 | rimraf: 2.7.1 1817 | dev: true 1818 | 1819 | /semver/6.3.0: 1820 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1821 | hasBin: true 1822 | dev: true 1823 | 1824 | /semver/7.3.8: 1825 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 1826 | engines: {node: '>=10'} 1827 | hasBin: true 1828 | dependencies: 1829 | lru-cache: 6.0.0 1830 | dev: true 1831 | 1832 | /set-blocking/2.0.0: 1833 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 1834 | dev: true 1835 | 1836 | /set-cookie-parser/2.5.1: 1837 | resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} 1838 | dev: true 1839 | 1840 | /shebang-command/2.0.0: 1841 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1842 | engines: {node: '>=8'} 1843 | dependencies: 1844 | shebang-regex: 3.0.0 1845 | dev: true 1846 | 1847 | /shebang-regex/3.0.0: 1848 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1849 | engines: {node: '>=8'} 1850 | dev: true 1851 | 1852 | /signal-exit/3.0.7: 1853 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1854 | dev: true 1855 | 1856 | /sirv/2.0.2: 1857 | resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} 1858 | engines: {node: '>= 10'} 1859 | dependencies: 1860 | '@polka/url': 1.0.0-next.21 1861 | mrmime: 1.0.1 1862 | totalist: 3.0.0 1863 | dev: true 1864 | 1865 | /slash/3.0.0: 1866 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1867 | engines: {node: '>=8'} 1868 | dev: true 1869 | 1870 | /sorcery/0.10.0: 1871 | resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} 1872 | hasBin: true 1873 | dependencies: 1874 | buffer-crc32: 0.2.13 1875 | minimist: 1.2.7 1876 | sander: 0.5.1 1877 | sourcemap-codec: 1.4.8 1878 | dev: true 1879 | 1880 | /source-map-js/1.0.2: 1881 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1882 | engines: {node: '>=0.10.0'} 1883 | dev: true 1884 | 1885 | /sourcemap-codec/1.4.8: 1886 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1887 | dev: true 1888 | 1889 | /streamsearch/1.1.0: 1890 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1891 | engines: {node: '>=10.0.0'} 1892 | dev: true 1893 | 1894 | /string-width/4.2.3: 1895 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1896 | engines: {node: '>=8'} 1897 | dependencies: 1898 | emoji-regex: 8.0.0 1899 | is-fullwidth-code-point: 3.0.0 1900 | strip-ansi: 6.0.1 1901 | dev: true 1902 | 1903 | /string_decoder/1.3.0: 1904 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1905 | dependencies: 1906 | safe-buffer: 5.2.1 1907 | dev: true 1908 | 1909 | /strip-ansi/6.0.1: 1910 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1911 | engines: {node: '>=8'} 1912 | dependencies: 1913 | ansi-regex: 5.0.1 1914 | dev: true 1915 | 1916 | /strip-indent/3.0.0: 1917 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1918 | engines: {node: '>=8'} 1919 | dependencies: 1920 | min-indent: 1.0.1 1921 | dev: true 1922 | 1923 | /strip-json-comments/3.1.1: 1924 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1925 | engines: {node: '>=8'} 1926 | dev: true 1927 | 1928 | /strip-literal/0.4.2: 1929 | resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} 1930 | dependencies: 1931 | acorn: 8.8.1 1932 | dev: true 1933 | 1934 | /supports-color/7.2.0: 1935 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1936 | engines: {node: '>=8'} 1937 | dependencies: 1938 | has-flag: 4.0.0 1939 | dev: true 1940 | 1941 | /supports-preserve-symlinks-flag/1.0.0: 1942 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1943 | engines: {node: '>= 0.4'} 1944 | dev: true 1945 | 1946 | /svelte-check/2.9.2_svelte@3.52.0: 1947 | resolution: {integrity: sha512-DRi8HhnCiqiGR2YF9ervPGvtoYrheE09cXieCTEqeTPOTJzfoa54Py8rovIBv4bH4n5HgZYIyTQ3DDLHQLl2uQ==} 1948 | hasBin: true 1949 | peerDependencies: 1950 | svelte: ^3.24.0 1951 | dependencies: 1952 | '@jridgewell/trace-mapping': 0.3.17 1953 | chokidar: 3.5.3 1954 | fast-glob: 3.2.12 1955 | import-fresh: 3.3.0 1956 | picocolors: 1.0.0 1957 | sade: 1.8.1 1958 | svelte: 3.52.0 1959 | svelte-preprocess: 4.10.7_besnmoibwkhwtentvwuriss7pa 1960 | typescript: 4.8.4 1961 | transitivePeerDependencies: 1962 | - '@babel/core' 1963 | - coffeescript 1964 | - less 1965 | - node-sass 1966 | - postcss 1967 | - postcss-load-config 1968 | - pug 1969 | - sass 1970 | - stylus 1971 | - sugarss 1972 | dev: true 1973 | 1974 | /svelte-hmr/0.15.0_svelte@3.52.0: 1975 | resolution: {integrity: sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==} 1976 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1977 | peerDependencies: 1978 | svelte: '>=3.19.0' 1979 | dependencies: 1980 | svelte: 3.52.0 1981 | dev: true 1982 | 1983 | /svelte-preprocess/4.10.7_besnmoibwkhwtentvwuriss7pa: 1984 | resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} 1985 | engines: {node: '>= 9.11.2'} 1986 | requiresBuild: true 1987 | peerDependencies: 1988 | '@babel/core': ^7.10.2 1989 | coffeescript: ^2.5.1 1990 | less: ^3.11.3 || ^4.0.0 1991 | node-sass: '*' 1992 | postcss: ^7 || ^8 1993 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 1994 | pug: ^3.0.0 1995 | sass: ^1.26.8 1996 | stylus: ^0.55.0 1997 | sugarss: ^2.0.0 1998 | svelte: ^3.23.0 1999 | typescript: ^3.9.5 || ^4.0.0 2000 | peerDependenciesMeta: 2001 | '@babel/core': 2002 | optional: true 2003 | coffeescript: 2004 | optional: true 2005 | less: 2006 | optional: true 2007 | node-sass: 2008 | optional: true 2009 | postcss: 2010 | optional: true 2011 | postcss-load-config: 2012 | optional: true 2013 | pug: 2014 | optional: true 2015 | sass: 2016 | optional: true 2017 | stylus: 2018 | optional: true 2019 | sugarss: 2020 | optional: true 2021 | typescript: 2022 | optional: true 2023 | dependencies: 2024 | '@types/pug': 2.0.6 2025 | '@types/sass': 1.43.1 2026 | detect-indent: 6.1.0 2027 | magic-string: 0.25.9 2028 | sorcery: 0.10.0 2029 | strip-indent: 3.0.0 2030 | svelte: 3.52.0 2031 | typescript: 4.8.4 2032 | dev: true 2033 | 2034 | /svelte/3.52.0: 2035 | resolution: {integrity: sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==} 2036 | engines: {node: '>= 8'} 2037 | dev: true 2038 | 2039 | /svelte2tsx/0.5.20_besnmoibwkhwtentvwuriss7pa: 2040 | resolution: {integrity: sha512-yNHmN/uoAnJ7d1XqVohiNA6TMFOxibHyEddUAHVt1PiLXtbwAJF3WaGYlg8QbOdoXzOVsVNCAlqRUIdULUm+OA==} 2041 | peerDependencies: 2042 | svelte: ^3.24 2043 | typescript: ^4.1.2 2044 | dependencies: 2045 | dedent-js: 1.0.1 2046 | pascal-case: 3.1.2 2047 | svelte: 3.52.0 2048 | typescript: 4.8.4 2049 | dev: true 2050 | 2051 | /tar/6.1.11: 2052 | resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} 2053 | engines: {node: '>= 10'} 2054 | dependencies: 2055 | chownr: 2.0.0 2056 | fs-minipass: 2.1.0 2057 | minipass: 3.3.4 2058 | minizlib: 2.1.2 2059 | mkdirp: 1.0.4 2060 | yallist: 4.0.0 2061 | dev: true 2062 | 2063 | /text-table/0.2.0: 2064 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2065 | dev: true 2066 | 2067 | /tiny-glob/0.2.9: 2068 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2069 | dependencies: 2070 | globalyzer: 0.1.0 2071 | globrex: 0.1.2 2072 | dev: true 2073 | 2074 | /tinybench/2.3.1: 2075 | resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} 2076 | dev: true 2077 | 2078 | /tinypool/0.3.0: 2079 | resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} 2080 | engines: {node: '>=14.0.0'} 2081 | dev: true 2082 | 2083 | /tinyspy/1.0.2: 2084 | resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} 2085 | engines: {node: '>=14.0.0'} 2086 | dev: true 2087 | 2088 | /to-regex-range/5.0.1: 2089 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2090 | engines: {node: '>=8.0'} 2091 | dependencies: 2092 | is-number: 7.0.0 2093 | dev: true 2094 | 2095 | /totalist/3.0.0: 2096 | resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} 2097 | engines: {node: '>=6'} 2098 | dev: true 2099 | 2100 | /tr46/0.0.3: 2101 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2102 | dev: true 2103 | 2104 | /tslib/1.14.1: 2105 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2106 | dev: true 2107 | 2108 | /tslib/2.4.0: 2109 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 2110 | dev: true 2111 | 2112 | /tsutils/3.21.0_typescript@4.8.4: 2113 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2114 | engines: {node: '>= 6'} 2115 | peerDependencies: 2116 | 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' 2117 | dependencies: 2118 | tslib: 1.14.1 2119 | typescript: 4.8.4 2120 | dev: true 2121 | 2122 | /type-check/0.4.0: 2123 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2124 | engines: {node: '>= 0.8.0'} 2125 | dependencies: 2126 | prelude-ls: 1.2.1 2127 | dev: true 2128 | 2129 | /type-detect/4.0.8: 2130 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2131 | engines: {node: '>=4'} 2132 | dev: true 2133 | 2134 | /type-fest/0.20.2: 2135 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2136 | engines: {node: '>=10'} 2137 | dev: true 2138 | 2139 | /typescript/4.8.4: 2140 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 2141 | engines: {node: '>=4.2.0'} 2142 | hasBin: true 2143 | dev: true 2144 | 2145 | /undici/5.12.0: 2146 | resolution: {integrity: sha512-zMLamCG62PGjd9HHMpo05bSLvvwWOZgGeiWlN/vlqu3+lRo3elxktVGEyLMX+IO7c2eflLjcW74AlkhEZm15mg==} 2147 | engines: {node: '>=12.18'} 2148 | dependencies: 2149 | busboy: 1.6.0 2150 | dev: true 2151 | 2152 | /uri-js/4.4.1: 2153 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2154 | dependencies: 2155 | punycode: 2.1.1 2156 | dev: true 2157 | 2158 | /util-deprecate/1.0.2: 2159 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2160 | dev: true 2161 | 2162 | /vite/3.2.2: 2163 | resolution: {integrity: sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==} 2164 | engines: {node: ^14.18.0 || >=16.0.0} 2165 | hasBin: true 2166 | peerDependencies: 2167 | less: '*' 2168 | sass: '*' 2169 | stylus: '*' 2170 | sugarss: '*' 2171 | terser: ^5.4.0 2172 | peerDependenciesMeta: 2173 | less: 2174 | optional: true 2175 | sass: 2176 | optional: true 2177 | stylus: 2178 | optional: true 2179 | sugarss: 2180 | optional: true 2181 | terser: 2182 | optional: true 2183 | dependencies: 2184 | esbuild: 0.15.12 2185 | postcss: 8.4.18 2186 | resolve: 1.22.1 2187 | rollup: 2.79.1 2188 | optionalDependencies: 2189 | fsevents: 2.3.2 2190 | dev: true 2191 | 2192 | /vitest/0.24.4: 2193 | resolution: {integrity: sha512-4ratHSyVEJPtBLV00uhL4Wj3Pmandc9rsxUkE0q9peNOfaOgGF4lEepdkaXGRi9AGFKr1GRVtjGOJ6Fp2lCpEg==} 2194 | engines: {node: '>=v14.16.0'} 2195 | hasBin: true 2196 | peerDependencies: 2197 | '@edge-runtime/vm': '*' 2198 | '@vitest/browser': '*' 2199 | '@vitest/ui': '*' 2200 | happy-dom: '*' 2201 | jsdom: '*' 2202 | peerDependenciesMeta: 2203 | '@edge-runtime/vm': 2204 | optional: true 2205 | '@vitest/browser': 2206 | optional: true 2207 | '@vitest/ui': 2208 | optional: true 2209 | happy-dom: 2210 | optional: true 2211 | jsdom: 2212 | optional: true 2213 | dependencies: 2214 | '@types/chai': 4.3.3 2215 | '@types/chai-subset': 1.3.3 2216 | '@types/node': 18.11.8 2217 | chai: 4.3.6 2218 | debug: 4.3.4 2219 | local-pkg: 0.4.2 2220 | strip-literal: 0.4.2 2221 | tinybench: 2.3.1 2222 | tinypool: 0.3.0 2223 | tinyspy: 1.0.2 2224 | vite: 3.2.2 2225 | transitivePeerDependencies: 2226 | - less 2227 | - sass 2228 | - stylus 2229 | - sugarss 2230 | - supports-color 2231 | - terser 2232 | dev: true 2233 | 2234 | /webidl-conversions/3.0.1: 2235 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2236 | dev: true 2237 | 2238 | /whatwg-url/5.0.0: 2239 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2240 | dependencies: 2241 | tr46: 0.0.3 2242 | webidl-conversions: 3.0.1 2243 | dev: true 2244 | 2245 | /which/2.0.2: 2246 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2247 | engines: {node: '>= 8'} 2248 | hasBin: true 2249 | dependencies: 2250 | isexe: 2.0.0 2251 | dev: true 2252 | 2253 | /wide-align/1.1.5: 2254 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 2255 | dependencies: 2256 | string-width: 4.2.3 2257 | dev: true 2258 | 2259 | /word-wrap/1.2.3: 2260 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2261 | engines: {node: '>=0.10.0'} 2262 | dev: true 2263 | 2264 | /worktop/0.8.0-next.14: 2265 | resolution: {integrity: sha512-RZgqHu1w/JcUdWOE/BUEAzarrUUHh39eWkLdX8XpA6MfgLJF6X5Vl26CV7/wcm4O/UpZvHMGJUtB9eYTqDjc9g==} 2266 | engines: {node: '>=12'} 2267 | dependencies: 2268 | mrmime: 1.0.1 2269 | regexparam: 2.0.1 2270 | dev: true 2271 | 2272 | /wrappy/1.0.2: 2273 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2274 | dev: true 2275 | 2276 | /yallist/4.0.0: 2277 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2278 | dev: true 2279 | 2280 | /yocto-queue/0.1.0: 2281 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2282 | engines: {node: '>=10'} 2283 | dev: true 2284 | --------------------------------------------------------------------------------