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.
112 lines
3.1 KiB
JSON
112 lines
3.1 KiB
JSON
{
|
|
"name": "@trek/shared",
|
|
"version": "4.3.3",
|
|
"engines": {
|
|
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
|
},
|
|
"private": true,
|
|
"description": "Shared API contracts (Zod schemas) — single source of truth for TREK server and client.",
|
|
"type": "module",
|
|
"main": "./dist/index.cjs",
|
|
"module": "./dist/index.mjs",
|
|
"types": "./dist/index.d.cts",
|
|
"exports": {
|
|
".": {
|
|
"import": {
|
|
"types": "./dist/index.d.mts",
|
|
"default": "./dist/index.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/index.d.cts",
|
|
"default": "./dist/index.cjs"
|
|
}
|
|
},
|
|
"./i18n": {
|
|
"import": {
|
|
"types": "./dist/i18n/index.d.mts",
|
|
"default": "./dist/i18n/index.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/i18n/index.d.cts",
|
|
"default": "./dist/i18n/index.cjs"
|
|
}
|
|
},
|
|
"./i18n/*": {
|
|
"import": {
|
|
"types": "./dist/i18n/*/index.d.mts",
|
|
"default": "./dist/i18n/*/index.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/i18n/*/index.d.cts",
|
|
"default": "./dist/i18n/*/index.cjs"
|
|
}
|
|
},
|
|
"./roadtrip": {
|
|
"import": {
|
|
"types": "./dist/roadtrip/planning.d.mts",
|
|
"default": "./dist/roadtrip/planning.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/roadtrip/planning.d.cts",
|
|
"default": "./dist/roadtrip/planning.cjs"
|
|
}
|
|
},
|
|
"./sanitize": {
|
|
"import": {
|
|
"types": "./dist/sanitize/sanitize.d.mts",
|
|
"default": "./dist/sanitize/sanitize.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/sanitize/sanitize.d.cts",
|
|
"default": "./dist/sanitize/sanitize.cjs"
|
|
}
|
|
}
|
|
},
|
|
"typesVersions": {
|
|
"*": {
|
|
"i18n": [
|
|
"./dist/i18n/index.d.cts"
|
|
],
|
|
"i18n/*": [
|
|
"./dist/i18n/*/index.d.cts"
|
|
]
|
|
}
|
|
},
|
|
"scripts": {
|
|
"build": "tsdown",
|
|
"build:watch": "tsdown --watch --no-clean",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"typecheck": "tsc --noEmit",
|
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
"format:check": "prettier --check \"src/**/*.ts\"",
|
|
"lint": "eslint \"src/**/*.ts\"",
|
|
"lint:fix": "eslint --fix \"src/**/*.ts\"",
|
|
"lint:format": "node scripts/format-lint.mjs",
|
|
"i18n:parity": "node scripts/i18n-parity.mjs",
|
|
"i18n:parity:strict": "node scripts/i18n-parity.mjs --strict",
|
|
"contracts:open": "node scripts/open-request-schemas.mjs",
|
|
"i18n:untranslated": "node scripts/i18n-untranslated.mjs",
|
|
"i18n:untranslated:update": "node scripts/i18n-untranslated.mjs --update"
|
|
},
|
|
"dependencies": {
|
|
"isomorphic-dompurify": "^3.23.0",
|
|
"zod": "^4.6.5"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
"@vitest/coverage-v8": "^4.1.11",
|
|
"eslint": "^10.11.0",
|
|
"eslint-config-flat-gitignore": "^2.4.0",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"prettier": "3.9.8",
|
|
"prettier-plugin-organize-imports": "^4.3.0",
|
|
"tsdown": "^0.23.0",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.70.0",
|
|
"vitest": "^4.1.11"
|
|
}
|
|
}
|