diff --git a/package.json b/package.json index f19413d6..18e02f1f 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "scripts": { "start": "cd packages/client && pnpm build-only && pnpm build:types && cd ../server && pnpm start", + "test": "vitest", "dev": "concurrently -c auto command 'pnpm:dev-*'", "dev-client": "cd packages/client && pnpm dev", "dev-server": "cd packages/server && pnpm dev", @@ -15,7 +16,8 @@ "concurrently": "^8.2.2", "typescript": "~5.4.0", "vite": "^5.4.19", - "vue-tsc": "^3.0.7" + "vue-tsc": "^3.0.7", + "vitest": "^3.2.4" }, "dependencies": { "primevue": "^4.2.4", diff --git a/packages/utils/package.json b/packages/utils/package.json index 19547ea2..9fd001f7 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -6,7 +6,8 @@ "./*": "./src/*" }, "scripts": { - "build:types": "tsc -b ." + "build:types": "tsc -b .", + "test": "vitest" }, "devDependencies": { "vitest": "^3.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd4b9b14..71ecf061 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,9 @@ importers: vite: specifier: ^5.4.19 version: 5.4.20(@types/node@24.5.2) + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/node@24.5.2)(jsdom@25.0.1)(msw@2.11.2(@types/node@24.5.2)(typescript@5.4.5)) vue-tsc: specifier: ^3.0.7 version: 3.0.7(typescript@5.4.5) @@ -5060,6 +5063,15 @@ snapshots: msw: 2.11.2(@types/node@20.19.17)(typescript@5.4.5) vite: 5.4.20(@types/node@20.19.17) + '@vitest/mocker@3.2.4(msw@2.11.2(@types/node@24.5.2)(typescript@5.4.5))(vite@5.4.20(@types/node@24.5.2))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.19 + optionalDependencies: + msw: 2.11.2(@types/node@24.5.2)(typescript@5.4.5) + vite: 5.4.20(@types/node@24.5.2) + '@vitest/mocker@3.2.4(msw@2.11.2(@types/node@24.5.2)(typescript@5.9.2))(vite@5.4.20(@types/node@24.5.2))': dependencies: '@vitest/spy': 3.2.4 @@ -6445,6 +6457,33 @@ snapshots: transitivePeerDependencies: - '@types/node' + msw@2.11.2(@types/node@24.5.2)(typescript@5.4.5): + dependencies: + '@bundled-es-modules/cookie': 2.0.1 + '@bundled-es-modules/statuses': 1.0.1 + '@inquirer/confirm': 5.1.18(@types/node@24.5.2) + '@mswjs/interceptors': 0.39.6 + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.6 + graphql: 16.11.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.7.0 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.0 + type-fest: 4.41.0 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.4.5 + transitivePeerDependencies: + - '@types/node' + optional: true + msw@2.11.2(@types/node@24.5.2)(typescript@5.9.2): dependencies: '@bundled-es-modules/cookie': 2.0.1 @@ -7496,6 +7535,45 @@ snapshots: - supports-color - terser + vitest@3.2.4(@types/node@24.5.2)(jsdom@25.0.1)(msw@2.11.2(@types/node@24.5.2)(typescript@5.4.5)): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(msw@2.11.2(@types/node@24.5.2)(typescript@5.4.5))(vite@5.4.20(@types/node@24.5.2)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3(supports-color@5.5.0) + expect-type: 1.2.2 + magic-string: 0.30.19 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 5.4.20(@types/node@24.5.2) + vite-node: 3.2.4(@types/node@24.5.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.5.2 + jsdom: 25.0.1 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@3.2.4(@types/node@24.5.2)(jsdom@25.0.1)(msw@2.11.2(@types/node@24.5.2)(typescript@5.9.2)): dependencies: '@types/chai': 5.2.2 diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..510be88d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,23 @@ +import path from "node:path"; +import vue from "@vitejs/plugin-vue"; +import { defineConfig } from "vitest/config"; + +const r = (...p: string[]) => path.resolve(__dirname, ...p); + +export default defineConfig({ + plugins: [vue()], + test: { + silent: true, + environment: "jsdom", + }, + resolve: { + alias: { + "@magic/graph": r("packages/graph/src"), + "@magic/utils": r("packages/utils/src"), + "@magic/ui": r("packages/ui/src"), + "@magic/shapes": r("packages/shapes/src"), + "@magic/canvas": r("packages/canvas/src"), + "@magic/products": r("packages/products/src"), + }, + }, +});