From e65617fc4ea7bf378355d78d6439e7f829fbb05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 11:29:28 +0200 Subject: [PATCH 1/8] fix: register service worker in dev --- .eslintignore | 5 ++++ docs/guide/development.md | 17 ++++++++++++ docs/guide/index.md | 12 +++++++-- docs/guide/register-service-worker.md | 2 +- docs/guide/service-worker-precache.md | 2 +- examples/sveltekit-pwa/pwa.js | 2 +- src/constants.ts | 2 ++ src/dev.ts | 37 ++++++++++++++++++++++++--- src/html.ts | 31 ++++++++++------------ src/index.ts | 18 ++++++++----- 10 files changed, 97 insertions(+), 31 deletions(-) diff --git a/.eslintignore b/.eslintignore index 8a34d5d2..13e27246 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,7 @@ +build/ dist/ +dev-dist/ +node_modules/ *.svelte +*.d.ts +!.vitepress/ diff --git a/docs/guide/development.md b/docs/guide/development.md index 5bd73e92..75d33555 100644 --- a/docs/guide/development.md +++ b/docs/guide/development.md @@ -14,6 +14,23 @@ There will be only one single registration on the service worker precache manife The service worker on development will be only available if `disabled` plugin option is not `true` and the `enable` development option is `true`. +::: warning +If you're registering the service worker without importing any of the virtual modules, you will need to configure `injectRegister` explicitly in the plugin configuration. There is a race condition we cannot bypass and so, you will need to configure it, `auto` will not work, the plugin will not generate the corresponding `registerSW.js` script: +```ts +import { VitePWA } from 'vite-plugin-pwa' +export default defineConfig({ + plugins: [ + VitePWA({ + injectRegister: 'inline', // or injectRegister: 'script' + devOptions: { + enabled: true + } + }) + ] +}) +``` +::: + ## Plugin configuration To enable the service worker on development, you only need to add the following options to the plugin configuration: diff --git a/docs/guide/index.md b/docs/guide/index.md index 872e64a2..5ebe72e4 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -86,12 +86,20 @@ export default defineConfig({ ``` ::: -If you want to check it in `dev`, add the `devOptions` option to the plugin configuration (you will have the [Web App Manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) and the generated service worker): +If you want to check it in `dev`, add the `devOptions` option to the plugin configuration (you will have the [Web App Manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) and the generated service worker). + +::: warning +In version `0.12.2` the service worker will not be registered in development if not importing one of the virtual modules. There is a bug preventing generating the corresponding script on the entry point. + +In version `0.12.3` we have fixed previous bug, but you will need to explicitly configure `injectRegister` with `inline` or `script` and not importing any virtual module: there is a race condition, so we cannot bypass it. +::: + ```ts import { VitePWA } from 'vite-plugin-pwa' export default defineConfig({ plugins: [ - VitePWA({ + VitePWA({ + injectRegister: 'inline', // or injectRegister: 'script' registerType: 'autoUpdate', devOptions: { enabled: true diff --git a/docs/guide/register-service-worker.md b/docs/guide/register-service-worker.md index f2ec7034..387905b6 100644 --- a/docs/guide/register-service-worker.md +++ b/docs/guide/register-service-worker.md @@ -57,7 +57,7 @@ When configuring `injectRegister: 'script'` in the plugin configuration, the plu ::: details **/registerSW.js** ```js -if('serviceWorker' in navigator) { +if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('/sw.js', { scope: '/' }) }) diff --git a/docs/guide/service-worker-precache.md b/docs/guide/service-worker-precache.md index 14a6750a..83776703 100644 --- a/docs/guide/service-worker-precache.md +++ b/docs/guide/service-worker-precache.md @@ -42,7 +42,7 @@ export default defineConfig({ VitePWA({ registerType: 'autoUpdate', workbox: { - globPatterns: ['**/*{js,css,html,ico,png,svg}'] + globPatterns: ['**/*{js,css,html,ico,png,svg}'] } }) ] diff --git a/examples/sveltekit-pwa/pwa.js b/examples/sveltekit-pwa/pwa.js index ff4b347c..7540ea32 100644 --- a/examples/sveltekit-pwa/pwa.js +++ b/examples/sveltekit-pwa/pwa.js @@ -36,7 +36,7 @@ const buildPwa = async() => { console.log('Generating PWA...') await pwaPlugin.generateSW() webmanifestDestinations.forEach(d => { - copyFileSync('./.svelte-kit/output/client/_app/manifest.webmanifest', `${d}/manifest.webmanifest`) + copyFileSync('./.svelte-kit/output/client/_app/immutable/manifest.webmanifest', `${d}/manifest.webmanifest`) }) // don't copy workbox, svelte kit will copy it if (pwaConfiguration.strategies === 'injectManifest') { diff --git a/src/constants.ts b/src/constants.ts index ebae96f2..5d72a33d 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -22,3 +22,5 @@ export const defaultInjectManifestVitePlugins = [ 'vite:json', 'vite:terser', ] + +export const devSwName = 'dev-sw.js?dev-sw' diff --git a/src/dev.ts b/src/dev.ts index e8b53ab8..34c99551 100644 --- a/src/dev.ts +++ b/src/dev.ts @@ -1,17 +1,48 @@ import { basename, resolve } from 'path' -import { existsSync, promises as fs } from 'fs' +import { type Stats, promises as fs } from 'fs' import type { LoadResult } from 'rollup' import type { ResolvedConfig } from 'vite' import type { ResolvedVitePWAOptions } from './types' import { generateServiceWorker } from './modules' import { normalizePath } from './utils' +import { FILE_SW_REGISTER, devSwName } from './constants' +import { generateSimpleSWRegister } from './html' export const swDevOptions = { - swUrl: 'dev-sw.js?dev-sw', + swUrl: devSwName, swDevGenerated: false, workboxPaths: new Map(), } +async function existsFile(path: string) { + let stat: Stats + try { + // noinspection JSVoidFunctionReturnValueUsed + stat = await fs.lstat(path) + return stat.isFile() + } + catch (_) { + return false + } +} + +export async function createDevRegisterSW(options: ResolvedVitePWAOptions, viteConfig: ResolvedConfig) { + if (options.injectRegister === 'script') { + const devDist = resolve(viteConfig.root, 'dev-dist') + const registerSW = resolve(devDist, FILE_SW_REGISTER) + if ((await existsFile(registerSW))) + return + + // noinspection JSVoidFunctionReturnValueUsed + const stat = await fs.lstat(devDist) + if (!stat.isDirectory()) + await fs.mkdir(devDist) + + await fs.writeFile(registerSW, generateSimpleSWRegister(options, true), { encoding: 'utf8' }) + swDevOptions.workboxPaths.set(normalizePath(`${options.base}${FILE_SW_REGISTER}`), registerSW) + } +} + export function resolveDevId(id: string, options: ResolvedVitePWAOptions): string | undefined { if (!options.disable && options.devOptions.enabled && options.strategies === 'injectManifest') { const name = id.startsWith('/') ? id.slice(1) : id @@ -53,7 +84,7 @@ export async function loadDev(id: string, options: ResolvedVitePWAOptions, viteC if (id.endsWith(swDevOptions.swUrl)) { const globDirectory = resolve(viteConfig.root, 'dev-dist') const swDest = resolve(globDirectory, 'sw.js') - if (!swDevOptions.swDevGenerated || !existsSync(swDest)) { + if (!swDevOptions.swDevGenerated || !(await existsFile(swDest))) { // we only need to generate sw on dev-dist folder and then read the content // the sw precache (self.__SW_MANIFEST) will be empty since we're using `dev-dist` folder // we only need to add the navigateFallback if configured diff --git a/src/html.ts b/src/html.ts index ffc5d6f2..2bf7a004 100644 --- a/src/html.ts +++ b/src/html.ts @@ -1,23 +1,31 @@ -import { FILE_SW_REGISTER } from './constants' +import { FILE_SW_REGISTER, devSwName } from './constants' import type { ResolvedVitePWAOptions } from './types' -export function generateSimpleSWRegister(options: ResolvedVitePWAOptions) { +export function generateSimpleSWRegister(options: ResolvedVitePWAOptions, dev: boolean) { + const path = dev ? `${options.base}${devSwName}` : `${options.base}${options.filename}` return ` if('serviceWorker' in navigator) { window.addEventListener('load', () => { -navigator.serviceWorker.register('${options.base + options.filename}', { scope: '${options.scope}' }) +navigator.serviceWorker.register('${path}', { scope: '${options.scope}' }) }) }`.replace(/\n/g, '') } -export function injectServiceWorker(html: string, options: ResolvedVitePWAOptions) { +export function injectServiceWorker(html: string, options: ResolvedVitePWAOptions, dev: boolean) { const crossorigin = options.useCredentials ? ' crossorigin="use-credentials"' : '' - const manifest = options.manifest ? `` : '' + let manifest: string + if (dev) { + const name = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` + manifest = options.manifest ? `` : '' + } + else { + manifest = options.manifest ? `` : '' + } if (options.injectRegister === 'inline') { return html.replace( '', - `${manifest}`, + `${manifest}`, ) } @@ -33,14 +41,3 @@ export function injectServiceWorker(html: string, options: ResolvedVitePWAOption `${manifest}`, ) } - -export function injectDevManifest(html: string, options: ResolvedVitePWAOptions) { - const crossorigin = options.useCredentials ? ' crossorigin="use-credentials"' : '' - const name = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` - const manifest = options.manifest ? `` : '' - - return html.replace( - '', - `${manifest}`, - ) -} diff --git a/src/index.ts b/src/index.ts index e2c8c481..fe96235c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,13 +2,13 @@ import { resolve } from 'path' import { existsSync } from 'fs' import type { OutputBundle } from 'rollup' import type { Plugin, ResolvedConfig } from 'vite' -import { generateSimpleSWRegister, injectDevManifest, injectServiceWorker } from './html' +import { generateSimpleSWRegister, injectServiceWorker } from './html' import { generateInjectManifest, generateRegisterSW, generateServiceWorker } from './modules' import type { ExtendManifestEntriesHook, ResolvedVitePWAOptions, VitePWAOptions, VitePluginPWAAPI } from './types' import { resolveOptions } from './options' import { generateWebManifestFile } from './assets' import { FILE_SW_REGISTER, VIRTUAL_MODULES, VIRTUAL_MODULES_MAP, VIRTUAL_MODULES_RESOLVE_PREFIX } from './constants' -import { loadDev, resolveDevId, swDevOptions } from './dev' +import { createDevRegisterSW, loadDev, resolveDevId, swDevOptions } from './dev' export function VitePWA(userOptions: Partial = {}): Plugin[] { let viteConfig: ResolvedConfig @@ -48,7 +48,7 @@ export function VitePWA(userOptions: Partial = {}): Plugin[] { isAsset: true, type: 'asset', name: undefined, - source: generateSimpleSWRegister(options), + source: generateSimpleSWRegister(options, false), fileName: FILE_SW_REGISTER, } } @@ -74,7 +74,7 @@ export function VitePWA(userOptions: Partial = {}): Plugin[] { if (options.injectRegister === 'auto') options.injectRegister = useImportRegister ? null : 'script' - return injectServiceWorker(html, options) + return injectServiceWorker(html, options, false) }, }, generateBundle(_, bundle) { @@ -150,11 +150,17 @@ export function VitePWA(userOptions: Partial = {}): Plugin[] { }, transformIndexHtml: { enforce: 'post', - transform(html) { + async transform(html) { if (options.disable || !options.manifest || !options.devOptions.enabled) return html - return injectDevManifest(html, options) + // - create `registerSW.js`: we have a race condition, so we generate it if explicitly configured + // - Vite will call this transform before the virtual module (if imported), and so the registerSW will + // always be generated in dev + // - added warning on the index guide and also on the development entry on docs + await createDevRegisterSW(options, viteConfig) + + return injectServiceWorker(html, options, true) }, }, configureServer(server) { From b4d7b97eb20788ed259638828f6868dd4f54c8b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 12:20:26 +0200 Subject: [PATCH 2/8] chore: add `next/prev` entries for next `VitePress` release --- docs/.vitepress/components.d.ts | 2 +- docs/deployment/apache.md | 3 +++ docs/deployment/index.md | 3 +++ docs/examples/astro.md | 3 +++ docs/examples/index.md | 3 +++ docs/frameworks/astro.md | 3 +++ docs/frameworks/index.md | 3 +++ docs/guide/faq.md | 3 +++ docs/workbox/index.md | 3 +++ 9 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/components.d.ts b/docs/.vitepress/components.d.ts index cd67af27..1f7e409f 100644 --- a/docs/.vitepress/components.d.ts +++ b/docs/.vitepress/components.d.ts @@ -1,6 +1,6 @@ // generated by unplugin-vue-components // We suggest you to commit this file into source control -// Read more: https://github.com/vuejs/vue-next/pull/3399 +// Read more: https://github.com/vuejs/core/pull/3399 import '@vue/runtime-core' declare module '@vue/runtime-core' { diff --git a/docs/deployment/apache.md b/docs/deployment/apache.md index 0b10675c..9a8f75e1 100644 --- a/docs/deployment/apache.md +++ b/docs/deployment/apache.md @@ -1,5 +1,8 @@ --- title: Apache Http Server 2.4+ | Deployment +next: + text: Getting Started | Workbox + link: /workbox/ --- # Apache Http Server 2.4+ diff --git a/docs/deployment/index.md b/docs/deployment/index.md index 4fb78deb..3b6f9eca 100644 --- a/docs/deployment/index.md +++ b/docs/deployment/index.md @@ -1,5 +1,8 @@ --- title: Getting Started | Deploy +prev: + text: Astro | Examples + link: /examples/astro --- # Getting Started diff --git a/docs/examples/astro.md b/docs/examples/astro.md index c8d25263..9b63e418 100644 --- a/docs/examples/astro.md +++ b/docs/examples/astro.md @@ -1,5 +1,8 @@ --- title: Astro | Examples +next: + text: Getting Started | Deploy + link: /deployment/ --- # Astro diff --git a/docs/examples/index.md b/docs/examples/index.md index 30f9f400..fc08ef90 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -1,5 +1,8 @@ --- title: Getting Started | Examples +prev: + text: Astro | Frameworks + link: /frameworks/astro --- # Getting Started diff --git a/docs/frameworks/astro.md b/docs/frameworks/astro.md index 2fd9b877..6da4e2f9 100644 --- a/docs/frameworks/astro.md +++ b/docs/frameworks/astro.md @@ -1,5 +1,8 @@ --- title: Astro | Frameworks +next: + text: Getting Started | Examples + link: /examples/ --- # Astro diff --git a/docs/frameworks/index.md b/docs/frameworks/index.md index eb38c2e7..753e1941 100644 --- a/docs/frameworks/index.md +++ b/docs/frameworks/index.md @@ -1,5 +1,8 @@ --- title: Getting Started | Frameworks +prev: + text: FAQ | Guide + link: /guide/faq --- # Getting Started diff --git a/docs/guide/faq.md b/docs/guide/faq.md index 5e9d8303..286c3c66 100644 --- a/docs/guide/faq.md +++ b/docs/guide/faq.md @@ -1,5 +1,8 @@ --- title: FAQ | Guide +next: + text: Getting Started | Frameworks + link: /frameworks/ --- # FAQ diff --git a/docs/workbox/index.md b/docs/workbox/index.md index d60d3d82..6dcb9b04 100644 --- a/docs/workbox/index.md +++ b/docs/workbox/index.md @@ -1,5 +1,8 @@ --- title: Getting Started | Workbox +prev: + text: Apache Http Server 2.4+ | Deployment + link: /deployment/apache --- # Getting Started From 9852b7a34b1be9be9a9554fc3f62d80675e2e03c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 12:20:44 +0200 Subject: [PATCH 3/8] chore: update deps --- docs/package.json | 18 +- examples/preact-router/package.json | 8 +- examples/react-router/package.json | 12 +- examples/solid-router/package.json | 6 +- examples/svelte-routify/package.json | 14 +- examples/sveltekit-pwa/package.json | 12 +- examples/vue-basic-cdn/package.json | 6 +- examples/vue-router/package.json | 8 +- package.json | 28 +- pnpm-lock.yaml | 1826 ++++++++++---------------- 10 files changed, 742 insertions(+), 1196 deletions(-) diff --git a/docs/package.json b/docs/package.json index 5955b514..16306851 100644 --- a/docs/package.json +++ b/docs/package.json @@ -9,23 +9,23 @@ "serve": "npm run build && serve .vitepress/dist" }, "dependencies": { - "@vueuse/core": "^8.5.0", - "@vueuse/shared": "^8.5.0", + "@vueuse/core": "^8.7.5", + "@vueuse/shared": "^8.7.5", "vue": "^3.2.37" }, "devDependencies": { "@types/fs-extra": "^9.0.13", "@vitejs/plugin-vue": "^2.3.3", - "@vueuse/core": "^8.5.0", - "esbuild-register": "^3.3.2", - "eslint": "^8.16.0", + "@vueuse/core": "^8.7.5", + "esbuild-register": "^3.3.3", + "eslint": "^8.19.0", "fast-glob": "^3.2.11", "fs-extra": "^10.1.0", "https-localhost": "^4.7.1", - "typescript": "^4.6.4", - "unocss": "^0.38.1", - "unplugin-vue-components": "^0.19.5", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "unocss": "^0.38.2", + "unplugin-vue-components": "^0.19.9", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "vitepress": "^1.0.0-alpha.4", "workbox-window": "^6.5.3" diff --git a/examples/preact-router/package.json b/examples/preact-router/package.json index 3e1c6db3..c74808ba 100644 --- a/examples/preact-router/package.json +++ b/examples/preact-router/package.json @@ -25,17 +25,17 @@ "serve": "serve dist" }, "dependencies": { - "preact": "^10.7.2", + "preact": "^10.8.2", "preact-router": "^4.0.1" }, "devDependencies": { - "@preact/preset-vite": "^2.2.0", + "@preact/preset-vite": "^2.3.0", "@rollup/plugin-replace": "^4.0.0", "cross-env": "^7.0.3", "https-localhost": "^4.7.1", "rimraf": "^3.0.2", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "workbox-core": "^6.5.3", "workbox-precaching": "^6.5.3", diff --git a/examples/react-router/package.json b/examples/react-router/package.json index 35753278..c8ea6d10 100644 --- a/examples/react-router/package.json +++ b/examples/react-router/package.json @@ -25,24 +25,24 @@ "serve": "serve dist" }, "dependencies": { - "react": "^18.1.0", - "react-dom": "^18.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", "react-router": "^6.3.0", "react-router-config": "^5.1.1", "react-router-dom": "^6.3.0" }, "devDependencies": { "@rollup/plugin-replace": "^4.0.0", - "@types/react": "^18.0.9", - "@types/react-dom": "^18.0.4", + "@types/react": "^18.0.14", + "@types/react-dom": "^18.0.5", "@types/react-router-config": "^5.0.6", "@types/react-router-dom": "^5.3.3", "@vitejs/plugin-react-refresh": "^1.3.6", "cross-env": "^7.0.3", "https-localhost": "^4.7.1", "rimraf": "^3.0.2", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "workbox-core": "^6.5.3", "workbox-precaching": "^6.5.3", diff --git a/examples/solid-router/package.json b/examples/solid-router/package.json index a560f4ee..d2c3b3ed 100644 --- a/examples/solid-router/package.json +++ b/examples/solid-router/package.json @@ -26,15 +26,15 @@ }, "dependencies": { "solid-app-router": "^0.3.3", - "solid-js": "^1.4.2" + "solid-js": "^1.4.5" }, "devDependencies": { "@rollup/plugin-replace": "^4.0.0", "cross-env": "^7.0.3", "https-localhost": "^4.7.1", "rimraf": "^3.0.2", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "vite-plugin-solid": "^2.2.6", "workbox-core": "^6.5.3", diff --git a/examples/svelte-routify/package.json b/examples/svelte-routify/package.json index 785a862d..be84ee53 100644 --- a/examples/svelte-routify/package.json +++ b/examples/svelte-routify/package.json @@ -27,19 +27,19 @@ }, "devDependencies": { "@rollup/plugin-replace": "^4.0.0", - "@roxi/routify": "^2.18.6", - "@sveltejs/vite-plugin-svelte": "^1.0.0-next.44", + "@roxi/routify": "^2.18.8", + "@sveltejs/vite-plugin-svelte": "^1.0.0-next.49", "@tsconfig/svelte": "^3.0.0", "cross-env": "^7.0.3", - "eslint": "^8.16.0", + "eslint": "^8.19.0", "eslint-plugin-svelte3": "^4.0.0", "https-localhost": "^4.7.1", "rimraf": "^3.0.2", "svelte": "^3.48.0", - "svelte-check": "^2.7.1", - "svelte-preprocess": "^4.10.6", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "svelte-check": "^2.8.0", + "svelte-preprocess": "^4.10.7", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "workbox-core": "^6.5.3", "workbox-precaching": "^6.5.3", diff --git a/examples/sveltekit-pwa/package.json b/examples/sveltekit-pwa/package.json index c255d3c1..ceaf318b 100644 --- a/examples/sveltekit-pwa/package.json +++ b/examples/sveltekit-pwa/package.json @@ -32,19 +32,19 @@ "@rollup/plugin-replace": "^4.0.0", "@sveltejs/adapter-static": "next", "@sveltejs/kit": "next", - "@typescript-eslint/eslint-plugin": "^5.25.0", - "@typescript-eslint/parser": "^5.25.0", + "@typescript-eslint/eslint-plugin": "^5.30.3", + "@typescript-eslint/parser": "^5.30.3", "cross-env": "^7.0.3", - "eslint": "^8.16.0", + "eslint": "^8.19.0", "eslint-plugin-svelte3": "^4.0.0", "https-localhost": "^4.7.1", "minimist": "^1.2.6", "rimraf": "^3.0.2", "svelte": "^3.48.0", - "svelte-check": "^2.7.1", - "svelte-preprocess": "^4.10.6", + "svelte-check": "^2.8.0", + "svelte-preprocess": "^4.10.7", "tslib": "^2.4.0", - "typescript": "^4.6.4", + "typescript": "^4.7.4", "vite-plugin-pwa": "workspace:*", "workbox-core": "^6.5.3", "workbox-precaching": "^6.5.3", diff --git a/examples/vue-basic-cdn/package.json b/examples/vue-basic-cdn/package.json index b3e54381..48367fd5 100644 --- a/examples/vue-basic-cdn/package.json +++ b/examples/vue-basic-cdn/package.json @@ -15,11 +15,11 @@ "devDependencies": { "@rollup/plugin-replace": "^4.0.0", "@vitejs/plugin-vue": "^2.3.3", - "@vueuse/core": "^8.5.0", + "@vueuse/core": "^8.7.5", "cross-env": "^7.0.3", "https-localhost": "^4.7.1", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*" } } diff --git a/examples/vue-router/package.json b/examples/vue-router/package.json index f12d7a25..7811c7d7 100644 --- a/examples/vue-router/package.json +++ b/examples/vue-router/package.json @@ -26,17 +26,17 @@ }, "dependencies": { "vue": "^3.2.37", - "vue-router": "^4.0.15" + "vue-router": "^4.0.16" }, "devDependencies": { "@rollup/plugin-replace": "^4.0.0", "@vitejs/plugin-vue": "^2.3.3", - "@vueuse/core": "^8.5.0", + "@vueuse/core": "^8.7.5", "cross-env": "^7.0.3", "https-localhost": "^4.7.1", "rimraf": "^3.0.2", - "typescript": "^4.6.4", - "vite": "^2.9.9", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vite-plugin-pwa": "workspace:*", "workbox-core": "^6.5.3", "workbox-precaching": "^6.5.3", diff --git a/package.json b/package.json index 3c9ae220..7da444a3 100644 --- a/package.json +++ b/package.json @@ -57,31 +57,31 @@ "debug": "^4.3.4", "fast-glob": "^3.2.11", "pretty-bytes": "^6.0.0", - "rollup": "^2.75.5", + "rollup": "^2.75.7", "workbox-build": "^6.5.3", "workbox-window": "^6.5.3" }, "devDependencies": { - "@antfu/eslint-config": "^0.25.1", - "@antfu/ni": "^0.16.2", + "@antfu/eslint-config": "^0.25.2", + "@antfu/ni": "^0.16.3", "@types/debug": "^4.1.7", "@types/prompts": "^2.4.0", - "@types/react": "^18.0.12", + "@types/react": "^18.0.14", "@types/workbox-build": "^5.0.1", - "@typescript-eslint/eslint-plugin": "^5.27.0", - "eslint": "^8.17.0", + "@typescript-eslint/eslint-plugin": "^5.30.3", + "eslint": "^8.19.0", "esno": "^0.14.1", "kolorist": "^1.5.1", - "pnpm": "^7.1.8", - "preact": "^10.7.3", + "pnpm": "^7.4.1", + "preact": "^10.8.2", "prompts": "^2.4.2", - "react": "^18.1.0", - "rollup": "^2.75.5", - "solid-js": "^1.4.3", + "react": "^18.2.0", + "rollup": "^2.75.7", + "solid-js": "^1.4.5", "svelte": "^3.48.0", - "tsup": "^6.1.0", - "typescript": "^4.7.3", - "vite": "^2.9.9", + "tsup": "^6.1.3", + "typescript": "^4.7.4", + "vite": "^2.9.13", "vue": "^3.2.37" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5073c4ca..aed4c378 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,29 +4,29 @@ importers: .: specifiers: - '@antfu/eslint-config': ^0.25.1 - '@antfu/ni': ^0.16.2 + '@antfu/eslint-config': ^0.25.2 + '@antfu/ni': ^0.16.3 '@types/debug': ^4.1.7 '@types/prompts': ^2.4.0 - '@types/react': ^18.0.12 + '@types/react': ^18.0.14 '@types/workbox-build': ^5.0.1 - '@typescript-eslint/eslint-plugin': ^5.27.0 + '@typescript-eslint/eslint-plugin': ^5.30.3 debug: ^4.3.4 - eslint: ^8.17.0 + eslint: ^8.19.0 esno: ^0.14.1 fast-glob: ^3.2.11 kolorist: ^1.5.1 - pnpm: ^7.1.8 - preact: ^10.7.3 + pnpm: ^7.4.1 + preact: ^10.8.2 pretty-bytes: ^6.0.0 prompts: ^2.4.2 - react: ^18.1.0 - rollup: ^2.75.5 - solid-js: ^1.4.3 + react: ^18.2.0 + rollup: ^2.75.7 + solid-js: ^1.4.5 svelte: ^3.48.0 - tsup: ^6.1.0 - typescript: ^4.7.3 - vite: ^2.9.9 + tsup: ^6.1.3 + typescript: ^4.7.4 + vite: ^2.9.13 vue: ^3.2.37 workbox-build: ^6.5.3 workbox-window: ^6.5.3 @@ -34,97 +34,97 @@ importers: debug: 4.3.4 fast-glob: 3.2.11 pretty-bytes: 6.0.0 - rollup: 2.75.5 + rollup: 2.75.7 workbox-build: 6.5.3 workbox-window: 6.5.3 devDependencies: - '@antfu/eslint-config': 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - '@antfu/ni': 0.16.2 + '@antfu/eslint-config': 0.25.2_4x5o4skxv6sl53vpwefgt23khm + '@antfu/ni': 0.16.3 '@types/debug': 4.1.7 '@types/prompts': 2.4.0 - '@types/react': 18.0.12 + '@types/react': 18.0.14 '@types/workbox-build': 5.0.1 - '@typescript-eslint/eslint-plugin': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 + '@typescript-eslint/eslint-plugin': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + eslint: 8.19.0 esno: 0.14.1 kolorist: 1.5.1 - pnpm: 7.1.8 - preact: 10.7.3 + pnpm: 7.4.1 + preact: 10.8.2 prompts: 2.4.2 - react: 18.1.0 - solid-js: 1.4.3 + react: 18.2.0 + solid-js: 1.4.5 svelte: 3.48.0 - tsup: 6.1.0_typescript@4.7.3 - typescript: 4.7.3 - vite: 2.9.9 + tsup: 6.1.3_typescript@4.7.4 + typescript: 4.7.4 + vite: 2.9.13 vue: 3.2.37 docs: specifiers: '@types/fs-extra': ^9.0.13 '@vitejs/plugin-vue': ^2.3.3 - '@vueuse/core': ^8.5.0 - '@vueuse/shared': ^8.5.0 - esbuild-register: ^3.3.2 - eslint: ^8.16.0 + '@vueuse/core': ^8.7.5 + '@vueuse/shared': ^8.7.5 + esbuild-register: ^3.3.3 + eslint: ^8.19.0 fast-glob: ^3.2.11 fs-extra: ^10.1.0 https-localhost: ^4.7.1 - typescript: ^4.6.4 - unocss: ^0.38.1 - unplugin-vue-components: ^0.19.5 - vite: ^2.9.9 + typescript: ^4.7.4 + unocss: ^0.38.2 + unplugin-vue-components: ^0.19.9 + vite: ^2.9.13 vite-plugin-pwa: workspace:* vitepress: ^1.0.0-alpha.4 vue: ^3.2.37 workbox-window: ^6.5.3 dependencies: - '@vueuse/core': 8.5.0_vue@3.2.37 - '@vueuse/shared': 8.5.0_vue@3.2.37 + '@vueuse/core': 8.7.5_vue@3.2.37 + '@vueuse/shared': 8.7.5_vue@3.2.37 vue: 3.2.37 devDependencies: '@types/fs-extra': 9.0.13 - '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.37 - esbuild-register: 3.3.2 - eslint: 8.16.0 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.13+vue@3.2.37 + esbuild-register: 3.3.3 + eslint: 8.19.0 fast-glob: 3.2.11 fs-extra: 10.1.0 https-localhost: 4.7.1 - typescript: 4.6.4 - unocss: 0.38.1_vite@2.9.9 - unplugin-vue-components: 0.19.5_vite@2.9.9+vue@3.2.37 - vite: 2.9.9 + typescript: 4.7.4 + unocss: 0.38.2_vite@2.9.13 + unplugin-vue-components: 0.19.9_vite@2.9.13+vue@3.2.37 + vite: 2.9.13 vite-plugin-pwa: link:.. vitepress: 1.0.0-alpha.4 workbox-window: 6.5.3 examples/preact-router: specifiers: - '@preact/preset-vite': ^2.2.0 + '@preact/preset-vite': ^2.3.0 '@rollup/plugin-replace': ^4.0.0 cross-env: ^7.0.3 https-localhost: ^4.7.1 - preact: ^10.7.2 + preact: ^10.8.2 preact-router: ^4.0.1 rimraf: ^3.0.2 - typescript: ^4.6.4 - vite: ^2.9.9 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* workbox-core: ^6.5.3 workbox-precaching: ^6.5.3 workbox-routing: ^6.5.3 workbox-window: ^6.5.3 dependencies: - preact: 10.7.2 - preact-router: 4.0.1_preact@10.7.2 + preact: 10.8.2 + preact-router: 4.0.1_preact@10.8.2 devDependencies: - '@preact/preset-vite': 2.2.0_preact@10.7.2+vite@2.9.9 + '@preact/preset-vite': 2.3.0_preact@10.8.2+vite@2.9.13 '@rollup/plugin-replace': 4.0.0 cross-env: 7.0.3 https-localhost: 4.7.1 rimraf: 3.0.2 - typescript: 4.6.4 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. workbox-core: 6.5.3 workbox-precaching: 6.5.3 @@ -134,44 +134,44 @@ importers: examples/react-router: specifiers: '@rollup/plugin-replace': ^4.0.0 - '@types/react': ^18.0.9 - '@types/react-dom': ^18.0.4 + '@types/react': ^18.0.14 + '@types/react-dom': ^18.0.5 '@types/react-router-config': ^5.0.6 '@types/react-router-dom': ^5.3.3 '@vitejs/plugin-react-refresh': ^1.3.6 cross-env: ^7.0.3 https-localhost: ^4.7.1 - react: ^18.1.0 - react-dom: ^18.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 react-router: ^6.3.0 react-router-config: ^5.1.1 react-router-dom: ^6.3.0 rimraf: ^3.0.2 - typescript: ^4.6.4 - vite: ^2.9.9 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* workbox-core: ^6.5.3 workbox-precaching: ^6.5.3 workbox-routing: ^6.5.3 workbox-window: ^6.5.3 dependencies: - react: 18.1.0 - react-dom: 18.1.0_react@18.1.0 - react-router: 6.3.0_react@18.1.0 - react-router-config: 5.1.1_fi5y4rn25vlagmiokshib4xrpe - react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router: 6.3.0_react@18.2.0 + react-router-config: 5.1.1_77xmmbgo3eovj6t3xv35v52s6m + react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y devDependencies: '@rollup/plugin-replace': 4.0.0 - '@types/react': 18.0.9 - '@types/react-dom': 18.0.4 + '@types/react': 18.0.14 + '@types/react-dom': 18.0.5 '@types/react-router-config': 5.0.6 '@types/react-router-dom': 5.3.3 '@vitejs/plugin-react-refresh': 1.3.6 cross-env: 7.0.3 https-localhost: 4.7.1 rimraf: 3.0.2 - typescript: 4.6.4 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. workbox-core: 6.5.3 workbox-precaching: 6.5.3 @@ -185,9 +185,9 @@ importers: https-localhost: ^4.7.1 rimraf: ^3.0.2 solid-app-router: ^0.3.3 - solid-js: ^1.4.2 - typescript: ^4.6.4 - vite: ^2.9.9 + solid-js: ^1.4.5 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* vite-plugin-solid: ^2.2.6 workbox-core: ^6.5.3 @@ -195,15 +195,15 @@ importers: workbox-routing: ^6.5.3 workbox-window: ^6.5.3 dependencies: - solid-app-router: 0.3.3_solid-js@1.4.2 - solid-js: 1.4.2 + solid-app-router: 0.3.3_solid-js@1.4.5 + solid-js: 1.4.5 devDependencies: '@rollup/plugin-replace': 4.0.0 cross-env: 7.0.3 https-localhost: 4.7.1 rimraf: 3.0.2 - typescript: 4.6.4 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. vite-plugin-solid: 2.2.6 workbox-core: 6.5.3 @@ -214,38 +214,38 @@ importers: examples/svelte-routify: specifiers: '@rollup/plugin-replace': ^4.0.0 - '@roxi/routify': ^2.18.6 - '@sveltejs/vite-plugin-svelte': ^1.0.0-next.44 + '@roxi/routify': ^2.18.8 + '@sveltejs/vite-plugin-svelte': ^1.0.0-next.49 '@tsconfig/svelte': ^3.0.0 cross-env: ^7.0.3 - eslint: ^8.16.0 + eslint: ^8.19.0 eslint-plugin-svelte3: ^4.0.0 https-localhost: ^4.7.1 rimraf: ^3.0.2 svelte: ^3.48.0 - svelte-check: ^2.7.1 - svelte-preprocess: ^4.10.6 - typescript: ^4.6.4 - vite: ^2.9.9 + svelte-check: ^2.8.0 + svelte-preprocess: ^4.10.7 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* workbox-core: ^6.5.3 workbox-precaching: ^6.5.3 workbox-routing: ^6.5.3 devDependencies: '@rollup/plugin-replace': 4.0.0 - '@roxi/routify': 2.18.6 - '@sveltejs/vite-plugin-svelte': 1.0.0-next.44_svelte@3.48.0+vite@2.9.9 + '@roxi/routify': 2.18.8 + '@sveltejs/vite-plugin-svelte': 1.0.0-next.49_svelte@3.48.0+vite@2.9.13 '@tsconfig/svelte': 3.0.0 cross-env: 7.0.3 - eslint: 8.16.0 - eslint-plugin-svelte3: 4.0.0_vypdqzeyqutkgs6qzc7qod4c64 + eslint: 8.19.0 + eslint-plugin-svelte3: 4.0.0_m4jpobot6gi3xtcba7bv5cflma https-localhost: 4.7.1 rimraf: 3.0.2 svelte: 3.48.0 - svelte-check: 2.7.1_svelte@3.48.0 - svelte-preprocess: 4.10.6_wwvk7nlptlrqo2czohjtk6eiqm - typescript: 4.6.4 - vite: 2.9.9 + svelte-check: 2.8.0_svelte@3.48.0 + svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. workbox-core: 6.5.3 workbox-precaching: 6.5.3 @@ -256,19 +256,19 @@ importers: '@rollup/plugin-replace': ^4.0.0 '@sveltejs/adapter-static': next '@sveltejs/kit': next - '@typescript-eslint/eslint-plugin': ^5.25.0 - '@typescript-eslint/parser': ^5.25.0 + '@typescript-eslint/eslint-plugin': ^5.30.3 + '@typescript-eslint/parser': ^5.30.3 cross-env: ^7.0.3 - eslint: ^8.16.0 + eslint: ^8.19.0 eslint-plugin-svelte3: ^4.0.0 https-localhost: ^4.7.1 minimist: ^1.2.6 rimraf: ^3.0.2 svelte: ^3.48.0 - svelte-check: ^2.7.1 - svelte-preprocess: ^4.10.6 + svelte-check: ^2.8.0 + svelte-preprocess: ^4.10.7 tslib: ^2.4.0 - typescript: ^4.6.4 + typescript: ^4.7.4 vite-plugin-pwa: workspace:* workbox-core: ^6.5.3 workbox-precaching: ^6.5.3 @@ -276,20 +276,20 @@ importers: devDependencies: '@rollup/plugin-replace': 4.0.0 '@sveltejs/adapter-static': 1.0.0-next.34 - '@sveltejs/kit': 1.0.0-next.352_svelte@3.48.0 - '@typescript-eslint/eslint-plugin': 5.25.0_jorowkvdqu6pwramweg5le7ncu - '@typescript-eslint/parser': 5.25.0_utdtartgf6fqqgkivzeynh76la + '@sveltejs/kit': 1.0.0-next.357_svelte@3.48.0 + '@typescript-eslint/eslint-plugin': 5.30.3_xuuykav7urhdozug7htlfgar3u + '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm cross-env: 7.0.3 - eslint: 8.16.0 - eslint-plugin-svelte3: 4.0.0_vypdqzeyqutkgs6qzc7qod4c64 + eslint: 8.19.0 + eslint-plugin-svelte3: 4.0.0_m4jpobot6gi3xtcba7bv5cflma https-localhost: 4.7.1 minimist: 1.2.6 rimraf: 3.0.2 svelte: 3.48.0 - svelte-check: 2.7.1_svelte@3.48.0 - svelte-preprocess: 4.10.6_wwvk7nlptlrqo2czohjtk6eiqm + svelte-check: 2.8.0_svelte@3.48.0 + svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm tslib: 2.4.0 - typescript: 4.6.4 + typescript: 4.7.4 vite-plugin-pwa: link:../.. workbox-core: 6.5.3 workbox-precaching: 6.5.3 @@ -299,54 +299,54 @@ importers: specifiers: '@rollup/plugin-replace': ^4.0.0 '@vitejs/plugin-vue': ^2.3.3 - '@vueuse/core': ^8.5.0 + '@vueuse/core': ^8.7.5 cross-env: ^7.0.3 https-localhost: ^4.7.1 - typescript: ^4.6.4 - vite: ^2.9.9 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* vue: ^3.2.37 dependencies: vue: 3.2.37 devDependencies: '@rollup/plugin-replace': 4.0.0 - '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.37 - '@vueuse/core': 8.5.0_vue@3.2.37 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.13+vue@3.2.37 + '@vueuse/core': 8.7.5_vue@3.2.37 cross-env: 7.0.3 https-localhost: 4.7.1 - typescript: 4.6.4 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. examples/vue-router: specifiers: '@rollup/plugin-replace': ^4.0.0 '@vitejs/plugin-vue': ^2.3.3 - '@vueuse/core': ^8.5.0 + '@vueuse/core': ^8.7.5 cross-env: ^7.0.3 https-localhost: ^4.7.1 rimraf: ^3.0.2 - typescript: ^4.6.4 - vite: ^2.9.9 + typescript: ^4.7.4 + vite: ^2.9.13 vite-plugin-pwa: workspace:* vue: ^3.2.37 - vue-router: ^4.0.15 + vue-router: ^4.0.16 workbox-core: ^6.5.3 workbox-precaching: ^6.5.3 workbox-routing: ^6.5.3 workbox-window: ^6.5.3 dependencies: vue: 3.2.37 - vue-router: 4.0.15_vue@3.2.37 + vue-router: 4.0.16_vue@3.2.37 devDependencies: '@rollup/plugin-replace': 4.0.0 - '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.37 - '@vueuse/core': 8.5.0_vue@3.2.37 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.13+vue@3.2.37 + '@vueuse/core': 8.7.5_vue@3.2.37 cross-env: 7.0.3 https-localhost: 4.7.1 rimraf: 3.0.2 - typescript: 4.6.4 - vite: 2.9.9 + typescript: 4.7.4 + vite: 2.9.13 vite-plugin-pwa: link:../.. workbox-core: 6.5.3 workbox-precaching: 6.5.3 @@ -355,104 +355,114 @@ importers: packages: - /@algolia/autocomplete-core/1.6.3: - resolution: {integrity: sha512-dqQqRt01fX3YuVFrkceHsoCnzX0bLhrrg8itJI1NM68KjrPYQPYsE+kY8EZTCM4y8VDnhqJErR73xe/ZsV+qAA==} + /@algolia/autocomplete-core/1.7.1: + resolution: {integrity: sha512-eiZw+fxMzNQn01S8dA/hcCpoWCOCwcIIEUtHHdzN5TGB3IpzLbuhqFeTfh2OUhhgkE8Uo17+wH+QJ/wYyQmmzg==} dependencies: - '@algolia/autocomplete-shared': 1.6.3 + '@algolia/autocomplete-shared': 1.7.1 dev: true - /@algolia/autocomplete-shared/1.6.3: - resolution: {integrity: sha512-UV46bnkTztyADFaETfzFC5ryIdGVb2zpAoYgu0tfcuYWjhg1KbLXveFffZIrGVoboqmAk1b+jMrl6iCja1i3lg==} + /@algolia/autocomplete-preset-algolia/1.7.1_algoliasearch@4.13.1: + resolution: {integrity: sha512-pJwmIxeJCymU1M6cGujnaIYcY3QPOVYZOXhFkWVM7IxKzy272BwCvMFMyc5NpG/QmiObBxjo7myd060OeTNJXg==} + peerDependencies: + '@algolia/client-search': ^4.9.1 + algoliasearch: ^4.9.1 + dependencies: + '@algolia/autocomplete-shared': 1.7.1 + algoliasearch: 4.13.1 + dev: true + + /@algolia/autocomplete-shared/1.7.1: + resolution: {integrity: sha512-eTmGVqY3GeyBTT8IWiB2K5EuURAqhnumfktAEoHxfDY2o7vg2rSnO16ZtIG0fMgt3py28Vwgq42/bVEuaQV7pg==} dev: true - /@algolia/cache-browser-local-storage/4.10.3: - resolution: {integrity: sha512-TD1N7zg5lb56/PLjjD4bBl2eccEvVHhC7yfgFu2r9k5tf+gvbGxEZ3NhRZVKu2MObUIcEy2VR4LVLxOQu45Hlg==} + /@algolia/cache-browser-local-storage/4.13.1: + resolution: {integrity: sha512-UAUVG2PEfwd/FfudsZtYnidJ9eSCpS+LW9cQiesePQLz41NAcddKxBak6eP2GErqyFagSlnVXe/w2E9h2m2ttg==} dependencies: - '@algolia/cache-common': 4.10.3 + '@algolia/cache-common': 4.13.1 dev: true - /@algolia/cache-common/4.10.3: - resolution: {integrity: sha512-q13cPPUmtf8a2suBC4kySSr97EyulSXuxUkn7l1tZUCX/k1y5KNheMp8npBy8Kc8gPPmHpacxddRSfOncjiKFw==} + /@algolia/cache-common/4.13.1: + resolution: {integrity: sha512-7Vaf6IM4L0Jkl3sYXbwK+2beQOgVJ0mKFbz/4qSxKd1iy2Sp77uTAazcX+Dlexekg1fqGUOSO7HS4Sx47ZJmjA==} dev: true - /@algolia/cache-in-memory/4.10.3: - resolution: {integrity: sha512-JhPajhOXAjUP+TZrZTh6KJpF5VKTKyWK2aR1cD8NtrcVHwfGS7fTyfXfVm5BqBqkD9U0gVvufUt/mVyI80aZww==} + /@algolia/cache-in-memory/4.13.1: + resolution: {integrity: sha512-pZzybCDGApfA/nutsFK1P0Sbsq6fYJU3DwIvyKg4pURerlJM4qZbB9bfLRef0FkzfQu7W11E4cVLCIOWmyZeuQ==} dependencies: - '@algolia/cache-common': 4.10.3 + '@algolia/cache-common': 4.13.1 dev: true - /@algolia/client-account/4.10.3: - resolution: {integrity: sha512-S/IsJB4s+e1xYctdpW3nAbwrR2y3pjSo9X21fJGoiGeIpTRdvQG7nydgsLkhnhcgAdLnmqBapYyAqMGmlcyOkg==} + /@algolia/client-account/4.13.1: + resolution: {integrity: sha512-TFLiZ1KqMiir3FNHU+h3b0MArmyaHG+eT8Iojio6TdpeFcAQ1Aiy+2gb3SZk3+pgRJa/BxGmDkRUwE5E/lv3QQ==} dependencies: - '@algolia/client-common': 4.10.3 - '@algolia/client-search': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@algolia/client-analytics/4.10.3: - resolution: {integrity: sha512-vlHTbBqJktRgclh3v7bPQLfZvFIqY4erNFIZA5C7nisCj9oLeTgzefoUrr+R90+I+XjfoLxnmoeigS1Z1yg1vw==} + /@algolia/client-analytics/4.13.1: + resolution: {integrity: sha512-iOS1JBqh7xaL5x00M5zyluZ9+9Uy9GqtYHv/2SMuzNW1qP7/0doz1lbcsP3S7KBbZANJTFHUOfuqyRLPk91iFA==} dependencies: - '@algolia/client-common': 4.10.3 - '@algolia/client-search': 4.10.3 - '@algolia/requester-common': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/client-common': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@algolia/client-common/4.10.3: - resolution: {integrity: sha512-uFyP2Z14jG2hsFRbAoavna6oJf4NTXaSDAZgouZUZlHlBp5elM38sjNeA5HR9/D9J/GjwaB1SgB7iUiIWYBB4w==} + /@algolia/client-common/4.13.1: + resolution: {integrity: sha512-LcDoUE0Zz3YwfXJL6lJ2OMY2soClbjrrAKB6auYVMNJcoKZZ2cbhQoFR24AYoxnGUYBER/8B+9sTBj5bj/Gqbg==} dependencies: - '@algolia/requester-common': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@algolia/client-personalization/4.10.3: - resolution: {integrity: sha512-NS7Nx8EJ/nduGXT8CFo5z7kLF0jnFehTP3eC+z+GOEESH3rrs7uR12IZHxv5QhQswZa9vl925zCOZDcDVoENCg==} + /@algolia/client-personalization/4.13.1: + resolution: {integrity: sha512-1CqrOW1ypVrB4Lssh02hP//YxluoIYXAQCpg03L+/RiXJlCs+uIqlzC0ctpQPmxSlTK6h07kr50JQoYH/TIM9w==} dependencies: - '@algolia/client-common': 4.10.3 - '@algolia/requester-common': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@algolia/client-search/4.10.3: - resolution: {integrity: sha512-Zwnp2G94IrNFKWCG/k7epI5UswRkPvL9FCt7/slXe2bkjP2y/HA37gzRn+9tXoLVRwd7gBzrtOA4jFKIyjrtVw==} + /@algolia/client-search/4.13.1: + resolution: {integrity: sha512-YQKYA83MNRz3FgTNM+4eRYbSmHi0WWpo019s5SeYcL3HUan/i5R09VO9dk3evELDFJYciiydSjbsmhBzbpPP2A==} dependencies: - '@algolia/client-common': 4.10.3 - '@algolia/requester-common': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/client-common': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true - /@algolia/logger-common/4.10.3: - resolution: {integrity: sha512-M6xi+qov2bkgg1H9e1Qtvq/E/eKsGcgz8RBbXNzqPIYoDGZNkv+b3b8YMo3dxd4Wd6M24HU1iqF3kmr1LaXndg==} + /@algolia/logger-common/4.13.1: + resolution: {integrity: sha512-L6slbL/OyZaAXNtS/1A8SAbOJeEXD5JcZeDCPYDqSTYScfHu+2ePRTDMgUTY4gQ7HsYZ39N1LujOd8WBTmM2Aw==} dev: true - /@algolia/logger-console/4.10.3: - resolution: {integrity: sha512-vVgRI7b4PHjgBdRkv/cRz490twvkLoGdpC4VYzIouSrKj8SIVLRhey3qgXk7oQXi3xoxVAv6NrklHfpO8Bpx0w==} + /@algolia/logger-console/4.13.1: + resolution: {integrity: sha512-7jQOTftfeeLlnb3YqF8bNgA2GZht7rdKkJ31OCeSH2/61haO0tWPoNRjZq9XLlgMQZH276pPo0NdiArcYPHjCA==} dependencies: - '@algolia/logger-common': 4.10.3 + '@algolia/logger-common': 4.13.1 dev: true - /@algolia/requester-browser-xhr/4.10.3: - resolution: {integrity: sha512-4WIk1zreFbc1EF6+gsfBTQvwSNjWc20zJAAExRWql/Jq5yfVHmwOqi/CajA53/cXKFBqo80DAMRvOiwP+hOLYw==} + /@algolia/requester-browser-xhr/4.13.1: + resolution: {integrity: sha512-oa0CKr1iH6Nc7CmU6RE7TnXMjHnlyp7S80pP/LvZVABeJHX3p/BcSCKovNYWWltgTxUg0U1o+2uuy8BpMKljwA==} dependencies: - '@algolia/requester-common': 4.10.3 + '@algolia/requester-common': 4.13.1 dev: true - /@algolia/requester-common/4.10.3: - resolution: {integrity: sha512-PNfLHmg0Hujugs3rx55uz/ifv7b9HVdSFQDb2hj0O5xZaBEuQCNOXC6COrXR8+9VEfqp2swpg7zwgtqFxh+BtQ==} + /@algolia/requester-common/4.13.1: + resolution: {integrity: sha512-eGVf0ID84apfFEuXsaoSgIxbU3oFsIbz4XiotU3VS8qGCJAaLVUC5BUJEkiFENZIhon7hIB4d0RI13HY4RSA+w==} dev: true - /@algolia/requester-node-http/4.10.3: - resolution: {integrity: sha512-A9ZcGfEvgqf0luJApdNcIhsRh6MShn2zn2tbjwjGG1joF81w+HUY+BWuLZn56vGwAA9ZB9n00IoJJpxibbfofg==} + /@algolia/requester-node-http/4.13.1: + resolution: {integrity: sha512-7C0skwtLdCz5heKTVe/vjvrqgL/eJxmiEjHqXdtypcE5GCQCYI15cb+wC4ytYioZDMiuDGeVYmCYImPoEgUGPw==} dependencies: - '@algolia/requester-common': 4.10.3 + '@algolia/requester-common': 4.13.1 dev: true - /@algolia/transporter/4.10.3: - resolution: {integrity: sha512-n1lRyKDbrckbMEgm7QXtj3nEWUuzA3aKLzVQ43/F/RCFib15j4IwtmYhXR6OIBRSc7+T0Hm48S0J6F+HeYCQkw==} + /@algolia/transporter/4.13.1: + resolution: {integrity: sha512-pICnNQN7TtrcYJqqPEXByV8rJ8ZRU2hCiIKLTLRyNpghtQG3VAFk6fVtdzlNfdUGZcehSKGarPIZEHlQXnKjgw==} dependencies: - '@algolia/cache-common': 4.10.3 - '@algolia/logger-common': 4.10.3 - '@algolia/requester-common': 4.10.3 + '@algolia/cache-common': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/requester-common': 4.13.1 dev: true /@ampproject/remapping/2.1.2: @@ -462,22 +472,22 @@ packages: '@jridgewell/trace-mapping': 0.3.4 dev: true - /@antfu/eslint-config-basic/0.25.1_kor2e3kwnnzugzo3aovmfcq2la: - resolution: {integrity: sha512-FiOC33yoqHJCElFjSPJ9rHIjGSvJSqbYE58PgRXtJE9E4MM00vwzbA9iKILLnj27o3r3V+1sngHWlIeGaQu/iA==} + /@antfu/eslint-config-basic/0.25.2_xuuykav7urhdozug7htlfgar3u: + resolution: {integrity: sha512-D81jE90B7cujMmU2mKEaUcRsKRAfVX4PniEoaD0c3HiqprqghfBjuv3B6p1+tG9uJQAgLBVsK+G92Y+AAgFaOA==} peerDependencies: eslint: '>=7.4.0' dependencies: - eslint: 8.17.0 - eslint-plugin-antfu: 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.17.0 + eslint: 8.19.0 + eslint-plugin-antfu: 0.25.2_4x5o4skxv6sl53vpwefgt23khm + eslint-plugin-eslint-comments: 3.2.0_eslint@8.19.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_er3f6f6cekbq4lwnvn7afiwhn4 - eslint-plugin-jsonc: 2.2.1_eslint@8.17.0 - eslint-plugin-markdown: 2.2.1_eslint@8.17.0 - eslint-plugin-n: 15.2.0_eslint@8.17.0 - eslint-plugin-promise: 6.0.0_eslint@8.17.0 - eslint-plugin-unicorn: 42.0.0_eslint@8.17.0 - eslint-plugin-yml: 1.0.0_eslint@8.17.0 + eslint-plugin-import: 2.26.0_xgi3rtbx7oxkcq3vxqkef6isyu + eslint-plugin-jsonc: 2.2.1_eslint@8.19.0 + eslint-plugin-markdown: 2.2.1_eslint@8.19.0 + eslint-plugin-n: 15.2.0_eslint@8.19.0 + eslint-plugin-promise: 6.0.0_eslint@8.19.0 + eslint-plugin-unicorn: 42.0.0_eslint@8.19.0 + eslint-plugin-yml: 1.0.0_eslint@8.19.0 jsonc-eslint-parser: 2.1.0 yaml-eslint-parser: 1.0.1 transitivePeerDependencies: @@ -488,14 +498,14 @@ packages: - typescript dev: true - /@antfu/eslint-config-react/0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-gLdRj4nmOk4W9ORzvkwf8kklCkSxY7ox7BKE97HYcGtaq5oAQjibYC+WPkLklj2+BQuOXcZdGbqJgx/+qHfRrw==} + /@antfu/eslint-config-react/0.25.2_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-jGol7/UTUa9z55p4Oy/K5yGgY179fj1kl0kdo3bRnFjzUZQuDGuxw5HiZdYx333pjBdizkPl6cMJ8M6sc3PzFg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 - eslint-plugin-react: 7.30.0_eslint@8.17.0 + '@antfu/eslint-config-ts': 0.25.2_4x5o4skxv6sl53vpwefgt23khm + eslint: 8.19.0 + eslint-plugin-react: 7.30.0_eslint@8.19.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -503,31 +513,31 @@ packages: - typescript dev: true - /@antfu/eslint-config-ts/0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-bKaSOah8Qb5ND0i14x3kcpfMA5euxy/9VYVwZQ2XJgY6hkjEY1wTyC0Jw6JQvTYglEycEc2SDrtEZ0+0SKA/jg==} + /@antfu/eslint-config-ts/0.25.2_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-Dpp4r3CaDZVh73lMxhW0sVGsPwUf1YTpYV5JefmBtgEZKOAc+QqYbLjFZ6QGRUpdPLldRvD+xTFpax6t8NKgyA==} peerDependencies: eslint: '>=7.4.0' typescript: '>=3.9' dependencies: - '@antfu/eslint-config-basic': 0.25.1_kor2e3kwnnzugzo3aovmfcq2la - '@typescript-eslint/eslint-plugin': 5.27.0_kor2e3kwnnzugzo3aovmfcq2la - '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 - typescript: 4.7.3 + '@antfu/eslint-config-basic': 0.25.2_xuuykav7urhdozug7htlfgar3u + '@typescript-eslint/eslint-plugin': 5.30.3_xuuykav7urhdozug7htlfgar3u + '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + eslint: 8.19.0 + typescript: 4.7.4 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /@antfu/eslint-config-vue/0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-Z9MCGYKZO50eU8YwgqBYWx+GVSOfDHxbIf6+BLxpDmrVGUuJQMqT5CIcihSRkQMeH/drQwPmQKbSSmVdjOLHrg==} + /@antfu/eslint-config-vue/0.25.2_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-ObZOzvQvLe/qETq5miVmFWRgjNwWAE/P1I2YhKyDFK7KHquM7bKysfnmkoPpm2HkOpseMILoc+5UKo/w3L7GHg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-ts': 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 - eslint-plugin-vue: 9.1.0_eslint@8.17.0 + '@antfu/eslint-config-ts': 0.25.2_4x5o4skxv6sl53vpwefgt23khm + eslint: 8.19.0 + eslint-plugin-vue: 9.1.0_eslint@8.19.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -535,25 +545,25 @@ packages: - typescript dev: true - /@antfu/eslint-config/0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-CRg2LL6bh+lWWfG5TDJh3TUQTh+immu6IWkiVaJJn4jVD7jFQSewvIQUoPo7/YEPFpL2TTCCUjmT2YpmSbnedg==} + /@antfu/eslint-config/0.25.2_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-dIqxqBa6ALqaBQyErMnYLpyn4xpwp1YefbYxDMgNFM8MzY/ShJgaBWAGlywFeDwyAR44jaaVY8wRwDxODF8bPg==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-react': 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - '@antfu/eslint-config-vue': 0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4 - '@typescript-eslint/eslint-plugin': 5.27.0_kor2e3kwnnzugzo3aovmfcq2la - '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.17.0 + '@antfu/eslint-config-react': 0.25.2_4x5o4skxv6sl53vpwefgt23khm + '@antfu/eslint-config-vue': 0.25.2_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/eslint-plugin': 5.30.3_5i3pcl5pxla7c23jpobbrffwzm + '@typescript-eslint/parser': 5.27.0_4x5o4skxv6sl53vpwefgt23khm + eslint: 8.19.0 + eslint-plugin-eslint-comments: 3.2.0_eslint@8.19.0 eslint-plugin-html: 6.2.0 - eslint-plugin-import: 2.26.0_er3f6f6cekbq4lwnvn7afiwhn4 - eslint-plugin-jsonc: 2.2.1_eslint@8.17.0 - eslint-plugin-n: 15.2.0_eslint@8.17.0 - eslint-plugin-promise: 6.0.0_eslint@8.17.0 - eslint-plugin-unicorn: 42.0.0_eslint@8.17.0 - eslint-plugin-vue: 9.1.0_eslint@8.17.0 - eslint-plugin-yml: 1.0.0_eslint@8.17.0 + eslint-plugin-import: 2.26.0_gdogtd7dhr6ux2h3ajdmj4r2tu + eslint-plugin-jsonc: 2.2.1_eslint@8.19.0 + eslint-plugin-n: 15.2.0_eslint@8.19.0 + eslint-plugin-promise: 6.0.0_eslint@8.19.0 + eslint-plugin-unicorn: 42.0.0_eslint@8.19.0 + eslint-plugin-vue: 9.1.0_eslint@8.19.0 + eslint-plugin-yml: 1.0.0_eslint@8.19.0 jsonc-eslint-parser: 2.1.0 yaml-eslint-parser: 1.0.1 transitivePeerDependencies: @@ -570,13 +580,13 @@ packages: find-up: 5.0.0 dev: true - /@antfu/ni/0.16.2: - resolution: {integrity: sha512-HZH4I07EYKU4KZLtUYm/zEmaDIhaq51H/qu45uH1AcUPWqMGbB7evE/TnSr0SGInEA+oQs4Is5Vn/PmQhfuU5w==} + /@antfu/ni/0.16.3: + resolution: {integrity: sha512-/C1N/hORSJp1qJHr4oRqQzmWPqB6S42T4HV4dWhXOllPJkcqQA/L40U55Oc7Gq4Gm9pLeCNZn7YYU1kUK2Ekpg==} hasBin: true dev: true - /@antfu/utils/0.5.1: - resolution: {integrity: sha512-8Afo0+xvYe1K8Wm4xHTymfTkpzy36aaqDvhXIayUwl+mecMG9Xzl3XjXa6swG6Bk8FBeQ646RyvmsYt6+2Be9g==} + /@antfu/utils/0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} dev: true /@apideck/better-ajv-errors/0.3.1_ajv@8.6.0: @@ -712,13 +722,6 @@ packages: jsesc: 2.5.2 source-map: 0.5.7 - /@babel/helper-annotate-as-pure/7.16.0: - resolution: {integrity: sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 - dev: true - /@babel/helper-annotate-as-pure/7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} @@ -1496,15 +1499,6 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: false - /@babel/plugin-syntax-jsx/7.16.0: - resolution: {integrity: sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.16.7 - dev: true - /@babel/plugin-syntax-jsx/7.16.7: resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} @@ -1903,19 +1897,6 @@ packages: '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-transform-react-jsx/7.16.0: - resolution: {integrity: sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-annotate-as-pure': 7.16.0 - '@babel/helper-module-imports': 7.16.0 - '@babel/helper-plugin-utils': 7.14.5 - '@babel/plugin-syntax-jsx': 7.16.0 - '@babel/types': 7.17.0 - dev: true - /@babel/plugin-transform-react-jsx/7.17.3: resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==} engines: {node: '>=6.9.0'} @@ -2260,31 +2241,35 @@ packages: '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 - /@docsearch/css/3.1.0: - resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} + /@docsearch/css/3.1.1: + resolution: {integrity: sha512-utLgg7E1agqQeqCJn05DWC7XXMk4tMUUnL7MZupcknRu2OzGN13qwey2qA/0NAKkVBGugiWtON0+rlU0QIPojg==} dev: true - /@docsearch/js/3.1.0: - resolution: {integrity: sha512-5XSK+xbP0hcTIp54MECqxkWLs6kf7Ug4nWdxWNtx8cUpLiFNFnKXDxCb35wnyNpjukmrx7Q9DkO5tFFsmNVxng==} + /@docsearch/js/3.1.1: + resolution: {integrity: sha512-bt7l2aKRoSnLUuX+s4LVQ1a7AF2c9myiZNv5uvQCePG5tpvVGpwrnMwqVXOUJn9q6FwVVhOrQMO/t+QmnnAEUw==} dependencies: - '@docsearch/react': 3.1.0 - preact: 10.7.3 + '@docsearch/react': 3.1.1 + preact: 10.8.2 transitivePeerDependencies: + - '@algolia/client-search' - '@types/react' - react - react-dom dev: true - /@docsearch/react/3.1.0: - resolution: {integrity: sha512-bjB6ExnZzf++5B7Tfoi6UXgNwoUnNOfZ1NyvnvPhWgCMy5V/biAtLL4o7owmZSYdAKeFSvZ5Lxm0is4su/dBWg==} + /@docsearch/react/3.1.1: + resolution: {integrity: sha512-cfoql4qvtsVRqBMYxhlGNpvyy/KlCoPqjIsJSZYqYf9AplZncKjLBTcwBu6RXFMVCe30cIFljniI4OjqAU67pQ==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' react-dom: '>= 16.8.0 < 19.0.0' dependencies: - '@algolia/autocomplete-core': 1.6.3 - '@docsearch/css': 3.1.0 - algoliasearch: 4.10.3 + '@algolia/autocomplete-core': 1.7.1 + '@algolia/autocomplete-preset-algolia': 1.7.1_algoliasearch@4.13.1 + '@docsearch/css': 3.1.1 + algoliasearch: 4.13.1 + transitivePeerDependencies: + - '@algolia/client-search' dev: true /@eslint/eslintrc/1.3.0: @@ -2327,7 +2312,7 @@ packages: resolution: {integrity: sha512-m+rnw7qKHq/XF7DAi4BcFoEAcXBfqqMgQJh8brGEHeqE/RUvgDMjmxsHgWnVpFsG+VmjGyAiI7nwXdliCwEU0Q==} dependencies: '@antfu/install-pkg': 0.1.0 - '@antfu/utils': 0.5.1 + '@antfu/utils': 0.5.2 '@iconify/types': 1.1.0 debug: 4.3.4 kolorist: 1.5.1 @@ -2381,21 +2366,21 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@preact/preset-vite/2.2.0_preact@10.7.2+vite@2.9.9: - resolution: {integrity: sha512-xOtPzyVSPphUF/tRnzjxkCR/ovbCS6O25ekdCw5MGKcaAkb6PDRo50tS1x2n0+O9qL7Z/qrHJKpyCVn29A4iMg==} + /@preact/preset-vite/2.3.0_preact@10.8.2+vite@2.9.13: + resolution: {integrity: sha512-0kOuz7wdrQLqrPlyI/Ypw9IWDF2++GGcOHMRBYO5T2w2+dheelaBH+XrIN/okqdsGIflzFIFNyIGubo5BC8wbQ==} peerDependencies: '@babel/core': 7.x - vite: 2.x + vite: 2.x || 3.x dependencies: - '@babel/plugin-transform-react-jsx': 7.16.0 + '@babel/plugin-transform-react-jsx': 7.17.3 '@babel/plugin-transform-react-jsx-development': 7.16.7 - '@prefresh/vite': 2.2.8_preact@10.7.2+vite@2.9.9 - '@rollup/pluginutils': 4.1.1 + '@prefresh/vite': 2.2.8_preact@10.8.2+vite@2.9.13 + '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2 debug: 4.3.4 kolorist: 1.5.1 resolve: 1.22.0 - vite: 2.9.9 + vite: 2.9.13 transitivePeerDependencies: - preact - supports-color @@ -2405,19 +2390,19 @@ packages: resolution: {integrity: sha512-fYAWbU1WDSLn108kKY4eDaaeUcnszFqXjgaGKYXNZ5NLulpRTpsrY+Sbfo9q8LDpWrBpqIgzjrwNnvglWI1xNQ==} dev: true - /@prefresh/core/1.3.4_preact@10.7.2: + /@prefresh/core/1.3.4_preact@10.8.2: resolution: {integrity: sha512-s7iNsnyJ3lZEUrYIgmVIB/hKtp4U6mdD91a31Zg7Q8M49O0x2KThrbrMQYraoDDrs4STdFB8Zv6bceUguOoX1A==} peerDependencies: preact: ^10.0.0 dependencies: - preact: 10.7.2 + preact: 10.8.2 dev: true /@prefresh/utils/1.1.3: resolution: {integrity: sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==} dev: true - /@prefresh/vite/2.2.8_preact@10.7.2+vite@2.9.9: + /@prefresh/vite/2.2.8_preact@10.8.2+vite@2.9.13: resolution: {integrity: sha512-yGGa+PKPYPTzMlxgQ8aBgxw9K69I8X4iQ0E6KOcIvls96WKqKLLOYZW9SUgCve446jpUXvc9udviPBZjCeZIIQ==} peerDependencies: preact: ^10.4.0 @@ -2425,16 +2410,16 @@ packages: dependencies: '@babel/core': 7.17.9 '@prefresh/babel-plugin': 0.4.3 - '@prefresh/core': 1.3.4_preact@10.7.2 + '@prefresh/core': 1.3.4_preact@10.8.2 '@prefresh/utils': 1.1.3 '@rollup/pluginutils': 4.2.1 - preact: 10.7.2 - vite: 2.9.9 + preact: 10.8.2 + vite: 2.9.13 transitivePeerDependencies: - supports-color dev: true - /@rollup/plugin-babel/5.3.0_dg4xmqxpwlpo2f65f4ul4aocye: + /@rollup/plugin-babel/5.3.0_u5penlcrldzmp4hsmwpt3xf4vq: resolution: {integrity: sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -2447,33 +2432,33 @@ packages: dependencies: '@babel/core': 7.16.0 '@babel/helper-module-imports': 7.16.0 - '@rollup/pluginutils': 3.1.0_rollup@2.75.5 - rollup: 2.75.5 + '@rollup/pluginutils': 3.1.0_rollup@2.75.7 + rollup: 2.75.7 dev: false - /@rollup/plugin-node-resolve/11.2.1_rollup@2.75.5: + /@rollup/plugin-node-resolve/11.2.1_rollup@2.75.7: resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.75.5 + '@rollup/pluginutils': 3.1.0_rollup@2.75.7 '@types/resolve': 1.17.1 builtin-modules: 3.2.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.0 - rollup: 2.75.5 + rollup: 2.75.7 dev: false - /@rollup/plugin-replace/2.4.2_rollup@2.75.5: + /@rollup/plugin-replace/2.4.2_rollup@2.75.7: resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.75.5 + '@rollup/pluginutils': 3.1.0_rollup@2.75.7 magic-string: 0.25.7 - rollup: 2.75.5 + rollup: 2.75.7 dev: false /@rollup/plugin-replace/4.0.0: @@ -2496,7 +2481,7 @@ packages: picomatch: 2.3.0 dev: true - /@rollup/pluginutils/3.1.0_rollup@2.75.5: + /@rollup/pluginutils/3.1.0_rollup@2.75.7: resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -2505,7 +2490,7 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.0 - rollup: 2.75.5 + rollup: 2.75.7 dev: false /@rollup/pluginutils/4.1.1: @@ -2524,12 +2509,12 @@ packages: picomatch: 2.3.1 dev: true - /@roxi/routify/2.18.6: - resolution: {integrity: sha512-+dyLWFnyWLTORAIz+KFNbnXkUg5sp4+dzO0aSaa8SfmRrUoM+hLw8QlM+ce1p3Fvcti/lDR+jcH3uziZVFpVOQ==} + /@roxi/routify/2.18.8: + resolution: {integrity: sha512-yVvUAXno9XuweZMgGK5FeXZwijUA3z5tKh42KnwCi6snMvjEfPMBnDKidEk4ybUF27IfpBKvUs0QoPrFepvytQ==} hasBin: true dependencies: '@roxi/ssr': 0.2.1 - '@types/node': 12.20.19 + '@types/node': 12.20.55 chalk: 4.1.2 cheap-watch: 1.0.4 commander: 7.2.0 @@ -2571,18 +2556,18 @@ packages: tiny-glob: 0.2.9 dev: true - /@sveltejs/kit/1.0.0-next.352_svelte@3.48.0: - resolution: {integrity: sha512-cYQWGZ2TU1iMsh1cqi44FJm5Aqs3iOkuUOnRpoecthcbmiZaqkD1sPG/uROBIPexXSbfyUfrck/hgr9vdCAmCw==} + /@sveltejs/kit/1.0.0-next.357_svelte@3.48.0: + resolution: {integrity: sha512-nCAehVybIEpQNnPu61V/EFVdfDb1nBSiQUfW9EcSSDEUbyAMCVBOKZZuzQ0qQDp3xniqRkyDzpBA4wN+ADxHBw==} engines: {node: '>=16.7'} hasBin: true peerDependencies: svelte: ^3.44.0 dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.0-next.49_svelte@3.48.0+vite@2.9.10 + '@sveltejs/vite-plugin-svelte': 1.0.0-next.49_svelte@3.48.0+vite@2.9.13 chokidar: 3.5.3 sade: 1.8.1 svelte: 3.48.0 - vite: 2.9.10 + vite: 2.9.13 transitivePeerDependencies: - diff-match-patch - less @@ -2591,30 +2576,7 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte/1.0.0-next.44_svelte@3.48.0+vite@2.9.9: - resolution: {integrity: sha512-n+sssEWbzykPS447FmnNyU5GxEhrBPDVd0lxNZnxRGz9P6651LjjwAnISKr3CKgT9v8IybP8VD0n2i5XzbqExg==} - engines: {node: ^14.13.1 || >= 16} - peerDependencies: - diff-match-patch: ^1.0.5 - svelte: ^3.44.0 - vite: ^2.9.0 - peerDependenciesMeta: - diff-match-patch: - optional: true - dependencies: - '@rollup/pluginutils': 4.2.1 - debug: 4.3.4 - deepmerge: 4.2.2 - kleur: 4.1.4 - magic-string: 0.26.1 - svelte: 3.48.0 - svelte-hmr: 0.14.11_svelte@3.48.0 - vite: 2.9.9 - transitivePeerDependencies: - - supports-color - dev: true - - /@sveltejs/vite-plugin-svelte/1.0.0-next.49_svelte@3.48.0+vite@2.9.10: + /@sveltejs/vite-plugin-svelte/1.0.0-next.49_svelte@3.48.0+vite@2.9.13: resolution: {integrity: sha512-AKh0Ka8EDgidnxWUs8Hh2iZLZovkETkefO99XxZ4sW4WGJ7VFeBx5kH/NIIGlaNHLcrIvK3CK0HkZwC3Cici0A==} engines: {node: ^14.13.1 || >= 16} peerDependencies: @@ -2632,7 +2594,7 @@ packages: magic-string: 0.26.2 svelte: 3.48.0 svelte-hmr: 0.14.12_svelte@3.48.0 - vite: 2.9.10 + vite: 2.9.13 transitivePeerDependencies: - supports-color dev: true @@ -2683,8 +2645,8 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node/12.20.19: - resolution: {integrity: sha512-niAuZrwrjKck4+XhoCw6AAVQBENHftpXw9F4ryk66fTgYaKQ53R4FI7c9vUGGw5vQis1HKBHDR1gcYI/Bq1xvw==} + /@types/node/12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true /@types/node/16.4.13: @@ -2710,17 +2672,17 @@ packages: resolution: {integrity: sha512-LOnASQoeNZMkzexRuyqcBBDZ6rS+rQxUMkmj5A0PkhhiSZivLIuz6Hxyr1mkGoEZEkk66faROmpMi4fFkrKsBA==} dev: true - /@types/react-dom/18.0.4: - resolution: {integrity: sha512-FgTtbqPOCI3dzZPZoC2T/sx3L34qxy99ITWn4eoSA95qPyXDMH0ALoAqUp49ITniiJFsXUVBtalh/KffMpg21Q==} + /@types/react-dom/18.0.5: + resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} dependencies: - '@types/react': 18.0.9 + '@types/react': 18.0.14 dev: true /@types/react-router-config/5.0.6: resolution: {integrity: sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.9 + '@types/react': 18.0.14 '@types/react-router': 5.1.16 dev: true @@ -2728,7 +2690,7 @@ packages: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.9 + '@types/react': 18.0.14 '@types/react-router': 5.1.16 dev: true @@ -2736,19 +2698,11 @@ packages: resolution: {integrity: sha512-8d7nR/fNSqlTFGHti0R3F9WwIertOaaA1UEB8/jr5l5mDMOs4CidEgvvYMw4ivqrBK+vtVLxyTj2P+Pr/dtgzg==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.9 - dev: true - - /@types/react/18.0.12: - resolution: {integrity: sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg==} - dependencies: - '@types/prop-types': 15.7.4 - '@types/scheduler': 0.16.2 - csstype: 3.0.8 + '@types/react': 18.0.14 dev: true - /@types/react/18.0.9: - resolution: {integrity: sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==} + /@types/react/18.0.14: + resolution: {integrity: sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==} dependencies: '@types/prop-types': 15.7.4 '@types/scheduler': 0.16.2 @@ -2778,6 +2732,9 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/web-bluetooth/0.0.14: + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + /@types/workbox-build/5.0.1: resolution: {integrity: sha512-lJrGzEHX/QT3E4F5ABBNvCb8ObOr2LfHNAqAGfRuBPncWlU/d3iIUorECKNXmnZnLbLsgpgvhJWPMgByzR+L+A==} dependencies: @@ -2788,8 +2745,8 @@ packages: resolution: {integrity: sha512-op5P/f6n+9g5X4a+sYONp9EALnNxpoU3oXuB/BjeQv9d+k0bNE4LYSF06K6tXYL4PeCIZVJOi4yMCUCOi2NaqQ==} dev: true - /@typescript-eslint/eslint-plugin/5.25.0_jorowkvdqu6pwramweg5le7ncu: - resolution: {integrity: sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==} + /@typescript-eslint/eslint-plugin/5.30.3_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-QEgE1uahnDbWEkZlidq7uKB630ny1NN8KbLPmznX+8hYsYpoV1/quG1Nzvs141FVuumuS7O0EpqYw3RB4AVzRg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2799,24 +2756,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.25.0_utdtartgf6fqqgkivzeynh76la - '@typescript-eslint/scope-manager': 5.25.0 - '@typescript-eslint/type-utils': 5.25.0_utdtartgf6fqqgkivzeynh76la - '@typescript-eslint/utils': 5.25.0_utdtartgf6fqqgkivzeynh76la + '@typescript-eslint/scope-manager': 5.30.3 + '@typescript-eslint/type-utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 - eslint: 8.16.0 + eslint: 8.19.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.6.4 - typescript: 4.6.4 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.27.0_kor2e3kwnnzugzo3aovmfcq2la: - resolution: {integrity: sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==} + /@typescript-eslint/eslint-plugin/5.30.3_5i3pcl5pxla7c23jpobbrffwzm: + resolution: {integrity: sha512-QEgE1uahnDbWEkZlidq7uKB630ny1NN8KbLPmznX+8hYsYpoV1/quG1Nzvs141FVuumuS7O0EpqYw3RB4AVzRg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2826,24 +2782,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/type-utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - '@typescript-eslint/utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/parser': 5.27.0_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/scope-manager': 5.30.3 + '@typescript-eslint/type-utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 - eslint: 8.17.0 + eslint: 8.19.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ==} + /@typescript-eslint/eslint-plugin/5.30.3_xuuykav7urhdozug7htlfgar3u: + resolution: {integrity: sha512-QEgE1uahnDbWEkZlidq7uKB630ny1NN8KbLPmznX+8hYsYpoV1/quG1Nzvs141FVuumuS7O0EpqYw3RB4AVzRg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -2853,23 +2809,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/type-utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - '@typescript-eslint/utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/scope-manager': 5.30.3 + '@typescript-eslint/type-utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 - eslint: 8.17.0 + eslint: 8.19.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.25.0_utdtartgf6fqqgkivzeynh76la: - resolution: {integrity: sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==} + /@typescript-eslint/parser/5.27.0_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2878,18 +2835,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.25.0 - '@typescript-eslint/types': 5.25.0 - '@typescript-eslint/typescript-estree': 5.25.0_typescript@4.6.4 + '@typescript-eslint/scope-manager': 5.27.0 + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.4 debug: 4.3.4 - eslint: 8.16.0 - typescript: 4.6.4 + eslint: 8.19.0 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA==} + /@typescript-eslint/parser/5.30.3_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-ddwGEPC3E49DduAUC8UThQafHRE5uc1NE8jdOgl+w8/NrYF50MJQNeD3u4JZrqAXdY9rJz0CdQ9HpNME20CzkA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2898,24 +2855,16 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.27.0 - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.3 + '@typescript-eslint/scope-manager': 5.30.3 + '@typescript-eslint/types': 5.30.3 + '@typescript-eslint/typescript-estree': 5.30.3_typescript@4.7.4 debug: 4.3.4 - eslint: 8.17.0 - typescript: 4.7.3 + eslint: 8.19.0 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.25.0: - resolution: {integrity: sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.25.0 - '@typescript-eslint/visitor-keys': 5.25.0 - dev: true - /@typescript-eslint/scope-manager/5.27.0: resolution: {integrity: sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2924,27 +2873,16 @@ packages: '@typescript-eslint/visitor-keys': 5.27.0 dev: true - /@typescript-eslint/type-utils/5.25.0_utdtartgf6fqqgkivzeynh76la: - resolution: {integrity: sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==} + /@typescript-eslint/scope-manager/5.30.3: + resolution: {integrity: sha512-yVJIIUXeo/vv6Alj6lKBvsqnRs5hcxUpN3Dg3aD9Zv6r7p6Nn106jJcr5rnpRHAReEb/aMI2RWrt3JmL17eCVA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true dependencies: - '@typescript-eslint/utils': 5.25.0_utdtartgf6fqqgkivzeynh76la - debug: 4.3.4 - eslint: 8.16.0 - tsutils: 3.21.0_typescript@4.6.4 - typescript: 4.6.4 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types': 5.30.3 + '@typescript-eslint/visitor-keys': 5.30.3 dev: true - /@typescript-eslint/type-utils/5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g==} + /@typescript-eslint/type-utils/5.30.3_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-IIzakE7OXOqdwPaXhRiPnaZ8OuJJYBLufOffd9fqzkI4IMFIYq8KC7bghdnF7QUJTirURRErQFrJ/w5UpwIqaw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -2953,27 +2891,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm debug: 4.3.4 - eslint: 8.17.0 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + eslint: 8.19.0 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.25.0: - resolution: {integrity: sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==} + /@typescript-eslint/types/5.27.0: + resolution: {integrity: sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.27.0: - resolution: {integrity: sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A==} + /@typescript-eslint/types/5.30.3: + resolution: {integrity: sha512-vshU3pjSTgBPNgfd55JLYngHkXuwQP68fxYFUAg1Uq+JrR3xG/XjvL9Dmv28CpOERtqwkaR4QQ3mD0NLZcE2Xw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.25.0_typescript@4.6.4: - resolution: {integrity: sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==} + /@typescript-eslint/typescript-estree/5.27.0_typescript@4.7.4: + resolution: {integrity: sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -2981,20 +2919,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.25.0 - '@typescript-eslint/visitor-keys': 5.25.0 + '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/visitor-keys': 5.27.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.6.4 - typescript: 4.6.4 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.27.0_typescript@4.7.3: - resolution: {integrity: sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ==} + /@typescript-eslint/typescript-estree/5.30.3_typescript@4.7.4: + resolution: {integrity: sha512-jqVh5N9AJx6+7yRgoA+ZelAFrHezgI9pzI9giv7s84DDOmtpFwTgURcpICDHyz9x6vAeOu91iACZ4dBTVfzIyA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -3002,78 +2940,60 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/visitor-keys': 5.27.0 + '@typescript-eslint/types': 5.30.3 + '@typescript-eslint/visitor-keys': 5.30.3 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.25.0_utdtartgf6fqqgkivzeynh76la: - resolution: {integrity: sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==} + /@typescript-eslint/utils/5.30.3_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-OEaBXGxxdIy35H+jyXfYAMQ66KMJczK9hEhL3gR6IRbWe5PyK+bPDC9zbQNVII6rNFTfF/Mse0z21NlEU+vOMw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.25.0 - '@typescript-eslint/types': 5.25.0 - '@typescript-eslint/typescript-estree': 5.25.0_typescript@4.6.4 - eslint: 8.16.0 + '@typescript-eslint/scope-manager': 5.30.3 + '@typescript-eslint/types': 5.30.3 + '@typescript-eslint/typescript-estree': 5.30.3_typescript@4.7.4 + eslint: 8.19.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.16.0 + eslint-utils: 3.0.0_eslint@8.19.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA==} + /@typescript-eslint/visitor-keys/5.27.0: + resolution: {integrity: sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.27.0 '@typescript-eslint/types': 5.27.0 - '@typescript-eslint/typescript-estree': 5.27.0_typescript@4.7.3 - eslint: 8.17.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.17.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys/5.25.0: - resolution: {integrity: sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.25.0 eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.27.0: - resolution: {integrity: sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA==} + /@typescript-eslint/visitor-keys/5.30.3: + resolution: {integrity: sha512-ep2xtHOhnSRt6fDP9DSSxrA/FqZhdMF7/Y9fYsxrKss2uWJMbzJyBJ/We1fKc786BJ10pHwrzUlhvpz8i7XzBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.0 + '@typescript-eslint/types': 5.30.3 eslint-visitor-keys: 3.3.0 dev: true - /@unocss/cli/0.38.1: - resolution: {integrity: sha512-R4PcnzXK+mb9FJSsLIQ5oiAin5NliZta9bVSu5K8xQ4A3L17zPY8e8V8XV778rxkmKWu2BA9dFXmoywqev/elw==} + /@unocss/cli/0.38.2: + resolution: {integrity: sha512-9piPujcrHZbd3CEEghdhnGKAMVRzk70op9VEB9s3sxEqEpgomwHvGkTnDlOey4z4bHqgKWnkAteaLvQbUP/L5w==} engines: {node: '>=14'} hasBin: true dependencies: - '@unocss/config': 0.38.1 - '@unocss/core': 0.38.1 - '@unocss/preset-uno': 0.38.1 + '@unocss/config': 0.38.2 + '@unocss/core': 0.38.2 + '@unocss/preset-uno': 0.38.2 cac: 6.7.12 chokidar: 3.5.3 colorette: 2.0.17 @@ -3083,121 +3003,121 @@ packages: perfect-debounce: 0.1.3 dev: true - /@unocss/config/0.38.1: - resolution: {integrity: sha512-+9OPsc7WjuZKF9HV7F1PF4sQq3h0vu+Plc3ehpPZVZdQCWcstZ4edOA4LZtLvQM+h75cuLYRdC0fSR+r1NtnqQ==} + /@unocss/config/0.38.2: + resolution: {integrity: sha512-ttknaVVxKX7K9ais42iJO9sxpt6mVAnQuQHUokR134Q9GrPVDbN232K+jViqWY+TuVlaSgl6Fafx1DwiYsEAbQ==} engines: {node: '>=14'} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 unconfig: 0.3.4 dev: true - /@unocss/core/0.38.1: - resolution: {integrity: sha512-X9nYsiDn/ePvP8pq6b3UZgT1J+Ai6PqBbY5HKmJrKbV9eqrbRcBA/oajK5mHPUSmbSC8nBhhJJz7sz4o5CUzpA==} + /@unocss/core/0.38.2: + resolution: {integrity: sha512-GXJs1R0oRESgPv4UZKvNZCTnT5Iebn/E0bAHHaCugko2ccnqh6bHul7fcShXICwgT+hyQBPEF5SNS2BPcEjKpQ==} dev: true - /@unocss/inspector/0.38.1: - resolution: {integrity: sha512-Xgc8nVUGp0oh6J5KJrJEQIrDmrOSsDDkpq3z2HBIdO6CubrLImzvZmKWFhh+K+QEh7MlhVxFoFcco9GJ6WsmTw==} + /@unocss/inspector/0.38.2: + resolution: {integrity: sha512-d1HojYl/ztE/+UXMcvOWw7gGewZ/GyhvaHVNsaENcH0ORPootSS1PvE2JhPYiIs43IYq6ZzRFCVH0MUqL8ARhQ==} dependencies: gzip-size: 6.0.0 sirv: 2.0.2 dev: true - /@unocss/preset-attributify/0.38.1: - resolution: {integrity: sha512-tsnQArFD0mGIESdk0y2v2tm5YHL15VAKYf0BGIVvCyax9nUOXELc2pdpyZg7PglLkIMC7Oh5HLGu/RcC1+NBJw==} + /@unocss/preset-attributify/0.38.2: + resolution: {integrity: sha512-ySW1kG9eyyUK33nHmOIxGw2oGJqmNv39KwMN5MQL3314WVXl3JsViD2TG4LGktVR6K64mrNAC9TUG/eEXaRLLQ==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/preset-icons/0.38.1: - resolution: {integrity: sha512-D4Mf17BRqqntkBhHyW3GTvSWmntTIvrEIa5a9UHU1nhwpf5d/7to+bp+eNoPUo2IddnLTFfgx+B+PsWL39VKiA==} + /@unocss/preset-icons/0.38.2: + resolution: {integrity: sha512-C4OB09aOW4SVTSRTLQ8gVLSnaFCEccRwDz9ZfJsjVs1pClBU0d5MvNGc3ORDW6u29rOyWaIgEMkFtDW6vDQyOw==} dependencies: '@iconify/utils': 1.0.32 - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 ohmyfetch: 0.4.18 transitivePeerDependencies: - supports-color dev: true - /@unocss/preset-mini/0.38.1: - resolution: {integrity: sha512-5NEoX1I84SqRZcxbSK6qnsHxxdEKFV1M+5pnodphhztO0zBAWCDHeq+IP4QYH1OXbWd9dOzH7C1eKOsNm/MHxg==} + /@unocss/preset-mini/0.38.2: + resolution: {integrity: sha512-xrZHcgjLuOY12+UxnpA0zHtLFnxG1hYWS9CFa/odUM7jtjLq/u+E3LVv4/g/+mwcXyj6EIfe4ItE87s3R87zzg==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/preset-tagify/0.38.1: - resolution: {integrity: sha512-bV+DDWE05/4Aws44I2AIIfeSra9PiOOqOebYD+XtYl8DS1li+jGBkgs2QSxKTCt1FzWJvlAzcTKSqRXEkuhCLw==} + /@unocss/preset-tagify/0.38.2: + resolution: {integrity: sha512-gLOuTQh5epGDMOeDA1KpAh2ygpIZgW9I03WttGaCrlavHBI1PPN2gt6wQe73htetfiwVn7QBPlq1/CKX8CVsvQ==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/preset-typography/0.38.1: - resolution: {integrity: sha512-ukAcYc7StT2SffcqibEu8hheIvd16gUdqiZwKuDjc1o3aF8qDOqFHbPQ9G+XapXEaE6OWAMfJit+jK4JQljAOA==} + /@unocss/preset-typography/0.38.2: + resolution: {integrity: sha512-5MgQKEJmeKC0UehosPLm091Ly+sDRUHtoU71KHsB5llh4WARVy2etIerDxVza5JH7FEIseNUIT5lGZeo5S78Ng==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/preset-uno/0.38.1: - resolution: {integrity: sha512-P3KhGJLpQmiGZl2N8AiqAP9djaD416IhvW08bgwMlYlKKLruicYQC9AM9Obv2N5UwY4I+xUpV4B6aHrMnU8Dww==} + /@unocss/preset-uno/0.38.2: + resolution: {integrity: sha512-BKDTa9FazpQFJhdDZWA6aOYq9tIBdm0XSTQC+Vk20h3yKVF3GlIBjuR5IMZ+ydEkLR/c6kjzdqqKbtHUqEyFXw==} dependencies: - '@unocss/core': 0.38.1 - '@unocss/preset-mini': 0.38.1 - '@unocss/preset-wind': 0.38.1 + '@unocss/core': 0.38.2 + '@unocss/preset-mini': 0.38.2 + '@unocss/preset-wind': 0.38.2 dev: true - /@unocss/preset-web-fonts/0.38.1: - resolution: {integrity: sha512-Q+2w7stTKIbaHsEMZJqLdhuIGFmsWOCLeaAWnuySQN04EIoe1jIWSmOJFDIcA3mijtdT8EaCi+b8hyGe46RXiA==} + /@unocss/preset-web-fonts/0.38.2: + resolution: {integrity: sha512-Gjceka7dlhDC7HH/BRmExfnvPf+6SScfQnaaubsHsJY6aQ55lfZfhD82aNUXUk3p9wUr/M27VQGQ1wCV90G9cA==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 ohmyfetch: 0.4.18 dev: true - /@unocss/preset-wind/0.38.1: - resolution: {integrity: sha512-vCZuj6RalDGNKiIjUdtJNfkLql4dxqkRUW9Eeu2xpQuzRwGdg3u1AV8RApIuq4RmIkar4ZJp35JPSYb7JcE7jw==} + /@unocss/preset-wind/0.38.2: + resolution: {integrity: sha512-e6I07llFT73aMPR7KOk6ebWQUS3SNvu3c5DCriS+iqbplbdQtTP5Ox6Os33FjNIwzjxz8cSwUKUhRGODuFkFyg==} dependencies: - '@unocss/core': 0.38.1 - '@unocss/preset-mini': 0.38.1 + '@unocss/core': 0.38.2 + '@unocss/preset-mini': 0.38.2 dev: true - /@unocss/reset/0.38.1: - resolution: {integrity: sha512-nMdOEuDZkWmaarwFqORJVtWW5BEbpart2jXcq7er1lkIn5mKsgimOTwnvooysX86OqrqRl4HWKhf7xhZS1MG2A==} + /@unocss/reset/0.38.2: + resolution: {integrity: sha512-bK6khIAUQ2syp1eAq3hYK0ONqIBEZsBxMLZg8uFQOepXTJIHDH7fTm5gEXpCFcHJx91Onfcx9V9Twh4DjJv0wQ==} dev: true - /@unocss/scope/0.38.1: - resolution: {integrity: sha512-svuMmUDAKnn3Oa+v23FUim9bmZXrKTB15FLGcEEs87Xnt1gkFAQb4yiLHjqnAOGbVeEVGt34n0/eNC/zzlVyBg==} + /@unocss/scope/0.38.2: + resolution: {integrity: sha512-8tWsn1Ur8gQzSw8Z2tsoaUWEniOPIBBlH3cZlmkVgtOzndp3/JSFRu+lPcrbvEEN7IW2N1sPV5qQ2addHgmFmA==} dev: true - /@unocss/transformer-compile-class/0.38.1: - resolution: {integrity: sha512-BvcDE2sEXLKMgcss3iPcgv0V5x0tRjuPEs0GLti1EIKQum8qYWgZXdwOoGr5NLuKI7k+LmDjKwETb1V/JYUTgg==} + /@unocss/transformer-compile-class/0.38.2: + resolution: {integrity: sha512-Jq+eu3x9griX0m8jMCIZaQJKmFD6ZBGaD0qGQ5GoaPUllYdN1qAE3VdYDRobkMXOEsem8+72esOAExzZhr6oxg==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/transformer-directives/0.38.1: - resolution: {integrity: sha512-qK1xLRgM3VrmT+uteC+AFvZzhac0cdVrxK+pBN43oj6ZfMYhtbfJn0Gwpj71mYwZhL1/lJqPud9AAUPm+NR6yQ==} + /@unocss/transformer-directives/0.38.2: + resolution: {integrity: sha512-x4WhCorfN2r3qgcG31RQhNeyypIYyrqvpt2J/X7s+8MBqcgMFTupQYgVsKw7mOWHlYtEiNA1K7Evr+yOHEMQaA==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 css-tree: 2.1.0 dev: true - /@unocss/transformer-variant-group/0.38.1: - resolution: {integrity: sha512-d9TfCEqkpAHlF7GIJRrvdrL6hVEm8mIDr14+u+O0fM+qHLqQQfVNB0+7NpdB0va6Nj0WfaVEQacX7rlp6JeqpA==} + /@unocss/transformer-variant-group/0.38.2: + resolution: {integrity: sha512-nk8gesr66V7dtcFtN3enzh+wzQN6DCLtX7+ASV5/mm58F83PdmGdfV0vFANjL4e/OngmO99cViYDLlN4DHn6Aw==} dependencies: - '@unocss/core': 0.38.1 + '@unocss/core': 0.38.2 dev: true - /@unocss/vite/0.38.1_vite@2.9.9: - resolution: {integrity: sha512-f4WNUJiorQYf/ZYlNnp96CN9FeXBuX6f0mNlMAbnwyiiUWroQDMx8fHOnFSrqljKIBY3jJWW1cZ9Izp1IEh8Rg==} + /@unocss/vite/0.38.2_vite@2.9.13: + resolution: {integrity: sha512-DuYhbH9L5tWa0bntJySIVWbGkJKH9MwxZ51QKrEHh76c+YzZZo+B8k485GJhCb9bfjT5BxpDhxxZQTaaeA3HbA==} peerDependencies: vite: ^2.9.0 dependencies: '@rollup/pluginutils': 4.2.1 - '@unocss/config': 0.38.1 - '@unocss/core': 0.38.1 - '@unocss/inspector': 0.38.1 - '@unocss/scope': 0.38.1 - '@unocss/transformer-directives': 0.38.1 + '@unocss/config': 0.38.2 + '@unocss/core': 0.38.2 + '@unocss/inspector': 0.38.2 + '@unocss/scope': 0.38.2 + '@unocss/transformer-directives': 0.38.2 magic-string: 0.26.2 - vite: 2.9.9 + vite: 2.9.13 dev: true /@vitejs/plugin-react-refresh/1.3.6: @@ -3213,25 +3133,14 @@ packages: - supports-color dev: true - /@vitejs/plugin-vue/2.3.3_vite@2.9.10+vue@3.2.37: - resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} - engines: {node: '>=12.0.0'} - peerDependencies: - vite: ^2.5.10 - vue: ^3.2.25 - dependencies: - vite: 2.9.10 - vue: 3.2.37 - dev: true - - /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.37: + /@vitejs/plugin-vue/2.3.3_vite@2.9.13+vue@3.2.37: resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} engines: {node: '>=12.0.0'} peerDependencies: vite: ^2.5.10 vue: ^3.2.25 dependencies: - vite: 2.9.9 + vite: 2.9.13 vue: 3.2.37 dev: true @@ -3311,8 +3220,8 @@ packages: /@vue/shared/3.2.37: resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} - /@vueuse/core/8.5.0_vue@3.2.37: - resolution: {integrity: sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==} + /@vueuse/core/8.7.5_vue@3.2.37: + resolution: {integrity: sha512-tqgzeZGoZcXzoit4kOGLWJibDMLp0vdm6ZO41SSUQhkhtrPhAg6dbIEPiahhUu6sZAmSYvVrZgEr5aKD51nrLA==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: ^2.6.0 || ^3.2.0 @@ -3322,16 +3231,17 @@ packages: vue: optional: true dependencies: - '@vueuse/metadata': 8.5.0 - '@vueuse/shared': 8.5.0_vue@3.2.37 + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.7.5 + '@vueuse/shared': 8.7.5_vue@3.2.37 vue: 3.2.37 vue-demi: 0.12.5_vue@3.2.37 - /@vueuse/metadata/8.5.0: - resolution: {integrity: sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g==} + /@vueuse/metadata/8.7.5: + resolution: {integrity: sha512-emJZKRQSaEnVqmlu39NpNp8iaW+bPC2kWykWoWOZMSlO/0QVEmO/rt8A5VhOEJTKLX3vwTevqbiRy9WJRwVOQg==} - /@vueuse/shared/8.5.0_vue@3.2.37: - resolution: {integrity: sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==} + /@vueuse/shared/8.7.5_vue@3.2.37: + resolution: {integrity: sha512-THXPvMBFmg6Gf6AwRn/EdTh2mhqwjGsB2Yfp374LNQSQVKRHtnJ0I42bsZTn7nuEliBxqUrGQm/lN6qUHmhJLw==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: ^2.6.0 || ^3.2.0 @@ -3414,23 +3324,23 @@ packages: uri-js: 4.4.1 dev: false - /algoliasearch/4.10.3: - resolution: {integrity: sha512-OLY0AWlPKGLbSaw14ivMB7BT5fPdp8VdzY4L8FtzZnqmLKsyes24cltGlf7/X96ACkYEcT390SReCDt/9SUIRg==} + /algoliasearch/4.13.1: + resolution: {integrity: sha512-dtHUSE0caWTCE7liE1xaL+19AFf6kWEcyn76uhcitWpntqvicFHXKFoZe5JJcv9whQOTRM6+B8qJz6sFj+rDJA==} dependencies: - '@algolia/cache-browser-local-storage': 4.10.3 - '@algolia/cache-common': 4.10.3 - '@algolia/cache-in-memory': 4.10.3 - '@algolia/client-account': 4.10.3 - '@algolia/client-analytics': 4.10.3 - '@algolia/client-common': 4.10.3 - '@algolia/client-personalization': 4.10.3 - '@algolia/client-search': 4.10.3 - '@algolia/logger-common': 4.10.3 - '@algolia/logger-console': 4.10.3 - '@algolia/requester-browser-xhr': 4.10.3 - '@algolia/requester-common': 4.10.3 - '@algolia/requester-node-http': 4.10.3 - '@algolia/transporter': 4.10.3 + '@algolia/cache-browser-local-storage': 4.13.1 + '@algolia/cache-common': 4.13.1 + '@algolia/cache-in-memory': 4.13.1 + '@algolia/client-account': 4.13.1 + '@algolia/client-analytics': 4.13.1 + '@algolia/client-common': 4.13.1 + '@algolia/client-personalization': 4.13.1 + '@algolia/client-search': 4.13.1 + '@algolia/logger-common': 4.13.1 + '@algolia/logger-console': 4.13.1 + '@algolia/requester-browser-xhr': 4.13.1 + '@algolia/requester-common': 4.13.1 + '@algolia/requester-node-http': 4.13.1 + '@algolia/transporter': 4.13.1 dev: true /ansi-regex/5.0.1: @@ -3475,17 +3385,6 @@ packages: resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} dev: true - /array-includes/3.1.4: - resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - get-intrinsic: 1.1.1 - is-string: 1.0.7 - dev: true - /array-includes/3.1.5: resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} engines: {node: '>= 0.4'} @@ -3507,8 +3406,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.20.1 dev: true /array.prototype.flatmap/1.3.0: @@ -3680,7 +3579,7 @@ packages: picocolors: 1.0.0 /buffer-crc32/0.2.13: - resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true /buffer-from/1.1.2: @@ -4074,13 +3973,6 @@ packages: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} - engines: {node: '>= 0.4'} - dependencies: - object-keys: 1.1.1 - dev: true - /define-properties/1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} @@ -4093,7 +3985,7 @@ packages: dev: true /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true @@ -4222,32 +4114,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.1 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 - is-string: 1.0.7 - is-weakref: 1.0.1 - object-inspect: 1.11.0 - object-keys: 1.1.1 - object.assign: 4.1.2 - string.prototype.trimend: 1.0.4 - string.prototype.trimstart: 1.0.4 - unbox-primitive: 1.0.1 - dev: true - /es-abstract/1.20.1: resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} engines: {node: '>= 0.4'} @@ -4291,18 +4157,9 @@ packages: is-symbol: 1.0.4 /es6-promise/3.3.1: - resolution: {integrity: sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=} + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} dev: true - /esbuild-android-64/0.14.36: - resolution: {integrity: sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-64/0.14.38: resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==} engines: {node: '>=12'} @@ -4312,15 +4169,6 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.36: - resolution: {integrity: sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-arm64/0.14.38: resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==} engines: {node: '>=12'} @@ -4330,15 +4178,6 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.36: - resolution: {integrity: sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-64/0.14.38: resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==} engines: {node: '>=12'} @@ -4348,15 +4187,6 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.36: - resolution: {integrity: sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-arm64/0.14.38: resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==} engines: {node: '>=12'} @@ -4366,15 +4196,6 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.36: - resolution: {integrity: sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-64/0.14.38: resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==} engines: {node: '>=12'} @@ -4384,15 +4205,6 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.36: - resolution: {integrity: sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-arm64/0.14.38: resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==} engines: {node: '>=12'} @@ -4402,15 +4214,6 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.36: - resolution: {integrity: sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-32/0.14.38: resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==} engines: {node: '>=12'} @@ -4420,15 +4223,6 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.36: - resolution: {integrity: sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-64/0.14.38: resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==} engines: {node: '>=12'} @@ -4438,15 +4232,6 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.36: - resolution: {integrity: sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm/0.14.38: resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==} engines: {node: '>=12'} @@ -4456,15 +4241,6 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.14.36: - resolution: {integrity: sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm64/0.14.38: resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==} engines: {node: '>=12'} @@ -4474,15 +4250,6 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.14.36: - resolution: {integrity: sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-mips64le/0.14.38: resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==} engines: {node: '>=12'} @@ -4492,15 +4259,6 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.36: - resolution: {integrity: sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-ppc64le/0.14.38: resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==} engines: {node: '>=12'} @@ -4510,15 +4268,6 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.14.36: - resolution: {integrity: sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-riscv64/0.14.38: resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==} engines: {node: '>=12'} @@ -4528,15 +4277,6 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.14.36: - resolution: {integrity: sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-s390x/0.14.38: resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==} engines: {node: '>=12'} @@ -4546,15 +4286,6 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.36: - resolution: {integrity: sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-netbsd-64/0.14.38: resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==} engines: {node: '>=12'} @@ -4570,15 +4301,6 @@ packages: esbuild: 0.14.38 dev: true - /esbuild-openbsd-64/0.14.36: - resolution: {integrity: sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-openbsd-64/0.14.38: resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==} engines: {node: '>=12'} @@ -4588,12 +4310,6 @@ packages: dev: true optional: true - /esbuild-register/3.3.2: - resolution: {integrity: sha512-jceAtTO6zxPmCfSD5cBb3rgIK1vmuqCKYwgylHiS1BF4pq0jJiJb4K2QMuqF4BEw7XDBRatYzip0upyTzfkgsQ==} - peerDependencies: - esbuild: '>=0.12 <1' - dev: true - /esbuild-register/3.3.2_esbuild@0.14.38: resolution: {integrity: sha512-jceAtTO6zxPmCfSD5cBb3rgIK1vmuqCKYwgylHiS1BF4pq0jJiJb4K2QMuqF4BEw7XDBRatYzip0upyTzfkgsQ==} peerDependencies: @@ -4602,14 +4318,11 @@ packages: esbuild: 0.14.38 dev: true - /esbuild-sunos-64/0.14.36: - resolution: {integrity: sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true + /esbuild-register/3.3.3: + resolution: {integrity: sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==} + peerDependencies: + esbuild: '>=0.12 <1' dev: true - optional: true /esbuild-sunos-64/0.14.38: resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==} @@ -4620,15 +4333,6 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.36: - resolution: {integrity: sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-32/0.14.38: resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==} engines: {node: '>=12'} @@ -4638,15 +4342,6 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.36: - resolution: {integrity: sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-64/0.14.38: resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==} engines: {node: '>=12'} @@ -4656,15 +4351,6 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.36: - resolution: {integrity: sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-arm64/0.14.38: resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==} engines: {node: '>=12'} @@ -4674,34 +4360,6 @@ packages: dev: true optional: true - /esbuild/0.14.36: - resolution: {integrity: sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-64: 0.14.36 - esbuild-android-arm64: 0.14.36 - esbuild-darwin-64: 0.14.36 - esbuild-darwin-arm64: 0.14.36 - esbuild-freebsd-64: 0.14.36 - esbuild-freebsd-arm64: 0.14.36 - esbuild-linux-32: 0.14.36 - esbuild-linux-64: 0.14.36 - esbuild-linux-arm: 0.14.36 - esbuild-linux-arm64: 0.14.36 - esbuild-linux-mips64le: 0.14.36 - esbuild-linux-ppc64le: 0.14.36 - esbuild-linux-riscv64: 0.14.36 - esbuild-linux-s390x: 0.14.36 - esbuild-netbsd-64: 0.14.36 - esbuild-openbsd-64: 0.14.36 - esbuild-sunos-64: 0.14.36 - esbuild-windows-32: 0.14.36 - esbuild-windows-64: 0.14.36 - esbuild-windows-arm64: 0.14.36 - dev: true - /esbuild/0.14.38: resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==} engines: {node: '>=12'} @@ -4769,6 +4427,32 @@ packages: - supports-color dev: true + /eslint-module-utils/2.7.3_bzaq7d2i4y5c5mw2ofduwxq46a: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils/2.7.3_nd4nb6nccnlbwilvit6hlaep3q: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} @@ -4787,7 +4471,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/parser': 5.27.0_4x5o4skxv6sl53vpwefgt23khm debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -4795,35 +4479,35 @@ packages: - supports-color dev: true - /eslint-plugin-antfu/0.25.1_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-xZrk0BIHZFfrUkr2Ff1uZdnzTmCM6ZQccOxpn7/IKfUENe16sSMuZ8YHKaVrUSAMIPoUOFKG2Qpu2UxwIRTd9w==} + /eslint-plugin-antfu/0.25.2_4x5o4skxv6sl53vpwefgt23khm: + resolution: {integrity: sha512-yRhuFMwUKhSYm8BWTZsW4ymYnFPCJWZb2LzjG+mQb7JbKflk73JIFMCREPOaV4nWwc4YJEPhym75QsC7AFbqSw==} dependencies: - '@typescript-eslint/utils': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/utils': 5.30.3_4x5o4skxv6sl53vpwefgt23khm transitivePeerDependencies: - eslint - supports-color - typescript dev: true - /eslint-plugin-es/4.1.0_eslint@8.17.0: + /eslint-plugin-es/4.1.0_eslint@8.19.0: resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.17.0 + eslint: 8.19.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-eslint-comments/3.2.0_eslint@8.17.0: + /eslint-plugin-eslint-comments/3.2.0_eslint@8.19.0: resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.17.0 + eslint: 8.19.0 ignore: 5.2.0 dev: true @@ -4833,7 +4517,7 @@ packages: htmlparser2: 7.2.0 dev: true - /eslint-plugin-import/2.26.0_er3f6f6cekbq4lwnvn7afiwhn4: + /eslint-plugin-import/2.26.0_gdogtd7dhr6ux2h3ajdmj4r2tu: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -4843,12 +4527,12 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.27.0_ud6rd4xtew5bv4yhvkvu24pzm4 - array-includes: 3.1.4 + '@typescript-eslint/parser': 5.27.0_4x5o4skxv6sl53vpwefgt23khm + array-includes: 3.1.5 array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.17.0 + eslint: 8.19.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3_nd4nb6nccnlbwilvit6hlaep3q has: 1.0.3 @@ -4864,40 +4548,71 @@ packages: - supports-color dev: true - /eslint-plugin-jsonc/2.2.1_eslint@8.17.0: + /eslint-plugin-import/2.26.0_xgi3rtbx7oxkcq3vxqkef6isyu: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm + array-includes: 3.1.5 + array.prototype.flat: 1.2.5 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.19.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_bzaq7d2i4y5c5mw2ofduwxq46a + has: 1.0.3 + is-core-module: 2.8.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsonc/2.2.1_eslint@8.19.0: resolution: {integrity: sha512-ozGjWXhxF3ZfITHmRLuUL6zORh5Dzo0ymwVdxhfFaa4LEtU2S88JIwDYCWAifQLG92x7chqcnZlGUggaPSlfIQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.17.0 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint: 8.19.0 + eslint-utils: 3.0.0_eslint@8.19.0 jsonc-eslint-parser: 2.1.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown/2.2.1_eslint@8.17.0: + /eslint-plugin-markdown/2.2.1_eslint@8.19.0: resolution: {integrity: sha512-FgWp4iyYvTFxPwfbxofTvXxgzPsDuSKHQy2S+a8Ve6savbujey+lgrFFbXQA0HPygISpRYWYBjooPzhYSF81iA==} engines: {node: ^8.10.0 || ^10.12.0 || >= 12.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.17.0 + eslint: 8.19.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n/15.2.0_eslint@8.17.0: + /eslint-plugin-n/15.2.0_eslint@8.19.0: resolution: {integrity: sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==} engines: {node: '>=12.22.0'} peerDependencies: eslint: '>=7.0.0' dependencies: builtins: 4.0.0 - eslint: 8.17.0 - eslint-plugin-es: 4.1.0_eslint@8.17.0 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint: 8.19.0 + eslint-plugin-es: 4.1.0_eslint@8.19.0 + eslint-utils: 3.0.0_eslint@8.19.0 ignore: 5.2.0 is-core-module: 2.8.1 minimatch: 3.1.2 @@ -4905,16 +4620,16 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-promise/6.0.0_eslint@8.17.0: + /eslint-plugin-promise/6.0.0_eslint@8.19.0: resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.17.0 + eslint: 8.19.0 dev: true - /eslint-plugin-react/7.30.0_eslint@8.17.0: + /eslint-plugin-react/7.30.0_eslint@8.19.0: resolution: {integrity: sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==} engines: {node: '>=4'} peerDependencies: @@ -4923,7 +4638,7 @@ packages: array-includes: 3.1.5 array.prototype.flatmap: 1.3.0 doctrine: 2.1.0 - eslint: 8.17.0 + eslint: 8.19.0 estraverse: 5.3.0 jsx-ast-utils: 3.2.0 minimatch: 3.1.2 @@ -4937,17 +4652,17 @@ packages: string.prototype.matchall: 4.0.7 dev: true - /eslint-plugin-svelte3/4.0.0_vypdqzeyqutkgs6qzc7qod4c64: + /eslint-plugin-svelte3/4.0.0_m4jpobot6gi3xtcba7bv5cflma: resolution: {integrity: sha512-OIx9lgaNzD02+MDFNLw0GEUbuovNcglg+wnd/UY0fbZmlQSz7GlQiQ1f+yX0XvC07XPcDOnFcichqI3xCwp71g==} peerDependencies: eslint: '>=8.0.0' svelte: ^3.2.0 dependencies: - eslint: 8.16.0 + eslint: 8.19.0 svelte: 3.48.0 dev: true - /eslint-plugin-unicorn/42.0.0_eslint@8.17.0: + /eslint-plugin-unicorn/42.0.0_eslint@8.19.0: resolution: {integrity: sha512-ixBsbhgWuxVaNlPTT8AyfJMlhyC5flCJFjyK3oKE8TRrwBnaHvUbuIkCM1lqg8ryYrFStL/T557zfKzX4GKSlg==} engines: {node: '>=12'} peerDependencies: @@ -4956,8 +4671,8 @@ packages: '@babel/helper-validator-identifier': 7.16.7 ci-info: 3.3.0 clean-regexp: 1.0.0 - eslint: 8.17.0 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint: 8.19.0 + eslint-utils: 3.0.0_eslint@8.19.0 esquery: 1.4.0 indent-string: 4.0.0 is-builtin-module: 3.1.0 @@ -4970,32 +4685,32 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-vue/9.1.0_eslint@8.17.0: + /eslint-plugin-vue/9.1.0_eslint@8.19.0: resolution: {integrity: sha512-EPCeInPicQ/YyfOWJDr1yfEeSNoFCMzUus107lZyYi37xejdOolNzS5MXGXp8+9bkoKZMdv/1AcZzQebME6r+g==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.17.0 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint: 8.19.0 + eslint-utils: 3.0.0_eslint@8.19.0 natural-compare: 1.4.0 nth-check: 2.0.1 postcss-selector-parser: 6.0.10 semver: 7.3.7 - vue-eslint-parser: 9.0.2_eslint@8.17.0 + vue-eslint-parser: 9.0.2_eslint@8.19.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml/1.0.0_eslint@8.17.0: + /eslint-plugin-yml/1.0.0_eslint@8.19.0: resolution: {integrity: sha512-0RVoUFh5vpznE2DIP5agSpWO/nU8GgAWwoTAHWopU2X+1SCB5ykHU6DwS0GrZ5Hvejtk6CcADQllpQQJB4C5QA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.17.0 + eslint: 8.19.0 lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.0.1 @@ -5026,23 +4741,13 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.16.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.16.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.17.0: + /eslint-utils/3.0.0_eslint@8.19.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.17.0 + eslint: 8.19.0 eslint-visitor-keys: 2.1.0 dev: true @@ -5061,52 +4766,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.16.0: - resolution: {integrity: sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 1.3.0 - '@humanwhocodes/config-array': 0.9.2 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.16.0 - eslint-visitor-keys: 3.3.0 - espree: 9.3.2 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.15.0 - ignore: 5.2.0 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint/8.17.0: - resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} + /eslint/8.19.0: + resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: @@ -5119,7 +4780,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint-utils: 3.0.0_eslint@8.19.0 eslint-visitor-keys: 3.3.0 espree: 9.3.2 esquery: 1.4.0 @@ -5542,10 +5203,6 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true - /has-bigints/1.0.1: - resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} - dev: true - /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -5836,11 +5493,6 @@ packages: resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: false - /is-negative-zero/2.0.1: - resolution: {integrity: sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==} - engines: {node: '>= 0.4'} - dev: true - /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -5874,10 +5526,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} - dev: true - /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -5899,12 +5547,6 @@ packages: dependencies: has-symbols: 1.0.3 - /is-weakref/1.0.1: - resolution: {integrity: sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==} - dependencies: - call-bind: 1.0.2 - dev: true - /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -6108,7 +5750,7 @@ packages: dev: false /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -6198,13 +5840,6 @@ packages: dependencies: sourcemap-codec: 1.4.8 - /magic-string/0.26.1: - resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /magic-string/0.26.2: resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} engines: {node: '>=12'} @@ -6319,8 +5954,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch/5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + /minimatch/5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -6403,7 +6038,7 @@ packages: dev: true /node-modules-regexp/1.0.0: - resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} + resolution: {integrity: sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ==} engines: {node: '>=0.10.0'} dev: true @@ -6450,10 +6085,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect/1.11.0: - resolution: {integrity: sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==} - dev: true - /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -6500,8 +6131,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.20.1 dev: true /obuf/1.1.2: @@ -6717,9 +6348,9 @@ packages: engines: {node: '>=4'} dev: true - /pnpm/7.1.8: - resolution: {integrity: sha512-6E+iGdkAcEtEvmxgLGpHiK51ArFK8mBUFIQ6/x5LeL+YCWbi1r1Fy2UPN1dDWUjy2xauLjgIMp/KQ5s5b85EBA==} - engines: {node: '>=14.19'} + /pnpm/7.4.1: + resolution: {integrity: sha512-zbgCWWw/qN5cvG1cBTNxwtT625BjxiZO974CAetIial/om4tyVgCmPxq9FRKDrYffTTLfahIXfXOjMUYqQ8wZw==} + engines: {node: '>=14.6'} hasBin: true dev: true @@ -6747,23 +6378,19 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-router/4.0.1_preact@10.7.2: + /preact-router/4.0.1_preact@10.8.2: resolution: {integrity: sha512-xPyHVLouc5oKIlKu9iEElplNygJYkOn/vfXfZhcoOFqzfAZHZMmT3FsQb0yyPkdt1rwTLFAxek6/5CFkofocSQ==} peerDependencies: preact: '>=10' dependencies: - preact: 10.7.2 + preact: 10.8.2 dev: false - /preact/10.7.2: - resolution: {integrity: sha512-GLjn0I3r6ka+NvxJUppsVFqb4V0qDTEHT/QxHlidPuClGaxF/4AI2Qti4a0cv3XMh5n1+D3hLScW10LRIm5msQ==} - - /preact/10.7.3: - resolution: {integrity: sha512-giqJXP8VbtA1tyGa3f1n9wiN7PrHtONrDyE3T+ifjr/tTkg+2N4d/6sjC9WyJKv8wM7rOYDveqy5ZoFmYlwo4w==} - dev: true + /preact/10.8.2: + resolution: {integrity: sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==} /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true @@ -6847,14 +6474,14 @@ packages: unpipe: 1.0.0 dev: true - /react-dom/18.1.0_react@18.1.0: - resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: ^18.1.0 + react: ^18.2.0 dependencies: loose-envify: 1.4.0 - react: 18.1.0 - scheduler: 0.22.0 + react: 18.2.0 + scheduler: 0.23.0 dev: false /react-is/16.13.1: @@ -6866,40 +6493,40 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-config/5.1.1_fi5y4rn25vlagmiokshib4xrpe: + /react-router-config/5.1.1_77xmmbgo3eovj6t3xv35v52s6m: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: react: '>=15' react-router: '>=5' dependencies: '@babel/runtime': 7.14.5 - react: 18.1.0 - react-router: 6.3.0_react@18.1.0 + react: 18.2.0 + react-router: 6.3.0_react@18.2.0 dev: false - /react-router-dom/6.3.0_ef5jwxihqo6n7gxfmzogljlgcm: + /react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: history: 5.3.0 - react: 18.1.0 - react-dom: 18.1.0_react@18.1.0 - react-router: 6.3.0_react@18.1.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router: 6.3.0_react@18.2.0 dev: false - /react-router/6.3.0_react@18.1.0: + /react-router/6.3.0_react@18.2.0: resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} peerDependencies: react: '>=16.8' dependencies: history: 5.3.0 - react: 18.1.0 + react: 18.2.0 dev: false - /react/18.1.0: - resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -7061,14 +6688,14 @@ packages: glob: 7.1.7 dev: true - /rollup-plugin-terser/7.0.2_rollup@2.75.5: + /rollup-plugin-terser/7.0.2_rollup@2.75.7: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} peerDependencies: rollup: ^2.0.0 dependencies: '@babel/code-frame': 7.16.7 jest-worker: 26.6.2 - rollup: 2.75.5 + rollup: 2.75.7 serialize-javascript: 4.0.0 terser: 5.7.1 dev: false @@ -7079,8 +6706,8 @@ packages: estree-walker: 0.6.1 dev: true - /rollup/2.75.5: - resolution: {integrity: sha512-JzNlJZDison3o2mOxVmb44Oz7t74EfSd1SQrplQk0wSaXV7uLQXtVdHbxlcT3w+8tZ1TL4r/eLfc7nAbz38BBA==} + /rollup/2.75.7: + resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -7091,13 +6718,6 @@ packages: dependencies: queue-microtask: 1.2.3 - /sade/1.7.4: - resolution: {integrity: sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==} - engines: {node: '>= 6'} - dependencies: - mri: 1.1.6 - dev: true - /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -7122,7 +6742,7 @@ packages: dev: true /sander/0.5.1: - resolution: {integrity: sha1-dB4kXiMfB8r7b98PEzrfohalAq0=} + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: es6-promise: 3.3.1 graceful-fs: 4.2.8 @@ -7137,8 +6757,8 @@ packages: xmlchars: 2.2.0 dev: true - /scheduler/0.22.0: - resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false @@ -7261,22 +6881,18 @@ packages: engines: {node: '>=8'} dev: true - /solid-app-router/0.3.3_solid-js@1.4.2: + /solid-app-router/0.3.3_solid-js@1.4.5: resolution: {integrity: sha512-JEn0gi6q8Pq9M2Ml3CLeNzenxuBrOrQg4aQyeIZTNjOAeEil/9YiaAJk+US78sIdVcqflTneN5KZgJMIGJ0rFQ==} peerDependencies: solid-js: ^1.3.5 dependencies: - solid-js: 1.4.2 + solid-js: 1.4.5 dev: false - /solid-js/1.4.2: - resolution: {integrity: sha512-IU5yKuT8P/n5F5g8j1rTXqxUdPYmoZDk/074TG94AEYf/nyXAeG82BSge4/lLIbCfUcnGUJ6DRdebIjujOAYyg==} + /solid-js/1.4.5: + resolution: {integrity: sha512-32NGpuabEJDTeQ7fjaTR2TLC7R/X5hbqhYdEQ1e+GcIK8r8+/V0Nv17eZQii5Z/97/mtdt8yi63chzg73qnz/A==} - /solid-js/1.4.3: - resolution: {integrity: sha512-3uh2cbT4ICronIasLAxycF6SVgvqcfwFCDCzlEA9CEahn1qQg8Rw8aRGiI4O51PrHcN5aPRO9knYYRCs0PgzcQ==} - dev: true - - /solid-refresh/0.4.0_solid-js@1.4.2: + /solid-refresh/0.4.0_solid-js@1.4.5: resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} peerDependencies: solid-js: ^1.3.0 @@ -7284,11 +6900,11 @@ packages: '@babel/generator': 7.16.0 '@babel/helper-module-imports': 7.16.0 '@babel/types': 7.16.0 - solid-js: 1.4.2 + solid-js: 1.4.5 dev: true /sorcery/0.10.0: - resolution: {integrity: sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=} + resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} hasBin: true dependencies: buffer-crc32: 0.2.13 @@ -7395,13 +7011,6 @@ packages: regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 - /string.prototype.trimend/1.0.4: - resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - dev: true - /string.prototype.trimend/1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: @@ -7409,13 +7018,6 @@ packages: define-properties: 1.1.4 es-abstract: 1.20.1 - /string.prototype.trimstart/1.0.4: - resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - dev: true - /string.prototype.trimstart/1.0.5: resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} dependencies: @@ -7452,7 +7054,7 @@ packages: dev: true /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true @@ -7507,8 +7109,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check/2.7.1_svelte@3.48.0: - resolution: {integrity: sha512-vHVu2+SQ6ibt77iTQaq2oiOjBgGL48qqcg0ZdEOsP5pPOjgeyR9QbnaEdzdBs9nsVYBc/42haKtzb2uFqS8GVw==} + /svelte-check/2.8.0_svelte@3.48.0: + resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} hasBin: true peerDependencies: svelte: ^3.24.0 @@ -7518,10 +7120,10 @@ packages: fast-glob: 3.2.11 import-fresh: 3.3.0 picocolors: 1.0.0 - sade: 1.7.4 + sade: 1.8.1 svelte: 3.48.0 - svelte-preprocess: 4.10.6_wwvk7nlptlrqo2czohjtk6eiqm - typescript: 4.6.4 + svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm + typescript: 4.7.4 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -7535,15 +7137,6 @@ packages: - sugarss dev: true - /svelte-hmr/0.14.11_svelte@3.48.0: - resolution: {integrity: sha512-R9CVfX6DXxW1Kn45Jtmx+yUe+sPhrbYSUp7TkzbW0jI5fVPn6lsNG9NEs5dFg5qRhFNAoVdRw5qQDLALNKhwbQ==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: '>=3.19.0' - dependencies: - svelte: 3.48.0 - dev: true - /svelte-hmr/0.14.12_svelte@3.48.0: resolution: {integrity: sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -7553,8 +7146,8 @@ packages: svelte: 3.48.0 dev: true - /svelte-preprocess/4.10.6_wwvk7nlptlrqo2czohjtk6eiqm: - resolution: {integrity: sha512-I2SV1w/AveMvgIQlUF/ZOO3PYVnhxfcpNyGt8pxpUVhPfyfL/CZBkkw/KPfuFix5FJ9TnnNYMhACK3DtSaYVVQ==} + /svelte-preprocess/4.10.7_lvfi2wesz6u4l5rfbnetbucfmm: + resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} engines: {node: '>= 9.11.2'} requiresBuild: true peerDependencies: @@ -7563,7 +7156,7 @@ packages: less: ^3.11.3 || ^4.0.0 node-sass: '*' postcss: ^7 || ^8 - postcss-load-config: ^2.1.0 || ^3.0.0 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 pug: ^3.0.0 sass: ^1.26.8 stylus: ^0.55.0 @@ -7601,7 +7194,7 @@ packages: sorcery: 0.10.0 strip-indent: 3.0.0 svelte: 3.48.0 - typescript: 4.6.4 + typescript: 4.7.4 dev: true /svelte/3.48.0: @@ -7640,11 +7233,11 @@ packages: dev: false /text-table/0.2.0: - resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true /thenify-all/1.6.0: - resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 @@ -7734,8 +7327,8 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} dev: true - /tsup/6.1.0_typescript@4.7.3: - resolution: {integrity: sha512-kKSzFbX996OXkbQif23LV0xDDvxnhH95Hw39ku7Kx1NEfJxcxvqexGGEDgRyd5dlzIJI4U8mySfPeq5iExYwnw==} + /tsup/6.1.3_typescript@4.7.4: + resolution: {integrity: sha512-eRpBnbfpDFng+EJNTQ90N7QAf4HAGGC7O3buHIjroKWK7D1ibk9/YnR/3cS8HsMU5T+6Oi+cnF+yU5WmCnB//Q==} engines: {node: '>=14'} hasBin: true peerDependencies: @@ -7760,37 +7353,27 @@ packages: joycon: 3.0.1 postcss-load-config: 3.0.1 resolve-from: 5.0.0 - rollup: 2.75.5 + rollup: 2.75.7 source-map: 0.8.0-beta.0 sucrase: 3.21.0 tree-kill: 1.2.2 - typescript: 4.7.3 + typescript: 4.7.4 transitivePeerDependencies: - supports-color dev: true - /tsutils/3.21.0_typescript@4.6.4: + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: 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' dependencies: tslib: 1.14.1 - typescript: 4.6.4 - dev: true - - /tsutils/3.21.0_typescript@4.7.3: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - 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' - dependencies: - tslib: 1.14.1 - typescript: 4.7.3 + typescript: 4.7.4 dev: true /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 @@ -7831,14 +7414,8 @@ packages: mime-types: 2.1.29 dev: true - /typescript/4.6.4: - resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript/4.7.3: - resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -7853,15 +7430,6 @@ packages: hasBin: true dev: true - /unbox-primitive/1.0.1: - resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} - dependencies: - function-bind: 1.1.1 - has-bigints: 1.0.1 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -7873,7 +7441,7 @@ packages: /unconfig/0.3.4: resolution: {integrity: sha512-cf39F1brwQuLSuMLTYXOdWJH0O1CJee6a4QW1nYtO7SoBUfVvQCvEel6ssTNXtPfi17kop1ADmVtmC49NlFkIQ==} dependencies: - '@antfu/utils': 0.5.1 + '@antfu/utils': 0.5.2 defu: 6.0.0 jiti: 1.13.0 dev: true @@ -7928,30 +7496,30 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - /unocss/0.38.1_vite@2.9.9: - resolution: {integrity: sha512-p0GK+cAwjZeRHMBkKtr9hrQyhwDrew8kgf01Kt4+ISp1UMeldLH9b5j/jevpYqP1oQitAP64gX7jD94wOXYSxg==} + /unocss/0.38.2_vite@2.9.13: + resolution: {integrity: sha512-YSADRlI55kt7tnpHWFDJGTdBfhQ5IshhXP6dJJd9f8ma/SIV/DW+gyYyL9VFDCqCDLuQBRmJTRX2NE4jGfZiug==} engines: {node: '>=14'} peerDependencies: - '@unocss/webpack': 0.38.1 + '@unocss/webpack': 0.38.2 peerDependenciesMeta: '@unocss/webpack': optional: true dependencies: - '@unocss/cli': 0.38.1 - '@unocss/core': 0.38.1 - '@unocss/preset-attributify': 0.38.1 - '@unocss/preset-icons': 0.38.1 - '@unocss/preset-mini': 0.38.1 - '@unocss/preset-tagify': 0.38.1 - '@unocss/preset-typography': 0.38.1 - '@unocss/preset-uno': 0.38.1 - '@unocss/preset-web-fonts': 0.38.1 - '@unocss/preset-wind': 0.38.1 - '@unocss/reset': 0.38.1 - '@unocss/transformer-compile-class': 0.38.1 - '@unocss/transformer-directives': 0.38.1 - '@unocss/transformer-variant-group': 0.38.1 - '@unocss/vite': 0.38.1_vite@2.9.9 + '@unocss/cli': 0.38.2 + '@unocss/core': 0.38.2 + '@unocss/preset-attributify': 0.38.2 + '@unocss/preset-icons': 0.38.2 + '@unocss/preset-mini': 0.38.2 + '@unocss/preset-tagify': 0.38.2 + '@unocss/preset-typography': 0.38.2 + '@unocss/preset-uno': 0.38.2 + '@unocss/preset-web-fonts': 0.38.2 + '@unocss/preset-wind': 0.38.2 + '@unocss/reset': 0.38.2 + '@unocss/transformer-compile-class': 0.38.2 + '@unocss/transformer-directives': 0.38.2 + '@unocss/transformer-variant-group': 0.38.2 + '@unocss/vite': 0.38.2_vite@2.9.13 transitivePeerDependencies: - supports-color - vite @@ -7962,8 +7530,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /unplugin-vue-components/0.19.5_vite@2.9.9+vue@3.2.37: - resolution: {integrity: sha512-cIC+PdQEXmG+B1gmZGk4hws2xP+00C6pg3FD6ixEgRyW+WF+QXQW/60pc+hUhtDYs1PFE+23K3NY7yvYTnDDTA==} + /unplugin-vue-components/0.19.9_vite@2.9.13+vue@3.2.37: + resolution: {integrity: sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==} engines: {node: '>=14'} peerDependencies: '@babel/parser': ^7.15.8 @@ -7975,16 +7543,16 @@ packages: '@babel/traverse': optional: true dependencies: - '@antfu/utils': 0.5.1 + '@antfu/utils': 0.5.2 '@rollup/pluginutils': 4.2.1 chokidar: 3.5.3 debug: 4.3.4 fast-glob: 3.2.11 local-pkg: 0.4.1 - magic-string: 0.26.1 - minimatch: 5.0.1 + magic-string: 0.26.2 + minimatch: 5.1.0 resolve: 1.22.0 - unplugin: 0.6.3_vite@2.9.9 + unplugin: 0.7.1_vite@2.9.13 vue: 3.2.37 transitivePeerDependencies: - esbuild @@ -7994,12 +7562,12 @@ packages: - webpack dev: true - /unplugin/0.6.3_vite@2.9.9: - resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==} + /unplugin/0.7.1_vite@2.9.13: + resolution: {integrity: sha512-Z6hNDXDNh9aimMkPU1mEjtk+2ova8gh0y7rJeJdGH1vWZOHwF2lLQiQ/R97rv9ymmzEQXsR2fyMet72T8jy6ew==} peerDependencies: esbuild: '>=0.13' rollup: ^2.50.0 - vite: ^2.3.0 + vite: ^2.3.0 || ^3.0.0-0 webpack: 4 || 5 peerDependenciesMeta: esbuild: @@ -8011,10 +7579,11 @@ packages: webpack: optional: true dependencies: + acorn: 8.7.1 chokidar: 3.5.3 - vite: 2.9.9 + vite: 2.9.13 webpack-sources: 3.2.3 - webpack-virtual-modules: 0.4.3 + webpack-virtual-modules: 0.4.4 dev: true /upath/1.2.0: @@ -8066,9 +7635,9 @@ packages: '@babel/preset-typescript': 7.16.7_@babel+core@7.17.9 babel-preset-solid: 1.3.13_@babel+core@7.17.9 merge-anything: 5.0.2 - solid-js: 1.4.2 - solid-refresh: 0.4.0_solid-js@1.4.2 - vite: 2.9.9 + solid-js: 1.4.5 + solid-refresh: 0.4.0_solid-js@1.4.5 + vite: 2.9.13 transitivePeerDependencies: - less - sass @@ -8076,8 +7645,8 @@ packages: - supports-color dev: true - /vite/2.9.10: - resolution: {integrity: sha512-TwZRuSMYjpTurLqXspct+HZE7ONiW9d+wSWgvADGxhDPPyoIcNywY+RX4ng+QpK30DCa1l/oZgi2PLZDibhzbQ==} + /vite/2.9.13: + resolution: {integrity: sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==} engines: {node: '>=12.2.0'} hasBin: true peerDependencies: @@ -8095,31 +7664,7 @@ packages: esbuild: 0.14.38 postcss: 8.4.14 resolve: 1.22.0 - rollup: 2.75.5 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vite/2.9.9: - resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} - engines: {node: '>=12.2.0'} - hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - dependencies: - esbuild: 0.14.36 - postcss: 8.4.14 - resolve: 1.22.0 - rollup: 2.75.5 + rollup: 2.75.7 optionalDependencies: fsevents: 2.3.2 dev: true @@ -8129,16 +7674,17 @@ packages: engines: {node: '>=14.6.0'} hasBin: true dependencies: - '@docsearch/css': 3.1.0 - '@docsearch/js': 3.1.0 - '@vitejs/plugin-vue': 2.3.3_vite@2.9.10+vue@3.2.37 + '@docsearch/css': 3.1.1 + '@docsearch/js': 3.1.1 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.13+vue@3.2.37 '@vue/devtools-api': 6.1.4 - '@vueuse/core': 8.5.0_vue@3.2.37 + '@vueuse/core': 8.7.5_vue@3.2.37 body-scroll-lock: 4.0.0-beta.0 shiki: 0.10.1 - vite: 2.9.10 + vite: 2.9.13 vue: 3.2.37 transitivePeerDependencies: + - '@algolia/client-search' - '@types/react' - '@vue/composition-api' - less @@ -8170,14 +7716,14 @@ packages: dependencies: vue: 3.2.37 - /vue-eslint-parser/9.0.2_eslint@8.17.0: + /vue-eslint-parser/9.0.2_eslint@8.19.0: resolution: {integrity: sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.17.0 + eslint: 8.19.0 eslint-scope: 7.1.1 eslint-visitor-keys: 3.3.0 espree: 9.3.2 @@ -8188,8 +7734,8 @@ packages: - supports-color dev: true - /vue-router/4.0.15_vue@3.2.37: - resolution: {integrity: sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==} + /vue-router/4.0.16_vue@3.2.37: + resolution: {integrity: sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==} peerDependencies: vue: ^3.2.0 dependencies: @@ -8243,8 +7789,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack-virtual-modules/0.4.3: - resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} + /webpack-virtual-modules/0.4.4: + resolution: {integrity: sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==} dev: true /whatwg-encoding/1.0.5: @@ -8316,9 +7862,9 @@ packages: '@babel/core': 7.16.0 '@babel/preset-env': 7.15.0_@babel+core@7.16.0 '@babel/runtime': 7.14.8 - '@rollup/plugin-babel': 5.3.0_dg4xmqxpwlpo2f65f4ul4aocye - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.75.5 - '@rollup/plugin-replace': 2.4.2_rollup@2.75.5 + '@rollup/plugin-babel': 5.3.0_u5penlcrldzmp4hsmwpt3xf4vq + '@rollup/plugin-node-resolve': 11.2.1_rollup@2.75.7 + '@rollup/plugin-replace': 2.4.2_rollup@2.75.7 '@surma/rollup-plugin-off-main-thread': 2.2.3 ajv: 8.6.0 common-tags: 1.8.0 @@ -8327,8 +7873,8 @@ packages: glob: 7.1.7 lodash: 4.17.21 pretty-bytes: 5.6.0 - rollup: 2.75.5 - rollup-plugin-terser: 7.0.2_rollup@2.75.5 + rollup: 2.75.7 + rollup-plugin-terser: 7.0.2_rollup@2.75.7 source-map: 0.8.0-beta.0 stringify-object: 3.3.0 strip-comments: 2.0.1 From a0e9c56eeab1cd1a6e8218d174112fa3adbcb430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 12:45:20 +0200 Subject: [PATCH 4/8] chore: don't exclude `.vitepress` from linting, just its `dist` folder --- .eslintignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintignore b/.eslintignore index 13e27246..857f43f0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,4 +4,4 @@ dev-dist/ node_modules/ *.svelte *.d.ts -!.vitepress/ +!.vitepress/dist/ From a7cd1f54daa8e81502a5a702bc738151d2c01614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 18:05:30 +0200 Subject: [PATCH 5/8] chore: update `next/prev` entries for next `VitePress` release --- docs/deployment/apache.md | 4 +--- docs/deployment/index.md | 4 +--- docs/examples/astro.md | 4 +--- docs/examples/index.md | 4 +--- docs/frameworks/astro.md | 4 +--- docs/frameworks/index.md | 4 +--- docs/guide/development.md | 17 ----------------- docs/guide/faq.md | 4 +--- docs/guide/index.md | 12 ++---------- 9 files changed, 9 insertions(+), 48 deletions(-) diff --git a/docs/deployment/apache.md b/docs/deployment/apache.md index 9a8f75e1..4d001e67 100644 --- a/docs/deployment/apache.md +++ b/docs/deployment/apache.md @@ -1,8 +1,6 @@ --- title: Apache Http Server 2.4+ | Deployment -next: - text: Getting Started | Workbox - link: /workbox/ +next: Getting Started | Workbox --- # Apache Http Server 2.4+ diff --git a/docs/deployment/index.md b/docs/deployment/index.md index 3b6f9eca..d3d95674 100644 --- a/docs/deployment/index.md +++ b/docs/deployment/index.md @@ -1,8 +1,6 @@ --- title: Getting Started | Deploy -prev: - text: Astro | Examples - link: /examples/astro +prev: Astro | Examples --- # Getting Started diff --git a/docs/examples/astro.md b/docs/examples/astro.md index 9b63e418..c920e4fc 100644 --- a/docs/examples/astro.md +++ b/docs/examples/astro.md @@ -1,8 +1,6 @@ --- title: Astro | Examples -next: - text: Getting Started | Deploy - link: /deployment/ +next: Getting Started | Deploy --- # Astro diff --git a/docs/examples/index.md b/docs/examples/index.md index fc08ef90..27489ddc 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -1,8 +1,6 @@ --- title: Getting Started | Examples -prev: - text: Astro | Frameworks - link: /frameworks/astro +prev: Astro | Frameworks --- # Getting Started diff --git a/docs/frameworks/astro.md b/docs/frameworks/astro.md index 6da4e2f9..f2c8937a 100644 --- a/docs/frameworks/astro.md +++ b/docs/frameworks/astro.md @@ -1,8 +1,6 @@ --- title: Astro | Frameworks -next: - text: Getting Started | Examples - link: /examples/ +next: Getting Started | Examples --- # Astro diff --git a/docs/frameworks/index.md b/docs/frameworks/index.md index 753e1941..3fadbdc0 100644 --- a/docs/frameworks/index.md +++ b/docs/frameworks/index.md @@ -1,8 +1,6 @@ --- title: Getting Started | Frameworks -prev: - text: FAQ | Guide - link: /guide/faq +prev: FAQ | Guide --- # Getting Started diff --git a/docs/guide/development.md b/docs/guide/development.md index 75d33555..5bd73e92 100644 --- a/docs/guide/development.md +++ b/docs/guide/development.md @@ -14,23 +14,6 @@ There will be only one single registration on the service worker precache manife The service worker on development will be only available if `disabled` plugin option is not `true` and the `enable` development option is `true`. -::: warning -If you're registering the service worker without importing any of the virtual modules, you will need to configure `injectRegister` explicitly in the plugin configuration. There is a race condition we cannot bypass and so, you will need to configure it, `auto` will not work, the plugin will not generate the corresponding `registerSW.js` script: -```ts -import { VitePWA } from 'vite-plugin-pwa' -export default defineConfig({ - plugins: [ - VitePWA({ - injectRegister: 'inline', // or injectRegister: 'script' - devOptions: { - enabled: true - } - }) - ] -}) -``` -::: - ## Plugin configuration To enable the service worker on development, you only need to add the following options to the plugin configuration: diff --git a/docs/guide/faq.md b/docs/guide/faq.md index 286c3c66..98f0c006 100644 --- a/docs/guide/faq.md +++ b/docs/guide/faq.md @@ -1,8 +1,6 @@ --- title: FAQ | Guide -next: - text: Getting Started | Frameworks - link: /frameworks/ +next: Getting Started | Frameworks --- # FAQ diff --git a/docs/guide/index.md b/docs/guide/index.md index 5ebe72e4..872e64a2 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -86,20 +86,12 @@ export default defineConfig({ ``` ::: -If you want to check it in `dev`, add the `devOptions` option to the plugin configuration (you will have the [Web App Manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) and the generated service worker). - -::: warning -In version `0.12.2` the service worker will not be registered in development if not importing one of the virtual modules. There is a bug preventing generating the corresponding script on the entry point. - -In version `0.12.3` we have fixed previous bug, but you will need to explicitly configure `injectRegister` with `inline` or `script` and not importing any virtual module: there is a race condition, so we cannot bypass it. -::: - +If you want to check it in `dev`, add the `devOptions` option to the plugin configuration (you will have the [Web App Manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) and the generated service worker): ```ts import { VitePWA } from 'vite-plugin-pwa' export default defineConfig({ plugins: [ - VitePWA({ - injectRegister: 'inline', // or injectRegister: 'script' + VitePWA({ registerType: 'autoUpdate', devOptions: { enabled: true From 2222c848f3ee98ffe6fa832a82a3f6fa29724ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sat, 2 Jul 2022 19:03:30 +0200 Subject: [PATCH 6/8] chore: split plugins --- src/api.ts | 48 +++++++++++ src/constants.ts | 3 +- src/context.ts | 19 +++++ src/dev.ts | 128 ---------------------------- src/html.ts | 4 +- src/index.ts | 194 ++----------------------------------------- src/plugins/build.ts | 62 ++++++++++++++ src/plugins/dev.ts | 156 ++++++++++++++++++++++++++++++++++ src/plugins/index.ts | 50 +++++++++++ 9 files changed, 348 insertions(+), 316 deletions(-) create mode 100644 src/api.ts create mode 100644 src/context.ts delete mode 100644 src/dev.ts create mode 100644 src/plugins/build.ts create mode 100644 src/plugins/dev.ts create mode 100644 src/plugins/index.ts diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 00000000..467900aa --- /dev/null +++ b/src/api.ts @@ -0,0 +1,48 @@ +import { resolve } from 'path' +import { existsSync } from 'fs' +import type { OutputBundle } from 'rollup' +import { generateInjectManifest, generateServiceWorker } from './modules' +import { generateWebManifestFile } from './assets' +import { FILE_SW_REGISTER } from './constants' +import { generateSimpleSWRegister } from './html' +import type { PWAPluginContext } from './context' + +export async function _generateSW({ options, viteConfig }: PWAPluginContext) { + if (options.disable) + return + + if (options.strategies === 'injectManifest') + await generateInjectManifest(options, viteConfig) + else + await generateServiceWorker(options, viteConfig) +} + +export function _generateBundle({ options, viteConfig, useImportRegister }: PWAPluginContext, bundle: OutputBundle) { + if (options.disable) + return + + if (options.manifest) { + bundle[options.manifestFilename] = { + isAsset: true, + type: 'asset', + name: undefined, + source: generateWebManifestFile(options), + fileName: options.manifestFilename, + } + } + + // if virtual register is requested, do not inject. + if (options.injectRegister === 'auto') + options.injectRegister = useImportRegister ? null : 'script' + + if (options.injectRegister === 'script' && !existsSync(resolve(viteConfig.publicDir, FILE_SW_REGISTER))) { + bundle[FILE_SW_REGISTER] = { + isAsset: true, + type: 'asset', + name: undefined, + source: generateSimpleSWRegister(options, false), + fileName: FILE_SW_REGISTER, + } + } + return bundle +} diff --git a/src/constants.ts b/src/constants.ts index 5d72a33d..887d424d 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -23,4 +23,5 @@ export const defaultInjectManifestVitePlugins = [ 'vite:terser', ] -export const devSwName = 'dev-sw.js?dev-sw' +export const DEV_SW_NAME = 'dev-sw.js?dev-sw' + diff --git a/src/context.ts b/src/context.ts new file mode 100644 index 00000000..304fd0b5 --- /dev/null +++ b/src/context.ts @@ -0,0 +1,19 @@ +import type { ResolvedConfig } from 'vite' +import type { ResolvedVitePWAOptions, VitePWAOptions } from './types' +import { resolveOptions } from './options' + +export interface PWAPluginContext { + viteConfig: ResolvedConfig + options: ResolvedVitePWAOptions + useImportRegister: boolean +} + +export type PWAPluginContextResolver = () => PWAPluginContext + +export async function resolvePWAPluginContext(viteConfig: ResolvedConfig, userOptions: Partial) { + return { + viteConfig, + options: await resolveOptions(userOptions, viteConfig), + useImportRegister: false, + } +} diff --git a/src/dev.ts b/src/dev.ts deleted file mode 100644 index 34c99551..00000000 --- a/src/dev.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { basename, resolve } from 'path' -import { type Stats, promises as fs } from 'fs' -import type { LoadResult } from 'rollup' -import type { ResolvedConfig } from 'vite' -import type { ResolvedVitePWAOptions } from './types' -import { generateServiceWorker } from './modules' -import { normalizePath } from './utils' -import { FILE_SW_REGISTER, devSwName } from './constants' -import { generateSimpleSWRegister } from './html' - -export const swDevOptions = { - swUrl: devSwName, - swDevGenerated: false, - workboxPaths: new Map(), -} - -async function existsFile(path: string) { - let stat: Stats - try { - // noinspection JSVoidFunctionReturnValueUsed - stat = await fs.lstat(path) - return stat.isFile() - } - catch (_) { - return false - } -} - -export async function createDevRegisterSW(options: ResolvedVitePWAOptions, viteConfig: ResolvedConfig) { - if (options.injectRegister === 'script') { - const devDist = resolve(viteConfig.root, 'dev-dist') - const registerSW = resolve(devDist, FILE_SW_REGISTER) - if ((await existsFile(registerSW))) - return - - // noinspection JSVoidFunctionReturnValueUsed - const stat = await fs.lstat(devDist) - if (!stat.isDirectory()) - await fs.mkdir(devDist) - - await fs.writeFile(registerSW, generateSimpleSWRegister(options, true), { encoding: 'utf8' }) - swDevOptions.workboxPaths.set(normalizePath(`${options.base}${FILE_SW_REGISTER}`), registerSW) - } -} - -export function resolveDevId(id: string, options: ResolvedVitePWAOptions): string | undefined { - if (!options.disable && options.devOptions.enabled && options.strategies === 'injectManifest') { - const name = id.startsWith('/') ? id.slice(1) : id - // the sw must be registered with .js extension on browser, here we detect that request: - // - the .js file and source with .ts, or - // - the .ts source file - // in both cases we need to resolve the id to the source file to load it and add empty injection point on loadDev - // we need tom always return the path to source file name to resolve imports on the sw - return name === swDevOptions.swUrl || name === options.injectManifest.swSrc - ? options.injectManifest.swSrc - : undefined - } - - return undefined -} - -export async function loadDev(id: string, options: ResolvedVitePWAOptions, viteConfig: ResolvedConfig): Promise { - if (!options.disable && options.devOptions.enabled) { - if (options.strategies === 'injectManifest') { - // we need to inject self.__WB_MANIFEST with an empty array: there is no pwa on dev - const swSrc = normalizePath(options.injectManifest.swSrc) - if (id === swSrc) { - let content = await fs.readFile(options.injectManifest.swSrc, 'utf-8') - const resolvedIP = options.injectManifest.injectionPoint - if (resolvedIP) { - const ip = new RegExp(resolvedIP, 'g') - const navigateFallback = options.devOptions.navigateFallback - // we only add the navigateFallback if using registerRoute for offline support on custom sw - if (navigateFallback) - content = content.replace(ip, `[{ url: '${navigateFallback}' }]`) - else - content = content.replace(ip, '[]') - } - return content - } - - return undefined - } - if (id.endsWith(swDevOptions.swUrl)) { - const globDirectory = resolve(viteConfig.root, 'dev-dist') - const swDest = resolve(globDirectory, 'sw.js') - if (!swDevOptions.swDevGenerated || !(await existsFile(swDest))) { - // we only need to generate sw on dev-dist folder and then read the content - // the sw precache (self.__SW_MANIFEST) will be empty since we're using `dev-dist` folder - // we only need to add the navigateFallback if configured - const navigateFallback = options.workbox.navigateFallback - // we need to exclude the manifest.webmanifest from the sw precache: avoid writing it to the dev-dist folder - const webManifestUrl = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` - const { filePaths } = await generateServiceWorker( - Object.assign( - {}, - options, - { - workbox: { - ...options.workbox, - navigateFallbackDenylist: [new RegExp(`^${webManifestUrl}$`)], - runtimeCaching: options.devOptions.disableRuntimeConfig ? undefined : options.workbox.runtimeCaching, - // we only include navigateFallback - additionalManifestEntries: navigateFallback ? [navigateFallback] : undefined, - cleanupOutdatedCaches: true, - globDirectory: globDirectory.replace(/\\/g, '/'), - swDest: swDest.replace(/\\/g, '/'), - }, - }, - ), - viteConfig, - ) - // we store workbox dependencies, and so we can then resolve them when requested: at least workbox-**.js - filePaths.forEach((we) => { - const name = basename(we) - // we exclude the sw itself - if (name !== 'sw.js') - swDevOptions.workboxPaths.set(normalizePath(`${options.base}${name}`), we) - }) - swDevOptions.swDevGenerated = true - } - return await fs.readFile(swDest, 'utf-8') - } - - if (swDevOptions.workboxPaths.has(id)) - return await fs.readFile(swDevOptions.workboxPaths.get(id)!, 'utf-8') - } -} diff --git a/src/html.ts b/src/html.ts index 2bf7a004..b5783651 100644 --- a/src/html.ts +++ b/src/html.ts @@ -1,8 +1,8 @@ -import { FILE_SW_REGISTER, devSwName } from './constants' +import { DEV_SW_NAME, FILE_SW_REGISTER } from './constants' import type { ResolvedVitePWAOptions } from './types' export function generateSimpleSWRegister(options: ResolvedVitePWAOptions, dev: boolean) { - const path = dev ? `${options.base}${devSwName}` : `${options.base}${options.filename}` + const path = dev ? `${options.base}${DEV_SW_NAME}` : `${options.base}${options.filename}` return ` if('serviceWorker' in navigator) { window.addEventListener('load', () => { diff --git a/src/index.ts b/src/index.ts index fe96235c..33a77f35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,191 +1,15 @@ -import { resolve } from 'path' -import { existsSync } from 'fs' -import type { OutputBundle } from 'rollup' -import type { Plugin, ResolvedConfig } from 'vite' -import { generateSimpleSWRegister, injectServiceWorker } from './html' -import { generateInjectManifest, generateRegisterSW, generateServiceWorker } from './modules' -import type { ExtendManifestEntriesHook, ResolvedVitePWAOptions, VitePWAOptions, VitePluginPWAAPI } from './types' -import { resolveOptions } from './options' -import { generateWebManifestFile } from './assets' -import { FILE_SW_REGISTER, VIRTUAL_MODULES, VIRTUAL_MODULES_MAP, VIRTUAL_MODULES_RESOLVE_PREFIX } from './constants' -import { createDevRegisterSW, loadDev, resolveDevId, swDevOptions } from './dev' +import type { Plugin } from 'vite' +import type { VitePWAOptions } from './types' +import { CreatePlugin } from './plugins' +import { BuildPlugin } from './plugins/build' +import { DevPlugin } from './plugins/dev' export function VitePWA(userOptions: Partial = {}): Plugin[] { - let viteConfig: ResolvedConfig - let options: ResolvedVitePWAOptions - let useImportRegister = false - - async function _generateSW() { - if (options.disable) - return - - if (options.strategies === 'injectManifest') - await generateInjectManifest(options, viteConfig) - else - await generateServiceWorker(options, viteConfig) - } - - function _generateBundle(bundle: OutputBundle = {}) { - if (options.disable) - return - - if (options.manifest) { - bundle[options.manifestFilename] = { - isAsset: true, - type: 'asset', - name: undefined, - source: generateWebManifestFile(options), - fileName: options.manifestFilename, - } - } - - // if virtual register is requested, do not inject. - if (options.injectRegister === 'auto') - options.injectRegister = useImportRegister ? null : 'script' - - if (options.injectRegister === 'script' && !existsSync(resolve(viteConfig.publicDir, FILE_SW_REGISTER))) { - bundle[FILE_SW_REGISTER] = { - isAsset: true, - type: 'asset', - name: undefined, - source: generateSimpleSWRegister(options, false), - fileName: FILE_SW_REGISTER, - } - } - return bundle - } - + const [contextResolver, VirtualPlugin] = CreatePlugin(userOptions) return [ - { - name: 'vite-plugin-pwa', - enforce: 'post', - apply: 'build', - async configResolved(config) { - viteConfig = config - options = await resolveOptions(userOptions, viteConfig) - }, - transformIndexHtml: { - enforce: 'post', - transform(html) { - if (options.disable) - return html - - // if virtual register is requested, do not inject. - if (options.injectRegister === 'auto') - options.injectRegister = useImportRegister ? null : 'script' - - return injectServiceWorker(html, options, false) - }, - }, - generateBundle(_, bundle) { - _generateBundle(bundle) - }, - async closeBundle() { - if (!viteConfig.build.ssr && !options.disable) - await _generateSW() - }, - async buildEnd(error) { - if (error) - throw error - }, - api: { - get disabled() { - return options.disable - }, - generateBundle: _generateBundle, - generateSW: _generateSW, - extendManifestEntries(fn: ExtendManifestEntriesHook) { - if (options.disable) - return - - const configField = options.strategies === 'generateSW' ? 'workbox' : 'injectManifest' - const result = fn(options[configField].additionalManifestEntries || []) - - if (result != null) - options[configField].additionalManifestEntries = result - }, - }, - }, - { - name: 'vite-plugin-pwa:virtual', - async configResolved(config) { - viteConfig = config - options = await resolveOptions(userOptions, viteConfig) - }, - resolveId(id) { - return VIRTUAL_MODULES.includes(id) ? VIRTUAL_MODULES_RESOLVE_PREFIX + id : undefined - }, - load(id) { - if (id.startsWith(VIRTUAL_MODULES_RESOLVE_PREFIX)) - id = id.slice(VIRTUAL_MODULES_RESOLVE_PREFIX.length) - else - return - - if (VIRTUAL_MODULES.includes(id)) { - if (viteConfig.command === 'serve' && options.devOptions.enabled) { - return generateRegisterSW( - { ...options, filename: swDevOptions.swUrl }, - 'build', - VIRTUAL_MODULES_MAP[id], - ) - } - else { - useImportRegister = true - return generateRegisterSW( - options, - !options.disable && viteConfig.command === 'build' ? 'build' : 'dev', - VIRTUAL_MODULES_MAP[id], - ) - } - } - }, - }, - { - name: 'vite-plugin-pwa:dev-sw', - apply: 'serve', - enforce: 'pre', - async configResolved(config) { - viteConfig = config - options = await resolveOptions(userOptions, viteConfig) - }, - transformIndexHtml: { - enforce: 'post', - async transform(html) { - if (options.disable || !options.manifest || !options.devOptions.enabled) - return html - - // - create `registerSW.js`: we have a race condition, so we generate it if explicitly configured - // - Vite will call this transform before the virtual module (if imported), and so the registerSW will - // always be generated in dev - // - added warning on the index guide and also on the development entry on docs - await createDevRegisterSW(options, viteConfig) - - return injectServiceWorker(html, options, true) - }, - }, - configureServer(server) { - if (!options.disable && options.manifest && options.devOptions.enabled) { - const name = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` - server.middlewares.use((req, res, next) => { - if (req.url === name) { - res.statusCode = 200 - res.setHeader('Content-Type', 'application/manifest+json') - res.write(generateWebManifestFile(options), 'utf-8') - res.end() - } - else { - next() - } - }) - } - }, - resolveId(id) { - return resolveDevId(id, options) - }, - async load(id) { - return await loadDev(id, options, viteConfig) - }, - }, + VirtualPlugin, + BuildPlugin(contextResolver), + DevPlugin(contextResolver), ] } diff --git a/src/plugins/build.ts b/src/plugins/build.ts new file mode 100644 index 00000000..81c66b61 --- /dev/null +++ b/src/plugins/build.ts @@ -0,0 +1,62 @@ +import type { Plugin } from 'vite' +import { injectServiceWorker } from '../html' +import type { ExtendManifestEntriesHook, VitePluginPWAAPI } from '../types' +import type { PWAPluginContextResolver } from '../context' +import { _generateBundle, _generateSW } from '../api' + +export function BuildPlugin(contextResolver: PWAPluginContextResolver) { + return { + name: 'vite-plugin-pwa', + enforce: 'post', + apply: 'build', + transformIndexHtml: { + enforce: 'post', + transform(html) { + const { options, useImportRegister } = contextResolver() + if (options.disable) + return html + + // if virtual register is requested, do not inject. + if (options.injectRegister === 'auto') + options.injectRegister = useImportRegister ? null : 'script' + + return injectServiceWorker(html, options, false) + }, + }, + generateBundle(_, bundle) { + return _generateBundle(contextResolver(), bundle) + }, + async closeBundle() { + const ctx = contextResolver() + if (!ctx.viteConfig.build.ssr && !ctx.options.disable) + await _generateSW(ctx) + }, + async buildEnd(error) { + if (error) + throw error + }, + api: { + get disabled() { + const ctx = contextResolver() + return ctx?.options?.disable + }, + generateBundle(bundle) { + return _generateBundle(contextResolver(), bundle!) + }, + async generateSW() { + return await _generateSW(contextResolver()) + }, + extendManifestEntries(fn: ExtendManifestEntriesHook) { + const { options } = contextResolver() + if (options.disable) + return + + const configField = options.strategies === 'generateSW' ? 'workbox' : 'injectManifest' + const result = fn(options[configField].additionalManifestEntries || []) + + if (result != null) + options[configField].additionalManifestEntries = result + }, + }, + } +} diff --git a/src/plugins/dev.ts b/src/plugins/dev.ts new file mode 100644 index 00000000..0bd0c9af --- /dev/null +++ b/src/plugins/dev.ts @@ -0,0 +1,156 @@ +import { basename, resolve } from 'path' +import { existsSync, promises as fs, mkdirSync } from 'fs' +import type { Plugin, ResolvedConfig } from 'vite' +import type { PWAPluginContextResolver } from '../context' +import { generateSimpleSWRegister, injectServiceWorker } from '../html' +import { generateWebManifestFile } from '../assets' +import { DEV_SW_NAME, FILE_SW_REGISTER } from '../constants' +import type { ResolvedVitePWAOptions } from '../types' +import { generateServiceWorker } from '../modules' +import { normalizePath } from '../utils' + +export const swDevOptions = { + swUrl: DEV_SW_NAME, + swDevGenerated: false, + workboxPaths: new Map(), +} + +export function DevPlugin(contextResolver: PWAPluginContextResolver) { + return { + name: 'vite-plugin-pwa:dev-sw', + apply: 'serve', + transformIndexHtml: { + enforce: 'post', + async transform(html) { + const { options, useImportRegister, viteConfig } = contextResolver() + if (options.disable || !options.manifest || !options.devOptions.enabled) + return html + + // if virtual register is requested, do not inject. + if (options.injectRegister === 'auto') + options.injectRegister = useImportRegister ? null : 'script' + + await createDevRegisterSW(options, viteConfig) + + return injectServiceWorker(html, options, true) + }, + }, + configureServer(server) { + const { options } = contextResolver() + if (!options.disable && options.manifest && options.devOptions.enabled) { + const name = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` + server.middlewares.use((req, res, next) => { + if (req.url === name) { + res.statusCode = 200 + res.setHeader('Content-Type', 'application/manifest+json') + res.write(generateWebManifestFile(options), 'utf-8') + res.end() + } + else { + next() + } + }) + } + }, + resolveId(id) { + const { options } = contextResolver() + if (!options.disable && options.devOptions.enabled && options.strategies === 'injectManifest') { + const name = id.startsWith('/') ? id.slice(1) : id + // the sw must be registered with .js extension on browser, here we detect that request: + // - the .js file and source with .ts, or + // - the .ts source file + // in both cases we need to resolve the id to the source file to load it and add empty injection point on loadDev + // we need tom always return the path to source file name to resolve imports on the sw + return name === swDevOptions.swUrl || name === options.injectManifest.swSrc + ? options.injectManifest.swSrc + : undefined + } + + return undefined + }, + async load(id) { + const { options, viteConfig } = contextResolver() + if (!options.disable && options.devOptions.enabled) { + if (options.strategies === 'injectManifest') { + // we need to inject self.__WB_MANIFEST with an empty array: there is no pwa on dev + const swSrc = normalizePath(options.injectManifest.swSrc) + if (id === swSrc) { + let content = await fs.readFile(options.injectManifest.swSrc, 'utf-8') + const resolvedIP = options.injectManifest.injectionPoint + if (resolvedIP) { + const ip = new RegExp(resolvedIP, 'g') + const navigateFallback = options.devOptions.navigateFallback + // we only add the navigateFallback if using registerRoute for offline support on custom sw + if (navigateFallback) + content = content.replace(ip, `[{ url: '${navigateFallback}' }]`) + else + content = content.replace(ip, '[]') + } + return content + } + + return undefined + } + if (id.endsWith(swDevOptions.swUrl)) { + const globDirectory = resolve(viteConfig.root, 'dev-dist') + const swDest = resolve(globDirectory, 'sw.js') + if (!swDevOptions.swDevGenerated || !existsSync(swDest)) { + // we only need to generate sw on dev-dist folder and then read the content + // the sw precache (self.__SW_MANIFEST) will be empty since we're using `dev-dist` folder + // we only need to add the navigateFallback if configured + const navigateFallback = options.workbox.navigateFallback + // we need to exclude the manifest.webmanifest from the sw precache: avoid writing it to the dev-dist folder + const webManifestUrl = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` + const { filePaths } = await generateServiceWorker( + Object.assign( + {}, + options, + { + workbox: { + ...options.workbox, + navigateFallbackDenylist: [new RegExp(`^${webManifestUrl}$`)], + runtimeCaching: options.devOptions.disableRuntimeConfig ? undefined : options.workbox.runtimeCaching, + // we only include navigateFallback + additionalManifestEntries: navigateFallback ? [navigateFallback] : undefined, + cleanupOutdatedCaches: true, + globDirectory: globDirectory.replace(/\\/g, '/'), + swDest: swDest.replace(/\\/g, '/'), + }, + }, + ), + viteConfig, + ) + // we store workbox dependencies, and so we can then resolve them when requested: at least workbox-**.js + filePaths.forEach((we) => { + const name = basename(we) + // we exclude the sw itself + if (name !== 'sw.js') + swDevOptions.workboxPaths.set(normalizePath(`${options.base}${name}`), we) + }) + swDevOptions.swDevGenerated = true + } + return await fs.readFile(swDest, 'utf-8') + } + + if (swDevOptions.workboxPaths.has(id)) + return await fs.readFile(swDevOptions.workboxPaths.get(id)!, 'utf-8') + } + }, + } +} + +async function createDevRegisterSW(options: ResolvedVitePWAOptions, viteConfig: ResolvedConfig) { + if (options.injectRegister === 'script') { + const devDist = resolve(viteConfig.root, 'dev-dist') + if (!existsSync(devDist)) + mkdirSync(devDist) + + const registerSW = resolve(devDist, FILE_SW_REGISTER) + if (existsSync(registerSW)) + return + + await fs.writeFile(registerSW, generateSimpleSWRegister(options, true), { encoding: 'utf8' }) + swDevOptions.workboxPaths.set(normalizePath(`${options.base}${FILE_SW_REGISTER}`), registerSW) + } +} + diff --git a/src/plugins/index.ts b/src/plugins/index.ts new file mode 100644 index 00000000..45e3256b --- /dev/null +++ b/src/plugins/index.ts @@ -0,0 +1,50 @@ +import type { Plugin } from 'vite' +import { VIRTUAL_MODULES, VIRTUAL_MODULES_MAP, VIRTUAL_MODULES_RESOLVE_PREFIX } from '../constants' +import { generateRegisterSW } from '../modules' +import type { PWAPluginContext, PWAPluginContextResolver } from '../context' +import { resolvePWAPluginContext } from '../context' +import type { VitePWAOptions } from '../types' +import { swDevOptions } from './dev' + +export function CreatePlugin(userOptions: Partial): [PWAPluginContextResolver, Plugin] { + let context: PWAPluginContext + const contextResolver: PWAPluginContextResolver = () => { + return context + } + return [ + contextResolver, + { + name: 'vite-plugin-pwa:virtual', + async configResolved(config) { + context = await resolvePWAPluginContext(config, userOptions) + }, + resolveId(id) { + return VIRTUAL_MODULES.includes(id) ? VIRTUAL_MODULES_RESOLVE_PREFIX + id : undefined + }, + load(id) { + if (id.startsWith(VIRTUAL_MODULES_RESOLVE_PREFIX)) + id = id.slice(VIRTUAL_MODULES_RESOLVE_PREFIX.length) + else + return + + if (VIRTUAL_MODULES.includes(id)) { + context.useImportRegister = true + if (context.viteConfig.command === 'serve' && context.options.devOptions.enabled) { + return generateRegisterSW( + { ...context.options, filename: swDevOptions.swUrl }, + 'build', + VIRTUAL_MODULES_MAP[id], + ) + } + else { + return generateRegisterSW( + context.options, + !context.options.disable && context.viteConfig.command === 'build' ? 'build' : 'dev', + VIRTUAL_MODULES_MAP[id], + ) + } + } + }, + }, + ] +} From 3e33253f6f9f3387804ae9c1cf249b129263166f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez=20Jim=C3=A9nez?= Date: Sun, 3 Jul 2022 12:48:10 +0200 Subject: [PATCH 7/8] chore: add TS2307 component and use it in all frameworks entries --- docs/.vitepress/components.d.ts | 1 + .../theme/components/TypeScriptError2307.md | 16 ++++++++++++++++ docs/examples/index.md | 2 +- docs/frameworks/index.md | 4 ++++ docs/frameworks/preact.md | 4 ++++ docs/frameworks/react.md | 4 ++++ docs/frameworks/solidjs.md | 4 ++++ docs/frameworks/svelte.md | 4 ++++ docs/frameworks/vue.md | 4 ++++ docs/guide/faq.md | 12 +----------- 10 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 docs/.vitepress/theme/components/TypeScriptError2307.md diff --git a/docs/.vitepress/components.d.ts b/docs/.vitepress/components.d.ts index 1f7e409f..6c85abc4 100644 --- a/docs/.vitepress/components.d.ts +++ b/docs/.vitepress/components.d.ts @@ -20,6 +20,7 @@ declare module '@vue/runtime-core' { RouterView: typeof import('vue-router')['RouterView'] RunExamples: typeof import('./theme/components/RunExamples.md')['default'] SsrSsg: typeof import('./theme/components/SsrSsg.md')['default'] + TypeScriptError2307: typeof import('./theme/components/TypeScriptError2307.md')['default'] } } diff --git a/docs/.vitepress/theme/components/TypeScriptError2307.md b/docs/.vitepress/theme/components/TypeScriptError2307.md new file mode 100644 index 00000000..e36d9fae --- /dev/null +++ b/docs/.vitepress/theme/components/TypeScriptError2307.md @@ -0,0 +1,16 @@ +If your **TypeScript** build step or **IDE** complain about not being able to find modules or type definitions on imports, add the following to the `compilerOptions.types` array of your `tsconfig.json`: + +```json +{ + "compilerOptions": { + "types": [ + "vite-plugin-pwa/client" + ] + } +} +``` + +Or you can add the following reference in any of your `d.ts` files (for example, in `vite-env.d.ts` or `global.d.ts`): +```ts +/// +``` diff --git a/docs/examples/index.md b/docs/examples/index.md index 27489ddc..7994aea4 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -76,7 +76,7 @@ A common pitfall is to select `Offline` option, then restart the example project If you click the browser `Refresh` button, you can inspect `Application > Network` tab on `dev tools` to check that the `Service Worker` is serving all assets instead request them to the server. ::: danger -Don't do a `hard refresh` since this will force the browser to go to the server, and then you will get `No internet connection` page on the browser. +Don't do a `hard refresh` since it will force the browser to go to the server, and then you will get `No internet connection` page. ::: ## Available Examples Projects diff --git a/docs/frameworks/index.md b/docs/frameworks/index.md index 3fadbdc0..9ec3e433 100644 --- a/docs/frameworks/index.md +++ b/docs/frameworks/index.md @@ -20,6 +20,10 @@ This plugin is Framework-agnostic and so you can use it with Vanilla JavaScript, ## Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register' { export interface RegisterSWOptions { diff --git a/docs/frameworks/preact.md b/docs/frameworks/preact.md index 1b28aa41..71fcbc9d 100644 --- a/docs/frameworks/preact.md +++ b/docs/frameworks/preact.md @@ -12,6 +12,10 @@ You will need to add `workbox-window` as a `dev` dependency to your `Vite` proje ## Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register/preact' { // @ts-expect-error ignore when preact/hooks is not installed diff --git a/docs/frameworks/react.md b/docs/frameworks/react.md index 6a9df939..4ff124a0 100644 --- a/docs/frameworks/react.md +++ b/docs/frameworks/react.md @@ -12,6 +12,10 @@ You will need to add `workbox-window` as a `dev` dependency to your `Vite` proje ## Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register/react' { // @ts-expect-error ignore when react is not installed diff --git a/docs/frameworks/solidjs.md b/docs/frameworks/solidjs.md index 1784042a..b27032cc 100644 --- a/docs/frameworks/solidjs.md +++ b/docs/frameworks/solidjs.md @@ -12,6 +12,10 @@ You will need to add `workbox-window` as a `dev` dependency to your `Vite` proje ## Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register/solid' { // @ts-expect-error ignore when solid-js is not installed diff --git a/docs/frameworks/svelte.md b/docs/frameworks/svelte.md index 374f1503..83ae8c0a 100644 --- a/docs/frameworks/svelte.md +++ b/docs/frameworks/svelte.md @@ -12,6 +12,10 @@ You will need to add `workbox-window` as a `dev` dependency to your `Vite` proje ## Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register/svelte' { // @ts-expect-error ignore when svelte is not installed diff --git a/docs/frameworks/vue.md b/docs/frameworks/vue.md index d44eadd4..59b0fc62 100644 --- a/docs/frameworks/vue.md +++ b/docs/frameworks/vue.md @@ -10,6 +10,10 @@ You can use the built-in `Vite` virtual module `virtual:pwa-register/vue` for `V ### Type declarations +::: tip + +::: + ```ts declare module 'virtual:pwa-register/vue' { // @ts-expect-error ignore when vue is not installed diff --git a/docs/guide/faq.md b/docs/guide/faq.md index 98f0c006..cb326940 100644 --- a/docs/guide/faq.md +++ b/docs/guide/faq.md @@ -7,17 +7,7 @@ next: Getting Started | Frameworks ## IDE errors 'Cannot find module' (ts2307) -If your TypeScript build step or IDE complain about not being able to find modules or type definitions on imports, add the following to the `compilerOptions.types` array of your `tsconfig.json`: - -```json -{ - "compilerOptions": { - "types": [ - "vite-plugin-pwa/client" - ] - } -} -``` + ## Web app manifest and 401 status code (Unauthorized) From fa30b52bb3fd898286255c8bf6a4d6ff1d010577 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Wed, 6 Jul 2022 17:42:07 +0800 Subject: [PATCH 8/8] refactor: context --- src/api.ts | 26 +++++++++++++++++++++++ src/context.ts | 13 ++++++------ src/index.ts | 11 +++++----- src/plugins/build.ts | 35 +++++-------------------------- src/plugins/dev.ts | 12 +++++------ src/plugins/index.ts | 50 -------------------------------------------- src/plugins/main.ts | 46 ++++++++++++++++++++++++++++++++++++++++ src/types.ts | 2 +- 8 files changed, 96 insertions(+), 99 deletions(-) delete mode 100644 src/plugins/index.ts create mode 100644 src/plugins/main.ts diff --git a/src/api.ts b/src/api.ts index 467900aa..5baa8bcf 100644 --- a/src/api.ts +++ b/src/api.ts @@ -6,6 +6,7 @@ import { generateWebManifestFile } from './assets' import { FILE_SW_REGISTER } from './constants' import { generateSimpleSWRegister } from './html' import type { PWAPluginContext } from './context' +import type { ExtendManifestEntriesHook, VitePluginPWAAPI } from './types' export async function _generateSW({ options, viteConfig }: PWAPluginContext) { if (options.disable) @@ -46,3 +47,28 @@ export function _generateBundle({ options, viteConfig, useImportRegister }: PWAP } return bundle } + +export function createAPI(ctx: PWAPluginContext): VitePluginPWAAPI { + return { + get disabled() { + return ctx?.options?.disable + }, + generateBundle(bundle) { + return _generateBundle(ctx, bundle!) + }, + async generateSW() { + return await _generateSW(ctx) + }, + extendManifestEntries(fn: ExtendManifestEntriesHook) { + const { options } = ctx + if (options.disable) + return + + const configField = options.strategies === 'generateSW' ? 'workbox' : 'injectManifest' + const result = fn(options[configField].additionalManifestEntries || []) + + if (result != null) + options[configField].additionalManifestEntries = result + }, + } +} diff --git a/src/context.ts b/src/context.ts index 304fd0b5..dd60925f 100644 --- a/src/context.ts +++ b/src/context.ts @@ -1,19 +1,18 @@ import type { ResolvedConfig } from 'vite' import type { ResolvedVitePWAOptions, VitePWAOptions } from './types' -import { resolveOptions } from './options' export interface PWAPluginContext { viteConfig: ResolvedConfig + userOptions: Partial options: ResolvedVitePWAOptions useImportRegister: boolean } -export type PWAPluginContextResolver = () => PWAPluginContext - -export async function resolvePWAPluginContext(viteConfig: ResolvedConfig, userOptions: Partial) { - return { - viteConfig, - options: await resolveOptions(userOptions, viteConfig), +export function createContext(userOptions: Partial): PWAPluginContext { + return { + userOptions, + options: undefined!, + viteConfig: undefined!, useImportRegister: false, } } diff --git a/src/index.ts b/src/index.ts index 33a77f35..1b590dd3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,15 +1,16 @@ import type { Plugin } from 'vite' +import { createContext } from './context' import type { VitePWAOptions } from './types' -import { CreatePlugin } from './plugins' import { BuildPlugin } from './plugins/build' import { DevPlugin } from './plugins/dev' +import { MainPlugin } from './plugins/main' export function VitePWA(userOptions: Partial = {}): Plugin[] { - const [contextResolver, VirtualPlugin] = CreatePlugin(userOptions) + const ctx = createContext(userOptions) return [ - VirtualPlugin, - BuildPlugin(contextResolver), - DevPlugin(contextResolver), + MainPlugin(ctx), + BuildPlugin(ctx), + DevPlugin(ctx), ] } diff --git a/src/plugins/build.ts b/src/plugins/build.ts index 81c66b61..7e43be0e 100644 --- a/src/plugins/build.ts +++ b/src/plugins/build.ts @@ -1,18 +1,17 @@ import type { Plugin } from 'vite' import { injectServiceWorker } from '../html' -import type { ExtendManifestEntriesHook, VitePluginPWAAPI } from '../types' -import type { PWAPluginContextResolver } from '../context' import { _generateBundle, _generateSW } from '../api' +import type { PWAPluginContext } from '../context' -export function BuildPlugin(contextResolver: PWAPluginContextResolver) { +export function BuildPlugin(ctx: PWAPluginContext) { return { - name: 'vite-plugin-pwa', + name: 'vite-plugin-pwa:build', enforce: 'post', apply: 'build', transformIndexHtml: { enforce: 'post', transform(html) { - const { options, useImportRegister } = contextResolver() + const { options, useImportRegister } = ctx if (options.disable) return html @@ -24,10 +23,9 @@ export function BuildPlugin(contextResolver: PWAPluginContextResolver) { }, }, generateBundle(_, bundle) { - return _generateBundle(contextResolver(), bundle) + return _generateBundle(ctx, bundle) }, async closeBundle() { - const ctx = contextResolver() if (!ctx.viteConfig.build.ssr && !ctx.options.disable) await _generateSW(ctx) }, @@ -35,28 +33,5 @@ export function BuildPlugin(contextResolver: PWAPluginContextResolver) { if (error) throw error }, - api: { - get disabled() { - const ctx = contextResolver() - return ctx?.options?.disable - }, - generateBundle(bundle) { - return _generateBundle(contextResolver(), bundle!) - }, - async generateSW() { - return await _generateSW(contextResolver()) - }, - extendManifestEntries(fn: ExtendManifestEntriesHook) { - const { options } = contextResolver() - if (options.disable) - return - - const configField = options.strategies === 'generateSW' ? 'workbox' : 'injectManifest' - const result = fn(options[configField].additionalManifestEntries || []) - - if (result != null) - options[configField].additionalManifestEntries = result - }, - }, } } diff --git a/src/plugins/dev.ts b/src/plugins/dev.ts index 0bd0c9af..e24d9ff3 100644 --- a/src/plugins/dev.ts +++ b/src/plugins/dev.ts @@ -1,13 +1,13 @@ import { basename, resolve } from 'path' import { existsSync, promises as fs, mkdirSync } from 'fs' import type { Plugin, ResolvedConfig } from 'vite' -import type { PWAPluginContextResolver } from '../context' import { generateSimpleSWRegister, injectServiceWorker } from '../html' import { generateWebManifestFile } from '../assets' import { DEV_SW_NAME, FILE_SW_REGISTER } from '../constants' import type { ResolvedVitePWAOptions } from '../types' import { generateServiceWorker } from '../modules' import { normalizePath } from '../utils' +import type { PWAPluginContext } from '../context' export const swDevOptions = { swUrl: DEV_SW_NAME, @@ -15,14 +15,14 @@ export const swDevOptions = { workboxPaths: new Map(), } -export function DevPlugin(contextResolver: PWAPluginContextResolver) { +export function DevPlugin(ctx: PWAPluginContext): Plugin { return { name: 'vite-plugin-pwa:dev-sw', apply: 'serve', transformIndexHtml: { enforce: 'post', async transform(html) { - const { options, useImportRegister, viteConfig } = contextResolver() + const { options, useImportRegister, viteConfig } = ctx if (options.disable || !options.manifest || !options.devOptions.enabled) return html @@ -36,7 +36,7 @@ export function DevPlugin(contextResolver: PWAPluginContextResolver) { }, }, configureServer(server) { - const { options } = contextResolver() + const { options } = ctx if (!options.disable && options.manifest && options.devOptions.enabled) { const name = options.devOptions.webManifestUrl ?? `${options.base}${options.manifestFilename}` server.middlewares.use((req, res, next) => { @@ -53,7 +53,7 @@ export function DevPlugin(contextResolver: PWAPluginContextResolver) { } }, resolveId(id) { - const { options } = contextResolver() + const { options } = ctx if (!options.disable && options.devOptions.enabled && options.strategies === 'injectManifest') { const name = id.startsWith('/') ? id.slice(1) : id // the sw must be registered with .js extension on browser, here we detect that request: @@ -69,7 +69,7 @@ export function DevPlugin(contextResolver: PWAPluginContextResolver) { return undefined }, async load(id) { - const { options, viteConfig } = contextResolver() + const { options, viteConfig } = ctx if (!options.disable && options.devOptions.enabled) { if (options.strategies === 'injectManifest') { // we need to inject self.__WB_MANIFEST with an empty array: there is no pwa on dev diff --git a/src/plugins/index.ts b/src/plugins/index.ts deleted file mode 100644 index 45e3256b..00000000 --- a/src/plugins/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Plugin } from 'vite' -import { VIRTUAL_MODULES, VIRTUAL_MODULES_MAP, VIRTUAL_MODULES_RESOLVE_PREFIX } from '../constants' -import { generateRegisterSW } from '../modules' -import type { PWAPluginContext, PWAPluginContextResolver } from '../context' -import { resolvePWAPluginContext } from '../context' -import type { VitePWAOptions } from '../types' -import { swDevOptions } from './dev' - -export function CreatePlugin(userOptions: Partial): [PWAPluginContextResolver, Plugin] { - let context: PWAPluginContext - const contextResolver: PWAPluginContextResolver = () => { - return context - } - return [ - contextResolver, - { - name: 'vite-plugin-pwa:virtual', - async configResolved(config) { - context = await resolvePWAPluginContext(config, userOptions) - }, - resolveId(id) { - return VIRTUAL_MODULES.includes(id) ? VIRTUAL_MODULES_RESOLVE_PREFIX + id : undefined - }, - load(id) { - if (id.startsWith(VIRTUAL_MODULES_RESOLVE_PREFIX)) - id = id.slice(VIRTUAL_MODULES_RESOLVE_PREFIX.length) - else - return - - if (VIRTUAL_MODULES.includes(id)) { - context.useImportRegister = true - if (context.viteConfig.command === 'serve' && context.options.devOptions.enabled) { - return generateRegisterSW( - { ...context.options, filename: swDevOptions.swUrl }, - 'build', - VIRTUAL_MODULES_MAP[id], - ) - } - else { - return generateRegisterSW( - context.options, - !context.options.disable && context.viteConfig.command === 'build' ? 'build' : 'dev', - VIRTUAL_MODULES_MAP[id], - ) - } - } - }, - }, - ] -} diff --git a/src/plugins/main.ts b/src/plugins/main.ts new file mode 100644 index 00000000..0acb5ced --- /dev/null +++ b/src/plugins/main.ts @@ -0,0 +1,46 @@ +import type { Plugin } from 'vite' +import { VIRTUAL_MODULES, VIRTUAL_MODULES_MAP, VIRTUAL_MODULES_RESOLVE_PREFIX } from '../constants' +import { generateRegisterSW } from '../modules' +import { resolveOptions } from '../options' +import { createAPI } from '../api' +import type { PWAPluginContext } from '../context' +import { swDevOptions } from './dev' + +export function MainPlugin(ctx: PWAPluginContext): Plugin { + return { + name: 'vite-plugin-pwa', + async configResolved(config) { + ctx.useImportRegister = false + ctx.viteConfig = config + ctx.options = await resolveOptions(ctx.userOptions, config) + }, + resolveId(id) { + return VIRTUAL_MODULES.includes(id) ? VIRTUAL_MODULES_RESOLVE_PREFIX + id : undefined + }, + load(id) { + if (id.startsWith(VIRTUAL_MODULES_RESOLVE_PREFIX)) + id = id.slice(VIRTUAL_MODULES_RESOLVE_PREFIX.length) + else + return + + if (VIRTUAL_MODULES.includes(id)) { + ctx.useImportRegister = true + if (ctx.viteConfig.command === 'serve' && ctx.options.devOptions.enabled) { + return generateRegisterSW( + { ...ctx.options, filename: swDevOptions.swUrl }, + 'build', + VIRTUAL_MODULES_MAP[id], + ) + } + else { + return generateRegisterSW( + ctx.options, + !ctx.options.disable && ctx.viteConfig.command === 'build' ? 'build' : 'dev', + VIRTUAL_MODULES_MAP[id], + ) + } + } + }, + api: createAPI(ctx), + } +} diff --git a/src/types.ts b/src/types.ts index 00c26da1..8a97394c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -259,7 +259,7 @@ export interface VitePluginPWAAPI { /* * Explicitly generate the manifests. */ - generateBundle(bundle?: OutputBundle): OutputBundle + generateBundle(bundle?: OutputBundle): OutputBundle | undefined /* * Explicitly generate the PWA services worker. */