@capixjs/transport-graphql 0.1.0-alpha.2 → 0.1.0-alpha.23
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/schema-builder.d.ts +2 -1
- package/dist/schema-builder.d.ts.map +1 -1
- package/dist/schema-builder.js +57 -41
- package/dist/schema-builder.js.map +1 -1
- package/dist/transport.d.ts +5 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +6 -10
- package/dist/transport.js.map +1 -1
- package/package.json +3 -3
package/dist/schema-builder.d.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* schema-builder.ts — Converts a Capix registry into a GraphQL schema.
|
|
3
3
|
*
|
|
4
4
|
* Rules:
|
|
5
|
-
* - intent
|
|
5
|
+
* - effective intent 'query' (explicit, or inferred from the key name via
|
|
6
|
+
* resolveIntent — same rule as REST routing) → Query field
|
|
6
7
|
* - all other intents → Mutation field
|
|
7
8
|
* - Dot-path names become underscore-separated field names (users.getUser → users_getUser)
|
|
8
9
|
* - Zod input schema fields → individual GraphQL args
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,aAAa,EAQb,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAElE,eAAO,MAAM,UAAU,qCAerB,CAAC;AAuIH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,GAAG,aAAa,CAuEhG"}
|
package/dist/schema-builder.js
CHANGED
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
* schema-builder.ts — Converts a Capix registry into a GraphQL schema.
|
|
3
3
|
*
|
|
4
4
|
* Rules:
|
|
5
|
-
* - intent
|
|
5
|
+
* - effective intent 'query' (explicit, or inferred from the key name via
|
|
6
|
+
* resolveIntent — same rule as REST routing) → Query field
|
|
6
7
|
* - all other intents → Mutation field
|
|
7
8
|
* - Dot-path names become underscore-separated field names (users.getUser → users_getUser)
|
|
8
9
|
* - Zod input schema fields → individual GraphQL args
|
|
9
10
|
* - Zod output schema → named GraphQL output type; absent → JSONScalar
|
|
10
11
|
* - Type cache prevents duplicate type definitions across fields
|
|
11
12
|
*/
|
|
12
|
-
import { GraphQLSchema, GraphQLObjectType, GraphQLInputObjectType, GraphQLString, GraphQLFloat, GraphQLBoolean, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLEnumType, Kind, } from 'graphql';
|
|
13
|
+
import { GraphQLSchema, GraphQLObjectType, GraphQLInputObjectType, GraphQLString, GraphQLFloat, GraphQLBoolean, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLEnumType, GraphQLError, Kind, } from 'graphql';
|
|
14
|
+
import { resolveIntent } from '@capixjs/core';
|
|
13
15
|
export const JSONScalar = new GraphQLScalarType({
|
|
14
16
|
name: 'JSON',
|
|
15
17
|
description: 'Arbitrary JSON value',
|
|
@@ -27,35 +29,36 @@ export const JSONScalar = new GraphQLScalarType({
|
|
|
27
29
|
},
|
|
28
30
|
});
|
|
29
31
|
function zodDef(schema) {
|
|
30
|
-
return schema?.
|
|
32
|
+
return schema?._zod?.def ?? {};
|
|
31
33
|
}
|
|
32
34
|
function resolveShape(d) {
|
|
33
|
-
return
|
|
35
|
+
return d.shape ?? {};
|
|
34
36
|
}
|
|
35
37
|
function zodToGqlOutput(schema, typeName, cache) {
|
|
36
38
|
const d = zodDef(schema);
|
|
37
|
-
switch (d.
|
|
38
|
-
case '
|
|
39
|
-
case '
|
|
40
|
-
case '
|
|
41
|
-
case '
|
|
39
|
+
switch (d.type) {
|
|
40
|
+
case 'string': return new GraphQLNonNull(GraphQLString);
|
|
41
|
+
case 'number': return new GraphQLNonNull(GraphQLFloat);
|
|
42
|
+
case 'boolean': return new GraphQLNonNull(GraphQLBoolean);
|
|
43
|
+
case 'default':
|
|
44
|
+
case 'prefault': {
|
|
42
45
|
// Unwrap default — value is optional in GraphQL (no NonNull)
|
|
43
46
|
const inner = zodToGqlOutput(d.innerType, typeName, cache);
|
|
44
47
|
return inner instanceof GraphQLNonNull ? inner.ofType : inner;
|
|
45
48
|
}
|
|
46
|
-
case '
|
|
47
|
-
//
|
|
48
|
-
return zodToGqlOutput(d.
|
|
49
|
-
case '
|
|
50
|
-
case '
|
|
49
|
+
case 'pipe':
|
|
50
|
+
// .transform() / z.preprocess() — unwrap to the base schema
|
|
51
|
+
return zodToGqlOutput(d.in, typeName, cache);
|
|
52
|
+
case 'optional':
|
|
53
|
+
case 'nullable': {
|
|
51
54
|
const inner = zodToGqlOutput(d.innerType, typeName, cache);
|
|
52
55
|
return inner instanceof GraphQLNonNull ? inner.ofType : inner;
|
|
53
56
|
}
|
|
54
|
-
case '
|
|
55
|
-
const inner = zodToGqlOutput(d.
|
|
57
|
+
case 'array': {
|
|
58
|
+
const inner = zodToGqlOutput(d.element, `${typeName}Item`, cache);
|
|
56
59
|
return new GraphQLNonNull(new GraphQLList(inner));
|
|
57
60
|
}
|
|
58
|
-
case '
|
|
61
|
+
case 'object': {
|
|
59
62
|
const cached = cache.get(typeName);
|
|
60
63
|
if (cached)
|
|
61
64
|
return new GraphQLNonNull(cached);
|
|
@@ -73,43 +76,44 @@ function zodToGqlOutput(schema, typeName, cache) {
|
|
|
73
76
|
cache.set(typeName, objectType);
|
|
74
77
|
return new GraphQLNonNull(objectType);
|
|
75
78
|
}
|
|
76
|
-
case '
|
|
77
|
-
const valList = d.
|
|
79
|
+
case 'enum': {
|
|
80
|
+
const valList = Object.values(d.entries ?? {});
|
|
78
81
|
const enumValues = {};
|
|
79
82
|
for (const v of valList)
|
|
80
83
|
enumValues[String(v)] = { value: String(v) };
|
|
81
84
|
return new GraphQLNonNull(new GraphQLEnumType({ name: typeName, values: enumValues }));
|
|
82
85
|
}
|
|
83
|
-
case '
|
|
84
|
-
case '
|
|
86
|
+
case 'any':
|
|
87
|
+
case 'unknown':
|
|
85
88
|
default:
|
|
86
89
|
return JSONScalar;
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
function zodToGqlInput(schema, typeName, cache) {
|
|
90
93
|
const d = zodDef(schema);
|
|
91
|
-
switch (d.
|
|
92
|
-
case '
|
|
93
|
-
case '
|
|
94
|
-
case '
|
|
95
|
-
case '
|
|
94
|
+
switch (d.type) {
|
|
95
|
+
case 'string': return new GraphQLNonNull(GraphQLString);
|
|
96
|
+
case 'number': return new GraphQLNonNull(GraphQLFloat);
|
|
97
|
+
case 'boolean': return new GraphQLNonNull(GraphQLBoolean);
|
|
98
|
+
case 'default':
|
|
99
|
+
case 'prefault': {
|
|
96
100
|
// Unwrap default — field is optional in GraphQL (no NonNull)
|
|
97
101
|
const inner = zodToGqlInput(d.innerType, typeName, cache);
|
|
98
102
|
return inner instanceof GraphQLNonNull ? inner.ofType : inner;
|
|
99
103
|
}
|
|
100
|
-
case '
|
|
101
|
-
//
|
|
102
|
-
return zodToGqlInput(d.
|
|
103
|
-
case '
|
|
104
|
-
case '
|
|
104
|
+
case 'pipe':
|
|
105
|
+
// .transform() / z.preprocess() — unwrap to the base schema
|
|
106
|
+
return zodToGqlInput(d.in, typeName, cache);
|
|
107
|
+
case 'optional':
|
|
108
|
+
case 'nullable': {
|
|
105
109
|
const inner = zodToGqlInput(d.innerType, typeName, cache);
|
|
106
110
|
return inner instanceof GraphQLNonNull ? inner.ofType : inner;
|
|
107
111
|
}
|
|
108
|
-
case '
|
|
109
|
-
const inner = zodToGqlInput(d.
|
|
112
|
+
case 'array': {
|
|
113
|
+
const inner = zodToGqlInput(d.element, `${typeName}Item`, cache);
|
|
110
114
|
return new GraphQLNonNull(new GraphQLList(inner));
|
|
111
115
|
}
|
|
112
|
-
case '
|
|
116
|
+
case 'object': {
|
|
113
117
|
const cached = cache.get(typeName);
|
|
114
118
|
if (cached)
|
|
115
119
|
return new GraphQLNonNull(cached);
|
|
@@ -127,15 +131,15 @@ function zodToGqlInput(schema, typeName, cache) {
|
|
|
127
131
|
cache.set(typeName, inputType);
|
|
128
132
|
return new GraphQLNonNull(inputType);
|
|
129
133
|
}
|
|
130
|
-
case '
|
|
131
|
-
const valList = d.
|
|
134
|
+
case 'enum': {
|
|
135
|
+
const valList = Object.values(d.entries ?? {});
|
|
132
136
|
const enumValues = {};
|
|
133
137
|
for (const v of valList)
|
|
134
138
|
enumValues[String(v)] = { value: String(v) };
|
|
135
139
|
return new GraphQLNonNull(new GraphQLEnumType({ name: `${typeName}Enum`, values: enumValues }));
|
|
136
140
|
}
|
|
137
|
-
case '
|
|
138
|
-
case '
|
|
141
|
+
case 'any':
|
|
142
|
+
case 'unknown':
|
|
139
143
|
default:
|
|
140
144
|
return JSONScalar;
|
|
141
145
|
}
|
|
@@ -173,13 +177,25 @@ export function buildGraphQLSchema(registry, invoke) {
|
|
|
173
177
|
signal,
|
|
174
178
|
});
|
|
175
179
|
if (!response.ok) {
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
// Preserve the typed FrameworkError shape in GraphQL extensions so
|
|
181
|
+
// clients can branch on `extensions.code` / `extensions.status`
|
|
182
|
+
// instead of parsing the message string.
|
|
183
|
+
const { status, error, message, meta } = response.error;
|
|
184
|
+
throw new GraphQLError(message, {
|
|
185
|
+
extensions: {
|
|
186
|
+
code: error,
|
|
187
|
+
status,
|
|
188
|
+
...(meta !== undefined ? { meta } : {}),
|
|
189
|
+
},
|
|
190
|
+
});
|
|
178
191
|
}
|
|
179
192
|
return response.data;
|
|
180
193
|
},
|
|
181
194
|
};
|
|
182
|
-
|
|
195
|
+
// Same rule as REST routing and MCP annotations: explicit intent wins,
|
|
196
|
+
// otherwise inferred from the key name (getUser → Query field).
|
|
197
|
+
const key = name.split('.').pop() ?? name;
|
|
198
|
+
if (resolveIntent(cap, key) === 'query') {
|
|
183
199
|
queryFields[fnName] = field;
|
|
184
200
|
}
|
|
185
201
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,IAAI,GACL,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,sBAAsB;IACnC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpB,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;QACpB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAK,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,KAAK,CAAC,CAAG,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChD,KAAK,IAAI,CAAC,MAAM,CAAC,CAAE,OAAO,GAAG,CAAC,KAAK,CAAC;YACpC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC;YACpC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAI,OAAO,IAAI,CAAC;YAC/B,OAAO,CAAC,CAAW,OAAO,IAAI,CAAC;QACjC,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAeH,SAAS,MAAM,CAAC,MAAe;IAC7B,OAAQ,MAAsC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,MAAe,EAAE,QAAgB,EAAE,KAAsB;IAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QACxD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;QACvD,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;QAC1D,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,6DAA6D;YAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,KAAK,YAAY,cAAc,CAAC,CAAC,CAAE,KAAK,CAAC,MAA4B,CAAC,CAAC,CAAC,KAAK,CAAC;QACvF,CAAC;QACD,KAAK,MAAM;YACT,4DAA4D;YAC5D,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,KAAK,YAAY,cAAc,CAAC,CAAC,CAAE,KAAK,CAAC,MAA4B,CAAC,CAAC,CAAC,KAAK,CAAC;QACvF,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,IAAI,cAAc,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM;gBAAE,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC;gBACvC,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,GAAG,EAAE;oBACX,MAAM,MAAM,GAA4D,EAAE,CAAC;oBAC3E,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC3E,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAChC,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAsC,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,cAAc,CAAC,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAe,EAAE,QAAgB,EAAE,KAAqB;IAC7E,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;QACxD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;QACvD,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;QAC1D,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,6DAA6D;YAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,KAAK,YAAY,cAAc,CAAC,CAAC,CAAE,KAAK,CAAC,MAA2B,CAAC,CAAC,CAAC,KAAK,CAAC;QACtF,CAAC;QACD,KAAK,MAAM;YACT,4DAA4D;YAC5D,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9C,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,KAAK,YAAY,cAAc,CAAC,CAAC,CAAE,KAAK,CAAC,MAA2B,CAAC,CAAC,CAAC,KAAK,CAAC;QACtF,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,IAAI,cAAc,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,MAAM;gBAAE,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC;gBAC3C,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,GAAG,EAAE;oBACX,MAAM,MAAM,GAA+C,EAAE,CAAC;oBAC9D,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC1E,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF,CAAC,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/B,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAsC,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,cAAc,CAAC,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAA4B,EAAE,MAAgB;IAC/E,MAAM,WAAW,GAAoB,IAAI,GAAG,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAmB,IAAI,GAAG,EAAE,CAAC;IAC7C,MAAM,WAAW,GAA4D,EAAE,CAAC;IAChF,MAAM,cAAc,GAA4D,EAAE,CAAC;IAEnF,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,IAAI,GAA+C,EAAE,CAAC;QAC5D,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACpD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,GAAG,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAClF,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAsB,GAAG,CAAC,YAAY,KAAK,IAAI;YAC7D,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,QAAQ,QAAQ,EAAE,WAAW,CAAC;YACpE,CAAC,CAAC,UAAU,CAAC;QAEf,MAAM,KAAK,GAA4C;YACrD,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;oBAC5B,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,YAAY;oBACnB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;oBAC/B,MAAM;iBACP,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,mEAAmE;oBACnE,gEAAgE;oBAChE,yCAAyC;oBACzC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;oBACxD,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE;wBAC9B,UAAU,EAAE;4BACV,IAAI,EAAE,KAAK;4BACX,MAAM;4BACN,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACxC;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;SACF,CAAC;QAEF,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAC1C,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;YACxC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,aAAa,CAAC;QACvB,KAAK,EAAE,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACpE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC;YACxC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE;YACnF,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export type GraphQLTransportOptions = {
|
|
|
17
17
|
readonly playground?: boolean;
|
|
18
18
|
/** Capability registry for this transport only. Overrides the server-level default. */
|
|
19
19
|
readonly capabilities?: GroupTree;
|
|
20
|
+
/**
|
|
21
|
+
* How long unmount() waits for in-flight requests before force-closing
|
|
22
|
+
* their connections, in milliseconds. Default: 10_000.
|
|
23
|
+
*/
|
|
24
|
+
readonly shutdownTimeoutMs?: number;
|
|
20
25
|
};
|
|
21
26
|
export declare function graphqlTransport(options: GraphQLTransportOptions): TransportWithCapabilities;
|
|
22
27
|
//# sourceMappingURL=transport.d.ts.map
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAqC,SAAS,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE7G,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,uFAAuF;IACvF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AA2BF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,yBAAyB,CAwE5F"}
|
package/dist/transport.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import * as http from 'node:http';
|
|
8
8
|
import { createHandler } from 'graphql-http/lib/use/node';
|
|
9
9
|
import { buildGraphQLSchema } from './schema-builder.js';
|
|
10
|
+
import { closeHttpServerGracefully } from '@capixjs/core';
|
|
10
11
|
function playgroundHtml(endpoint) {
|
|
11
12
|
return `<!DOCTYPE html>
|
|
12
13
|
<html>
|
|
@@ -86,16 +87,11 @@ export function graphqlTransport(options) {
|
|
|
86
87
|
});
|
|
87
88
|
},
|
|
88
89
|
async unmount() {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
reject(err);
|
|
95
|
-
else
|
|
96
|
-
resolve();
|
|
97
|
-
});
|
|
98
|
-
});
|
|
90
|
+
if (!server)
|
|
91
|
+
return;
|
|
92
|
+
const s = server;
|
|
93
|
+
server = null;
|
|
94
|
+
await closeHttpServerGracefully(s, options.shutdownTimeoutMs ?? 10_000);
|
|
99
95
|
},
|
|
100
96
|
};
|
|
101
97
|
}
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capixjs/transport-graphql",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.23",
|
|
4
4
|
"description": "Capix GraphQL transport",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"@types/node": "^20.0.0",
|
|
38
38
|
"typescript": "^5.5.0",
|
|
39
39
|
"vitest": "^1.6.0",
|
|
40
|
-
"zod": "^
|
|
41
|
-
"@capixjs/core": "0.1.0-alpha.
|
|
40
|
+
"zod": "^4.0.0",
|
|
41
|
+
"@capixjs/core": "0.1.0-alpha.23"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsc",
|