@kollors/react-codegen 2.0.0-alpha.4 → 2.0.0-alpha.6
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/README.md +193 -49
- package/README.ru.md +193 -49
- package/dist/{cli.js → cli/index.js} +6 -11
- package/dist/cli/index.js.map +1 -0
- package/dist/core/auth.d.ts +7 -0
- package/dist/core/auth.js +2 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/config.d.ts +2 -0
- package/dist/core/config.js +67 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{generate.d.ts → core/generate.d.ts} +0 -1
- package/dist/core/generate.js +47 -0
- package/dist/core/generate.js.map +1 -0
- package/dist/core/names.d.ts +5 -0
- package/dist/core/names.js +16 -0
- package/dist/core/names.js.map +1 -0
- package/dist/core/output.d.ts +5 -0
- package/dist/core/output.js +39 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/paths.d.ts +4 -0
- package/dist/core/paths.js +12 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/{types.d.ts → core/types.d.ts} +2 -2
- package/dist/core/types.js.map +1 -0
- package/dist/graphql/document.d.ts +8 -0
- package/dist/graphql/document.js +118 -0
- package/dist/graphql/document.js.map +1 -0
- package/dist/graphql/fetcher.d.ts +5 -0
- package/dist/graphql/fetcher.js +4 -0
- package/dist/graphql/fetcher.js.map +1 -0
- package/dist/graphql/generate.d.ts +3 -0
- package/dist/graphql/generate.js +59 -0
- package/dist/graphql/generate.js.map +1 -0
- package/dist/graphql/operations.d.ts +13 -0
- package/dist/graphql/operations.js +139 -0
- package/dist/graphql/operations.js.map +1 -0
- package/dist/{graphql-fetcher.d.ts → graphql/runtime.d.ts} +4 -3
- package/dist/{graphql-fetcher.js → graphql/runtime.js} +12 -6
- package/dist/graphql/runtime.js.map +1 -0
- package/dist/graphql/runtime.source +140 -0
- package/dist/graphql/selections.d.ts +12 -0
- package/dist/graphql/selections.js +120 -0
- package/dist/graphql/selections.js.map +1 -0
- package/dist/graphql/types.d.ts +15 -0
- package/dist/graphql/types.js +110 -0
- package/dist/graphql/types.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/openapi/fetcher.d.ts +3 -0
- package/dist/openapi/fetcher.js +4 -0
- package/dist/openapi/fetcher.js.map +1 -0
- package/dist/openapi/generate.d.ts +1 -1
- package/dist/openapi/generate.js +2 -1
- package/dist/openapi/generate.js.map +1 -1
- package/dist/openapi/names.d.ts +1 -5
- package/dist/openapi/names.js +1 -15
- package/dist/openapi/names.js.map +1 -1
- package/dist/openapi/operations.d.ts +0 -1
- package/dist/openapi/operations.js +35 -45
- package/dist/openapi/operations.js.map +1 -1
- package/dist/{openapi-runtime.d.ts → openapi/runtime.d.ts} +5 -7
- package/dist/{openapi-runtime.js → openapi/runtime.js} +38 -25
- package/dist/openapi/runtime.js.map +1 -0
- package/dist/{openapi-runtime.source → openapi/runtime.source} +43 -21
- package/dist/openapi/schema.d.ts +4 -0
- package/dist/openapi/schema.js +83 -77
- package/dist/openapi/schema.js.map +1 -1
- package/dist/openapi/type-expression.d.ts +38 -0
- package/dist/openapi/type-expression.js +166 -0
- package/dist/openapi/type-expression.js.map +1 -0
- package/docs/migration.md +21 -0
- package/docs/migration.ru.md +21 -0
- package/package.json +10 -15
- package/dist/cli.js.map +0 -1
- package/dist/generate.js +0 -197
- package/dist/generate.js.map +0 -1
- package/dist/graphql-fetcher.js.map +0 -1
- package/dist/openapi-fetcher.d.ts +0 -3
- package/dist/openapi-fetcher.js +0 -4
- package/dist/openapi-fetcher.js.map +0 -1
- package/dist/openapi-runtime.js.map +0 -1
- package/dist/path-utils.d.ts +0 -2
- package/dist/path-utils.js +0 -5
- package/dist/path-utils.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/templates/graphql.template +0 -23
- /package/dist/{cli.d.ts → cli/index.d.ts} +0 -0
- /package/dist/{types.js → core/types.js} +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
export function publishOutputs(outputs) {
|
|
4
|
+
const staged = new Map();
|
|
5
|
+
const previous = new Map();
|
|
6
|
+
const published = [];
|
|
7
|
+
try {
|
|
8
|
+
for (const output of outputs) {
|
|
9
|
+
mkdirSync(dirname(output.path), { recursive: true });
|
|
10
|
+
const directory = mkdtempSync(join(dirname(output.path), '.react-codegen-publish-'));
|
|
11
|
+
const filename = join(directory, 'generated.ts');
|
|
12
|
+
staged.set(output.path, { directory, filename });
|
|
13
|
+
previous.set(output.path, existsSync(output.path) ? readFileSync(output.path) : undefined);
|
|
14
|
+
writeFileSync(filename, output.content);
|
|
15
|
+
}
|
|
16
|
+
for (const output of outputs) {
|
|
17
|
+
const stage = staged.get(output.path);
|
|
18
|
+
if (!stage)
|
|
19
|
+
throw new Error(`Could not stage generated output ${output.path}.`);
|
|
20
|
+
renameSync(stage.filename, output.path);
|
|
21
|
+
published.push(output.path);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
for (const path of published.reverse()) {
|
|
26
|
+
const oldContent = previous.get(path);
|
|
27
|
+
if (oldContent === undefined)
|
|
28
|
+
rmSync(path, { force: true });
|
|
29
|
+
else
|
|
30
|
+
writeFileSync(path, oldContent);
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
for (const { directory } of staged.values())
|
|
36
|
+
rmSync(directory, { force: true, recursive: true });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAO1C,MAAM,UAAU,cAAc,CAAC,OAA0B;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmD,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IACvD,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;YACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3F,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAChF,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;gBACvD,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Return whether a schema value is an absolute URL instead of a filesystem path. */
|
|
2
|
+
export declare function isUrl(value: string): boolean;
|
|
3
|
+
export declare function resolvePath(value: string, directory: string): string;
|
|
4
|
+
export declare function resolveSchema(value: string, directory: string): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
2
|
+
/** Return whether a schema value is an absolute URL instead of a filesystem path. */
|
|
3
|
+
export function isUrl(value) {
|
|
4
|
+
return /^[a-z][a-z\d+.-]*:\/\//i.test(value);
|
|
5
|
+
}
|
|
6
|
+
export function resolvePath(value, directory) {
|
|
7
|
+
return isAbsolute(value) ? value : resolve(directory, value);
|
|
8
|
+
}
|
|
9
|
+
export function resolveSchema(value, directory) {
|
|
10
|
+
return isUrl(value) ? value : resolvePath(value, directory);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/core/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhD,qFAAqF;AACrF,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,SAAiB;IAC1D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,SAAiB;IAC5D,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AuthConfig } from './
|
|
2
|
-
export type { AuthConfig, TokenStorage } from './
|
|
1
|
+
import type { AuthConfig } from './auth.js';
|
|
2
|
+
export type { AuthConfig, TokenStorage } from './auth.js';
|
|
3
3
|
export interface CodegenConfig {
|
|
4
4
|
auth?: AuthConfig;
|
|
5
5
|
openapi?: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ASTNode, type FragmentDefinitionNode, type GraphQLSchema, type OperationDefinitionNode } from 'graphql';
|
|
2
|
+
export declare function location(node: ASTNode): string;
|
|
3
|
+
export declare function loadSchema(source: string): Promise<GraphQLSchema>;
|
|
4
|
+
export interface Documents {
|
|
5
|
+
operations: OperationDefinitionNode[];
|
|
6
|
+
fragments: Map<string, FragmentDefinitionNode>;
|
|
7
|
+
}
|
|
8
|
+
export declare function loadDocuments(directory: string, schema: GraphQLSchema, schemaSource: string): Promise<Documents>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { buildASTSchema, buildClientSchema, GraphQLError, getIntrospectionQuery, Kind, NoUnusedFragmentsRule, parse, Source, specifiedRules, validate, validateSchema, visit, } from 'graphql';
|
|
4
|
+
import { isUrl } from '../core/paths.js';
|
|
5
|
+
export function location(node) {
|
|
6
|
+
if (!node.loc)
|
|
7
|
+
return 'GraphQL document';
|
|
8
|
+
const before = node.loc.source.body.slice(0, node.loc.start).split('\n');
|
|
9
|
+
return `${node.loc.source.name}:${before.length}:${(before.at(-1)?.length ?? 0) + 1}`;
|
|
10
|
+
}
|
|
11
|
+
function parseSource(text, source) {
|
|
12
|
+
try {
|
|
13
|
+
return parse(new Source(text, source));
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof GraphQLError)
|
|
17
|
+
throw new Error(error.toString(), { cause: error });
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function schemaText(source) {
|
|
22
|
+
if (!isUrl(source))
|
|
23
|
+
return readFile(source, 'utf8');
|
|
24
|
+
let response = await fetch(source, { signal: AbortSignal.timeout(30_000) });
|
|
25
|
+
let text = await response.text();
|
|
26
|
+
// Endpoints commonly only accept POST; URLs serving SDL or JSON keep their GET response.
|
|
27
|
+
if ([400, 405].includes(response.status) || (response.ok && /^\s*\{/.test(text) && 'errors' in JSON.parse(text))) {
|
|
28
|
+
const introspect = (oneOf) => fetch(source, {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: { 'content-type': 'application/json' },
|
|
31
|
+
body: JSON.stringify({ query: getIntrospectionQuery({ oneOf }) }),
|
|
32
|
+
signal: AbortSignal.timeout(30_000),
|
|
33
|
+
});
|
|
34
|
+
response = await introspect(true);
|
|
35
|
+
text = await response.text();
|
|
36
|
+
// Older servers predate oneOf; retry only the specific unsupported introspection field.
|
|
37
|
+
if ((response.ok || response.status === 400) && /^\s*\{/.test(text)) {
|
|
38
|
+
const result = JSON.parse(text);
|
|
39
|
+
if (Array.isArray(result.errors) &&
|
|
40
|
+
result.errors.some((error) => /Cannot query field "isOneOf" on type "__Type"/.test(error.message ?? ''))) {
|
|
41
|
+
response = await introspect(false);
|
|
42
|
+
text = await response.text();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!response.ok)
|
|
47
|
+
throw new Error(`Schema request to ${source} failed with HTTP ${response.status} ${response.statusText}.`);
|
|
48
|
+
return text;
|
|
49
|
+
}
|
|
50
|
+
export async function loadSchema(source) {
|
|
51
|
+
const text = await schemaText(source);
|
|
52
|
+
let schema;
|
|
53
|
+
if (/^\s*\{/.test(text)) {
|
|
54
|
+
const json = JSON.parse(text);
|
|
55
|
+
const introspection = json.data ?? json;
|
|
56
|
+
if (!introspection?.__schema) {
|
|
57
|
+
throw new Error(`${source}: expected introspection JSON with __schema or data.__schema${json.errors?.length ? `; ${json.errors.map((error) => error.message).join('; ')}` : '.'}`);
|
|
58
|
+
}
|
|
59
|
+
schema = buildClientSchema(introspection);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
schema = buildASTSchema(parseSource(text, source));
|
|
63
|
+
}
|
|
64
|
+
const errors = validateSchema(schema);
|
|
65
|
+
if (errors.length)
|
|
66
|
+
throw new Error(errors.map((error) => error.toString()).join('\n\n'));
|
|
67
|
+
return schema;
|
|
68
|
+
}
|
|
69
|
+
export async function loadDocuments(directory, schema, schemaSource) {
|
|
70
|
+
if (!(await stat(directory)).isDirectory())
|
|
71
|
+
throw new Error(`GraphQL documents path must be a directory: ${directory}`);
|
|
72
|
+
const definitions = [];
|
|
73
|
+
async function readDirectory(path) {
|
|
74
|
+
const entries = (await readdir(path, { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name, 'en'));
|
|
75
|
+
for (const entry of entries) {
|
|
76
|
+
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
77
|
+
continue;
|
|
78
|
+
const file = join(path, entry.name);
|
|
79
|
+
if (entry.isDirectory())
|
|
80
|
+
await readDirectory(file);
|
|
81
|
+
else if (entry.isFile() && entry.name.endsWith('.graphql') && file !== resolve(schemaSource)) {
|
|
82
|
+
const document = parseSource(await readFile(file, 'utf8'), file);
|
|
83
|
+
for (const definition of document.definitions) {
|
|
84
|
+
// SDL files can share the documents directory; only executable definitions belong in requests.
|
|
85
|
+
if (definition.kind === Kind.OPERATION_DEFINITION || definition.kind === Kind.FRAGMENT_DEFINITION)
|
|
86
|
+
definitions.push(definition);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
await readDirectory(directory);
|
|
92
|
+
const document = { kind: Kind.DOCUMENT, definitions };
|
|
93
|
+
visit(document, {
|
|
94
|
+
OperationDefinition(node) {
|
|
95
|
+
if (!node.name)
|
|
96
|
+
throw new Error(`${location(node)}: operations must have a name.`);
|
|
97
|
+
if (node.operation === 'subscription')
|
|
98
|
+
throw new Error(`${location(node)}: subscriptions require a streaming transport and are not supported.`);
|
|
99
|
+
},
|
|
100
|
+
Directive(node) {
|
|
101
|
+
if (['defer', 'stream'].includes(node.name.value)) {
|
|
102
|
+
throw new Error(`${location(node)}: @${node.name.value} requires incremental responses and is not supported.`);
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
// Unused fragments are allowed as a shared library, but still checked for validity and cycles.
|
|
107
|
+
const errors = validate(schema, document, specifiedRules.filter((rule) => rule !== NoUnusedFragmentsRule));
|
|
108
|
+
if (errors.length)
|
|
109
|
+
throw new Error(errors.map((error) => error.toString()).join('\n\n'));
|
|
110
|
+
const operations = definitions.filter((definition) => definition.kind === Kind.OPERATION_DEFINITION);
|
|
111
|
+
if (!operations.length)
|
|
112
|
+
throw new Error(`No named GraphQL query or mutation found in ${directory}.`);
|
|
113
|
+
const fragments = new Map(definitions
|
|
114
|
+
.filter((definition) => definition.kind === Kind.FRAGMENT_DEFINITION)
|
|
115
|
+
.map((fragment) => [fragment.name.value, fragment]));
|
|
116
|
+
return { operations, fragments };
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/graphql/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { GraphqlFetcherConfiguration } from './runtime.js';
|
|
2
|
+
export { createGraphqlFetcher, GraphqlHttpError, GraphqlResponseError } from './runtime.js';
|
|
3
|
+
export declare const graphqlFetcher: <TData, TVariables>(query: string, variables?: TVariables, operationName?: string) => (context?: {
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
}) => Promise<TData>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/graphql/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE5F,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { GraphqlFetcherConfiguration } from './runtime.js';
|
|
2
|
+
/** Parse and validate with graphql; produce the entire TypeScript client in memory. */
|
|
3
|
+
export declare function generateGraphqlSource(source: string, documentsDirectory: string, configuration: GraphqlFetcherConfiguration): Promise<string>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { Names } from '../core/names.js';
|
|
3
|
+
import { loadDocuments, loadSchema } from './document.js';
|
|
4
|
+
import { Operations } from './operations.js';
|
|
5
|
+
import { Types } from './types.js';
|
|
6
|
+
/** Parse and validate with graphql; produce the entire TypeScript client in memory. */
|
|
7
|
+
export async function generateGraphqlSource(source, documentsDirectory, configuration) {
|
|
8
|
+
const schema = await loadSchema(source);
|
|
9
|
+
const documents = await loadDocuments(documentsDirectory, schema, source);
|
|
10
|
+
const runtime = await readFile(new URL('./runtime.source', import.meta.url), 'utf8');
|
|
11
|
+
const names = new Names();
|
|
12
|
+
for (const name of [
|
|
13
|
+
'reactQuery',
|
|
14
|
+
'Scalars',
|
|
15
|
+
'TokenStorage',
|
|
16
|
+
'AuthConfig',
|
|
17
|
+
'GraphqlFetcherConfiguration',
|
|
18
|
+
'GraphqlHttpError',
|
|
19
|
+
'GraphqlResponseError',
|
|
20
|
+
'createGraphqlFetcher',
|
|
21
|
+
'graphqlFetcher',
|
|
22
|
+
'readConfiguredToken',
|
|
23
|
+
'authorizationValue',
|
|
24
|
+
'Array',
|
|
25
|
+
'Record',
|
|
26
|
+
'Promise',
|
|
27
|
+
'Omit',
|
|
28
|
+
'Exclude',
|
|
29
|
+
'NonNullable',
|
|
30
|
+
'Error',
|
|
31
|
+
'Map',
|
|
32
|
+
'Set',
|
|
33
|
+
'Headers',
|
|
34
|
+
'HeadersInit',
|
|
35
|
+
'RequestCredentials',
|
|
36
|
+
'AbortSignal',
|
|
37
|
+
'Response',
|
|
38
|
+
'Object',
|
|
39
|
+
'String',
|
|
40
|
+
'JSON',
|
|
41
|
+
'globalThis',
|
|
42
|
+
'document',
|
|
43
|
+
'fetch',
|
|
44
|
+
])
|
|
45
|
+
names.reserve(name, 'generated runtime');
|
|
46
|
+
const types = new Types(schema, names);
|
|
47
|
+
const declarations = types.declarations();
|
|
48
|
+
const operations = new Operations(types, documents, configuration.endpoint ?? '/api/graphql').render();
|
|
49
|
+
return [
|
|
50
|
+
'// Generated by @kollors/react-codegen. Do not edit.',
|
|
51
|
+
"import * as reactQuery from '@tanstack/react-query';",
|
|
52
|
+
declarations,
|
|
53
|
+
runtime,
|
|
54
|
+
`export const graphqlFetcher = createGraphqlFetcher(${JSON.stringify(configuration)});`,
|
|
55
|
+
operations,
|
|
56
|
+
'',
|
|
57
|
+
].join('\n\n');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/graphql/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,kBAA0B,EAC1B,aAA0C;IAE1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI;QACjB,YAAY;QACZ,SAAS;QACT,cAAc;QACd,YAAY;QACZ,6BAA6B;QAC7B,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,gBAAgB;QAChB,qBAAqB;QACrB,oBAAoB;QACpB,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM;QACN,SAAS;QACT,aAAa;QACb,OAAO;QACP,KAAK;QACL,KAAK;QACL,SAAS;QACT,aAAa;QACb,oBAAoB;QACpB,aAAa;QACb,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,UAAU;QACV,OAAO;KACR;QACC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;IACvG,OAAO;QACL,sDAAsD;QACtD,sDAAsD;QACtD,YAAY;QACZ,OAAO;QACP,sDAAsD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI;QACvF,UAAU;QACV,EAAE;KACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Documents } from './document.js';
|
|
2
|
+
import { type Types } from './types.js';
|
|
3
|
+
export declare class Operations {
|
|
4
|
+
private readonly types;
|
|
5
|
+
private readonly documents;
|
|
6
|
+
private readonly endpoint;
|
|
7
|
+
private readonly selections;
|
|
8
|
+
constructor(types: Types, documents: Documents, endpoint: string);
|
|
9
|
+
/** Include only this operation's transitive fragment dependencies in the request. */
|
|
10
|
+
private document;
|
|
11
|
+
render(): string;
|
|
12
|
+
private operation;
|
|
13
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { isCompositeType, isInputType, isNonNullType, Kind, print, typeFromAST, visit, } from 'graphql';
|
|
2
|
+
import { location } from './document.js';
|
|
3
|
+
import { Selections } from './selections.js';
|
|
4
|
+
import { title } from './types.js';
|
|
5
|
+
export class Operations {
|
|
6
|
+
types;
|
|
7
|
+
documents;
|
|
8
|
+
endpoint;
|
|
9
|
+
selections;
|
|
10
|
+
constructor(types, documents, endpoint) {
|
|
11
|
+
this.types = types;
|
|
12
|
+
this.documents = documents;
|
|
13
|
+
this.endpoint = endpoint;
|
|
14
|
+
this.selections = new Selections(types, documents.fragments);
|
|
15
|
+
}
|
|
16
|
+
/** Include only this operation's transitive fragment dependencies in the request. */
|
|
17
|
+
document(definition) {
|
|
18
|
+
const fragments = new Map();
|
|
19
|
+
const add = (node) => {
|
|
20
|
+
visit(node, {
|
|
21
|
+
FragmentSpread: (spread) => {
|
|
22
|
+
const name = spread.name.value;
|
|
23
|
+
if (fragments.has(name))
|
|
24
|
+
return;
|
|
25
|
+
const fragment = this.documents.fragments.get(name);
|
|
26
|
+
if (!fragment)
|
|
27
|
+
throw new Error(`${location(spread)}: missing fragment ${name}.`);
|
|
28
|
+
fragments.set(name, fragment);
|
|
29
|
+
add(fragment);
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
add(definition);
|
|
34
|
+
const document = {
|
|
35
|
+
kind: Kind.DOCUMENT,
|
|
36
|
+
definitions: [definition, ...[...fragments].sort(([a], [b]) => a.localeCompare(b)).map(([, fragment]) => fragment)],
|
|
37
|
+
};
|
|
38
|
+
return print(document);
|
|
39
|
+
}
|
|
40
|
+
render() {
|
|
41
|
+
const result = [];
|
|
42
|
+
for (const fragment of this.documents.fragments.values()) {
|
|
43
|
+
const name = title(fragment.name.value);
|
|
44
|
+
const type = this.types.schema.getType(fragment.typeCondition.name.value);
|
|
45
|
+
if (!isCompositeType(type))
|
|
46
|
+
throw new Error(`${location(fragment)}: expected a composite fragment type.`);
|
|
47
|
+
const fragmentType = this.types.names.reserve(`${name}Fragment`, location(fragment));
|
|
48
|
+
const fragmentDoc = this.types.names.reserve(`${name}FragmentDoc`, location(fragment));
|
|
49
|
+
result.push(`export type ${fragmentType} = ${this.selections.render(type, fragment.selectionSet)};`, `export const ${fragmentDoc} = ${JSON.stringify(this.document(fragment))};`);
|
|
50
|
+
}
|
|
51
|
+
for (const operation of this.documents.operations)
|
|
52
|
+
result.push(this.operation(operation));
|
|
53
|
+
return result.join('\n\n');
|
|
54
|
+
}
|
|
55
|
+
operation(operation) {
|
|
56
|
+
const original = operation.name?.value;
|
|
57
|
+
if (!original)
|
|
58
|
+
throw new Error(`${location(operation)}: operations must have a name.`);
|
|
59
|
+
const name = title(original);
|
|
60
|
+
const reserve = (symbol) => this.types.names.reserve(symbol, location(operation));
|
|
61
|
+
const resultName = reserve(name);
|
|
62
|
+
const variablesName = reserve(`${name}Variables`);
|
|
63
|
+
const documentName = reserve(`${name}Document`);
|
|
64
|
+
const fetchName = reserve(`fetch${name}`);
|
|
65
|
+
const hookName = reserve(`use${name}`);
|
|
66
|
+
const root = operation.operation === 'mutation' ? this.types.schema.getMutationType() : this.types.schema.getQueryType();
|
|
67
|
+
if (!root)
|
|
68
|
+
throw new Error(`${location(operation)}: schema has no ${operation.operation} root.`);
|
|
69
|
+
const variableNodes = operation.variableDefinitions ?? [];
|
|
70
|
+
const fields = variableNodes.map((variable) => {
|
|
71
|
+
const type = typeFromAST(this.types.schema, variable.type);
|
|
72
|
+
if (!isInputType(type))
|
|
73
|
+
throw new Error(`${location(variable)}: expected an input variable type.`);
|
|
74
|
+
const required = isNonNullType(type) && variable.defaultValue === undefined;
|
|
75
|
+
return ` ${JSON.stringify(variable.variable.name.value)}${required ? '' : '?'}: ${this.types.type(type, true)};`;
|
|
76
|
+
});
|
|
77
|
+
const required = variableNodes.some((variable) => variable.type.kind === Kind.NON_NULL_TYPE && variable.defaultValue === undefined);
|
|
78
|
+
const variables = `variables: ${variablesName}${required ? '' : ' = {}'}`;
|
|
79
|
+
const declarations = [
|
|
80
|
+
`export type ${variablesName} = ${fields.length ? `{\n${fields.join('\n')}\n}` : 'Record<string, never>'};`,
|
|
81
|
+
`export type ${resultName} = ${this.selections.render(root, operation.selectionSet)};`,
|
|
82
|
+
`export const ${documentName} = ${JSON.stringify(this.document(operation))};`,
|
|
83
|
+
`export function ${fetchName}(${variables}, signal?: AbortSignal): Promise<${resultName}> {
|
|
84
|
+
return graphqlFetcher<${resultName}, ${variablesName}>(${documentName}, variables, ${JSON.stringify(original)})(signal ? { signal } : undefined);
|
|
85
|
+
}`,
|
|
86
|
+
];
|
|
87
|
+
if (operation.operation === 'query') {
|
|
88
|
+
const base = name.endsWith('Query') ? name.slice(0, -5) || name : name;
|
|
89
|
+
const lower = base.charAt(0).toLowerCase() + base.slice(1);
|
|
90
|
+
const keyName = reserve(`${lower}QueryKey`);
|
|
91
|
+
const optionsName = reserve(`${lower}Query`);
|
|
92
|
+
const suspenseName = reserve(`useSuspense${name}`);
|
|
93
|
+
const optionsType = `Omit<reactQuery.UseQueryOptions<${resultName}, TError, TData>, 'queryKey' | 'queryFn'> & { queryKey?: reactQuery.QueryKey }`;
|
|
94
|
+
declarations.push(`export function ${keyName}(${variables}) {
|
|
95
|
+
return [${JSON.stringify(this.endpoint)}, ${JSON.stringify(original)}, ${documentName}, variables] as const;
|
|
96
|
+
}`);
|
|
97
|
+
declarations.push(`export function ${optionsName}<TData = ${resultName}, TError = unknown>(
|
|
98
|
+
variables: ${variablesName} | typeof reactQuery.skipToken${required ? '' : ' = {}'},
|
|
99
|
+
options?: ${optionsType},
|
|
100
|
+
) {
|
|
101
|
+
return reactQuery.queryOptions<${resultName}, TError, TData>({
|
|
102
|
+
...options,
|
|
103
|
+
queryKey: options?.queryKey ?? (variables === reactQuery.skipToken ? [${JSON.stringify(this.endpoint)}, ${JSON.stringify(original)}, ${documentName}] : ${keyName}(variables)),
|
|
104
|
+
queryFn: variables === reactQuery.skipToken ? reactQuery.skipToken : ({ signal }) => ${fetchName}(variables, signal),
|
|
105
|
+
});
|
|
106
|
+
}`);
|
|
107
|
+
declarations.push(`export function ${hookName}<TData = ${resultName}, TError = unknown>(
|
|
108
|
+
variables: ${variablesName} | typeof reactQuery.skipToken${required ? '' : ' = {}'},
|
|
109
|
+
options?: ${optionsType},
|
|
110
|
+
) {
|
|
111
|
+
return reactQuery.useQuery(${optionsName}<TData, TError>(variables, options));
|
|
112
|
+
}`);
|
|
113
|
+
declarations.push(`export function ${suspenseName}<TData = ${resultName}, TError = unknown>(
|
|
114
|
+
${variables},
|
|
115
|
+
options?: Omit<reactQuery.UseSuspenseQueryOptions<${resultName}, TError, TData>, 'queryKey' | 'queryFn'> & { queryKey?: reactQuery.QueryKey },
|
|
116
|
+
) {
|
|
117
|
+
return reactQuery.useSuspenseQuery<${resultName}, TError, TData>({
|
|
118
|
+
...options,
|
|
119
|
+
queryKey: options?.queryKey ?? ${keyName}(variables),
|
|
120
|
+
queryFn: ({ signal }) => ${fetchName}(variables, signal),
|
|
121
|
+
});
|
|
122
|
+
}`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const mutationVariables = variablesName + (required ? '' : ' | void');
|
|
126
|
+
declarations.push(`export function ${hookName}<TError = unknown, TContext = unknown>(
|
|
127
|
+
options?: Omit<reactQuery.UseMutationOptions<${resultName}, TError, ${mutationVariables}, TContext>, 'mutationFn'>,
|
|
128
|
+
) {
|
|
129
|
+
return reactQuery.useMutation({
|
|
130
|
+
mutationKey: [${JSON.stringify(this.endpoint)}, ${JSON.stringify(original)}, ${documentName}],
|
|
131
|
+
...options,
|
|
132
|
+
mutationFn: (variables: ${mutationVariables}) => ${fetchName}(variables${required ? '' : ' ?? {}'}),
|
|
133
|
+
});
|
|
134
|
+
}`);
|
|
135
|
+
}
|
|
136
|
+
return declarations.join('\n\n');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/graphql/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AuthConfig } from '
|
|
1
|
+
import type { AuthConfig } from '../core/auth.js';
|
|
2
2
|
export interface GraphqlFetcherConfiguration {
|
|
3
3
|
/** GraphQL endpoint; defaults to `/api/graphql`. */
|
|
4
4
|
endpoint?: string;
|
|
@@ -25,5 +25,6 @@ export declare class GraphqlResponseError extends Error {
|
|
|
25
25
|
message: string;
|
|
26
26
|
}>, data: unknown);
|
|
27
27
|
}
|
|
28
|
-
export declare function createGraphqlFetcher(configuration?: GraphqlFetcherConfiguration): <TData, TVariables>(query: string, variables?: TVariables) => (
|
|
29
|
-
|
|
28
|
+
export declare function createGraphqlFetcher(configuration?: GraphqlFetcherConfiguration): <TData, TVariables>(query: string, variables?: TVariables, operationName?: string) => (context?: {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}) => Promise<TData>;
|
|
@@ -65,7 +65,7 @@ export class GraphqlResponseError extends Error {
|
|
|
65
65
|
}
|
|
66
66
|
export function createGraphqlFetcher(configuration = {}) {
|
|
67
67
|
const endpoint = configuration.endpoint ?? '/api/graphql';
|
|
68
|
-
return function graphqlFetcher(query, variables) {
|
|
68
|
+
return function graphqlFetcher(query, variables, operationName) {
|
|
69
69
|
return async (context) => {
|
|
70
70
|
try {
|
|
71
71
|
const headers = new Headers({ 'content-type': 'application/json' });
|
|
@@ -78,11 +78,11 @@ export function createGraphqlFetcher(configuration = {}) {
|
|
|
78
78
|
let response;
|
|
79
79
|
try {
|
|
80
80
|
response = await fetch(endpoint, {
|
|
81
|
-
body: JSON.stringify({ query, variables }),
|
|
81
|
+
body: JSON.stringify({ query, variables, operationName }),
|
|
82
82
|
headers,
|
|
83
83
|
method: 'POST',
|
|
84
|
-
signal: context
|
|
85
|
-
credentials: configuration.auth
|
|
84
|
+
...(context?.signal ? { signal: context.signal } : {}),
|
|
85
|
+
...(configuration.auth?.credentials ? { credentials: configuration.auth.credentials } : {}),
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
catch (error) {
|
|
@@ -104,6 +104,13 @@ export function createGraphqlFetcher(configuration = {}) {
|
|
|
104
104
|
}
|
|
105
105
|
if (!response.ok)
|
|
106
106
|
throw new GraphqlHttpError(response.status, response.statusText, endpoint, result);
|
|
107
|
+
if (!result || typeof result !== 'object' || Array.isArray(result)) {
|
|
108
|
+
throw new Error(`GraphQL server returned an invalid response envelope from ${endpoint}.`);
|
|
109
|
+
}
|
|
110
|
+
if (result.errors !== undefined &&
|
|
111
|
+
(!Array.isArray(result.errors) || result.errors.some((error) => !error || typeof error.message !== 'string'))) {
|
|
112
|
+
throw new Error(`GraphQL server returned an invalid errors list from ${endpoint}.`);
|
|
113
|
+
}
|
|
107
114
|
if (result.errors?.length)
|
|
108
115
|
throw new GraphqlResponseError(result.errors, result.data);
|
|
109
116
|
if (result.data === undefined) {
|
|
@@ -117,5 +124,4 @@ export function createGraphqlFetcher(configuration = {}) {
|
|
|
117
124
|
};
|
|
118
125
|
};
|
|
119
126
|
}
|
|
120
|
-
|
|
121
|
-
//# sourceMappingURL=graphql-fetcher.js.map
|
|
127
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/graphql/runtime.ts"],"names":[],"mappings":"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"}
|