├── .gitignore ├── LICENSE ├── README.md ├── index.d.ts ├── index.js ├── package-lock.json ├── package.json └── prettierrc.json /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .DS_Store/ 3 | /.DS_Store 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 [these people](https://github.com/sveltejs/kit/graphs/contributors) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sveltekit-adapter-chrome-extension 2 | 3 | [Adapter](https://kit.svelte.dev/docs#adapters) for SvelteKit apps that prerenders your site as a collection of static files and removes inline scripts to comply with content source policies of Chrome extensions using manifest v3. 4 | 5 | > Based on [@sveltekit/adapter-static](https://github.com/sveltejs/kit/blob/master/packages/adapter-static). Credit goes to [these people](https://github.com/sveltejs/kit/graphs/contributors) for their hard work to make Svelte so great 6 | 7 | > 🚧 If you are using SvelteKit v1.0.0+, make sure to set your `prerender=true` for every page reference by your extension so SvelteKit generates the HTML files. (c.f. Issue #27) 8 | 9 | ## Usage 10 | 11 | Install with `npm i -D sveltekit-adapter-chrome-extension`, then add the adapter to your `svelte.config.js`: 12 | 13 | ```js 14 | // svelte.config.js 15 | import adapter from "sveltekit-adapter-chrome-extension"; 16 | 17 | export default { 18 | kit: { 19 | adapter: adapter({ 20 | // default options are shown 21 | pages: "build", 22 | assets: "build", 23 | fallback: null, 24 | precompress: false, 25 | manifest: "manifest.json", 26 | }), 27 | appDir: "app", 28 | }, 29 | }; 30 | ``` 31 | 32 | ## Options 33 | 34 | ### pages 35 | 36 | The directory to write prerendered pages to. It defaults to `build`. 37 | 38 | ### assets 39 | 40 | The directory to write static assets (the contents of `static`, plus client-side JS and CSS generated by SvelteKit) to. Ordinarily this should be the same as `pages`, and it will default to whatever the value of `pages` is, but in rare circumstances you might need to output pages and assets to separate locations. 41 | 42 | ### fallback 43 | 44 | Specify a fallback page for SPA mode, e.g. `index.html` or `200.html` or `404.html`. 45 | 46 | ### precompress 47 | 48 | If `true`, precompresses files with brotli and gzip. This will generate `.br` and `.gz` files. 49 | 50 | ### manifest 51 | 52 | Specify manifest file name if you want different manifests for different target platforms, e.g. `chrome_manifest.json`, `firefox_manifest.json`. 53 | This file name must match one that is present in the `static` directory (the dir containing your static files). The selected target file will be renamed to `manifest.json` in the build directory, and all other `.json` files with `manifest` in the name won't be copied. 54 | 55 | ## License 56 | 57 | [MIT](LICENSE) 58 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import { Adapter } from '@sveltejs/kit'; 2 | 3 | interface AdapterOptions { 4 | pages?: string; 5 | assets?: string; 6 | fallback?: string; 7 | precompress?: boolean; 8 | manifest?: string; 9 | emptyOutDir?: boolean; 10 | } 11 | 12 | declare function plugin(options?: AdapterOptions): Adapter; 13 | export = plugin; 14 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import staticAdapter from "@sveltejs/adapter-static"; 2 | import { load } from "cheerio"; 3 | import { 4 | createReadStream, 5 | createWriteStream, 6 | existsSync, 7 | readFileSync, 8 | statSync, 9 | unlinkSync, 10 | writeFileSync, 11 | } from "fs"; 12 | import { dirname, join } from "path"; 13 | import { pipeline } from "stream"; 14 | import glob from "tiny-glob"; 15 | import { promisify } from "util"; 16 | import zlib from "zlib"; 17 | 18 | const pipe = promisify(pipeline); 19 | 20 | /** @type {import('.')} */ 21 | export default function(options) { 22 | return { 23 | name: "sveltekit-adapter-chrome-extension", 24 | 25 | async adapt(builder) { 26 | staticAdapter(options).adapt(builder); 27 | 28 | /* extension */ 29 | const pages = options?.pages ?? "build"; 30 | const assets = options?.assets ?? pages; 31 | const manifest = options?.manifest ?? "manifest.json"; 32 | 33 | await removeInlineScripts(assets, builder.log); 34 | 35 | await removeAppManifest(assets, builder.config.kit.appDir, builder.log); 36 | await removeAppManifest(".", assets, builder.log); 37 | 38 | // operation required since generated app manifest will overwrite the static extension manifest.json 39 | reWriteExtensionManifest(assets, manifest, builder); 40 | }, 41 | }; 42 | } 43 | 44 | /** 45 | * Hash using djb2 46 | * @param {import('types/hooks').StrictBody} value 47 | */ 48 | function hash(value) { 49 | let hash = 5381; 50 | let i = value.length; 51 | 52 | if (typeof value === "string") { 53 | while (i) hash = (hash * 33) ^ value.charCodeAt(--i); 54 | } else { 55 | while (i) hash = (hash * 33) ^ value[--i]; 56 | } 57 | 58 | return (hash >>> 0).toString(36); 59 | } 60 | 61 | async function removeAppManifest(directory, appDir, log) { 62 | log("Removing App Manifest"); 63 | const files = await glob(`**/${appDir}/*manifest*.json`, { 64 | cwd: directory, 65 | dot: true, 66 | absolute: true, 67 | filesOnly: true, 68 | }); 69 | 70 | files.forEach((path) => { 71 | try { 72 | unlinkSync(path); 73 | log.success(`Removed app manifest file at path: ${path}`); 74 | } catch (err) { 75 | log.warn( 76 | `Error removing app manifest file at path: ${path}. You may have to delete it manually before submitting you extension.\nError: ${err}` 77 | ); 78 | } 79 | }); 80 | } 81 | 82 | async function removeInlineScripts(directory, log) { 83 | log("Removing Inline Scripts"); 84 | const files = await glob("**/*.{html}", { 85 | cwd: directory, 86 | dot: true, 87 | aboslute: true, 88 | filesOnly: true, 89 | }); 90 | 91 | files 92 | .map((f) => join(directory, f)) 93 | .forEach((file) => { 94 | log.minor(`file: ${file}`); 95 | const f = readFileSync(file); 96 | const $ = load(f.toString()); 97 | const node = $("script").get()[0]; 98 | 99 | if (!node) return; 100 | if (Object.keys(node.attribs).includes("src")) return; // if there is a src, it's not an inline script 101 | 102 | const attribs = Object.keys(node.attribs).reduce( 103 | (a, c) => a + `${c}="${node.attribs[c]}" `, 104 | "" 105 | ); 106 | const innerScript = node.children[0].data; 107 | const fullTag = $("script").toString(); 108 | //get new filename 109 | const hashedName = `script-${hash(innerScript)}.js`; 110 | //remove from orig html file and replace with new script tag 111 | const newHtml = f 112 | .toString() 113 | .replace(fullTag, ``); 114 | writeFileSync(file, newHtml); 115 | log.minor(`Rewrote ${file}`); 116 | 117 | const p = `${dirname(file)}/${hashedName}`; 118 | writeFileSync(p, innerScript); 119 | log.success(`Inline script extracted and saved at: ${p}`); 120 | }); 121 | } 122 | 123 | function reWriteExtensionManifest(directory, manifest, builder) { 124 | const { log, getStaticDirectory, getClientDirectory, copy } = builder; 125 | log("Re-writing extension manifest"); 126 | let sourceFilePath; 127 | if (typeof getStaticDirectory !== "undefined") { 128 | sourceFilePath = join(getStaticDirectory(), manifest); 129 | } else { 130 | sourceFilePath = join(getClientDirectory(), manifest); 131 | } 132 | if (existsSync(sourceFilePath)) { 133 | log.info("Extension manifest found"); 134 | const res = copy(sourceFilePath, join(directory, "manifest.json")); 135 | log.success("Successfully re-wrote extension manifest"); 136 | } else { 137 | log.error( 138 | `Extension manifest not found. Make sure you've added your extension manifest in your statics directory with the name ${manifest}` 139 | ); 140 | } 141 | } 142 | 143 | /** 144 | * @param {string} directory 145 | */ 146 | async function compress(directory) { 147 | const files = await glob("**/*.{html,js,json,css,svg,xml}", { 148 | cwd: directory, 149 | dot: true, 150 | absolute: true, 151 | filesOnly: true, 152 | }); 153 | 154 | await Promise.all( 155 | files.map((file) => 156 | Promise.all([compress_file(file, "gz"), compress_file(file, "br")]) 157 | ) 158 | ); 159 | } 160 | 161 | /** 162 | * @param {string} file 163 | * @param {'gz' | 'br'} format 164 | */ 165 | async function compress_file(file, format = "gz") { 166 | const compress = 167 | format == "br" 168 | ? zlib.createBrotliCompress({ 169 | params: { 170 | [zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT, 171 | [zlib.constants.BROTLI_PARAM_QUALITY]: 172 | zlib.constants.BROTLI_MAX_QUALITY, 173 | [zlib.constants.BROTLI_PARAM_SIZE_HINT]: statSync(file).size, 174 | }, 175 | }) 176 | : zlib.createGzip({ level: zlib.constants.Z_BEST_COMPRESSION }); 177 | 178 | const source = createReadStream(file); 179 | const destination = createWriteStream(`${file}.${format}`); 180 | 181 | await pipe(source, compress, destination); 182 | } 183 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-adapter-chrome-extension", 3 | "version": "2.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "sveltekit-adapter-chrome-extension", 9 | "version": "1.5.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "cheerio": "^1.0.0-rc.10", 13 | "tiny-glob": "^0.2.9" 14 | }, 15 | "peerDependencies": { 16 | "@sveltejs/adapter-static": "^2.0.1" 17 | } 18 | }, 19 | "node_modules/@esbuild/android-arm": { 20 | "version": "0.16.17", 21 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 22 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 23 | "cpu": [ 24 | "arm" 25 | ], 26 | "optional": true, 27 | "os": [ 28 | "android" 29 | ], 30 | "peer": true, 31 | "engines": { 32 | "node": ">=12" 33 | } 34 | }, 35 | "node_modules/@esbuild/android-arm64": { 36 | "version": "0.16.17", 37 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 38 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 39 | "cpu": [ 40 | "arm64" 41 | ], 42 | "optional": true, 43 | "os": [ 44 | "android" 45 | ], 46 | "peer": true, 47 | "engines": { 48 | "node": ">=12" 49 | } 50 | }, 51 | "node_modules/@esbuild/android-x64": { 52 | "version": "0.16.17", 53 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 54 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 55 | "cpu": [ 56 | "x64" 57 | ], 58 | "optional": true, 59 | "os": [ 60 | "android" 61 | ], 62 | "peer": true, 63 | "engines": { 64 | "node": ">=12" 65 | } 66 | }, 67 | "node_modules/@esbuild/darwin-arm64": { 68 | "version": "0.16.17", 69 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 70 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 71 | "cpu": [ 72 | "arm64" 73 | ], 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "peer": true, 79 | "engines": { 80 | "node": ">=12" 81 | } 82 | }, 83 | "node_modules/@esbuild/darwin-x64": { 84 | "version": "0.16.17", 85 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 86 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 87 | "cpu": [ 88 | "x64" 89 | ], 90 | "optional": true, 91 | "os": [ 92 | "darwin" 93 | ], 94 | "peer": true, 95 | "engines": { 96 | "node": ">=12" 97 | } 98 | }, 99 | "node_modules/@esbuild/freebsd-arm64": { 100 | "version": "0.16.17", 101 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 102 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 103 | "cpu": [ 104 | "arm64" 105 | ], 106 | "optional": true, 107 | "os": [ 108 | "freebsd" 109 | ], 110 | "peer": true, 111 | "engines": { 112 | "node": ">=12" 113 | } 114 | }, 115 | "node_modules/@esbuild/freebsd-x64": { 116 | "version": "0.16.17", 117 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 118 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 119 | "cpu": [ 120 | "x64" 121 | ], 122 | "optional": true, 123 | "os": [ 124 | "freebsd" 125 | ], 126 | "peer": true, 127 | "engines": { 128 | "node": ">=12" 129 | } 130 | }, 131 | "node_modules/@esbuild/linux-arm": { 132 | "version": "0.16.17", 133 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 134 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 135 | "cpu": [ 136 | "arm" 137 | ], 138 | "optional": true, 139 | "os": [ 140 | "linux" 141 | ], 142 | "peer": true, 143 | "engines": { 144 | "node": ">=12" 145 | } 146 | }, 147 | "node_modules/@esbuild/linux-arm64": { 148 | "version": "0.16.17", 149 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 150 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 151 | "cpu": [ 152 | "arm64" 153 | ], 154 | "optional": true, 155 | "os": [ 156 | "linux" 157 | ], 158 | "peer": true, 159 | "engines": { 160 | "node": ">=12" 161 | } 162 | }, 163 | "node_modules/@esbuild/linux-ia32": { 164 | "version": "0.16.17", 165 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 166 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 167 | "cpu": [ 168 | "ia32" 169 | ], 170 | "optional": true, 171 | "os": [ 172 | "linux" 173 | ], 174 | "peer": true, 175 | "engines": { 176 | "node": ">=12" 177 | } 178 | }, 179 | "node_modules/@esbuild/linux-loong64": { 180 | "version": "0.16.17", 181 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 182 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 183 | "cpu": [ 184 | "loong64" 185 | ], 186 | "optional": true, 187 | "os": [ 188 | "linux" 189 | ], 190 | "peer": true, 191 | "engines": { 192 | "node": ">=12" 193 | } 194 | }, 195 | "node_modules/@esbuild/linux-mips64el": { 196 | "version": "0.16.17", 197 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 198 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 199 | "cpu": [ 200 | "mips64el" 201 | ], 202 | "optional": true, 203 | "os": [ 204 | "linux" 205 | ], 206 | "peer": true, 207 | "engines": { 208 | "node": ">=12" 209 | } 210 | }, 211 | "node_modules/@esbuild/linux-ppc64": { 212 | "version": "0.16.17", 213 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 214 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 215 | "cpu": [ 216 | "ppc64" 217 | ], 218 | "optional": true, 219 | "os": [ 220 | "linux" 221 | ], 222 | "peer": true, 223 | "engines": { 224 | "node": ">=12" 225 | } 226 | }, 227 | "node_modules/@esbuild/linux-riscv64": { 228 | "version": "0.16.17", 229 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 230 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 231 | "cpu": [ 232 | "riscv64" 233 | ], 234 | "optional": true, 235 | "os": [ 236 | "linux" 237 | ], 238 | "peer": true, 239 | "engines": { 240 | "node": ">=12" 241 | } 242 | }, 243 | "node_modules/@esbuild/linux-s390x": { 244 | "version": "0.16.17", 245 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 246 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 247 | "cpu": [ 248 | "s390x" 249 | ], 250 | "optional": true, 251 | "os": [ 252 | "linux" 253 | ], 254 | "peer": true, 255 | "engines": { 256 | "node": ">=12" 257 | } 258 | }, 259 | "node_modules/@esbuild/linux-x64": { 260 | "version": "0.16.17", 261 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 262 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 263 | "cpu": [ 264 | "x64" 265 | ], 266 | "optional": true, 267 | "os": [ 268 | "linux" 269 | ], 270 | "peer": true, 271 | "engines": { 272 | "node": ">=12" 273 | } 274 | }, 275 | "node_modules/@esbuild/netbsd-x64": { 276 | "version": "0.16.17", 277 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 278 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 279 | "cpu": [ 280 | "x64" 281 | ], 282 | "optional": true, 283 | "os": [ 284 | "netbsd" 285 | ], 286 | "peer": true, 287 | "engines": { 288 | "node": ">=12" 289 | } 290 | }, 291 | "node_modules/@esbuild/openbsd-x64": { 292 | "version": "0.16.17", 293 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 294 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 295 | "cpu": [ 296 | "x64" 297 | ], 298 | "optional": true, 299 | "os": [ 300 | "openbsd" 301 | ], 302 | "peer": true, 303 | "engines": { 304 | "node": ">=12" 305 | } 306 | }, 307 | "node_modules/@esbuild/sunos-x64": { 308 | "version": "0.16.17", 309 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 310 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 311 | "cpu": [ 312 | "x64" 313 | ], 314 | "optional": true, 315 | "os": [ 316 | "sunos" 317 | ], 318 | "peer": true, 319 | "engines": { 320 | "node": ">=12" 321 | } 322 | }, 323 | "node_modules/@esbuild/win32-arm64": { 324 | "version": "0.16.17", 325 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 326 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 327 | "cpu": [ 328 | "arm64" 329 | ], 330 | "optional": true, 331 | "os": [ 332 | "win32" 333 | ], 334 | "peer": true, 335 | "engines": { 336 | "node": ">=12" 337 | } 338 | }, 339 | "node_modules/@esbuild/win32-ia32": { 340 | "version": "0.16.17", 341 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 342 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 343 | "cpu": [ 344 | "ia32" 345 | ], 346 | "optional": true, 347 | "os": [ 348 | "win32" 349 | ], 350 | "peer": true, 351 | "engines": { 352 | "node": ">=12" 353 | } 354 | }, 355 | "node_modules/@esbuild/win32-x64": { 356 | "version": "0.16.17", 357 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 358 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 359 | "cpu": [ 360 | "x64" 361 | ], 362 | "optional": true, 363 | "os": [ 364 | "win32" 365 | ], 366 | "peer": true, 367 | "engines": { 368 | "node": ">=12" 369 | } 370 | }, 371 | "node_modules/@jridgewell/sourcemap-codec": { 372 | "version": "1.4.14", 373 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 374 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 375 | "peer": true 376 | }, 377 | "node_modules/@polka/url": { 378 | "version": "1.0.0-next.21", 379 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 380 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", 381 | "peer": true 382 | }, 383 | "node_modules/@sveltejs/adapter-static": { 384 | "version": "2.0.1", 385 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz", 386 | "integrity": "sha512-o5/q3YwD/ErxYCFlK1v3ydvldyNKk1lh3oeyxn4mhz+Pkbx/uuxhzmbOpytTlp5aVqNHDVsb04xadUzOFCDDzw==", 387 | "peer": true, 388 | "peerDependencies": { 389 | "@sveltejs/kit": "^1.5.0" 390 | } 391 | }, 392 | "node_modules/@sveltejs/kit": { 393 | "version": "1.5.6", 394 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.5.6.tgz", 395 | "integrity": "sha512-CHVeQpbcwSIUekF6WwevmExKXyfHnzM5nlCEUv13lGgfJ0zKA0ny5YwIe40vccrm5w5Caec7jMTt9Ih3McJr5g==", 396 | "hasInstallScript": true, 397 | "peer": true, 398 | "dependencies": { 399 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 400 | "@types/cookie": "^0.5.1", 401 | "cookie": "^0.5.0", 402 | "devalue": "^4.2.3", 403 | "esm-env": "^1.0.0", 404 | "kleur": "^4.1.5", 405 | "magic-string": "^0.27.0", 406 | "mime": "^3.0.0", 407 | "sade": "^1.8.1", 408 | "set-cookie-parser": "^2.5.1", 409 | "sirv": "^2.0.2", 410 | "tiny-glob": "^0.2.9", 411 | "undici": "5.18.0" 412 | }, 413 | "bin": { 414 | "svelte-kit": "svelte-kit.js" 415 | }, 416 | "engines": { 417 | "node": "^16.14 || >=18" 418 | }, 419 | "peerDependencies": { 420 | "svelte": "^3.54.0", 421 | "vite": "^4.0.0" 422 | } 423 | }, 424 | "node_modules/@sveltejs/vite-plugin-svelte": { 425 | "version": "2.0.2", 426 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", 427 | "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", 428 | "peer": true, 429 | "dependencies": { 430 | "debug": "^4.3.4", 431 | "deepmerge": "^4.2.2", 432 | "kleur": "^4.1.5", 433 | "magic-string": "^0.27.0", 434 | "svelte-hmr": "^0.15.1", 435 | "vitefu": "^0.2.3" 436 | }, 437 | "engines": { 438 | "node": "^14.18.0 || >= 16" 439 | }, 440 | "peerDependencies": { 441 | "svelte": "^3.54.0", 442 | "vite": "^4.0.0" 443 | } 444 | }, 445 | "node_modules/@types/cookie": { 446 | "version": "0.5.1", 447 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", 448 | "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", 449 | "peer": true 450 | }, 451 | "node_modules/boolbase": { 452 | "version": "1.0.0", 453 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 454 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 455 | }, 456 | "node_modules/busboy": { 457 | "version": "1.6.0", 458 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 459 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 460 | "peer": true, 461 | "dependencies": { 462 | "streamsearch": "^1.1.0" 463 | }, 464 | "engines": { 465 | "node": ">=10.16.0" 466 | } 467 | }, 468 | "node_modules/cheerio": { 469 | "version": "1.0.0-rc.10", 470 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", 471 | "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", 472 | "dependencies": { 473 | "cheerio-select": "^1.5.0", 474 | "dom-serializer": "^1.3.2", 475 | "domhandler": "^4.2.0", 476 | "htmlparser2": "^6.1.0", 477 | "parse5": "^6.0.1", 478 | "parse5-htmlparser2-tree-adapter": "^6.0.1", 479 | "tslib": "^2.2.0" 480 | }, 481 | "engines": { 482 | "node": ">= 6" 483 | }, 484 | "funding": { 485 | "url": "https://github.com/cheeriojs/cheerio?sponsor=1" 486 | } 487 | }, 488 | "node_modules/cheerio-select": { 489 | "version": "1.5.0", 490 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", 491 | "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", 492 | "dependencies": { 493 | "css-select": "^4.1.3", 494 | "css-what": "^5.0.1", 495 | "domelementtype": "^2.2.0", 496 | "domhandler": "^4.2.0", 497 | "domutils": "^2.7.0" 498 | }, 499 | "funding": { 500 | "url": "https://github.com/sponsors/fb55" 501 | } 502 | }, 503 | "node_modules/cookie": { 504 | "version": "0.5.0", 505 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 506 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 507 | "peer": true, 508 | "engines": { 509 | "node": ">= 0.6" 510 | } 511 | }, 512 | "node_modules/css-select": { 513 | "version": "4.2.1", 514 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", 515 | "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", 516 | "dependencies": { 517 | "boolbase": "^1.0.0", 518 | "css-what": "^5.1.0", 519 | "domhandler": "^4.3.0", 520 | "domutils": "^2.8.0", 521 | "nth-check": "^2.0.1" 522 | }, 523 | "funding": { 524 | "url": "https://github.com/sponsors/fb55" 525 | } 526 | }, 527 | "node_modules/css-what": { 528 | "version": "5.1.0", 529 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", 530 | "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", 531 | "engines": { 532 | "node": ">= 6" 533 | }, 534 | "funding": { 535 | "url": "https://github.com/sponsors/fb55" 536 | } 537 | }, 538 | "node_modules/debug": { 539 | "version": "4.3.4", 540 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 541 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 542 | "peer": true, 543 | "dependencies": { 544 | "ms": "2.1.2" 545 | }, 546 | "engines": { 547 | "node": ">=6.0" 548 | }, 549 | "peerDependenciesMeta": { 550 | "supports-color": { 551 | "optional": true 552 | } 553 | } 554 | }, 555 | "node_modules/deepmerge": { 556 | "version": "4.3.0", 557 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 558 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 559 | "peer": true, 560 | "engines": { 561 | "node": ">=0.10.0" 562 | } 563 | }, 564 | "node_modules/devalue": { 565 | "version": "4.3.0", 566 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", 567 | "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", 568 | "peer": true 569 | }, 570 | "node_modules/dom-serializer": { 571 | "version": "1.3.2", 572 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", 573 | "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", 574 | "dependencies": { 575 | "domelementtype": "^2.0.1", 576 | "domhandler": "^4.2.0", 577 | "entities": "^2.0.0" 578 | }, 579 | "funding": { 580 | "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" 581 | } 582 | }, 583 | "node_modules/domelementtype": { 584 | "version": "2.2.0", 585 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", 586 | "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", 587 | "funding": [ 588 | { 589 | "type": "github", 590 | "url": "https://github.com/sponsors/fb55" 591 | } 592 | ] 593 | }, 594 | "node_modules/domhandler": { 595 | "version": "4.3.0", 596 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", 597 | "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", 598 | "dependencies": { 599 | "domelementtype": "^2.2.0" 600 | }, 601 | "engines": { 602 | "node": ">= 4" 603 | }, 604 | "funding": { 605 | "url": "https://github.com/fb55/domhandler?sponsor=1" 606 | } 607 | }, 608 | "node_modules/domutils": { 609 | "version": "2.8.0", 610 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 611 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 612 | "dependencies": { 613 | "dom-serializer": "^1.0.1", 614 | "domelementtype": "^2.2.0", 615 | "domhandler": "^4.2.0" 616 | }, 617 | "funding": { 618 | "url": "https://github.com/fb55/domutils?sponsor=1" 619 | } 620 | }, 621 | "node_modules/entities": { 622 | "version": "2.2.0", 623 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 624 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 625 | "funding": { 626 | "url": "https://github.com/fb55/entities?sponsor=1" 627 | } 628 | }, 629 | "node_modules/esbuild": { 630 | "version": "0.16.17", 631 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 632 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 633 | "hasInstallScript": true, 634 | "peer": true, 635 | "bin": { 636 | "esbuild": "bin/esbuild" 637 | }, 638 | "engines": { 639 | "node": ">=12" 640 | }, 641 | "optionalDependencies": { 642 | "@esbuild/android-arm": "0.16.17", 643 | "@esbuild/android-arm64": "0.16.17", 644 | "@esbuild/android-x64": "0.16.17", 645 | "@esbuild/darwin-arm64": "0.16.17", 646 | "@esbuild/darwin-x64": "0.16.17", 647 | "@esbuild/freebsd-arm64": "0.16.17", 648 | "@esbuild/freebsd-x64": "0.16.17", 649 | "@esbuild/linux-arm": "0.16.17", 650 | "@esbuild/linux-arm64": "0.16.17", 651 | "@esbuild/linux-ia32": "0.16.17", 652 | "@esbuild/linux-loong64": "0.16.17", 653 | "@esbuild/linux-mips64el": "0.16.17", 654 | "@esbuild/linux-ppc64": "0.16.17", 655 | "@esbuild/linux-riscv64": "0.16.17", 656 | "@esbuild/linux-s390x": "0.16.17", 657 | "@esbuild/linux-x64": "0.16.17", 658 | "@esbuild/netbsd-x64": "0.16.17", 659 | "@esbuild/openbsd-x64": "0.16.17", 660 | "@esbuild/sunos-x64": "0.16.17", 661 | "@esbuild/win32-arm64": "0.16.17", 662 | "@esbuild/win32-ia32": "0.16.17", 663 | "@esbuild/win32-x64": "0.16.17" 664 | } 665 | }, 666 | "node_modules/esm-env": { 667 | "version": "1.0.0", 668 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 669 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 670 | "peer": true 671 | }, 672 | "node_modules/fsevents": { 673 | "version": "2.3.2", 674 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 675 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 676 | "hasInstallScript": true, 677 | "optional": true, 678 | "os": [ 679 | "darwin" 680 | ], 681 | "peer": true, 682 | "engines": { 683 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 684 | } 685 | }, 686 | "node_modules/function-bind": { 687 | "version": "1.1.1", 688 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 689 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 690 | "peer": true 691 | }, 692 | "node_modules/globalyzer": { 693 | "version": "0.1.0", 694 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 695 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" 696 | }, 697 | "node_modules/globrex": { 698 | "version": "0.1.2", 699 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 700 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" 701 | }, 702 | "node_modules/has": { 703 | "version": "1.0.3", 704 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 705 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 706 | "peer": true, 707 | "dependencies": { 708 | "function-bind": "^1.1.1" 709 | }, 710 | "engines": { 711 | "node": ">= 0.4.0" 712 | } 713 | }, 714 | "node_modules/htmlparser2": { 715 | "version": "6.1.0", 716 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", 717 | "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", 718 | "funding": [ 719 | "https://github.com/fb55/htmlparser2?sponsor=1", 720 | { 721 | "type": "github", 722 | "url": "https://github.com/sponsors/fb55" 723 | } 724 | ], 725 | "dependencies": { 726 | "domelementtype": "^2.0.1", 727 | "domhandler": "^4.0.0", 728 | "domutils": "^2.5.2", 729 | "entities": "^2.0.0" 730 | } 731 | }, 732 | "node_modules/is-core-module": { 733 | "version": "2.11.0", 734 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 735 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 736 | "peer": true, 737 | "dependencies": { 738 | "has": "^1.0.3" 739 | }, 740 | "funding": { 741 | "url": "https://github.com/sponsors/ljharb" 742 | } 743 | }, 744 | "node_modules/kleur": { 745 | "version": "4.1.5", 746 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 747 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 748 | "peer": true, 749 | "engines": { 750 | "node": ">=6" 751 | } 752 | }, 753 | "node_modules/magic-string": { 754 | "version": "0.27.0", 755 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 756 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 757 | "peer": true, 758 | "dependencies": { 759 | "@jridgewell/sourcemap-codec": "^1.4.13" 760 | }, 761 | "engines": { 762 | "node": ">=12" 763 | } 764 | }, 765 | "node_modules/mime": { 766 | "version": "3.0.0", 767 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 768 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 769 | "peer": true, 770 | "bin": { 771 | "mime": "cli.js" 772 | }, 773 | "engines": { 774 | "node": ">=10.0.0" 775 | } 776 | }, 777 | "node_modules/mri": { 778 | "version": "1.2.0", 779 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 780 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 781 | "peer": true, 782 | "engines": { 783 | "node": ">=4" 784 | } 785 | }, 786 | "node_modules/mrmime": { 787 | "version": "1.0.0", 788 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", 789 | "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", 790 | "peer": true, 791 | "engines": { 792 | "node": ">=10" 793 | } 794 | }, 795 | "node_modules/ms": { 796 | "version": "2.1.2", 797 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 798 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 799 | "peer": true 800 | }, 801 | "node_modules/nanoid": { 802 | "version": "3.3.4", 803 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 804 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 805 | "peer": true, 806 | "bin": { 807 | "nanoid": "bin/nanoid.cjs" 808 | }, 809 | "engines": { 810 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 811 | } 812 | }, 813 | "node_modules/nth-check": { 814 | "version": "2.0.1", 815 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", 816 | "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", 817 | "dependencies": { 818 | "boolbase": "^1.0.0" 819 | }, 820 | "funding": { 821 | "url": "https://github.com/fb55/nth-check?sponsor=1" 822 | } 823 | }, 824 | "node_modules/parse5": { 825 | "version": "6.0.1", 826 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 827 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" 828 | }, 829 | "node_modules/parse5-htmlparser2-tree-adapter": { 830 | "version": "6.0.1", 831 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 832 | "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 833 | "dependencies": { 834 | "parse5": "^6.0.1" 835 | } 836 | }, 837 | "node_modules/path-parse": { 838 | "version": "1.0.7", 839 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 840 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 841 | "peer": true 842 | }, 843 | "node_modules/picocolors": { 844 | "version": "1.0.0", 845 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 846 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 847 | "peer": true 848 | }, 849 | "node_modules/postcss": { 850 | "version": "8.4.21", 851 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 852 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 853 | "funding": [ 854 | { 855 | "type": "opencollective", 856 | "url": "https://opencollective.com/postcss/" 857 | }, 858 | { 859 | "type": "tidelift", 860 | "url": "https://tidelift.com/funding/github/npm/postcss" 861 | } 862 | ], 863 | "peer": true, 864 | "dependencies": { 865 | "nanoid": "^3.3.4", 866 | "picocolors": "^1.0.0", 867 | "source-map-js": "^1.0.2" 868 | }, 869 | "engines": { 870 | "node": "^10 || ^12 || >=14" 871 | } 872 | }, 873 | "node_modules/resolve": { 874 | "version": "1.22.1", 875 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 876 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 877 | "peer": true, 878 | "dependencies": { 879 | "is-core-module": "^2.9.0", 880 | "path-parse": "^1.0.7", 881 | "supports-preserve-symlinks-flag": "^1.0.0" 882 | }, 883 | "bin": { 884 | "resolve": "bin/resolve" 885 | }, 886 | "funding": { 887 | "url": "https://github.com/sponsors/ljharb" 888 | } 889 | }, 890 | "node_modules/rollup": { 891 | "version": "3.15.0", 892 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.15.0.tgz", 893 | "integrity": "sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==", 894 | "peer": true, 895 | "bin": { 896 | "rollup": "dist/bin/rollup" 897 | }, 898 | "engines": { 899 | "node": ">=14.18.0", 900 | "npm": ">=8.0.0" 901 | }, 902 | "optionalDependencies": { 903 | "fsevents": "~2.3.2" 904 | } 905 | }, 906 | "node_modules/sade": { 907 | "version": "1.8.1", 908 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 909 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 910 | "peer": true, 911 | "dependencies": { 912 | "mri": "^1.1.0" 913 | }, 914 | "engines": { 915 | "node": ">=6" 916 | } 917 | }, 918 | "node_modules/set-cookie-parser": { 919 | "version": "2.5.1", 920 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", 921 | "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", 922 | "peer": true 923 | }, 924 | "node_modules/sirv": { 925 | "version": "2.0.2", 926 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", 927 | "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", 928 | "peer": true, 929 | "dependencies": { 930 | "@polka/url": "^1.0.0-next.20", 931 | "mrmime": "^1.0.0", 932 | "totalist": "^3.0.0" 933 | }, 934 | "engines": { 935 | "node": ">= 10" 936 | } 937 | }, 938 | "node_modules/source-map-js": { 939 | "version": "1.0.2", 940 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 941 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 942 | "peer": true, 943 | "engines": { 944 | "node": ">=0.10.0" 945 | } 946 | }, 947 | "node_modules/streamsearch": { 948 | "version": "1.1.0", 949 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 950 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 951 | "peer": true, 952 | "engines": { 953 | "node": ">=10.0.0" 954 | } 955 | }, 956 | "node_modules/supports-preserve-symlinks-flag": { 957 | "version": "1.0.0", 958 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 959 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 960 | "peer": true, 961 | "engines": { 962 | "node": ">= 0.4" 963 | }, 964 | "funding": { 965 | "url": "https://github.com/sponsors/ljharb" 966 | } 967 | }, 968 | "node_modules/svelte": { 969 | "version": "3.55.1", 970 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", 971 | "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", 972 | "peer": true, 973 | "engines": { 974 | "node": ">= 8" 975 | } 976 | }, 977 | "node_modules/svelte-hmr": { 978 | "version": "0.15.1", 979 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 980 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 981 | "peer": true, 982 | "engines": { 983 | "node": "^12.20 || ^14.13.1 || >= 16" 984 | }, 985 | "peerDependencies": { 986 | "svelte": ">=3.19.0" 987 | } 988 | }, 989 | "node_modules/tiny-glob": { 990 | "version": "0.2.9", 991 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 992 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 993 | "dependencies": { 994 | "globalyzer": "0.1.0", 995 | "globrex": "^0.1.2" 996 | } 997 | }, 998 | "node_modules/totalist": { 999 | "version": "3.0.0", 1000 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", 1001 | "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", 1002 | "peer": true, 1003 | "engines": { 1004 | "node": ">=6" 1005 | } 1006 | }, 1007 | "node_modules/tslib": { 1008 | "version": "2.3.1", 1009 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 1010 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1011 | }, 1012 | "node_modules/undici": { 1013 | "version": "5.18.0", 1014 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz", 1015 | "integrity": "sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==", 1016 | "peer": true, 1017 | "dependencies": { 1018 | "busboy": "^1.6.0" 1019 | }, 1020 | "engines": { 1021 | "node": ">=12.18" 1022 | } 1023 | }, 1024 | "node_modules/vite": { 1025 | "version": "4.1.1", 1026 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", 1027 | "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", 1028 | "peer": true, 1029 | "dependencies": { 1030 | "esbuild": "^0.16.14", 1031 | "postcss": "^8.4.21", 1032 | "resolve": "^1.22.1", 1033 | "rollup": "^3.10.0" 1034 | }, 1035 | "bin": { 1036 | "vite": "bin/vite.js" 1037 | }, 1038 | "engines": { 1039 | "node": "^14.18.0 || >=16.0.0" 1040 | }, 1041 | "optionalDependencies": { 1042 | "fsevents": "~2.3.2" 1043 | }, 1044 | "peerDependencies": { 1045 | "@types/node": ">= 14", 1046 | "less": "*", 1047 | "sass": "*", 1048 | "stylus": "*", 1049 | "sugarss": "*", 1050 | "terser": "^5.4.0" 1051 | }, 1052 | "peerDependenciesMeta": { 1053 | "@types/node": { 1054 | "optional": true 1055 | }, 1056 | "less": { 1057 | "optional": true 1058 | }, 1059 | "sass": { 1060 | "optional": true 1061 | }, 1062 | "stylus": { 1063 | "optional": true 1064 | }, 1065 | "sugarss": { 1066 | "optional": true 1067 | }, 1068 | "terser": { 1069 | "optional": true 1070 | } 1071 | } 1072 | }, 1073 | "node_modules/vitefu": { 1074 | "version": "0.2.4", 1075 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 1076 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 1077 | "peer": true, 1078 | "peerDependencies": { 1079 | "vite": "^3.0.0 || ^4.0.0" 1080 | }, 1081 | "peerDependenciesMeta": { 1082 | "vite": { 1083 | "optional": true 1084 | } 1085 | } 1086 | } 1087 | }, 1088 | "dependencies": { 1089 | "@esbuild/android-arm": { 1090 | "version": "0.16.17", 1091 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 1092 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 1093 | "optional": true, 1094 | "peer": true 1095 | }, 1096 | "@esbuild/android-arm64": { 1097 | "version": "0.16.17", 1098 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 1099 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 1100 | "optional": true, 1101 | "peer": true 1102 | }, 1103 | "@esbuild/android-x64": { 1104 | "version": "0.16.17", 1105 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 1106 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 1107 | "optional": true, 1108 | "peer": true 1109 | }, 1110 | "@esbuild/darwin-arm64": { 1111 | "version": "0.16.17", 1112 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 1113 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 1114 | "optional": true, 1115 | "peer": true 1116 | }, 1117 | "@esbuild/darwin-x64": { 1118 | "version": "0.16.17", 1119 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 1120 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 1121 | "optional": true, 1122 | "peer": true 1123 | }, 1124 | "@esbuild/freebsd-arm64": { 1125 | "version": "0.16.17", 1126 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 1127 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 1128 | "optional": true, 1129 | "peer": true 1130 | }, 1131 | "@esbuild/freebsd-x64": { 1132 | "version": "0.16.17", 1133 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 1134 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 1135 | "optional": true, 1136 | "peer": true 1137 | }, 1138 | "@esbuild/linux-arm": { 1139 | "version": "0.16.17", 1140 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 1141 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 1142 | "optional": true, 1143 | "peer": true 1144 | }, 1145 | "@esbuild/linux-arm64": { 1146 | "version": "0.16.17", 1147 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 1148 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 1149 | "optional": true, 1150 | "peer": true 1151 | }, 1152 | "@esbuild/linux-ia32": { 1153 | "version": "0.16.17", 1154 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 1155 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 1156 | "optional": true, 1157 | "peer": true 1158 | }, 1159 | "@esbuild/linux-loong64": { 1160 | "version": "0.16.17", 1161 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 1162 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 1163 | "optional": true, 1164 | "peer": true 1165 | }, 1166 | "@esbuild/linux-mips64el": { 1167 | "version": "0.16.17", 1168 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 1169 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 1170 | "optional": true, 1171 | "peer": true 1172 | }, 1173 | "@esbuild/linux-ppc64": { 1174 | "version": "0.16.17", 1175 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 1176 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 1177 | "optional": true, 1178 | "peer": true 1179 | }, 1180 | "@esbuild/linux-riscv64": { 1181 | "version": "0.16.17", 1182 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 1183 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 1184 | "optional": true, 1185 | "peer": true 1186 | }, 1187 | "@esbuild/linux-s390x": { 1188 | "version": "0.16.17", 1189 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 1190 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 1191 | "optional": true, 1192 | "peer": true 1193 | }, 1194 | "@esbuild/linux-x64": { 1195 | "version": "0.16.17", 1196 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 1197 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 1198 | "optional": true, 1199 | "peer": true 1200 | }, 1201 | "@esbuild/netbsd-x64": { 1202 | "version": "0.16.17", 1203 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 1204 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 1205 | "optional": true, 1206 | "peer": true 1207 | }, 1208 | "@esbuild/openbsd-x64": { 1209 | "version": "0.16.17", 1210 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 1211 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 1212 | "optional": true, 1213 | "peer": true 1214 | }, 1215 | "@esbuild/sunos-x64": { 1216 | "version": "0.16.17", 1217 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 1218 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 1219 | "optional": true, 1220 | "peer": true 1221 | }, 1222 | "@esbuild/win32-arm64": { 1223 | "version": "0.16.17", 1224 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 1225 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 1226 | "optional": true, 1227 | "peer": true 1228 | }, 1229 | "@esbuild/win32-ia32": { 1230 | "version": "0.16.17", 1231 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 1232 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 1233 | "optional": true, 1234 | "peer": true 1235 | }, 1236 | "@esbuild/win32-x64": { 1237 | "version": "0.16.17", 1238 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 1239 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 1240 | "optional": true, 1241 | "peer": true 1242 | }, 1243 | "@jridgewell/sourcemap-codec": { 1244 | "version": "1.4.14", 1245 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1246 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1247 | "peer": true 1248 | }, 1249 | "@polka/url": { 1250 | "version": "1.0.0-next.21", 1251 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 1252 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", 1253 | "peer": true 1254 | }, 1255 | "@sveltejs/adapter-static": { 1256 | "version": "2.0.1", 1257 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.1.tgz", 1258 | "integrity": "sha512-o5/q3YwD/ErxYCFlK1v3ydvldyNKk1lh3oeyxn4mhz+Pkbx/uuxhzmbOpytTlp5aVqNHDVsb04xadUzOFCDDzw==", 1259 | "peer": true, 1260 | "requires": {} 1261 | }, 1262 | "@sveltejs/kit": { 1263 | "version": "1.5.6", 1264 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.5.6.tgz", 1265 | "integrity": "sha512-CHVeQpbcwSIUekF6WwevmExKXyfHnzM5nlCEUv13lGgfJ0zKA0ny5YwIe40vccrm5w5Caec7jMTt9Ih3McJr5g==", 1266 | "peer": true, 1267 | "requires": { 1268 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 1269 | "@types/cookie": "^0.5.1", 1270 | "cookie": "^0.5.0", 1271 | "devalue": "^4.2.3", 1272 | "esm-env": "^1.0.0", 1273 | "kleur": "^4.1.5", 1274 | "magic-string": "^0.27.0", 1275 | "mime": "^3.0.0", 1276 | "sade": "^1.8.1", 1277 | "set-cookie-parser": "^2.5.1", 1278 | "sirv": "^2.0.2", 1279 | "tiny-glob": "^0.2.9", 1280 | "undici": "5.18.0" 1281 | } 1282 | }, 1283 | "@sveltejs/vite-plugin-svelte": { 1284 | "version": "2.0.2", 1285 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz", 1286 | "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==", 1287 | "peer": true, 1288 | "requires": { 1289 | "debug": "^4.3.4", 1290 | "deepmerge": "^4.2.2", 1291 | "kleur": "^4.1.5", 1292 | "magic-string": "^0.27.0", 1293 | "svelte-hmr": "^0.15.1", 1294 | "vitefu": "^0.2.3" 1295 | } 1296 | }, 1297 | "@types/cookie": { 1298 | "version": "0.5.1", 1299 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", 1300 | "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", 1301 | "peer": true 1302 | }, 1303 | "boolbase": { 1304 | "version": "1.0.0", 1305 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 1306 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 1307 | }, 1308 | "busboy": { 1309 | "version": "1.6.0", 1310 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 1311 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 1312 | "peer": true, 1313 | "requires": { 1314 | "streamsearch": "^1.1.0" 1315 | } 1316 | }, 1317 | "cheerio": { 1318 | "version": "1.0.0-rc.10", 1319 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", 1320 | "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", 1321 | "requires": { 1322 | "cheerio-select": "^1.5.0", 1323 | "dom-serializer": "^1.3.2", 1324 | "domhandler": "^4.2.0", 1325 | "htmlparser2": "^6.1.0", 1326 | "parse5": "^6.0.1", 1327 | "parse5-htmlparser2-tree-adapter": "^6.0.1", 1328 | "tslib": "^2.2.0" 1329 | } 1330 | }, 1331 | "cheerio-select": { 1332 | "version": "1.5.0", 1333 | "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", 1334 | "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", 1335 | "requires": { 1336 | "css-select": "^4.1.3", 1337 | "css-what": "^5.0.1", 1338 | "domelementtype": "^2.2.0", 1339 | "domhandler": "^4.2.0", 1340 | "domutils": "^2.7.0" 1341 | } 1342 | }, 1343 | "cookie": { 1344 | "version": "0.5.0", 1345 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1346 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 1347 | "peer": true 1348 | }, 1349 | "css-select": { 1350 | "version": "4.2.1", 1351 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", 1352 | "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", 1353 | "requires": { 1354 | "boolbase": "^1.0.0", 1355 | "css-what": "^5.1.0", 1356 | "domhandler": "^4.3.0", 1357 | "domutils": "^2.8.0", 1358 | "nth-check": "^2.0.1" 1359 | } 1360 | }, 1361 | "css-what": { 1362 | "version": "5.1.0", 1363 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", 1364 | "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" 1365 | }, 1366 | "debug": { 1367 | "version": "4.3.4", 1368 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1369 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1370 | "peer": true, 1371 | "requires": { 1372 | "ms": "2.1.2" 1373 | } 1374 | }, 1375 | "deepmerge": { 1376 | "version": "4.3.0", 1377 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 1378 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 1379 | "peer": true 1380 | }, 1381 | "devalue": { 1382 | "version": "4.3.0", 1383 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", 1384 | "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", 1385 | "peer": true 1386 | }, 1387 | "dom-serializer": { 1388 | "version": "1.3.2", 1389 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", 1390 | "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", 1391 | "requires": { 1392 | "domelementtype": "^2.0.1", 1393 | "domhandler": "^4.2.0", 1394 | "entities": "^2.0.0" 1395 | } 1396 | }, 1397 | "domelementtype": { 1398 | "version": "2.2.0", 1399 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", 1400 | "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" 1401 | }, 1402 | "domhandler": { 1403 | "version": "4.3.0", 1404 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", 1405 | "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", 1406 | "requires": { 1407 | "domelementtype": "^2.2.0" 1408 | } 1409 | }, 1410 | "domutils": { 1411 | "version": "2.8.0", 1412 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", 1413 | "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", 1414 | "requires": { 1415 | "dom-serializer": "^1.0.1", 1416 | "domelementtype": "^2.2.0", 1417 | "domhandler": "^4.2.0" 1418 | } 1419 | }, 1420 | "entities": { 1421 | "version": "2.2.0", 1422 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 1423 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" 1424 | }, 1425 | "esbuild": { 1426 | "version": "0.16.17", 1427 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 1428 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 1429 | "peer": true, 1430 | "requires": { 1431 | "@esbuild/android-arm": "0.16.17", 1432 | "@esbuild/android-arm64": "0.16.17", 1433 | "@esbuild/android-x64": "0.16.17", 1434 | "@esbuild/darwin-arm64": "0.16.17", 1435 | "@esbuild/darwin-x64": "0.16.17", 1436 | "@esbuild/freebsd-arm64": "0.16.17", 1437 | "@esbuild/freebsd-x64": "0.16.17", 1438 | "@esbuild/linux-arm": "0.16.17", 1439 | "@esbuild/linux-arm64": "0.16.17", 1440 | "@esbuild/linux-ia32": "0.16.17", 1441 | "@esbuild/linux-loong64": "0.16.17", 1442 | "@esbuild/linux-mips64el": "0.16.17", 1443 | "@esbuild/linux-ppc64": "0.16.17", 1444 | "@esbuild/linux-riscv64": "0.16.17", 1445 | "@esbuild/linux-s390x": "0.16.17", 1446 | "@esbuild/linux-x64": "0.16.17", 1447 | "@esbuild/netbsd-x64": "0.16.17", 1448 | "@esbuild/openbsd-x64": "0.16.17", 1449 | "@esbuild/sunos-x64": "0.16.17", 1450 | "@esbuild/win32-arm64": "0.16.17", 1451 | "@esbuild/win32-ia32": "0.16.17", 1452 | "@esbuild/win32-x64": "0.16.17" 1453 | } 1454 | }, 1455 | "esm-env": { 1456 | "version": "1.0.0", 1457 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 1458 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 1459 | "peer": true 1460 | }, 1461 | "fsevents": { 1462 | "version": "2.3.2", 1463 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1464 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1465 | "optional": true, 1466 | "peer": true 1467 | }, 1468 | "function-bind": { 1469 | "version": "1.1.1", 1470 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1471 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1472 | "peer": true 1473 | }, 1474 | "globalyzer": { 1475 | "version": "0.1.0", 1476 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1477 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" 1478 | }, 1479 | "globrex": { 1480 | "version": "0.1.2", 1481 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1482 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" 1483 | }, 1484 | "has": { 1485 | "version": "1.0.3", 1486 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1487 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1488 | "peer": true, 1489 | "requires": { 1490 | "function-bind": "^1.1.1" 1491 | } 1492 | }, 1493 | "htmlparser2": { 1494 | "version": "6.1.0", 1495 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", 1496 | "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", 1497 | "requires": { 1498 | "domelementtype": "^2.0.1", 1499 | "domhandler": "^4.0.0", 1500 | "domutils": "^2.5.2", 1501 | "entities": "^2.0.0" 1502 | } 1503 | }, 1504 | "is-core-module": { 1505 | "version": "2.11.0", 1506 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1507 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1508 | "peer": true, 1509 | "requires": { 1510 | "has": "^1.0.3" 1511 | } 1512 | }, 1513 | "kleur": { 1514 | "version": "4.1.5", 1515 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1516 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1517 | "peer": true 1518 | }, 1519 | "magic-string": { 1520 | "version": "0.27.0", 1521 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 1522 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 1523 | "peer": true, 1524 | "requires": { 1525 | "@jridgewell/sourcemap-codec": "^1.4.13" 1526 | } 1527 | }, 1528 | "mime": { 1529 | "version": "3.0.0", 1530 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1531 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1532 | "peer": true 1533 | }, 1534 | "mri": { 1535 | "version": "1.2.0", 1536 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1537 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1538 | "peer": true 1539 | }, 1540 | "mrmime": { 1541 | "version": "1.0.0", 1542 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", 1543 | "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==", 1544 | "peer": true 1545 | }, 1546 | "ms": { 1547 | "version": "2.1.2", 1548 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1549 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1550 | "peer": true 1551 | }, 1552 | "nanoid": { 1553 | "version": "3.3.4", 1554 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1555 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1556 | "peer": true 1557 | }, 1558 | "nth-check": { 1559 | "version": "2.0.1", 1560 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", 1561 | "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", 1562 | "requires": { 1563 | "boolbase": "^1.0.0" 1564 | } 1565 | }, 1566 | "parse5": { 1567 | "version": "6.0.1", 1568 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", 1569 | "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" 1570 | }, 1571 | "parse5-htmlparser2-tree-adapter": { 1572 | "version": "6.0.1", 1573 | "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", 1574 | "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", 1575 | "requires": { 1576 | "parse5": "^6.0.1" 1577 | } 1578 | }, 1579 | "path-parse": { 1580 | "version": "1.0.7", 1581 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1582 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1583 | "peer": true 1584 | }, 1585 | "picocolors": { 1586 | "version": "1.0.0", 1587 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1588 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1589 | "peer": true 1590 | }, 1591 | "postcss": { 1592 | "version": "8.4.21", 1593 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1594 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1595 | "peer": true, 1596 | "requires": { 1597 | "nanoid": "^3.3.4", 1598 | "picocolors": "^1.0.0", 1599 | "source-map-js": "^1.0.2" 1600 | } 1601 | }, 1602 | "resolve": { 1603 | "version": "1.22.1", 1604 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1605 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1606 | "peer": true, 1607 | "requires": { 1608 | "is-core-module": "^2.9.0", 1609 | "path-parse": "^1.0.7", 1610 | "supports-preserve-symlinks-flag": "^1.0.0" 1611 | } 1612 | }, 1613 | "rollup": { 1614 | "version": "3.15.0", 1615 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.15.0.tgz", 1616 | "integrity": "sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==", 1617 | "peer": true, 1618 | "requires": { 1619 | "fsevents": "~2.3.2" 1620 | } 1621 | }, 1622 | "sade": { 1623 | "version": "1.8.1", 1624 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1625 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1626 | "peer": true, 1627 | "requires": { 1628 | "mri": "^1.1.0" 1629 | } 1630 | }, 1631 | "set-cookie-parser": { 1632 | "version": "2.5.1", 1633 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", 1634 | "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", 1635 | "peer": true 1636 | }, 1637 | "sirv": { 1638 | "version": "2.0.2", 1639 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", 1640 | "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", 1641 | "peer": true, 1642 | "requires": { 1643 | "@polka/url": "^1.0.0-next.20", 1644 | "mrmime": "^1.0.0", 1645 | "totalist": "^3.0.0" 1646 | } 1647 | }, 1648 | "source-map-js": { 1649 | "version": "1.0.2", 1650 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1651 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1652 | "peer": true 1653 | }, 1654 | "streamsearch": { 1655 | "version": "1.1.0", 1656 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1657 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1658 | "peer": true 1659 | }, 1660 | "supports-preserve-symlinks-flag": { 1661 | "version": "1.0.0", 1662 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1663 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1664 | "peer": true 1665 | }, 1666 | "svelte": { 1667 | "version": "3.55.1", 1668 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz", 1669 | "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==", 1670 | "peer": true 1671 | }, 1672 | "svelte-hmr": { 1673 | "version": "0.15.1", 1674 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 1675 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 1676 | "peer": true, 1677 | "requires": {} 1678 | }, 1679 | "tiny-glob": { 1680 | "version": "0.2.9", 1681 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 1682 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 1683 | "requires": { 1684 | "globalyzer": "0.1.0", 1685 | "globrex": "^0.1.2" 1686 | } 1687 | }, 1688 | "totalist": { 1689 | "version": "3.0.0", 1690 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", 1691 | "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", 1692 | "peer": true 1693 | }, 1694 | "tslib": { 1695 | "version": "2.3.1", 1696 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 1697 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" 1698 | }, 1699 | "undici": { 1700 | "version": "5.18.0", 1701 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.18.0.tgz", 1702 | "integrity": "sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==", 1703 | "peer": true, 1704 | "requires": { 1705 | "busboy": "^1.6.0" 1706 | } 1707 | }, 1708 | "vite": { 1709 | "version": "4.1.1", 1710 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", 1711 | "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", 1712 | "peer": true, 1713 | "requires": { 1714 | "esbuild": "^0.16.14", 1715 | "fsevents": "~2.3.2", 1716 | "postcss": "^8.4.21", 1717 | "resolve": "^1.22.1", 1718 | "rollup": "^3.10.0" 1719 | } 1720 | }, 1721 | "vitefu": { 1722 | "version": "0.2.4", 1723 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 1724 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 1725 | "peer": true, 1726 | "requires": {} 1727 | } 1728 | } 1729 | } 1730 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-adapter-chrome-extension", 3 | "version": "2.0.1", 4 | "repository": { 5 | "type": "git", 6 | "url": "https://github.com/michmich112/sveltekit-adapter-chrome-extension" 7 | }, 8 | "license": "MIT", 9 | "type": "module", 10 | "main": "index.js", 11 | "exports": { 12 | ".": { 13 | "import": "./index.js" 14 | }, 15 | "./package.json": "./package.json" 16 | }, 17 | "types": "index.d.ts", 18 | "scripts": { 19 | "lint": "eslint --ignore-path .gitignore \"**/*.{ts,js,svelte}\" && npm run check-format", 20 | "check": "tsc", 21 | "format": "npm run check-format -- --write", 22 | "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", 23 | "test": "uvu test test.js" 24 | }, 25 | "dependencies": { 26 | "cheerio": "^1.0.0-rc.10", 27 | "tiny-glob": "^0.2.9" 28 | }, 29 | "peerDependencies": { 30 | "@sveltejs/adapter-static": "^3.0.1" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "bracketSameLine": false, 4 | "bracketSpacing": true, 5 | "embeddedLanguageFormatting": "auto", 6 | "endOfLine": "lf", 7 | "htmlWhitespaceSensitivity": "css", 8 | "insertPragma": false, 9 | "jsxBracketSameLine": false, 10 | "jsxSingleQuote": false, 11 | "printWidth": 80, 12 | "proseWrap": "preserve", 13 | "quoteProps": "as-needed", 14 | "requirePragma": false, 15 | "semi": true, 16 | "singleQuote": false, 17 | "tabWidth": 2, 18 | "trailingComma": "es5", 19 | "useTabs": false, 20 | "vueIndentScriptAndStyle": false 21 | } --------------------------------------------------------------------------------