@effect-gql/core 0.1.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/LICENSE +7 -0
- package/dist/analyzer-extension.d.ts +105 -0
- package/dist/analyzer-extension.d.ts.map +1 -0
- package/dist/analyzer-extension.js +137 -0
- package/dist/analyzer-extension.js.map +1 -0
- package/dist/builder/execute.d.ts +26 -0
- package/dist/builder/execute.d.ts.map +1 -0
- package/dist/builder/execute.js +104 -0
- package/dist/builder/execute.js.map +1 -0
- package/dist/builder/field-builders.d.ts +30 -0
- package/dist/builder/field-builders.d.ts.map +1 -0
- package/dist/builder/field-builders.js +200 -0
- package/dist/builder/field-builders.js.map +1 -0
- package/dist/builder/index.d.ts +7 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +31 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/pipe-api.d.ts +231 -0
- package/dist/builder/pipe-api.d.ts.map +1 -0
- package/dist/builder/pipe-api.js +151 -0
- package/dist/builder/pipe-api.js.map +1 -0
- package/dist/builder/schema-builder.d.ts +301 -0
- package/dist/builder/schema-builder.d.ts.map +1 -0
- package/dist/builder/schema-builder.js +566 -0
- package/dist/builder/schema-builder.js.map +1 -0
- package/dist/builder/type-registry.d.ts +80 -0
- package/dist/builder/type-registry.d.ts.map +1 -0
- package/dist/builder/type-registry.js +505 -0
- package/dist/builder/type-registry.js.map +1 -0
- package/dist/builder/types.d.ts +283 -0
- package/dist/builder/types.d.ts.map +1 -0
- package/dist/builder/types.js +3 -0
- package/dist/builder/types.js.map +1 -0
- package/dist/cli/generate-schema.d.ts +29 -0
- package/dist/cli/generate-schema.d.ts.map +1 -0
- package/dist/cli/generate-schema.js +233 -0
- package/dist/cli/generate-schema.js.map +1 -0
- package/dist/cli/index.d.ts +19 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +24 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/context.d.ts +18 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +11 -0
- package/dist/context.js.map +1 -0
- package/dist/error.d.ts +45 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +29 -0
- package/dist/error.js.map +1 -0
- package/dist/extensions.d.ts +130 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +78 -0
- package/dist/extensions.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +169 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +237 -0
- package/dist/loader.js.map +1 -0
- package/dist/resolver-context.d.ts +154 -0
- package/dist/resolver-context.d.ts.map +1 -0
- package/dist/resolver-context.js +184 -0
- package/dist/resolver-context.js.map +1 -0
- package/dist/schema-mapping.d.ts +30 -0
- package/dist/schema-mapping.d.ts.map +1 -0
- package/dist/schema-mapping.js +280 -0
- package/dist/schema-mapping.js.map +1 -0
- package/dist/server/cache-control.d.ts +96 -0
- package/dist/server/cache-control.d.ts.map +1 -0
- package/dist/server/cache-control.js +308 -0
- package/dist/server/cache-control.js.map +1 -0
- package/dist/server/complexity.d.ts +165 -0
- package/dist/server/complexity.d.ts.map +1 -0
- package/dist/server/complexity.js +433 -0
- package/dist/server/complexity.js.map +1 -0
- package/dist/server/config.d.ts +66 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +104 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/graphiql.d.ts +5 -0
- package/dist/server/graphiql.d.ts.map +1 -0
- package/dist/server/graphiql.js +43 -0
- package/dist/server/graphiql.js.map +1 -0
- package/dist/server/index.d.ts +18 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +48 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/router.d.ts +79 -0
- package/dist/server/router.d.ts.map +1 -0
- package/dist/server/router.js +232 -0
- package/dist/server/router.js.map +1 -0
- package/dist/server/schema-builder-extensions.d.ts +42 -0
- package/dist/server/schema-builder-extensions.d.ts.map +1 -0
- package/dist/server/schema-builder-extensions.js +48 -0
- package/dist/server/schema-builder-extensions.js.map +1 -0
- package/dist/server/sse-adapter.d.ts +64 -0
- package/dist/server/sse-adapter.d.ts.map +1 -0
- package/dist/server/sse-adapter.js +227 -0
- package/dist/server/sse-adapter.js.map +1 -0
- package/dist/server/sse-types.d.ts +192 -0
- package/dist/server/sse-types.d.ts.map +1 -0
- package/dist/server/sse-types.js +63 -0
- package/dist/server/sse-types.js.map +1 -0
- package/dist/server/ws-adapter.d.ts +39 -0
- package/dist/server/ws-adapter.d.ts.map +1 -0
- package/dist/server/ws-adapter.js +247 -0
- package/dist/server/ws-adapter.js.map +1 -0
- package/dist/server/ws-types.d.ts +169 -0
- package/dist/server/ws-types.d.ts.map +1 -0
- package/dist/server/ws-types.js +11 -0
- package/dist/server/ws-types.js.map +1 -0
- package/dist/server/ws-utils.d.ts +42 -0
- package/dist/server/ws-utils.d.ts.map +1 -0
- package/dist/server/ws-utils.js +99 -0
- package/dist/server/ws-utils.js.map +1 -0
- package/package.json +61 -0
- package/src/analyzer-extension.ts +254 -0
- package/src/builder/execute.ts +153 -0
- package/src/builder/field-builders.ts +322 -0
- package/src/builder/index.ts +48 -0
- package/src/builder/pipe-api.ts +312 -0
- package/src/builder/schema-builder.ts +970 -0
- package/src/builder/type-registry.ts +670 -0
- package/src/builder/types.ts +305 -0
- package/src/context.ts +23 -0
- package/src/error.ts +32 -0
- package/src/extensions.ts +240 -0
- package/src/index.ts +32 -0
- package/src/loader.ts +363 -0
- package/src/resolver-context.ts +253 -0
- package/src/schema-mapping.ts +307 -0
- package/src/server/cache-control.ts +590 -0
- package/src/server/complexity.ts +774 -0
- package/src/server/config.ts +174 -0
- package/src/server/graphiql.ts +38 -0
- package/src/server/index.ts +96 -0
- package/src/server/router.ts +432 -0
- package/src/server/schema-builder-extensions.ts +51 -0
- package/src/server/sse-adapter.ts +327 -0
- package/src/server/sse-types.ts +234 -0
- package/src/server/ws-adapter.ts +355 -0
- package/src/server/ws-types.ts +192 -0
- package/src/server/ws-utils.ts +136 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-registry.d.ts","sourceRoot":"","sources":["../../src/builder/type-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AACvC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EAEtB,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAEhB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CAoBjF;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC9C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACpC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC1C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACpD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC1C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IAElD,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IACvD,aAAa,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACpC,qBAAqB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IAC5D,kBAAkB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzC,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAErC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IACjD,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IAEjD,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAmDpE;AAKD;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,mBAAmB,EACxE,IAAI,EAAE,CAAC,GACN,cAAc,CAAC,CAAC,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/B,GAAG,EAAE,qBAAqB,GACzB,GAAG,CA2CL;AAyKD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/B,GAAG,EAAE,qBAAqB,GACzB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAoCjC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpC,KAAK,CAAC,EAAE,oBAAoB,GAC3B,0BAA0B,CA8B5B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IACxD,cAAc,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;CAClD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACnC,oBAAoB,CAuBtB;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpC,KAAK,CAAC,EAAE,oBAAoB,GAC3B,GAAG,CAqHL;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC1C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAClD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpC,KAAK,CAAC,EAAE,oBAAoB,GAC3B,GAAG,CA+BL"}
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getSchemaName = getSchemaName;
|
|
37
|
+
exports.buildReverseLookups = buildReverseLookups;
|
|
38
|
+
exports.getNonNull = getNonNull;
|
|
39
|
+
exports.toGraphQLTypeWithRegistry = toGraphQLTypeWithRegistry;
|
|
40
|
+
exports.schemaToFields = schemaToFields;
|
|
41
|
+
exports.schemaToInputFields = schemaToInputFields;
|
|
42
|
+
exports.buildInputTypeLookupCache = buildInputTypeLookupCache;
|
|
43
|
+
exports.toGraphQLInputTypeWithRegistry = toGraphQLInputTypeWithRegistry;
|
|
44
|
+
exports.toGraphQLArgsWithRegistry = toGraphQLArgsWithRegistry;
|
|
45
|
+
const S = __importStar(require("effect/Schema"));
|
|
46
|
+
const AST = __importStar(require("effect/SchemaAST"));
|
|
47
|
+
const graphql_1 = require("graphql");
|
|
48
|
+
const schema_mapping_1 = require("../schema-mapping");
|
|
49
|
+
/**
|
|
50
|
+
* Extract type name from a schema if it has one.
|
|
51
|
+
* Supports:
|
|
52
|
+
* - S.TaggedStruct("Name", {...}) - extracts from _tag literal
|
|
53
|
+
* - S.TaggedClass()("Name", {...}) - extracts from identifier annotation
|
|
54
|
+
* - S.Class<T>("Name")({...}) - extracts from identifier annotation
|
|
55
|
+
*/
|
|
56
|
+
function getSchemaName(schema) {
|
|
57
|
+
const ast = schema.ast;
|
|
58
|
+
// Handle Transformation (Schema.Class, TaggedClass)
|
|
59
|
+
if (ast._tag === "Transformation") {
|
|
60
|
+
const identifier = AST.getIdentifierAnnotation(ast.to);
|
|
61
|
+
if (identifier._tag === "Some") {
|
|
62
|
+
return identifier.value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Handle TypeLiteral (TaggedStruct)
|
|
66
|
+
if (ast._tag === "TypeLiteral") {
|
|
67
|
+
const tagProp = ast.propertySignatures.find((p) => String(p.name) === "_tag");
|
|
68
|
+
if (tagProp && tagProp.type._tag === "Literal" && typeof tagProp.type.literal === "string") {
|
|
69
|
+
return tagProp.type.literal;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Build reverse lookup maps from registration maps for O(1) type resolution
|
|
76
|
+
*/
|
|
77
|
+
function buildReverseLookups(ctx) {
|
|
78
|
+
// Build schema/AST -> type name lookups
|
|
79
|
+
if (!ctx.schemaToTypeName) {
|
|
80
|
+
ctx.schemaToTypeName = new Map();
|
|
81
|
+
ctx.astToTypeName = new Map();
|
|
82
|
+
for (const [typeName, typeReg] of ctx.types) {
|
|
83
|
+
ctx.schemaToTypeName.set(typeReg.schema, typeName);
|
|
84
|
+
ctx.astToTypeName.set(typeReg.schema.ast, typeName);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Build schema/AST -> interface name lookups
|
|
88
|
+
if (!ctx.schemaToInterfaceName) {
|
|
89
|
+
ctx.schemaToInterfaceName = new Map();
|
|
90
|
+
ctx.astToInterfaceName = new Map();
|
|
91
|
+
for (const [interfaceName, interfaceReg] of ctx.interfaces) {
|
|
92
|
+
ctx.schemaToInterfaceName.set(interfaceReg.schema, interfaceName);
|
|
93
|
+
ctx.astToInterfaceName.set(interfaceReg.schema.ast, interfaceName);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Build schema/AST -> input name lookups
|
|
97
|
+
if (!ctx.schemaToInputName) {
|
|
98
|
+
ctx.schemaToInputName = new Map();
|
|
99
|
+
ctx.astToInputName = new Map();
|
|
100
|
+
for (const [inputName, inputReg] of ctx.inputs) {
|
|
101
|
+
ctx.schemaToInputName.set(inputReg.schema, inputName);
|
|
102
|
+
ctx.astToInputName.set(inputReg.schema.ast, inputName);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Build cached sorted enum values and literal -> enum lookup
|
|
106
|
+
if (!ctx.enumSortedValues) {
|
|
107
|
+
ctx.enumSortedValues = new Map();
|
|
108
|
+
ctx.literalToEnumName = new Map();
|
|
109
|
+
for (const [enumName, enumReg] of ctx.enums) {
|
|
110
|
+
ctx.enumSortedValues.set(enumName, [...enumReg.values].sort());
|
|
111
|
+
// Build literal -> enum reverse lookup for O(1) single literal lookups
|
|
112
|
+
for (const value of enumReg.values) {
|
|
113
|
+
ctx.literalToEnumName.set(value, enumName);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Build cached sorted union types
|
|
118
|
+
if (!ctx.unionSortedTypes) {
|
|
119
|
+
ctx.unionSortedTypes = new Map();
|
|
120
|
+
for (const [unionName, unionReg] of ctx.unions) {
|
|
121
|
+
ctx.unionSortedTypes.set(unionName, [...unionReg.types].sort());
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// GraphQLNonNull wrapper cache for memoization
|
|
126
|
+
const nonNullCache = new WeakMap();
|
|
127
|
+
/**
|
|
128
|
+
* Get or create a GraphQLNonNull wrapper (memoized)
|
|
129
|
+
*/
|
|
130
|
+
function getNonNull(type) {
|
|
131
|
+
let cached = nonNullCache.get(type);
|
|
132
|
+
if (!cached) {
|
|
133
|
+
cached = new graphql_1.GraphQLNonNull(type);
|
|
134
|
+
nonNullCache.set(type, cached);
|
|
135
|
+
}
|
|
136
|
+
return cached;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Convert schema to GraphQL type, checking registry first for registered types
|
|
140
|
+
*/
|
|
141
|
+
function toGraphQLTypeWithRegistry(schema, ctx) {
|
|
142
|
+
// Ensure reverse lookup maps are built
|
|
143
|
+
buildReverseLookups(ctx);
|
|
144
|
+
const ast = schema.ast;
|
|
145
|
+
// Check registered object types first
|
|
146
|
+
const registeredType = findRegisteredType(schema, ast, ctx);
|
|
147
|
+
if (registeredType)
|
|
148
|
+
return registeredType;
|
|
149
|
+
// Check registered interfaces
|
|
150
|
+
const registeredInterface = findRegisteredInterface(schema, ast, ctx);
|
|
151
|
+
if (registeredInterface)
|
|
152
|
+
return registeredInterface;
|
|
153
|
+
// Handle transformations (like S.Array, S.optional, etc)
|
|
154
|
+
if (ast._tag === "Transformation") {
|
|
155
|
+
return handleTransformationAST(ast, ctx);
|
|
156
|
+
}
|
|
157
|
+
// Handle unions (enum literals or object type unions)
|
|
158
|
+
if (ast._tag === "Union") {
|
|
159
|
+
return handleUnionAST(ast, ctx);
|
|
160
|
+
}
|
|
161
|
+
// Check single literal for enum match
|
|
162
|
+
if (ast._tag === "Literal") {
|
|
163
|
+
const enumType = findEnumForLiteral(ast, ctx);
|
|
164
|
+
if (enumType)
|
|
165
|
+
return enumType;
|
|
166
|
+
}
|
|
167
|
+
// Handle tuple types (readonly arrays)
|
|
168
|
+
if (ast._tag === "TupleType") {
|
|
169
|
+
return handleTupleTypeAST(ast, ctx);
|
|
170
|
+
}
|
|
171
|
+
// Handle Suspend (recursive/self-referential schemas)
|
|
172
|
+
if (ast._tag === "Suspend") {
|
|
173
|
+
const innerAst = ast.f();
|
|
174
|
+
return toGraphQLTypeWithRegistry(S.make(innerAst), ctx);
|
|
175
|
+
}
|
|
176
|
+
// Fall back to default conversion
|
|
177
|
+
return (0, schema_mapping_1.toGraphQLType)(schema);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Find a registered object type matching this schema (O(1) with reverse lookup)
|
|
181
|
+
*/
|
|
182
|
+
function findRegisteredType(schema, ast, ctx) {
|
|
183
|
+
// Use reverse lookup maps for O(1) lookup
|
|
184
|
+
const typeName = ctx.schemaToTypeName?.get(schema) ?? ctx.astToTypeName?.get(ast);
|
|
185
|
+
if (typeName) {
|
|
186
|
+
return ctx.typeRegistry.get(typeName);
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Find a registered interface matching this schema (O(1) with reverse lookup)
|
|
192
|
+
*/
|
|
193
|
+
function findRegisteredInterface(schema, ast, ctx) {
|
|
194
|
+
// Use reverse lookup maps for O(1) lookup
|
|
195
|
+
const interfaceName = ctx.schemaToInterfaceName?.get(schema) ?? ctx.astToInterfaceName?.get(ast);
|
|
196
|
+
if (interfaceName) {
|
|
197
|
+
return ctx.interfaceRegistry.get(interfaceName);
|
|
198
|
+
}
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Handle Transformation AST nodes (arrays, optional, Schema.Class, etc.)
|
|
203
|
+
*/
|
|
204
|
+
function handleTransformationAST(ast, ctx) {
|
|
205
|
+
const toAst = ast.to;
|
|
206
|
+
// Check if it's an array (readonly array on the to side)
|
|
207
|
+
if (toAst._tag === "TupleType") {
|
|
208
|
+
if (toAst.rest && toAst.rest.length > 0) {
|
|
209
|
+
const elementSchema = S.make(toAst.rest[0].type);
|
|
210
|
+
const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
|
|
211
|
+
return new graphql_1.GraphQLList(elementType);
|
|
212
|
+
}
|
|
213
|
+
else if (toAst.elements.length > 0) {
|
|
214
|
+
const elementSchema = S.make(toAst.elements[0].type);
|
|
215
|
+
const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
|
|
216
|
+
return new graphql_1.GraphQLList(elementType);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Other transformations - recurse on the "to" side
|
|
220
|
+
return toGraphQLTypeWithRegistry(S.make(ast.to), ctx);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Handle Union AST nodes (literal enums or object type unions)
|
|
224
|
+
*/
|
|
225
|
+
function handleUnionAST(ast, ctx) {
|
|
226
|
+
const allLiterals = ast.types.every((t) => t._tag === "Literal");
|
|
227
|
+
if (allLiterals) {
|
|
228
|
+
// This might be an enum
|
|
229
|
+
const enumType = findEnumForLiteralUnion(ast.types, ctx);
|
|
230
|
+
if (enumType)
|
|
231
|
+
return enumType;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// This is a Union of object types - check if it matches a registered union
|
|
235
|
+
const unionType = findRegisteredUnion(ast.types, ctx);
|
|
236
|
+
if (unionType)
|
|
237
|
+
return unionType;
|
|
238
|
+
}
|
|
239
|
+
// Fallback: use first type
|
|
240
|
+
if (ast.types.length > 0) {
|
|
241
|
+
return toGraphQLTypeWithRegistry(S.make(ast.types[0]), ctx);
|
|
242
|
+
}
|
|
243
|
+
return (0, schema_mapping_1.toGraphQLType)(S.make(ast));
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Find a registered enum matching a union of literals (uses cached sorted values)
|
|
247
|
+
*/
|
|
248
|
+
function findEnumForLiteralUnion(types, ctx) {
|
|
249
|
+
const literalValues = types.map((t) => String(t.literal)).sort();
|
|
250
|
+
for (const [enumName] of ctx.enums) {
|
|
251
|
+
// Use cached sorted values instead of sorting on every comparison
|
|
252
|
+
const enumValues = ctx.enumSortedValues?.get(enumName);
|
|
253
|
+
if (enumValues &&
|
|
254
|
+
literalValues.length === enumValues.length &&
|
|
255
|
+
literalValues.every((v, i) => v === enumValues[i])) {
|
|
256
|
+
return ctx.enumRegistry.get(enumName);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Find a registered union matching an object type union (uses cached sorted types)
|
|
263
|
+
*/
|
|
264
|
+
function findRegisteredUnion(types, ctx) {
|
|
265
|
+
// Collect _tag values from each union member
|
|
266
|
+
const memberTags = [];
|
|
267
|
+
for (const memberAst of types) {
|
|
268
|
+
if (memberAst._tag === "TypeLiteral") {
|
|
269
|
+
const tagProp = memberAst.propertySignatures.find((p) => String(p.name) === "_tag");
|
|
270
|
+
if (tagProp && tagProp.type._tag === "Literal") {
|
|
271
|
+
memberTags.push(String(tagProp.type.literal));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Check if any registered union has matching types
|
|
276
|
+
if (memberTags.length === types.length) {
|
|
277
|
+
const sortedTags = memberTags.sort();
|
|
278
|
+
for (const [unionName] of ctx.unions) {
|
|
279
|
+
// Use cached sorted types instead of sorting on every comparison
|
|
280
|
+
const unionTypes = ctx.unionSortedTypes?.get(unionName);
|
|
281
|
+
if (unionTypes &&
|
|
282
|
+
sortedTags.length === unionTypes.length &&
|
|
283
|
+
sortedTags.every((tag, i) => tag === unionTypes[i])) {
|
|
284
|
+
return ctx.unionRegistry.get(unionName);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return undefined;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Find a registered enum containing a single literal value (O(1) with reverse lookup)
|
|
292
|
+
*/
|
|
293
|
+
function findEnumForLiteral(ast, ctx) {
|
|
294
|
+
const literalValue = String(ast.literal);
|
|
295
|
+
// Use reverse lookup map for O(1) lookup instead of O(N×M) iteration
|
|
296
|
+
const enumName = ctx.literalToEnumName?.get(literalValue);
|
|
297
|
+
if (enumName) {
|
|
298
|
+
return ctx.enumRegistry.get(enumName);
|
|
299
|
+
}
|
|
300
|
+
return undefined;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Handle TupleType AST nodes (arrays)
|
|
304
|
+
*/
|
|
305
|
+
function handleTupleTypeAST(ast, ctx) {
|
|
306
|
+
if (ast.rest && ast.rest.length > 0) {
|
|
307
|
+
const elementSchema = S.make(ast.rest[0].type);
|
|
308
|
+
const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
|
|
309
|
+
return new graphql_1.GraphQLList(elementType);
|
|
310
|
+
}
|
|
311
|
+
else if (ast.elements && ast.elements.length > 0) {
|
|
312
|
+
const elementSchema = S.make(ast.elements[0].type);
|
|
313
|
+
const elementType = toGraphQLTypeWithRegistry(elementSchema, ctx);
|
|
314
|
+
return new graphql_1.GraphQLList(elementType);
|
|
315
|
+
}
|
|
316
|
+
return (0, schema_mapping_1.toGraphQLType)(S.make(ast));
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Convert a schema to GraphQL fields
|
|
320
|
+
*/
|
|
321
|
+
function schemaToFields(schema, ctx) {
|
|
322
|
+
let ast = schema.ast;
|
|
323
|
+
// Handle Transformation (Schema.Class, TaggedClass)
|
|
324
|
+
if (ast._tag === "Transformation") {
|
|
325
|
+
ast = ast.to;
|
|
326
|
+
}
|
|
327
|
+
// Handle Declaration (Schema.Class wraps TypeLiteral in Declaration)
|
|
328
|
+
if (ast._tag === "Declaration") {
|
|
329
|
+
const typeParams = ast.typeParameters;
|
|
330
|
+
if (typeParams && typeParams.length > 0 && typeParams[0]._tag === "TypeLiteral") {
|
|
331
|
+
ast = typeParams[0];
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
if (ast._tag === "TypeLiteral") {
|
|
335
|
+
const fields = {};
|
|
336
|
+
for (const field of ast.propertySignatures) {
|
|
337
|
+
const fieldName = String(field.name);
|
|
338
|
+
const fieldSchema = S.make(field.type);
|
|
339
|
+
let fieldType = toGraphQLTypeWithRegistry(fieldSchema, ctx);
|
|
340
|
+
// Make non-optional fields non-null (memoized)
|
|
341
|
+
if (!field.isOptional) {
|
|
342
|
+
fieldType = getNonNull(fieldType);
|
|
343
|
+
}
|
|
344
|
+
fields[fieldName] = { type: fieldType };
|
|
345
|
+
}
|
|
346
|
+
return fields;
|
|
347
|
+
}
|
|
348
|
+
return {};
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Convert a schema to GraphQL input fields
|
|
352
|
+
*/
|
|
353
|
+
function schemaToInputFields(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
|
|
354
|
+
const ast = schema.ast;
|
|
355
|
+
if (ast._tag === "TypeLiteral") {
|
|
356
|
+
const fields = {};
|
|
357
|
+
for (const field of ast.propertySignatures) {
|
|
358
|
+
const fieldName = String(field.name);
|
|
359
|
+
const fieldSchema = S.make(field.type);
|
|
360
|
+
let fieldType = toGraphQLInputTypeWithRegistry(fieldSchema, enumRegistry, inputRegistry, inputs, enums, cache);
|
|
361
|
+
// Make non-optional fields non-null (memoized)
|
|
362
|
+
if (!field.isOptional) {
|
|
363
|
+
fieldType = getNonNull(fieldType);
|
|
364
|
+
}
|
|
365
|
+
fields[fieldName] = { type: fieldType };
|
|
366
|
+
}
|
|
367
|
+
return fields;
|
|
368
|
+
}
|
|
369
|
+
return {};
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Build lookup caches for input type resolution
|
|
373
|
+
*/
|
|
374
|
+
function buildInputTypeLookupCache(inputs, enums) {
|
|
375
|
+
const cache = {
|
|
376
|
+
schemaToInputName: new Map(),
|
|
377
|
+
astToInputName: new Map(),
|
|
378
|
+
literalToEnumName: new Map(),
|
|
379
|
+
enumSortedValues: new Map(),
|
|
380
|
+
};
|
|
381
|
+
// Build input type reverse lookups
|
|
382
|
+
for (const [inputName, inputReg] of inputs) {
|
|
383
|
+
cache.schemaToInputName.set(inputReg.schema, inputName);
|
|
384
|
+
cache.astToInputName.set(inputReg.schema.ast, inputName);
|
|
385
|
+
}
|
|
386
|
+
// Build enum lookups
|
|
387
|
+
for (const [enumName, enumReg] of enums) {
|
|
388
|
+
cache.enumSortedValues.set(enumName, [...enumReg.values].sort());
|
|
389
|
+
for (const value of enumReg.values) {
|
|
390
|
+
cache.literalToEnumName.set(value, enumName);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return cache;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Convert a schema to GraphQL input type, checking enum and input registries.
|
|
397
|
+
* Uses O(1) reverse lookups when cache is provided.
|
|
398
|
+
*/
|
|
399
|
+
function toGraphQLInputTypeWithRegistry(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
|
|
400
|
+
const ast = schema.ast;
|
|
401
|
+
// Handle transformations (like S.optional wrapping)
|
|
402
|
+
if (ast._tag === "Transformation") {
|
|
403
|
+
const toAst = ast.to;
|
|
404
|
+
return toGraphQLInputTypeWithRegistry(S.make(toAst), enumRegistry, inputRegistry, inputs, enums, cache);
|
|
405
|
+
}
|
|
406
|
+
// Check if this schema matches a registered input type (O(1) with cache)
|
|
407
|
+
if (cache?.schemaToInputName || cache?.astToInputName) {
|
|
408
|
+
const inputName = cache.schemaToInputName?.get(schema) ?? cache.astToInputName?.get(ast);
|
|
409
|
+
if (inputName) {
|
|
410
|
+
const result = inputRegistry.get(inputName);
|
|
411
|
+
if (result)
|
|
412
|
+
return result;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
// Fallback to linear scan if no cache
|
|
417
|
+
for (const [inputName, inputReg] of inputs) {
|
|
418
|
+
if (inputReg.schema.ast === ast || inputReg.schema === schema) {
|
|
419
|
+
const result = inputRegistry.get(inputName);
|
|
420
|
+
if (result)
|
|
421
|
+
return result;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Check if this schema matches a registered enum
|
|
426
|
+
if (ast._tag === "Union") {
|
|
427
|
+
const unionAst = ast;
|
|
428
|
+
// Handle S.optional which creates Union(LiteralUnion, UndefinedKeyword)
|
|
429
|
+
const nonUndefinedTypes = unionAst.types.filter((t) => t._tag !== "UndefinedKeyword");
|
|
430
|
+
if (nonUndefinedTypes.length === 1 && nonUndefinedTypes[0]._tag === "Union") {
|
|
431
|
+
return toGraphQLInputTypeWithRegistry(S.make(nonUndefinedTypes[0]), enumRegistry, inputRegistry, inputs, enums, cache);
|
|
432
|
+
}
|
|
433
|
+
// Check for nested input type inside optional
|
|
434
|
+
if (nonUndefinedTypes.length === 1 && nonUndefinedTypes[0]._tag === "TypeLiteral") {
|
|
435
|
+
return toGraphQLInputTypeWithRegistry(S.make(nonUndefinedTypes[0]), enumRegistry, inputRegistry, inputs, enums, cache);
|
|
436
|
+
}
|
|
437
|
+
const allLiterals = unionAst.types.every((t) => t._tag === "Literal");
|
|
438
|
+
if (allLiterals) {
|
|
439
|
+
const literalValues = unionAst.types.map((t) => String(t.literal)).sort();
|
|
440
|
+
// Use cached sorted values if available
|
|
441
|
+
for (const [enumName] of enums) {
|
|
442
|
+
const enumValues = cache?.enumSortedValues?.get(enumName) ?? [...enums.get(enumName).values].sort();
|
|
443
|
+
if (literalValues.length === enumValues.length &&
|
|
444
|
+
literalValues.every((v, i) => v === enumValues[i])) {
|
|
445
|
+
const result = enumRegistry.get(enumName);
|
|
446
|
+
if (result)
|
|
447
|
+
return result;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
// Check single literal (O(1) with cache)
|
|
453
|
+
if (ast._tag === "Literal") {
|
|
454
|
+
const literalValue = String(ast.literal);
|
|
455
|
+
if (cache?.literalToEnumName) {
|
|
456
|
+
const enumName = cache.literalToEnumName.get(literalValue);
|
|
457
|
+
if (enumName) {
|
|
458
|
+
const result = enumRegistry.get(enumName);
|
|
459
|
+
if (result)
|
|
460
|
+
return result;
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
// Fallback to linear scan if no cache
|
|
465
|
+
for (const [enumName, enumReg] of enums) {
|
|
466
|
+
if (enumReg.values.includes(literalValue)) {
|
|
467
|
+
const result = enumRegistry.get(enumName);
|
|
468
|
+
if (result)
|
|
469
|
+
return result;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
// Handle Suspend (recursive/self-referential schemas)
|
|
475
|
+
if (ast._tag === "Suspend") {
|
|
476
|
+
const innerAst = ast.f();
|
|
477
|
+
return toGraphQLInputTypeWithRegistry(S.make(innerAst), enumRegistry, inputRegistry, inputs, enums, cache);
|
|
478
|
+
}
|
|
479
|
+
// Fall back to default toGraphQLInputType
|
|
480
|
+
return (0, schema_mapping_1.toGraphQLInputType)(schema);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Convert a schema to GraphQL arguments with registry support.
|
|
484
|
+
* Uses O(1) reverse lookups when cache is provided.
|
|
485
|
+
*/
|
|
486
|
+
function toGraphQLArgsWithRegistry(schema, enumRegistry, inputRegistry, inputs, enums, cache) {
|
|
487
|
+
const ast = schema.ast;
|
|
488
|
+
if (ast._tag === "TypeLiteral") {
|
|
489
|
+
const args = {};
|
|
490
|
+
for (const field of ast.propertySignatures) {
|
|
491
|
+
const fieldName = String(field.name);
|
|
492
|
+
const fieldSchema = S.make(field.type);
|
|
493
|
+
let fieldType = toGraphQLInputTypeWithRegistry(fieldSchema, enumRegistry, inputRegistry, inputs, enums, cache);
|
|
494
|
+
// Make non-optional fields non-null (memoized)
|
|
495
|
+
if (!field.isOptional) {
|
|
496
|
+
fieldType = getNonNull(fieldType);
|
|
497
|
+
}
|
|
498
|
+
args[fieldName] = { type: fieldType };
|
|
499
|
+
}
|
|
500
|
+
return args;
|
|
501
|
+
}
|
|
502
|
+
// Fall back to default toGraphQLArgs
|
|
503
|
+
return (0, schema_mapping_1.toGraphQLArgs)(schema);
|
|
504
|
+
}
|
|
505
|
+
//# sourceMappingURL=type-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-registry.js","sourceRoot":"","sources":["../../src/builder/type-registry.ts"],"names":[],"mappings":"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"}
|