diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a2d6c74..08db92e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,3 +50,24 @@ jobs: - name: Lint run: pnpm lint + + test-examples: + runs-on: ubuntu-latest + name: Test build of example projects + steps: + - name: Checkout unplugin-fluent-vue + uses: actions/checkout@v3.0.2 + - name: Checkout examples + uses: actions/checkout@v3.0.2 + with: + repository: fluent-vue/examples + path: examples + - name: Setup Node.js + uses: actions/setup-node@v3.2.0 + - uses: pnpm/action-setup@v2.2.2 + with: + version: 7.x.x + run_install: true + + - name: Test + run: node scripts/build-examples.mjs diff --git a/__tests__/fixtures/blockType.vue b/__tests__/fixtures/blockType.vue new file mode 100644 index 0000000..414b305 --- /dev/null +++ b/__tests__/fixtures/blockType.vue @@ -0,0 +1,7 @@ + + + +test-key = test-value + diff --git a/__tests__/frameworks/vite/.npmrc b/__tests__/frameworks/vite/.npmrc deleted file mode 100644 index e63af86..0000000 --- a/__tests__/frameworks/vite/.npmrc +++ /dev/null @@ -1 +0,0 @@ -root=true \ No newline at end of file diff --git a/__tests__/frameworks/vite/src/__snapshots__/external.spec.ts.snap b/__tests__/frameworks/vite/__snapshots__/external.spec.ts.snap similarity index 62% rename from __tests__/frameworks/vite/src/__snapshots__/external.spec.ts.snap rename to __tests__/frameworks/vite/__snapshots__/external.spec.ts.snap index 5f5a692..3f3e52b 100644 --- a/__tests__/frameworks/vite/src/__snapshots__/external.spec.ts.snap +++ b/__tests__/frameworks/vite/__snapshots__/external.spec.ts.snap @@ -1,10 +1,15 @@ // Vitest Snapshot v1 exports[`Vite external > works 1`] = ` -"import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/components/external.vue\\");import da_ftl from '/fixtures/ftl/da/components/external.vue.ftl?import'; +"=== /fixtures/components/external.vue === +import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/components/external.vue\\");import da_ftl from '/fixtures/ftl/da/components/external.vue.ftl?import'; import en_ftl from '/fixtures/ftl/en/components/external.vue.ftl?import'; const _sfc_main = {} -import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"/@id/vue\\" +const _toDisplayString = window['Vue'].toDisplayString +const _createElementVNode = window['Vue'].createElementVNode +const _openBlock = window['Vue'].openBlock +const _createElementBlock = window['Vue'].createElementBlock + function _sfc_render(_ctx, _cache) { return (_openBlock(), _createElementBlock(\\"div\\", null, [ @@ -48,11 +53,24 @@ _sfc_main.fluent['da'] = da_ftl } }) } -export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/components/external.vue\\"]])" +export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/components/external.vue\\"]]) + +=== /fixtures/ftl/da/components/external.vue.ftl === + +import { FluentResource } from '.vite-plugin-externals/@fluent/bundle.js' +export default new FluentResource(\\"\\") + + +=== /fixtures/ftl/en/components/external.vue.ftl === + +import { FluentResource } from '.vite-plugin-externals/@fluent/bundle.js' +export default new FluentResource(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photo\\\\n }to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\") +" `; exports[`Vite external > works with script setup 1`] = ` -"import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/components/external.setup.vue\\");import en_ftl from '/fixtures/ftl/en/components/external.setup.vue.ftl?import'; +"=== /fixtures/components/external.setup.vue === +import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/components/external.setup.vue\\");import en_ftl from '/fixtures/ftl/en/components/external.setup.vue.ftl?import'; const _sfc_main = { __name: 'external.setup', setup(__props, { expose }) { @@ -66,7 +84,11 @@ return __returned__ } } -import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"/@id/vue\\" +const _toDisplayString = window['Vue'].toDisplayString +const _createElementVNode = window['Vue'].createElementVNode +const _openBlock = window['Vue'].openBlock +const _createElementBlock = window['Vue'].createElementBlock + function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return (_openBlock(), _createElementBlock(\\"div\\", null, [ @@ -108,5 +130,11 @@ if (__HOT_API__) { } }) } -export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/components/external.setup.vue\\"]])" +export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/components/external.setup.vue\\"]]) + +=== /fixtures/ftl/en/components/external.setup.vue.ftl === + +import { FluentResource } from '.vite-plugin-externals/@fluent/bundle.js' +export default new FluentResource(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photo\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\\\n\\") +" `; diff --git a/__tests__/frameworks/vite/__snapshots__/sfc.spec.ts.snap b/__tests__/frameworks/vite/__snapshots__/sfc.spec.ts.snap new file mode 100644 index 0000000..d940cd4 --- /dev/null +++ b/__tests__/frameworks/vite/__snapshots__/sfc.spec.ts.snap @@ -0,0 +1,87 @@ +// Vitest Snapshot v1 + +exports[`Vite SFC > generates custom block code 1`] = ` +"=== /fixtures/test.vue === +import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/test.vue\\");const _sfc_main = {} +const _toDisplayString = window['Vue'].toDisplayString +const _createElementVNode = window['Vue'].createElementVNode +const _openBlock = window['Vue'].openBlock +const _createElementBlock = window['Vue'].createElementBlock + + +function _sfc_render(_ctx, _cache) { + return (_openBlock(), _createElementBlock(\\"div\\", null, [ + _createElementVNode(\\"div\\", null, _toDisplayString(_ctx.$t('hello-user', { userName: _ctx.userName })), 1 /* TEXT */), + _createElementVNode(\\"div\\", null, _toDisplayString(_ctx.$t('shared-photos', { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1 /* TEXT */) + ])) +} + +import block0 from \\"/fixtures/test.vue?vue&type=fluent&index=0&locale=en&lang.fluent\\" +if (typeof block0 === 'function') block0(_sfc_main) + +_sfc_main.__hmrId = \\"7e4b934c\\" +typeof __VUE_HMR_RUNTIME__ !== 'undefined' && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main) +import.meta.hot.accept(mod => { + if (!mod) return + const { default: updated, _rerender_only } = mod + if (_rerender_only) { + __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render) + } else { + __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated) + } +}) +import _export_sfc from '/@id/__x00__plugin-vue:export-helper' +export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/test.vue\\"]]) + +=== /fixtures/test.vue?vue&type=fluent&index=0&locale=en&lang.fluent === + +const FluentResource = window['FluentBundle'].FluentResource + + +export default function (Component) { + const target = Component.options || Component + target.fluent = target.fluent || {} + target.fluent['en'] = new FluentResource(\\"# Simple things are simple.\\\\nhello-user = Hello, {$userName}!\\\\n\\\\n# Complex things are possible.\\\\nshared-photos =\\\\n {$userName} {$photoCount ->\\\\n [one] added one photo\\\\n *[other] added {$photoCount} new photos\\\\n } to {$userGender ->\\\\n [male] his stream\\\\n [female] her stream\\\\n *[other] their stream\\\\n }.\\") +} +" +`; + +exports[`Vite SFC > supports custom blockType 1`] = ` +"=== /fixtures/blockType.vue === +import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/blockType.vue\\");const _sfc_main = {} +const _toDisplayString = window['Vue'].toDisplayString + + +function _sfc_render(_ctx, _cache) { + return _toDisplayString(_ctx.$t('test-key')) +} + +import block0 from \\"/fixtures/blockType.vue?vue&type=i18n&index=0&locale=en&lang.i18n\\" +if (typeof block0 === 'function') block0(_sfc_main) + +_sfc_main.__hmrId = \\"8c542073\\" +typeof __VUE_HMR_RUNTIME__ !== 'undefined' && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main) +import.meta.hot.accept(mod => { + if (!mod) return + const { default: updated, _rerender_only } = mod + if (_rerender_only) { + __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render) + } else { + __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated) + } +}) +import _export_sfc from '/@id/__x00__plugin-vue:export-helper' +export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/blockType.vue\\"]]) + +=== /fixtures/blockType.vue?vue&type=i18n&index=0&locale=en&lang.i18n === + +const FluentResource = window['FluentBundle'].FluentResource + + +export default function (Component) { + const target = Component.options || Component + target.fluent = target.fluent || {} + target.fluent['en'] = new FluentResource(\\"test-key = test-value\\") +} +" +`; diff --git a/__tests__/frameworks/vite/src/external.spec.ts b/__tests__/frameworks/vite/external.spec.ts similarity index 91% rename from __tests__/frameworks/vite/src/external.spec.ts rename to __tests__/frameworks/vite/external.spec.ts index b8e9c8a..c467551 100644 --- a/__tests__/frameworks/vite/src/external.spec.ts +++ b/__tests__/frameworks/vite/external.spec.ts @@ -4,14 +4,14 @@ import { describe, expect, it } from 'vitest' import vue3base from '@vitejs/plugin-vue' import compiler from '@vue/compiler-sfc' -import { ExternalFluentPlugin } from '../../../../src/vite' +import { ExternalFluentPlugin } from '../../../src/vite' import { compile } from './util' const vue3 = () => vue3base({ compiler, }) -const baseDir = resolve(__dirname, '../../..') +const baseDir = resolve(__dirname, '../..') describe('Vite external', () => { it('works', async () => { diff --git a/__tests__/frameworks/vite/package.json b/__tests__/frameworks/vite/package.json deleted file mode 100644 index e777965..0000000 --- a/__tests__/frameworks/vite/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "test-vite", - "private": true, - "devDependencies": { - "@vitejs/plugin-vue": "3.0.1", - "@vue/compiler-sfc": "3.2.37", - "vite": "3.0.3", - "vue": "3.2.37" - } -} diff --git a/__tests__/frameworks/vite/src/sfc.spec.ts b/__tests__/frameworks/vite/sfc.spec.ts similarity index 90% rename from __tests__/frameworks/vite/src/sfc.spec.ts rename to __tests__/frameworks/vite/sfc.spec.ts index 7f81bc4..1a276be 100644 --- a/__tests__/frameworks/vite/src/sfc.spec.ts +++ b/__tests__/frameworks/vite/sfc.spec.ts @@ -1,9 +1,9 @@ import { describe, expect, it } from 'vitest' import vue3base from '@vitejs/plugin-vue' -import compiler from '@vue/compiler-sfc' -import { SFCFluentPlugin } from '../../../../src/vite' +import compiler from '@vue/compiler-sfc' +import { SFCFluentPlugin } from '../../../src/vite' import { compile } from './util' const vue3 = () => vue3base({ @@ -32,7 +32,7 @@ describe('Vite SFC', () => { plugins: [ vue3(), SFCFluentPlugin({ - blockType: 'custom', + blockType: 'i18n', }), ], }, '/fixtures/blockType.vue') diff --git a/__tests__/frameworks/vite/src/__snapshots__/sfc.spec.ts.snap b/__tests__/frameworks/vite/src/__snapshots__/sfc.spec.ts.snap deleted file mode 100644 index 8621303..0000000 --- a/__tests__/frameworks/vite/src/__snapshots__/sfc.spec.ts.snap +++ /dev/null @@ -1,32 +0,0 @@ -// Vitest Snapshot v1 - -exports[`Vite SFC > generates custom block code 1`] = ` -"import { createHotContext as __vite__createHotContext } from \\"/@vite/client\\";import.meta.hot = __vite__createHotContext(\\"/fixtures/test.vue\\");const _sfc_main = {} -import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \\"/@id/vue\\" - -function _sfc_render(_ctx, _cache) { - return (_openBlock(), _createElementBlock(\\"div\\", null, [ - _createElementVNode(\\"div\\", null, _toDisplayString(_ctx.$t('hello-user', { userName: _ctx.userName })), 1 /* TEXT */), - _createElementVNode(\\"div\\", null, _toDisplayString(_ctx.$t('shared-photos', { userName: _ctx.userName, photoCount: _ctx.photoCount, userGender: _ctx.userGender })), 1 /* TEXT */) - ])) -} - -import block0 from \\"/fixtures/test.vue?vue&type=fluent&index=0&locale=en&lang.fluent\\" -if (typeof block0 === 'function') block0(_sfc_main) - -_sfc_main.__hmrId = \\"7e4b934c\\" -typeof __VUE_HMR_RUNTIME__ !== 'undefined' && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main) -import.meta.hot.accept(mod => { - if (!mod) return - const { default: updated, _rerender_only } = mod - if (_rerender_only) { - __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render) - } else { - __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated) - } -}) -import _export_sfc from '/@id/__x00__plugin-vue:export-helper' -export default /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',\\"/fixtures/test.vue\\"]])" -`; - -exports[`Vite SFC > supports custom blockType 1`] = `undefined`; diff --git a/__tests__/frameworks/vite/src/util.ts b/__tests__/frameworks/vite/src/util.ts deleted file mode 100644 index b66dd28..0000000 --- a/__tests__/frameworks/vite/src/util.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { resolve, sep } from 'path' - -import type { InlineConfig } from 'vite' -import { createServer } from 'vite' - -const baseDir = resolve(__dirname, '../../..') - -export async function compile(options: InlineConfig, file: string): Promise { - const vite = await createServer({ - root: baseDir, - ...options, - plugins: [ - ...options.plugins, - { - name: 'externals', - resolveId(id) { - if (id === 'vue' || id === '@fluent/bundle') - return id - }, - load(id) { - if (id === 'vue' || id === '@fluent/bundle') - return 'export default {}' - }, - }, - ], - }) - - const output = await vite.transformRequest(file) - const code = output?.code - - // normalize paths - return code?.replaceAll(baseDir.replaceAll(sep, '/'), '') -} diff --git a/__tests__/frameworks/vite/util.ts b/__tests__/frameworks/vite/util.ts new file mode 100644 index 0000000..b1eff3f --- /dev/null +++ b/__tests__/frameworks/vite/util.ts @@ -0,0 +1,45 @@ +import { resolve, sep } from 'path' + +import type { InlineConfig, ModuleNode } from 'vite' +import { createServer } from 'vite' + +import { viteExternalsPlugin } from 'vite-plugin-externals' + +const baseDir = resolve(__dirname, '../..') + +export async function compile(options: InlineConfig, file: string): Promise { + const vite = await createServer({ + root: baseDir, + ...options, + plugins: [ + ...options.plugins, + viteExternalsPlugin({ + 'vue': 'Vue', + '@fluent/bundle': 'FluentBundle', + }), + ], + }) + + await vite.transformRequest(file) + + const module = await vite.moduleGraph.getModuleByUrl(file) + + const getAllModules = (module: ModuleNode): ModuleNode[] => [module].concat([...module.importedModules.values()].flatMap(getAllModules)) + + const modules = await Promise.all(getAllModules(module) + .map(async module => ({ + transform: await vite.transformRequest(module.url), + module, + }))) + + const code = modules + .filter(module => module.transform) + .filter(module => !module.module.url.includes('node_modules')) + .map(module => `=== ${module.module.url} ===\n${module.transform.code}`).join('\n\n') + + // normalize paths + return code + ?.replaceAll(baseDir.replaceAll(sep, '/'), '') + .replace(/\/@(fs|id).*?node_modules\//g, '') + .replaceAll('\\r\\n', '\\n') +} diff --git a/__tests__/frameworks/webpack/.npmrc b/__tests__/frameworks/webpack/.npmrc deleted file mode 100644 index e63af86..0000000 --- a/__tests__/frameworks/webpack/.npmrc +++ /dev/null @@ -1 +0,0 @@ -root=true \ No newline at end of file diff --git a/__tests__/frameworks/webpack/src/__snapshots__/sfc.spec.ts.snap b/__tests__/frameworks/webpack/__snapshots__/sfc.spec.ts.snap similarity index 100% rename from __tests__/frameworks/webpack/src/__snapshots__/sfc.spec.ts.snap rename to __tests__/frameworks/webpack/__snapshots__/sfc.spec.ts.snap diff --git a/__tests__/frameworks/webpack/package.json b/__tests__/frameworks/webpack/package.json deleted file mode 100644 index fad619d..0000000 --- a/__tests__/frameworks/webpack/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "test-webpack", - "private": true, - "devDependencies": { - "@vue/compiler-sfc": "3.2.37", - "memfs": "3.4.7", - "vue": "3.2.37", - "vue-loader": "17.0.0", - "webpack": "5.74.0" - } -} diff --git a/__tests__/frameworks/webpack/src/sfc.spec.ts b/__tests__/frameworks/webpack/sfc.spec.ts similarity index 100% rename from __tests__/frameworks/webpack/src/sfc.spec.ts rename to __tests__/frameworks/webpack/sfc.spec.ts diff --git a/__tests__/frameworks/webpack/src/util.ts b/__tests__/frameworks/webpack/util.ts similarity index 87% rename from __tests__/frameworks/webpack/src/util.ts rename to __tests__/frameworks/webpack/util.ts index e352d5e..871fdc7 100644 --- a/__tests__/frameworks/webpack/src/util.ts +++ b/__tests__/frameworks/webpack/util.ts @@ -4,12 +4,12 @@ import { Volume, createFsFromVolume } from 'memfs' import { VueLoaderPlugin } from 'vue-loader' -import type { SFCPluginOptions } from '../../../../src/webpack' -import { SFCFluentPlugin } from '../../../../src/webpack' +import { SFCFluentPlugin } from '../../../src/webpack' +import type { SFCPluginOptions } from '../../../src/webpack' export async function compile(fixture: string, options: Partial = {}, hot = false): Promise { const compilation = webpack({ - context: path.resolve(__dirname, '../../..'), + context: path.resolve(__dirname, '../..'), entry: `./${fixture}`, externals: { 'vue': 'Vue', diff --git a/package.json b/package.json index 93cb6c9..0e790e1 100644 --- a/package.json +++ b/package.json @@ -68,14 +68,23 @@ "@antfu/eslint-config-ts": "0.25.2", "@release-it-plugins/lerna-changelog": "5.0.0", "@types/node": "18.6.1", + "@vitejs/plugin-vue": "^3.0.1", + "@vue/compiler-sfc": "^3.2.37", "c8": "7.12.0", "eslint": "8.20.0", + "execa": "^6.1.0", "husky": "8.0.1", "lint-staged": "13.0.3", + "memfs": "^3.4.7", "release-it": "15.2.0", "tsup": "6.2.0", "typescript": "4.7.4", - "vitest": "^0.19.1" + "vite": "^3.0.4", + "vite-plugin-externals": "^0.5.1", + "vitest": "^0.19.1", + "vue": "^3.2.37", + "vue-loader": "^17.0.0", + "webpack": "^5.74.0" }, "lint-staged": { "*.js": "eslint --fix", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d5e857..7632f4c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,32 +8,50 @@ importers: '@release-it-plugins/lerna-changelog': 5.0.0 '@rollup/pluginutils': ^4.2.1 '@types/node': 18.6.1 + '@vitejs/plugin-vue': ^3.0.1 + '@vue/compiler-sfc': ^3.2.37 c8: 7.12.0 eslint: 8.20.0 + execa: ^6.1.0 husky: 8.0.1 lint-staged: 13.0.3 magic-string: ^0.26.2 + memfs: ^3.4.7 release-it: 15.2.0 tsup: 6.2.0 typescript: 4.7.4 unplugin: ^0.8.0 + vite: ^3.0.4 + vite-plugin-externals: ^0.5.1 vitest: ^0.19.1 + vue: ^3.2.37 + vue-loader: ^17.0.0 + webpack: ^5.74.0 dependencies: '@rollup/pluginutils': 4.2.1 magic-string: 0.26.2 - unplugin: 0.8.0 + unplugin: 0.8.0_vite@3.0.4+webpack@5.74.0 devDependencies: '@antfu/eslint-config-ts': 0.25.2_he2ccbldppg44uulnyq4rwocfa '@release-it-plugins/lerna-changelog': 5.0.0_release-it@15.2.0 '@types/node': 18.6.1 + '@vitejs/plugin-vue': 3.0.1_vite@3.0.4+vue@3.2.37 + '@vue/compiler-sfc': 3.2.37 c8: 7.12.0 eslint: 8.20.0 + execa: 6.1.0 husky: 8.0.1 lint-staged: 13.0.3 + memfs: 3.4.7 release-it: 15.2.0 tsup: 6.2.0_typescript@4.7.4 typescript: 4.7.4 + vite: 3.0.4 + vite-plugin-externals: 0.5.1_vite@3.0.4 vitest: 0.19.1_c8@7.12.0 + vue: 3.2.37 + vue-loader: 17.0.0_webpack@5.74.0 + webpack: 5.74.0 __tests__/frameworks/vite: specifiers: @@ -199,35 +217,29 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.14 - dev: true /@jridgewell/resolve-uri/3.0.8: resolution: {integrity: sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/source-map/0.3.2: resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.14 - dev: true /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: true /@jridgewell/trace-mapping/0.3.14: resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} dependencies: '@jridgewell/resolve-uri': 3.0.8 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -480,18 +492,15 @@ packages: dependencies: '@types/eslint': 8.4.5 '@types/estree': 0.0.51 - dev: true /@types/eslint/8.4.5: resolution: {integrity: sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==} dependencies: '@types/estree': 0.0.51 '@types/json-schema': 7.0.11 - dev: true /@types/estree/0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: true /@types/http-cache-semantics/4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} @@ -507,7 +516,6 @@ packages: /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -531,7 +539,6 @@ packages: /@types/node/18.6.1: resolution: {integrity: sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==} - dev: true /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -688,6 +695,17 @@ packages: vue: 3.2.37 dev: true + /@vitejs/plugin-vue/3.0.1_vite@3.0.4+vue@3.2.37: + resolution: {integrity: sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.0.4 + vue: 3.2.37 + dev: true + /@vue/compiler-core/3.2.37: resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==} dependencies: @@ -776,19 +794,15 @@ packages: dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - dev: true /@webassemblyjs/floating-point-hex-parser/1.11.1: resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - dev: true /@webassemblyjs/helper-api-error/1.11.1: resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - dev: true /@webassemblyjs/helper-buffer/1.11.1: resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - dev: true /@webassemblyjs/helper-numbers/1.11.1: resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} @@ -796,11 +810,9 @@ packages: '@webassemblyjs/floating-point-hex-parser': 1.11.1 '@webassemblyjs/helper-api-error': 1.11.1 '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/helper-wasm-bytecode/1.11.1: resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - dev: true /@webassemblyjs/helper-wasm-section/1.11.1: resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} @@ -809,23 +821,19 @@ packages: '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 - dev: true /@webassemblyjs/ieee754/1.11.1: resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 - dev: true /@webassemblyjs/leb128/1.11.1: resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 - dev: true /@webassemblyjs/utf8/1.11.1: resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - dev: true /@webassemblyjs/wasm-edit/1.11.1: resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} @@ -838,7 +846,6 @@ packages: '@webassemblyjs/wasm-opt': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 '@webassemblyjs/wast-printer': 1.11.1 - dev: true /@webassemblyjs/wasm-gen/1.11.1: resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} @@ -848,7 +855,6 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 - dev: true /@webassemblyjs/wasm-opt/1.11.1: resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} @@ -857,7 +863,6 @@ packages: '@webassemblyjs/helper-buffer': 1.11.1 '@webassemblyjs/wasm-gen': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 - dev: true /@webassemblyjs/wasm-parser/1.11.1: resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} @@ -868,22 +873,18 @@ packages: '@webassemblyjs/ieee754': 1.11.1 '@webassemblyjs/leb128': 1.11.1 '@webassemblyjs/utf8': 1.11.1 - dev: true /@webassemblyjs/wast-printer/1.11.1: resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 - dev: true /@xtuc/ieee754/1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true /@xtuc/long/4.2.2: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true /acorn-import-assertions/1.8.0_acorn@8.8.0: resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} @@ -891,7 +892,6 @@ packages: acorn: ^8 dependencies: acorn: 8.8.0 - dev: true /acorn-jsx/5.3.2_acorn@8.8.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -945,7 +945,6 @@ packages: ajv: ^6.9.1 dependencies: ajv: 6.12.6 - dev: true /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -954,7 +953,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ansi-align/3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -1147,11 +1145,9 @@ packages: electron-to-chromium: 1.4.206 node-releases: 2.0.6 update-browserslist-db: 1.0.5_browserslist@4.21.3 - dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -1273,7 +1269,6 @@ packages: /caniuse-lite/1.0.30001373: resolution: {integrity: sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==} - dev: true /chai/4.3.6: resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} @@ -1356,7 +1351,6 @@ packages: /chrome-trace-event/1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} - dev: true /ci-info/3.3.2: resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} @@ -1485,7 +1479,6 @@ packages: /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -1765,7 +1758,6 @@ packages: /electron-to-chromium/1.4.206: resolution: {integrity: sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==} - dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1800,7 +1792,6 @@ packages: dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 - dev: true /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -1867,9 +1858,12 @@ packages: isarray: 2.0.5 dev: true + /es-module-lexer/0.4.1: + resolution: {integrity: sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==} + dev: true + /es-module-lexer/0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} @@ -1892,7 +1886,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /esbuild-android-arm64/0.14.48: @@ -1901,7 +1894,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /esbuild-darwin-64/0.14.48: @@ -1910,7 +1902,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-darwin-arm64/0.14.48: @@ -1919,7 +1910,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /esbuild-freebsd-64/0.14.48: @@ -1928,7 +1918,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-freebsd-arm64/0.14.48: @@ -1937,7 +1926,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /esbuild-linux-32/0.14.48: @@ -1946,7 +1934,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-64/0.14.48: @@ -1955,7 +1942,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm/0.14.48: @@ -1964,7 +1950,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-arm64/0.14.48: @@ -1973,7 +1958,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-mips64le/0.14.48: @@ -1982,7 +1966,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-ppc64le/0.14.48: @@ -1991,7 +1974,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-riscv64/0.14.48: @@ -2000,7 +1982,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-linux-s390x/0.14.48: @@ -2009,7 +1990,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /esbuild-netbsd-64/0.14.48: @@ -2018,7 +1998,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /esbuild-openbsd-64/0.14.48: @@ -2027,7 +2006,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /esbuild-sunos-64/0.14.48: @@ -2036,7 +2014,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /esbuild-windows-32/0.14.48: @@ -2045,7 +2022,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-64/0.14.48: @@ -2054,7 +2030,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild-windows-arm64/0.14.48: @@ -2063,7 +2038,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /esbuild/0.14.48: @@ -2092,12 +2066,10 @@ packages: esbuild-windows-32: 0.14.48 esbuild-windows-64: 0.14.48 esbuild-windows-arm64: 0.14.48 - dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - dev: true /escape-goat/4.0.0: resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} @@ -2330,7 +2302,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true /eslint-scope/7.1.1: resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} @@ -2443,17 +2414,14 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true /estraverse/4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - dev: true /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -2466,7 +2434,6 @@ packages: /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: true /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -2509,7 +2476,6 @@ packages: /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.11: resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} @@ -2524,7 +2490,6 @@ packages: /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -2634,6 +2599,15 @@ packages: fetch-blob: 3.2.0 dev: true + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-extra/8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -2675,7 +2649,6 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /function.prototype.name/1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} @@ -2774,7 +2747,6 @@ packages: /glob-to-regexp/0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true /glob/7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -2856,7 +2828,6 @@ packages: /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - dev: true /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -2870,7 +2841,6 @@ packages: /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -2900,7 +2870,6 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true /hash-sum/2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} @@ -3176,7 +3145,6 @@ packages: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 - dev: true /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3403,7 +3371,6 @@ packages: '@types/node': 18.6.1 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} @@ -3427,11 +3394,9 @@ packages: /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3466,6 +3431,14 @@ packages: graceful-fs: 4.2.10 dev: true + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + /keyv/4.3.3: resolution: {integrity: sha512-AcysI17RvakTh8ir03+a3zJr5r0ovnAH/XTXei/4HIv3bL2K/jzvgivLK9UuI/JbU1aJjM3NSAnVvVVd3n+4DQ==} dependencies: @@ -3578,7 +3551,6 @@ packages: /loader-runner/4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - dev: true /loader-utils/2.0.2: resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} @@ -3790,7 +3762,6 @@ packages: /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -3993,14 +3964,12 @@ packages: /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: true /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -4130,7 +4099,6 @@ packages: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4143,7 +4111,6 @@ packages: /neo-async/2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true /netmask/2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} @@ -4185,7 +4152,6 @@ packages: /node-releases/2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -4524,7 +4490,6 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-root-regex/0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} @@ -4549,7 +4514,6 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -4594,7 +4558,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -4678,7 +4641,6 @@ packages: /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /pupa/3.1.0: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} @@ -4700,7 +4662,6 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: true /raw-body/2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -4875,7 +4836,6 @@ packages: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /responselike/2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -4931,7 +4891,6 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -4963,7 +4922,6 @@ packages: /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-regex/2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} @@ -4982,7 +4940,6 @@ packages: '@types/json-schema': 7.0.11 ajv: 6.12.6 ajv-keywords: 3.5.2_ajv@6.12.6 - dev: true /semver-diff/4.0.0: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} @@ -5013,7 +4970,6 @@ packages: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 - dev: true /setprototypeof/1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5127,20 +5083,17 @@ packages: /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} requiresBuild: true - dev: true /source-map/0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -5313,17 +5266,14 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - dev: true /tar/6.1.11: resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} @@ -5359,7 +5309,6 @@ packages: serialize-javascript: 6.0.0 terser: 5.14.2 webpack: 5.74.0 - dev: true /terser/5.14.2: resolution: {integrity: sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==} @@ -5370,7 +5319,6 @@ packages: acorn: 8.8.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -5634,12 +5582,17 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /unplugin/0.8.0: + /unplugin/0.8.0_vite@3.0.4+webpack@5.74.0: resolution: {integrity: sha512-OzOkJ9XOPlD1Cph6qy/p4i/KSUbs76GToXjH/STHpfo6D7y+EqpfAL6G6HaoOw5QLkt9+KWwcxYUmPFkDf1upQ==} peerDependencies: esbuild: '>=0.13' @@ -5658,6 +5611,8 @@ packages: dependencies: acorn: 8.8.0 chokidar: 3.5.3 + vite: 3.0.4 + webpack: 5.74.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.4 dev: false @@ -5671,7 +5626,6 @@ packages: browserslist: 4.21.3 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /update-notifier/6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} @@ -5697,7 +5651,6 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /url-join/5.0.0: resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} @@ -5747,6 +5700,18 @@ packages: semver: 7.3.7 dev: true + /vite-plugin-externals/0.5.1_vite@3.0.4: + resolution: {integrity: sha512-HvRFG5y9wXoJUG9FSbSp9ikOiJRh7EzN6tJC5oIOcEj+19GUw9Z1NNCPFtAmX75Ajcr10FdELKNmuXS3lExkcg==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + acorn: 8.8.0 + es-module-lexer: 0.4.1 + fs-extra: 10.1.0 + magic-string: 0.25.9 + vite: 3.0.4 + dev: true + /vite/3.0.3: resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -5799,7 +5764,6 @@ packages: rollup: 2.75.7 optionalDependencies: fsevents: 2.3.2 - dev: true /vitest/0.19.1_c8@7.12.0: resolution: {integrity: sha512-E/ZXpFMUahn731wzhMBNzWRp4mGgiZFT0xdHa32cbNO0CSaHpE9hTfteEU247Gi2Dula8uXo5vvrNB6dtszmQA==} @@ -5880,7 +5844,6 @@ packages: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.10 - dev: true /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -5947,7 +5910,6 @@ packages: - '@swc/core' - esbuild - uglify-js - dev: true /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index f888384..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -packages: - - '__tests__/frameworks/*' diff --git a/scripts/build-examples.mjs b/scripts/build-examples.mjs new file mode 100644 index 0000000..c778c26 --- /dev/null +++ b/scripts/build-examples.mjs @@ -0,0 +1,28 @@ +import { readdirSync, readFileSync, existsSync } from 'fs' +import { execa } from 'execa' + +const examples = readdirSync('examples') + .filter((f) => existsSync(`examples/${f}/package.json`)) + .map((f) => ({ + folder: `examples/${f}`, + package: JSON.parse(readFileSync(`examples/${f}/package.json`)), + })) + +async function buildExamples () { + await execa('pnpm', ['i'], { stdio: 'inherit' }) + await execa('pnpm', ['build'], { stdio: 'inherit' }) + + for (const example of examples) { + console.log(`building ${example.folder}...`) + await execa('pnpm', ['add', `file:../../`], { stdio: 'inherit', cwd: example.folder }) + await execa('pnpm', ['i'], { stdio: 'inherit', cwd: example.folder }) + await execa('pnpm', ['build'], { stdio: 'inherit', cwd: example.folder }) + } + + for (const typescriptExample of examples.filter((ex) => ex.package.scripts.typecheck != null)) { + console.log(`typechecking ${typescriptExample.folder}...`) + await execa('pnpm', ['typecheck'], { stdio: 'inherit', cwd: typescriptExample.folder }) + } +} + +await buildExamples() diff --git a/src/plugins/external-plugin.ts b/src/plugins/external-plugin.ts index 3245ed7..36fc43b 100644 --- a/src/plugins/external-plugin.ts +++ b/src/plugins/external-plugin.ts @@ -1,6 +1,5 @@ import { join, relative } from 'path' import { stat as fsStat } from 'fs/promises' -import type { VitePlugin } from 'unplugin' import { createUnplugin } from 'unplugin' import MagicString from 'magic-string' @@ -132,6 +131,6 @@ export default new FluentResource(${JSON.stringify(source)}) } }) -export const vitePlugin: (options?: ExternalPluginOptions) => VitePlugin = unplugin.vite +export const vitePlugin = unplugin.vite export const rollupPlugin = unplugin.rollup export const webpackPlugin = unplugin.webpack diff --git a/tsconfig.json b/tsconfig.json index 962492b..fb9659e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "baseUrl": ".", "target": "ESNext", "moduleResolution": "node", "sourceMap": true,