@nxara/olio-codegen 0.0.0-stage → 0.1.0-rc.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.
- 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/emit-wiring.d.ts +9 -0
- package/dist/emit-wiring.d.ts.map +1 -0
- package/dist/emit-wiring.js +65 -0
- package/dist/emit-wiring.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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface WiredOwner {
|
|
2
|
+
id: string;
|
|
3
|
+
typeDefs: readonly string[];
|
|
4
|
+
resolvers: readonly string[];
|
|
5
|
+
enums: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function emitWiring(output: string, owners: readonly WiredOwner[]): string;
|
|
8
|
+
export declare function emitList(output: string, kind: "modules" | "features", indexes: readonly string[]): string;
|
|
9
|
+
//# sourceMappingURL=emit-wiring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-wiring.d.ts","sourceRoot":"","sources":["../src/emit-wiring.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAoBD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,UAAU,EAAE,GAC5B,MAAM,CAkDR;AAGD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GAAG,UAAU,EAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CAcR"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, extname, relative, sep } from "node:path";
|
|
3
|
+
import { HEADER } from "./types.js";
|
|
4
|
+
const GRAPHQL = new Set([".gql", ".graphql"]);
|
|
5
|
+
function specifier(from, file) {
|
|
6
|
+
const path = relative(dirname(from), file).split(sep).join("/");
|
|
7
|
+
const withJs = path.replace(/\.(ts|mts|tsx)$/, ".js");
|
|
8
|
+
return withJs.startsWith(".") ? withJs : `./${withJs}`;
|
|
9
|
+
}
|
|
10
|
+
const label = (from, file) => specifier(from, file).replace(/\.js$/, extname(file));
|
|
11
|
+
const key = (id) => /^[A-Za-z_$][\w$]*$/.test(id) ? id : JSON.stringify(id);
|
|
12
|
+
export function emitWiring(output, owners) {
|
|
13
|
+
const imports = [];
|
|
14
|
+
const helpers = new Set();
|
|
15
|
+
const bind = (file, kind) => {
|
|
16
|
+
const name = `_${imports.length}`;
|
|
17
|
+
imports.push(kind === "namespace"
|
|
18
|
+
? `import * as ${name} from "${specifier(output, file)}";`
|
|
19
|
+
: `import ${name} from "${specifier(output, file)}";`);
|
|
20
|
+
return name;
|
|
21
|
+
};
|
|
22
|
+
const files = (helper, list) => {
|
|
23
|
+
helpers.add(helper);
|
|
24
|
+
const entries = list.map((file) => ` ${JSON.stringify(label(output, file))}: ${bind(file, "namespace")}`);
|
|
25
|
+
return `${helper}({\n${entries.join(",\n")}\n })`;
|
|
26
|
+
};
|
|
27
|
+
const entries = owners.map((owner) => {
|
|
28
|
+
const parts = [];
|
|
29
|
+
if (owner.typeDefs.length > 0) {
|
|
30
|
+
const sources = owner.typeDefs.map((file) => GRAPHQL.has(extname(file))
|
|
31
|
+
? JSON.stringify(readFileSync(file, "utf8"))
|
|
32
|
+
: bind(file, "default"));
|
|
33
|
+
parts.push(` typeDefs: [\n ${sources.join(",\n ")}\n ]`);
|
|
34
|
+
}
|
|
35
|
+
if (owner.resolvers.length > 0) {
|
|
36
|
+
parts.push(` resolvers: ${files("mergeResolvers", owner.resolvers)}`);
|
|
37
|
+
}
|
|
38
|
+
if (owner.enums.length > 0) {
|
|
39
|
+
parts.push(` enums: ${files("mergeEnums", owner.enums)}`);
|
|
40
|
+
}
|
|
41
|
+
return `${key(owner.id)}: {\n${parts.join(",\n")}\n}`.replace(/^/gm, " ");
|
|
42
|
+
});
|
|
43
|
+
return `${[
|
|
44
|
+
HEADER,
|
|
45
|
+
helpers.size > 0
|
|
46
|
+
? `import { ${[...helpers].sort().join(", ")} } from "@nxara/olio-tools";`
|
|
47
|
+
: "",
|
|
48
|
+
imports.join("\n"),
|
|
49
|
+
`/** Each module's and feature's parts, for its index file: \`module.users({ ...wiring.users, middleware })\`. */\nexport const wiring = {\n${entries.join(",\n")}\n};`
|
|
50
|
+
]
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join("\n\n")}\n`;
|
|
53
|
+
}
|
|
54
|
+
export function emitList(output, kind, indexes) {
|
|
55
|
+
const helper = kind === "modules" ? "pickModules" : "pickFeatures";
|
|
56
|
+
const imports = indexes.map((file, i) => `import * as _${i} from "${specifier(output, file)}";`);
|
|
57
|
+
const entries = indexes.map((file, i) => ` ${JSON.stringify(label(output, file))}: _${i}`);
|
|
58
|
+
return `${[
|
|
59
|
+
HEADER,
|
|
60
|
+
`import { ${helper} } from "@nxara/olio-tools";`,
|
|
61
|
+
imports.join("\n"),
|
|
62
|
+
`export const ${kind} = ${helper}({\n${entries.join(",\n")}\n});`
|
|
63
|
+
].join("\n\n")}\n`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=emit-wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-wiring.js","sourceRoot":"","sources":["../src/emit-wiring.ts"],"names":[],"mappings":"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"}
|
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"}
|