@newmo/graphql-fake-server 0.19.0 → 0.19.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.
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AA+BA,eAAO,MAAM,GAAG;;;;;;;;;CA0Bd,CAAC;AACH,eAAO,MAAM,GAAG,iBAEb,OAAO,GAAG,KAAS,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CA+CA,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AA0BA,eAAO,MAAM,GAAG;;;;;;;;;CA0Bd,CAAC;AACH,eAAO,MAAM,GAAG,GAAU,cAEvB,OAAO,GAAS,KAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CA+CA,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, loadFakeServerConfigFromCLI, } from "./config.js";
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 = `
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,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;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C,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;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,yBAAyB,WAAY,gBAAgB,KAAG,wBAcpE,CAAC;AACF,eAAO,MAAM,wBAAwB,WAAY,gBAAgB,KAAG,gBA+CnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,QACd,MAAM,cACC,MAAM,KACnB,OAAO,CAAC,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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,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;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;IACvD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7C,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;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,QAAQ,gBAAgB,KAAG,wBAcpE,CAAC;AACF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,gBAAgB,KAAG,gBA+CnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GACnB,KAAK,MAAM,EACX,YAAY,MAAM,KACnB,OAAO,CAAC,wBAAwB,CAMlC,CAAC;AACF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,+BAGzC;IACC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACnC,KAAG,wBAYH,CAAC"}
File without changes
File without changes
@@ -0,0 +1,39 @@
1
+ import vm from "node:vm";
2
+ import { generateCode, getTypeInfos, normalizeConfig } from "@newmo/graphql-fake-core";
3
+ import { createLogger } from "./logger.js";
4
+ const cloneAsJSON = (obj) => {
5
+ return JSON.parse(JSON.stringify(obj));
6
+ };
7
+ /**
8
+ * Create mock object from schema
9
+ * It supports @example directive
10
+ * @param options
11
+ */
12
+ export const createMock = async (options) => {
13
+ const logger = createLogger(options.logLevel);
14
+ try {
15
+ const normalizedConfig = normalizeConfig({
16
+ maxFieldRecursionDepth: options.maxFieldRecursionDepth ?? 3,
17
+ });
18
+ const typeInfos = getTypeInfos(normalizedConfig, options.schema);
19
+ const code = generateCode({
20
+ ...normalizedConfig,
21
+ outputType: "commonjs",
22
+ }, typeInfos);
23
+ logger.debug("Generated code:");
24
+ logger.debug(code);
25
+ // execute code in vm and get all exports
26
+ const exports = {};
27
+ vm.runInNewContext(code, { exports });
28
+ // Apollo Server does not support Function type in mock object
29
+ const plainObject = cloneAsJSON(exports);
30
+ logger.debug("Exports:");
31
+ logger.debug(JSON.stringify(plainObject, null, 2));
32
+ return plainObject;
33
+ }
34
+ catch (error) {
35
+ logger.error(error);
36
+ process.exit(1);
37
+ }
38
+ };
39
+ //# sourceMappingURL=createMock.js.map
File without changes
@@ -1,5 +1,5 @@
1
- export { createFakeServer } from "./server.js";
2
- export type { CreateFakeServerOptions } from "./server.js";
3
1
  export type { FakeServerConfig, RequiredFakeServerConfig, } from "./config.js";
4
2
  export { normalizeFakeServerConfig, validateFakeServerConfig } from "./config.js";
3
+ export type { CreateFakeServerOptions } from "./server.js";
4
+ export { createFakeServer } from "./server.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACR,gBAAgB,EAChB,wBAAwB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,gBAAgB,EAChB,wBAAwB,GAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAClF,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { createFakeServer } from "./server.js";
2
1
  export { normalizeFakeServerConfig, validateFakeServerConfig } from "./config.js";
2
+ export { createFakeServer } from "./server.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +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"}
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,GAAI,WAAU,QAAiB;qBAE/B,OAAO,EAAE;oBAKV,OAAO,EAAE;oBAKT,OAAO,EAAE;qBAKR,OAAO,EAAE;CAIjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,UAAU,EAAc,MAAM,0BAA0B,CAAC;AAKvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAI1D,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,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;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AA8EF,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,YAAY,GAAG;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;CACL,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,YAAY,EAAE,CAAC;CACxB,CAAC;AACF,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;AAkaR,eAAO,MAAM,gBAAgB,YAAmB,uBAAuB;;;;;;;;EAoCtE,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAAmB,kBAAkB;;;;;;;;EAmCzE,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG;IAC7D,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,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;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AA8EF,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,YAAY,GAAG;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;CACL,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,YAAY,EAAE,CAAC;CACxB,CAAC;AACF,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;AAyfR,eAAO,MAAM,gBAAgB,GAAU,SAAS,uBAAuB;;;;;;;;EAoCtE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,SAAS,kBAAkB;;;;;;;;EAmCzE,CAAC"}
@@ -1,19 +1,20 @@
1
1
  import fs from "node:fs/promises";
2
2
  import http from "node:http";
3
3
  import { ApolloServer } from "@apollo/server";
4
- import { expressMiddleware } from "@apollo/server/express4";
5
4
  import { ApolloServerPluginDrainHttpServer } from "@apollo/server/plugin/drainHttpServer";
5
+ import { expressMiddleware } from "@as-integrations/express5";
6
6
  import { addMocksToSchema } from "@graphql-tools/mock";
7
7
  import { makeExecutableSchema } from "@graphql-tools/schema";
8
8
  import { serve } from "@hono/node-server";
9
9
  import { createMock } from "@newmo/graphql-fake-core";
10
10
  import corsExpress from "cors";
11
11
  import express from "express";
12
+ import { buildSchema } from "graphql/utilities/index.js";
12
13
  // @ts-expect-error -- no types
13
14
  import depthLimit from "graphql-depth-limit";
14
- import { buildSchema } from "graphql/utilities/index.js";
15
15
  import { Hono } from "hono";
16
16
  import { cors } from "hono/cors";
17
+ import { proxy } from "hono/proxy";
17
18
  import { createLogger } from "./logger.js";
18
19
  // @ts-expect-error -- biome error
19
20
  const ENV_HOSTNAME = process.env.HOSTNAME || "0.0.0.0";
@@ -55,7 +56,7 @@ const startStandaloneServerWithCORS = async (server, options, allowedCORSOrigins
55
56
  const port = options.listen.port ?? 4000;
56
57
  await new Promise((resolve) => httpServer.listen({ port }, resolve));
57
58
  return {
58
- url: `http://${ENV_HOSTNAME}:${port}/`,
59
+ url: `http://${ENV_HOSTNAME}:${port}`,
59
60
  httpServer,
60
61
  };
61
62
  };
@@ -151,45 +152,72 @@ const isLocalRequest = (origin) => {
151
152
  };
152
153
  const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, allowedCORSOrigins, }) => {
153
154
  const logger = createLogger(logLevel);
155
+ const app = new Hono();
154
156
  // pass through to apollo server
155
157
  const passToApollo = async (c) => {
158
+ logger.debug("passToApollo: starting");
156
159
  // remove prefix
157
160
  // prefix = /app1/*, path = /app1/a/b
158
161
  // => suffix_path = /a/b
159
162
  // let path = new URL(c.req.raw.url).pathname
160
163
  let path = c.req.path;
161
- logger.debug("pass to apollo server", {
164
+ logger.debug("passToApollo: got path", {
162
165
  path,
166
+ routePath: c.req.routePath,
163
167
  });
164
168
  path = path.replace(new RegExp(`^${c.req.routePath.replace("*", "")}`), "/");
165
169
  let url = `http://${ENV_HOSTNAME}:${ports.apolloServer}${path}`;
166
170
  // add params to URL
167
171
  if (c.req.query())
168
172
  url = `${url}?${new URLSearchParams(c.req.query())}`;
173
+ logger.debug("passToApollo: built URL", { url });
169
174
  const sequenceId = c.req.header("sequence-id");
175
+ logger.debug("passToApollo: getting request body", { sequenceId });
170
176
  const requestBody = await c.req.raw.clone().json();
177
+ logger.debug("passToApollo: got request body", { requestBody });
171
178
  const operationName = typeof requestBody === "object" &&
172
179
  requestBody !== null &&
173
180
  "operationName" in requestBody
174
181
  ? requestBody.operationName
175
182
  : undefined;
176
183
  // request
177
- const rep = await fetch(url, {
178
- method: c.req.method,
179
- headers: c.req.raw.headers,
180
- body: c.req.raw.body,
181
- duplex: "half",
184
+ logger.debug("passToApollo: calling proxy", {
185
+ url,
186
+ sequenceId,
187
+ operationName,
188
+ headers: c.req.header(),
189
+ });
190
+ const proxyResponse = await proxy(url, {
191
+ raw: c.req.raw,
192
+ headers: {
193
+ ...c.req.header(),
194
+ },
195
+ });
196
+ logger.debug("passToApollo: proxy call completed", {
197
+ sequenceId,
198
+ operationName,
199
+ status: proxyResponse.status,
200
+ headers: Object.fromEntries(proxyResponse.headers),
182
201
  });
183
202
  // log response with pipe
184
- if (rep.status === 101)
185
- return rep;
203
+ if (proxyResponse.status === 101)
204
+ return proxyResponse;
186
205
  // save request and response for /called api
187
206
  if (sequenceId && typeof operationName === "string") {
188
- const responseBody = (await rep.clone().json());
207
+ logger.debug("passToApollo: getting response body for caching");
208
+ const responseBody = (await proxyResponse.clone().json());
209
+ logger.debug("passToApollo: parsed response body", {
210
+ responseBody,
211
+ });
189
212
  const cacheKey = createMapKey({
190
213
  sequenceId,
191
214
  operationName,
192
215
  });
216
+ logger.debug("save called result", {
217
+ sequenceId,
218
+ operationName,
219
+ cacheKey,
220
+ });
193
221
  sequenceCalledResultLruMap.set(cacheKey, [
194
222
  ...(sequenceCalledResultLruMap.get(cacheKey) ?? []),
195
223
  {
@@ -199,14 +227,19 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
199
227
  body: requestBody,
200
228
  },
201
229
  response: {
202
- status: rep.status,
203
- headers: Object.fromEntries(rep.headers),
230
+ status: proxyResponse.status,
231
+ headers: Object.fromEntries(proxyResponse.headers),
204
232
  body: responseBody,
205
233
  },
206
234
  },
207
235
  ]);
208
236
  }
209
- return new Response(rep.body, rep);
237
+ logger.debug("passToApollo: returning proxy response", {
238
+ sequenceId,
239
+ operationName,
240
+ status: proxyResponse.status,
241
+ });
242
+ return proxyResponse;
210
243
  };
211
244
  // sequenceId x operationName -> FakeResponse
212
245
  const sequenceFakeResponseLruMap = new LRUMap({
@@ -217,7 +250,6 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
217
250
  const sequenceCalledResultLruMap = new LRUMap({
218
251
  maxSize: maxRegisteredSequences,
219
252
  });
220
- const app = new Hono();
221
253
  // /fake api does not support CORS
222
254
  // because it allows any user to modify the response
223
255
  // If you need to support CORS, implement with checking the origin or something
@@ -293,7 +325,8 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
293
325
  });
294
326
  });
295
327
  const fakeGraphQLQuery = async (c) => {
296
- const requestTimestamp = Date.now();
328
+ logger.debug("fakeGraphQLQuery: starting");
329
+ const _requestTimestamp = Date.now();
297
330
  /**
298
331
  * Steps:
299
332
  * 1. Receive a request for a GraphQL query
@@ -305,7 +338,11 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
305
338
  * 5. Return the merged data
306
339
  */
307
340
  const sequenceId = c.req.header("sequence-id");
341
+ logger.debug("fakeGraphQLQuery: getting request body", { sequenceId });
308
342
  const requestBody = await c.req.raw.clone().json();
343
+ logger.debug("fakeGraphQLQuery: got request body", {
344
+ requestBody,
345
+ });
309
346
  const requestOperationName = typeof requestBody === "object" &&
310
347
  requestBody !== null &&
311
348
  "operationName" in requestBody &&
@@ -313,26 +350,33 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
313
350
  typeof requestBody.operationName === "string"
314
351
  ? requestBody.operationName
315
352
  : undefined;
316
- logger.debug(`operationName: ${requestOperationName} sequenceId: ${sequenceId}`, {
353
+ logger.debug(`fakeGraphQLQuery: operationName: ${requestOperationName} sequenceId: ${sequenceId}`, {
317
354
  sequenceId,
318
355
  });
319
356
  // 2. Does it contain a sequence id?
320
- if (!sequenceId)
357
+ if (!sequenceId) {
358
+ logger.debug("fakeGraphQLQuery: no sequenceId, passing to Apollo");
321
359
  return passToApollo(c);
322
- if (!requestOperationName)
360
+ }
361
+ if (!requestOperationName) {
362
+ logger.debug("fakeGraphQLQuery: no operationName, passing to Apollo");
323
363
  return passToApollo(c);
364
+ }
324
365
  const sequence = sequenceFakeResponseLruMap.get(createMapKey({
325
366
  sequenceId,
326
367
  operationName: requestOperationName,
327
368
  }));
328
- logger.debug(`/query: sequence-id: ${sequenceId} x operationName: ${requestOperationName}, sequence exists: ${Boolean(sequence)}`, {
369
+ logger.debug(`fakeGraphQLQuery: sequence-id: ${sequenceId} x operationName: ${requestOperationName}, sequence exists: ${Boolean(sequence)}`, {
329
370
  sequence,
330
371
  sequenceId,
331
372
  operationName: requestOperationName,
332
373
  });
333
- if (!sequence)
374
+ if (!sequence) {
375
+ logger.debug("fakeGraphQLQuery: no sequence found, passing to Apollo");
334
376
  return passToApollo(c);
377
+ }
335
378
  if (requestOperationName !== sequence.operationName) {
379
+ logger.debug("fakeGraphQLQuery: operationName mismatch, returning error");
336
380
  return Response.json(JSON.stringify({
337
381
  errors: [
338
382
  `operationName does not match. operationName: ${requestOperationName} sequenceId: ${sequenceId}`,
@@ -342,6 +386,7 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
342
386
  });
343
387
  }
344
388
  if (sequence.type === "network-error") {
389
+ logger.debug("fakeGraphQLQuery: network-error type, returning error");
345
390
  return new Response(JSON.stringify({
346
391
  errors: sequence.errors,
347
392
  }), {
@@ -349,32 +394,38 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
349
394
  });
350
395
  }
351
396
  // 3. Send a request to Apollo Server
352
- logger.debug("request to apollo-server", {
397
+ logger.debug("fakeGraphQLQuery: sending request to apollo server", {
353
398
  sequenceId,
354
399
  });
355
- const rep = await fetch(`http://${ENV_HOSTNAME}:${ports.apolloServer}/graphql`, {
356
- method: c.req.method,
357
- headers: c.req.raw.headers,
358
- body: c.req.raw.body,
359
- duplex: "half",
400
+ const proxyResponse = await proxy(`http://${ENV_HOSTNAME}:${ports.apolloServer}/graphql`, {
401
+ raw: c.req.raw,
402
+ headers: {
403
+ ...c.req.header(),
404
+ },
360
405
  });
361
- logger.debug("/query: response from apollo-server", {
406
+ logger.debug("fakeGraphQLQuery: apollo server response completed", {
362
407
  sequenceId,
363
- rep,
408
+ status: proxyResponse.status,
409
+ headers: Object.fromEntries(proxyResponse.headers),
364
410
  });
365
- if (rep.status === 101)
366
- return rep;
367
- // 4. Does the request contain a sequence id?
368
- const responseBody = await rep.json();
369
- // 5. Merge the registration data with the response from 2
411
+ if (proxyResponse.status === 101)
412
+ return proxyResponse;
413
+ // 4. Get response body
414
+ logger.debug("fakeGraphQLQuery: getting response body");
415
+ const responseBody = (await proxyResponse.json());
416
+ logger.debug("fakeGraphQLQuery: parsed response body", {
417
+ responseBody,
418
+ });
419
+ // 5. Merge the registration data with the response
370
420
  const data = sequence.data;
371
- logger.debug(`/query: merge sequence-id: ${sequenceId}`, {
421
+ logger.debug(`fakeGraphQLQuery: starting data merge sequence-id: ${sequenceId}`, {
372
422
  data,
373
423
  responseBody,
374
424
  });
425
+ // Use bracket notation for properties from index signature
426
+ const responseData = responseBody["data"];
375
427
  const merged = {
376
- //@ts-expect-error
377
- ...responseBody.data,
428
+ ...(typeof responseData === "object" && responseData !== null ? responseData : {}),
378
429
  ...data,
379
430
  };
380
431
  const cacheKey = createMapKey({
@@ -390,17 +441,24 @@ const createRoutingServer = async ({ logLevel, ports, maxRegisteredSequences, al
390
441
  body: requestBody,
391
442
  },
392
443
  response: {
393
- status: rep.status,
394
- headers: Object.fromEntries(rep.headers),
444
+ status: proxyResponse.status,
445
+ headers: Object.fromEntries(proxyResponse.headers),
395
446
  body: {
396
447
  data: merged,
397
448
  },
398
449
  },
399
450
  },
400
451
  ]);
401
- return Response.json({
402
- data: merged,
403
- }, rep);
452
+ logger.debug("fakeGraphQLQuery: merge completed, returning response");
453
+ // "content-length" should be matched from the response body length
454
+ const responseJson = JSON.stringify({ data: merged });
455
+ return new Response(responseJson, {
456
+ status: proxyResponse.status,
457
+ headers: {
458
+ "Content-Type": "application/json",
459
+ "Content-Length": responseJson.length.toString(),
460
+ },
461
+ });
404
462
  };
405
463
  // graphql api is for browser and need to support CORS
406
464
  app.use("/graphql", cors({
@@ -470,7 +528,7 @@ export const createFakeServerInternal = async (options) => {
470
528
  return {
471
529
  start: async () => {
472
530
  // Replace startStandaloneServer with our custom implementation
473
- const { url } = await startStandaloneServerWithCORS(apolloServer, {
531
+ await startStandaloneServerWithCORS(apolloServer, {
474
532
  listen: { port: options.ports.apolloServer },
475
533
  }, options.allowedCORSOrigins);
476
534
  routerServer = serve({
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,83 +1,84 @@
1
1
  {
2
- "name": "@newmo/graphql-fake-server",
3
- "version": "0.19.0",
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
- }
2
+ "name": "@newmo/graphql-fake-server",
3
+ "version": "0.19.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
+ }
30
23
  },
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": "tsc -p tsconfig.build.json",
44
- "build:esm": "tsc -p tsconfig.build.json",
45
- "lint": "tsc --noEmit",
46
- "test": "vitest run",
47
- "updateSnapshot": "vitest run -u"
48
- },
49
- "dependencies": {
50
- "@apollo/server": "^4.11.3",
51
- "@graphql-tools/mock": "^9.0.15",
52
- "@graphql-tools/schema": "^10.0.16",
53
- "@hono/node-server": "^1.13.8",
54
- "@newmo/graphql-fake-core": "0.19.0",
55
- "cors": "^2.8.5",
56
- "express": "^4.21.2",
57
- "graphql-depth-limit": "^1.1.0",
58
- "hono": "^4.7.0"
59
- },
60
- "devDependencies": {
61
- "@tsconfig/node18": "^18.2.0",
62
- "@tsconfig/strictest": "^2.0.1",
63
- "@types/cors": "^2.8.17",
64
- "@types/eslint": "^9.6.1",
65
- "@types/express": "^4.17.21",
66
- "@types/node": "^22.13.1",
67
- "graphql": "^16.10.0",
68
- "typescript": "^5.7.3",
69
- "vitest": "^3.0.5",
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": "45163d171085e62acfac5f5116d99cb4e7b1e200"
24
+ "./cli": {
25
+ "import": {
26
+ "types": "./dist/esm/cli.d.ts",
27
+ "default": "./dist/esm/cli.js"
28
+ }
29
+ }
30
+ },
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": "tsc -p tsconfig.build.json",
44
+ "build:esm": "tsc -p tsconfig.build.json",
45
+ "lint": "tsc --noEmit",
46
+ "test": "vitest run",
47
+ "updateSnapshot": "vitest run -u"
48
+ },
49
+ "dependencies": {
50
+ "@apollo/server": "^4.12.2",
51
+ "@as-integrations/express5": "^1.1.0",
52
+ "@graphql-tools/mock": "^9.0.23",
53
+ "@graphql-tools/schema": "^10.0.23",
54
+ "@hono/node-server": "^1.14.4",
55
+ "@newmo/graphql-fake-core": "0.19.1",
56
+ "cors": "^2.8.5",
57
+ "express": "^5.1.0",
58
+ "graphql-depth-limit": "^1.1.0",
59
+ "hono": "^4.8.0"
60
+ },
61
+ "devDependencies": {
62
+ "@tsconfig/node18": "^18.2.0",
63
+ "@tsconfig/strictest": "^2.0.1",
64
+ "@types/cors": "^2.8.19",
65
+ "@types/eslint": "^9.6.1",
66
+ "@types/express": "^5.0.3",
67
+ "@types/node": "^24.0.3",
68
+ "graphql": "^16.11.0",
69
+ "typescript": "^5.8.3",
70
+ "vitest": "^3.2.4",
71
+ "vitest-github-actions-reporter": "^0.11.1"
72
+ },
73
+ "peerDependencies": {
74
+ "graphql": "^16.8.1"
75
+ },
76
+ "engines": {
77
+ "node": ">=18.0.0"
78
+ },
79
+ "publishConfig": {
80
+ "access": "public",
81
+ "registry": "https://registry.npmjs.org/"
82
+ },
83
+ "gitHead": "0bd15a2a4307c7be9c9ae673bdc305bef561d30c"
83
84
  }
package/src/cli.ts CHANGED
@@ -1,13 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { parseArgs } from "node:util";
3
- import {
4
- loadConfig,
5
- loadFakeServerConfigFromCLI,
6
- normalizeFakeServerConfig,
7
- validateFakeServerConfig,
8
- } from "./config.js";
3
+ import { loadConfig, loadFakeServerConfigFromCLI } from "./config.js";
9
4
  import { createFakeServer } from "./index.js";
10
- import { type LogLevel, createLogger } from "./logger.js";
5
+ import { createLogger, type LogLevel } from "./logger.js";
11
6
 
12
7
  const HELP = `
13
8
  Usage: npx @newmo/graphql-fake-server --schema <path> [options]
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { createFakeServer } from "./server.js";
2
- export type { CreateFakeServerOptions } from "./server.js";
3
1
  export type {
4
2
  FakeServerConfig,
5
3
  RequiredFakeServerConfig,
6
4
  } from "./config.js";
7
5
  export { normalizeFakeServerConfig, validateFakeServerConfig } from "./config.js";
6
+ export type { CreateFakeServerOptions } from "./server.js";
7
+ export { createFakeServer } from "./server.js";
package/src/server.ts CHANGED
@@ -1,22 +1,23 @@
1
1
  import fs from "node:fs/promises";
2
2
  import http from "node:http";
3
3
  import { ApolloServer } from "@apollo/server";
4
- import { expressMiddleware } from "@apollo/server/express4";
5
4
  import { ApolloServerPluginDrainHttpServer } from "@apollo/server/plugin/drainHttpServer";
5
+ import { expressMiddleware } from "@as-integrations/express5";
6
6
  import { addMocksToSchema } from "@graphql-tools/mock";
7
7
  import { makeExecutableSchema } from "@graphql-tools/schema";
8
8
  import { serve } from "@hono/node-server";
9
- import { type MockObject, createMock } from "@newmo/graphql-fake-core";
9
+ import { createMock, type MockObject } from "@newmo/graphql-fake-core";
10
10
  import corsExpress from "cors";
11
11
  import express from "express";
12
- // @ts-expect-error -- no types
13
- import depthLimit from "graphql-depth-limit";
14
12
  import type { GraphQLSchema } from "graphql/index.js";
15
13
  import { buildSchema } from "graphql/utilities/index.js";
14
+ // @ts-expect-error -- no types
15
+ import depthLimit from "graphql-depth-limit";
16
16
  import { type Context, Hono } from "hono";
17
17
  import { cors } from "hono/cors";
18
+ import { proxy } from "hono/proxy";
18
19
  import type { RequiredFakeServerConfig } from "./config.js";
19
- import { type LogLevel, createLogger } from "./logger.js";
20
+ import { createLogger, type LogLevel } from "./logger.js";
20
21
 
21
22
  // @ts-expect-error -- biome error
22
23
  const ENV_HOSTNAME = process.env.HOSTNAME || "0.0.0.0";
@@ -94,7 +95,7 @@ const startStandaloneServerWithCORS = async (
94
95
  await new Promise<void>((resolve) => httpServer.listen({ port }, resolve));
95
96
 
96
97
  return {
97
- url: `http://${ENV_HOSTNAME}:${port}/`,
98
+ url: `http://${ENV_HOSTNAME}:${port}`,
98
99
  httpServer,
99
100
  };
100
101
  };
@@ -208,7 +209,10 @@ class LRUMap<K, V> {
208
209
  const createMapKey = ({
209
210
  sequenceId,
210
211
  operationName,
211
- }: { sequenceId: string; operationName: string }) => {
212
+ }: {
213
+ sequenceId: string;
214
+ operationName: string;
215
+ }) => {
212
216
  return `${sequenceId}.${operationName}`;
213
217
  };
214
218
 
@@ -253,44 +257,81 @@ const createRoutingServer = async ({
253
257
  allowedCORSOrigins: string[];
254
258
  }) => {
255
259
  const logger = createLogger(logLevel);
260
+ const app = new Hono();
256
261
  // pass through to apollo server
257
262
  const passToApollo = async (c: Context) => {
263
+ logger.debug("passToApollo: starting");
258
264
  // remove prefix
259
265
  // prefix = /app1/*, path = /app1/a/b
260
266
  // => suffix_path = /a/b
261
267
  // let path = new URL(c.req.raw.url).pathname
262
268
  let path = c.req.path;
263
- logger.debug("pass to apollo server", {
269
+ logger.debug("passToApollo: got path", {
264
270
  path,
271
+ routePath: c.req.routePath,
265
272
  });
266
273
  path = path.replace(new RegExp(`^${c.req.routePath.replace("*", "")}`), "/");
267
274
  let url = `http://${ENV_HOSTNAME}:${ports.apolloServer}${path}`;
268
275
  // add params to URL
269
276
  if (c.req.query()) url = `${url}?${new URLSearchParams(c.req.query())}`;
277
+ logger.debug("passToApollo: built URL", { url });
278
+
270
279
  const sequenceId = c.req.header("sequence-id");
280
+ logger.debug("passToApollo: getting request body", { sequenceId });
281
+
271
282
  const requestBody = await c.req.raw.clone().json();
283
+ logger.debug("passToApollo: got request body", { requestBody });
284
+
272
285
  const operationName =
273
286
  typeof requestBody === "object" &&
274
287
  requestBody !== null &&
275
288
  "operationName" in requestBody
276
289
  ? requestBody.operationName
277
290
  : undefined;
291
+
278
292
  // request
279
- const rep = await fetch(url, {
280
- method: c.req.method,
281
- headers: c.req.raw.headers,
282
- body: c.req.raw.body,
283
- duplex: "half",
293
+ logger.debug("passToApollo: calling proxy", {
294
+ url,
295
+ sequenceId,
296
+ operationName,
297
+ headers: c.req.header(),
298
+ });
299
+
300
+ const proxyResponse = await proxy(url, {
301
+ raw: c.req.raw,
302
+ headers: {
303
+ ...c.req.header(),
304
+ },
284
305
  });
306
+
307
+ logger.debug("passToApollo: proxy call completed", {
308
+ sequenceId,
309
+ operationName,
310
+ status: proxyResponse.status,
311
+ headers: Object.fromEntries(proxyResponse.headers),
312
+ });
313
+
285
314
  // log response with pipe
286
- if (rep.status === 101) return rep;
315
+ if (proxyResponse.status === 101) return proxyResponse;
316
+
287
317
  // save request and response for /called api
288
318
  if (sequenceId && typeof operationName === "string") {
289
- const responseBody = (await rep.clone().json()) as Record<string, unknown>;
319
+ logger.debug("passToApollo: getting response body for caching");
320
+ const responseBody = (await proxyResponse.clone().json()) as Record<string, unknown>;
321
+ logger.debug("passToApollo: parsed response body", {
322
+ responseBody,
323
+ });
324
+
290
325
  const cacheKey = createMapKey({
291
326
  sequenceId,
292
327
  operationName,
293
328
  });
329
+ logger.debug("save called result", {
330
+ sequenceId,
331
+ operationName,
332
+ cacheKey,
333
+ });
334
+
294
335
  sequenceCalledResultLruMap.set(cacheKey, [
295
336
  ...(sequenceCalledResultLruMap.get(cacheKey) ?? []),
296
337
  {
@@ -300,14 +341,20 @@ const createRoutingServer = async ({
300
341
  body: requestBody as Record<string, unknown>,
301
342
  },
302
343
  response: {
303
- status: rep.status,
304
- headers: Object.fromEntries(rep.headers),
344
+ status: proxyResponse.status,
345
+ headers: Object.fromEntries(proxyResponse.headers),
305
346
  body: responseBody,
306
347
  },
307
348
  },
308
349
  ]);
309
350
  }
310
- return new Response(rep.body, rep);
351
+
352
+ logger.debug("passToApollo: returning proxy response", {
353
+ sequenceId,
354
+ operationName,
355
+ status: proxyResponse.status,
356
+ });
357
+ return proxyResponse;
311
358
  };
312
359
  // sequenceId x operationName -> FakeResponse
313
360
  const sequenceFakeResponseLruMap = new LRUMap<string, RegisterSequenceOptions>({
@@ -318,7 +365,6 @@ const createRoutingServer = async ({
318
365
  const sequenceCalledResultLruMap = new LRUMap<string, CalledResult[]>({
319
366
  maxSize: maxRegisteredSequences,
320
367
  });
321
- const app = new Hono();
322
368
  // /fake api does not support CORS
323
369
  // because it allows any user to modify the response
324
370
  // If you need to support CORS, implement with checking the origin or something
@@ -412,7 +458,8 @@ const createRoutingServer = async ({
412
458
  );
413
459
  });
414
460
  const fakeGraphQLQuery = async (c: Context) => {
415
- const requestTimestamp = Date.now();
461
+ logger.debug("fakeGraphQLQuery: starting");
462
+ const _requestTimestamp = Date.now();
416
463
  /**
417
464
  * Steps:
418
465
  * 1. Receive a request for a GraphQL query
@@ -424,7 +471,13 @@ const createRoutingServer = async ({
424
471
  * 5. Return the merged data
425
472
  */
426
473
  const sequenceId = c.req.header("sequence-id");
474
+
475
+ logger.debug("fakeGraphQLQuery: getting request body", { sequenceId });
427
476
  const requestBody = await c.req.raw.clone().json();
477
+ logger.debug("fakeGraphQLQuery: got request body", {
478
+ requestBody,
479
+ });
480
+
428
481
  const requestOperationName =
429
482
  typeof requestBody === "object" &&
430
483
  requestBody !== null &&
@@ -433,12 +486,22 @@ const createRoutingServer = async ({
433
486
  typeof requestBody.operationName === "string"
434
487
  ? requestBody.operationName
435
488
  : undefined;
436
- logger.debug(`operationName: ${requestOperationName} sequenceId: ${sequenceId}`, {
437
- sequenceId,
438
- });
489
+ logger.debug(
490
+ `fakeGraphQLQuery: operationName: ${requestOperationName} sequenceId: ${sequenceId}`,
491
+ {
492
+ sequenceId,
493
+ },
494
+ );
439
495
  // 2. Does it contain a sequence id?
440
- if (!sequenceId) return passToApollo(c);
441
- if (!requestOperationName) return passToApollo(c);
496
+ if (!sequenceId) {
497
+ logger.debug("fakeGraphQLQuery: no sequenceId, passing to Apollo");
498
+ return passToApollo(c);
499
+ }
500
+ if (!requestOperationName) {
501
+ logger.debug("fakeGraphQLQuery: no operationName, passing to Apollo");
502
+ return passToApollo(c);
503
+ }
504
+
442
505
  const sequence = sequenceFakeResponseLruMap.get(
443
506
  createMapKey({
444
507
  sequenceId,
@@ -446,7 +509,7 @@ const createRoutingServer = async ({
446
509
  }),
447
510
  );
448
511
  logger.debug(
449
- `/query: sequence-id: ${sequenceId} x operationName: ${requestOperationName}, sequence exists: ${Boolean(
512
+ `fakeGraphQLQuery: sequence-id: ${sequenceId} x operationName: ${requestOperationName}, sequence exists: ${Boolean(
450
513
  sequence,
451
514
  )}`,
452
515
  {
@@ -455,8 +518,13 @@ const createRoutingServer = async ({
455
518
  operationName: requestOperationName,
456
519
  },
457
520
  );
458
- if (!sequence) return passToApollo(c);
521
+ if (!sequence) {
522
+ logger.debug("fakeGraphQLQuery: no sequence found, passing to Apollo");
523
+ return passToApollo(c);
524
+ }
525
+
459
526
  if (requestOperationName !== sequence.operationName) {
527
+ logger.debug("fakeGraphQLQuery: operationName mismatch, returning error");
460
528
  return Response.json(
461
529
  JSON.stringify({
462
530
  errors: [
@@ -468,7 +536,9 @@ const createRoutingServer = async ({
468
536
  },
469
537
  );
470
538
  }
539
+
471
540
  if (sequence.type === "network-error") {
541
+ logger.debug("fakeGraphQLQuery: network-error type, returning error");
472
542
  return new Response(
473
543
  JSON.stringify({
474
544
  errors: sequence.errors,
@@ -478,34 +548,47 @@ const createRoutingServer = async ({
478
548
  },
479
549
  );
480
550
  }
551
+
481
552
  // 3. Send a request to Apollo Server
482
- logger.debug("request to apollo-server", {
553
+ logger.debug("fakeGraphQLQuery: sending request to apollo server", {
483
554
  sequenceId,
484
555
  });
485
- const rep = await fetch(`http://${ENV_HOSTNAME}:${ports.apolloServer}/graphql`, {
486
- method: c.req.method,
487
- headers: c.req.raw.headers,
488
- body: c.req.raw.body,
489
- duplex: "half",
556
+
557
+ const proxyResponse = await proxy(`http://${ENV_HOSTNAME}:${ports.apolloServer}/graphql`, {
558
+ raw: c.req.raw,
559
+ headers: {
560
+ ...c.req.header(),
561
+ },
490
562
  });
491
- logger.debug("/query: response from apollo-server", {
563
+
564
+ logger.debug("fakeGraphQLQuery: apollo server response completed", {
492
565
  sequenceId,
493
- rep,
566
+ status: proxyResponse.status,
567
+ headers: Object.fromEntries(proxyResponse.headers),
568
+ });
569
+
570
+ if (proxyResponse.status === 101) return proxyResponse;
571
+
572
+ // 4. Get response body
573
+ logger.debug("fakeGraphQLQuery: getting response body");
574
+ const responseBody = (await proxyResponse.json()) as Record<string, unknown>;
575
+ logger.debug("fakeGraphQLQuery: parsed response body", {
576
+ responseBody,
494
577
  });
495
- if (rep.status === 101) return rep;
496
- // 4. Does the request contain a sequence id?
497
- const responseBody = await rep.json();
498
- // 5. Merge the registration data with the response from 2
578
+
579
+ // 5. Merge the registration data with the response
499
580
  const data = sequence.data;
500
- logger.debug(`/query: merge sequence-id: ${sequenceId}`, {
581
+ logger.debug(`fakeGraphQLQuery: starting data merge sequence-id: ${sequenceId}`, {
501
582
  data,
502
583
  responseBody,
503
584
  });
585
+ // Use bracket notation for properties from index signature
586
+ const responseData = responseBody["data"] as any;
504
587
  const merged = {
505
- //@ts-expect-error
506
- ...responseBody.data,
588
+ ...(typeof responseData === "object" && responseData !== null ? responseData : {}),
507
589
  ...data,
508
590
  };
591
+
509
592
  const cacheKey = createMapKey({
510
593
  sequenceId,
511
594
  operationName: requestOperationName,
@@ -519,20 +602,25 @@ const createRoutingServer = async ({
519
602
  body: requestBody as Record<string, unknown>,
520
603
  },
521
604
  response: {
522
- status: rep.status,
523
- headers: Object.fromEntries(rep.headers),
605
+ status: proxyResponse.status,
606
+ headers: Object.fromEntries(proxyResponse.headers),
524
607
  body: {
525
608
  data: merged,
526
609
  },
527
610
  },
528
611
  },
529
612
  ]);
530
- return Response.json(
531
- {
532
- data: merged,
613
+
614
+ logger.debug("fakeGraphQLQuery: merge completed, returning response");
615
+ // "content-length" should be matched from the response body length
616
+ const responseJson = JSON.stringify({ data: merged });
617
+ return new Response(responseJson, {
618
+ status: proxyResponse.status,
619
+ headers: {
620
+ "Content-Type": "application/json",
621
+ "Content-Length": responseJson.length.toString(),
533
622
  },
534
- rep,
535
- );
623
+ });
536
624
  };
537
625
  // graphql api is for browser and need to support CORS
538
626
  app.use(
@@ -618,7 +706,7 @@ export const createFakeServerInternal = async (options: FakeServerInternal) => {
618
706
  return {
619
707
  start: async () => {
620
708
  // Replace startStandaloneServer with our custom implementation
621
- const { url } = await startStandaloneServerWithCORS(
709
+ await startStandaloneServerWithCORS(
622
710
  apolloServer,
623
711
  {
624
712
  listen: { port: options.ports.apolloServer },