mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
chore: fix monorepo build pipeline and migrate shared to built package
- Root package.json: add workspace scripts (dev, build, test, test:cov, test:e2e) that delegate to actual scripts in shared/server/client workspaces - shared: add tsup build step (CJS + ESM dual output, .d.ts); consumers now import from the built dist instead of raw TS source via path aliases - server: replace tsc-alias with tsconfig-paths (tsc-alias mangled node_modules paths); fix MCP SDK path aliases to point to root node_modules (../node_modules) - server/scripts/dev.mjs: delay node --watch until tsc -w signals first-pass done, eliminating the spurious restart on every dev startup - client/vite.config.js + vitest.config.ts: remove @trek/shared path alias (no longer needed now that shared is a proper package) - Consolidate package-lock.json at the workspace root; drop per-workspace lock files
This commit is contained in:
@@ -4,6 +4,7 @@ node_modules/
|
|||||||
# Build output
|
# Build output
|
||||||
client/dist/
|
client/dist/
|
||||||
server/dist/
|
server/dist/
|
||||||
|
shared/dist/
|
||||||
server/public/*
|
server/public/*
|
||||||
!server/public/.gitkeep
|
!server/public/.gitkeep
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 120,
|
||||||
|
"useTabs": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"jsxSingleQuote": false,
|
||||||
|
"bracketSameLine": false,
|
||||||
|
"endOfLine": "lf",
|
||||||
|
"plugins": [
|
||||||
|
"prettier-plugin-organize-imports",
|
||||||
|
"@trivago/prettier-plugin-sort-imports",
|
||||||
|
"prettier-plugin-tailwindcss"
|
||||||
|
],
|
||||||
|
"importOrder": [
|
||||||
|
"^[a-zA-Z]",
|
||||||
|
"^@/.*"
|
||||||
|
],
|
||||||
|
"importOrderSeparation": true,
|
||||||
|
"importOrderParserPlugins": [
|
||||||
|
"typescript",
|
||||||
|
"decorators-legacy"
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
-11021
File diff suppressed because it is too large
Load Diff
+15
-3
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "trek-client",
|
"name": "@trek/client",
|
||||||
"version": "3.0.22",
|
"version": "3.0.22",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -12,9 +12,13 @@
|
|||||||
"test:unit": "vitest run tests/unit",
|
"test:unit": "vitest run tests/unit",
|
||||||
"test:integration": "vitest run tests/integration src/**/*.test.{ts,tsx}",
|
"test:integration": "vitest run tests/integration src/**/*.test.{ts,tsx}",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"test:coverage": "vitest run --coverage"
|
"test:coverage": "vitest run --coverage",
|
||||||
|
"lint": "eslint .",
|
||||||
|
"format": "prettier --write \"src/**/*.tsx\" \"src/**/*.css\"",
|
||||||
|
"format:check": "prettier --check \"src/**/*.tsx\" \"src/**/*.css\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@trek/shared": "*",
|
||||||
"@react-pdf/renderer": "^4.3.2",
|
"@react-pdf/renderer": "^4.3.2",
|
||||||
"axios": "^1.6.7",
|
"axios": "^1.6.7",
|
||||||
"dexie": "^4.4.2",
|
"dexie": "^4.4.2",
|
||||||
@@ -58,6 +62,14 @@
|
|||||||
"typescript": "^6.0.2",
|
"typescript": "^6.0.2",
|
||||||
"vite": "^5.1.4",
|
"vite": "^5.1.4",
|
||||||
"vite-plugin-pwa": "^0.21.0",
|
"vite-plugin-pwa": "^0.21.0",
|
||||||
"vitest": "^3.2.4"
|
"vitest": "^3.2.4",
|
||||||
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
||||||
|
"prettier": "^3.8.3",
|
||||||
|
"prettier-plugin-organize-imports": "^4.3.0",
|
||||||
|
"prettier-plugin-tailwindcss": "^0.8.0",
|
||||||
|
"eslint": "^10.2.1",
|
||||||
|
"eslint-config-flat-gitignore": "^2.3.0",
|
||||||
|
"eslint-plugin-react-hooks": "^7.1.1",
|
||||||
|
"eslint-plugin-react-refresh": "^0.5.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import react from '@vitejs/plugin-react'
|
import react from '@vitejs/plugin-react'
|
||||||
import { VitePWA } from 'vite-plugin-pwa'
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
import { fileURLToPath } from 'node:url'
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
@@ -89,15 +88,6 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
// @trek/shared — Zod contract package (dev: resolved to TS source).
|
|
||||||
'@trek/shared': fileURLToPath(new URL('../shared/src/index.ts', import.meta.url)),
|
|
||||||
},
|
|
||||||
// @trek/shared imports zod from its own source; it lives outside this root,
|
|
||||||
// so pin zod to the client's copy (one instance, resolvable from anywhere).
|
|
||||||
dedupe: ['zod'],
|
|
||||||
},
|
|
||||||
build: {
|
build: {
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
modulePreload: { polyfill: true },
|
modulePreload: { polyfill: true },
|
||||||
|
|||||||
@@ -1,19 +1,8 @@
|
|||||||
import { defineConfig } from 'vitest/config';
|
import { defineConfig } from 'vitest/config';
|
||||||
import react from '@vitejs/plugin-react';
|
import react from '@vitejs/plugin-react';
|
||||||
import { fileURLToPath } from 'node:url';
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [react()],
|
plugins: [react()],
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
// @trek/shared — Zod contract package (tests resolve it to TS source,
|
|
||||||
// mirroring the alias in vite.config.js used by the dev server / build).
|
|
||||||
'@trek/shared': fileURLToPath(new URL('../shared/src/index.ts', import.meta.url)),
|
|
||||||
},
|
|
||||||
// Mirror vite.config.js: keep a single zod instance resolvable from the
|
|
||||||
// shared source, which lives outside this project root.
|
|
||||||
dedupe: ['zod'],
|
|
||||||
},
|
|
||||||
test: {
|
test: {
|
||||||
root: '.',
|
root: '.',
|
||||||
globals: true,
|
globals: true,
|
||||||
|
|||||||
Generated
+19366
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "@trek/root",
|
||||||
|
"private": true,
|
||||||
|
"version": "3.0.22",
|
||||||
|
"workspaces": [
|
||||||
|
"client",
|
||||||
|
"server",
|
||||||
|
"shared"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"version:major": "npm version major --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:minor": "npm version minor --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:patch": "npm version patch --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:premajor": "npm version premajor --preid=rc --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:preminor": "npm version preminor --preid=beta --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:prepatch": "npm version prepatch --preid=alpha --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"version:prerelease": "npm version prerelease --preid=alpha --workspaces --include-workspace-root --no-git-tag-version",
|
||||||
|
"dev": "npm run build --workspace=shared && concurrently --names shared,server,client \"npm run build:watch --workspace=shared\" \"npm run dev --workspace=server\" \"npm run dev --workspace=client\"",
|
||||||
|
"build": "npm run build --workspace=shared && npm run build --workspace=server && npm run build --workspace=client",
|
||||||
|
"test": "npm run test --workspace=shared && npm run test --workspace=server && npm run test --workspace=client",
|
||||||
|
"test:cov": "npm run test:coverage --workspace=server && npm run test:coverage --workspace=client",
|
||||||
|
"test:e2e": "npm run test:e2e --workspace=server"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"concurrently": "^9.2.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 120,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"plugins": [
|
||||||
|
"prettier-plugin-organize-imports",
|
||||||
|
"@trivago/prettier-plugin-sort-imports"
|
||||||
|
],
|
||||||
|
"importOrder": [
|
||||||
|
"^[a-zA-Z]",
|
||||||
|
"^@/.*"
|
||||||
|
],
|
||||||
|
"importOrderSeparation": true,
|
||||||
|
"importOrderParserPlugins": [
|
||||||
|
"typescript",
|
||||||
|
"decorators-legacy"
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
-7389
File diff suppressed because it is too large
Load Diff
+16
-5
@@ -1,13 +1,16 @@
|
|||||||
{
|
{
|
||||||
"name": "trek-server",
|
"name": "@trek/server",
|
||||||
"version": "3.0.22",
|
"version": "3.0.22",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node dist/index.js",
|
"start": "node --require tsconfig-paths/register dist/index.js",
|
||||||
"dev": "node scripts/dev.mjs",
|
"dev": "node scripts/dev.mjs",
|
||||||
"build": "node scripts/build.mjs",
|
"build": "node scripts/build.mjs",
|
||||||
"start:prod": "node dist/index.js",
|
"start:prod": "node --require tsconfig-paths/register dist/index.js",
|
||||||
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
|
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
||||||
|
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
|
||||||
|
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"test:unit": "vitest run tests/unit",
|
"test:unit": "vitest run tests/unit",
|
||||||
@@ -18,6 +21,8 @@
|
|||||||
"test:coverage": "vitest run --coverage"
|
"test:coverage": "vitest run --coverage"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@trek/shared": "*",
|
||||||
|
"tsconfig-paths": "^4.2.0",
|
||||||
"@modelcontextprotocol/sdk": "^1.28.0",
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
||||||
"@nestjs/common": "^11.1.24",
|
"@nestjs/common": "^11.1.24",
|
||||||
"@nestjs/core": "^11.1.24",
|
"@nestjs/core": "^11.1.24",
|
||||||
@@ -60,6 +65,13 @@
|
|||||||
"file-type": "^21.3.4"
|
"file-type": "^21.3.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
||||||
|
"eslint-config-prettier": "^10.0.1",
|
||||||
|
"eslint-plugin-prettier": "^5.2.2",
|
||||||
|
"prettier": "^3.8.3",
|
||||||
|
"prettier-plugin-organize-imports": "^4.3.0",
|
||||||
|
"eslint": "^9.18.0",
|
||||||
|
"eslint-config-flat-gitignore": "^2.3.0",
|
||||||
"@nestjs/testing": "^11.1.24",
|
"@nestjs/testing": "^11.1.24",
|
||||||
"@swc/core": "^1.15.40",
|
"@swc/core": "^1.15.40",
|
||||||
"@types/archiver": "^7.0.0",
|
"@types/archiver": "^7.0.0",
|
||||||
@@ -82,7 +94,6 @@
|
|||||||
"@vitest/coverage-v8": "^3.2.4",
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
"nodemon": "^3.1.0",
|
"nodemon": "^3.1.0",
|
||||||
"supertest": "^7.2.2",
|
"supertest": "^7.2.2",
|
||||||
"tsc-alias": "^1.8.17",
|
|
||||||
"tz-lookup": "^6.1.25",
|
"tz-lookup": "^6.1.25",
|
||||||
"unplugin-swc": "^1.5.9",
|
"unplugin-swc": "^1.5.9",
|
||||||
"vitest": "^3.2.4"
|
"vitest": "^3.2.4"
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
import { execSync } from 'node:child_process';
|
import { execSync } from 'node:child_process';
|
||||||
|
|
||||||
// tsc emits JS even with type errors (noEmitOnError:false), but still exits
|
|
||||||
// non-zero to report them. We must run tsc-alias regardless, so run tsc in a
|
|
||||||
// try/catch and always proceed to the path-rewrite step.
|
|
||||||
// Type correctness is enforced separately via `npm run typecheck`.
|
|
||||||
try {
|
try {
|
||||||
execSync('tsc -p tsconfig.build.json', { stdio: 'inherit' });
|
execSync('tsc -p tsconfig.build.json', { stdio: 'inherit' });
|
||||||
} catch {
|
} catch {
|
||||||
console.warn('[build] tsc reported type errors — emitting anyway (gated by `npm run typecheck`).');
|
console.warn('[build] tsc reported type errors — emitting anyway (gated by `npm run typecheck`).');
|
||||||
}
|
}
|
||||||
|
|
||||||
execSync('tsc-alias -p tsconfig.build.json', { stdio: 'inherit' });
|
console.log('[build] dist ready.');
|
||||||
console.log('[build] dist ready (path aliases rewritten).');
|
|
||||||
|
|||||||
+24
-14
@@ -1,22 +1,32 @@
|
|||||||
import { execSync, spawn } from 'node:child_process';
|
import { execSync, spawn } from 'node:child_process';
|
||||||
|
|
||||||
// Dev runtime for the co-hosted NestJS + legacy Express server.
|
|
||||||
// NestJS DI needs decorator metadata, which the old tsx/esbuild runtime does not
|
|
||||||
// emit — so dev runs the tsc build with watchers (same toolchain as prod `dist`).
|
|
||||||
// Initial build first so `node --watch dist/index.js` has something to start.
|
|
||||||
console.log('[dev] initial build...');
|
console.log('[dev] initial build...');
|
||||||
execSync('node scripts/build.mjs', { stdio: 'inherit' });
|
execSync('node scripts/build.mjs', { stdio: 'inherit' });
|
||||||
|
|
||||||
const watchers = [
|
const children = [];
|
||||||
['npx', ['tsc', '-w', '-p', 'tsconfig.build.json', '--preserveWatchOutput']],
|
|
||||||
['npx', ['tsc-alias', '-w', '-p', 'tsconfig.build.json']],
|
|
||||||
['node', ['--watch', 'dist/index.js']],
|
|
||||||
];
|
|
||||||
|
|
||||||
const children = watchers.map(([cmd, args]) =>
|
|
||||||
spawn(cmd, args, { stdio: 'inherit', shell: true }),
|
|
||||||
);
|
|
||||||
|
|
||||||
const stop = () => { children.forEach((c) => { try { c.kill(); } catch {} }); process.exit(0); };
|
const stop = () => { children.forEach((c) => { try { c.kill(); } catch {} }); process.exit(0); };
|
||||||
process.on('SIGINT', stop);
|
process.on('SIGINT', stop);
|
||||||
process.on('SIGTERM', stop);
|
process.on('SIGTERM', stop);
|
||||||
|
|
||||||
|
// Start tsc -w and wait for its first "Watching for file changes." before launching
|
||||||
|
// node --watch, so the initial tsc compilation doesn't trigger a spurious restart.
|
||||||
|
const tsc = spawn('npx', ['tsc', '-w', '-p', 'tsconfig.build.json', '--preserveWatchOutput'], {
|
||||||
|
stdio: ['ignore', 'pipe', 'inherit'],
|
||||||
|
shell: true,
|
||||||
|
});
|
||||||
|
children.push(tsc);
|
||||||
|
|
||||||
|
let nodeProc = null;
|
||||||
|
let ready = false;
|
||||||
|
|
||||||
|
tsc.stdout.on('data', (chunk) => {
|
||||||
|
process.stdout.write(chunk);
|
||||||
|
if (!ready && chunk.toString().includes('Watching for file changes')) {
|
||||||
|
ready = true;
|
||||||
|
nodeProc = spawn('node', ['--require', 'tsconfig-paths/register', '--watch', 'dist/index.js'], {
|
||||||
|
stdio: 'inherit',
|
||||||
|
shell: true,
|
||||||
|
});
|
||||||
|
children.push(nodeProc);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
+11
-12
@@ -18,22 +18,21 @@
|
|||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"noUnusedLocals": false,
|
"noUnusedLocals": false,
|
||||||
"noUnusedParameters": false,
|
"noUnusedParameters": false,
|
||||||
|
"ignoreDeprecations": "6.0",
|
||||||
// The MCP SDK's package.json uses a wildcard exports pattern with extension-less targets
|
// The MCP SDK's package.json uses a wildcard exports pattern with extension-less targets
|
||||||
// (e.g. "./*": "./dist/esm/*") which TypeScript cannot resolve — it only strips .js suffixes.
|
// (e.g. "./*": "./dist/esm/*") which TypeScript cannot resolve — it only strips .js suffixes.
|
||||||
// These paths manually redirect to the CJS dist until the SDK fixes its exports map.
|
// These paths manually redirect to the CJS dist until the SDK fixes its exports map.
|
||||||
"paths": {
|
"paths": {
|
||||||
"@trek/shared": ["../shared/src/index.ts"],
|
"@modelcontextprotocol/sdk/server/mcp": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js"],
|
||||||
"@trek/shared/*": ["../shared/src/*"],
|
"@modelcontextprotocol/sdk/server/streamableHttp": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/streamableHttp.js"],
|
||||||
"@modelcontextprotocol/sdk/server/mcp": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js"],
|
"@modelcontextprotocol/sdk/server/auth/router": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/router.js"],
|
||||||
"@modelcontextprotocol/sdk/server/streamableHttp": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/streamableHttp.js"],
|
"@modelcontextprotocol/sdk/server/auth/handlers/authorize": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/handlers/authorize.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/router": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/router.js"],
|
"@modelcontextprotocol/sdk/server/auth/handlers/register": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/handlers/register.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/handlers/authorize": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/handlers/authorize.js"],
|
"@modelcontextprotocol/sdk/server/auth/provider": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/provider.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/handlers/register": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/handlers/register.js"],
|
"@modelcontextprotocol/sdk/server/auth/clients": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/clients.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/provider": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/provider.js"],
|
"@modelcontextprotocol/sdk/server/auth/errors": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/errors.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/clients": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/clients.js"],
|
"@modelcontextprotocol/sdk/server/auth/types": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.js"],
|
||||||
"@modelcontextprotocol/sdk/server/auth/errors": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/errors.js"],
|
"@modelcontextprotocol/sdk/shared/auth": ["../node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js"]
|
||||||
"@modelcontextprotocol/sdk/server/auth/types": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/auth/types.js"],
|
|
||||||
"@modelcontextprotocol/sdk/shared/auth": ["./node_modules/@modelcontextprotocol/sdk/dist/cjs/shared/auth.js"]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["src"],
|
"include": ["src"],
|
||||||
|
|||||||
@@ -38,9 +38,6 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
// @trek/shared — Zod contract package (tests resolve it to TS source,
|
|
||||||
// mirroring the tsconfig `paths` the tsx runtime uses).
|
|
||||||
'@trek/shared': new URL('../shared/src/index.ts', import.meta.url).pathname,
|
|
||||||
'@modelcontextprotocol/sdk/server/mcp': new URL(
|
'@modelcontextprotocol/sdk/server/mcp': new URL(
|
||||||
'./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js',
|
'./node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js',
|
||||||
import.meta.url
|
import.meta.url
|
||||||
@@ -58,12 +55,5 @@ export default defineConfig({
|
|||||||
import.meta.url
|
import.meta.url
|
||||||
).pathname,
|
).pathname,
|
||||||
},
|
},
|
||||||
// The server build emits @trek/shared next to its source (shared/src/*.js,
|
|
||||||
// needed by the prod dist via tsc-alias). Vite's default extension order
|
|
||||||
// prefers .js over .ts, so after a build the tests would load that compiled
|
|
||||||
// CJS instead of the source — and its `require('zod')` is unresolvable from
|
|
||||||
// the shared/ dir on CI (only server deps are installed there). Resolve .ts
|
|
||||||
// first so tests always run the source, whose zod import resolves via Vite.
|
|
||||||
extensions: ['.ts', '.mts', '.mjs', '.js', '.cts', '.cjs', '.tsx', '.jsx', '.json'],
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"plugins": [
|
||||||
|
"prettier-plugin-organize-imports",
|
||||||
|
"@trivago/prettier-plugin-sort-imports"
|
||||||
|
],
|
||||||
|
"importOrder": [
|
||||||
|
"^[a-zA-Z]",
|
||||||
|
"^@/.*"
|
||||||
|
],
|
||||||
|
"importOrderSeparation": true,
|
||||||
|
"importOrderParserPlugins": [
|
||||||
|
"typescript",
|
||||||
|
"decorators-legacy"
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
-1619
File diff suppressed because it is too large
Load Diff
+25
-7
@@ -1,25 +1,43 @@
|
|||||||
{
|
{
|
||||||
"name": "@trek/shared",
|
"name": "@trek/shared",
|
||||||
"version": "0.0.0",
|
"version": "3.0.22",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Shared API contracts (Zod schemas) — single source of truth for TREK server and client.",
|
"description": "Shared API contracts (Zod schemas) — single source of truth for TREK server and client.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./src/index.ts",
|
"main": "./dist/index.cjs",
|
||||||
"types": "./src/index.ts",
|
"module": "./dist/index.js",
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./src/index.ts",
|
".": {
|
||||||
"./*": "./src/*.ts"
|
"types": "./dist/index.d.ts",
|
||||||
|
"import": "./dist/index.js",
|
||||||
|
"require": "./dist/index.cjs"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"build": "tsup",
|
||||||
|
"build:watch": "tsup --watch",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"typecheck": "tsc --noEmit"
|
"typecheck": "tsc --noEmit",
|
||||||
|
"format": "prettier --write \"src/**/*.ts\"",
|
||||||
|
"format:check": "prettier --check \"src/**/*.ts\"",
|
||||||
|
"lint": "eslint --fix \"src/**/*.ts\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"zod": "^4.3.6"
|
"zod": "^4.3.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"tsup": "^8.5.1",
|
||||||
"typescript": "^6.0.2",
|
"typescript": "^6.0.2",
|
||||||
"vitest": "^3.2.4"
|
"vitest": "^3.2.4",
|
||||||
|
"@eslint/js": "^10.0.1",
|
||||||
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
||||||
|
"eslint": "^10.3.0",
|
||||||
|
"eslint-config-flat-gitignore": "^2.3.0",
|
||||||
|
"eslint-config-prettier": "^10.1.8",
|
||||||
|
"eslint-plugin-prettier": "^5.5.5",
|
||||||
|
"prettier": "3.8.3",
|
||||||
|
"prettier-plugin-organize-imports": "^4.3.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"noEmit": true
|
"noEmit": true,
|
||||||
|
"ignoreDeprecations": "6.0"
|
||||||
},
|
},
|
||||||
"include": ["src"]
|
"include": ["src"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
format: ['cjs', 'esm'],
|
||||||
|
dts: true,
|
||||||
|
clean: true,
|
||||||
|
external: ['zod'],
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user