@newmo/graphql-fake-core 0.23.0 → 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 +23 -15
- package/dist/esm/code-generator.js.map +1 -1
- package/dist/esm/config.d.ts +142 -25
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +66 -39
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/createMock.d.ts.map +1 -1
- package/dist/esm/createMock.js +1 -4
- package/dist/esm/createMock.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 +27 -13
- package/dist/esm/schema-scanner.js.map +1 -1
- package/package.json +2 -2
- package/src/code-generator.ts +25 -17
- package/src/config.ts +196 -65
- package/src/createMock.ts +1 -4
- package/src/index.ts +2 -2
- package/src/schema-scanner.ts +37 -21
|
@@ -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,13 +13,20 @@ export const generateEnumReferenceCode = ({ rawTypeName, }) => {
|
|
|
13
13
|
};
|
|
14
14
|
export const generateCreateReferenceCode = ({ fieldName, rawTypeName, config, }) => {
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* Track both depth and type visit count to prevent exponential explosion.
|
|
17
|
+
*
|
|
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
|
|
21
28
|
*/
|
|
22
|
-
return `(depth < ${config.
|
|
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)`;
|
|
23
30
|
};
|
|
24
31
|
// GraphQL AST Limitations
|
|
25
32
|
// GraphQL ASTs do not distinguish between object references and enum references.
|
|
@@ -56,14 +63,16 @@ ${indent}};
|
|
|
56
63
|
`.trim();
|
|
57
64
|
if (config.outputType === "commonjs") {
|
|
58
65
|
return `
|
|
59
|
-
function create${rawName}({ defaultFields, depth = 0 } = {}) {
|
|
66
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
60
67
|
${functionBodyCode}
|
|
61
68
|
}
|
|
62
69
|
exports.create${rawName} = create${rawName};
|
|
63
70
|
`.trim();
|
|
64
71
|
}
|
|
65
72
|
return `
|
|
66
|
-
export function create${rawName}({ defaultFields, depth = 0
|
|
73
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }${isTypescript
|
|
74
|
+
? `: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> }`
|
|
75
|
+
: ""} = {})${isTypescript ? `: ${name}` : ""} {
|
|
67
76
|
${functionBodyCode}
|
|
68
77
|
}
|
|
69
78
|
`.trimStart();
|
|
@@ -85,23 +94,22 @@ function generateImportTypeCode(config, typeInfos) {
|
|
|
85
94
|
.filter(({ type }) => type === "object")
|
|
86
95
|
.map(({ name }) => `${indent}${name}`)
|
|
87
96
|
.join(",\n");
|
|
88
|
-
return `import type {
|
|
97
|
+
return `import type {
|
|
89
98
|
${joinedTypeNames}
|
|
90
99
|
} from '${config.typesFile}';`;
|
|
91
100
|
}
|
|
92
101
|
function idGeneratorCode(config) {
|
|
93
102
|
// __id("name");
|
|
94
103
|
const isTypescript = config.outputType === "typescript";
|
|
95
|
-
// ${name}_g${__idGlobalId}
|
|
104
|
+
// ${name}_g${__idGlobalId}_c${count}
|
|
96
105
|
// g: global id - starts from 0
|
|
97
|
-
// d: depth - starts from 0
|
|
98
106
|
// c: name context count - starts from 0
|
|
99
107
|
return `
|
|
100
108
|
let __idGlobalId = 0; // global id
|
|
101
109
|
const __idContextCountMap = new Map${isTypescript ? "<string, number>" : ""}() // context count
|
|
102
|
-
function __id({ name, key
|
|
110
|
+
function __id({ name, key }${isTypescript ? ": { name: string; key: string; }" : ""})${isTypescript ? ": string" : ""} {
|
|
103
111
|
const count = __idContextCountMap.get(key) ?? 0;
|
|
104
|
-
const id = name + "_g" + String(__idGlobalId) + "
|
|
112
|
+
const id = name + "_g" + String(__idGlobalId) + "_c" + String(count);
|
|
105
113
|
__idGlobalId += 1;
|
|
106
114
|
__idContextCountMap.set(key, count + 1);
|
|
107
115
|
return id;
|
|
@@ -133,13 +141,13 @@ ${indent}${indent}...${generateCreateReferenceCode({
|
|
|
133
141
|
`.trim();
|
|
134
142
|
if (config.outputType === "typescript") {
|
|
135
143
|
return `
|
|
136
|
-
export function create${rawName}({ defaultFields, depth = 0 }: { defaultFields?: Partial<${name}>, depth?: number } = {}): ${name} {
|
|
144
|
+
export function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) }: { defaultFields?: Partial<${name}>, depth?: number, typeVisitCount?: Record<string, number> } = {}): ${name} {
|
|
137
145
|
${functionBodyCode}
|
|
138
146
|
}
|
|
139
147
|
`.trim();
|
|
140
148
|
}
|
|
141
149
|
return `
|
|
142
|
-
function create${rawName}({ defaultFields, depth = 0 } = {}) {
|
|
150
|
+
function create${rawName}({ defaultFields, depth = 0, typeVisitCount = Object.create(null) } = {}) {
|
|
143
151
|
${functionBodyCode}
|
|
144
152
|
}`;
|
|
145
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":"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;;;;;;;;;;;;;OAaG;IACH,OAAO,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,wBAAwB,WAAW,cAAc,MAAM,CAAC,IAAI,CAAC,gBAAgB,YAAY,WAAW,oCAAoC,SAAS,mEAAmE,WAAW,uBAAuB,WAAW,gCAAgC,CAAC;AAC7U,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,sEACvB,YAAY;QACR,CAAC,CAAC,+BAA+B,IAAI,8DAA8D;QACnG,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,kGAAkG,IAAI,uEAAuE,IAAI;EAC9M,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"}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -1,23 +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
|
|
20
|
+
*/
|
|
21
|
+
maxDepth?: number | undefined;
|
|
22
|
+
/**
|
|
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)
|
|
29
|
+
*/
|
|
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.
|
|
7
38
|
*/
|
|
8
|
-
typesFile?: string | undefined;
|
|
9
|
-
skipTypename?: RawTypesConfig["skipTypename"] | undefined;
|
|
10
|
-
namingConvention?: RawTypesConfig["namingConvention"] | undefined;
|
|
11
|
-
typesPrefix?: RawTypesConfig["typesPrefix"] | undefined;
|
|
12
|
-
typesSuffix?: RawTypesConfig["typesSuffix"] | undefined;
|
|
13
|
-
maxFieldRecursionDepth?: number | undefined;
|
|
14
39
|
defaultValues?: {
|
|
15
40
|
String?: string | undefined;
|
|
16
41
|
Int?: number | undefined;
|
|
17
42
|
Float?: number | undefined;
|
|
18
43
|
Boolean?: boolean | undefined;
|
|
19
44
|
ID?: string | undefined;
|
|
20
|
-
listLength?: number | undefined;
|
|
21
45
|
CustomScalar?: {
|
|
22
46
|
/**
|
|
23
47
|
* CustomScalar default expression
|
|
@@ -36,33 +60,126 @@ export type RawConfig = {
|
|
|
36
60
|
};
|
|
37
61
|
} | undefined;
|
|
38
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
|
+
*/
|
|
39
112
|
export declare const DefaultValues: {
|
|
40
|
-
String: string;
|
|
41
|
-
Int:
|
|
42
|
-
Float:
|
|
43
|
-
Boolean:
|
|
44
|
-
ID:
|
|
45
|
-
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";
|
|
46
118
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
+
*/
|
|
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
|
+
*/
|
|
54
143
|
defaultValues: {
|
|
144
|
+
/** Default value for String scalar */
|
|
55
145
|
String: string;
|
|
146
|
+
/** Default value for Int scalar */
|
|
56
147
|
Int: number;
|
|
148
|
+
/** Default value for Float scalar */
|
|
57
149
|
Float: number;
|
|
150
|
+
/** Default value for Boolean scalar */
|
|
58
151
|
Boolean: boolean;
|
|
152
|
+
/** Default value for ID scalar */
|
|
59
153
|
ID: string;
|
|
60
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Default values for custom scalars.
|
|
156
|
+
* Key is the scalar name, value is a JavaScript expression.
|
|
157
|
+
*/
|
|
61
158
|
CustomScalar?: {
|
|
62
159
|
[key: string]: string;
|
|
63
160
|
};
|
|
64
161
|
};
|
|
65
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
|
+
};
|
|
66
183
|
export declare function validateConfig(rawConfig: unknown, outputType?: "typescript" | "javascript"): asserts rawConfig is RawConfig;
|
|
67
184
|
export declare function normalizeConfig(rawConfig: RawConfig): Config;
|
|
68
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,56 +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
|
|
16
|
-
}
|
|
17
|
-
if ("maxFieldRecursionDepth" in rawConfig) {
|
|
18
|
-
if (typeof rawConfig.maxFieldRecursionDepth !== "number") {
|
|
19
|
-
throw new Error("config.maxFieldRecursionDepth must be a number");
|
|
20
|
-
}
|
|
27
|
+
throw new Error("config must be an object");
|
|
21
28
|
}
|
|
22
29
|
if (outputType === "typescript") {
|
|
23
30
|
if (!("typesFile" in rawConfig)) {
|
|
24
31
|
throw new Error("config.typesFile is required");
|
|
25
32
|
}
|
|
26
33
|
}
|
|
27
|
-
if ("
|
|
28
|
-
if (typeof rawConfig.
|
|
29
|
-
throw new Error("config.
|
|
30
|
-
}
|
|
31
|
-
const defaultValues = rawConfig.defaultValues;
|
|
32
|
-
if (defaultValues.String !== undefined && typeof defaultValues.String !== "string") {
|
|
33
|
-
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");
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
|
|
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");
|
|
37
41
|
}
|
|
38
|
-
if (
|
|
39
|
-
throw new Error("config.
|
|
42
|
+
if (mock.maxDepth !== undefined && mock.maxDepth < 1) {
|
|
43
|
+
throw new Error("config.mock.maxDepth must be at least 1");
|
|
40
44
|
}
|
|
41
|
-
if (
|
|
42
|
-
throw new Error("config.
|
|
45
|
+
if (mock.maxTypeRecursion !== undefined && typeof mock.maxTypeRecursion !== "number") {
|
|
46
|
+
throw new Error("config.mock.maxTypeRecursion must be a number");
|
|
43
47
|
}
|
|
44
|
-
if (
|
|
45
|
-
throw new Error("config.
|
|
48
|
+
if (mock.maxTypeRecursion !== undefined && mock.maxTypeRecursion < 1) {
|
|
49
|
+
throw new Error("config.mock.maxTypeRecursion must be at least 1");
|
|
46
50
|
}
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
throw new Error("config.defaultValues.listLength must be a number");
|
|
51
|
+
if (mock.listLength !== undefined && typeof mock.listLength !== "number") {
|
|
52
|
+
throw new Error("config.mock.listLength must be a number");
|
|
50
53
|
}
|
|
51
|
-
if (defaultValues
|
|
52
|
-
typeof defaultValues
|
|
53
|
-
|
|
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
|
+
}
|
|
54
78
|
}
|
|
55
79
|
}
|
|
56
80
|
}
|
|
@@ -61,15 +85,18 @@ export function normalizeConfig(rawConfig) {
|
|
|
61
85
|
typesPrefix: rawConfig.typesPrefix ?? "",
|
|
62
86
|
typesSuffix: rawConfig.typesSuffix ?? "",
|
|
63
87
|
namingConvention: rawConfig.namingConvention ?? "",
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
+
},
|
|
73
100
|
},
|
|
74
101
|
};
|
|
75
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMock.d.ts","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAIvB,MAAM,MAAM,gBAAgB,GACtB;IACI,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB,GACD;IACI,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AACR;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,SAAS,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createMock.d.ts","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,MAAM,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAIvB,MAAM,MAAM,gBAAgB,GACtB;IACI,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB,GACD;IACI,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AACR;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,SAAS,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,CA+BrF,CAAC"}
|
package/dist/esm/createMock.js
CHANGED
|
@@ -11,10 +11,7 @@ const cloneAsJSON = (obj) => {
|
|
|
11
11
|
*/
|
|
12
12
|
export const createMock = async (options) => {
|
|
13
13
|
const { schema, ...rawConfig } = options;
|
|
14
|
-
const normalizedConfig = normalizeConfig(
|
|
15
|
-
maxFieldRecursionDepth: rawConfig.maxFieldRecursionDepth ?? 3,
|
|
16
|
-
...rawConfig,
|
|
17
|
-
});
|
|
14
|
+
const normalizedConfig = normalizeConfig(rawConfig);
|
|
18
15
|
const typeInfos = getTypeInfos(normalizedConfig, schema);
|
|
19
16
|
const code = generateCode({
|
|
20
17
|
...normalizedConfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMock.js","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAMlE,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,EAAE;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAaF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,OAA0B,EAA6B,EAAE;IACtF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,gBAAgB,GAAG,eAAe,CAAC
|
|
1
|
+
{"version":3,"file":"createMock.js","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAMlE,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,EAAE;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAaF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,OAA0B,EAA6B,EAAE;IACtF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,YAAY,CACrB;QACI,GAAG,gBAAgB;QACnB,UAAU,EAAE,UAAU;KACzB,EACD,SAAS,CACZ,CAAC;IAEF,IAAI,CAAC;QACD,yCAAyC;QACzC,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,8DAA8D;QAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO;YACH,EAAE,EAAE,IAAI;YACR,IAAI;YACJ,IAAI,EAAE,WAAW;SACpB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,SAAS;YACT,KAAK,EAAE,KAAc;SACxB,CAAC;IACN,CAAC;AACL,CAAC,CAAC"}
|
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"}
|