@newmo/graphql-fake-server 0.10.0 → 0.11.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/cli.d.ts +1 -0
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +13 -13
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config.d.ts +14 -2
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +26 -3
- package/dist/esm/config.js.map +1 -1
- package/package.json +3 -3
- package/src/cli.ts +18 -14
- package/src/config.ts +40 -4
package/dist/esm/cli.d.ts
CHANGED
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":";AA8BA,eAAO,MAAM,GAAG;;;;;;;;CAsBd,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,CAuCA,CAAC"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
|
-
import { loadConfig,
|
|
3
|
+
import { loadConfig, loadFakeServerConfigFromCLI, } from "./config.js";
|
|
4
4
|
import { createFakeServer } from "./index.js";
|
|
5
5
|
import { createLogger } from "./logger.js";
|
|
6
6
|
const HELP = `
|
|
@@ -8,9 +8,10 @@ Usage: npx @newmo/graphql-fake-server --schema <path> [options]
|
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
|
|
11
|
-
--schema <path> Path to a schema file
|
|
12
11
|
--config <path> Path to a config file
|
|
12
|
+
--schema <path> Path to a schema file
|
|
13
13
|
--logLevel <logLevel> log level: debug, info, warn, error
|
|
14
|
+
--cwd <path> Current working directory
|
|
14
15
|
|
|
15
16
|
Examples:
|
|
16
17
|
|
|
@@ -24,6 +25,11 @@ Examples:
|
|
|
24
25
|
export const cli = parseArgs({
|
|
25
26
|
args: process.argv.slice(2),
|
|
26
27
|
options: {
|
|
28
|
+
cwd: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Current working directory",
|
|
31
|
+
default: process.cwd(),
|
|
32
|
+
},
|
|
27
33
|
schema: {
|
|
28
34
|
type: "string",
|
|
29
35
|
description: "Path to a schema file",
|
|
@@ -48,22 +54,16 @@ export const run = async ({ values, } = cli) => {
|
|
|
48
54
|
exitCode: 1,
|
|
49
55
|
};
|
|
50
56
|
}
|
|
51
|
-
const logger = createLogger(logLevel);
|
|
52
57
|
const schemaFilePath = values.schema;
|
|
53
|
-
|
|
54
|
-
logger.info(HELP);
|
|
55
|
-
return {
|
|
56
|
-
stdout: "",
|
|
57
|
-
stderr: "--schema is required",
|
|
58
|
-
exitCode: 1,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
58
|
+
// prefer config file over CLI options
|
|
61
59
|
const config = values.config
|
|
62
|
-
? await loadConfig(values.config)
|
|
63
|
-
:
|
|
60
|
+
? await loadConfig(values.cwd ?? process.cwd(), values.config)
|
|
61
|
+
: loadFakeServerConfigFromCLI({
|
|
64
62
|
schemaFilePath,
|
|
65
63
|
logLevel,
|
|
66
64
|
});
|
|
65
|
+
const logger = createLogger(config.logLevel ?? logLevel);
|
|
66
|
+
logger.debug("[fake-server-cli] config", config);
|
|
67
67
|
try {
|
|
68
68
|
const server = await createFakeServer(config);
|
|
69
69
|
const { urls } = await server.start();
|
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,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACH,UAAU,EACV,2BAA2B,GAG9B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,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,GAAG,EAAE;YACD,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,2BAA2B;YACxC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;SACzB;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uBAAuB;SACvC;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uBAAuB;SACvC;QACD,QAAQ,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,MAAM;SAClB;KACJ;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,EACtB,MAAM,MACM,GAAG,EAKhB,EAAE;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAgC,CAAC;IACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtE,OAAO;YACH,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,oDAAoD;YAC5D,QAAQ,EAAE,CAAC;SACd,CAAC;IACN,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,sCAAsC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QACxB,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9D,CAAC,CAAC,2BAA2B,CAAC;YACxB,cAAc;YACd,QAAQ;SACX,CAAC,CAAC;IACT,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,OAAO;YACH,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI;SAClB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO;YACH,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,IAAI,KAAK,CAAC,wBAAwB,EAAE;gBACxC,KAAK,EAAE,KAAK;aACf,CAAC;YACF,QAAQ,EAAE,CAAC;SACd,CAAC;IACN,CAAC;AACL,CAAC,CAAC"}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -58,6 +58,18 @@ export type RequiredFakeServerConfig = {
|
|
|
58
58
|
logLevel: LogLevel;
|
|
59
59
|
};
|
|
60
60
|
export declare const normalizeFakeServerConfig: (config: FakeServerConfig) => RequiredFakeServerConfig;
|
|
61
|
-
export declare const validateFakeServerConfig: (config: FakeServerConfig) =>
|
|
62
|
-
|
|
61
|
+
export declare const validateFakeServerConfig: (config: FakeServerConfig) => FakeServerConfig;
|
|
62
|
+
/**
|
|
63
|
+
* Load the fake server configuration from the file.
|
|
64
|
+
* @param configPath
|
|
65
|
+
*/
|
|
66
|
+
export declare const loadConfig: (cwd: string, configPath: string) => Promise<RequiredFakeServerConfig>;
|
|
67
|
+
/**
|
|
68
|
+
* Load the fake server configuration from the CLI flags.
|
|
69
|
+
* @param cliFlag
|
|
70
|
+
*/
|
|
71
|
+
export declare const loadFakeServerConfigFromCLI: ({ schemaFilePath, logLevel, }: {
|
|
72
|
+
schemaFilePath?: string | undefined;
|
|
73
|
+
logLevel?: LogLevel | undefined;
|
|
74
|
+
}) => RequiredFakeServerConfig;
|
|
63
75
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EACA;QACI;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAChC;;;;WAIG;QACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC,GACD,SAAS,CAAC;IAChB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;IACzE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACvD;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACnC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,gBAAgB,KAAG,wBAapE,CAAC;AACF,eAAO,MAAM,wBAAwB,WAAY,gBAAgB,KAAG,gBAqCnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,QACd,MAAM,cACC,MAAM,KACnB,QAAQ,wBAAwB,CAMlC,CAAC;AACF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,kCAGrC;IACC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACnC,KAAG,wBAYH,CAAC"}
|
package/dist/esm/config.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
1
3
|
export const normalizeFakeServerConfig = (config) => {
|
|
2
4
|
return {
|
|
3
5
|
schemaFilePath: config.schemaFilePath,
|
|
@@ -48,11 +50,32 @@ export const validateFakeServerConfig = (config) => {
|
|
|
48
50
|
if (config.logLevel && !["debug", "info", "warn", "error"].includes(config.logLevel)) {
|
|
49
51
|
throw new Error("The logLevel must be one of 'debug', 'info', 'warn', 'error'.");
|
|
50
52
|
}
|
|
53
|
+
return config;
|
|
51
54
|
};
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Load the fake server configuration from the file.
|
|
57
|
+
* @param configPath
|
|
58
|
+
*/
|
|
59
|
+
export const loadConfig = async (cwd, configPath) => {
|
|
60
|
+
const fileUrl = pathToFileURL(path.resolve(cwd, configPath)).href;
|
|
61
|
+
const { default: config } = await import(fileUrl);
|
|
54
62
|
const normalizedConfig = normalizeFakeServerConfig(config);
|
|
55
63
|
validateFakeServerConfig(normalizedConfig);
|
|
56
|
-
return
|
|
64
|
+
return normalizedConfig;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Load the fake server configuration from the CLI flags.
|
|
68
|
+
* @param cliFlag
|
|
69
|
+
*/
|
|
70
|
+
export const loadFakeServerConfigFromCLI = ({ schemaFilePath, logLevel, }) => {
|
|
71
|
+
if (!schemaFilePath) {
|
|
72
|
+
throw new Error("The --schema is required. or pass --config ./fake-server.config.js to load the config file.");
|
|
73
|
+
}
|
|
74
|
+
const normalizedConfig = normalizeFakeServerConfig({
|
|
75
|
+
schemaFilePath,
|
|
76
|
+
logLevel,
|
|
77
|
+
});
|
|
78
|
+
validateFakeServerConfig(normalizedConfig);
|
|
79
|
+
return normalizedConfig;
|
|
57
80
|
};
|
|
58
81
|
//# sourceMappingURL=config.js.map
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newmo/graphql-fake-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
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.11.0",
|
|
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": "4adbbdbca5cf43dc7e86f749aca8130d1e9b214a"
|
|
81
81
|
}
|
package/src/cli.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
loadConfig,
|
|
5
|
+
loadFakeServerConfigFromCLI,
|
|
6
|
+
normalizeFakeServerConfig,
|
|
7
|
+
validateFakeServerConfig,
|
|
8
|
+
} from "./config.js";
|
|
4
9
|
import { createFakeServer } from "./index.js";
|
|
5
10
|
import { type LogLevel, createLogger } from "./logger.js";
|
|
6
11
|
|
|
@@ -9,9 +14,10 @@ Usage: npx @newmo/graphql-fake-server --schema <path> [options]
|
|
|
9
14
|
|
|
10
15
|
Options:
|
|
11
16
|
|
|
12
|
-
--schema <path> Path to a schema file
|
|
13
17
|
--config <path> Path to a config file
|
|
18
|
+
--schema <path> Path to a schema file
|
|
14
19
|
--logLevel <logLevel> log level: debug, info, warn, error
|
|
20
|
+
--cwd <path> Current working directory
|
|
15
21
|
|
|
16
22
|
Examples:
|
|
17
23
|
|
|
@@ -25,6 +31,11 @@ Examples:
|
|
|
25
31
|
export const cli = parseArgs({
|
|
26
32
|
args: process.argv.slice(2),
|
|
27
33
|
options: {
|
|
34
|
+
cwd: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Current working directory",
|
|
37
|
+
default: process.cwd(),
|
|
38
|
+
},
|
|
28
39
|
schema: {
|
|
29
40
|
type: "string",
|
|
30
41
|
description: "Path to a schema file",
|
|
@@ -56,23 +67,16 @@ export const run = async ({
|
|
|
56
67
|
exitCode: 1,
|
|
57
68
|
};
|
|
58
69
|
}
|
|
59
|
-
const logger = createLogger(logLevel);
|
|
60
70
|
const schemaFilePath = values.schema;
|
|
61
|
-
|
|
62
|
-
logger.info(HELP);
|
|
63
|
-
return {
|
|
64
|
-
stdout: "",
|
|
65
|
-
stderr: "--schema is required",
|
|
66
|
-
exitCode: 1,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
|
|
71
|
+
// prefer config file over CLI options
|
|
70
72
|
const config = values.config
|
|
71
|
-
? await loadConfig(values.config)
|
|
72
|
-
:
|
|
73
|
+
? await loadConfig(values.cwd ?? process.cwd(), values.config)
|
|
74
|
+
: loadFakeServerConfigFromCLI({
|
|
73
75
|
schemaFilePath,
|
|
74
76
|
logLevel,
|
|
75
77
|
});
|
|
78
|
+
const logger = createLogger(config.logLevel ?? logLevel);
|
|
79
|
+
logger.debug("[fake-server-cli] config", config);
|
|
76
80
|
try {
|
|
77
81
|
const server = await createFakeServer(config);
|
|
78
82
|
const { urls } = await server.start();
|
package/src/config.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
1
3
|
import type { RawConfig } from "@newmo/graphql-fake-core";
|
|
4
|
+
import { configDefaults } from "vitest/config";
|
|
2
5
|
import type { LogLevel } from "./logger.js";
|
|
3
6
|
|
|
4
7
|
/**
|
|
@@ -60,6 +63,7 @@ export type RequiredFakeServerConfig = {
|
|
|
60
63
|
defaultValues: RawConfig["defaultValues"];
|
|
61
64
|
logLevel: LogLevel;
|
|
62
65
|
};
|
|
66
|
+
|
|
63
67
|
export const normalizeFakeServerConfig = (config: FakeServerConfig): RequiredFakeServerConfig => {
|
|
64
68
|
return {
|
|
65
69
|
schemaFilePath: config.schemaFilePath,
|
|
@@ -74,7 +78,7 @@ export const normalizeFakeServerConfig = (config: FakeServerConfig): RequiredFak
|
|
|
74
78
|
logLevel: config.logLevel ?? "info",
|
|
75
79
|
};
|
|
76
80
|
};
|
|
77
|
-
export const validateFakeServerConfig = (config: FakeServerConfig):
|
|
81
|
+
export const validateFakeServerConfig = (config: FakeServerConfig): FakeServerConfig => {
|
|
78
82
|
if (!config.schemaFilePath) {
|
|
79
83
|
throw new Error("The schemaFilePath is required.");
|
|
80
84
|
}
|
|
@@ -110,11 +114,43 @@ export const validateFakeServerConfig = (config: FakeServerConfig): void => {
|
|
|
110
114
|
if (config.logLevel && !["debug", "info", "warn", "error"].includes(config.logLevel)) {
|
|
111
115
|
throw new Error("The logLevel must be one of 'debug', 'info', 'warn', 'error'.");
|
|
112
116
|
}
|
|
117
|
+
return config;
|
|
113
118
|
};
|
|
114
119
|
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Load the fake server configuration from the file.
|
|
122
|
+
* @param configPath
|
|
123
|
+
*/
|
|
124
|
+
export const loadConfig = async (
|
|
125
|
+
cwd: string,
|
|
126
|
+
configPath: string,
|
|
127
|
+
): Promise<RequiredFakeServerConfig> => {
|
|
128
|
+
const fileUrl = pathToFileURL(path.resolve(cwd, configPath)).href;
|
|
129
|
+
const { default: config } = await import(fileUrl);
|
|
117
130
|
const normalizedConfig = normalizeFakeServerConfig(config);
|
|
118
131
|
validateFakeServerConfig(normalizedConfig);
|
|
119
|
-
return
|
|
132
|
+
return normalizedConfig;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Load the fake server configuration from the CLI flags.
|
|
136
|
+
* @param cliFlag
|
|
137
|
+
*/
|
|
138
|
+
export const loadFakeServerConfigFromCLI = ({
|
|
139
|
+
schemaFilePath,
|
|
140
|
+
logLevel,
|
|
141
|
+
}: {
|
|
142
|
+
schemaFilePath?: string | undefined;
|
|
143
|
+
logLevel?: LogLevel | undefined;
|
|
144
|
+
}): RequiredFakeServerConfig => {
|
|
145
|
+
if (!schemaFilePath) {
|
|
146
|
+
throw new Error(
|
|
147
|
+
"The --schema is required. or pass --config ./fake-server.config.js to load the config file.",
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
const normalizedConfig = normalizeFakeServerConfig({
|
|
151
|
+
schemaFilePath,
|
|
152
|
+
logLevel,
|
|
153
|
+
});
|
|
154
|
+
validateFakeServerConfig(normalizedConfig);
|
|
155
|
+
return normalizedConfig;
|
|
120
156
|
};
|