mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
Supersedes #1252 and #872. uuid 14 is ESM-only, apps/web/jest.config.ts only kept v9 working by mapping `^uuid$` at a `wrapper.mjs` that v14 no longer ships, and the specifier also has to be synced in libs/shared/m3u-utils/package.json or @nx/dependency-checks fails lint. All four call sites only used `v4()`, so the dependency goes away instead. `createRandomId()` prefers `crypto.randomUUID()` and falls back to building the same v4 shape from `crypto.getRandomValues()` — that fallback is load-bearing, because randomUUID is only exposed in secure contexts and the self-hosted PWA is regularly served over plain http on a LAN address. getRandomValues stays available there, and it is what uuid's own v4 used. `@types/uuid` goes too; it only existed for the untyped v9 package.
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { nxPreset } from '@nx/jest/preset.js';
|
|
import { createEsmPreset } from 'jest-preset-angular/presets/index.js';
|
|
|
|
const angularEsmPreset = createEsmPreset({
|
|
diagnostics: false,
|
|
tsconfig: '<rootDir>/tsconfig.spec.json',
|
|
});
|
|
|
|
const coverageReporters = ['json', 'json-summary', 'lcovonly', 'text-summary'];
|
|
|
|
const collectCoverageFrom = [
|
|
'src/**/*.{ts,js,mjs,html}',
|
|
'!src/**/*.{spec,test}.ts',
|
|
'!src/**/test-setup.ts',
|
|
'!src/**/test-stubs/**',
|
|
'!src/**/*.generated.*',
|
|
'!src/**/environments/**',
|
|
'!src/**/index.ts',
|
|
];
|
|
|
|
export default {
|
|
...nxPreset,
|
|
...angularEsmPreset,
|
|
displayName: 'web',
|
|
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
|
|
coverageDirectory: '../../coverage/apps/web',
|
|
resolver: nxPreset.resolver,
|
|
moduleFileExtensions: Array.from(
|
|
new Set([
|
|
...(nxPreset.moduleFileExtensions ?? []),
|
|
...(angularEsmPreset.moduleFileExtensions ?? []),
|
|
])
|
|
),
|
|
testMatch: nxPreset.testMatch,
|
|
testEnvironmentOptions: {},
|
|
snapshotSerializers: angularEsmPreset.snapshotSerializers,
|
|
moduleNameMapper: {
|
|
...(angularEsmPreset.moduleNameMapper ?? {}),
|
|
tslib: 'tslib/tslib.es6.js',
|
|
'^iptv-playlist-parser$':
|
|
'<rootDir>/src/test-stubs/iptv-playlist-parser.mjs',
|
|
'^shaka-player$': '<rootDir>/src/test-stubs/shaka-player.js',
|
|
'^video.js$': '<rootDir>/src/test-stubs/video-js.js',
|
|
'^rxjs': '<rootDir>/../../node_modules/rxjs/dist/bundles/rxjs.umd.js',
|
|
},
|
|
transform: angularEsmPreset.transform,
|
|
transformIgnorePatterns: [],
|
|
extensionsToTreatAsEsm: angularEsmPreset.extensionsToTreatAsEsm,
|
|
coverageReporters,
|
|
collectCoverageFrom,
|
|
};
|