@newmo/graphql-fake-server 0.4.0 → 0.5.1
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/cli.d.ts +3 -0
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +51 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/createMock.d.ts.map +1 -1
- package/dist/esm/createMock.js +1 -0
- package/dist/esm/createMock.js.map +1 -1
- package/dist/esm/server.d.ts +6 -6
- package/dist/esm/server.d.ts.map +1 -1
- package/dist/esm/server.js +17 -9
- package/dist/esm/server.js.map +1 -1
- package/package.json +3 -3
- package/src/cli.ts +51 -1
- package/src/server.ts +22 -14
- package/src/createMock.ts +0 -47
package/dist/esm/cli.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export declare const cli: {
|
|
|
4
4
|
schema: string | undefined;
|
|
5
5
|
mainPort: string | undefined;
|
|
6
6
|
apolloPort: string | undefined;
|
|
7
|
+
maxRegisteredSequences: string | undefined;
|
|
8
|
+
maxQueryDepth: string | undefined;
|
|
9
|
+
maxFieldRecursionDepth: string | undefined;
|
|
7
10
|
logLevel: string | undefined;
|
|
8
11
|
};
|
|
9
12
|
positionals: [];
|
package/dist/esm/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAgBA,eAAO,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAgBA,eAAO,MAAM,GAAG;;;;;;;;;;;CAuCd,CAAC;AACH,eAAO,MAAM,GAAG,iBAEb,UAAU,KAAS,QAAQ;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CA2FA,CAAC"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -21,7 +21,6 @@ export const cli = parseArgs({
|
|
|
21
21
|
type: "string",
|
|
22
22
|
description: "Path to the schema file. e.g. schema.graphql",
|
|
23
23
|
},
|
|
24
|
-
// --port
|
|
25
24
|
mainPort: {
|
|
26
25
|
type: "string",
|
|
27
26
|
description: "Port to run the server on",
|
|
@@ -32,6 +31,21 @@ export const cli = parseArgs({
|
|
|
32
31
|
description: "Port to run the server on",
|
|
33
32
|
default: "4002",
|
|
34
33
|
},
|
|
34
|
+
maxRegisteredSequences: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Max number of registered sequences.",
|
|
37
|
+
default: "1000",
|
|
38
|
+
},
|
|
39
|
+
maxQueryDepth: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "max query depth for complexity of query",
|
|
42
|
+
default: "3",
|
|
43
|
+
},
|
|
44
|
+
maxFieldRecursionDepth: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "maxFieldRecursionDepth for creating fake data",
|
|
47
|
+
default: "4",
|
|
48
|
+
},
|
|
35
49
|
logLevel: {
|
|
36
50
|
type: "string",
|
|
37
51
|
description: "log level: debug, info, warn, error",
|
|
@@ -68,9 +82,45 @@ export const run = async ({ values, } = cli) => {
|
|
|
68
82
|
exitCode: 1,
|
|
69
83
|
};
|
|
70
84
|
}
|
|
85
|
+
const maxFieldRecursionDepth = values.maxFieldRecursionDepth
|
|
86
|
+
? Number.parseInt(values.maxFieldRecursionDepth, 10)
|
|
87
|
+
: Number.NaN;
|
|
88
|
+
if (Number.isNaN(maxFieldRecursionDepth)) {
|
|
89
|
+
logger.info(HELP);
|
|
90
|
+
return {
|
|
91
|
+
stdout: "",
|
|
92
|
+
stderr: "maxFieldRecursionDepth must be a number",
|
|
93
|
+
exitCode: 1,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const maxQueryDepth = values.maxQueryDepth
|
|
97
|
+
? Number.parseInt(values.maxQueryDepth, 10)
|
|
98
|
+
: Number.NaN;
|
|
99
|
+
if (Number.isNaN(maxQueryDepth)) {
|
|
100
|
+
logger.info(HELP);
|
|
101
|
+
return {
|
|
102
|
+
stdout: "",
|
|
103
|
+
stderr: "maxQueryDepth must be a number",
|
|
104
|
+
exitCode: 1,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const maxRegisteredSequences = values.maxRegisteredSequences
|
|
108
|
+
? Number.parseInt(values.maxRegisteredSequences, 10)
|
|
109
|
+
: Number.NaN;
|
|
110
|
+
if (Number.isNaN(maxRegisteredSequences)) {
|
|
111
|
+
logger.info(HELP);
|
|
112
|
+
return {
|
|
113
|
+
stdout: "",
|
|
114
|
+
stderr: "maxRegisteredSequences must be a number",
|
|
115
|
+
exitCode: 1,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
71
118
|
try {
|
|
72
119
|
const server = await createFakeServer({
|
|
73
120
|
schemaFilePath: schemaPath,
|
|
121
|
+
maxRegisteredSequences,
|
|
122
|
+
maxFieldRecursionDepth,
|
|
123
|
+
maxQueryDepth,
|
|
74
124
|
ports: {
|
|
75
125
|
fakeServer: mainPort,
|
|
76
126
|
apolloServer: apolloPort,
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,IAAI,GAAG;;;;;;;;;CASZ,CAAC;AACF,kBAAkB;AAClB,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE;QACL,WAAW;QACX,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8CAA8C;SAC9D;QACD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMock.d.ts","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"createMock.d.ts","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACnC,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,UAAU,YAAmB,mBAAmB,KAAG,QAAQ,UAAU,CA6BjF,CAAC"}
|
package/dist/esm/createMock.js
CHANGED
|
@@ -16,6 +16,7 @@ export const createMock = async (options) => {
|
|
|
16
16
|
maxFieldRecursionDepth: options.maxFieldRecursionDepth ?? 3,
|
|
17
17
|
});
|
|
18
18
|
const typeInfos = getTypeInfos(normalizedConfig, options.schema);
|
|
19
|
+
console.log(JSON.stringify(typeInfos, null, 4));
|
|
19
20
|
const code = generateCode({
|
|
20
21
|
...normalizedConfig,
|
|
21
22
|
outputType: "commonjs",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMock.js","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"createMock.js","sourceRoot":"","sources":["../../src/createMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ1D,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,EAAE;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,OAA4B,EAAuB,EAAE;IAClF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC;QACD,MAAM,gBAAgB,GAAG,eAAe,CAAC;YACrC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,YAAY,CACrB;YACI,GAAG,gBAAgB;YACnB,UAAU,EAAE,UAAU;SACzB,EACD,SAAS,CACZ,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,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,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC"}
|
package/dist/esm/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { type MockObject } from "@newmo/graphql-fake-core";
|
|
1
2
|
import type { GraphQLSchema } from "graphql/index.js";
|
|
2
|
-
import { type MockObject } from "./createMock.js";
|
|
3
3
|
import { type LogLevel } from "./logger.js";
|
|
4
4
|
export type CreateFakeServerOptions = {
|
|
5
5
|
schemaFilePath: string;
|
|
@@ -8,18 +8,18 @@ export type CreateFakeServerOptions = {
|
|
|
8
8
|
apolloServer: number;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* max query depth for complexity of query
|
|
12
12
|
* Default is 3
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
maxQueryDepth?: number;
|
|
15
15
|
/**
|
|
16
|
-
* maxFieldRecursionDepth for
|
|
16
|
+
* maxFieldRecursionDepth for creating fake data
|
|
17
17
|
* Default is maxDepth + 1
|
|
18
18
|
*/
|
|
19
19
|
maxFieldRecursionDepth?: number;
|
|
20
20
|
/**
|
|
21
21
|
* max number of registered sequences
|
|
22
|
-
* Default is
|
|
22
|
+
* Default is 1000
|
|
23
23
|
* If the number of registered sequences exceeds this number, the oldest sequence is deleted.
|
|
24
24
|
*/
|
|
25
25
|
maxRegisteredSequences?: number;
|
|
@@ -32,7 +32,7 @@ type FakeServerInternal = {
|
|
|
32
32
|
fakeServer: number;
|
|
33
33
|
apolloServer: number;
|
|
34
34
|
};
|
|
35
|
-
|
|
35
|
+
maxQueryDepth: number;
|
|
36
36
|
maxFieldRecursionDepth: number;
|
|
37
37
|
maxRegisteredSequences: number;
|
|
38
38
|
logLevel: LogLevel;
|
package/dist/esm/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,UAAU,EAAc,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AAiBF,MAAM,MAAM,4BAA4B,GAAG;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,GAAG,yBAAyB,CAAC;AAC/F,MAAM,MAAM,yBAAyB,GAC/B;IACI,EAAE,EAAE,IAAI,CAAC;CACZ,GACD;IACI,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AA+MR,eAAO,MAAM,gBAAgB,YAAmB,uBAAuB;;;;;;;;EA+BtE,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAAmB,kBAAkB;;;;;;;;EA6BzE,CAAC"}
|
package/dist/esm/server.js
CHANGED
|
@@ -4,11 +4,11 @@ import { startStandaloneServer } from "@apollo/server/standalone";
|
|
|
4
4
|
import { addMocksToSchema } from "@graphql-tools/mock";
|
|
5
5
|
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
6
6
|
import { serve } from "@hono/node-server";
|
|
7
|
+
import { createMock } from "@newmo/graphql-fake-core";
|
|
7
8
|
//@ts-expect-error
|
|
8
9
|
import depthLimit from "graphql-depth-limit";
|
|
9
10
|
import { buildSchema } from "graphql/utilities/index.js";
|
|
10
11
|
import { Hono } from "hono";
|
|
11
|
-
import { createMock } from "./createMock.js";
|
|
12
12
|
import { createLogger } from "./logger.js";
|
|
13
13
|
const creteApolloServer = async (options) => {
|
|
14
14
|
const mocks = Object.fromEntries(Object.entries(options.mockObject).map(([key, value]) => {
|
|
@@ -21,7 +21,7 @@ const creteApolloServer = async (options) => {
|
|
|
21
21
|
}),
|
|
22
22
|
mocks,
|
|
23
23
|
}),
|
|
24
|
-
validationRules: [depthLimit(options.
|
|
24
|
+
validationRules: [depthLimit(options.maxQueryDepth)],
|
|
25
25
|
});
|
|
26
26
|
};
|
|
27
27
|
const validateSequenceRegistration = (data) => {
|
|
@@ -206,24 +206,32 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, })
|
|
|
206
206
|
return app;
|
|
207
207
|
};
|
|
208
208
|
export const createFakeServer = async (options) => {
|
|
209
|
+
const logger = createLogger(options.logLevel);
|
|
209
210
|
const schema = buildSchema(await fs.readFile(options.schemaFilePath, "utf-8"));
|
|
210
|
-
const
|
|
211
|
+
const mockResult = await createMock({
|
|
211
212
|
schema,
|
|
212
|
-
logLevel: options.logLevel,
|
|
213
213
|
maxFieldRecursionDepth: options.maxFieldRecursionDepth,
|
|
214
214
|
});
|
|
215
|
+
if (!mockResult.ok) {
|
|
216
|
+
logger.error("Failed to create mock data", mockResult);
|
|
217
|
+
throw new Error("Failed to create mock data", {
|
|
218
|
+
cause: mockResult.error,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
logger.debug("created mock code", mockResult.code);
|
|
222
|
+
logger.debug("created mock data", mockResult.mock);
|
|
215
223
|
const ports = {
|
|
216
224
|
fakeServer: options.ports?.fakeServer ?? 4000,
|
|
217
225
|
apolloServer: options.ports?.apolloServer ?? 4001,
|
|
218
226
|
};
|
|
219
|
-
const
|
|
220
|
-
const maxFieldRecursionDepth = options.maxFieldRecursionDepth ??
|
|
221
|
-
const maxRegisteredSequences = options.maxRegisteredSequences ??
|
|
227
|
+
const maxQueryDepth = options.maxQueryDepth ?? 3;
|
|
228
|
+
const maxFieldRecursionDepth = options.maxFieldRecursionDepth ?? maxQueryDepth + 1;
|
|
229
|
+
const maxRegisteredSequences = options.maxRegisteredSequences ?? 1000;
|
|
222
230
|
return createFakeServerInternal({
|
|
223
231
|
ports,
|
|
224
232
|
schema,
|
|
225
|
-
mockObject,
|
|
226
|
-
|
|
233
|
+
mockObject: mockResult.mock,
|
|
234
|
+
maxQueryDepth,
|
|
227
235
|
maxFieldRecursionDepth,
|
|
228
236
|
maxRegisteredSequences,
|
|
229
237
|
logLevel: options.logLevel ?? "info",
|
package/dist/esm/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,kBAAkB;AAClB,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAmB,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACvE,kBAAkB;AAClB,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAuC1D,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CACL,CAAC;IACF,OAAO,IAAI,YAAY,CAAC;QACpB,MAAM,EAAE,gBAAgB,CAAC;YACrB,MAAM,EAAE,oBAAoB,CAAC;gBACzB,QAAQ,EAAE,OAAO,CAAC,MAAM;aAC3B,CAAC;YACF,KAAK;SACR,CAAC;QACF,eAAe,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACvD,CAAC,CAAC;AACP,CAAC,CAAC;AAqBF,MAAM,4BAA4B,GAAG,CAAC,IAAa,EAAmC,EAAE;IACpF,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAChC,OAAO,CACH,QAAQ,IAAI,IAAI;gBAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC1B,oBAAoB,IAAI,IAAI;gBAC5B,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ;gBAC3C,eAAe,IAAI,IAAI;gBACvB,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CACzC,CAAC;QACN,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,OAAO,CACH,MAAM,IAAI,IAAI;gBACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAC7B,eAAe,IAAI,IAAI;gBACvB,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CACzC,CAAC;QACN,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,MAAM;IACA,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;IACtB,IAAI,GAAQ,EAAE,CAAC;IACf,OAAO,CAAS;IAExB,YAAY,EAAE,OAAO,EAAuB;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAM;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACJ;AAED,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAC/B,QAAQ,EACR,KAAK,EACL,sBAAsB,GAQzB,EAAE,EAAE;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,gCAAgC;IAChC,MAAM,YAAY,GAAG,KAAK,EAAE,CAAU,EAAE,EAAE;QACtC,gBAAgB;QAChB,qCAAqC;QACrC,wBAAwB;QACxB,6CAA6C;QAC7C,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7E,IAAI,GAAG,GAAG,oBAAoB,KAAK,CAAC,YAAY,GAAG,IAAI,EAAE,CAAC;QAC1D,oBAAoB;QACpB,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;YAAE,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACxE,UAAU;QACV,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACzB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;YACpB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;YAC1B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;YACpB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,yBAAyB;QACzB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QACnC,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,MAAM,CAAkC;QAC/D,OAAO,EAAE,sBAAsB;KAClC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAClE;gBACI,MAAM,EAAE,GAAG;aACd,CACJ,CAAC;QACN,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACjC,UAAU;YACV,IAAI;SACP,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE;gBAC/E,MAAM,EAAE,GAAG;aACd,CAAC,CAAC;QACP,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;YAChC,UAAU;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC;QACH,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/C,MAAM,EAAE,GAAG;SACd,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAU,EAAE,EAAE;QAC1C;;;;;;;;;WASG;QACH,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC/C,oCAAoC;QACpC,IAAI,CAAC,UAAU;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,sBAAsB,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;YACtF,QAAQ;YACR,UAAU;SACb,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,oBAAoB,GACtB,OAAO,WAAW,KAAK,QAAQ;YAC/B,WAAW,KAAK,IAAI;YACpB,eAAe,IAAI,WAAW;YAC9B,WAAW,CAAC,aAAa,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,kBAAkB,oBAAoB,gBAAgB,UAAU,EAAE,EAAE;YAC7E,UAAU;SACb,CAAC,CAAC;QACH,IAAI,oBAAoB,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;YAClD,OAAO,QAAQ,CAAC,IAAI,CAChB,IAAI,CAAC,SAAS,CAAC;gBACX,MAAM,EAAE;oBACJ,gDAAgD,oBAAoB,gBAAgB,UAAU,EAAE;iBACnG;aACJ,CAAC,EACF;gBACI,MAAM,EAAE,GAAG;aACd,CACJ,CAAC;QACN,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjD,MAAM,EAAE,QAAQ,CAAC,kBAAkB;aACtC,CAAC,CAAC;QACP,CAAC;QACD,qCAAqC;QACrC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;YACrC,UAAU;SACb,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,KAAK,CAAC,YAAY,UAAU,EAAE;YACtE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;YACpB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;YAC1B,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;YACpB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE;YAChD,UAAU;YACV,GAAG;SACN,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QACnC,6CAA6C;QAC7C,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACtC,0DAA0D;QAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,8BAA8B,UAAU,EAAE,EAAE;YACrD,IAAI;YACJ,YAAY;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG;YACX,kBAAkB;YAClB,GAAG,YAAY,CAAC,IAAI;YACpB,GAAG,IAAI;SACV,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAChB;YACI,IAAI,EAAE,MAAM;SACf,EACD,GAAG,CACN,CAAC;IACN,CAAC,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgC,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC;QAChC,MAAM;QACN,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;KACzD,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE;YAC1C,KAAK,EAAE,UAAU,CAAC,KAAK;SAC1B,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG;QACV,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI;QAC7C,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,IAAI,IAAI;KACpD,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,aAAa,GAAG,CAAC,CAAC;IACnF,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC;IACtE,OAAO,wBAAwB,CAAC;QAC5B,KAAK;QACL,MAAM;QACN,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,aAAa;QACb,sBAAsB;QACtB,sBAAsB;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;KACvC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC1E,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC;QAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;KACzD,CAAC,CAAC;IACH,IAAI,YAAY,GAAoC,IAAI,CAAC;IACzD,OAAO;QACH,KAAK,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;gBACtD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;aAC/C,CAAC,CAAC;YACH,YAAY,GAAG,KAAK,CAAC;gBACjB,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;aACjC,CAAC,CAAC;YACH,OAAO;gBACH,IAAI,EAAE;oBACF,UAAU,EAAE,oBAAoB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE;oBAC1D,YAAY,EAAE,oBAAoB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;iBACjE;aACJ,CAAC;QACN,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACP,YAAY,CAAC,IAAI,EAAE,CAAC;YACpB,YAAY,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;KACJ,CAAC;AACN,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newmo/graphql-fake-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "GraphQL fake server for testing",
|
|
6
6
|
"keywords": [
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"@graphql-tools/mock": "^9.0.2",
|
|
52
52
|
"@graphql-tools/schema": "^10.0.3",
|
|
53
53
|
"@hono/node-server": "^1.11.1",
|
|
54
|
-
"@newmo/graphql-fake-core": "0.
|
|
54
|
+
"@newmo/graphql-fake-core": "0.5.1",
|
|
55
55
|
"graphql-depth-limit": "^1.1.0",
|
|
56
56
|
"hono": "^4.3.2"
|
|
57
57
|
},
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"access": "public",
|
|
78
78
|
"registry": "https://registry.npmjs.org/"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "10149a9103737905ab3d0d8e9225493474e573c2"
|
|
81
81
|
}
|
package/src/cli.ts
CHANGED
|
@@ -22,7 +22,6 @@ export const cli = parseArgs({
|
|
|
22
22
|
type: "string",
|
|
23
23
|
description: "Path to the schema file. e.g. schema.graphql",
|
|
24
24
|
},
|
|
25
|
-
// --port
|
|
26
25
|
mainPort: {
|
|
27
26
|
type: "string",
|
|
28
27
|
description: "Port to run the server on",
|
|
@@ -33,6 +32,21 @@ export const cli = parseArgs({
|
|
|
33
32
|
description: "Port to run the server on",
|
|
34
33
|
default: "4002",
|
|
35
34
|
},
|
|
35
|
+
maxRegisteredSequences: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Max number of registered sequences.",
|
|
38
|
+
default: "1000",
|
|
39
|
+
},
|
|
40
|
+
maxQueryDepth: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "max query depth for complexity of query",
|
|
43
|
+
default: "3",
|
|
44
|
+
},
|
|
45
|
+
maxFieldRecursionDepth: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "maxFieldRecursionDepth for creating fake data",
|
|
48
|
+
default: "4",
|
|
49
|
+
},
|
|
36
50
|
logLevel: {
|
|
37
51
|
type: "string",
|
|
38
52
|
description: "log level: debug, info, warn, error",
|
|
@@ -76,9 +90,45 @@ export const run = async ({
|
|
|
76
90
|
exitCode: 1,
|
|
77
91
|
};
|
|
78
92
|
}
|
|
93
|
+
const maxFieldRecursionDepth = values.maxFieldRecursionDepth
|
|
94
|
+
? Number.parseInt(values.maxFieldRecursionDepth, 10)
|
|
95
|
+
: Number.NaN;
|
|
96
|
+
if (Number.isNaN(maxFieldRecursionDepth)) {
|
|
97
|
+
logger.info(HELP);
|
|
98
|
+
return {
|
|
99
|
+
stdout: "",
|
|
100
|
+
stderr: "maxFieldRecursionDepth must be a number",
|
|
101
|
+
exitCode: 1,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const maxQueryDepth = values.maxQueryDepth
|
|
105
|
+
? Number.parseInt(values.maxQueryDepth, 10)
|
|
106
|
+
: Number.NaN;
|
|
107
|
+
if (Number.isNaN(maxQueryDepth)) {
|
|
108
|
+
logger.info(HELP);
|
|
109
|
+
return {
|
|
110
|
+
stdout: "",
|
|
111
|
+
stderr: "maxQueryDepth must be a number",
|
|
112
|
+
exitCode: 1,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const maxRegisteredSequences = values.maxRegisteredSequences
|
|
116
|
+
? Number.parseInt(values.maxRegisteredSequences, 10)
|
|
117
|
+
: Number.NaN;
|
|
118
|
+
if (Number.isNaN(maxRegisteredSequences)) {
|
|
119
|
+
logger.info(HELP);
|
|
120
|
+
return {
|
|
121
|
+
stdout: "",
|
|
122
|
+
stderr: "maxRegisteredSequences must be a number",
|
|
123
|
+
exitCode: 1,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
79
126
|
try {
|
|
80
127
|
const server = await createFakeServer({
|
|
81
128
|
schemaFilePath: schemaPath,
|
|
129
|
+
maxRegisteredSequences,
|
|
130
|
+
maxFieldRecursionDepth,
|
|
131
|
+
maxQueryDepth,
|
|
82
132
|
ports: {
|
|
83
133
|
fakeServer: mainPort,
|
|
84
134
|
apolloServer: apolloPort,
|
package/src/server.ts
CHANGED
|
@@ -4,12 +4,12 @@ import { startStandaloneServer } from "@apollo/server/standalone";
|
|
|
4
4
|
import { addMocksToSchema } from "@graphql-tools/mock";
|
|
5
5
|
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
6
6
|
import { serve } from "@hono/node-server";
|
|
7
|
+
import { type MockObject, createMock } from "@newmo/graphql-fake-core";
|
|
7
8
|
//@ts-expect-error
|
|
8
9
|
import depthLimit from "graphql-depth-limit";
|
|
9
10
|
import type { GraphQLSchema } from "graphql/index.js";
|
|
10
11
|
import { buildSchema } from "graphql/utilities/index.js";
|
|
11
12
|
import { type Context, Hono } from "hono";
|
|
12
|
-
import { type MockObject, createMock } from "./createMock.js";
|
|
13
13
|
import { type LogLevel, createLogger } from "./logger.js";
|
|
14
14
|
|
|
15
15
|
export type CreateFakeServerOptions = {
|
|
@@ -19,18 +19,18 @@ export type CreateFakeServerOptions = {
|
|
|
19
19
|
apolloServer: number;
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* max query depth for complexity of query
|
|
23
23
|
* Default is 3
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
maxQueryDepth?: number;
|
|
26
26
|
/**
|
|
27
|
-
* maxFieldRecursionDepth for
|
|
27
|
+
* maxFieldRecursionDepth for creating fake data
|
|
28
28
|
* Default is maxDepth + 1
|
|
29
29
|
*/
|
|
30
30
|
maxFieldRecursionDepth?: number;
|
|
31
31
|
/**
|
|
32
32
|
* max number of registered sequences
|
|
33
|
-
* Default is
|
|
33
|
+
* Default is 1000
|
|
34
34
|
* If the number of registered sequences exceeds this number, the oldest sequence is deleted.
|
|
35
35
|
*/
|
|
36
36
|
maxRegisteredSequences?: number;
|
|
@@ -44,7 +44,7 @@ type FakeServerInternal = {
|
|
|
44
44
|
fakeServer: number;
|
|
45
45
|
apolloServer: number;
|
|
46
46
|
};
|
|
47
|
-
|
|
47
|
+
maxQueryDepth: number;
|
|
48
48
|
maxFieldRecursionDepth: number;
|
|
49
49
|
maxRegisteredSequences: number;
|
|
50
50
|
logLevel: LogLevel;
|
|
@@ -62,7 +62,7 @@ const creteApolloServer = async (options: FakeServerInternal) => {
|
|
|
62
62
|
}),
|
|
63
63
|
mocks,
|
|
64
64
|
}),
|
|
65
|
-
validationRules: [depthLimit(options.
|
|
65
|
+
validationRules: [depthLimit(options.maxQueryDepth)],
|
|
66
66
|
});
|
|
67
67
|
};
|
|
68
68
|
export type RegisterSequenceNetworkError = {
|
|
@@ -292,24 +292,32 @@ const createRoutingServer = async ({
|
|
|
292
292
|
return app;
|
|
293
293
|
};
|
|
294
294
|
export const createFakeServer = async (options: CreateFakeServerOptions) => {
|
|
295
|
+
const logger = createLogger(options.logLevel);
|
|
295
296
|
const schema = buildSchema(await fs.readFile(options.schemaFilePath, "utf-8"));
|
|
296
|
-
const
|
|
297
|
+
const mockResult = await createMock({
|
|
297
298
|
schema,
|
|
298
|
-
logLevel: options.logLevel,
|
|
299
299
|
maxFieldRecursionDepth: options.maxFieldRecursionDepth,
|
|
300
300
|
});
|
|
301
|
+
if (!mockResult.ok) {
|
|
302
|
+
logger.error("Failed to create mock data", mockResult);
|
|
303
|
+
throw new Error("Failed to create mock data", {
|
|
304
|
+
cause: mockResult.error,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
logger.debug("created mock code", mockResult.code);
|
|
308
|
+
logger.debug("created mock data", mockResult.mock);
|
|
301
309
|
const ports = {
|
|
302
310
|
fakeServer: options.ports?.fakeServer ?? 4000,
|
|
303
311
|
apolloServer: options.ports?.apolloServer ?? 4001,
|
|
304
312
|
};
|
|
305
|
-
const
|
|
306
|
-
const maxFieldRecursionDepth = options.maxFieldRecursionDepth ??
|
|
307
|
-
const maxRegisteredSequences = options.maxRegisteredSequences ??
|
|
313
|
+
const maxQueryDepth = options.maxQueryDepth ?? 3;
|
|
314
|
+
const maxFieldRecursionDepth = options.maxFieldRecursionDepth ?? maxQueryDepth + 1;
|
|
315
|
+
const maxRegisteredSequences = options.maxRegisteredSequences ?? 1000;
|
|
308
316
|
return createFakeServerInternal({
|
|
309
317
|
ports,
|
|
310
318
|
schema,
|
|
311
|
-
mockObject,
|
|
312
|
-
|
|
319
|
+
mockObject: mockResult.mock,
|
|
320
|
+
maxQueryDepth,
|
|
313
321
|
maxFieldRecursionDepth,
|
|
314
322
|
maxRegisteredSequences,
|
|
315
323
|
logLevel: options.logLevel ?? "info",
|
package/src/createMock.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import vm from "node:vm";
|
|
2
|
-
import { generateCode, getTypeInfos, normalizeConfig } from "@newmo/graphql-fake-core";
|
|
3
|
-
import type { GraphQLSchema } from "graphql/index.js";
|
|
4
|
-
import { type LogLevel, createLogger } from "./logger.js";
|
|
5
|
-
export type MockObject = Record<string, unknown>;
|
|
6
|
-
export type GenerateMockOptions = {
|
|
7
|
-
schema: GraphQLSchema;
|
|
8
|
-
maxFieldRecursionDepth?: number | undefined;
|
|
9
|
-
logLevel?: LogLevel | undefined;
|
|
10
|
-
};
|
|
11
|
-
const cloneAsJSON = (obj: unknown) => {
|
|
12
|
-
return JSON.parse(JSON.stringify(obj));
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Create mock object from schema
|
|
16
|
-
* It supports @example directive
|
|
17
|
-
* @param options
|
|
18
|
-
*/
|
|
19
|
-
export const createMock = async (options: GenerateMockOptions): Promise<MockObject> => {
|
|
20
|
-
const logger = createLogger(options.logLevel);
|
|
21
|
-
try {
|
|
22
|
-
const normalizedConfig = normalizeConfig({
|
|
23
|
-
maxFieldRecursionDepth: options.maxFieldRecursionDepth ?? 3,
|
|
24
|
-
});
|
|
25
|
-
const typeInfos = getTypeInfos(normalizedConfig, options.schema);
|
|
26
|
-
const code = generateCode(
|
|
27
|
-
{
|
|
28
|
-
...normalizedConfig,
|
|
29
|
-
outputType: "commonjs",
|
|
30
|
-
},
|
|
31
|
-
typeInfos,
|
|
32
|
-
);
|
|
33
|
-
logger.debug("Generated code:");
|
|
34
|
-
logger.debug(code);
|
|
35
|
-
// execute code in vm and get all exports
|
|
36
|
-
const exports = {};
|
|
37
|
-
vm.runInNewContext(code, { exports });
|
|
38
|
-
// Apollo Server does not support Function type in mock object
|
|
39
|
-
const plainObject = cloneAsJSON(exports);
|
|
40
|
-
logger.debug("Exports:");
|
|
41
|
-
logger.debug(JSON.stringify(plainObject, null, 2));
|
|
42
|
-
return plainObject;
|
|
43
|
-
} catch (error) {
|
|
44
|
-
logger.error(error);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
};
|