@nxara/olio-codegen 0.0.0-stage → 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 +21 -0
- package/README.md +238 -2
- package/dist/codegen.d.ts +10 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +77 -0
- package/dist/codegen.js.map +1 -0
- package/dist/emit-application.d.ts +4 -0
- package/dist/emit-application.d.ts.map +1 -0
- package/dist/emit-application.js +66 -0
- package/dist/emit-application.js.map +1 -0
- package/dist/emit-client.d.ts +3 -0
- package/dist/emit-client.d.ts.map +1 -0
- package/dist/emit-client.js +287 -0
- package/dist/emit-client.js.map +1 -0
- package/dist/emit-type.d.ts +8 -0
- package/dist/emit-type.d.ts.map +1 -0
- package/dist/emit-type.js +38 -0
- package/dist/emit-type.js.map +1 -0
- package/dist/files.d.ts +4 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +226 -0
- package/dist/files.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/log.d.ts +9 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +15 -0
- package/dist/log.js.map +1 -0
- package/dist/scalars.d.ts +41 -0
- package/dist/scalars.d.ts.map +1 -0
- package/dist/scalars.js +2 -0
- package/dist/scalars.js.map +1 -0
- package/dist/type-map.d.ts +5 -0
- package/dist/type-map.d.ts.map +1 -0
- package/dist/type-map.js +16 -0
- package/dist/type-map.js.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -4
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { isAbstractType, isEnumType, isListType, isNonNullType, isObjectType, isScalarType, Kind, print, typeFromAST, validate, visit } from "graphql";
|
|
2
|
+
import { BUILTIN_SCALARS, HEADER } from "./types.js";
|
|
3
|
+
const location = (error) => {
|
|
4
|
+
const at = error.locations?.[0];
|
|
5
|
+
const file = error.source?.name;
|
|
6
|
+
return at ? `${file ? `${file}:` : ""}${at.line}:${at.column}: ` : "";
|
|
7
|
+
};
|
|
8
|
+
const at = (node) => {
|
|
9
|
+
const token = node.loc?.startToken;
|
|
10
|
+
return token
|
|
11
|
+
? `${node.loc?.source.name}:${token.line}:${token.column}: `
|
|
12
|
+
: "";
|
|
13
|
+
};
|
|
14
|
+
function takeTransports(definitions) {
|
|
15
|
+
const transports = new Map();
|
|
16
|
+
const stripped = definitions.map((definition) => {
|
|
17
|
+
if (definition.kind !== Kind.OPERATION_DEFINITION)
|
|
18
|
+
return definition;
|
|
19
|
+
const chosen = (definition.directives ?? []).filter((d) => d.name.value === "ws" || d.name.value === "sse");
|
|
20
|
+
for (const directive of chosen) {
|
|
21
|
+
if (definition.operation !== "subscription") {
|
|
22
|
+
throw new Error(`${at(directive)}@${directive.name.value} only applies to subscriptions: queries and mutations go over HTTP`);
|
|
23
|
+
}
|
|
24
|
+
if (directive.arguments?.length) {
|
|
25
|
+
throw new Error(`${at(directive)}@${directive.name.value} takes no arguments`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (chosen.length > 1) {
|
|
29
|
+
throw new Error(`${at(chosen[1])}A subscription takes one of @ws or @sse`);
|
|
30
|
+
}
|
|
31
|
+
const operation = {
|
|
32
|
+
...definition,
|
|
33
|
+
directives: definition.directives?.filter((d) => !chosen.includes(d))
|
|
34
|
+
};
|
|
35
|
+
if (operation.operation === "subscription") {
|
|
36
|
+
transports.set(operation, (chosen[0]?.name.value ?? "ws"));
|
|
37
|
+
}
|
|
38
|
+
return operation;
|
|
39
|
+
});
|
|
40
|
+
return { definitions: stripped, transports };
|
|
41
|
+
}
|
|
42
|
+
const conditional = (directives = []) => directives.some((d) => d.name.value === "include" || d.name.value === "skip");
|
|
43
|
+
const lowerFirst = (word) => `${word[0]?.toLowerCase() ?? ""}${word.slice(1)}`;
|
|
44
|
+
const capitalize = (word) => `${word[0]?.toUpperCase() ?? ""}${word.slice(1)}`;
|
|
45
|
+
function applies(schema, condition, type) {
|
|
46
|
+
if (condition === undefined || condition === type.name)
|
|
47
|
+
return true;
|
|
48
|
+
const target = schema.getType(condition);
|
|
49
|
+
return isAbstractType(target) && schema.isSubType(target, type);
|
|
50
|
+
}
|
|
51
|
+
function collect(ctx, type, { set, optional }, fields) {
|
|
52
|
+
for (const selection of set.selections) {
|
|
53
|
+
const maybe = optional || conditional(selection.directives);
|
|
54
|
+
if (selection.kind === Kind.FIELD) {
|
|
55
|
+
const key = selection.alias?.value ?? selection.name.value;
|
|
56
|
+
fields.set(key, [
|
|
57
|
+
...(fields.get(key) ?? []),
|
|
58
|
+
{ node: selection, optional: maybe }
|
|
59
|
+
]);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const fragment = selection.kind === Kind.INLINE_FRAGMENT
|
|
63
|
+
? selection
|
|
64
|
+
: ctx.fragments.get(selection.name.value);
|
|
65
|
+
if (fragment &&
|
|
66
|
+
applies(ctx.schema, fragment.typeCondition?.name.value, type)) {
|
|
67
|
+
collect(ctx, type, { set: fragment.selectionSet, optional: maybe }, fields);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function objectShape(ctx, type, sets, indent) {
|
|
72
|
+
const fields = new Map();
|
|
73
|
+
for (const set of sets)
|
|
74
|
+
collect(ctx, type, set, fields);
|
|
75
|
+
const lines = [];
|
|
76
|
+
for (const [key, nodes] of fields) {
|
|
77
|
+
const name = nodes[0]?.node.name.value ?? key;
|
|
78
|
+
const optional = nodes.every((n) => n.optional) ? "?" : "";
|
|
79
|
+
if (name === "__typename") {
|
|
80
|
+
lines.push(`${key}${optional}: "${type.name}";`);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const field = type.getFields()[name];
|
|
84
|
+
if (!field)
|
|
85
|
+
continue;
|
|
86
|
+
const children = nodes.flatMap((n) => n.node.selectionSet ? [{ set: n.node.selectionSet, optional: false }] : []);
|
|
87
|
+
lines.push(`${key}${optional}: ${outputType(ctx, field.type, children, `${indent} `)};`);
|
|
88
|
+
}
|
|
89
|
+
return lines.length
|
|
90
|
+
? `{\n${lines.map((l) => `${indent} ${l}`).join("\n")}\n${indent}}`
|
|
91
|
+
: "{}";
|
|
92
|
+
}
|
|
93
|
+
function compositeType(ctx, type, sets, indent) {
|
|
94
|
+
const members = isObjectType(type)
|
|
95
|
+
? [type]
|
|
96
|
+
: [...ctx.schema.getPossibleTypes(type)].sort((a, b) => a.name.localeCompare(b.name));
|
|
97
|
+
const shapes = [
|
|
98
|
+
...new Set(members.map((m) => objectShape(ctx, m, sets, indent)))
|
|
99
|
+
];
|
|
100
|
+
return shapes.length > 1 ? `(${shapes.join(" | ")})` : (shapes[0] ?? "never");
|
|
101
|
+
}
|
|
102
|
+
function outputType(ctx, type, sets, indent, nullable = true) {
|
|
103
|
+
if (isNonNullType(type)) {
|
|
104
|
+
return outputType(ctx, type.ofType, sets, indent, false);
|
|
105
|
+
}
|
|
106
|
+
let base;
|
|
107
|
+
if (isListType(type)) {
|
|
108
|
+
base = `${outputType(ctx, type.ofType, sets, indent)}[]`;
|
|
109
|
+
}
|
|
110
|
+
else if (isScalarType(type)) {
|
|
111
|
+
base = `Scalar<"${type.name}">`;
|
|
112
|
+
}
|
|
113
|
+
else if (isEnumType(type)) {
|
|
114
|
+
ctx.enums.add(type);
|
|
115
|
+
base = type.name;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
base = compositeType(ctx, type, sets, indent);
|
|
119
|
+
}
|
|
120
|
+
return nullable ? `Maybe<${base}>` : base;
|
|
121
|
+
}
|
|
122
|
+
function inputType(ctx, type, nullable = true) {
|
|
123
|
+
if (isNonNullType(type))
|
|
124
|
+
return inputType(ctx, type.ofType, false);
|
|
125
|
+
let base;
|
|
126
|
+
if (isListType(type)) {
|
|
127
|
+
base = `${inputType(ctx, type.ofType)}[]`;
|
|
128
|
+
}
|
|
129
|
+
else if (isScalarType(type)) {
|
|
130
|
+
base = `Scalar<"${type.name}", "input">`;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (isEnumType(type))
|
|
134
|
+
ctx.enums.add(type);
|
|
135
|
+
else
|
|
136
|
+
ctx.inputs.add(type);
|
|
137
|
+
base = type.name;
|
|
138
|
+
}
|
|
139
|
+
return nullable ? `Maybe<${base}>` : base;
|
|
140
|
+
}
|
|
141
|
+
function usedFragments(ctx, node, seen = new Set()) {
|
|
142
|
+
visit(node, {
|
|
143
|
+
FragmentSpread(spread) {
|
|
144
|
+
const name = spread.name.value;
|
|
145
|
+
const fragment = ctx.fragments.get(name);
|
|
146
|
+
if (seen.has(name) || !fragment)
|
|
147
|
+
return;
|
|
148
|
+
seen.add(name);
|
|
149
|
+
usedFragments(ctx, fragment, seen);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return seen;
|
|
153
|
+
}
|
|
154
|
+
function typeName(operation) {
|
|
155
|
+
const name = operation.name?.value ?? "";
|
|
156
|
+
const suffix = capitalize(operation.operation);
|
|
157
|
+
return name.endsWith(suffix) ? name : `${name}${suffix}`;
|
|
158
|
+
}
|
|
159
|
+
function emitOperation(ctx, operation) {
|
|
160
|
+
const name = operation.name?.value;
|
|
161
|
+
if (!name) {
|
|
162
|
+
throw new Error(`${at(operation)}An operation needs a name: its types are named after it`);
|
|
163
|
+
}
|
|
164
|
+
const base = typeName(operation);
|
|
165
|
+
const transport = ctx.transports.get(operation);
|
|
166
|
+
const root = ctx.schema.getRootType(operation.operation);
|
|
167
|
+
const result = objectShape(ctx, root, [{ set: operation.selectionSet, optional: false }], "");
|
|
168
|
+
const variables = (operation.variableDefinitions ?? []).map((v) => {
|
|
169
|
+
const type = typeFromAST(ctx.schema, v.type);
|
|
170
|
+
const optional = !isNonNullType(type) || v.defaultValue !== undefined;
|
|
171
|
+
return ` ${v.variable.name.value}${optional ? "?" : ""}: ${inputType(ctx, type)};`;
|
|
172
|
+
});
|
|
173
|
+
const fragments = [...usedFragments(ctx, operation)]
|
|
174
|
+
.sort()
|
|
175
|
+
.map((f) => print(ctx.fragments.get(f)));
|
|
176
|
+
const query = [print(operation), ...fragments].join("\n\n");
|
|
177
|
+
return [
|
|
178
|
+
`export type ${base} = ${result};`,
|
|
179
|
+
`export type ${base}Variables = ${variables.length ? `{\n${variables.join("\n")}\n}` : "{}"};`,
|
|
180
|
+
`export const ${name}Document: TypedDocument<${base}, ${base}Variables, "${operation.operation}"> = {\n operation: "${operation.operation}",\n name: "${name}",\n query: ${JSON.stringify(query)}${transport ? `,\n transport: "${transport}"` : ""}\n};`
|
|
181
|
+
].join("\n\n");
|
|
182
|
+
}
|
|
183
|
+
function emitInputs(ctx) {
|
|
184
|
+
const emitted = new Map();
|
|
185
|
+
for (let pending = [...ctx.inputs]; pending.length;) {
|
|
186
|
+
for (const type of pending) {
|
|
187
|
+
const fields = Object.values(type.getFields()).map((f) => {
|
|
188
|
+
const optional = !isNonNullType(f.type) || f.defaultValue !== undefined;
|
|
189
|
+
return ` ${f.name}${optional ? "?" : ""}: ${inputType(ctx, f.type)};`;
|
|
190
|
+
});
|
|
191
|
+
emitted.set(type.name, `export type ${type.name} = {\n${fields.join("\n")}\n};`);
|
|
192
|
+
}
|
|
193
|
+
pending = [...ctx.inputs].filter((t) => !emitted.has(t.name));
|
|
194
|
+
}
|
|
195
|
+
return [...emitted]
|
|
196
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
197
|
+
.map(([, code]) => code);
|
|
198
|
+
}
|
|
199
|
+
export function emitClient(schema, documents) {
|
|
200
|
+
const { definitions, transports } = takeTransports(documents.flatMap((d) => d.definitions));
|
|
201
|
+
const document = { kind: Kind.DOCUMENT, definitions };
|
|
202
|
+
const errors = validate(schema, document);
|
|
203
|
+
if (errors.length) {
|
|
204
|
+
throw new Error(`Invalid operations:\n${errors.map((e) => ` ${location(e)}${e.message}`).join("\n")}`);
|
|
205
|
+
}
|
|
206
|
+
const fragments = new Map();
|
|
207
|
+
const operations = [];
|
|
208
|
+
for (const definition of document.definitions) {
|
|
209
|
+
if (definition.kind === Kind.FRAGMENT_DEFINITION) {
|
|
210
|
+
fragments.set(definition.name.value, definition);
|
|
211
|
+
}
|
|
212
|
+
else if (definition.kind === Kind.OPERATION_DEFINITION) {
|
|
213
|
+
operations.push(definition);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const ctx = {
|
|
217
|
+
schema,
|
|
218
|
+
transports,
|
|
219
|
+
fragments,
|
|
220
|
+
enums: new Set(),
|
|
221
|
+
inputs: new Set()
|
|
222
|
+
};
|
|
223
|
+
const typeNames = new Map();
|
|
224
|
+
const calls = new Map();
|
|
225
|
+
for (const operation of operations) {
|
|
226
|
+
const name = operation.name?.value;
|
|
227
|
+
if (!name)
|
|
228
|
+
continue;
|
|
229
|
+
const type = typeName(operation);
|
|
230
|
+
const other = typeNames.get(type);
|
|
231
|
+
if (other) {
|
|
232
|
+
throw new Error(`Operations "${other}" and "${name}" both name their result type ${type}; rename one`);
|
|
233
|
+
}
|
|
234
|
+
typeNames.set(type, name);
|
|
235
|
+
const call = `${operation.operation}.${lowerFirst(name)}`;
|
|
236
|
+
const clash = calls.get(call);
|
|
237
|
+
if (clash) {
|
|
238
|
+
throw new Error(`Operations "${clash}" and "${name}" are both client.${call}; rename one`);
|
|
239
|
+
}
|
|
240
|
+
calls.set(call, name);
|
|
241
|
+
}
|
|
242
|
+
const emitted = operations.map((o) => emitOperation(ctx, o));
|
|
243
|
+
const byRoot = new Map();
|
|
244
|
+
for (const operation of operations) {
|
|
245
|
+
const name = operation.name?.value ?? "";
|
|
246
|
+
const calls = byRoot.get(operation.operation) ?? [];
|
|
247
|
+
calls.push(` ${lowerFirst(name)}: ${name}Document`);
|
|
248
|
+
byRoot.set(operation.operation, calls);
|
|
249
|
+
}
|
|
250
|
+
const used = [...new Set(transports.values())].sort();
|
|
251
|
+
const map = [
|
|
252
|
+
...[...byRoot].map(([root, calls]) => ` ${root}: {\n${calls.join(",\n")}\n }`),
|
|
253
|
+
...(used.length
|
|
254
|
+
? [` transports: [${used.map((kind) => `"${kind}"`).join(", ")}]`]
|
|
255
|
+
: [])
|
|
256
|
+
].join(",\n");
|
|
257
|
+
const inputs = emitInputs(ctx);
|
|
258
|
+
const enums = [...ctx.enums]
|
|
259
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
260
|
+
.map((e) => `export type ${e.name} = ${e
|
|
261
|
+
.getValues()
|
|
262
|
+
.map((v) => `"${v.name}"`)
|
|
263
|
+
.join(" | ")};`);
|
|
264
|
+
const custom = Object.values(schema.getTypeMap())
|
|
265
|
+
.filter((t) => isScalarType(t) && !t.name.startsWith("__"))
|
|
266
|
+
.map((t) => t.name)
|
|
267
|
+
.filter((name) => !BUILTIN_SCALARS.has(name));
|
|
268
|
+
return `${[
|
|
269
|
+
HEADER,
|
|
270
|
+
'import type { Scalar, TypedDocument } from "@nxara/olio-client";',
|
|
271
|
+
"type Maybe<T> = T | null;",
|
|
272
|
+
custom.length
|
|
273
|
+
? [
|
|
274
|
+
`// Custom scalars (${custom.join(", ")}) are \`unknown\` unless registered in ClientScalars`,
|
|
275
|
+
"// (in a .ts file, or a .d.ts with an import or `export {}`):",
|
|
276
|
+
`// declare module "@nxara/olio-client" { interface ClientScalars { ${custom[0]}: string } }`
|
|
277
|
+
].join("\n")
|
|
278
|
+
: "",
|
|
279
|
+
...enums,
|
|
280
|
+
...inputs,
|
|
281
|
+
...emitted,
|
|
282
|
+
`/** For createClient(operations, { url }): \`client.mutation.login(variables)\`. */\nexport const operations = {\n${map}\n} as const;`
|
|
283
|
+
]
|
|
284
|
+
.filter(Boolean)
|
|
285
|
+
.join("\n\n")}\n`;
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=emit-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-client.js","sourceRoot":"","sources":["../src/emit-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { GraphQLEnumType, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLUnionType } from "graphql";
|
|
2
|
+
export declare function region(name: string, declarations: readonly string[]): string;
|
|
3
|
+
export declare function emitEnum(type: GraphQLEnumType): string;
|
|
4
|
+
export declare function emitObject(type: GraphQLObjectType): string;
|
|
5
|
+
export declare function emitInterface(type: GraphQLInterfaceType): string;
|
|
6
|
+
export declare function emitInput(type: GraphQLInputObjectType): string;
|
|
7
|
+
export declare function emitUnion(type: GraphQLUnionType): string;
|
|
8
|
+
//# sourceMappingURL=emit-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-type.d.ts","sourceRoot":"","sources":["../src/emit-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAK5E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAStD;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAQ1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAKhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAK9D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAMxD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { inputMember, typeToTS } from "./type-map.js";
|
|
2
|
+
export function region(name, declarations) {
|
|
3
|
+
const body = declarations.length
|
|
4
|
+
? `\n\n${declarations.join("\n\n")}\n\n`
|
|
5
|
+
: "\n\n";
|
|
6
|
+
return `/* #region ${name} */${body}/* #endregion ${name} */`;
|
|
7
|
+
}
|
|
8
|
+
export function emitEnum(type) {
|
|
9
|
+
const values = type
|
|
10
|
+
.getValues()
|
|
11
|
+
.map((v) => ` ${v.name}: "${v.name}"`)
|
|
12
|
+
.join(",\n");
|
|
13
|
+
return (`export const ${type.name} = {\n${values}\n} as const;\n` +
|
|
14
|
+
`export type ${type.name} = ResolveEnum<"${type.name}", (typeof ${type.name})[keyof typeof ${type.name}]>;`);
|
|
15
|
+
}
|
|
16
|
+
export function emitObject(type) {
|
|
17
|
+
const lines = [
|
|
18
|
+
` __typename?: "${type.name}";`,
|
|
19
|
+
...Object.values(type.getFields()).map((f) => ` ${f.name}: ${typeToTS(f.type, "output")};`)
|
|
20
|
+
];
|
|
21
|
+
return `export type ${type.name} = {\n${lines.join("\n")}\n};`;
|
|
22
|
+
}
|
|
23
|
+
export function emitInterface(type) {
|
|
24
|
+
const lines = Object.values(type.getFields()).map((f) => ` ${f.name}: ${typeToTS(f.type, "output")};`);
|
|
25
|
+
return `export type ${type.name} = {\n${lines.join("\n")}\n};`;
|
|
26
|
+
}
|
|
27
|
+
export function emitInput(type) {
|
|
28
|
+
const lines = Object.values(type.getFields()).map((f) => ` ${inputMember(f)};`);
|
|
29
|
+
return `export type ${type.name} = {\n${lines.join("\n")}\n};`;
|
|
30
|
+
}
|
|
31
|
+
export function emitUnion(type) {
|
|
32
|
+
const members = type
|
|
33
|
+
.getTypes()
|
|
34
|
+
.map((t) => t.name)
|
|
35
|
+
.join(" | ");
|
|
36
|
+
return `export type ${type.name} = ${members};`;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=emit-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-type.js","sourceRoot":"","sources":["../src/emit-type.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,YAA+B;IAClE,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM;QAC9B,CAAC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QACxC,CAAC,CAAC,MAAM,CAAC;IACX,OAAO,cAAc,IAAI,MAAM,IAAI,iBAAiB,IAAI,KAAK,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC5C,MAAM,MAAM,GAAG,IAAI;SAChB,SAAS,EAAE;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;SACtC,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,CACL,gBAAgB,IAAI,CAAC,IAAI,SAAS,MAAM,iBAAiB;QACzD,eAAe,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,kBAAkB,IAAI,CAAC,IAAI,KAAK,CAC5G,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,MAAM,KAAK,GAAG;QACZ,mBAAmB,IAAI,CAAC,IAAI,IAAI;QAChC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CACrD;KACF,CAAC;IACF,OAAO,eAAe,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CACrD,CAAC;IACF,OAAO,eAAe,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAA4B;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAC9B,CAAC;IACF,OAAO,eAAe,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,MAAM,OAAO,GAAG,IAAI;SACjB,QAAQ,EAAE;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,KAAK,CAAC,CAAC;IACf,OAAO,eAAe,IAAI,CAAC,IAAI,MAAM,OAAO,GAAG,CAAC;AAClD,CAAC"}
|
package/dist/files.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ClientCodegenOptions, type CodegenOptions } from "./types.js";
|
|
2
|
+
export declare function codegen(options: CodegenOptions): Promise<void>;
|
|
3
|
+
export declare function codegenClient(options: ClientCodegenOptions): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAyBA,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAkLpB,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFpE;AA4CD,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
|
package/dist/files.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { existsSync, watch as fsWatch } from "node:fs";
|
|
2
|
+
import { glob, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { loadGraphQLFile, matchFiles } from "@nxara/olio-core/files";
|
|
5
|
+
import { buildASTSchema, buildClientSchema, getIntrospectionQuery, printSchema } from "graphql";
|
|
6
|
+
import { compile } from "./codegen.js";
|
|
7
|
+
import { emitClient } from "./emit-client.js";
|
|
8
|
+
import { bold, count, cyan, dim, green, red, row, shortPath } from "./log.js";
|
|
9
|
+
import { BUILTIN_SCALARS } from "./types.js";
|
|
10
|
+
async function filesIn(moduleDir, patterns) {
|
|
11
|
+
const seen = new Set();
|
|
12
|
+
const files = [];
|
|
13
|
+
for (const pattern of patterns) {
|
|
14
|
+
for await (const file of glob(join(moduleDir, pattern))) {
|
|
15
|
+
const absolute = resolve(file);
|
|
16
|
+
if (seen.has(absolute))
|
|
17
|
+
continue;
|
|
18
|
+
seen.add(absolute);
|
|
19
|
+
files.push(file);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return files.sort();
|
|
23
|
+
}
|
|
24
|
+
async function discoverModules(modulesDir, typeDefs, onSkip) {
|
|
25
|
+
const root = resolve(modulesDir);
|
|
26
|
+
if (!existsSync(root)) {
|
|
27
|
+
throw new Error(`Modules directory does not exist: ${root}`);
|
|
28
|
+
}
|
|
29
|
+
const entries = await readdir(root, { withFileTypes: true });
|
|
30
|
+
const childDirs = entries
|
|
31
|
+
.filter((entry) => entry.isDirectory())
|
|
32
|
+
.map((entry) => entry.name)
|
|
33
|
+
.sort();
|
|
34
|
+
if (childDirs.length === 0) {
|
|
35
|
+
throw new Error(`No module directories found in ${root}`);
|
|
36
|
+
}
|
|
37
|
+
const patterns = Array.isArray(typeDefs) ? typeDefs : [typeDefs];
|
|
38
|
+
const modules = [];
|
|
39
|
+
const load = async (id, files) => {
|
|
40
|
+
const part = { id, files: [], typeDefs: [] };
|
|
41
|
+
for (const file of files) {
|
|
42
|
+
const document = await loadGraphQLFile(file);
|
|
43
|
+
if (!document) {
|
|
44
|
+
onSkip(file);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
part.files.push(file);
|
|
48
|
+
part.typeDefs.push(document);
|
|
49
|
+
}
|
|
50
|
+
return part;
|
|
51
|
+
};
|
|
52
|
+
for (const id of childDirs) {
|
|
53
|
+
const directory = join(root, id);
|
|
54
|
+
const files = await filesIn(directory, patterns);
|
|
55
|
+
if (files.length === 0) {
|
|
56
|
+
throw new Error(`Module "${id}" contains no matching typeDefs for "${patterns.join('", "')}"`);
|
|
57
|
+
}
|
|
58
|
+
const subdirs = (await readdir(directory, { withFileTypes: true }))
|
|
59
|
+
.filter((entry) => entry.isDirectory())
|
|
60
|
+
.map((entry) => entry.name)
|
|
61
|
+
.sort();
|
|
62
|
+
const features = [];
|
|
63
|
+
for (const name of subdirs) {
|
|
64
|
+
const own = await filesIn(join(directory, name), patterns);
|
|
65
|
+
if (own.length > 0)
|
|
66
|
+
features.push({ name, files: own });
|
|
67
|
+
}
|
|
68
|
+
const inFeature = new Set(features.flatMap((f) => f.files.map((file) => resolve(file))));
|
|
69
|
+
const rootFiles = files.filter((file) => !inFeature.has(resolve(file)));
|
|
70
|
+
modules.push({
|
|
71
|
+
id,
|
|
72
|
+
parts: [
|
|
73
|
+
await load(id, rootFiles),
|
|
74
|
+
...(await Promise.all(features.map((f) => load(`${id}/${f.name}`, f.files))))
|
|
75
|
+
],
|
|
76
|
+
features: features.map((f) => f.name)
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return modules;
|
|
80
|
+
}
|
|
81
|
+
async function writeOutput(output, content, clear) {
|
|
82
|
+
const current = await readFile(output, "utf8").catch(() => undefined);
|
|
83
|
+
if (current === content)
|
|
84
|
+
return false;
|
|
85
|
+
if (clear)
|
|
86
|
+
await rm(output, { force: true });
|
|
87
|
+
await mkdir(dirname(output), { recursive: true });
|
|
88
|
+
await writeFile(output, content);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
function rerunOnChange(targets, skip, run, log) {
|
|
92
|
+
let timer;
|
|
93
|
+
const changed = (path) => {
|
|
94
|
+
clearTimeout(timer);
|
|
95
|
+
timer = setTimeout(async () => {
|
|
96
|
+
log(`\n${cyan("↻")} ${shortPath(path)}`);
|
|
97
|
+
try {
|
|
98
|
+
await run();
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(` ${red("✗")} ${error instanceof Error ? error.message : String(error)}`);
|
|
102
|
+
}
|
|
103
|
+
}, 50);
|
|
104
|
+
};
|
|
105
|
+
for (const { dir, recursive, only } of targets) {
|
|
106
|
+
fsWatch(dir, { recursive }, (_event, filename) => {
|
|
107
|
+
const path = filename ? join(dir, filename) : dir;
|
|
108
|
+
if (skip.has(path) || (only && path !== only))
|
|
109
|
+
return;
|
|
110
|
+
changed(path);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
log(dim(`\n watching ${targets.map((t) => shortPath(t.only ?? t.dir)).join(", ")} for changes`));
|
|
114
|
+
return new Promise(() => {
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function globBase(pattern) {
|
|
118
|
+
const parts = pattern.split("/");
|
|
119
|
+
const wild = parts.findIndex((part) => /[*?[{]/.test(part));
|
|
120
|
+
return wild === -1 ? dirname(pattern) : parts.slice(0, wild).join("/") || "/";
|
|
121
|
+
}
|
|
122
|
+
export async function codegen(options) {
|
|
123
|
+
const { typeDefs, directives = [], watch = false, clear = false } = options;
|
|
124
|
+
const { logs = true } = options;
|
|
125
|
+
const at = (path) => resolve(options.root ?? "", path);
|
|
126
|
+
const modulesDir = at(options.modules);
|
|
127
|
+
const output = at(options.output);
|
|
128
|
+
const schemaOutput = options.schemaOutput && at(options.schemaOutput);
|
|
129
|
+
const log = logs
|
|
130
|
+
? (message) => {
|
|
131
|
+
console.log(message);
|
|
132
|
+
}
|
|
133
|
+
: (_message) => { };
|
|
134
|
+
const written = (path, changed, detail = "") => log(changed
|
|
135
|
+
? ` ${green("✓")} ${shortPath(path)}${detail && ` ${dim(detail)}`}`
|
|
136
|
+
: ` ${dim("·")} ${shortPath(path)} ${dim("unchanged")}`);
|
|
137
|
+
const run = async () => {
|
|
138
|
+
const started = performance.now();
|
|
139
|
+
const modules = await discoverModules(modulesDir, typeDefs, (file) => log(row("skipped", dim(`${shortPath(file)} (empty)`))));
|
|
140
|
+
log(row("modules", modules
|
|
141
|
+
.map((m) => {
|
|
142
|
+
const files = m.parts.reduce((sum, p) => sum + p.files.length, 0);
|
|
143
|
+
const features = m.features.length
|
|
144
|
+
? dim(` [${m.features.join(", ")}]`)
|
|
145
|
+
: "";
|
|
146
|
+
return `${m.id}${features} ${dim(count(files, "file"))}`;
|
|
147
|
+
})
|
|
148
|
+
.join(dim(" · "))));
|
|
149
|
+
if (directives.length > 0) {
|
|
150
|
+
log(row("directives", directives.map((d) => `@${d.name}`).join(" ")));
|
|
151
|
+
}
|
|
152
|
+
const codegenModules = modules.flatMap((m) => m.parts.map((p) => ({ id: p.id, typeDefs: p.typeDefs })));
|
|
153
|
+
const compiled = compile(codegenModules, { directives });
|
|
154
|
+
const types = Object.keys(compiled.schema.getTypeMap()).filter((name) => !name.startsWith("__") && !BUILTIN_SCALARS.has(name)).length;
|
|
155
|
+
written(output, await writeOutput(output, compiled.code, clear), `${count(types, "type")} · ${count(modules.length, "module")}`);
|
|
156
|
+
if (schemaOutput) {
|
|
157
|
+
written(schemaOutput, await writeOutput(schemaOutput, `${printSchema(compiled.schema)}\n`, clear));
|
|
158
|
+
}
|
|
159
|
+
log(dim(` done in ${Math.round(performance.now() - started)}ms`));
|
|
160
|
+
};
|
|
161
|
+
log(`${bold("@nxara/olio-codegen")} ${dim(watch ? "watch" : "generate")}`);
|
|
162
|
+
await run();
|
|
163
|
+
if (!watch)
|
|
164
|
+
return;
|
|
165
|
+
await rerunOnChange([{ dir: modulesDir, recursive: true }], new Set([output, ...(schemaOutput ? [schemaOutput] : [])]), run, log);
|
|
166
|
+
}
|
|
167
|
+
async function loadSchema(source, headers = {}) {
|
|
168
|
+
if (!/^https?:\/\//.test(source)) {
|
|
169
|
+
const document = await loadGraphQLFile(source);
|
|
170
|
+
if (!document)
|
|
171
|
+
throw new Error(`Schema file "${source}" is empty`);
|
|
172
|
+
return buildASTSchema(document);
|
|
173
|
+
}
|
|
174
|
+
const response = await fetch(source, {
|
|
175
|
+
method: "POST",
|
|
176
|
+
headers: {
|
|
177
|
+
"content-type": "application/json",
|
|
178
|
+
accept: "application/json",
|
|
179
|
+
...headers
|
|
180
|
+
},
|
|
181
|
+
body: JSON.stringify({ query: getIntrospectionQuery() })
|
|
182
|
+
});
|
|
183
|
+
const body = (await response.json().catch(() => undefined));
|
|
184
|
+
if (!body?.data) {
|
|
185
|
+
const reason = body?.errors?.map((e) => e.message).join("; ") ??
|
|
186
|
+
`HTTP ${response.status}`;
|
|
187
|
+
throw new Error(`Couldn't introspect ${source}: ${reason}`);
|
|
188
|
+
}
|
|
189
|
+
return buildClientSchema(body.data);
|
|
190
|
+
}
|
|
191
|
+
async function loadDocuments(patterns) {
|
|
192
|
+
const files = await matchFiles([patterns].flat());
|
|
193
|
+
const documents = await Promise.all(files.map(loadGraphQLFile));
|
|
194
|
+
return documents.filter((d) => d !== undefined);
|
|
195
|
+
}
|
|
196
|
+
export async function codegenClient(options) {
|
|
197
|
+
const { logs = true, watch = false } = options;
|
|
198
|
+
const at = (path) => resolve(options.root ?? "", path);
|
|
199
|
+
const output = at(options.output);
|
|
200
|
+
const remote = /^https?:\/\//.test(options.schema);
|
|
201
|
+
const schema = remote ? options.schema : at(options.schema);
|
|
202
|
+
const documents = [options.documents].flat().map(at);
|
|
203
|
+
const log = logs
|
|
204
|
+
? (message) => {
|
|
205
|
+
console.log(message);
|
|
206
|
+
}
|
|
207
|
+
: (_message) => { };
|
|
208
|
+
const run = async () => {
|
|
209
|
+
const loaded = await loadSchema(schema, options.headers);
|
|
210
|
+
const code = emitClient(loaded, await loadDocuments(documents));
|
|
211
|
+
const changed = await writeOutput(output, code, false);
|
|
212
|
+
log(` ${changed ? green("✓") : dim("·")} ${shortPath(output)}${changed ? "" : ` ${dim("unchanged")}`}`);
|
|
213
|
+
};
|
|
214
|
+
log(`${bold("@nxara/olio-codegen")} ${dim(watch ? "client watch" : "client")}`);
|
|
215
|
+
await run();
|
|
216
|
+
if (!watch)
|
|
217
|
+
return;
|
|
218
|
+
const targets = documents.map((pattern) => ({
|
|
219
|
+
dir: globBase(pattern),
|
|
220
|
+
recursive: true
|
|
221
|
+
}));
|
|
222
|
+
if (!remote)
|
|
223
|
+
targets.push({ dir: dirname(schema), recursive: false, only: schema });
|
|
224
|
+
await rerunOnChange(targets, new Set([output]), run, log);
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,OAAO,EACR,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|