From b6edee90cdd16a34a9aa9dd9edbefa3c299c7b28 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Wed, 24 Aug 2022 13:02:24 +1000 Subject: [PATCH] feat(vite): automatically update tsconfig paths for chosen types --- package.json | 2 +- packages/nuxt/package.json | 2 +- packages/schema-org/providers/simple.ts | 83 +++++++------ packages/vite/package.json | 11 +- packages/vite/src/plugins/alias.ts | 64 +++++++--- playgrounds/vite/tsconfig.json | 1 - playgrounds/vitesse/src/App.vue | 9 +- playgrounds/vitesse/tsconfig.json | 23 +++- playgrounds/vitesse/vite.config.ts | 10 +- pnpm-lock.yaml | 153 ++++++++++++++---------- 10 files changed, 225 insertions(+), 133 deletions(-) diff --git a/package.json b/package.json index 2e0dc3a..12d62cc 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "eslint": "^8.22.0", "jsdom": "^20.0.0", "nuxt": "3.0.0-rc.8", - "playwright": "^1.25.0", + "playwright": "^1.25.1", "typescript": "^4.7.4", "unbuild": "^0.8.9", "utility-types": "^3.10.0", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 47b3689..e2919ad 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -44,7 +44,7 @@ "@vueuse/schema-org": "workspace:*", "@vueuse/schema-org-vite": "workspace:*", "pathe": "^0.3.5", - "schema-org-graph-js": "0.4.4" + "schema-org-graph-js": "0.4.5" }, "devDependencies": { "@nuxt/module-builder": "latest", diff --git a/packages/schema-org/providers/simple.ts b/packages/schema-org/providers/simple.ts index 3325493..9cefe8f 100644 --- a/packages/schema-org/providers/simple.ts +++ b/packages/schema-org/providers/simple.ts @@ -69,53 +69,62 @@ import { } from 'schema-org-graph-js' import type { Ref } from 'vue' -type MaybeRef = { - [P in keyof T]?: T[P] | Ref; -} +export type MaybeRef = T | Ref + +export type DeepMaybeRef = T extends Ref + ? MaybeRef + : T extends Array | object + ? { [K in keyof T]: DeepMaybeRef } + : MaybeRef -type WithResolver = T & { +type Node = Omit, '@type'> + +type MaybeWithResolver = T & { _resolver?: any _uid?: number } const provideResolver = (input?: T, resolver?: any) => { - return > { + return > { ...(input || {}), _resolver: resolver, } } -export const defineAddress = >(input?: T) => provideResolver(input, addressResolver) -export const defineAggregateOffer = >(input?: T) => provideResolver(input, aggregateOfferResolver) -export const defineAggregateRating = >(input?: T) => provideResolver(input, aggregateRatingResolver) -export const defineArticle = >(input?: T) => provideResolver(input, articleResolver) -export const defineBreadcrumb = >(input?: T) => provideResolver(input, breadcrumbResolver) -export const defineComment = >(input?: T) => provideResolver(input, commentResolver) -export const defineEvent = >(input?: T) => provideResolver(input, eventResolver) -export const defineVirtualLocation = >(input?: T) => provideResolver(input, virtualLocationResolver) -export const definePlace = >(input?: T) => provideResolver(input, placeResolver) -export const defineHowTo = >(input?: T) => provideResolver(input, howToResolver) -export const defineHowToStep = >(input?: T) => provideResolver(input, howToStepResolver) -export const defineImage = >(input?: T) => provideResolver(input, imageResolver) -export const defineLocalBusiness = >(input?: T) => provideResolver(input, localBusinessResolver) -export const defineOffer = >(input?: T) => provideResolver(input, offerResolver) -export const defineOpeningHours = >(input?: T) => provideResolver(input, resolveOpeningHours) -export const defineOrganization = >(input?: T) => provideResolver(input, organizationResolver) -export const definePerson = >(input?: T) => provideResolver(input, personResolver) -export const defineProduct = >(input?: T) => provideResolver(input, productResolver) -export const defineQuestion = >(input?: T) => provideResolver(input, questionResolver) -export const defineRecipe = >(input?: T) => provideResolver(input, recipeResolver) -export const defineReview = >(input?: T) => provideResolver(input, reviewResolver) -export const defineVideo = >(input?: T) => provideResolver(input, videoResolver) -export const defineWebPage = >(input?: T) => provideResolver(input, webPageResolver) -export const defineWebSite = >(input?: T) => provideResolver(input, webSiteResolver) -export const defineBook = >(input?: T) => provideResolver(input, bookResolver) -export const defineBookEdition = >(input?: T) => provideResolver(input, bookEditionResolver) -export const defineCourse = >(input?: T) => provideResolver(input, courseResolver) -export const defineItemList = >(input?: T) => provideResolver(input, itemListResolver) -export const defineMovie = >(input?: T) => provideResolver(input, movieResolver) -export const defineSoftwareApp = >(input?: T) => provideResolver(input, softwareAppResolver) -export const defineSearchAction = >(input?: T) => provideResolver(input, searchActionResolver) -export const defineReadAction = >(input?: T) => provideResolver(input, readActionResolver) +export const defineAddress = >(input?: T) => provideResolver(input, addressResolver) +export const defineAggregateOffer = >(input?: T) => provideResolver(input, aggregateOfferResolver) +export const defineAggregateRating = >(input?: T) => provideResolver(input, aggregateRatingResolver) +export const defineArticle = >(input?: T) => provideResolver(input, articleResolver) +export const defineBreadcrumb = >(input?: T) => provideResolver(input, breadcrumbResolver) +export const defineComment = >(input?: T) => provideResolver(input, commentResolver) +export const defineEvent = >(input?: T) => provideResolver(input, eventResolver) +export const defineVirtualLocation = >(input?: T) => provideResolver(input, virtualLocationResolver) +export const definePlace = >(input?: T) => provideResolver(input, placeResolver) +export const defineHowTo = >(input?: T) => provideResolver(input, howToResolver) +export const defineHowToStep = >(input?: T) => provideResolver(input, howToStepResolver) +export const defineImage = >(input?: T) => provideResolver(input, imageResolver) +export const defineLocalBusiness = >(input?: T) => provideResolver(input, localBusinessResolver) +export const defineOffer = >(input?: T) => provideResolver(input, offerResolver) +export const defineOpeningHours = >(input?: T) => provideResolver(input, resolveOpeningHours) +export const defineOrganization = >(input?: T) => provideResolver(input, organizationResolver) +export const definePerson = >(input?: T) => provideResolver(input, personResolver) +export const defineProduct = >(input?: T) => provideResolver(input, productResolver) +export const defineQuestion = >(input?: T) => provideResolver(input, questionResolver) +export const defineRecipe = >(input?: T) => provideResolver(input, recipeResolver) +export const defineReview = >(input?: T) => provideResolver(input, reviewResolver) +export const defineVideo = >(input?: T) => provideResolver(input, videoResolver) +export const defineWebPage = >(input?: T) => provideResolver(input, webPageResolver) +export const defineWebSite = >(input?: T) => provideResolver(input, webSiteResolver) +export const defineBook = >(input?: T) => provideResolver(input, bookResolver) +export const defineCourse = >(input?: T) => provideResolver(input, courseResolver) +export const defineItemList = >(input?: T) => provideResolver(input, itemListResolver) +export const defineMovie = >(input?: T) => provideResolver(input, movieResolver) +export const defineSearchAction = >(input?: T) => provideResolver(input, searchActionResolver) +export const defineReadAction = >(input?: T) => provideResolver(input, readActionResolver) + +/* simple-only */ +export const defineSoftwareApp = >(input?: T) => provideResolver(input, softwareAppResolver) +export const defineBookEdition = >(input?: T) => provideResolver(input, bookEditionResolver) +/* end-simple-only */ export { Thing } diff --git a/packages/vite/package.json b/packages/vite/package.json index 2e009ad..4be5386 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -74,16 +74,17 @@ "dependencies": { "@vueuse/schema-org": "workspace:*", "magic-string": "^0.26.2", - "mlly": "^0.5.12", - "pathe": "^0.3.4", + "mlly": "^0.5.14", + "pathe": "^0.3.5", "schema-dts": "^1.1.0", - "unplugin": "^0.9.2" + "unplugin": "^0.9.4", + "pkg-types": "^0.3.4" }, "devDependencies": { "unplugin-vue-components": "^0.22.4", - "vite": "^3.0.8", + "vite": "^3.0.9", "vite-ssg": "^0.20.2", - "vitepress": "1.0.0-alpha.8", + "vitepress": "1.0.0-alpha.10", "vue-router": "^4.1.4" } } diff --git a/packages/vite/src/plugins/alias.ts b/packages/vite/src/plugins/alias.ts index 932a005..6b59bcc 100644 --- a/packages/vite/src/plugins/alias.ts +++ b/packages/vite/src/plugins/alias.ts @@ -1,10 +1,15 @@ import { createUnplugin } from 'unplugin' import MagicString from 'magic-string' import { resolvePath } from 'mlly' -import { dirname } from 'pathe' +import { dirname, relative } from 'pathe' import { AliasProvider, AliasRuntime, PkgName } from '@vueuse/schema-org' +import { readTSConfig, resolveTSConfig, writeTSConfig } from 'pkg-types' export interface AliasPluginOptions { + /** + * Whether the tsconfig.json should be updated with the aliases. + */ + dts?: boolean /** * Should the runtime be swapped out with a mock one, used for SSR-only mode. */ @@ -33,10 +38,11 @@ interface AliasPaths { export const AliasRuntimePlugin = () => createUnplugin((userConfig) => { userConfig = userConfig || {} - let paths: AliasPaths - const fetchPaths = async (force = false) => { - if (paths && !force) - return paths + let cachedPaths: AliasPaths + let updatedTSConfig = false + const fetchPaths = async (ctx: { root?: string }, force = false) => { + if (cachedPaths && !force) + return cachedPaths const pkg = userConfig.paths?.pkg || dirname(await resolvePath(PkgName)) let provider, runtime if (userConfig?.mock) { @@ -46,29 +52,58 @@ export const AliasRuntimePlugin = () => createUnplugin((user else { provider = userConfig.paths?.provider || `${pkg}/providers/${userConfig?.full ? 'full' : 'simple'}` runtime = userConfig.paths?.runtime || `${pkg}/runtime` + + // update types for whichever provider we're using + if (!updatedTSConfig && userConfig.dts && ctx.root && process.env.NODE_ENV !== 'production') { + const tsConfigFile = await resolveTSConfig(ctx.root) + if (tsConfigFile) { + const tsconfig = await readTSConfig(tsConfigFile) + tsconfig.compilerOptions = tsconfig.compilerOptions || {} + tsconfig.compilerOptions.paths = tsconfig.compilerOptions.paths || [] + const providerTsPath = relative(ctx.root, provider) + if (tsconfig.compilerOptions.paths[AliasProvider]?.[0] !== providerTsPath) { + tsconfig.compilerOptions.paths[AliasProvider] = [providerTsPath] + updatedTSConfig = true + } + + const runtimeTsPath = relative(ctx.root, `${runtime}/index`) + if (tsconfig.compilerOptions.paths[AliasRuntime]?.[0] !== runtimeTsPath) { + tsconfig.compilerOptions.paths[AliasRuntime] = [runtimeTsPath] + updatedTSConfig = true + } + + if (updatedTSConfig) + await writeTSConfig(tsConfigFile, tsconfig) + // avoid checking again this run + updatedTSConfig = true + } + } } - paths = { + + const resolvedPaths = { pkg, provider, runtime, } - return paths + if (ctx.root) + cachedPaths = resolvedPaths + return resolvedPaths } return { name: '@vueuse/schema-org:aliases', enforce: 'pre', async buildStart() { - await fetchPaths() + await fetchPaths({}) }, transformInclude(id) { - return id.includes(paths.pkg) + return id.includes(cachedPaths.pkg) }, transform(code) { // swap out aliases for real paths const s = new MagicString(code) - s.replace(AliasProvider, paths.provider) - s.replace(AliasRuntime, paths.runtime) + s.replace(AliasProvider, cachedPaths.provider) + s.replace(AliasRuntime, cachedPaths.runtime) if (s.hasChanged()) { return { @@ -78,7 +113,7 @@ export const AliasRuntimePlugin = () => createUnplugin((user } }, async webpack(compiler) { - const { provider, runtime } = await fetchPaths() + const { provider, runtime } = await fetchPaths({ root: compiler.context }) compiler.options.resolve.alias = { ...compiler.options.resolve.alias || {}, @@ -88,14 +123,15 @@ export const AliasRuntimePlugin = () => createUnplugin((user }, vite: { async config(config, ctx) { + const root = config.root || process.cwd() let paths const isServerBuild = process.env.VITE_SSG || ctx.ssrBuild if (typeof userConfig.mock === 'undefined' && !isServerBuild && config.mode === 'production') { userConfig.mock = true - paths = await fetchPaths(true) + paths = await fetchPaths({ root }, true) } else { - paths = await fetchPaths() + paths = await fetchPaths({ root }) } const { pkg, provider, runtime } = paths diff --git a/playgrounds/vite/tsconfig.json b/playgrounds/vite/tsconfig.json index e929bd8..7c240ba 100644 --- a/playgrounds/vite/tsconfig.json +++ b/playgrounds/vite/tsconfig.json @@ -5,7 +5,6 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], - "#vueuse/schema-org/*": ["@vueuse/schema-org/*"] } }, diff --git a/playgrounds/vitesse/src/App.vue b/playgrounds/vitesse/src/App.vue index 56c4c1f..ffddfa3 100644 --- a/playgrounds/vitesse/src/App.vue +++ b/playgrounds/vitesse/src/App.vue @@ -22,11 +22,14 @@ useHead({ useSchemaOrg([ defineWebSite({ - name: 'Vitesse', + name: computed(() => { + return 'test' + }), }), defineOrganization({ - name: 'Vitesse', - logo: '/logo.png', + '@type': 'Organization', + 'name': 'Vitesse', + 'logo': '/logo.png', }), defineWebPage(), ]) diff --git a/playgrounds/vitesse/tsconfig.json b/playgrounds/vitesse/tsconfig.json index c85b1b5..7f85487 100644 --- a/playgrounds/vitesse/tsconfig.json +++ b/playgrounds/vitesse/tsconfig.json @@ -3,7 +3,10 @@ "baseUrl": ".", "module": "ESNext", "target": "ESNext", - "lib": ["DOM", "ESNext"], + "lib": [ + "DOM", + "ESNext" + ], "strict": true, "esModuleInterop": true, "jsx": "preserve", @@ -22,8 +25,20 @@ "vite-plugin-vue-layouts/client" ], "paths": { - "~/*": ["src/*"] + "~/*": [ + "src/*" + ], + "#vueuse/schema-org/provider": [ + "../../packages/schema-org/dist/providers/simple" + ], + "#vueuse/schema-org/runtime": [ + "../../packages/schema-org/dist/runtime/index" + ] } }, - "exclude": ["dist", "node_modules", "cypress"] -} + "exclude": [ + "dist", + "node_modules", + "cypress" + ] +} \ No newline at end of file diff --git a/playgrounds/vitesse/vite.config.ts b/playgrounds/vitesse/vite.config.ts index 9e6a4ac..8225ab9 100644 --- a/playgrounds/vitesse/vite.config.ts +++ b/playgrounds/vitesse/vite.config.ts @@ -1,4 +1,4 @@ -import path from 'path' +import path, {resolve} from 'path' import { defineConfig } from 'vite' import Vue from '@vitejs/plugin-vue' import Pages from 'vite-plugin-pages' @@ -13,11 +13,13 @@ import Inspect from 'vite-plugin-inspect' import LinkAttributes from 'markdown-it-link-attributes' import Unocss from 'unocss/vite' import Shiki from 'markdown-it-shiki' -import { AliasRuntimePluginVite as SchemaOrg, SchemaOrgResolver, schemaOrgAutoImports } from '@vueuse/schema-org-vite' +import { SchemaOrg, SchemaOrgResolver, schemaOrgAutoImports } from '@vueuse/schema-org-vite' export default defineConfig({ resolve: { alias: { + '@vueuse/schema-org': resolve(__dirname, '../../packages/schema-org/dist'), + '@vueuse/schema-org-vite': resolve(__dirname, '../../packages/vite/dist'), '~/': `${path.resolve(__dirname, 'src')}/`, }, }, @@ -37,6 +39,10 @@ export default defineConfig({ Layouts(), SchemaOrg({ + // simple types + full: false, + // write alias changes to tsconfig.json + dts: true, }), // https://github.com/antfu/unplugin-auto-import diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 494b305..cd871e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,7 +12,7 @@ importers: eslint: ^8.22.0 jsdom: ^20.0.0 nuxt: 3.0.0-rc.8 - playwright: ^1.25.0 + playwright: ^1.25.1 typescript: ^4.7.4 unbuild: ^0.8.9 utility-types: ^3.10.0 @@ -26,7 +26,7 @@ importers: eslint: 8.22.0 jsdom: 20.0.0 nuxt: 3.0.0-rc.8 - playwright: 1.25.0 + playwright: 1.25.1 typescript: 4.7.4 unbuild: 0.8.9 utility-types: 3.10.0 @@ -40,13 +40,13 @@ importers: '@vueuse/schema-org': workspace:* '@vueuse/schema-org-vite': workspace:* pathe: ^0.3.5 - schema-org-graph-js: 0.4.4 + schema-org-graph-js: 0.4.5 dependencies: '@nuxt/kit': 3.0.0-rc.8 '@vueuse/schema-org': link:../schema-org '@vueuse/schema-org-vite': link:../vite pathe: 0.3.5 - schema-org-graph-js: 0.4.4 + schema-org-graph-js: 0.4.5 devDependencies: '@nuxt/module-builder': 0.1.7 '@nuxt/schema': 3.0.0-rc.8 @@ -68,27 +68,29 @@ importers: specifiers: '@vueuse/schema-org': workspace:* magic-string: ^0.26.2 - mlly: ^0.5.12 - pathe: ^0.3.4 + mlly: ^0.5.14 + pathe: ^0.3.5 + pkg-types: ^0.3.4 schema-dts: ^1.1.0 - unplugin: ^0.9.2 + unplugin: ^0.9.4 unplugin-vue-components: ^0.22.4 - vite: ^3.0.8 + vite: ^3.0.9 vite-ssg: ^0.20.2 - vitepress: 1.0.0-alpha.8 + vitepress: 1.0.0-alpha.10 vue-router: ^4.1.4 dependencies: '@vueuse/schema-org': link:../schema-org magic-string: 0.26.2 - mlly: 0.5.12 - pathe: 0.3.4 + mlly: 0.5.14 + pathe: 0.3.5 schema-dts: 1.1.0 - unplugin: 0.9.2_vite@3.0.8 + unplugin: 0.9.4_vite@3.0.9 devDependencies: - unplugin-vue-components: 0.22.4_vite@3.0.8 - vite: 3.0.8 - vite-ssg: 0.20.2_f6uedz3rjkgh62zokd2t5vglmy - vitepress: 1.0.0-alpha.8 + pkg-types: 0.3.4 + unplugin-vue-components: 0.22.4_vite@3.0.9 + vite: 3.0.9 + vite-ssg: 0.20.2_hqg25iqheezz2nv34ukjhsoko4 + vitepress: 1.0.0-alpha.10 vue-router: 4.1.4 test/fixtures/nuxt: @@ -515,6 +517,14 @@ packages: dependencies: '@babel/types': 7.18.10 + /@babel/parser/7.18.13: + resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.13 + dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.10: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -595,6 +605,15 @@ packages: '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 + /@babel/types/7.18.13: + resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + dev: true + /@cloudflare/kv-asset-handler/0.2.0: resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==} dependencies: @@ -609,7 +628,7 @@ packages: resolution: {integrity: sha512-H1PekEtSeS0msetR2YGGey2w7jQ2wAKfGODJvQTygSwMgUZ+2DHpzUgeDyEBIXRIfaBcoQneqrzsljM62pm6Xg==} dependencies: '@docsearch/react': 3.2.1 - preact: 10.10.3 + preact: 10.10.6 transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -1515,6 +1534,17 @@ packages: vue: 3.2.37 dev: true + /@vitejs/plugin-vue/3.0.3_vite@3.0.9+vue@3.2.37: + resolution: {integrity: sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.0.9 + vue: 3.2.37 + dev: true + /@vitest/ui/0.22.1: resolution: {integrity: sha512-iiM2JN+vzY8pEejUbPPi0EgkEselI3RvrgMPNUOalxQRgtlNVGyMsM0Re99xQsrZ/eBkHgWrlW216gNDoeD5cA==} dependencies: @@ -1545,7 +1575,7 @@ packages: /@vue/compiler-core/3.2.37: resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} dependencies: - '@babel/parser': 7.18.11 + '@babel/parser': 7.18.13 '@vue/shared': 3.2.37 estree-walker: 2.0.2 source-map: 0.6.1 @@ -1561,7 +1591,7 @@ packages: /@vue/compiler-sfc/3.2.37: resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==} dependencies: - '@babel/parser': 7.18.11 + '@babel/parser': 7.18.13 '@vue/compiler-core': 3.2.37 '@vue/compiler-dom': 3.2.37 '@vue/compiler-ssr': 3.2.37 @@ -1587,7 +1617,7 @@ packages: /@vue/reactivity-transform/3.2.37: resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==} dependencies: - '@babel/parser': 7.18.11 + '@babel/parser': 7.18.13 '@vue/compiler-core': 3.2.37 '@vue/shared': 3.2.37 estree-walker: 2.0.2 @@ -1629,13 +1659,13 @@ packages: resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} dev: true - /@vueuse/core/9.1.0_vue@3.2.37: - resolution: {integrity: sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==} + /@vueuse/core/9.1.1_vue@3.2.37: + resolution: {integrity: sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==} dependencies: '@types/web-bluetooth': 0.0.15 - '@vueuse/metadata': 9.1.0 - '@vueuse/shared': 9.1.0_vue@3.2.37 - vue-demi: 0.13.8_vue@3.2.37 + '@vueuse/metadata': 9.1.1 + '@vueuse/shared': 9.1.1_vue@3.2.37 + vue-demi: 0.13.9_vue@3.2.37 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -1649,14 +1679,14 @@ packages: vue: 3.2.37 dev: true - /@vueuse/metadata/9.1.0: - resolution: {integrity: sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A==} + /@vueuse/metadata/9.1.1: + resolution: {integrity: sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==} dev: true - /@vueuse/shared/9.1.0_vue@3.2.37: - resolution: {integrity: sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==} + /@vueuse/shared/9.1.1_vue@3.2.37: + resolution: {integrity: sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==} dependencies: - vue-demi: 0.13.8_vue@3.2.37 + vue-demi: 0.13.9_vue@3.2.37 transitivePeerDependencies: - '@vue/composition-api' - vue @@ -4325,6 +4355,10 @@ packages: resolution: {integrity: sha512-7qam9XBFb+DijNBthaL1k/7lHU2TEMZkWSyuqmU3sCQze1wFm5w9AlEx30PD7a+QVAjOy6Ec2goFwe1YVyk2uA==} dev: true + /hookable/5.2.2: + resolution: {integrity: sha512-J+tYTxF7bOYEQX2MJ3jWWjAKhQLzRAf0efkxyNfuSnIFLl3AXOpkuOVpVhBx5zMSeGPzIUNN5FpYQaA1eYzfVQ==} + dev: true + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -5864,6 +5898,7 @@ packages: /pathe/0.3.4: resolution: {integrity: sha512-YWgqEdxf36R6vcsyj0A+yT/rDRPe0wui4J9gRR7T4whjU5Lx/jZOr75ckEgTNaLVQABAwsrlzHRpIKcCdXAQ5A==} + dev: true /pathe/0.3.5: resolution: {integrity: sha512-grU/QeYP0ChuE5kjU2/k8VtAeODzbernHlue0gTa27+ayGIu3wqYBIPGfP9r5xSqgCgDd4nWrjKXEfxMillByg==} @@ -5902,19 +5937,19 @@ packages: mlly: 0.5.14 pathe: 0.3.5 - /playwright-core/1.25.0: - resolution: {integrity: sha512-kZ3Jwaf3wlu0GgU0nB8UMQ+mXFTqBIFz9h1svTlNduNKjnbPXFxw7mJanLVjqxHJRn62uBfmgBj93YHidk2N5Q==} + /playwright-core/1.25.1: + resolution: {integrity: sha512-lSvPCmA2n7LawD2Hw7gSCLScZ+vYRkhU8xH0AapMyzwN+ojoDqhkH/KIEUxwNu2PjPoE/fcE0wLAksdOhJ2O5g==} engines: {node: '>=14'} hasBin: true dev: true - /playwright/1.25.0: - resolution: {integrity: sha512-Z+pQNWI17Qx/tHhnmgMmPsptsisXpKgAnUvYv98kctlHUJaqMt2400P8kTw9vEPoC0xdxqu0JhxO7pDTmaaIKw==} + /playwright/1.25.1: + resolution: {integrity: sha512-kOlW7mllnQ70ALTwAor73q/FhdH9EEXLUqjdzqioYLcSVC4n4NBfDqeCikGuayFZrLECLkU6Hcbziy/szqTXSA==} engines: {node: '>=14'} hasBin: true requiresBuild: true dependencies: - playwright-core: 1.25.0 + playwright-core: 1.25.1 dev: true /pluralize/8.0.0: @@ -6254,8 +6289,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.10.3: - resolution: {integrity: sha512-Gwwh0o531izatQQZu0yEX4mtfxVYsZJ4TT/o2VK3UZ/UuAWAWFnzsEfpZvad32vY3TKoRnSY2WqiDz2rH/viWQ==} + /preact/10.10.6: + resolution: {integrity: sha512-w0mCL5vICUAZrh1DuHEdOWBjxdO62lvcO++jbzr8UhhYcTbFkpegLH9XX+7MadjTl/y0feoqwQ/zAnzkc/EGog==} dev: true /prelude-ls/1.1.2: @@ -6638,18 +6673,6 @@ packages: typescript: '>=4.1.0' dev: false - /schema-org-graph-js/0.4.4: - resolution: {integrity: sha512-7IWwXW1Rz3CVLMVoPAwMYULt9BfYD6nrxRjgpec1t3TxMyBPThAdQQElXTyb4eQ4eXAA11LeYN61g6Pmkpzu1g==} - dependencies: - defu: 6.1.0 - ohash: 0.1.5 - schema-dts: 1.1.0 - ufo: 0.8.5 - utility-types: 3.10.0 - transitivePeerDependencies: - - typescript - dev: false - /schema-org-graph-js/0.4.5: resolution: {integrity: sha512-+MVSQGuzj25/5NfusxJg084X+rms8tDNjxa3QmRb0qpuEgCrQMI9iuGpVG1jCrBXC3qH9FloqkcUuFLmFY50SA==} dependencies: @@ -7254,7 +7277,7 @@ packages: consola: 2.15.3 defu: 5.0.1 esbuild: 0.14.54 - hookable: 5.1.1 + hookable: 5.2.2 jiti: 1.14.0 magic-string: 0.25.9 mkdirp: 1.0.4 @@ -7461,7 +7484,7 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unplugin-vue-components/0.22.4_vite@3.0.8: + /unplugin-vue-components/0.22.4_vite@3.0.9: resolution: {integrity: sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==} engines: {node: '>=14'} peerDependencies: @@ -7480,7 +7503,7 @@ packages: magic-string: 0.26.2 minimatch: 5.1.0 resolve: 1.22.1 - unplugin: 0.9.2_vite@3.0.8 + unplugin: 0.9.4_vite@3.0.9 transitivePeerDependencies: - esbuild - rollup @@ -7704,8 +7727,8 @@ packages: webpack-virtual-modules: 0.4.4 dev: true - /unplugin/0.9.2_vite@3.0.8: - resolution: {integrity: sha512-Wo9lx9rA0O3AWhLYYNZ6DgnNhL5t5r7kV/Jg5BXjTQtY+DEWrD8VLFSaOmKN0tgqZCMqZ+XrzgOe/3DzIO4/SA==} + /unplugin/0.9.4_vite@3.0.9: + resolution: {integrity: sha512-lUe769wSsZiltVA1Ns9ZRx3K1ri/4yzOrLLI/ebSAj2f0PsXqIJeHIXhkhiayEe1pv+mHuZYyBS3B2RXG2Q2EQ==} peerDependencies: esbuild: '>=0.13' rollup: ^2.50.0 @@ -7723,7 +7746,7 @@ packages: dependencies: acorn: 8.8.0 chokidar: 3.5.3 - vite: 3.0.8 + vite: 3.0.9 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.4 @@ -7839,7 +7862,7 @@ packages: vscode-uri: 3.0.3 dev: true - /vite-ssg/0.20.2_f6uedz3rjkgh62zokd2t5vglmy: + /vite-ssg/0.20.2_hqg25iqheezz2nv34ukjhsoko4: resolution: {integrity: sha512-XtBgJEDrN9cL6pgzXvThrTS7Pm5zwZZnBt50EmL/O+QbdhD/ZjCbcp4GmIrWFBWjVBFcgfwgPccmWv3DAF6s/w==} engines: {node: '>=14.0.0'} hasBin: true @@ -7860,7 +7883,7 @@ packages: kolorist: 1.5.1 p-queue: 6.6.2 prettier: 2.7.1 - vite: 3.0.8 + vite: 3.0.9 vue-router: 4.1.4 yargs: 17.5.1 transitivePeerDependencies: @@ -7895,6 +7918,7 @@ packages: rollup: 2.77.3 optionalDependencies: fsevents: 2.3.2 + dev: true /vite/3.0.9: resolution: {integrity: sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==} @@ -7921,20 +7945,19 @@ packages: rollup: 2.77.3 optionalDependencies: fsevents: 2.3.2 - dev: true - /vitepress/1.0.0-alpha.8: - resolution: {integrity: sha512-kTRN5DCagvMqr9OjylSV9/waGg0IHrxL0hBVuJoz7ykleZq2qR02n5CaiFq5QrSB/VRBGqiVsFQzet9vJsXS8g==} + /vitepress/1.0.0-alpha.10: + resolution: {integrity: sha512-RGPU+YApj2jaYplAIJUe+2qlDks9FzPX1QGK+7NdGByeCCVZg6z9eYWjjvfvA/sgCtG3yeJE/4/jCwlv4Y8bVw==} hasBin: true dependencies: '@docsearch/css': 3.2.1 '@docsearch/js': 3.2.1 - '@vitejs/plugin-vue': 3.0.3_vite@3.0.8+vue@3.2.37 + '@vitejs/plugin-vue': 3.0.3_vite@3.0.9+vue@3.2.37 '@vue/devtools-api': 6.2.1 - '@vueuse/core': 9.1.0_vue@3.2.37 + '@vueuse/core': 9.1.1_vue@3.2.37 body-scroll-lock: 4.0.0-beta.0 shiki: 0.11.1 - vite: 3.0.8 + vite: 3.0.9 vue: 3.2.37 transitivePeerDependencies: - '@algolia/client-search' @@ -8043,8 +8066,8 @@ packages: ufo: 0.8.5 dev: true - /vue-demi/0.13.8_vue@3.2.37: - resolution: {integrity: sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg==} + /vue-demi/0.13.9_vue@3.2.37: + resolution: {integrity: sha512-+4hVlCaBMsX5O3cbYA8xyLAK6jFJVWhmHHmyYTFRkwPhGvyxJbBUfizZiuXCdmDnrGjj7k2n1mhHJ2JvT4JTtA==} engines: {node: '>=12'} hasBin: true requiresBuild: true