Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: remove defaults and defaults-esm presets #2994

Merged
merged 1 commit into from
Feb 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion presets/defaults-esm/jest-preset.js

This file was deleted.

1 change: 0 additions & 1 deletion presets/defaults/jest-preset.js

This file was deleted.

19 changes: 0 additions & 19 deletions presets/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,4 @@
declare const _default: {
defaults: {
transformIgnorePatterns: string[];
transform: import('ts-jest').JestConfigWithTsJest['transform'];
testEnvironment: string;
moduleFileExtensions: string[];
snapshotSerializers: string[];
};
defaultsESM: {
extensionsToTreatAsEsm: string[];
moduleNameMapper: {
tslib: string;
};
transform: import('ts-jest').JestConfigWithTsJest['transform'];
transformIgnorePatterns: string[];
testEnvironment: string;
moduleFileExtensions: string[];
snapshotSerializers: string[];
};
defaultTransformerOptions: import('ts-jest').TsJestTransformerOptions;
createCjsPreset: typeof import('../build/presets').createCjsPreset;
createEsmPreset: typeof import('../build/presets').createEsmPreset;
};
Expand Down
24 changes: 0 additions & 24 deletions presets/index.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,6 @@
const ngJestPresets = require('../build/presets');

module.exports = {
get defaults() {
console.warn(`
This preset is DEPRECATED and will be removed in the next major release.
Please use "createCjsPreset" function instead. See documentation at https://thymikee.github.io/jest-preset-angular/docs/getting-started/presets#createcjspresetoptions
`);

return ngJestPresets.defaultPreset;
},
get defaultsESM() {
console.warn(`
This preset is DEPRECATED and will be removed in the next major release.
Please use "createEsmPreset" function instead. See documentation at https://thymikee.github.io/jest-preset-angular/docs/getting-started/presets#createesmpresetoptions
`);

return ngJestPresets.defaultEsmPreset;
},
get defaultTransformerOptions() {
console.warn(`
These options are DEPRECATED and will be removed in the next major release.
Please use "createCjsPreset" or "createEsmPreset" function instead. See documentation at https://thymikee.github.io/jest-preset-angular/docs/getting-started/presets
`);

return ngJestPresets.defaultTransformerOptions;
},
createCjsPreset: ngJestPresets.createCjsPreset,
createEsmPreset: ngJestPresets.createEsmPreset,
};
86 changes: 0 additions & 86 deletions src/presets/__snapshots__/index.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,6 @@

exports[`Jest presets should have the correct types which come from \`ts-jest\` 1`] = `
"declare const _default: {
defaults: {
transformIgnorePatterns: string[];
transform: import('ts-jest').JestConfigWithTsJest['transform'];
testEnvironment: string;
moduleFileExtensions: string[];
snapshotSerializers: string[];
};
defaultsESM: {
extensionsToTreatAsEsm: string[];
moduleNameMapper: {
tslib: string;
};
transform: import('ts-jest').JestConfigWithTsJest['transform'];
transformIgnorePatterns: string[];
testEnvironment: string;
moduleFileExtensions: string[];
snapshotSerializers: string[];
};
defaultTransformerOptions: import('ts-jest').TsJestTransformerOptions;
createCjsPreset: typeof import('../build/presets').createCjsPreset;
createEsmPreset: typeof import('../build/presets').createEsmPreset;
};
Expand Down Expand Up @@ -163,70 +144,3 @@ exports[`Jest presets should return jest config with ESM preset creator function
],
}
`;

exports[`Jest presets should return the correct jest config with legacy preset config 1`] = `
{
"moduleFileExtensions": [
"ts",
"html",
"js",
"json",
"mjs",
],
"snapshotSerializers": [
"jest-preset-angular/build/serializers/html-comment",
"jest-preset-angular/build/serializers/ng-snapshot",
"jest-preset-angular/build/serializers/no-ng-attributes",
],
"testEnvironment": "jsdom",
"transform": {
"^.+\\.(ts|js|mjs|html|svg)$": [
"jest-preset-angular",
{
"stringifyContentPathRegex": "\\.(html|svg)$",
"tsconfig": "<rootDir>/tsconfig.spec.json",
},
],
},
"transformIgnorePatterns": [
"node_modules/(?!.*\\.mjs$)",
],
}
`;

exports[`Jest presets should return the correct jest config with legacy preset config 2`] = `
{
"extensionsToTreatAsEsm": [
".ts",
],
"moduleFileExtensions": [
"ts",
"html",
"js",
"json",
"mjs",
],
"moduleNameMapper": {
"tslib": "tslib/tslib.es6.js",
},
"snapshotSerializers": [
"jest-preset-angular/build/serializers/html-comment",
"jest-preset-angular/build/serializers/ng-snapshot",
"jest-preset-angular/build/serializers/no-ng-attributes",
],
"testEnvironment": "jsdom",
"transform": {
"^.+\\.(ts|js|html|svg)$": [
"jest-preset-angular",
{
"stringifyContentPathRegex": "\\.(html|svg)$",
"tsconfig": "<rootDir>/tsconfig.spec.json",
"useESM": true,
},
],
},
"transformIgnorePatterns": [
"node_modules/(?!tslib)",
],
}
`;
15 changes: 4 additions & 11 deletions src/presets/index.spec.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
import fs from 'fs';
import path from 'path';
import fs from 'node:fs';
import path from 'node:path';

import { defaultPreset, defaultEsmPreset, createCjsPreset, createEsmPreset } from './';
import { createCjsPreset, createEsmPreset } from './';

describe('Jest presets', () => {
test.each([defaultPreset, defaultEsmPreset])(
'should return the correct jest config with legacy preset config',
(preset) => {
expect(preset).toMatchSnapshot();
},
);

it('should return jest config with CJS preset creator function without options', () => {
expect(createCjsPreset()).toMatchSnapshot();
});
Expand All @@ -35,7 +28,7 @@ describe('Jest presets', () => {
).toMatchSnapshot();
});

test('should have the correct types which come from `ts-jest`', () => {
it('should have the correct types which come from `ts-jest`', () => {
expect(fs.readFileSync(path.join(__dirname, '..', '..', 'presets/index.d.ts'), 'utf-8')).toMatchSnapshot();
});
});
42 changes: 0 additions & 42 deletions src/presets/index.ts
Original file line number Diff line number Diff line change
@@ -1,44 +1,2 @@
import type { JestConfigWithTsJest, TsJestTransformerOptions } from 'ts-jest';

import snapshotSerializers from '../serializers';

const baseConfig: Pick<JestConfigWithTsJest, 'testEnvironment' | 'moduleFileExtensions' | 'snapshotSerializers'> = {
testEnvironment: 'jsdom',
moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs'],
snapshotSerializers,
};

const defaultTransformerOptions: TsJestTransformerOptions = {
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
};

const defaultPreset = {
...baseConfig,
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
transform: {
'^.+\\.(ts|js|mjs|html|svg)$': ['jest-preset-angular', defaultTransformerOptions],
},
};

const defaultEsmPreset = {
...baseConfig,
extensionsToTreatAsEsm: ['.ts'],
moduleNameMapper: {
tslib: 'tslib/tslib.es6.js',
},
transform: {
'^.+\\.(ts|js|html|svg)$': [
'jest-preset-angular',
{
...defaultTransformerOptions,
useESM: true,
},
],
},
transformIgnorePatterns: ['node_modules/(?!tslib)'],
};

export { defaultPreset, defaultEsmPreset, defaultTransformerOptions };
export { createCjsPreset } from './create-cjs-preset';
export { createEsmPreset } from './create-esm-preset';
32 changes: 0 additions & 32 deletions website/docs/getting-started/presets.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,35 +119,3 @@ export default {
...presetConfig,
} satisfies Config;
```

### Legacy presets

:::warning

`jest-preset-angular` **DON'T RECOMMEND** to use legacy presets because this approach is not flexible to configure Jest configuration.
These legacy presets will be removed in the next major release and users are **HIGHLY RECOMMENDED** to migrate to use the above utility functions.

:::

| Preset name | Description |
| ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `jest-preset-angular/presets/default`<br/>or `jest-preset-angular` | TypeScript, JavaScript and HTML files (`js`, `.ts`, `.html`) will be transformed by `jest-preset-angular` to **CommonJS** syntax. |
| `jest-preset-angular/presets/defaults-esm`<br/> | TypeScript, JavaScript and HTML files (`js`, `.ts`, `.html`) will be transformed by `jest-preset-angular` to **ESM** syntax. |

#### Example

```ts title="jest.config.ts" tab={"label": "TypeScript CJS"}
import type { Config } from 'jest';

export default {
preset: 'jest-preset-angular',
} satisfies Config;
```

```ts title="jest.config.mts" tab={"label": "TypeScript ESM"}
import type { Config } from 'jest';

export default {
preset: 'jest-preset-angular/presets/defaults-esm',
} satisfies Config;
```