@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.
@@ -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,MAYH,CAAC;AAyIF,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CA2BpF"}
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 for recursive types.
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
- * Example: For User -> User recursion with maxTypeRecursion=2:
21
- * - First User: typeVisitCount["User"] = 0, creates User
22
- * - Second User: typeVisitCount["User"] = 1, creates User
23
- * - Third User: typeVisitCount["User"] = 2, returns undefined (stops recursion)
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;;;;;;;;;OASG;IACH,OAAO,qBAAqB,WAAW,cAAc,MAAM,CAAC,gBAAgB,YAAY,WAAW,oCAAoC,SAAS,iDAAiD,WAAW,uBAAuB,WAAW,gCAAgC,CAAC;AACnR,CAAC,CAAC;AAEF,0BAA0B;AAC1B,iFAAiF;AACjF,2GAA2G;AAC3G,mEAAmE;AACnE,SAAS,uBAAuB,CAAC,MAAwB,EAAE,QAAsB;IAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;IACxD,OAAO;QACH,OAAO;EACb,QAAQ,CAAC,MAAM;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1F,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;IACjD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;GACZ,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;CACjC,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB,EAAE,QAAwB;IAC3E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;IACxD,MAAM,gBAAgB,GAAG;EAC3B,MAAM;EACN,QAAQ,CAAC,MAAM;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1F,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;IAC1D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;EACb,MAAM;CACP,CAAC,IAAI,EAAE,CAAC;IACL,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO;iBACE,OAAO;EACtB,gBAAgB;;gBAEF,OAAO,YAAY,OAAO;CACzC,CAAC,IAAI,EAAE,CAAC;IACL,CAAC;IACD,OAAO;wBACa,OAAO,2DACvB,YAAY;QACR,CAAC,CAAC,+BAA+B,IAAI,8CAA8C;QACnF,CAAC,CAAC,EACV,SAAS,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;EAC1C,gBAAgB;;CAEjB,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAwB,EAAE,QAAwB;IAC3E,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC7B,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,SAAS,OAAO,YAAY,OAAO;UACxC,OAAO,MAAM,OAAO,GAAG,CAAC;IAC9B,CAAC;IACD,OAAO,gBAAgB,OAAO,YAAY,OAAO,KAAK,CAAC;AAC3D,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAwB,EAAE,SAAqB;IAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,eAAe,GAAG,SAAS;SAC5B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;SACrC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO;EACT,eAAe;UACP,MAAM,CAAC,SAAS,IAAI,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,MAAwB;IAC7C,gBAAgB;IAChB,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC;IACxD,qCAAqC;IACrC,+BAA+B;IAC/B,wCAAwC;IACxC,OAAO;;qCAE0B,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;6BAEnE,YAAY,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EACxD,IAAI,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;;;;;;EAMpC,CAAC;AACH,CAAC;AAED,8CAA8C;AAC9C,8BAA8B;AAC9B,sDAAsD;AACtD,2EAA2E;AAC3E,SAAS,gCAAgC,CACrC,MAAwB,EACxB,QAA2C;IAE3C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,wBAAwB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,wBAAwB,CAAC,CAAC;IAChE,CAAC;IACD,wCAAwC;IACxC,8HAA8H;IAC9H,wFAAwF;IACxF,MAAM,gBAAgB,GAAG;EAC3B,MAAM;EACN,MAAM,GAAG,MAAM,gBAAgB,wBAAwB;EACvD,MAAM,GAAG,MAAM,MAAM,2BAA2B,CAAC;QAC3C,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,QAAQ,CAAC,OAAO;QAC3B,MAAM;KACT,CAAC;;CAEL,CAAC,IAAI,EAAE,CAAC;IACL,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO;wBACS,OAAO,uFAAuF,IAAI,uDAAuD,IAAI;EACnL,gBAAgB;;CAEjB,CAAC,IAAI,EAAE,CAAC;IACL,CAAC;IACD,OAAO;iBACM,OAAO;EACtB,gBAAgB;EAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAwB,EAAE,SAAqB;IACxE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QACrC,IAAI,IAAI,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,IAAI,IAAI,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,IAAI,IAAI,CAAC;QACjB,CAAC;IACL,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7D,IAAI,IAAI,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,IAAI,IAAI,CAAC;YACb,IAAI,IAAI,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,IAAI,IAAI,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"code-generator.js","sourceRoot":"","sources":["../../src/code-generator.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,47 @@
1
1
  import type { RawTypesConfig } from "@graphql-codegen/visitor-plugin-common";
2
- export type RawConfig = {
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
- * path to type definitions file
5
- * this is generated by client preset
6
- * e.g. ) "typeFile: "./graphql"
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
- typesFile?: string | undefined;
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 number of times a type can be recursively visited.
15
- * This prevents exponential explosion when generating mock data for recursive types.
16
- * For example, if User has a field `friends: [User!]!`, setting maxTypeRecursion to 2
17
- * will allow User -> User -> User but stop there.
18
- * Default is 2.
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: number;
49
- Float: number;
50
- Boolean: boolean;
51
- ID: string;
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
- export type Config = {
55
- typesFile: string;
56
- skipTypename: Exclude<RawTypesConfig["skipTypename"], undefined>;
57
- typesPrefix: Exclude<RawTypesConfig["typesPrefix"], undefined>;
58
- typesSuffix: Exclude<RawTypesConfig["typesSuffix"], undefined>;
59
- namingConvention: Exclude<RawTypesConfig["namingConvention"], undefined>;
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
- listLength: number;
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
@@ -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,SAAS,GAAG;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,cAAc,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;IAClE,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACxD,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACxD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,EACR;QACI,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC,YAAY,CAAC,EAAE;YACX;;;;;;;;;;;;eAYG;YACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACzB,CAAC;KACL,GACD,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;CAOzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,CAAC;IACjE,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/D,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/D,gBAAgB,EAAE,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QAEnB,YAAY,CAAC,EAAE;YAEX,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACzB,CAAC;KACL,CAAC;CACL,CAAC;AAEF,wBAAgB,cAAc,CAC1B,SAAS,EAAE,OAAO,EAClB,UAAU,GAAE,YAAY,GAAG,YAA2B,GACvD,OAAO,CAAC,SAAS,IAAI,SAAS,CAsDhC;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAkB5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -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.defaultValues must be an object");
24
+ throw new Error("config must be an object");
13
25
  }
14
26
  if (typeof rawConfig !== "object") {
15
- throw new Error("config.defaultValues must be an object");
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 ("defaultValues" in rawConfig) {
23
- if (typeof rawConfig.defaultValues !== "object") {
24
- throw new Error("config.defaultValues must be an object");
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
- if (defaultValues.Int !== undefined && typeof defaultValues.Int !== "number") {
31
- throw new Error("config.defaultValues.Int must be a number");
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 (defaultValues.Float !== undefined && typeof defaultValues.Float !== "number") {
34
- throw new Error("config.defaultValues.Float must be a number");
42
+ if (mock.maxDepth !== undefined && mock.maxDepth < 1) {
43
+ throw new Error("config.mock.maxDepth must be at least 1");
35
44
  }
36
- if (defaultValues.Boolean !== undefined && typeof defaultValues.Boolean !== "boolean") {
37
- throw new Error("config.defaultValues.Boolean must be a boolean");
45
+ if (mock.maxTypeRecursion !== undefined && typeof mock.maxTypeRecursion !== "number") {
46
+ throw new Error("config.mock.maxTypeRecursion must be a number");
38
47
  }
39
- if (defaultValues.ID !== undefined && typeof defaultValues.ID !== "string") {
40
- throw new Error("config.defaultValues.ID must be a string");
48
+ if (mock.maxTypeRecursion !== undefined && mock.maxTypeRecursion < 1) {
49
+ throw new Error("config.mock.maxTypeRecursion must be at least 1");
41
50
  }
42
- if (defaultValues.listLength !== undefined &&
43
- typeof defaultValues.listLength !== "number") {
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 (rawConfig.maxTypeRecursion < 1) {
56
- throw new Error("config.maxTypeRecursion must be at least 1");
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
- maxTypeRecursion: rawConfig.maxTypeRecursion ?? 2,
68
- defaultValues: {
69
- String: rawConfig.defaultValues?.String ?? DefaultValues.String,
70
- Int: rawConfig.defaultValues?.Int ?? DefaultValues.Int,
71
- Float: rawConfig.defaultValues?.Float ?? DefaultValues.Float,
72
- Boolean: rawConfig.defaultValues?.Boolean ?? DefaultValues.Boolean,
73
- ID: rawConfig.defaultValues?.ID ?? DefaultValues.ID,
74
- listLength: rawConfig.defaultValues?.listLength ?? DefaultValues.listLength,
75
- CustomScalar: rawConfig.defaultValues?.CustomScalar ?? {},
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -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";
@@ -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;AACrD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,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"}
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";
@@ -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;AAE9D,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
+ {"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;AA2clF,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"}
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
- options: {
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
- // Use .filter(Boolean) to remove undefined elements when typeVisitCount cuts off recursion
146
- return `Array.from({ length: ${config.defaultValues.listLength} }).map(() => ${typeToFunction({
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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAQH,IAAI,GAOP,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,GAC/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,eAAe,GAAG,GAAG,EAAE;IACzB,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;QACjC,OAAO,iBAAiB,IAAI,WAAW,GAAG,MAAM,CAAC;IACrD,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAU,EAAE;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,gCAAgC;IAChC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,yBAAyB;IACzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAaF,SAAS,WAAW,CAAC,KAAqB;IACtC,SAAS;IACT,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACtC,sCAAsC;YACtC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,GAAG,CAAC;QACf,CAAC,EAAE,EAAiB,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO;IACP,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAe,CAAC;IACrB,CAAC;IACD,OAAO;IACP,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,SAAS;IACT,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,OAAO;IACP,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM;IACN,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,QAAQ;IACR,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,UAAU;IACV,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,4EAA4E;IAC5E,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAqB,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,EACpB,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,OAAO,GAQV,EAAU,EAAE;IACT,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ;YACT,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAC9C,KAAK,KAAK;YACN,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QACzC,KAAK,OAAO;YACR,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3C,KAAK,SAAS;YACV,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAChE,KAAK,IAAI,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAG,GAAG,iBAAiB,IAAI,SAAS,EAAE,CAAC;YACxD,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,kEAAkE;YAClE,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,GAAG,yBAAyB,CAAC;oBAChC,SAAS;oBACT,WAAW,EAAE,IAAI;oBACjB,MAAM,EAAE,MAAM;iBACjB,CAAC,EAAE,CAAC;YACT,CAAC;YACD,8EAA8E;YAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,UAAU,EAAE,CAAC;gBACb,yDAAyD;gBACzD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,4BAA4B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC5D,CAAC;gBAED,iDAAiD;gBACjD,MAAM,KAAK,GAAG;;;;UAIpB,IAAI;;;CAGb,CAAC;gBACc,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI;;EAE3F,KAAK;CACN,CAAC,CAAC;gBACa,CAAC;gBAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI;;EAE5D,KAAK;CACN,CAAC,CAAC;gBACa,CAAC;gBACD,OAAO,gBAAgB,CAAC;YAC5B,CAAC;YACD,0BAA0B;YAC1B,OAAO,GAAG,2BAA2B,CAAC;gBAClC,SAAS;gBACT,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,MAAM;aACjB,CAAC,EAAE,CAAC;QACT,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AACF,MAAM,uBAAuB,GAAG,CAAC,EAC7B,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,OAAO,GAQV,EAAU,EAAE;IACT,2FAA2F;IAC3F,OAAO,wBAAwB,MAAM,CAAC,aAAa,CAAC,UAAU,iBAAiB,cAAc,CAAC;QAC1F,iBAAiB;QACjB,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,SAAS;QACpB,OAAO;KACV,CAAC,mBAAmB,CAAC;AAC1B,CAAC,CAAC;AACF,8BAA8B;AAC9B,MAAM,gBAAgB,GAAG,CAAC,EACtB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,OAAO,GAAG,KAAK,EACf,MAAM,EACN,SAAS,EACT,OAAO,GASV,EAA8B,EAAE;IAC7B,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACrC,OAAO,gBAAgB,CAAC;YACpB,iBAAiB;YACjB,SAAS;YACT,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,OAAO;YACP,MAAM;YACN,SAAS;YACT,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACV,OAAO;gBACH,UAAU,EAAE,uBAAuB,CAAC;oBAChC,iBAAiB;oBACjB,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;oBAC5B,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,SAAS;oBACpB,OAAO;iBACV,CAAC;aACL,CAAC;QACN,CAAC;QACD,OAAO;YACH,UAAU,EAAE,cAAc,CAAC;gBACvB,iBAAiB;gBACjB,SAAS;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK;gBAC5B,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,OAAO;aACV,CAAC;SACL,CAAC;IACN,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAC;YACpB,iBAAiB;YACjB,SAAS;YACT,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,OAAO,EAAE,IAAI;YACb,MAAM;YACN,SAAS;YACT,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG;IACjC,WAAW;IACX,eAAe;IACf,YAAY;IACZ,cAAc;IACd,gBAAgB;IAChB,QAAQ;IACR,gBAAgB;IAChB,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,SAAS;IACT,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,sBAAsB;CACzB,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,IAAoD,EAAW,EAAE;IAChF,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,SAAS,gCAAgC,CAAC,EACtC,IAAI,EACJ,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,OAAO,GAOV;IACG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,SAAS;IAC9C,CAAC,CAAC,CAAC;IACH,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO;YACH,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,qBAAqB;SAChD,CAAC;IACN,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACjD,OAAO,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,4EAA4E;IAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO;YACH,OAAO;YACP,OAAO,EAAE,gBAAgB,CAAC;gBACtB,iBAAiB;gBACjB,SAAS;gBACT,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,MAAM;gBACN,SAAS;gBACT,OAAO;aACV,CAAC;SACL,CAAC;IACN,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,oCAAoC,gBAAgB,CAAC,IAAI,CAAC,KAAK,cAAc,CAC/G,CAAC;IACN,CAAC;IACD,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,MAAM,cAAc,GAAG,CAAC,IAAc,EAA0C,EAAE;QAC9E,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC9B,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IACF,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B;;;;;;;;;;;WAWG;QACH,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CACnC,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,0CAA0C,gBAAgB,CAAC,IAAI,CAAC,KAAK,eAAe,CACtH,CAAC;QACN,CAAC;QACD,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,0CAA0C,gBAAgB,CAAC,IAAI,CAAC,KAAK,qCAAqC,CAC5I,CAAC;QACN,CAAC;QACD,uBAAuB;QACvB,sBAAsB;QACtB,MAAM,kBAAkB,GAAG,CAAC,IAA+C,EAAY,EAAE;YACrF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAC5E,MAAM,yBAAyB,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5E,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAqB,CAAC,CAAC,yBAAyB;QACjD,yCAAyC;QACzC,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAS;YACpD,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,+CAA+C;gBAC/C,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5E,CAAC,CAAC;SACL,CAAC,CAAC;QACH,IAAI,+BAA+B,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACX,GAAG,iBAAiB,IAAI,SAAS,MAC7B,gBAAgB,CAAC,IAAI,CAAC,KAC1B,iDAAiD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3F,CAAC;QACN,CAAC;QACD,iCAAiC;QACjC,MAAM,iCAAiC,GAAG,+BAA+B;aACpE,MAAM,EAAE;aACR,IAAI,EAAE,CAAC,KAAK,CAAC;QAClB,IAAI,uBAAuB,KAAK,iCAAiC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACX,GAAG,iBAAiB,IAAI,SAAS,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,kCAAkC,uBAAuB,SAAS,iCAAiC,EAAE,CAC1K,CAAC;QACN,CAAC;QACD,2CAA2C;QAC3C,6FAA6F;QAC7F,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC;QACnF,IAAI,yBAAyB,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC/D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO,EAAE,CAAC;gBACd,CAAC;gBACD,OAAO,SAAS,CAAC,QAAQ,EAAE,GAAG,iBAAiB,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9E,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE,CAAC;IACtE,CAAC;IACD;;;;;;;;;;;OAWG;IACH,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC/F,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,yCAAyC,gBAAgB,CAAC,IAAI,CAAC,KAAK,cAAc,CACpH,CAAC;IACN,CAAC;IACD,MAAM,wBAAwB,GAAG,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1E,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,+CAA+C;IAC/C,MAAM,qBAAqB,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;SAClD,IAAI,CAAC,wBAAwB,CAAC;SAC9B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,WAAW,EAAE,CAAC;IACnB,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACX,GAAG,iBAAiB,IAAI,SAAS,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,iCAAiC,QAAQ,SAAS,qBAAqB,EAAE,CAC9I,CAAC;IACN,CAAC;IACD,2CAA2C;IAC3C,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;IACzE,IAAI,oBAAoB,IAAI,OAAO,wBAAwB,KAAK,QAAQ,EAAE,CAAC;QACvE,MAAM,WAAW,GAAG,GAAG,iBAAiB,IAAI,SAAS,IAAI,wBAAwB,EAAE,CAAC;QACpF,OAAO;YACH,OAAO;YACP,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,wBAAwB,EAAE,WAAW,CAAC,EAAE;SAC5E,CAAC;IACN,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,0CAA0C,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,SAAS,EACT,OAAO,GAMV;IACG,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzC,MAAM,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE;YACJ,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;gBACtB,GAAG,gCAAgC,CAAC;oBAChC,IAAI,EAAE,KAAK;oBACX,iBAAiB;oBACjB,MAAM;oBACN,SAAS;oBACT,OAAO;iBACV,CAAC;aACL,CAAC,CAAC;SACN;KACJ,CAAC;AACN,CAAC;AAqDD,MAAM,oBAAoB,GAAG,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,OAAO,GAKV,EAAc,EAAE;IACb,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,0BAA0B,GAAG,KAAK;SACnC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B,MAAM,CACH,CACI,IAAI,EAKsB,EAAE;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB;YACzC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,4BAA4B;YAC/C,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,yBAAyB;YAC5C,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAC3C,CAAC;IACN,CAAC,CACJ,CAAC;IACN,MAAM,qBAAqB,GAAG,0BAA0B,CAAC,MAAM,CAC3D,CAAC,IAAI,EAAoC,EAAE;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC;IACrD,CAAC,CACJ,CAAC;IAEF,OAAO,KAAK;SACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B,MAAM,CACH,CACI,IAAI,EAKsB,EAAE;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB;YACzC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,4BAA4B;YAC/C,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,yBAAyB;YAC5C,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,qBAAqB,CAC3C,CAAC;IACN,CAAC,CACJ;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,IACI,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB;YAC1C,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,4BAA4B,EAClD,CAAC;YACC,OAAO,0CAA0C,CAAC;gBAC9C,IAAI;gBACJ,MAAM;gBACN,SAAS;gBACT,OAAO;aACV,CAA0B,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAChD,OAAO;gBACH,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACxB,oBAAoB,EAAE,qBAAqB;qBACtC,MAAM,CAAC,CAAC,wBAAwB,EAAE,EAAE,CACjC,CAAC,wBAAwB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAC1C,CACJ;qBACA,GAAG,CAAC,CAAC,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;aAClD,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC5C,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACxB,oBAAoB,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aAClD,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,EACxB,MAAM,EACN,MAAM,GAIT,EAAc,EAAE;IACb,6CAA6C;IAC7C,2GAA2G;IAC3G,yEAAyE;IACzE,kCAAkC;IAClC,gEAAgE;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,MAAM,8BAA8B,GAAG,KAAK;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,CAAC,IAAI,EAAkC,EAAE;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC;IACnD,CAAC,CAAC,CAAC;IACP,OAAO,8BAA8B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/C,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACxB,MAAM,EACF,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,OAAO;oBACH,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;oBACtB,OAAO,EAAE;wBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;qBAC1B;iBACJ,CAAC;YACN,CAAC,CAAC,IAAI,EAAE;SACf,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,EACvC,IAAI,GAGP,EAAqC,EAAE;IACpC,4DAA4D;IAC5D,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACjD,OAAO,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,oCAAoC,gBAAgB,CAAC,IAAI,CAAC,KAAK,cAAc,CAC/G,CAAC;IACN,CAAC;IACD,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IAC/F,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACX,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,yCAAyC,gBAAgB,CAAC,IAAI,CAAC,KAAK,cAAc,CACpH,CAAC;IACN,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/D,CAAC,CAAC;AACF;;;;GAIG;AACH,MAAM,0BAA0B,GAAG,CAAC,EAChC,MAAM,EACN,MAAM,GAIT,EAAoB,EAAE;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACjD,OAAO,CACH,KAAK;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,CAAC,IAAI,EAAoC,EAAE;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC;IACrD,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACV,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACxB,OAAO,EAAE,iCAAiC,CAAC,EAAE,IAAI,EAAE,CAAC;SAC9B,CAAC;IAC/B,CAAC,CAAC,IAAI,EAAE,CACf,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,MAAqB;IAC9D,MAAM,YAAY,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAmB;QAC5B,OAAO,EAAE,OAAO;QAChB,eAAe,EAAE,eAAe;KACnC,CAAC;IACF,OAAO;QACH,GAAG,YAAY;QACf,GAAG,oBAAoB;QACvB,GAAG,oBAAoB,CAAC;YACpB,MAAM;YACN,MAAM;YACN,OAAO;SACV,CAAC;KACL,CAAC;AACN,CAAC"}
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.24.1",
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": "abbdbd8c0dd8eaf96a5b5dc3221a45e03e23aee6"
66
+ "gitHead": "d86dc669a3978f3c46f86c0d2e84b4d2c8f9311a"
67
67
  }
@@ -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 for recursive types.
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
- * Example: For User -> User recursion with maxTypeRecursion=2:
48
- * - First User: typeVisitCount["User"] = 0, creates User
49
- * - Second User: typeVisitCount["User"] = 1, creates User
50
- * - Third User: typeVisitCount["User"] = 2, returns undefined (stops recursion)
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
- export type RawConfig = {
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
- * path to type definitions file
6
- * this is generated by client preset
7
- * e.g. ) "typeFile: "./graphql"
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
- typesFile?: string | undefined;
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 number of times a type can be recursively visited.
16
- * This prevents exponential explosion when generating mock data for recursive types.
17
- * For example, if User has a field `friends: [User!]!`, setting maxTypeRecursion to 2
18
- * will allow User -> User -> User but stop there.
19
- * Default is 2.
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
- listLength: 3,
57
- };
124
+ } as const;
58
125
 
59
- export type Config = {
60
- typesFile: string;
61
- skipTypename: Exclude<RawTypesConfig["skipTypename"], undefined>;
62
- typesPrefix: Exclude<RawTypesConfig["typesPrefix"], undefined>;
63
- typesSuffix: Exclude<RawTypesConfig["typesSuffix"], undefined>;
64
- namingConvention: Exclude<RawTypesConfig["namingConvention"], undefined>;
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
- listLength: number;
73
- // CustomScalar: string;
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.defaultValues must be an object");
197
+ throw new Error("config must be an object");
88
198
  }
89
199
  if (typeof rawConfig !== "object") {
90
- throw new Error("config.defaultValues must be an object");
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 ("defaultValues" in rawConfig) {
98
- if (typeof rawConfig.defaultValues !== "object") {
99
- throw new Error("config.defaultValues must be an object");
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
- if (defaultValues.Int !== undefined && typeof defaultValues.Int !== "number") {
106
- throw new Error("config.defaultValues.Int must be a number");
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 (defaultValues.Float !== undefined && typeof defaultValues.Float !== "number") {
109
- throw new Error("config.defaultValues.Float must be a number");
215
+ if (mock.maxDepth !== undefined && mock.maxDepth < 1) {
216
+ throw new Error("config.mock.maxDepth must be at least 1");
110
217
  }
111
- if (defaultValues.Boolean !== undefined && typeof defaultValues.Boolean !== "boolean") {
112
- throw new Error("config.defaultValues.Boolean must be a boolean");
218
+ if (mock.maxTypeRecursion !== undefined && typeof mock.maxTypeRecursion !== "number") {
219
+ throw new Error("config.mock.maxTypeRecursion must be a number");
113
220
  }
114
- if (defaultValues.ID !== undefined && typeof defaultValues.ID !== "string") {
115
- throw new Error("config.defaultValues.ID must be a string");
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
- defaultValues.listLength !== undefined &&
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 (rawConfig.maxTypeRecursion < 1) {
135
- throw new Error("config.maxTypeRecursion must be at least 1");
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
- maxTypeRecursion: rawConfig.maxTypeRecursion ?? 2,
148
- defaultValues: {
149
- String: rawConfig.defaultValues?.String ?? DefaultValues.String,
150
- Int: rawConfig.defaultValues?.Int ?? DefaultValues.Int,
151
- Float: rawConfig.defaultValues?.Float ?? DefaultValues.Float,
152
- Boolean: rawConfig.defaultValues?.Boolean ?? DefaultValues.Boolean,
153
- ID: rawConfig.defaultValues?.ID ?? DefaultValues.ID,
154
- listLength: rawConfig.defaultValues?.listLength ?? DefaultValues.listLength,
155
- CustomScalar: rawConfig.defaultValues?.CustomScalar ?? {},
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";
@@ -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
- options: {
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
- // Use .filter(Boolean) to remove undefined elements when typeVisitCount cuts off recursion
211
- return `Array.from({ length: ${config.defaultValues.listLength} }).map(() => ${typeToFunction({
212
- convertedTypeName,
213
- fieldName: fieldName,
214
- type: type,
215
- config: config,
216
- idFactory: idFactory,
217
- context,
218
- })}).filter(Boolean)`;
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 = ({