@newmo/graphql-fake-core 0.24.1 → 0.25.0
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.
- package/dist/esm/code-generator.d.ts.map +1 -1
- package/dist/esm/code-generator.js +18 -14
- package/dist/esm/code-generator.js.map +1 -1
- package/dist/esm/config.d.ts +138 -28
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +66 -42
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/schema-scanner.d.ts.map +1 -1
- package/dist/esm/schema-scanner.js +26 -11
- package/dist/esm/schema-scanner.js.map +1 -1
- package/package.json +2 -2
- package/src/code-generator.ts +18 -14
- package/src/config.ts +191 -71
- package/src/index.ts +2 -2
- package/src/schema-scanner.ts +36 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAER,gBAAgB,EAGhB,QAAQ,EAEX,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;CACxD,GAAG,MAAM,CAAC;AACX,eAAO,MAAM,4BAA4B,GAAI,kBAAkB,gBAAgB,KAAG,MAQjF,CAAC;AACF,eAAO,MAAM,yBAAyB,GAAI,kBAEvC;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB,KAAG,MAGH,CAAC;AACF,eAAO,MAAM,2BAA2B,GAAI,qCAIzC;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB,KAAG,
|
|
1
|
+
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAER,gBAAgB,EAGhB,QAAQ,EAEX,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;CACxD,GAAG,MAAM,CAAC;AACX,eAAO,MAAM,4BAA4B,GAAI,kBAAkB,gBAAgB,KAAG,MAQjF,CAAC;AACF,eAAO,MAAM,yBAAyB,GAAI,kBAEvC;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB,KAAG,MAGH,CAAC;AACF,eAAO,MAAM,2BAA2B,GAAI,qCAIzC;IACC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAClB,KAAG,MAgBH,CAAC;AAyIF,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CA2BpF"}
|
|
@@ -13,16 +13,20 @@ export const generateEnumReferenceCode = ({ rawTypeName, }) => {
|
|
|
13
13
|
};
|
|
14
14
|
export const generateCreateReferenceCode = ({ fieldName, rawTypeName, config, }) => {
|
|
15
15
|
/**
|
|
16
|
-
* Track type visit count to prevent exponential explosion
|
|
17
|
-
* Instead of using a global depth counter, we track how many times each specific type
|
|
18
|
-
* has been visited in the current path.
|
|
16
|
+
* Track both depth and type visit count to prevent exponential explosion.
|
|
19
17
|
*
|
|
20
|
-
*
|
|
21
|
-
* -
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* - depth: Total nesting depth across all types (prevents A -> B -> C -> D... explosion)
|
|
19
|
+
* - typeVisitCount: How many times each specific type has been visited (prevents User -> User -> User... recursion)
|
|
20
|
+
*
|
|
21
|
+
* Example: For User -> User recursion with maxTypeRecursion=2, maxDepth=9:
|
|
22
|
+
* - First User: depth=0, typeVisitCount["User"] = 0, creates User
|
|
23
|
+
* - Second User: depth=1, typeVisitCount["User"] = 1, creates User
|
|
24
|
+
* - Third User: depth=2, typeVisitCount["User"] = 2, returns undefined (stops by typeVisitCount)
|
|
25
|
+
*
|
|
26
|
+
* Example: For A -> B -> C -> D -> E -> F -> G -> H -> I -> J with maxDepth=9:
|
|
27
|
+
* - Stops at depth 9, regardless of type
|
|
24
28
|
*/
|
|
25
|
-
return `((typeVisitCount["${rawTypeName}"] ?? 0) < ${config.maxTypeRecursion} ? create${rawTypeName}({ defaultFields: defaultFields?.${fieldName} ?? {}, typeVisitCount: { ...typeVisitCount, "${rawTypeName}": (typeVisitCount["${rawTypeName}"] ?? 0) + 1 } }) : undefined)`;
|
|
29
|
+
return `(depth < ${config.mock.maxDepth} && (typeVisitCount["${rawTypeName}"] ?? 0) < ${config.mock.maxTypeRecursion} ? create${rawTypeName}({ defaultFields: defaultFields?.${fieldName} ?? {}, depth: depth + 1, typeVisitCount: { ...typeVisitCount, "${rawTypeName}": (typeVisitCount["${rawTypeName}"] ?? 0) + 1 } }) : undefined)`;
|
|
26
30
|
};
|
|
27
31
|
// GraphQL AST Limitations
|
|
28
32
|
// GraphQL ASTs do not distinguish between object references and enum references.
|
|
@@ -59,15 +63,15 @@ ${indent}};
|
|
|
59
63
|
`.trim();
|
|
60
64
|
if (config.outputType === "commonjs") {
|
|
61
65
|
return `
|
|
62
|
-
function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) } = {}) {
|
|
66
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
63
67
|
${functionBodyCode}
|
|
64
68
|
}
|
|
65
69
|
exports.create${rawName} = create${rawName};
|
|
66
70
|
`.trim();
|
|
67
71
|
}
|
|
68
72
|
return `
|
|
69
|
-
export function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) }${isTypescript
|
|
70
|
-
? `: { defaultFields?: Partial<${name}>, typeVisitCount?: Record<string, number> }`
|
|
73
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }${isTypescript
|
|
74
|
+
? `: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> }`
|
|
71
75
|
: ""} = {})${isTypescript ? `: ${name}` : ""} {
|
|
72
76
|
${functionBodyCode}
|
|
73
77
|
}
|
|
@@ -90,7 +94,7 @@ function generateImportTypeCode(config, typeInfos) {
|
|
|
90
94
|
.filter(({ type }) => type === "object")
|
|
91
95
|
.map(({ name }) => `${indent}${name}`)
|
|
92
96
|
.join(",\n");
|
|
93
|
-
return `import type {
|
|
97
|
+
return `import type {
|
|
94
98
|
${joinedTypeNames}
|
|
95
99
|
} from '${config.typesFile}';`;
|
|
96
100
|
}
|
|
@@ -137,13 +141,13 @@ ${indent}${indent}...${generateCreateReferenceCode({
|
|
|
137
141
|
`.trim();
|
|
138
142
|
if (config.outputType === "typescript") {
|
|
139
143
|
return `
|
|
140
|
-
export function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) }: { defaultFields?: Partial<${name}>, typeVisitCount?: Record<string, number> } = {}): ${name} {
|
|
144
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> } = {}): ${name} {
|
|
141
145
|
${functionBodyCode}
|
|
142
146
|
}
|
|
143
147
|
`.trim();
|
|
144
148
|
}
|
|
145
149
|
return `
|
|
146
|
-
function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) } = {}) {
|
|
150
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
147
151
|
${functionBodyCode}
|
|
148
152
|
}`;
|
|
149
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,gBAAkC,EAAU,EAAE;IACvF,IAAI,OAAO,IAAI,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,YAAY,IAAI,gBAAgB,EAAE,CAAC;QACnC,OAAO,gBAAgB,CAAC,UAAU,CAAC;IACvC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EACtC,WAAW,GAKd,EAAU,EAAE;IACT,4CAA4C;IAC5C,OAAO,iBAAiB,WAAW,MAAM,CAAC;AAC9C,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EACxC,SAAS,EACT,WAAW,EACX,MAAM,GAKT,EAAU,EAAE;IACT
|
|
1
|
+
{"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -1,30 +1,47 @@
|
|
|
1
1
|
import type { RawTypesConfig } from "@graphql-codegen/visitor-plugin-common";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Mock data generation options (user input - all fields optional).
|
|
4
|
+
*
|
|
5
|
+
* Mock generation uses two complementary depth controls:
|
|
6
|
+
* - `maxDepth`: Limits total nesting depth across ALL types (A → B → C → D stops at depth limit)
|
|
7
|
+
* - `maxTypeRecursion`: Limits how many times the SAME type can appear in a chain (User → User → User)
|
|
8
|
+
*
|
|
9
|
+
* Both conditions must pass for generation to continue:
|
|
10
|
+
* `depth < maxDepth && typeVisitCount[type] < maxTypeRecursion`
|
|
11
|
+
*/
|
|
12
|
+
export type RawMockConfig = {
|
|
3
13
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
14
|
+
* Maximum total nesting depth across all types.
|
|
15
|
+
* Prevents deep chains like: Query → Book → Author → Publisher → Address → Country → ...
|
|
16
|
+
* @default 9
|
|
17
|
+
* @example
|
|
18
|
+
* // With maxDepth: 3, generation stops at depth 3 regardless of type
|
|
19
|
+
* // Query(0) → Book(1) → Author(2) → Publisher(3) → stops
|
|
7
20
|
*/
|
|
8
|
-
|
|
9
|
-
skipTypename?: RawTypesConfig["skipTypename"] | undefined;
|
|
10
|
-
namingConvention?: RawTypesConfig["namingConvention"] | undefined;
|
|
11
|
-
typesPrefix?: RawTypesConfig["typesPrefix"] | undefined;
|
|
12
|
-
typesSuffix?: RawTypesConfig["typesSuffix"] | undefined;
|
|
21
|
+
maxDepth?: number | undefined;
|
|
13
22
|
/**
|
|
14
|
-
* Maximum
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
23
|
+
* Maximum times a specific type can be visited in a single path.
|
|
24
|
+
* Prevents same-type recursion like: User → User → User → ...
|
|
25
|
+
* @default 2
|
|
26
|
+
* @example
|
|
27
|
+
* // With maxTypeRecursion: 2
|
|
28
|
+
* // User(visit:1) → friends: User(visit:2) → friends: undefined (stops)
|
|
19
29
|
*/
|
|
20
30
|
maxTypeRecursion?: number | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Number of elements to generate for array/list fields.
|
|
33
|
+
* @default 3
|
|
34
|
+
*/
|
|
35
|
+
listLength?: number | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Default values for GraphQL scalar types.
|
|
38
|
+
*/
|
|
21
39
|
defaultValues?: {
|
|
22
40
|
String?: string | undefined;
|
|
23
41
|
Int?: number | undefined;
|
|
24
42
|
Float?: number | undefined;
|
|
25
43
|
Boolean?: boolean | undefined;
|
|
26
44
|
ID?: string | undefined;
|
|
27
|
-
listLength?: number | undefined;
|
|
28
45
|
CustomScalar?: {
|
|
29
46
|
/**
|
|
30
47
|
* CustomScalar default expression
|
|
@@ -43,33 +60,126 @@ export type RawConfig = {
|
|
|
43
60
|
};
|
|
44
61
|
} | undefined;
|
|
45
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Code generation config (user input - all fields optional).
|
|
65
|
+
* Used by graphql-codegen plugin to generate mock factory functions.
|
|
66
|
+
*/
|
|
67
|
+
export type RawConfig = {
|
|
68
|
+
/**
|
|
69
|
+
* Path to type definitions file generated by graphql-codegen client preset.
|
|
70
|
+
* Required for TypeScript output.
|
|
71
|
+
* @example "typeFile: "./graphql"
|
|
72
|
+
*/
|
|
73
|
+
typesFile?: string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Whether to skip __typename field in generated types.
|
|
76
|
+
* @see https://the-guild.dev/graphql/codegen/plugins/typescript/typescript#skiptypename
|
|
77
|
+
*/
|
|
78
|
+
skipTypename?: RawTypesConfig["skipTypename"] | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Naming convention for generated types.
|
|
81
|
+
* @see https://the-guild.dev/graphql/codegen/plugins/typescript/typescript#namingconvention
|
|
82
|
+
*/
|
|
83
|
+
namingConvention?: RawTypesConfig["namingConvention"] | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Prefix for generated type names.
|
|
86
|
+
*/
|
|
87
|
+
typesPrefix?: RawTypesConfig["typesPrefix"] | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Suffix for generated type names.
|
|
90
|
+
*/
|
|
91
|
+
typesSuffix?: RawTypesConfig["typesSuffix"] | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Mock data generation options.
|
|
94
|
+
* Controls depth limits, list lengths, and default scalar values.
|
|
95
|
+
*/
|
|
96
|
+
mock?: RawMockConfig | undefined;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Default values for mock generation options.
|
|
100
|
+
*/
|
|
101
|
+
export declare const MockDefaults: {
|
|
102
|
+
/** @see RawMockConfig.maxDepth */
|
|
103
|
+
readonly maxDepth: 9;
|
|
104
|
+
/** @see RawMockConfig.maxTypeRecursion */
|
|
105
|
+
readonly maxTypeRecursion: 2;
|
|
106
|
+
/** @see RawMockConfig.listLength */
|
|
107
|
+
readonly listLength: 3;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Default values for GraphQL scalar types.
|
|
111
|
+
*/
|
|
46
112
|
export declare const DefaultValues: {
|
|
47
|
-
String: string;
|
|
48
|
-
Int:
|
|
49
|
-
Float:
|
|
50
|
-
Boolean:
|
|
51
|
-
ID:
|
|
52
|
-
listLength: number;
|
|
113
|
+
readonly String: "string";
|
|
114
|
+
readonly Int: 12;
|
|
115
|
+
readonly Float: 12.3;
|
|
116
|
+
readonly Boolean: true;
|
|
117
|
+
readonly ID: "xxxx-xxxx-xxxx-xxxx";
|
|
53
118
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Mock data generation options (normalized - all fields required).
|
|
121
|
+
* This is the internal config type with defaults applied.
|
|
122
|
+
*
|
|
123
|
+
* @see RawMockConfig for user-facing config with optional fields
|
|
124
|
+
*/
|
|
125
|
+
export type MockConfig = {
|
|
126
|
+
/**
|
|
127
|
+
* Maximum total nesting depth across all types.
|
|
128
|
+
* @see RawMockConfig.maxDepth
|
|
129
|
+
*/
|
|
130
|
+
maxDepth: number;
|
|
131
|
+
/**
|
|
132
|
+
* Maximum times a specific type can be visited in a single path.
|
|
133
|
+
* @see RawMockConfig.maxTypeRecursion
|
|
134
|
+
*/
|
|
60
135
|
maxTypeRecursion: number;
|
|
136
|
+
/**
|
|
137
|
+
* Number of elements to generate for array/list fields.
|
|
138
|
+
*/
|
|
139
|
+
listLength: number;
|
|
140
|
+
/**
|
|
141
|
+
* Default values for GraphQL scalar types.
|
|
142
|
+
*/
|
|
61
143
|
defaultValues: {
|
|
144
|
+
/** Default value for String scalar */
|
|
62
145
|
String: string;
|
|
146
|
+
/** Default value for Int scalar */
|
|
63
147
|
Int: number;
|
|
148
|
+
/** Default value for Float scalar */
|
|
64
149
|
Float: number;
|
|
150
|
+
/** Default value for Boolean scalar */
|
|
65
151
|
Boolean: boolean;
|
|
152
|
+
/** Default value for ID scalar */
|
|
66
153
|
ID: string;
|
|
67
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Default values for custom scalars.
|
|
156
|
+
* Key is the scalar name, value is a JavaScript expression.
|
|
157
|
+
*/
|
|
68
158
|
CustomScalar?: {
|
|
69
159
|
[key: string]: string;
|
|
70
160
|
};
|
|
71
161
|
};
|
|
72
162
|
};
|
|
163
|
+
/**
|
|
164
|
+
* Code generation config (normalized - all fields required).
|
|
165
|
+
* This is the internal config type with defaults applied.
|
|
166
|
+
*
|
|
167
|
+
* @see RawConfig for user-facing config with optional fields
|
|
168
|
+
*/
|
|
169
|
+
export type Config = {
|
|
170
|
+
/** Path to type definitions file */
|
|
171
|
+
typesFile: string;
|
|
172
|
+
/** Whether to skip __typename field */
|
|
173
|
+
skipTypename: Exclude<RawTypesConfig["skipTypename"], undefined>;
|
|
174
|
+
/** Prefix for generated type names */
|
|
175
|
+
typesPrefix: Exclude<RawTypesConfig["typesPrefix"], undefined>;
|
|
176
|
+
/** Suffix for generated type names */
|
|
177
|
+
typesSuffix: Exclude<RawTypesConfig["typesSuffix"], undefined>;
|
|
178
|
+
/** Naming convention for generated types */
|
|
179
|
+
namingConvention: Exclude<RawTypesConfig["namingConvention"], undefined>;
|
|
180
|
+
/** Mock data generation options (normalized) */
|
|
181
|
+
mock: MockConfig;
|
|
182
|
+
};
|
|
73
183
|
export declare function validateConfig(rawConfig: unknown, outputType?: "typescript" | "javascript"): asserts rawConfig is RawConfig;
|
|
74
184
|
export declare function normalizeConfig(rawConfig: RawConfig): Config;
|
|
75
185
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/esm/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/config.js
CHANGED
|
@@ -1,59 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default values for mock generation options.
|
|
3
|
+
*/
|
|
4
|
+
export const MockDefaults = {
|
|
5
|
+
/** @see RawMockConfig.maxDepth */
|
|
6
|
+
maxDepth: 9,
|
|
7
|
+
/** @see RawMockConfig.maxTypeRecursion */
|
|
8
|
+
maxTypeRecursion: 2,
|
|
9
|
+
/** @see RawMockConfig.listLength */
|
|
10
|
+
listLength: 3,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Default values for GraphQL scalar types.
|
|
14
|
+
*/
|
|
1
15
|
export const DefaultValues = {
|
|
2
16
|
String: "string",
|
|
3
17
|
Int: 12,
|
|
4
18
|
Float: 12.3,
|
|
5
19
|
Boolean: true,
|
|
6
20
|
ID: "xxxx-xxxx-xxxx-xxxx",
|
|
7
|
-
listLength: 3,
|
|
8
21
|
};
|
|
9
22
|
export function validateConfig(rawConfig, outputType = "javascript") {
|
|
10
|
-
// defaultValues type validations
|
|
11
23
|
if (rawConfig === null || rawConfig === undefined) {
|
|
12
|
-
throw new Error("config
|
|
24
|
+
throw new Error("config must be an object");
|
|
13
25
|
}
|
|
14
26
|
if (typeof rawConfig !== "object") {
|
|
15
|
-
throw new Error("config
|
|
27
|
+
throw new Error("config must be an object");
|
|
16
28
|
}
|
|
17
29
|
if (outputType === "typescript") {
|
|
18
30
|
if (!("typesFile" in rawConfig)) {
|
|
19
31
|
throw new Error("config.typesFile is required");
|
|
20
32
|
}
|
|
21
33
|
}
|
|
22
|
-
if ("
|
|
23
|
-
if (typeof rawConfig.
|
|
24
|
-
throw new Error("config.
|
|
25
|
-
}
|
|
26
|
-
const defaultValues = rawConfig.defaultValues;
|
|
27
|
-
if (defaultValues.String !== undefined && typeof defaultValues.String !== "string") {
|
|
28
|
-
throw new Error("config.defaultValues.String must be a string");
|
|
34
|
+
if ("mock" in rawConfig && rawConfig.mock !== undefined) {
|
|
35
|
+
if (typeof rawConfig.mock !== "object") {
|
|
36
|
+
throw new Error("config.mock must be an object");
|
|
29
37
|
}
|
|
30
|
-
|
|
31
|
-
|
|
38
|
+
const mock = rawConfig.mock;
|
|
39
|
+
if (mock.maxDepth !== undefined && typeof mock.maxDepth !== "number") {
|
|
40
|
+
throw new Error("config.mock.maxDepth must be a number");
|
|
32
41
|
}
|
|
33
|
-
if (
|
|
34
|
-
throw new Error("config.
|
|
42
|
+
if (mock.maxDepth !== undefined && mock.maxDepth < 1) {
|
|
43
|
+
throw new Error("config.mock.maxDepth must be at least 1");
|
|
35
44
|
}
|
|
36
|
-
if (
|
|
37
|
-
throw new Error("config.
|
|
45
|
+
if (mock.maxTypeRecursion !== undefined && typeof mock.maxTypeRecursion !== "number") {
|
|
46
|
+
throw new Error("config.mock.maxTypeRecursion must be a number");
|
|
38
47
|
}
|
|
39
|
-
if (
|
|
40
|
-
throw new Error("config.
|
|
48
|
+
if (mock.maxTypeRecursion !== undefined && mock.maxTypeRecursion < 1) {
|
|
49
|
+
throw new Error("config.mock.maxTypeRecursion must be at least 1");
|
|
41
50
|
}
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
throw new Error("config.defaultValues.listLength must be a number");
|
|
45
|
-
}
|
|
46
|
-
if (defaultValues.CustomScalar !== undefined &&
|
|
47
|
-
typeof defaultValues.CustomScalar !== "object") {
|
|
48
|
-
throw new Error("config.defaultValues.CustomScalar must be an object");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if ("maxTypeRecursion" in rawConfig) {
|
|
52
|
-
if (typeof rawConfig.maxTypeRecursion !== "number") {
|
|
53
|
-
throw new Error("config.maxTypeRecursion must be a number");
|
|
51
|
+
if (mock.listLength !== undefined && typeof mock.listLength !== "number") {
|
|
52
|
+
throw new Error("config.mock.listLength must be a number");
|
|
54
53
|
}
|
|
55
|
-
if (
|
|
56
|
-
|
|
54
|
+
if (mock.defaultValues !== undefined) {
|
|
55
|
+
if (typeof mock.defaultValues !== "object") {
|
|
56
|
+
throw new Error("config.mock.defaultValues must be an object");
|
|
57
|
+
}
|
|
58
|
+
const defaultValues = mock.defaultValues;
|
|
59
|
+
if (defaultValues.String !== undefined && typeof defaultValues.String !== "string") {
|
|
60
|
+
throw new Error("config.mock.defaultValues.String must be a string");
|
|
61
|
+
}
|
|
62
|
+
if (defaultValues.Int !== undefined && typeof defaultValues.Int !== "number") {
|
|
63
|
+
throw new Error("config.mock.defaultValues.Int must be a number");
|
|
64
|
+
}
|
|
65
|
+
if (defaultValues.Float !== undefined && typeof defaultValues.Float !== "number") {
|
|
66
|
+
throw new Error("config.mock.defaultValues.Float must be a number");
|
|
67
|
+
}
|
|
68
|
+
if (defaultValues.Boolean !== undefined && typeof defaultValues.Boolean !== "boolean") {
|
|
69
|
+
throw new Error("config.mock.defaultValues.Boolean must be a boolean");
|
|
70
|
+
}
|
|
71
|
+
if (defaultValues.ID !== undefined && typeof defaultValues.ID !== "string") {
|
|
72
|
+
throw new Error("config.mock.defaultValues.ID must be a string");
|
|
73
|
+
}
|
|
74
|
+
if (defaultValues.CustomScalar !== undefined &&
|
|
75
|
+
typeof defaultValues.CustomScalar !== "object") {
|
|
76
|
+
throw new Error("config.mock.defaultValues.CustomScalar must be an object");
|
|
77
|
+
}
|
|
57
78
|
}
|
|
58
79
|
}
|
|
59
80
|
}
|
|
@@ -64,15 +85,18 @@ export function normalizeConfig(rawConfig) {
|
|
|
64
85
|
typesPrefix: rawConfig.typesPrefix ?? "",
|
|
65
86
|
typesSuffix: rawConfig.typesSuffix ?? "",
|
|
66
87
|
namingConvention: rawConfig.namingConvention ?? "",
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
88
|
+
mock: {
|
|
89
|
+
maxDepth: rawConfig.mock?.maxDepth ?? MockDefaults.maxDepth,
|
|
90
|
+
maxTypeRecursion: rawConfig.mock?.maxTypeRecursion ?? MockDefaults.maxTypeRecursion,
|
|
91
|
+
listLength: rawConfig.mock?.listLength ?? MockDefaults.listLength,
|
|
92
|
+
defaultValues: {
|
|
93
|
+
String: rawConfig.mock?.defaultValues?.String ?? DefaultValues.String,
|
|
94
|
+
Int: rawConfig.mock?.defaultValues?.Int ?? DefaultValues.Int,
|
|
95
|
+
Float: rawConfig.mock?.defaultValues?.Float ?? DefaultValues.Float,
|
|
96
|
+
Boolean: rawConfig.mock?.defaultValues?.Boolean ?? DefaultValues.Boolean,
|
|
97
|
+
ID: rawConfig.mock?.defaultValues?.ID ?? DefaultValues.ID,
|
|
98
|
+
CustomScalar: rawConfig.mock?.defaultValues?.CustomScalar ?? {},
|
|
99
|
+
},
|
|
76
100
|
},
|
|
77
101
|
};
|
|
78
102
|
}
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { ConfigWithOutput } from "./code-generator.js";
|
|
2
2
|
export { generateCode } from "./code-generator.js";
|
|
3
|
-
export type { Config, RawConfig } from "./config.js";
|
|
4
|
-
export { normalizeConfig, validateConfig } from "./config.js";
|
|
3
|
+
export type { Config, MockConfig, RawConfig, RawMockConfig } from "./config.js";
|
|
4
|
+
export { DefaultValues, MockDefaults, normalizeConfig, validateConfig } from "./config.js";
|
|
5
5
|
export type { CreateMockOptions, CreateMockResult, MockObject } from "./createMock.js";
|
|
6
6
|
export { createMock } from "./createMock.js";
|
|
7
7
|
export { EXAMPLE_DIRECTIVE, extendSchema } from "./extend-schema.js";
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EACR,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,QAAQ,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { generateCode } from "./code-generator.js";
|
|
2
|
-
export { normalizeConfig, validateConfig } from "./config.js";
|
|
2
|
+
export { DefaultValues, MockDefaults, normalizeConfig, validateConfig } from "./config.js";
|
|
3
3
|
export { createMock } from "./createMock.js";
|
|
4
4
|
export { EXAMPLE_DIRECTIVE, extendSchema } from "./extend-schema.js";
|
|
5
5
|
export { getTypeInfos } from "./schema-scanner.js";
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-scanner.d.ts","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,KAAK,aAAa,EAWrB,MAAM,SAAS,CAAC;AAMjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAsC1C,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACvD,KAAK,UAAU,GAAG,cAAc,EAAE,CAAC;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAEhC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-scanner.d.ts","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"AACA,OAAO,EAIH,KAAK,aAAa,EAWrB,MAAM,SAAS,CAAC;AAMjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAsC1C,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACvD,KAAK,UAAU,GAAG,cAAc,EAAE,CAAC;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;AAC/D,MAAM,MAAM,qBAAqB,GAAG;IAEhC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;CACpD,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,0BAA0B,CAAC;AA8dlF,KAAK,SAAS,GAAG;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC/C,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,QAAQ,GACd,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,aAAa,GACb,cAAc,CAAC;AAmMrB,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,EAAE,CAkB9E"}
|
|
@@ -81,16 +81,16 @@ function valueOfNode(value) {
|
|
|
81
81
|
const typeToFunction = ({ convertedTypeName, fieldName, type, config, idFactory, context, }) => {
|
|
82
82
|
switch (type) {
|
|
83
83
|
case "String":
|
|
84
|
-
return `"${config.defaultValues.String}"`;
|
|
84
|
+
return `"${config.mock.defaultValues.String}"`;
|
|
85
85
|
case "Int":
|
|
86
|
-
return `${config.defaultValues.Int}`;
|
|
86
|
+
return `${config.mock.defaultValues.Int}`;
|
|
87
87
|
case "Float":
|
|
88
|
-
return `${config.defaultValues.Float}`;
|
|
88
|
+
return `${config.mock.defaultValues.Float}`;
|
|
89
89
|
case "Boolean":
|
|
90
|
-
return `${config.defaultValues.Boolean ? "true" : "false"}`;
|
|
90
|
+
return `${config.mock.defaultValues.Boolean ? "true" : "false"}`;
|
|
91
91
|
case "ID": {
|
|
92
92
|
const pathOfField = `${convertedTypeName}.${fieldName}`;
|
|
93
|
-
return `${idFactory(config.defaultValues.ID, pathOfField)}`;
|
|
93
|
+
return `${idFactory(config.mock.defaultValues.ID, pathOfField)}`;
|
|
94
94
|
}
|
|
95
95
|
default: {
|
|
96
96
|
// if enum type(name is equaled) is defined, reference to the enum
|
|
@@ -110,20 +110,21 @@ const typeToFunction = ({ convertedTypeName, fieldName, type, config, idFactory,
|
|
|
110
110
|
}
|
|
111
111
|
// If dose not have default value, throw an error
|
|
112
112
|
const USAGE = `
|
|
113
|
-
|
|
113
|
+
mock: {
|
|
114
114
|
defaultValues: {
|
|
115
115
|
CustomScalar: {
|
|
116
116
|
${type}: "fake default value"
|
|
117
117
|
}
|
|
118
|
+
}
|
|
118
119
|
}
|
|
119
120
|
`;
|
|
120
|
-
if (!config.defaultValues.CustomScalar) {
|
|
121
|
+
if (!config.mock.defaultValues.CustomScalar) {
|
|
121
122
|
throw new Error(`Custom scalar option is not defined in config for ${type}
|
|
122
123
|
|
|
123
124
|
${USAGE}
|
|
124
125
|
`);
|
|
125
126
|
}
|
|
126
|
-
const fakeDefaultValue = config.defaultValues.CustomScalar[type];
|
|
127
|
+
const fakeDefaultValue = config.mock.defaultValues.CustomScalar[type];
|
|
127
128
|
if (!fakeDefaultValue) {
|
|
128
129
|
throw new Error(`Custom scalar type ${type} must have default value in config
|
|
129
130
|
|
|
@@ -142,15 +143,29 @@ ${USAGE}
|
|
|
142
143
|
}
|
|
143
144
|
};
|
|
144
145
|
const typeToFunctionWithArray = ({ convertedTypeName, fieldName, type, config, idFactory, context, }) => {
|
|
145
|
-
//
|
|
146
|
-
|
|
146
|
+
// For primitive types and enums, no recursion check needed
|
|
147
|
+
const primitiveTypes = ["String", "Int", "Float", "Boolean", "ID"];
|
|
148
|
+
if (primitiveTypes.includes(type) ||
|
|
149
|
+
context.enumMap.has(type) ||
|
|
150
|
+
context.customScalarMap.has(type)) {
|
|
151
|
+
return `Array.from({ length: ${config.mock.listLength} }).map(() => ${typeToFunction({
|
|
152
|
+
convertedTypeName,
|
|
153
|
+
fieldName: fieldName,
|
|
154
|
+
type: type,
|
|
155
|
+
config: config,
|
|
156
|
+
idFactory: idFactory,
|
|
157
|
+
context,
|
|
158
|
+
})})`;
|
|
159
|
+
}
|
|
160
|
+
// For object types, check depth and typeVisitCount before creating the array to avoid unnecessary memory allocation
|
|
161
|
+
return `(depth < ${config.mock.maxDepth} && (typeVisitCount["${type}"] ?? 0) < ${config.mock.maxTypeRecursion} ? Array.from({ length: ${config.mock.listLength} }).map(() => ${typeToFunction({
|
|
147
162
|
convertedTypeName,
|
|
148
163
|
fieldName: fieldName,
|
|
149
164
|
type: type,
|
|
150
165
|
config: config,
|
|
151
166
|
idFactory: idFactory,
|
|
152
167
|
context,
|
|
153
|
-
})}).filter(Boolean)`;
|
|
168
|
+
})}).filter(Boolean) : [])`;
|
|
154
169
|
};
|
|
155
170
|
// NamedType/ListType handling
|
|
156
171
|
const nodeToExpression = ({ convertedTypeName, fieldName, currentNode, isArray = false, config, idFactory, context, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-scanner.js","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-scanner.js","sourceRoot":"","sources":["../../src/schema-scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newmo/graphql-fake-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "GraphQL fake core library",
|
|
6
6
|
"keywords": [
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"access": "public",
|
|
64
64
|
"registry": "https://registry.npmjs.org/"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "d86dc669a3978f3c46f86c0d2e84b4d2c8f9311a"
|
|
67
67
|
}
|
package/src/code-generator.ts
CHANGED
|
@@ -40,16 +40,20 @@ export const generateCreateReferenceCode = ({
|
|
|
40
40
|
config: Config;
|
|
41
41
|
}): string => {
|
|
42
42
|
/**
|
|
43
|
-
* Track type visit count to prevent exponential explosion
|
|
44
|
-
* Instead of using a global depth counter, we track how many times each specific type
|
|
45
|
-
* has been visited in the current path.
|
|
43
|
+
* Track both depth and type visit count to prevent exponential explosion.
|
|
46
44
|
*
|
|
47
|
-
*
|
|
48
|
-
* -
|
|
49
|
-
*
|
|
50
|
-
*
|
|
45
|
+
* - depth: Total nesting depth across all types (prevents A -> B -> C -> D... explosion)
|
|
46
|
+
* - typeVisitCount: How many times each specific type has been visited (prevents User -> User -> User... recursion)
|
|
47
|
+
*
|
|
48
|
+
* Example: For User -> User recursion with maxTypeRecursion=2, maxDepth=9:
|
|
49
|
+
* - First User: depth=0, typeVisitCount["User"] = 0, creates User
|
|
50
|
+
* - Second User: depth=1, typeVisitCount["User"] = 1, creates User
|
|
51
|
+
* - Third User: depth=2, typeVisitCount["User"] = 2, returns undefined (stops by typeVisitCount)
|
|
52
|
+
*
|
|
53
|
+
* Example: For A -> B -> C -> D -> E -> F -> G -> H -> I -> J with maxDepth=9:
|
|
54
|
+
* - Stops at depth 9, regardless of type
|
|
51
55
|
*/
|
|
52
|
-
return `((typeVisitCount["${rawTypeName}"] ?? 0) < ${config.maxTypeRecursion} ? create${rawTypeName}({ defaultFields: defaultFields?.${fieldName} ?? {}, typeVisitCount: { ...typeVisitCount, "${rawTypeName}": (typeVisitCount["${rawTypeName}"] ?? 0) + 1 } }) : undefined)`;
|
|
56
|
+
return `(depth < ${config.mock.maxDepth} && (typeVisitCount["${rawTypeName}"] ?? 0) < ${config.mock.maxTypeRecursion} ? create${rawTypeName}({ defaultFields: defaultFields?.${fieldName} ?? {}, depth: depth + 1, typeVisitCount: { ...typeVisitCount, "${rawTypeName}": (typeVisitCount["${rawTypeName}"] ?? 0) + 1 } }) : undefined)`;
|
|
53
57
|
};
|
|
54
58
|
|
|
55
59
|
// GraphQL AST Limitations
|
|
@@ -88,16 +92,16 @@ ${indent}};
|
|
|
88
92
|
`.trim();
|
|
89
93
|
if (config.outputType === "commonjs") {
|
|
90
94
|
return `
|
|
91
|
-
function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) } = {}) {
|
|
95
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
92
96
|
${functionBodyCode}
|
|
93
97
|
}
|
|
94
98
|
exports.create${rawName} = create${rawName};
|
|
95
99
|
`.trim();
|
|
96
100
|
}
|
|
97
101
|
return `
|
|
98
|
-
export function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) }${
|
|
102
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }${
|
|
99
103
|
isTypescript
|
|
100
|
-
? `: { defaultFields?: Partial<${name}>, typeVisitCount?: Record<string, number> }`
|
|
104
|
+
? `: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> }`
|
|
101
105
|
: ""
|
|
102
106
|
} = {})${isTypescript ? `: ${name}` : ""} {
|
|
103
107
|
${functionBodyCode}
|
|
@@ -122,7 +126,7 @@ function generateImportTypeCode(config: ConfigWithOutput, typeInfos: TypeInfo[])
|
|
|
122
126
|
.filter(({ type }) => type === "object")
|
|
123
127
|
.map(({ name }) => `${indent}${name}`)
|
|
124
128
|
.join(",\n");
|
|
125
|
-
return `import type {
|
|
129
|
+
return `import type {
|
|
126
130
|
${joinedTypeNames}
|
|
127
131
|
} from '${config.typesFile}';`;
|
|
128
132
|
}
|
|
@@ -176,13 +180,13 @@ ${indent}${indent}...${generateCreateReferenceCode({
|
|
|
176
180
|
`.trim();
|
|
177
181
|
if (config.outputType === "typescript") {
|
|
178
182
|
return `
|
|
179
|
-
export function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) }: { defaultFields?: Partial<${name}>, typeVisitCount?: Record<string, number> } = {}): ${name} {
|
|
183
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> } = {}): ${name} {
|
|
180
184
|
${functionBodyCode}
|
|
181
185
|
}
|
|
182
186
|
`.trim();
|
|
183
187
|
}
|
|
184
188
|
return `
|
|
185
|
-
function create${rawName}({ defaultFields, typeVisitCount = Object.create(null) } = {}) {
|
|
189
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
186
190
|
${functionBodyCode}
|
|
187
191
|
}`;
|
|
188
192
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
import type { RawTypesConfig } from "@graphql-codegen/visitor-plugin-common";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Mock data generation options (user input - all fields optional).
|
|
5
|
+
*
|
|
6
|
+
* Mock generation uses two complementary depth controls:
|
|
7
|
+
* - `maxDepth`: Limits total nesting depth across ALL types (A → B → C → D stops at depth limit)
|
|
8
|
+
* - `maxTypeRecursion`: Limits how many times the SAME type can appear in a chain (User → User → User)
|
|
9
|
+
*
|
|
10
|
+
* Both conditions must pass for generation to continue:
|
|
11
|
+
* `depth < maxDepth && typeVisitCount[type] < maxTypeRecursion`
|
|
12
|
+
*/
|
|
13
|
+
export type RawMockConfig = {
|
|
4
14
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
15
|
+
* Maximum total nesting depth across all types.
|
|
16
|
+
* Prevents deep chains like: Query → Book → Author → Publisher → Address → Country → ...
|
|
17
|
+
* @default 9
|
|
18
|
+
* @example
|
|
19
|
+
* // With maxDepth: 3, generation stops at depth 3 regardless of type
|
|
20
|
+
* // Query(0) → Book(1) → Author(2) → Publisher(3) → stops
|
|
8
21
|
*/
|
|
9
|
-
|
|
10
|
-
skipTypename?: RawTypesConfig["skipTypename"] | undefined;
|
|
11
|
-
namingConvention?: RawTypesConfig["namingConvention"] | undefined;
|
|
12
|
-
typesPrefix?: RawTypesConfig["typesPrefix"] | undefined;
|
|
13
|
-
typesSuffix?: RawTypesConfig["typesSuffix"] | undefined;
|
|
22
|
+
maxDepth?: number | undefined;
|
|
14
23
|
/**
|
|
15
|
-
* Maximum
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
24
|
+
* Maximum times a specific type can be visited in a single path.
|
|
25
|
+
* Prevents same-type recursion like: User → User → User → ...
|
|
26
|
+
* @default 2
|
|
27
|
+
* @example
|
|
28
|
+
* // With maxTypeRecursion: 2
|
|
29
|
+
* // User(visit:1) → friends: User(visit:2) → friends: undefined (stops)
|
|
20
30
|
*/
|
|
21
31
|
maxTypeRecursion?: number | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Number of elements to generate for array/list fields.
|
|
34
|
+
* @default 3
|
|
35
|
+
*/
|
|
36
|
+
listLength?: number | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Default values for GraphQL scalar types.
|
|
39
|
+
*/
|
|
22
40
|
defaultValues?:
|
|
23
41
|
| {
|
|
24
42
|
String?: string | undefined;
|
|
@@ -26,7 +44,6 @@ export type RawConfig = {
|
|
|
26
44
|
Float?: number | undefined;
|
|
27
45
|
Boolean?: boolean | undefined;
|
|
28
46
|
ID?: string | undefined;
|
|
29
|
-
listLength?: number | undefined;
|
|
30
47
|
CustomScalar?: {
|
|
31
48
|
/**
|
|
32
49
|
* CustomScalar default expression
|
|
@@ -47,92 +64,192 @@ export type RawConfig = {
|
|
|
47
64
|
| undefined;
|
|
48
65
|
};
|
|
49
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Code generation config (user input - all fields optional).
|
|
69
|
+
* Used by graphql-codegen plugin to generate mock factory functions.
|
|
70
|
+
*/
|
|
71
|
+
export type RawConfig = {
|
|
72
|
+
/**
|
|
73
|
+
* Path to type definitions file generated by graphql-codegen client preset.
|
|
74
|
+
* Required for TypeScript output.
|
|
75
|
+
* @example "typeFile: "./graphql"
|
|
76
|
+
*/
|
|
77
|
+
typesFile?: string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Whether to skip __typename field in generated types.
|
|
80
|
+
* @see https://the-guild.dev/graphql/codegen/plugins/typescript/typescript#skiptypename
|
|
81
|
+
*/
|
|
82
|
+
skipTypename?: RawTypesConfig["skipTypename"] | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Naming convention for generated types.
|
|
85
|
+
* @see https://the-guild.dev/graphql/codegen/plugins/typescript/typescript#namingconvention
|
|
86
|
+
*/
|
|
87
|
+
namingConvention?: RawTypesConfig["namingConvention"] | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Prefix for generated type names.
|
|
90
|
+
*/
|
|
91
|
+
typesPrefix?: RawTypesConfig["typesPrefix"] | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Suffix for generated type names.
|
|
94
|
+
*/
|
|
95
|
+
typesSuffix?: RawTypesConfig["typesSuffix"] | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* Mock data generation options.
|
|
98
|
+
* Controls depth limits, list lengths, and default scalar values.
|
|
99
|
+
*/
|
|
100
|
+
mock?: RawMockConfig | undefined;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Default values for mock generation options.
|
|
105
|
+
*/
|
|
106
|
+
export const MockDefaults = {
|
|
107
|
+
/** @see RawMockConfig.maxDepth */
|
|
108
|
+
maxDepth: 9,
|
|
109
|
+
/** @see RawMockConfig.maxTypeRecursion */
|
|
110
|
+
maxTypeRecursion: 2,
|
|
111
|
+
/** @see RawMockConfig.listLength */
|
|
112
|
+
listLength: 3,
|
|
113
|
+
} as const;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Default values for GraphQL scalar types.
|
|
117
|
+
*/
|
|
50
118
|
export const DefaultValues = {
|
|
51
119
|
String: "string",
|
|
52
120
|
Int: 12,
|
|
53
121
|
Float: 12.3,
|
|
54
122
|
Boolean: true,
|
|
55
123
|
ID: "xxxx-xxxx-xxxx-xxxx",
|
|
56
|
-
|
|
57
|
-
};
|
|
124
|
+
} as const;
|
|
58
125
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Mock data generation options (normalized - all fields required).
|
|
128
|
+
* This is the internal config type with defaults applied.
|
|
129
|
+
*
|
|
130
|
+
* @see RawMockConfig for user-facing config with optional fields
|
|
131
|
+
*/
|
|
132
|
+
export type MockConfig = {
|
|
133
|
+
/**
|
|
134
|
+
* Maximum total nesting depth across all types.
|
|
135
|
+
* @see RawMockConfig.maxDepth
|
|
136
|
+
*/
|
|
137
|
+
maxDepth: number;
|
|
138
|
+
/**
|
|
139
|
+
* Maximum times a specific type can be visited in a single path.
|
|
140
|
+
* @see RawMockConfig.maxTypeRecursion
|
|
141
|
+
*/
|
|
65
142
|
maxTypeRecursion: number;
|
|
143
|
+
/**
|
|
144
|
+
* Number of elements to generate for array/list fields.
|
|
145
|
+
*/
|
|
146
|
+
listLength: number;
|
|
147
|
+
/**
|
|
148
|
+
* Default values for GraphQL scalar types.
|
|
149
|
+
*/
|
|
66
150
|
defaultValues: {
|
|
151
|
+
/** Default value for String scalar */
|
|
67
152
|
String: string;
|
|
153
|
+
/** Default value for Int scalar */
|
|
68
154
|
Int: number;
|
|
155
|
+
/** Default value for Float scalar */
|
|
69
156
|
Float: number;
|
|
157
|
+
/** Default value for Boolean scalar */
|
|
70
158
|
Boolean: boolean;
|
|
159
|
+
/** Default value for ID scalar */
|
|
71
160
|
ID: string;
|
|
72
|
-
|
|
73
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Default values for custom scalars.
|
|
163
|
+
* Key is the scalar name, value is a JavaScript expression.
|
|
164
|
+
*/
|
|
74
165
|
CustomScalar?: {
|
|
75
|
-
// Time: "2021-01-01T00:00:00Z";
|
|
76
166
|
[key: string]: string;
|
|
77
167
|
};
|
|
78
168
|
};
|
|
79
169
|
};
|
|
80
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Code generation config (normalized - all fields required).
|
|
173
|
+
* This is the internal config type with defaults applied.
|
|
174
|
+
*
|
|
175
|
+
* @see RawConfig for user-facing config with optional fields
|
|
176
|
+
*/
|
|
177
|
+
export type Config = {
|
|
178
|
+
/** Path to type definitions file */
|
|
179
|
+
typesFile: string;
|
|
180
|
+
/** Whether to skip __typename field */
|
|
181
|
+
skipTypename: Exclude<RawTypesConfig["skipTypename"], undefined>;
|
|
182
|
+
/** Prefix for generated type names */
|
|
183
|
+
typesPrefix: Exclude<RawTypesConfig["typesPrefix"], undefined>;
|
|
184
|
+
/** Suffix for generated type names */
|
|
185
|
+
typesSuffix: Exclude<RawTypesConfig["typesSuffix"], undefined>;
|
|
186
|
+
/** Naming convention for generated types */
|
|
187
|
+
namingConvention: Exclude<RawTypesConfig["namingConvention"], undefined>;
|
|
188
|
+
/** Mock data generation options (normalized) */
|
|
189
|
+
mock: MockConfig;
|
|
190
|
+
};
|
|
191
|
+
|
|
81
192
|
export function validateConfig(
|
|
82
193
|
rawConfig: unknown,
|
|
83
194
|
outputType: "typescript" | "javascript" = "javascript",
|
|
84
195
|
): asserts rawConfig is RawConfig {
|
|
85
|
-
// defaultValues type validations
|
|
86
196
|
if (rawConfig === null || rawConfig === undefined) {
|
|
87
|
-
throw new Error("config
|
|
197
|
+
throw new Error("config must be an object");
|
|
88
198
|
}
|
|
89
199
|
if (typeof rawConfig !== "object") {
|
|
90
|
-
throw new Error("config
|
|
200
|
+
throw new Error("config must be an object");
|
|
91
201
|
}
|
|
92
202
|
if (outputType === "typescript") {
|
|
93
203
|
if (!("typesFile" in rawConfig)) {
|
|
94
204
|
throw new Error("config.typesFile is required");
|
|
95
205
|
}
|
|
96
206
|
}
|
|
97
|
-
if ("
|
|
98
|
-
if (typeof rawConfig.
|
|
99
|
-
throw new Error("config.
|
|
100
|
-
}
|
|
101
|
-
const defaultValues = rawConfig.defaultValues as Config["defaultValues"];
|
|
102
|
-
if (defaultValues.String !== undefined && typeof defaultValues.String !== "string") {
|
|
103
|
-
throw new Error("config.defaultValues.String must be a string");
|
|
207
|
+
if ("mock" in rawConfig && rawConfig.mock !== undefined) {
|
|
208
|
+
if (typeof rawConfig.mock !== "object") {
|
|
209
|
+
throw new Error("config.mock must be an object");
|
|
104
210
|
}
|
|
105
|
-
|
|
106
|
-
|
|
211
|
+
const mock = rawConfig.mock as RawMockConfig;
|
|
212
|
+
if (mock.maxDepth !== undefined && typeof mock.maxDepth !== "number") {
|
|
213
|
+
throw new Error("config.mock.maxDepth must be a number");
|
|
107
214
|
}
|
|
108
|
-
if (
|
|
109
|
-
throw new Error("config.
|
|
215
|
+
if (mock.maxDepth !== undefined && mock.maxDepth < 1) {
|
|
216
|
+
throw new Error("config.mock.maxDepth must be at least 1");
|
|
110
217
|
}
|
|
111
|
-
if (
|
|
112
|
-
throw new Error("config.
|
|
218
|
+
if (mock.maxTypeRecursion !== undefined && typeof mock.maxTypeRecursion !== "number") {
|
|
219
|
+
throw new Error("config.mock.maxTypeRecursion must be a number");
|
|
113
220
|
}
|
|
114
|
-
if (
|
|
115
|
-
throw new Error("config.
|
|
221
|
+
if (mock.maxTypeRecursion !== undefined && mock.maxTypeRecursion < 1) {
|
|
222
|
+
throw new Error("config.mock.maxTypeRecursion must be at least 1");
|
|
116
223
|
}
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
typeof defaultValues.listLength !== "number"
|
|
120
|
-
) {
|
|
121
|
-
throw new Error("config.defaultValues.listLength must be a number");
|
|
122
|
-
}
|
|
123
|
-
if (
|
|
124
|
-
defaultValues.CustomScalar !== undefined &&
|
|
125
|
-
typeof defaultValues.CustomScalar !== "object"
|
|
126
|
-
) {
|
|
127
|
-
throw new Error("config.defaultValues.CustomScalar must be an object");
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if ("maxTypeRecursion" in rawConfig) {
|
|
131
|
-
if (typeof rawConfig.maxTypeRecursion !== "number") {
|
|
132
|
-
throw new Error("config.maxTypeRecursion must be a number");
|
|
224
|
+
if (mock.listLength !== undefined && typeof mock.listLength !== "number") {
|
|
225
|
+
throw new Error("config.mock.listLength must be a number");
|
|
133
226
|
}
|
|
134
|
-
if (
|
|
135
|
-
|
|
227
|
+
if (mock.defaultValues !== undefined) {
|
|
228
|
+
if (typeof mock.defaultValues !== "object") {
|
|
229
|
+
throw new Error("config.mock.defaultValues must be an object");
|
|
230
|
+
}
|
|
231
|
+
const defaultValues = mock.defaultValues;
|
|
232
|
+
if (defaultValues.String !== undefined && typeof defaultValues.String !== "string") {
|
|
233
|
+
throw new Error("config.mock.defaultValues.String must be a string");
|
|
234
|
+
}
|
|
235
|
+
if (defaultValues.Int !== undefined && typeof defaultValues.Int !== "number") {
|
|
236
|
+
throw new Error("config.mock.defaultValues.Int must be a number");
|
|
237
|
+
}
|
|
238
|
+
if (defaultValues.Float !== undefined && typeof defaultValues.Float !== "number") {
|
|
239
|
+
throw new Error("config.mock.defaultValues.Float must be a number");
|
|
240
|
+
}
|
|
241
|
+
if (defaultValues.Boolean !== undefined && typeof defaultValues.Boolean !== "boolean") {
|
|
242
|
+
throw new Error("config.mock.defaultValues.Boolean must be a boolean");
|
|
243
|
+
}
|
|
244
|
+
if (defaultValues.ID !== undefined && typeof defaultValues.ID !== "string") {
|
|
245
|
+
throw new Error("config.mock.defaultValues.ID must be a string");
|
|
246
|
+
}
|
|
247
|
+
if (
|
|
248
|
+
defaultValues.CustomScalar !== undefined &&
|
|
249
|
+
typeof defaultValues.CustomScalar !== "object"
|
|
250
|
+
) {
|
|
251
|
+
throw new Error("config.mock.defaultValues.CustomScalar must be an object");
|
|
252
|
+
}
|
|
136
253
|
}
|
|
137
254
|
}
|
|
138
255
|
}
|
|
@@ -144,15 +261,18 @@ export function normalizeConfig(rawConfig: RawConfig): Config {
|
|
|
144
261
|
typesPrefix: rawConfig.typesPrefix ?? "",
|
|
145
262
|
typesSuffix: rawConfig.typesSuffix ?? "",
|
|
146
263
|
namingConvention: rawConfig.namingConvention ?? "",
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
264
|
+
mock: {
|
|
265
|
+
maxDepth: rawConfig.mock?.maxDepth ?? MockDefaults.maxDepth,
|
|
266
|
+
maxTypeRecursion: rawConfig.mock?.maxTypeRecursion ?? MockDefaults.maxTypeRecursion,
|
|
267
|
+
listLength: rawConfig.mock?.listLength ?? MockDefaults.listLength,
|
|
268
|
+
defaultValues: {
|
|
269
|
+
String: rawConfig.mock?.defaultValues?.String ?? DefaultValues.String,
|
|
270
|
+
Int: rawConfig.mock?.defaultValues?.Int ?? DefaultValues.Int,
|
|
271
|
+
Float: rawConfig.mock?.defaultValues?.Float ?? DefaultValues.Float,
|
|
272
|
+
Boolean: rawConfig.mock?.defaultValues?.Boolean ?? DefaultValues.Boolean,
|
|
273
|
+
ID: rawConfig.mock?.defaultValues?.ID ?? DefaultValues.ID,
|
|
274
|
+
CustomScalar: rawConfig.mock?.defaultValues?.CustomScalar ?? {},
|
|
275
|
+
},
|
|
156
276
|
},
|
|
157
277
|
};
|
|
158
278
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type { ConfigWithOutput } from "./code-generator.js";
|
|
2
2
|
export { generateCode } from "./code-generator.js";
|
|
3
|
-
export type { Config, RawConfig } from "./config.js";
|
|
4
|
-
export { normalizeConfig, validateConfig } from "./config.js";
|
|
3
|
+
export type { Config, MockConfig, RawConfig, RawMockConfig } from "./config.js";
|
|
4
|
+
export { DefaultValues, MockDefaults, normalizeConfig, validateConfig } from "./config.js";
|
|
5
5
|
export type { CreateMockOptions, CreateMockResult, MockObject } from "./createMock.js";
|
|
6
6
|
export { createMock } from "./createMock.js";
|
|
7
7
|
export { EXAMPLE_DIRECTIVE, extendSchema } from "./extend-schema.js";
|
package/src/schema-scanner.ts
CHANGED
|
@@ -130,16 +130,16 @@ const typeToFunction = ({
|
|
|
130
130
|
}): string => {
|
|
131
131
|
switch (type) {
|
|
132
132
|
case "String":
|
|
133
|
-
return `"${config.defaultValues.String}"`;
|
|
133
|
+
return `"${config.mock.defaultValues.String}"`;
|
|
134
134
|
case "Int":
|
|
135
|
-
return `${config.defaultValues.Int}`;
|
|
135
|
+
return `${config.mock.defaultValues.Int}`;
|
|
136
136
|
case "Float":
|
|
137
|
-
return `${config.defaultValues.Float}`;
|
|
137
|
+
return `${config.mock.defaultValues.Float}`;
|
|
138
138
|
case "Boolean":
|
|
139
|
-
return `${config.defaultValues.Boolean ? "true" : "false"}`;
|
|
139
|
+
return `${config.mock.defaultValues.Boolean ? "true" : "false"}`;
|
|
140
140
|
case "ID": {
|
|
141
141
|
const pathOfField = `${convertedTypeName}.${fieldName}`;
|
|
142
|
-
return `${idFactory(config.defaultValues.ID, pathOfField)}`;
|
|
142
|
+
return `${idFactory(config.mock.defaultValues.ID, pathOfField)}`;
|
|
143
143
|
}
|
|
144
144
|
default: {
|
|
145
145
|
// if enum type(name is equaled) is defined, reference to the enum
|
|
@@ -160,21 +160,22 @@ const typeToFunction = ({
|
|
|
160
160
|
|
|
161
161
|
// If dose not have default value, throw an error
|
|
162
162
|
const USAGE = `
|
|
163
|
-
|
|
163
|
+
mock: {
|
|
164
164
|
defaultValues: {
|
|
165
165
|
CustomScalar: {
|
|
166
166
|
${type}: "fake default value"
|
|
167
167
|
}
|
|
168
|
+
}
|
|
168
169
|
}
|
|
169
170
|
`;
|
|
170
|
-
if (!config.defaultValues.CustomScalar) {
|
|
171
|
+
if (!config.mock.defaultValues.CustomScalar) {
|
|
171
172
|
throw new Error(`Custom scalar option is not defined in config for ${type}
|
|
172
173
|
|
|
173
174
|
${USAGE}
|
|
174
175
|
`);
|
|
175
176
|
}
|
|
176
177
|
|
|
177
|
-
const fakeDefaultValue = config.defaultValues.CustomScalar[type];
|
|
178
|
+
const fakeDefaultValue = config.mock.defaultValues.CustomScalar[type];
|
|
178
179
|
if (!fakeDefaultValue) {
|
|
179
180
|
throw new Error(`Custom scalar type ${type} must have default value in config
|
|
180
181
|
|
|
@@ -207,15 +208,33 @@ const typeToFunctionWithArray = ({
|
|
|
207
208
|
idFactory: ReturnType<typeof createIDFactory>;
|
|
208
209
|
context: ScannerContext;
|
|
209
210
|
}): string => {
|
|
210
|
-
//
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
type
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
211
|
+
// For primitive types and enums, no recursion check needed
|
|
212
|
+
const primitiveTypes = ["String", "Int", "Float", "Boolean", "ID"];
|
|
213
|
+
if (
|
|
214
|
+
primitiveTypes.includes(type) ||
|
|
215
|
+
context.enumMap.has(type) ||
|
|
216
|
+
context.customScalarMap.has(type)
|
|
217
|
+
) {
|
|
218
|
+
return `Array.from({ length: ${config.mock.listLength} }).map(() => ${typeToFunction({
|
|
219
|
+
convertedTypeName,
|
|
220
|
+
fieldName: fieldName,
|
|
221
|
+
type: type,
|
|
222
|
+
config: config,
|
|
223
|
+
idFactory: idFactory,
|
|
224
|
+
context,
|
|
225
|
+
})})`;
|
|
226
|
+
}
|
|
227
|
+
// For object types, check depth and typeVisitCount before creating the array to avoid unnecessary memory allocation
|
|
228
|
+
return `(depth < ${config.mock.maxDepth} && (typeVisitCount["${type}"] ?? 0) < ${config.mock.maxTypeRecursion} ? Array.from({ length: ${config.mock.listLength} }).map(() => ${typeToFunction(
|
|
229
|
+
{
|
|
230
|
+
convertedTypeName,
|
|
231
|
+
fieldName: fieldName,
|
|
232
|
+
type: type,
|
|
233
|
+
config: config,
|
|
234
|
+
idFactory: idFactory,
|
|
235
|
+
context,
|
|
236
|
+
},
|
|
237
|
+
)}).filter(Boolean) : [])`;
|
|
219
238
|
};
|
|
220
239
|
// NamedType/ListType handling
|
|
221
240
|
const nodeToExpression = ({
|