Skip to content

Commit

Permalink
refactor: remove defaults and defaults-esm presets
Browse files Browse the repository at this point in the history
BREAKING CHANGE

- Use `createCjsPreset` as a replacement for `defaults` preset
- Use `createEsmPreset` as a replacement for `defaults` preset
  • Loading branch information
ahnpnl committed Feb 28, 2025
1 parent 35819c9 commit 75732d6
Show file tree
Hide file tree
Showing 8 changed files with 4 additions and 216 deletions.
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;
```

0 comments on commit 75732d6

Please sign in to comment.