@newmo/graphql-fake-server 0.2.0 → 0.3.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/LICENSE +1 -2
- package/README.md +0 -1
- package/dist/esm/bin.d.ts +3 -0
- package/dist/esm/bin.d.ts.map +1 -0
- package/dist/esm/bin.js +13 -0
- package/dist/esm/bin.js.map +1 -0
- package/dist/esm/cli.d.ts +13 -1
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +76 -74
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/index.d.ts +20 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +64 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/logger.d.ts +14 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +23 -0
- package/dist/esm/logger.js.map +1 -0
- package/package.json +80 -95
- package/src/bin.ts +13 -0
- package/src/cli.ts +84 -85
- package/src/index.ts +85 -13
- package/src/logger.ts +30 -0
- package/dist/esm/code-generator.d.ts +0 -4
- package/dist/esm/code-generator.d.ts.map +0 -1
- package/dist/esm/code-generator.js +0 -75
- package/dist/esm/code-generator.js.map +0 -1
- package/dist/esm/config.d.ts +0 -46
- package/dist/esm/config.d.ts.map +0 -1
- package/dist/esm/config.js +0 -57
- package/dist/esm/config.js.map +0 -1
- package/dist/esm/schema-scanner.d.ts +0 -32
- package/dist/esm/schema-scanner.d.ts.map +0 -1
- package/dist/esm/schema-scanner.js +0 -265
- package/dist/esm/schema-scanner.js.map +0 -1
- package/src/code-generator.ts +0 -82
- package/src/config.ts +0 -96
- package/src/schema-scanner.ts +0 -348
package/LICENSE
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
4
|
-
Copyright (c) 2022 Yosuke Kurami
|
|
3
|
+
Copyright (c) 2024 newmo, Inc.
|
|
5
4
|
|
|
6
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/esm/bin.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { run } from "./cli.js";
|
|
3
|
+
const ret = await run();
|
|
4
|
+
if (typeof ret !== "function") {
|
|
5
|
+
if (ret.stdout) {
|
|
6
|
+
console.log(ret.stdout);
|
|
7
|
+
}
|
|
8
|
+
if (ret.stderr) {
|
|
9
|
+
console.error(ret.stderr);
|
|
10
|
+
}
|
|
11
|
+
process.exit(ret.exitCode);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC;AACxB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/esm/cli.d.ts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export {
|
|
2
|
+
export declare const cli: {
|
|
3
|
+
values: {
|
|
4
|
+
schema: string | undefined;
|
|
5
|
+
port: string | undefined;
|
|
6
|
+
logLevel: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
positionals: [];
|
|
9
|
+
};
|
|
10
|
+
export declare const run: ({ values, }?: typeof cli) => Promise<{
|
|
11
|
+
stdout: string;
|
|
12
|
+
stderr: string | Error;
|
|
13
|
+
exitCode: number;
|
|
14
|
+
} | (() => void)>;
|
|
3
15
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/esm/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAkBA,eAAO,MAAM,GAAG;;;;;;;CAoBd,CAAC;AACH,eAAO,MAAM,GAAG,iBAEb,UAAU,KAAS,QAChB;IACI,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CACpB,GACD,CAAC,MAAM,IAAI,CAAC,CAoDjB,CAAC"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -1,90 +1,92 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import fs from "node:fs/promises";
|
|
2
|
+
import * as fs from "node:fs/promises";
|
|
3
3
|
import { parseArgs } from "node:util";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { addMocksToSchema } from '@graphql-tools/mock';
|
|
8
|
-
import { makeExecutableSchema } from '@graphql-tools/schema';
|
|
9
|
-
import { buildSchema } from "graphql";
|
|
10
|
-
import { generateCode } from "./code-generator.js";
|
|
11
|
-
import { normalizeConfig } from "./config.js";
|
|
12
|
-
import { getTypeInfos } from "./schema-scanner.js";
|
|
4
|
+
import { buildSchema } from "graphql/utilities/index.js";
|
|
5
|
+
import { createMock, startFakeServer } from "./index.js";
|
|
6
|
+
import { createLogger } from "./logger.js";
|
|
13
7
|
const HELP = `
|
|
14
|
-
Usage:
|
|
8
|
+
Usage: npx @newmo/graphql-fake-server --schema <path> [options]
|
|
9
|
+
|
|
10
|
+
Options:
|
|
11
|
+
|
|
12
|
+
--schema <path> Path to the schema file. e.g. schema.graphql
|
|
13
|
+
--port <port> Port to run the server on
|
|
14
|
+
--logLevel <logLevel> log level: debug, info, warn, error
|
|
15
|
+
|
|
15
16
|
`;
|
|
16
17
|
// cli foo.graphql
|
|
17
|
-
const
|
|
18
|
-
args: process.argv.slice(2),
|
|
18
|
+
export const cli = parseArgs({
|
|
19
|
+
args: process.argv.slice(2),
|
|
19
20
|
options: {
|
|
21
|
+
// --schema
|
|
22
|
+
schema: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Path to the schema file. e.g. schema.graphql",
|
|
25
|
+
},
|
|
20
26
|
// --port
|
|
21
27
|
port: {
|
|
22
28
|
type: "string",
|
|
23
29
|
description: "Port to run the server on",
|
|
24
30
|
default: "4000",
|
|
25
31
|
},
|
|
26
|
-
|
|
27
|
-
type: "
|
|
28
|
-
description: "
|
|
29
|
-
default:
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
+
logLevel: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "log level: debug, info, warn, error",
|
|
35
|
+
default: "info",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
32
38
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
console.log(`🚀 Server listening at: ${url}`);
|
|
61
|
-
};
|
|
62
|
-
try {
|
|
63
|
-
const schema = buildSchema(await fs.readFile(filePath, "utf-8"));
|
|
64
|
-
const normalizedConfig = normalizeConfig({
|
|
65
|
-
typesFile: "types.ts",
|
|
66
|
-
});
|
|
67
|
-
const typeInfos = getTypeInfos(normalizedConfig, schema);
|
|
68
|
-
const code = generateCode(normalizedConfig, typeInfos);
|
|
69
|
-
if (values.verbose) {
|
|
70
|
-
console.info("Generated code:");
|
|
71
|
-
console.info(code);
|
|
39
|
+
export const run = async ({ values, } = cli) => {
|
|
40
|
+
const logLevel = values.logLevel;
|
|
41
|
+
if (!logLevel || !["debug", "info", "warn", "error"].includes(logLevel)) {
|
|
42
|
+
return {
|
|
43
|
+
stdout: "",
|
|
44
|
+
stderr: "--logLevel must be one of debug, info, warn, error",
|
|
45
|
+
exitCode: 1,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const logger = createLogger(logLevel);
|
|
49
|
+
const schemaPath = values.schema;
|
|
50
|
+
if (!schemaPath) {
|
|
51
|
+
logger.info(HELP);
|
|
52
|
+
return {
|
|
53
|
+
stdout: "",
|
|
54
|
+
stderr: "--schema is required",
|
|
55
|
+
exitCode: 1,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const port = values.port ? Number.parseInt(values.port, 10) : Number.NaN;
|
|
59
|
+
if (Number.isNaN(port)) {
|
|
60
|
+
logger.info(HELP);
|
|
61
|
+
return {
|
|
62
|
+
stdout: "",
|
|
63
|
+
stderr: "--port must be a number",
|
|
64
|
+
exitCode: 1,
|
|
65
|
+
};
|
|
72
66
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
try {
|
|
68
|
+
const schema = buildSchema(await fs.readFile(schemaPath, "utf-8"));
|
|
69
|
+
const mockObject = await createMock({
|
|
70
|
+
schema,
|
|
71
|
+
logLevel: logLevel,
|
|
72
|
+
});
|
|
73
|
+
const closeServer = await startFakeServer({
|
|
74
|
+
mockObject,
|
|
75
|
+
port,
|
|
76
|
+
schema,
|
|
77
|
+
});
|
|
78
|
+
// TODO: more readable output?
|
|
79
|
+
return closeServer;
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.error(error);
|
|
83
|
+
return {
|
|
84
|
+
stdout: "",
|
|
85
|
+
stderr: new Error("Failed to start server", {
|
|
86
|
+
cause: error,
|
|
87
|
+
}),
|
|
88
|
+
exitCode: 1,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
};
|
|
90
92
|
//# sourceMappingURL=cli.js.map
|
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,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { GraphQLSchema } from "graphql";
|
|
2
|
+
import { type LogLevel } from "./logger.js";
|
|
3
|
+
export type MockObject = Record<string, unknown>;
|
|
4
|
+
export type StartFakeServerOptions = {
|
|
5
|
+
schema: GraphQLSchema;
|
|
6
|
+
mockObject: MockObject;
|
|
7
|
+
port?: number;
|
|
8
|
+
logLevel?: LogLevel;
|
|
9
|
+
};
|
|
10
|
+
export declare const startFakeServer: ({ schema, mockObject, port, logLevel, }: StartFakeServerOptions) => Promise<() => void>;
|
|
11
|
+
export type GenerateMockOptions = {
|
|
12
|
+
schema: GraphQLSchema;
|
|
13
|
+
logLevel?: LogLevel;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Create mock object from schema
|
|
17
|
+
* It supports @example directive
|
|
18
|
+
* @param options
|
|
19
|
+
*/
|
|
20
|
+
export declare const createMock: (options: GenerateMockOptions) => Promise<MockObject>;
|
|
3
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,MAAM,MAAM,sBAAsB,GAAG;IACjC,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AACF,eAAO,MAAM,eAAe,4CAKzB,sBAAsB,wBAsBxB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,UAAU,YAAmB,mBAAmB,KAAG,QAAQ,UAAU,CA4BjF,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,12 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import vm from "node:vm";
|
|
2
|
+
import { ApolloServer } from "@apollo/server";
|
|
3
|
+
import { startStandaloneServer } from "@apollo/server/standalone";
|
|
4
|
+
import { addMocksToSchema } from "@graphql-tools/mock";
|
|
5
|
+
import { makeExecutableSchema } from "@graphql-tools/schema";
|
|
6
|
+
import { generateCode, getTypeInfos, normalizeConfig } from "@newmo/graphql-fake-core";
|
|
7
|
+
//@ts-expect-error
|
|
8
|
+
import depthLimit from "graphql-depth-limit";
|
|
9
|
+
import { createLogger } from "./logger.js";
|
|
10
|
+
export const startFakeServer = async ({ schema, mockObject, port, logLevel, }) => {
|
|
11
|
+
const logger = createLogger(logLevel);
|
|
12
|
+
const mocks = Object.fromEntries(Object.entries(mockObject).map(([key, value]) => {
|
|
13
|
+
return [key, () => value];
|
|
14
|
+
}));
|
|
15
|
+
const server = new ApolloServer({
|
|
16
|
+
schema: addMocksToSchema({
|
|
17
|
+
schema: makeExecutableSchema({
|
|
18
|
+
typeDefs: schema,
|
|
19
|
+
}),
|
|
20
|
+
mocks,
|
|
21
|
+
}),
|
|
22
|
+
validationRules: [depthLimit(3)],
|
|
23
|
+
});
|
|
24
|
+
const { url } = await startStandaloneServer(server, { listen: { port: port } });
|
|
25
|
+
logger.info(`🚀 Server listening at: ${url}`);
|
|
26
|
+
return () => {
|
|
27
|
+
// close
|
|
28
|
+
server.stop();
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const cloneAsJSON = (obj) => {
|
|
32
|
+
return JSON.parse(JSON.stringify(obj));
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Create mock object from schema
|
|
36
|
+
* It supports @example directive
|
|
37
|
+
* @param options
|
|
38
|
+
*/
|
|
39
|
+
export const createMock = async (options) => {
|
|
40
|
+
const logger = createLogger(options.logLevel);
|
|
41
|
+
try {
|
|
42
|
+
const normalizedConfig = normalizeConfig({
|
|
43
|
+
maxFieldRecursionDepth: 4,
|
|
44
|
+
});
|
|
45
|
+
const typeInfos = getTypeInfos(normalizedConfig, options.schema);
|
|
46
|
+
const code = generateCode({
|
|
47
|
+
...normalizedConfig,
|
|
48
|
+
outputType: "commonjs",
|
|
49
|
+
}, typeInfos);
|
|
50
|
+
logger.debug("Generated code:");
|
|
51
|
+
logger.debug(code);
|
|
52
|
+
// execute code in vm and get all exports
|
|
53
|
+
const exports = {};
|
|
54
|
+
vm.runInNewContext(code, { exports });
|
|
55
|
+
// Apollo Server does not support Function type in mock object
|
|
56
|
+
const plainObject = cloneAsJSON(exports);
|
|
57
|
+
logger.debug("Exports:");
|
|
58
|
+
logger.debug(JSON.stringify(plainObject, null, 2));
|
|
59
|
+
return plainObject;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.error(error);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
11
65
|
};
|
|
12
66
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* if logLevel is debug, log all logs
|
|
3
|
+
* if logLevel is info, log info, warn, error
|
|
4
|
+
* if logLevel is warn, log warn, error
|
|
5
|
+
* if logLevel is error, log error
|
|
6
|
+
*/
|
|
7
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
8
|
+
export declare const createLogger: (logLevel?: LogLevel) => {
|
|
9
|
+
debug: (...args: unknown[]) => void;
|
|
10
|
+
info: (...args: unknown[]) => void;
|
|
11
|
+
warn: (...args: unknown[]) => void;
|
|
12
|
+
error: (...args: unknown[]) => void;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,eAAO,MAAM,YAAY,cAAc,QAAQ;qBAEtB,OAAO,EAAE;oBAKV,OAAO,EAAE;oBAKT,OAAO,EAAE;qBAKR,OAAO,EAAE;CAIjC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const createLogger = (logLevel = "info") => {
|
|
2
|
+
return {
|
|
3
|
+
debug: (...args) => {
|
|
4
|
+
if (logLevel === "debug") {
|
|
5
|
+
console.debug(...args);
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
info: (...args) => {
|
|
9
|
+
if (logLevel === "debug" || logLevel === "info") {
|
|
10
|
+
console.info(...args);
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
warn: (...args) => {
|
|
14
|
+
if (logLevel === "debug" || logLevel === "info" || logLevel === "warn") {
|
|
15
|
+
console.warn(...args);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
error: (...args) => {
|
|
19
|
+
console.error(...args);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAqB,MAAM,EAAE,EAAE;IACxD,OAAO;QACH,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC1B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YACzB,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YACzB,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;KACJ,CAAC;AACN,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,98 +1,83 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
"name": "@newmo/graphql-fake-server",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "GraphQL fake server for testing",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"testing",
|
|
8
|
+
"mock",
|
|
9
|
+
"graphql",
|
|
10
|
+
"graphql-code-generator"
|
|
11
|
+
],
|
|
12
|
+
"repository": "https://github.com/newmo-oss/graphql-fake-server.git",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "newmo, Inc.",
|
|
15
|
+
"sideEffects": false,
|
|
16
|
+
"type": "module",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"import": {
|
|
20
|
+
"types": "./dist/esm/index.d.ts",
|
|
21
|
+
"default": "./dist/esm/index.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"./cli": {
|
|
25
|
+
"import": {
|
|
26
|
+
"types": "./dist/esm/cli.d.ts",
|
|
27
|
+
"default": "./dist/esm/cli.js"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
17
30
|
},
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
"registry": "https://registry.npmjs.org/"
|
|
71
|
-
},
|
|
72
|
-
"keywords": [
|
|
73
|
-
"testing",
|
|
74
|
-
"mock",
|
|
75
|
-
"graphql",
|
|
76
|
-
"graphql-code-generator"
|
|
77
|
-
],
|
|
78
|
-
"files": [
|
|
79
|
-
"src",
|
|
80
|
-
"!src/test",
|
|
81
|
-
"!src/**/*.test.ts",
|
|
82
|
-
"!src/**/__snapshots__",
|
|
83
|
-
"dist"
|
|
84
|
-
],
|
|
85
|
-
"bin": {
|
|
86
|
-
"@newmo/graphql-fake-server": "./dist/esm/cli.js"
|
|
87
|
-
},
|
|
88
|
-
"peerDependencies": {
|
|
89
|
-
"graphql": "^16.0.0"
|
|
90
|
-
},
|
|
91
|
-
"dependencies": {
|
|
92
|
-
"@graphql-tools/mock": "^9.0.2",
|
|
93
|
-
"@apollo/server": "^4.10.4",
|
|
94
|
-
"@graphql-tools/schema": "^10.0.3",
|
|
95
|
-
"@graphql-codegen/plugin-helpers": "^5.0.1",
|
|
96
|
-
"@graphql-codegen/visitor-plugin-common": "^4.0.1"
|
|
97
|
-
}
|
|
31
|
+
"bin": {
|
|
32
|
+
"@newmo/graphql-fake-server": "./dist/esm/bin.js"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"src/",
|
|
36
|
+
"!src/test",
|
|
37
|
+
"!src/**/*.test.ts",
|
|
38
|
+
"!src/**/__snapshots__",
|
|
39
|
+
"dist/"
|
|
40
|
+
],
|
|
41
|
+
"scripts": {
|
|
42
|
+
"prepare": "npm run build",
|
|
43
|
+
"build": "run-s -c build:*",
|
|
44
|
+
"build:esm": "tsc -p tsconfig.build.json",
|
|
45
|
+
"lint": "run-s -c lint:*",
|
|
46
|
+
"lint:tsc": "tsc",
|
|
47
|
+
"test": "vitest run",
|
|
48
|
+
"updateSnapshot": "vitest run -u"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@apollo/server": "^4.10.4",
|
|
52
|
+
"@graphql-tools/mock": "^9.0.2",
|
|
53
|
+
"@graphql-tools/schema": "^10.0.3",
|
|
54
|
+
"@newmo/graphql-fake-core": "0.3.0",
|
|
55
|
+
"graphql-depth-limit": "^1.1.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@graphql-codegen/cli": "^5.0.0",
|
|
59
|
+
"@graphql-codegen/typescript": "^4.0.1",
|
|
60
|
+
"@tsconfig/node18": "^18.2.0",
|
|
61
|
+
"@tsconfig/strictest": "^2.0.1",
|
|
62
|
+
"@types/eslint": "^8.44.2",
|
|
63
|
+
"@types/node": "^20.5.1",
|
|
64
|
+
"@vitest/browser": "^1.3.1",
|
|
65
|
+
"eslint": "^8.47.0",
|
|
66
|
+
"graphql": "^16.8.1",
|
|
67
|
+
"npm-run-all": "^4.1.5",
|
|
68
|
+
"typescript": "^5.4.2",
|
|
69
|
+
"vitest": "^1.3.1",
|
|
70
|
+
"vitest-github-actions-reporter": "^0.11.1"
|
|
71
|
+
},
|
|
72
|
+
"peerDependencies": {
|
|
73
|
+
"graphql": "^16.8.1"
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": ">=18.0.0"
|
|
77
|
+
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"access": "public",
|
|
80
|
+
"registry": "https://registry.npmjs.org/"
|
|
81
|
+
},
|
|
82
|
+
"gitHead": "c0bb7357d7212071dc305685b4bdf42dfc445737"
|
|
98
83
|
}
|
package/src/bin.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { run } from "./cli.js";
|
|
3
|
+
|
|
4
|
+
const ret = await run();
|
|
5
|
+
if (typeof ret !== "function") {
|
|
6
|
+
if (ret.stdout) {
|
|
7
|
+
console.log(ret.stdout);
|
|
8
|
+
}
|
|
9
|
+
if (ret.stderr) {
|
|
10
|
+
console.error(ret.stderr);
|
|
11
|
+
}
|
|
12
|
+
process.exit(ret.exitCode);
|
|
13
|
+
}
|