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

Welcome to your library project

32 |

Create your package using @sveltejs/package and preview/showcase your work with SvelteKit

33 | 34 |
35 | 	List = {JSON.stringify($list)}
36 | 
37 | 	Average = {JSON.stringify($averageValue)}
38 | 	Sum = {JSON.stringify($sumValue)}
39 | 
40 | 	Compact List = {JSON.stringify($compactList)}
41 | 
42 | 	Odd Numbers = {JSON.stringify($oddNumbers)}
43 | 	Even Numbers = {JSON.stringify($evenNumbers)}
44 | 
45 | 	Descending = {JSON.stringify($descNumbers)}
46 | 
47 | 	String List = {JSON.stringify($stringList)}
48 | 
49 | 	Found = {JSON.stringify($found)}
50 | 
51 | 	Reversed List = {JSON.stringify($reversedList)}
52 | 
53 | 	Grouped = {JSON.stringify($grouped)}
54 | 
55 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/accuser/svelte-store-array/18287fb58921c2192bc2a2ceebb16b24ae3e5563/static/favicon.png -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /tests/filter.test.ts: -------------------------------------------------------------------------------- 1 | import { compact, filter } from '$lib'; 2 | import { readable, get, type Readable } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | describe('filter', () => { 11 | describe('with an array', () => { 12 | beforeEach(async (context) => { 13 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 14 | }); 15 | 16 | it('returns a store', ({ numbers }) => { 17 | const store = filter(numbers, () => true); 18 | 19 | expect(store.subscribe).toBeDefined(); 20 | }); 21 | 22 | it('filters the values', ({ numbers }) => { 23 | const value = get(filter(numbers, (value) => value % 2 !== 0)); 24 | 25 | expect(value.length).toBe(5); 26 | }); 27 | }); 28 | 29 | describe('with a store', () => { 30 | beforeEach(async (context) => { 31 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 32 | }); 33 | 34 | it('returns a store', ({ numbers }) => { 35 | const store = filter(numbers, () => true); 36 | 37 | expect(store.subscribe).toBeDefined(); 38 | }); 39 | 40 | it('filters the values', ({ numbers }) => { 41 | const value = get(filter(numbers, (value) => value % 2 !== 0)); 42 | 43 | expect(value.length).toBe(5); 44 | }); 45 | }); 46 | }); 47 | 48 | describe('compact', () => { 49 | describe('with an array', () => { 50 | beforeEach(async (context) => { 51 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 52 | }); 53 | 54 | it('returns a store', ({ numbers }) => { 55 | const store = filter(numbers, () => true); 56 | 57 | expect(store.subscribe).toBeDefined(); 58 | }); 59 | 60 | it('remove falsy values', ({ numbers }) => { 61 | const value = get(compact(numbers)); 62 | 63 | expect(value.length).toBe(9); 64 | }); 65 | }); 66 | 67 | describe('with a store', () => { 68 | beforeEach(async (context) => { 69 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 70 | }); 71 | 72 | it('returns a store', ({ numbers }) => { 73 | const store = filter(numbers, () => true); 74 | 75 | expect(store.subscribe).toBeDefined(); 76 | }); 77 | 78 | it('filters the values', ({ numbers }) => { 79 | const value = get(compact(numbers)); 80 | 81 | expect(value.length).toBe(9); 82 | }); 83 | }); 84 | }); 85 | -------------------------------------------------------------------------------- /tests/find.test.ts: -------------------------------------------------------------------------------- 1 | import { find } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | describe('find', () => { 11 | describe('with an array', () => { 12 | beforeEach(async (context) => { 13 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 14 | }); 15 | 16 | it('returns a store', ({ numbers }) => { 17 | const store = find(numbers, () => true); 18 | 19 | expect(store.subscribe).toBeDefined(); 20 | }); 21 | 22 | it('returns a found element', ({ numbers }) => { 23 | const value = get(find(numbers, (value) => value === 2)); 24 | 25 | expect(value).toBe(2); 26 | }); 27 | 28 | it('returns undefined if no found element', ({ numbers }) => { 29 | const value = get(find(numbers, (value) => value === -1)); 30 | 31 | expect(value).toBe(undefined); 32 | }); 33 | }); 34 | 35 | describe('with a store', () => { 36 | beforeEach(async (context) => { 37 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 38 | }); 39 | 40 | it('returns a store', ({ numbers }) => { 41 | const store = find(numbers, () => true); 42 | 43 | expect(store.subscribe).toBeDefined(); 44 | }); 45 | 46 | it('returns a found element', ({ numbers }) => { 47 | const value = get(find(numbers, (value) => value === 2)); 48 | 49 | expect(value).toBe(2); 50 | }); 51 | 52 | it('returns undefined if no found element', ({ numbers }) => { 53 | const value = get(find(numbers, (value) => value === -1)); 54 | 55 | expect(value).toBe(undefined); 56 | }); 57 | }); 58 | }); 59 | -------------------------------------------------------------------------------- /tests/group.test.ts: -------------------------------------------------------------------------------- 1 | import { group } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | describe('group', () => { 11 | describe('with an array', () => { 12 | beforeEach(async (context) => { 13 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 14 | }); 15 | 16 | it('returns a store', ({ numbers }) => { 17 | const store = group(numbers, () => '_'); 18 | 19 | expect(store.subscribe).toBeDefined(); 20 | }); 21 | 22 | it('groups the elements', ({ numbers }) => { 23 | const value = get(group(numbers, (value) => (value % 2 ? 'odd' : 'even'))); 24 | 25 | expect(value['even']).toEqual([0, 2, 4, 6, 8]); 26 | expect(value['odd']).toEqual([1, 3, 5, 7, 9]); 27 | }); 28 | }); 29 | 30 | describe('with a store', () => { 31 | beforeEach(async (context) => { 32 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 33 | }); 34 | 35 | it('returns a store', ({ numbers }) => { 36 | const store = group(numbers, () => '_'); 37 | 38 | expect(store.subscribe).toBeDefined(); 39 | }); 40 | 41 | it('groups the elements', ({ numbers }) => { 42 | const value = get(group(numbers, (value) => (value % 2 ? 'odd' : 'even'))); 43 | 44 | expect(value['even']).toEqual([0, 2, 4, 6, 8]); 45 | expect(value['odd']).toEqual([1, 3, 5, 7, 9]); 46 | }); 47 | }); 48 | }); 49 | -------------------------------------------------------------------------------- /tests/map.test.ts: -------------------------------------------------------------------------------- 1 | import { map } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | 11 | describe('map', () => { 12 | describe('with an array', () => { 13 | beforeEach(async (context) => { 14 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 15 | }); 16 | 17 | it('returns a store', ({ numbers }) => { 18 | const store = map(numbers, (value) => value); 19 | 20 | expect(store.subscribe).toBeDefined(); 21 | }); 22 | 23 | it('maps the elements', ({ numbers }) => { 24 | const value = get(map(numbers, (value) => value.toString())); 25 | 26 | expect(value.length).toBe(10); 27 | expect(value).toEqual(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']); 28 | }); 29 | }); 30 | 31 | describe('with a store', () => { 32 | beforeEach(async (context) => { 33 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 34 | }); 35 | 36 | it('returns a store', ({ numbers }) => { 37 | const store = map(numbers, (value) => value); 38 | 39 | expect(store.subscribe).toBeDefined(); 40 | }); 41 | 42 | it('maps the elements', ({ numbers }) => { 43 | const value = get(map(numbers, (value) => value.toString())); 44 | 45 | expect(value.length).toBe(10); 46 | expect(value).toEqual(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']); 47 | }); 48 | }); 49 | }); 50 | -------------------------------------------------------------------------------- /tests/reduce.test.ts: -------------------------------------------------------------------------------- 1 | import { reduce } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | 11 | describe('reduce', () => { 12 | describe('with an array', () => { 13 | beforeEach(async (context) => { 14 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 15 | }); 16 | 17 | it('returns a store', ({ numbers }) => { 18 | const store = reduce(numbers, (prev, curr) => prev + curr, 0); 19 | 20 | expect(store.subscribe).toBeDefined(); 21 | }); 22 | 23 | it('reduces the elements', ({ numbers }) => { 24 | const value = get(reduce(numbers, (prev, curr) => prev + curr, 0)); 25 | 26 | expect(value).toBe(45); 27 | }); 28 | }); 29 | 30 | describe('with a store', () => { 31 | beforeEach(async (context) => { 32 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 33 | }); 34 | 35 | it('returns a store', ({ numbers }) => { 36 | const store = reduce(numbers, (prev, curr) => prev + curr, 0); 37 | 38 | expect(store.subscribe).toBeDefined(); 39 | }); 40 | 41 | it('reduces the elements', ({ numbers }) => { 42 | const value = get(reduce(numbers, (prev, curr) => prev + curr, 0)); 43 | 44 | expect(value).toBe(45); 45 | }); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tests/reverse.test.ts: -------------------------------------------------------------------------------- 1 | import { reverse } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | 11 | describe('reverse', () => { 12 | describe('with an array', () => { 13 | beforeEach(async (context) => { 14 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 15 | }); 16 | 17 | it('returns a store', ({ numbers }) => { 18 | const store = reverse(numbers); 19 | 20 | expect(store.subscribe).toBeDefined(); 21 | }); 22 | 23 | it('reverses the elements', ({ numbers }) => { 24 | const value = get(reverse(numbers)); 25 | 26 | expect(value).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); 27 | }); 28 | }); 29 | 30 | describe('with a store', () => { 31 | beforeEach(async (context) => { 32 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 33 | }); 34 | 35 | it('returns a store', ({ numbers }) => { 36 | const store = reverse(numbers); 37 | 38 | expect(store.subscribe).toBeDefined(); 39 | }); 40 | 41 | it('reverses the elements', ({ numbers }) => { 42 | const value = get(reverse(numbers)); 43 | 44 | expect(value).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); 45 | }); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tests/sort.test.ts: -------------------------------------------------------------------------------- 1 | import { sort } from '$lib'; 2 | import { type Readable, readable, get } from 'svelte/store'; 3 | import { beforeEach, describe, expect, it } from 'vitest'; 4 | 5 | declare module 'vitest' { 6 | export interface TestContext { 7 | numbers: number[] | Readable; 8 | } 9 | } 10 | 11 | describe('sort', () => { 12 | describe('sort', () => { 13 | beforeEach(async (context) => { 14 | context.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 15 | }); 16 | 17 | it('returns a store', ({ numbers }) => { 18 | const store = sort(numbers, () => 0); 19 | 20 | expect(store.subscribe).toBeDefined(); 21 | }); 22 | 23 | it('sorts the elements', ({ numbers }) => { 24 | const value = get(sort(numbers, (a, b) => b - a)); 25 | 26 | expect(value).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); 27 | }); 28 | }); 29 | 30 | describe('with a store', () => { 31 | beforeEach(async (context) => { 32 | context.numbers = readable([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); 33 | }); 34 | 35 | it('returns a store', ({ numbers }) => { 36 | const store = sort(numbers, () => 0); 37 | 38 | expect(store.subscribe).toBeDefined(); 39 | }); 40 | 41 | it('sorts the elements', ({ numbers }) => { 42 | const value = get(sort(numbers, (a, b) => b - a)); 43 | 44 | expect(value).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); 45 | }); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "moduleResolution": "NodeNext", 9 | "resolveJsonModule": true, 10 | "skipLibCheck": true, 11 | "sourceMap": true, 12 | "strict": true 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import type { UserConfig } from 'vite'; 3 | 4 | const config: UserConfig = { 5 | plugins: [sveltekit()] 6 | }; 7 | 8 | export default config; 9 | --------------------------------------------------------------------------------