mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-20 14:06:27 +00:00
a965b2c75e
isomorphic-dompurify builds a jsdom window as soon as it loads on Node, and the root barrel is what the server and each of its ~900 test files import, so every one of them loaded jsdom without ever sanitising. The sanitisers move behind @trek/shared/sanitize (a build entry of its own, like roadtrip), escapeHtml stays in the root from its own module, and the client's translation context imports the sanitiser from the subpath. The production server stops loading jsdom at boot as well.
74 lines
3.2 KiB
JSON
74 lines
3.2 KiB
JSON
{
|
|
// knip over the three workspaces: unused files, exports, types and
|
|
// dependencies. scripts/ci/knip-ratchet.mjs (npm run lint:knip) holds what it
|
|
// finds today in scripts/ci/knip-baseline.json and fails on anything new.
|
|
// A false positive is fixed here, with the reason, never in the baseline.
|
|
"$schema": "https://unpkg.com/knip@6/schema.json",
|
|
// plugin-sdk is published on its own with its own lockfile and is not a
|
|
// root workspace; its test files would otherwise read as unlisted vitest.
|
|
"ignore": ["plugin-sdk/**"],
|
|
// test.yml runs `cd server && node --require tsconfig-paths/register`; knip
|
|
// resolves the workflow from the root, where server's dependency is not.
|
|
"ignoreUnresolved": ["tsconfig-paths/register"],
|
|
"workspaces": {
|
|
".": {
|
|
"entry": ["scripts/ci/*.mjs", "scripts/*.{cjs,mts}"],
|
|
"project": ["scripts/**/*.{mjs,cjs,mts}"],
|
|
// An optional peer of tsdown, which loads shared/tsdown.config.ts through
|
|
// it; nothing imports it by name. eslint and prettier are the workspaces'
|
|
// own copies: the shared scripts/lib takes them handed in, and its tests
|
|
// import the hoisted ones the server and shared declare.
|
|
"ignoreDependencies": ["unrun", "eslint", "prettier"]
|
|
},
|
|
"client": {
|
|
// The app, its scripts, the Playwright specs and the server launcher
|
|
// playwright.config.ts starts (`node e2e/server-launch.mjs`), and the tests.
|
|
"entry": [
|
|
"src/main.tsx",
|
|
"scripts/*.mjs",
|
|
"e2e/**/*.{ts,mjs}",
|
|
"src/**/*.test.{ts,tsx}",
|
|
"tests/**/*.{ts,tsx}"
|
|
],
|
|
"project": ["src/**/*.{ts,tsx}", "scripts/**/*.mjs", "tests/**/*.{ts,tsx}", "e2e/**/*.{ts,mjs}"]
|
|
},
|
|
"server": {
|
|
"entry": [
|
|
"src/index.ts",
|
|
"src/bootstrap.ts",
|
|
// Read by the MikroORM CLI and at boot, by path.
|
|
"src/mikro-orm.config.ts",
|
|
// Started with child_process.fork() by the plugin supervisor (nest/plugins/paths.ts).
|
|
"src/nest/plugins/runtime/plugin-host-entry.ts",
|
|
// The plugin-author-facing API the forked child exposes; its exported
|
|
// types are the contract for plugin code outside this repository.
|
|
"src/nest/plugins/runtime/plugin-sdk.ts",
|
|
// Found by the migrator and the seeder through a glob, never imported.
|
|
"src/db/migrations/*.ts",
|
|
"src/db/seeders/*.ts",
|
|
"scripts/**/*.{mjs,cjs,ts}",
|
|
"reset-admin.js",
|
|
"tests/**/*.ts"
|
|
],
|
|
"project": ["src/**/*.ts", "scripts/**/*.{mjs,cjs,ts}", "tests/**/*.ts"],
|
|
// The MikroORM command line (npx mikro-orm), configured by the
|
|
// "mikro-orm" block in server/package.json and never imported.
|
|
"ignoreDependencies": ["@mikro-orm/cli"]
|
|
},
|
|
"shared": {
|
|
"entry": [
|
|
// The package entry points tsdown builds, one per locale for the lazy chunks.
|
|
"src/index.ts",
|
|
"src/roadtrip/planning.ts",
|
|
"src/sanitize/sanitize.ts",
|
|
"src/i18n/index.ts",
|
|
"src/i18n/*/index.ts",
|
|
// open-request-schemas.d.mts types the .mjs script beside it.
|
|
"scripts/*.{mjs,d.mts}",
|
|
"src/**/*.spec.ts"
|
|
],
|
|
"project": ["src/**/*.ts", "scripts/**/*.{mjs,mts}"]
|
|
}
|
|
}
|
|
}
|