diff --git a/packages/backend/eslint.config.js b/packages/backend/eslint.config.js index ae7b2baf49..db42cf88d1 100644 --- a/packages/backend/eslint.config.js +++ b/packages/backend/eslint.config.js @@ -1,4 +1,5 @@ import tsParser from '@typescript-eslint/parser'; +import globals from 'globals'; import sharedConfig from '../shared/eslint.config.js'; export default [ @@ -6,6 +7,11 @@ export default [ { ignores: ['**/node_modules', 'built', '@types/**/*', 'migration'], }, + { + globals: { + ...globals.node, + }, + }, { files: ['**/*.ts', '**/*.tsx'], languageOptions: { diff --git a/packages/backend/jest.mjs b/packages/backend/jest.mjs new file mode 100644 index 0000000000..6feec5da5f --- /dev/null +++ b/packages/backend/jest.mjs @@ -0,0 +1,15 @@ +#!/usr/bin/env node +import child_process from 'node:child_process'; +import path from 'node:path'; + +import semver from 'semver'; + +const args = []; +args.push(...[ + ...semver.satisfies(process.version, '^20.17.0 || ^22.0.0') ? ['--no-experimental-require-module'] : [], + '--experimental-vm-modules', + '--experimental-import-meta-resolve', + path.join(import.meta.dirname, 'node_modules/jest/bin/jest.js'), +]) + +child_process.spawn(process.execPath, args, { stdio: 'inherit' }); diff --git a/packages/backend/package.json b/packages/backend/package.json index fd47c1fc4c..b3da258894 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -22,12 +22,12 @@ "typecheck": "tsc --noEmit && tsc -p test --noEmit && tsc -p test-federation --noEmit", "eslint": "eslint --quiet \"{src,test-federation}/**/*.ts\"", "lint": "pnpm typecheck && pnpm eslint", - "jest": "cross-env NODE_ENV=test node --no-experimental-require-module --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.unit.cjs", - "jest:e2e": "cross-env NODE_ENV=test node --no-experimental-require-module --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.e2e.cjs", - "jest:fed": "node --experimental-vm-modules --no-experimental-require-module --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.fed.cjs", - "jest-and-coverage": "cross-env NODE_ENV=test node --no-experimental-require-module --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --config jest.config.unit.cjs", - "jest-and-coverage:e2e": "cross-env NODE_ENV=test node --no-experimental-require-module --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --config jest.config.e2e.cjs", - "jest-clear": "cross-env NODE_ENV=test node --no-experimental-require-module --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --clearCache", + "jest": "cross-env NODE_ENV=test node ./jest.mjs --forceExit --config jest.config.unit.cjs", + "jest:e2e": "cross-env NODE_ENV=test node ./jest.mjs --forceExit --config jest.config.e2e.cjs", + "jest:fed": "node ./jest.mjs --forceExit --config jest.config.fed.cjs", + "jest-and-coverage": "cross-env NODE_ENV=test node ./jest.mjs --coverage --forceExit --config jest.config.unit.cjs", + "jest-and-coverage:e2e": "cross-env NODE_ENV=test node ./jest.mjs --coverage --forceExit --config jest.config.e2e.cjs", + "jest-clear": "cross-env NODE_ENV=test node ./jest.mjs --clearCache", "test": "pnpm jest", "test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e", "test:fed": "pnpm jest:fed",