@nest-yalc-2/jest-config 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/LICENSE +661 -0
  2. package/package.json +25 -10
  3. package/src/CHANGELOG.md +8 -0
  4. package/src/README.md +31 -0
  5. package/src/config/CHANGELOG.md +8 -0
  6. package/src/config/README.md +31 -0
  7. package/src/config/gql-plugin.js +25 -0
  8. package/src/config/index.d.ts +2 -0
  9. package/src/config/index.js +6 -0
  10. package/src/config/index.js.map +1 -0
  11. package/src/config/index.ts +2 -0
  12. package/src/config/jest-conf.generator.d.ts +53 -0
  13. package/src/config/jest-conf.generator.js +193 -0
  14. package/src/config/jest-conf.generator.js.map +1 -0
  15. package/src/config/jest-conf.generator.ts +368 -0
  16. package/src/config/jest-def.config.d.ts +20 -0
  17. package/src/config/jest-def.config.js +145 -0
  18. package/src/config/jest-def.config.js.map +1 -0
  19. package/src/config/jest-def.config.ts +214 -0
  20. package/src/config/jest.setup.d.ts +1 -0
  21. package/src/config/jest.setup.js +10 -0
  22. package/src/config/jest.setup.js.map +1 -0
  23. package/src/config/jest.setup.ts +39 -0
  24. package/src/config/package.json +22 -0
  25. package/src/config/tsconfig.dev.json +3 -0
  26. package/src/config/tsconfig.json +9 -0
  27. package/src/gql-plugin.js +25 -0
  28. package/src/index.d.ts +2 -0
  29. package/src/index.js +6 -0
  30. package/src/index.js.map +1 -0
  31. package/src/index.ts +2 -0
  32. package/src/jest-conf.generator.d.ts +53 -0
  33. package/src/jest-conf.generator.js +193 -0
  34. package/src/jest-conf.generator.js.map +1 -0
  35. package/src/jest-conf.generator.ts +363 -0
  36. package/src/jest-def.config.d.ts +20 -0
  37. package/src/jest-def.config.js +151 -0
  38. package/src/jest-def.config.js.map +1 -0
  39. package/src/jest-def.config.ts +220 -0
  40. package/src/jest.setup.d.ts +1 -0
  41. package/src/jest.setup.js +26 -0
  42. package/src/jest.setup.js.map +1 -0
  43. package/src/jest.setup.ts +58 -0
  44. package/src/package.json +28 -0
  45. package/src/src/CHANGELOG.md +8 -0
  46. package/src/src/README.md +31 -0
  47. package/src/src/config/CHANGELOG.md +8 -0
  48. package/src/src/config/README.md +31 -0
  49. package/src/src/config/gql-plugin.js +25 -0
  50. package/src/src/config/index.d.ts +2 -0
  51. package/src/src/config/index.js +6 -0
  52. package/src/src/config/index.js.map +1 -0
  53. package/src/src/config/index.ts +2 -0
  54. package/src/src/config/jest-conf.generator.d.ts +53 -0
  55. package/src/src/config/jest-conf.generator.js +193 -0
  56. package/src/src/config/jest-conf.generator.js.map +1 -0
  57. package/src/src/config/jest-conf.generator.ts +368 -0
  58. package/src/src/config/jest-def.config.d.ts +20 -0
  59. package/src/src/config/jest-def.config.js +145 -0
  60. package/src/src/config/jest-def.config.js.map +1 -0
  61. package/src/src/config/jest-def.config.ts +214 -0
  62. package/src/src/config/jest.setup.d.ts +1 -0
  63. package/src/src/config/jest.setup.js +10 -0
  64. package/src/src/config/jest.setup.js.map +1 -0
  65. package/src/src/config/jest.setup.ts +39 -0
  66. package/src/src/config/package.json +22 -0
  67. package/src/src/config/tsconfig.dev.json +3 -0
  68. package/src/src/config/tsconfig.json +9 -0
  69. package/src/src/gql-plugin.js +25 -0
  70. package/src/src/index.d.ts +2 -0
  71. package/src/src/index.js +6 -0
  72. package/src/src/index.js.map +1 -0
  73. package/src/src/index.ts +2 -0
  74. package/src/src/jest-conf.generator.d.ts +53 -0
  75. package/src/src/jest-conf.generator.js +193 -0
  76. package/src/src/jest-conf.generator.js.map +1 -0
  77. package/src/src/jest-conf.generator.ts +363 -0
  78. package/src/src/jest-def.config.d.ts +20 -0
  79. package/src/src/jest-def.config.js +151 -0
  80. package/src/src/jest-def.config.js.map +1 -0
  81. package/src/src/jest-def.config.ts +220 -0
  82. package/src/src/jest.setup.d.ts +1 -0
  83. package/src/src/jest.setup.js +26 -0
  84. package/src/src/jest.setup.js.map +1 -0
  85. package/src/src/jest.setup.ts +58 -0
  86. package/src/src/package.json +28 -0
  87. package/src/src/tsconfig.dev.json +3 -0
  88. package/src/src/tsconfig.json +9 -0
  89. package/src/tsconfig.dev.json +3 -0
  90. package/src/tsconfig.json +9 -0
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.coverageThreshold = exports.tsJestConfig = exports.tsJestConfigE2E = exports.globals = exports.coveragePathIgnorePatterns = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const path = tslib_1.__importStar(require("path"));
6
+ const readTsConfig = tslib_1.__importStar(require("get-tsconfig"));
7
+ const ts_jest_1 = require("ts-jest");
8
+ const jest_config_1 = require("jest-config");
9
+ exports.coveragePathIgnorePatterns = [
10
+ '/env/dist/',
11
+ '/node_modules/',
12
+ '/database/seeds/',
13
+ '/database/migrations/',
14
+ '/test/feature/',
15
+ ];
16
+ const globals = () => {
17
+ return {
18
+ __JEST_DISABLE_DB: true,
19
+ };
20
+ };
21
+ exports.globals = globals;
22
+ const tsJestConfigE2E = (tsConfPath = '', withGqlPlugin = true, overrideTsJestConfig) => {
23
+ const tsConfigFile = readTsConfig.getTsconfig(path.resolve(tsConfPath));
24
+ const { tsconfig, ...restTsJest } = overrideTsJestConfig ?? {};
25
+ const conf = {
26
+ diagnostics: false,
27
+ tsconfig: {
28
+ ...(tsConfigFile?.config.compilerOptions ?? {}),
29
+ ...(tsconfig ?? {}),
30
+ },
31
+ ...restTsJest,
32
+ };
33
+ if (withGqlPlugin) {
34
+ conf.astTransformers = {
35
+ before: [path.join(__dirname, 'gql-plugin.js')],
36
+ };
37
+ }
38
+ return conf;
39
+ };
40
+ exports.tsJestConfigE2E = tsJestConfigE2E;
41
+ const tsJestConfig = (tsConfPath = '', overrideTsJestConfig) => {
42
+ const tsConfigFile = readTsConfig.getTsconfig(path.resolve(path.dirname(tsConfPath)), path.basename(tsConfPath));
43
+ if (tsConfigFile?.path && path.resolve(tsConfigFile.path) !== path.resolve(tsConfPath)) {
44
+ throw new Error(`Cannot find ${tsConfPath}`);
45
+ }
46
+ const { tsconfig, ...restTsJest } = overrideTsJestConfig ?? {};
47
+ const config = {
48
+ tsconfig: {
49
+ ...(tsConfigFile?.config.compilerOptions ?? {}),
50
+ ...(tsconfig ?? {}),
51
+ importHelpers: true,
52
+ },
53
+ diagnostics: false,
54
+ ...restTsJest,
55
+ };
56
+ return config;
57
+ };
58
+ exports.tsJestConfig = tsJestConfig;
59
+ const coverageThreshold = (projects = [], defaultCoverageThreshold = {
60
+ branches: 100,
61
+ functions: 100,
62
+ lines: 100,
63
+ statements: 100,
64
+ }) => {
65
+ const coverage = {
66
+ global: {
67
+ ...defaultCoverageThreshold,
68
+ },
69
+ };
70
+ projects.map((project) => {
71
+ coverage[project.rootDir] = {
72
+ ...defaultCoverageThreshold,
73
+ };
74
+ if (project?.coverageThreshold) {
75
+ coverage[project.rootDir] = {
76
+ ...coverage[project.rootDir],
77
+ ...project?.coverageThreshold,
78
+ };
79
+ }
80
+ });
81
+ return coverage;
82
+ };
83
+ exports.coverageThreshold = coverageThreshold;
84
+ const defaultConf = (dirname, options = {}, _tsJestConfig = {}) => {
85
+ const tsConfigFile = readTsConfig.getTsconfig(path.join(dirname, 'tsconfig.json'));
86
+ const compilerOptions = tsConfigFile?.config.compilerOptions ?? {};
87
+ const config = {
88
+ rootDir: dirname,
89
+ modulePathIgnorePatterns: [
90
+ '<rootDir>/var/',
91
+ '<rootDir>/env/',
92
+ '<rootDir>/docs/',
93
+ '<rootDir>/dist/',
94
+ '<rootDir>/../dist/',
95
+ '<rootDir>/node_modules/',
96
+ '.*/dist/',
97
+ ],
98
+ preset: 'ts-jest/presets/default-esm',
99
+ testEnvironment: 'node',
100
+ moduleFileExtensions: [...jest_config_1.defaults.moduleFileExtensions, 'ts'],
101
+ testRegex: '.*\\.spec\\.ts$',
102
+ transform: {
103
+ '^.+\\.(t|j)sx?$': [
104
+ 'ts-jest',
105
+ {
106
+ useESM: true,
107
+ tsconfig: {
108
+ ...compilerOptions,
109
+ importHelpers: true,
110
+ },
111
+ ..._tsJestConfig,
112
+ },
113
+ ],
114
+ },
115
+ moduleNameMapper: {
116
+ 'source-map-support/register': 'identity-obj-proxy',
117
+ '^(@nest-yalc-2/.*|@node-yalc/.*|\\.{1,2}/.*)\\.js$': [
118
+ '$1.ts',
119
+ '$1/index.ts',
120
+ '$1.js',
121
+ '$1',
122
+ ],
123
+ ...(0, ts_jest_1.pathsToModuleNameMapper)(compilerOptions.paths ?? {}, {
124
+ prefix: `${dirname}/`,
125
+ useESM: true,
126
+ }),
127
+ },
128
+ errorOnDeprecated: true,
129
+ extensionsToTreatAsEsm: ['.ts'],
130
+ ...options?.jestConf,
131
+ };
132
+ if (options.transformEsModules) {
133
+ const esModules = [
134
+ ...(Array.isArray(options.transformEsModules)
135
+ ? options.transformEsModules
136
+ : []),
137
+ 'aggregate-error',
138
+ 'clean-stack',
139
+ 'escape-string-regexp',
140
+ 'indent-string',
141
+ 'p-map',
142
+ 'lodash-es',
143
+ ].join('|');
144
+ config.transformIgnorePatterns = [
145
+ `[/\\\\]node_modules[/\\\\](?!${esModules}).+\\.(js|jsx|ts|tsx)$`,
146
+ ];
147
+ }
148
+ return config;
149
+ };
150
+ exports.default = defaultConf;
151
+ //# sourceMappingURL=jest-def.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-def.config.js","sourceRoot":"","sources":["jest-def.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /* istanbul ignore file */
2
+
3
+ import * as path from 'path';
4
+ import * as readTsConfig from 'get-tsconfig';
5
+ import { pathsToModuleNameMapper } from 'ts-jest';
6
+ import { defaults } from 'jest-config';
7
+ import type { JestConfigWithTsJest } from 'ts-jest';
8
+
9
+ export const coveragePathIgnorePatterns = [
10
+ '/env/dist/',
11
+ '/node_modules/',
12
+ '/database/seeds/',
13
+ '/database/migrations/',
14
+ '/test/feature/',
15
+ ];
16
+
17
+ export const globals = () => {
18
+ return {
19
+ __JEST_DISABLE_DB: true,
20
+ };
21
+ };
22
+
23
+ export const tsJestConfigE2E = (
24
+ tsConfPath = '',
25
+ withGqlPlugin = true,
26
+ overrideTsJestConfig?: any,
27
+ ) => {
28
+ const tsConfigFile = readTsConfig.getTsconfig(path.resolve(tsConfPath));
29
+ const { tsconfig, ...restTsJest } = overrideTsJestConfig ?? {};
30
+
31
+ const conf: any = {
32
+ diagnostics: false,
33
+ tsconfig: {
34
+ ...(tsConfigFile?.config.compilerOptions ?? {}),
35
+ ...(tsconfig ?? {}),
36
+ },
37
+ ...restTsJest,
38
+ };
39
+
40
+ if (withGqlPlugin) {
41
+ conf.astTransformers = {
42
+ before: [path.join(__dirname, 'gql-plugin.js')],
43
+ };
44
+ }
45
+
46
+ return conf;
47
+ };
48
+
49
+ export const tsJestConfig = (tsConfPath = '', overrideTsJestConfig?: any) => {
50
+ const tsConfigFile = readTsConfig.getTsconfig(
51
+ path.resolve(path.dirname(tsConfPath)),
52
+ path.basename(tsConfPath),
53
+ );
54
+
55
+ if (tsConfigFile?.path && path.resolve(tsConfigFile.path) !== path.resolve(tsConfPath)) {
56
+ throw new Error(`Cannot find ${tsConfPath}`);
57
+ }
58
+
59
+ const { tsconfig, ...restTsJest } = overrideTsJestConfig ?? {};
60
+
61
+ const config = {
62
+ tsconfig: {
63
+ ...(tsConfigFile?.config.compilerOptions ?? {}),
64
+ ...(tsconfig ?? {}),
65
+ importHelpers: true,
66
+ },
67
+ diagnostics: false,
68
+ ...restTsJest,
69
+ };
70
+
71
+ return config;
72
+ };
73
+
74
+ export const coverageThreshold = (
75
+ projects: any[] = [],
76
+ defaultCoverageThreshold = {
77
+ branches: 100,
78
+ functions: 100,
79
+ lines: 100,
80
+ statements: 100,
81
+ },
82
+ ) => {
83
+ const coverage: Record<string, any> = {
84
+ global: {
85
+ ...defaultCoverageThreshold,
86
+ },
87
+ };
88
+
89
+ projects.map((project) => {
90
+ // /**
91
+ // * @todo should be removed and be set to 100% asap
92
+ // */
93
+ // switch (project.name) {
94
+ // case 'unit/common/crud-gen':
95
+ // branches = 92.27;
96
+ // functions = 98.92;
97
+ // lines = 98.75;
98
+ // statements = 98.5;
99
+ // break;
100
+ // default:
101
+ // branches = 100;
102
+ // break;
103
+ // }
104
+
105
+ coverage[project.rootDir] = {
106
+ ...defaultCoverageThreshold,
107
+ };
108
+
109
+ if (project?.coverageThreshold) {
110
+ coverage[project.rootDir] = {
111
+ ...coverage[project.rootDir],
112
+ ...project?.coverageThreshold,
113
+ };
114
+ }
115
+ });
116
+
117
+ return coverage;
118
+ };
119
+
120
+ export interface IDefaultConfOptions {
121
+ /** node modules to transform
122
+ * string array -> add extra esmodule to transform
123
+ * true -> transform esmodule only using the default array
124
+ * false -> disable esmodule transformation (default)
125
+ */
126
+ transformEsModules?: string[] | boolean;
127
+ tsJestConf?: any;
128
+ jestConf?: any;
129
+ }
130
+
131
+ /**
132
+ * for both unit and e2e
133
+ * @param dirname
134
+ * @returns
135
+ */
136
+ const defaultConf = (
137
+ dirname: string,
138
+ options: IDefaultConfOptions = {},
139
+ _tsJestConfig: any = {},
140
+ ): JestConfigWithTsJest => {
141
+ const tsConfigFile = readTsConfig.getTsconfig(
142
+ path.join(dirname, 'tsconfig.json'),
143
+ );
144
+ const compilerOptions = tsConfigFile?.config.compilerOptions ?? {};
145
+
146
+ // We need this to make sure that some esm modules are transformed
147
+ // ref: https://github.com/nrwl/nx/issues/812
148
+ // ref: https://github.com/jaredpalmer/tsdx/issues/187#issuecomment-825536863
149
+
150
+ const config: JestConfigWithTsJest = {
151
+ rootDir: dirname,
152
+ modulePathIgnorePatterns: [
153
+ '<rootDir>/var/',
154
+ '<rootDir>/env/',
155
+ '<rootDir>/docs/',
156
+ '<rootDir>/dist/',
157
+ '<rootDir>/../dist/',
158
+ '<rootDir>/node_modules/',
159
+ '.*/dist/',
160
+ ],
161
+ preset: 'ts-jest/presets/default-esm',
162
+ testEnvironment: 'node',
163
+ moduleFileExtensions: [...defaults.moduleFileExtensions, 'ts'], // add typescript to the default options
164
+ testRegex: '.*\\.spec\\.ts$',
165
+ transform: {
166
+ '^.+\\.(t|j)sx?$': [
167
+ 'ts-jest',
168
+ {
169
+ useESM: true,
170
+ tsconfig: {
171
+ ...compilerOptions,
172
+ importHelpers: true,
173
+ },
174
+ ..._tsJestConfig,
175
+ },
176
+ ],
177
+ },
178
+ moduleNameMapper: {
179
+ // this fixes the issue with wrong line numbers in stack traces,
180
+ /** @see https://github.com/kulshekhar/ts-jest/issues/727 */
181
+ 'source-map-support/register': 'identity-obj-proxy',
182
+ '^(@nest-yalc-2/.*|@node-yalc/.*|\\.{1,2}/.*)\\.js$': [
183
+ '$1.ts',
184
+ '$1/index.ts',
185
+ '$1.js',
186
+ '$1',
187
+ ],
188
+ ...pathsToModuleNameMapper(compilerOptions.paths ?? {}, {
189
+ prefix: `${dirname}/`,
190
+ useESM: true,
191
+ }),
192
+ },
193
+ errorOnDeprecated: true,
194
+ extensionsToTreatAsEsm: ['.ts'],
195
+ // injectGlobals: false,
196
+ ...options?.jestConf,
197
+ };
198
+
199
+ if (options.transformEsModules) {
200
+ const esModules = [
201
+ ...(Array.isArray(options.transformEsModules)
202
+ ? options.transformEsModules
203
+ : []),
204
+ 'aggregate-error',
205
+ 'clean-stack',
206
+ 'escape-string-regexp',
207
+ 'indent-string',
208
+ 'p-map',
209
+ 'lodash-es',
210
+ ].join('|');
211
+
212
+ config.transformIgnorePatterns = [
213
+ `[/\\\\]node_modules[/\\\\](?!${esModules}).+\\.(js|jsx|ts|tsx)$`,
214
+ ];
215
+ }
216
+
217
+ return config;
218
+ };
219
+
220
+ export default defaultConf;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ process.env.NODE_ENV = 'test';
4
+ if (!process.env.LISTENING_TO_UNHANDLED_REJECTION) {
5
+ process.on('unhandledRejection', (err) => {
6
+ throw err;
7
+ });
8
+ process.env.LISTENING_TO_UNHANDLED_REJECTION = 'true';
9
+ }
10
+ jest.mock('@nestjs/graphql', () => {
11
+ const actual = jest.requireActual('@nestjs/graphql');
12
+ const mockedModule = Object.assign({}, actual);
13
+ const decorators = [
14
+ 'Args', 'Field', 'Query', 'Mutation', 'Resolver', 'InputType', 'ObjectType',
15
+ 'InterfaceType', 'ResolveField', 'HideField', 'Directive', 'registerEnumType', 'IntersectionType'
16
+ ];
17
+ for (const name of decorators) {
18
+ if (actual[name]) {
19
+ mockedModule[name] = jest.fn().mockImplementation((...args) => {
20
+ return actual[name](...args);
21
+ });
22
+ }
23
+ }
24
+ return mockedModule;
25
+ });
26
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["jest.setup.ts"],"names":[],"mappings":";;AAGA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;AAI9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,GAAG,MAAM,CAAC;AACxD,CAAC;AA6BD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG;QACjB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY;QAC3E,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB;KAClG,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE;gBAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,58 @@
1
+ /// <reference types="jest" />
2
+ /* istanbul ignore file */
3
+
4
+ process.env.NODE_ENV = 'test';
5
+
6
+ // without this, jest won't fail with unhandled promises
7
+ // (e.g. missing awaits)
8
+ if (!process.env.LISTENING_TO_UNHANDLED_REJECTION) {
9
+ process.on('unhandledRejection', (err) => {
10
+ throw err;
11
+ });
12
+ // Avoid memory leak by adding too many listeners
13
+ process.env.LISTENING_TO_UNHANDLED_REJECTION = 'true';
14
+ }
15
+
16
+ // try {
17
+ // jest.unstable_mockModule('@nestjs/graphql', () => {
18
+ // class Fake {}
19
+ // return {
20
+ // ...jest.requireActual<any>('@nestjs/graphql'),
21
+ // InputType: () => jest.fn(),
22
+ // OmitType: () => Fake,
23
+ // PickType: () => Fake,
24
+ // PartialType: () => Fake,
25
+ // IntersectionType: () => Fake,
26
+ // };
27
+ // });
28
+ // // eslint-disable-next-line no-console
29
+ // console.debug('Mocked @nestjs/graphql');
30
+ // } catch (e) {
31
+ // // eslint-disable-next-line no-console
32
+ // console.debug("Can't mock @nestjs/graphql. Not installed?");
33
+ // }
34
+
35
+ // jest.mock('@nestjs/common', () => {
36
+ // return {
37
+ // ...jest.requireActual<any>('@nestjs/common'),
38
+ // Injectable: () => jest.fn(),
39
+ // };
40
+ // });
41
+
42
+
43
+ jest.mock('@nestjs/graphql', () => {
44
+ const actual = jest.requireActual('@nestjs/graphql');
45
+ const mockedModule = Object.assign({}, actual);
46
+ const decorators = [
47
+ 'Args', 'Field', 'Query', 'Mutation', 'Resolver', 'InputType', 'ObjectType',
48
+ 'InterfaceType', 'ResolveField', 'HideField', 'Directive', 'registerEnumType', 'IntersectionType'
49
+ ];
50
+ for (const name of decorators) {
51
+ if (actual[name]) {
52
+ mockedModule[name] = jest.fn().mockImplementation((...args) => {
53
+ return actual[name](...args);
54
+ });
55
+ }
56
+ }
57
+ return mockedModule;
58
+ });
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@nest-yalc-2/jest-config",
3
+ "version": "2.2.2",
4
+ "description": "",
5
+ "main": "./index.ts",
6
+ "exports": {
7
+ ".": "./dist/src/index.js",
8
+ "./*": "./dist/src/*"
9
+ },
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "author": "Autistic_Intelligence",
14
+ "license": "MIT",
15
+ "types": "./index.ts",
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "tslib": "^2.6.3"
21
+ },
22
+ "keywords": [
23
+ "nestjs",
24
+ "yalc",
25
+ "framework",
26
+ "jest config"
27
+ ]
28
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../tsconfig.dev.json"
3
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "esModuleInterop": false,
5
+ "allowSyntheticDefaultImports": true,
6
+ "moduleResolution": "node",
7
+ "module": "CommonJS",
8
+ }
9
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": "../../tsconfig.dev.json"
3
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "esModuleInterop": false,
5
+ "allowSyntheticDefaultImports": true,
6
+ "moduleResolution": "node",
7
+ "module": "CommonJS",
8
+ }
9
+ }