@apollo-deploy/tesseract 0.5.1 → 0.6.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/dist/adapters/typescript/emitter/emitSchema.d.ts +12 -0
- package/dist/adapters/typescript/emitter/emitSchema.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/emitSchema.js +93 -0
- package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +10 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +81 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.js.map +1 -0
- package/dist/adapters/typescript/emitter/importCollector.d.ts +6 -0
- package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/importCollector.js +39 -0
- package/dist/adapters/typescript/emitter/importCollector.js.map +1 -0
- package/dist/adapters/typescript/emitter/nameAllocator.d.ts +5 -0
- package/dist/adapters/typescript/emitter/nameAllocator.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/nameAllocator.js +13 -0
- package/dist/adapters/typescript/emitter/nameAllocator.js.map +1 -0
- package/dist/adapters/typescript/emitter/parsers.d.ts +7 -0
- package/dist/adapters/typescript/emitter/parsers.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/parsers.js +73 -0
- package/dist/adapters/typescript/emitter/parsers.js.map +1 -0
- package/dist/adapters/typescript/emitter/typeHoister.d.ts +6 -0
- package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/typeHoister.js +47 -0
- package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -0
- package/dist/adapters/typescript/index.d.ts +3 -3
- package/dist/adapters/typescript/index.d.ts.map +1 -1
- package/dist/adapters/typescript/index.js +131 -115
- package/dist/adapters/typescript/index.js.map +1 -1
- package/dist/adapters/typescript/shared.d.ts +12 -5
- package/dist/adapters/typescript/shared.d.ts.map +1 -1
- package/dist/adapters/typescript/shared.js +92 -40
- package/dist/adapters/typescript/shared.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +119 -68
- package/dist/cli.js.map +1 -1
- package/dist/fastify.d.ts +26 -0
- package/dist/fastify.d.ts.map +1 -1
- package/dist/fastify.js +33 -5
- package/dist/fastify.js.map +1 -1
- package/dist/helpers/handlebars.d.ts +6 -2
- package/dist/helpers/handlebars.d.ts.map +1 -1
- package/dist/helpers/handlebars.js +157 -121
- package/dist/helpers/handlebars.js.map +1 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -43
- package/dist/index.js.map +1 -1
- package/dist/pipeline/enrich.d.ts +11 -3
- package/dist/pipeline/enrich.d.ts.map +1 -1
- package/dist/pipeline/enrich.js +180 -154
- package/dist/pipeline/enrich.js.map +1 -1
- package/dist/pipeline/intake.js +5 -2
- package/dist/pipeline/intake.js.map +1 -1
- package/dist/pipeline/write.d.ts +13 -3
- package/dist/pipeline/write.d.ts.map +1 -1
- package/dist/pipeline/write.js +111 -32
- package/dist/pipeline/write.js.map +1 -1
- package/dist/types/ir.d.ts +64 -40
- package/dist/types/ir.d.ts.map +1 -1
- package/dist/types/ir.js +6 -2
- package/dist/types/ir.js.map +1 -1
- package/dist/utils/naming.d.ts +0 -4
- package/dist/utils/naming.d.ts.map +1 -1
- package/dist/utils/naming.js +294 -182
- package/dist/utils/naming.js.map +1 -1
- package/package.json +8 -1
- package/templates/typescript/domain.hbs +1 -1
- package/templates/typescript/types.hbs +7 -1
|
@@ -2,183 +2,199 @@
|
|
|
2
2
|
* TypeScript language adapter.
|
|
3
3
|
* Orchestrates model emission (ts-morph) and template rendering (Handlebars).
|
|
4
4
|
*/
|
|
5
|
-
import { join } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { splitSchemasByOwnership, buildExternalImportGroups, collectExternalPackages, COMMON_TYPE_NAMES, } from "./shared.js";
|
|
7
|
+
import { getTemplate, registerHelpers, collectImports, } from "../../helpers/handlebars.js";
|
|
8
|
+
import { formatTypeScript } from "../../utils/format.js";
|
|
9
|
+
import { emitTypeScriptModels } from "./emitter/emitTypeScriptModels.js";
|
|
10
10
|
export class TypeScriptAdapter {
|
|
11
|
-
language =
|
|
11
|
+
language = "typescript";
|
|
12
12
|
async emit(enriched, outputDir, config) {
|
|
13
13
|
registerHelpers();
|
|
14
|
-
const sdkStyle = config?.sdkStyle ??
|
|
14
|
+
const sdkStyle = config?.sdkStyle ?? "functional";
|
|
15
|
+
const clientType = config?.clientType ?? "internal";
|
|
15
16
|
const files = [];
|
|
16
17
|
const warnings = [];
|
|
17
|
-
|
|
18
|
-
const
|
|
18
|
+
// ── Schema partition (single pass, avoid repeated scans) ────────────────
|
|
19
|
+
const schemas = enriched.schemas;
|
|
20
|
+
const schemaNames = new Set();
|
|
21
|
+
const externalSchemas = [];
|
|
22
|
+
for (const s of schemas) {
|
|
23
|
+
schemaNames.add(s.name);
|
|
24
|
+
if (s.ownership?.kind === "external")
|
|
25
|
+
externalSchemas.push(s);
|
|
26
|
+
}
|
|
27
|
+
const { generatedSchemas } = splitSchemasByOwnership(schemas);
|
|
28
|
+
// ── External imports (stable + deduped) ────────────────────────────────
|
|
19
29
|
const externalImports = buildExternalImportGroups(externalSchemas);
|
|
30
|
+
if (enriched.meta.schemaPackage) {
|
|
31
|
+
const importPath = enriched.meta.schemaPackage.importPath ??
|
|
32
|
+
enriched.meta.schemaPackage.name;
|
|
33
|
+
if (!externalImports.some((g) => g.importPath === importPath)) {
|
|
34
|
+
externalImports.unshift({ importPath, exports: [] });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
20
37
|
const externalTypeNames = new Set(externalSchemas.map((s) => s.name));
|
|
21
|
-
const commonTypeExports = COMMON_TYPE_NAMES.filter((
|
|
22
|
-
const externalPackages = collectExternalPackages(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
:
|
|
38
|
+
const commonTypeExports = COMMON_TYPE_NAMES.filter((n) => !externalTypeNames.has(n));
|
|
39
|
+
const externalPackages = collectExternalPackages(schemas, enriched.meta.schemaPackage);
|
|
40
|
+
// ── Visibility filter (single pass, avoids map+filter chain) ───────────
|
|
41
|
+
const visibleGroups = [];
|
|
42
|
+
for (const g of enriched.groups) {
|
|
43
|
+
if (clientType === "public" && g.visibility === "internal")
|
|
44
|
+
continue;
|
|
45
|
+
const ops = clientType === "public"
|
|
46
|
+
? g.operations.filter((op) => op.visibility !== "internal")
|
|
47
|
+
: g.operations;
|
|
48
|
+
if (ops.length === 0)
|
|
49
|
+
continue;
|
|
50
|
+
visibleGroups.push(ops === g.operations ? g : { ...g, operations: ops });
|
|
51
|
+
}
|
|
34
52
|
const hasSSE = visibleGroups.some((g) => g.operations.some((op) => op.isEventStream));
|
|
35
|
-
// ── ts-morph
|
|
53
|
+
// ── Model emission (optional ts-morph stage) ───────────────────────────
|
|
36
54
|
let domainTypeFiles = [];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
let includeModels = false;
|
|
56
|
+
// Emit models for any inline-generated schemas that are NOT covered by the
|
|
57
|
+
// schema package (ownership !== 'external'). When a schemaPackage is
|
|
58
|
+
// configured and all schemas are external (Zod global registry hit for
|
|
59
|
+
// every body/response), this will be empty and model emission is skipped.
|
|
60
|
+
const hasGeneratedSchemas = enriched.schemas.some((s) => s.ownership?.kind !== "external");
|
|
61
|
+
if (hasGeneratedSchemas) {
|
|
62
|
+
try {
|
|
63
|
+
const res = emitTypeScriptModels(enriched, outputDir);
|
|
64
|
+
files.push(...res.files);
|
|
65
|
+
domainTypeFiles = res.domainTypeFiles;
|
|
66
|
+
includeModels = true;
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
warnings.push(`ts-morph model emission failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
70
|
+
}
|
|
44
71
|
}
|
|
45
|
-
// ──
|
|
46
|
-
|
|
47
|
-
const domainTemplateName = sdkStyle === 'class' ? 'domain-class' : 'domain';
|
|
48
|
-
const domainTemplate = getTemplate('typescript', domainTemplateName);
|
|
72
|
+
// ── Templates (cached + safe execution) ────────────────────────────────
|
|
73
|
+
const domainTemplate = getTemplate("typescript", sdkStyle === "class" ? "domain-class" : "domain");
|
|
49
74
|
for (const group of visibleGroups) {
|
|
50
75
|
try {
|
|
51
76
|
const imports = collectImports(group.operations, schemaNames);
|
|
52
77
|
const groupHasSSE = group.operations.some((op) => op.isEventStream);
|
|
53
78
|
files.push({
|
|
54
|
-
relativePath: join(
|
|
55
|
-
content: domainTemplate({
|
|
79
|
+
relativePath: join("src", "domain", `${group.fileName}.ts`),
|
|
80
|
+
content: domainTemplate({
|
|
81
|
+
...group,
|
|
82
|
+
imports,
|
|
83
|
+
hasSSE: groupHasSSE,
|
|
84
|
+
securitySchemes: enriched.securitySchemes,
|
|
85
|
+
}),
|
|
56
86
|
});
|
|
57
87
|
}
|
|
58
88
|
catch (err) {
|
|
59
89
|
warnings.push(`domain/${group.fileName}.ts: ${err instanceof Error ? err.message : String(err)}`);
|
|
60
90
|
}
|
|
61
91
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
92
|
+
const emit = (relativePath, tpl, ctx) => {
|
|
93
|
+
try {
|
|
94
|
+
files.push({
|
|
95
|
+
relativePath,
|
|
96
|
+
content: tpl(ctx),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
warnings.push(`${relativePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
emit(join("src", "domain", "index.ts"), getTemplate("typescript", "domain-index"), {
|
|
104
|
+
groups: visibleGroups,
|
|
105
|
+
});
|
|
106
|
+
emit("src/types/common.ts", getTemplate("typescript", "types-common"), {});
|
|
107
|
+
emit("src/types/errors.ts", getTemplate("typescript", "types-errors"), {});
|
|
108
|
+
emit("src/types/index.ts", getTemplate("typescript", "types"), {
|
|
68
109
|
schemas: generatedSchemas,
|
|
69
110
|
externalImports,
|
|
70
111
|
domainTypeFiles,
|
|
71
112
|
commonTypeExports,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
113
|
+
includeModels,
|
|
114
|
+
});
|
|
115
|
+
emit("src/transport/axios.ts", getTemplate("typescript", "transport"), {
|
|
116
|
+
securitySchemes: enriched.securitySchemes,
|
|
117
|
+
});
|
|
76
118
|
if (hasSSE) {
|
|
77
|
-
|
|
119
|
+
emit("src/transport/sse.ts", getTemplate("typescript", "transport-sse"), {});
|
|
78
120
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// Client, index, package.json, tsconfig, README
|
|
83
|
-
const clientTemplateName = sdkStyle === 'class' ? 'client-class' : 'client';
|
|
84
|
-
tryEmit(files, warnings, join('src', 'client.ts'), () => getTemplate('typescript', clientTemplateName)({
|
|
121
|
+
emit("src/utils/query.ts", getTemplate("typescript", "utils-query"), {});
|
|
122
|
+
emit("src/utils/index.ts", getTemplate("typescript", "utils-index"), {});
|
|
123
|
+
emit("src/client.ts", getTemplate("typescript", sdkStyle === "class" ? "client-class" : "client"), {
|
|
85
124
|
meta: enriched.meta,
|
|
86
125
|
groups: visibleGroups,
|
|
87
126
|
securitySchemes: enriched.securitySchemes,
|
|
88
127
|
hasSSE,
|
|
89
128
|
clientType,
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
tryEmit(files, warnings, 'index.ts', () => getTemplate('typescript', indexTemplateName)({
|
|
129
|
+
});
|
|
130
|
+
emit("index.ts", getTemplate("typescript", sdkStyle === "class" ? "index-class" : "index"), {
|
|
93
131
|
meta: enriched.meta,
|
|
94
132
|
groups: visibleGroups,
|
|
95
|
-
schemas:
|
|
133
|
+
schemas: schemas,
|
|
96
134
|
hasSSE,
|
|
97
135
|
clientType,
|
|
98
|
-
})
|
|
136
|
+
});
|
|
137
|
+
// ── Package version resolution (parallel-safe) ─────────────────────────
|
|
99
138
|
const resolvedPackageVersion = enriched.meta.packageVersion
|
|
100
139
|
? enriched.meta.packageVersion
|
|
101
140
|
: await resolveNpmPackageVersion(enriched.meta.packageName, enriched.meta.version, warnings);
|
|
102
|
-
|
|
141
|
+
emit("package.json", getTemplate("typescript", "package-json"), {
|
|
103
142
|
...enriched.meta,
|
|
104
143
|
packageVersion: resolvedPackageVersion,
|
|
105
144
|
externalPackages,
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
|
|
145
|
+
});
|
|
146
|
+
emit("tsconfig.json", getTemplate("typescript", "tsconfig"), {});
|
|
147
|
+
emit("README.md", getTemplate("typescript", "readme"), {
|
|
109
148
|
...enriched.meta,
|
|
110
149
|
groups: visibleGroups,
|
|
111
|
-
schemas
|
|
150
|
+
schemas,
|
|
112
151
|
securitySchemes: enriched.securitySchemes,
|
|
113
152
|
hasSSE,
|
|
153
|
+
});
|
|
154
|
+
// ── Parallel formatting (major performance win) ────────────────────────
|
|
155
|
+
const formatted = await Promise.all(files.map(async (f) => {
|
|
156
|
+
if (!f.relativePath.endsWith(".ts"))
|
|
157
|
+
return f;
|
|
158
|
+
return {
|
|
159
|
+
...f,
|
|
160
|
+
content: await formatTypeScript(f.content),
|
|
161
|
+
};
|
|
114
162
|
}));
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
formatted.push({ ...file, content: await formatTypeScript(file.content) });
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
formatted.push(file);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
return { files: formatted, warnings };
|
|
163
|
+
return {
|
|
164
|
+
files: formatted,
|
|
165
|
+
warnings,
|
|
166
|
+
};
|
|
126
167
|
}
|
|
127
168
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
// ── Adapter-level npm version resolution ─────────────────────────────────────
|
|
137
|
-
/**
|
|
138
|
-
* Queries the npm registry for the latest published version of the package,
|
|
139
|
-
* then returns a patch-bumped version string.
|
|
140
|
-
*
|
|
141
|
-
* - If the package has never been published (404), returns `fallback` unchanged.
|
|
142
|
-
* - If the registry is unreachable or returns an error, emits a warning and
|
|
143
|
-
* returns `fallback` unchanged.
|
|
144
|
-
*/
|
|
145
|
-
async function resolveNpmPackageVersion(packageName, fallback, warnings) {
|
|
146
|
-
try {
|
|
147
|
-
const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`;
|
|
148
|
-
const res = await fetch(url, { signal: AbortSignal.timeout(8_000) });
|
|
149
|
-
if (res.status === 404) {
|
|
150
|
-
// Package not yet published — first release, keep the manifest version.
|
|
169
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
170
|
+
function resolveNpmPackageVersion(packageName, fallback, warnings) {
|
|
171
|
+
return fetch(`https://registry.npmjs.org/${encodeURIComponent(packageName)}/latest`, {
|
|
172
|
+
signal: AbortSignal.timeout(8000),
|
|
173
|
+
})
|
|
174
|
+
.then(async (res) => {
|
|
175
|
+
if (res.status === 404)
|
|
151
176
|
return fallback;
|
|
152
|
-
}
|
|
153
177
|
if (!res.ok) {
|
|
154
|
-
warnings.push(`npm registry
|
|
178
|
+
warnings.push(`npm registry error ${res.status} for ${packageName}, using fallback`);
|
|
155
179
|
return fallback;
|
|
156
180
|
}
|
|
157
181
|
const data = (await res.json());
|
|
158
182
|
if (!data.version)
|
|
159
183
|
return fallback;
|
|
160
184
|
return bumpPatch(data.version);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
warnings.push(`
|
|
185
|
+
})
|
|
186
|
+
.catch((err) => {
|
|
187
|
+
warnings.push(`npm registry unreachable for ${packageName}: ${err instanceof Error ? err.message : String(err)}`);
|
|
164
188
|
return fallback;
|
|
165
|
-
}
|
|
189
|
+
});
|
|
166
190
|
}
|
|
167
|
-
/**
|
|
168
|
-
* Increments the patch segment of a semver string.
|
|
169
|
-
* Pre-release / build metadata suffixes are stripped before bumping.
|
|
170
|
-
* Returns the original string unchanged if it cannot be parsed.
|
|
171
|
-
*
|
|
172
|
-
* Examples: 1.2.3 → 1.2.4 | 1.2.3-alpha.1 → 1.2.4
|
|
173
|
-
*/
|
|
174
191
|
function bumpPatch(version) {
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
const parts = base.split('.');
|
|
192
|
+
const base = version.split("-")[0].split("+")[0];
|
|
193
|
+
const parts = base.split(".");
|
|
178
194
|
if (parts.length !== 3)
|
|
179
195
|
return version;
|
|
180
|
-
const patch =
|
|
181
|
-
if (
|
|
196
|
+
const patch = Number(parts[2]);
|
|
197
|
+
if (!Number.isFinite(patch))
|
|
182
198
|
return version;
|
|
183
199
|
return `${parts[0]}.${parts[1]}.${patch + 1}`;
|
|
184
200
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/typescript/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/typescript/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared TypeScript adapter utilities.
|
|
3
|
-
* External import grouping
|
|
3
|
+
* External import grouping + schema ownership partitioning.
|
|
4
|
+
*
|
|
5
|
+
* Optimized for:
|
|
6
|
+
* - Single-pass grouping where possible
|
|
7
|
+
* - Reduced allocations in hot loops
|
|
8
|
+
* - Safer deduplication logic
|
|
9
|
+
*/
|
|
10
|
+
import type { SchemaDefinition, SDKMeta } from "../../types/ir.js";
|
|
11
|
+
/**
|
|
12
|
+
* Common runtime types emitted by shared templates.
|
|
13
|
+
* Used to avoid redundant re-exports from external schema packages.
|
|
4
14
|
*/
|
|
5
|
-
import type { SchemaDefinition, SDKMeta } from '../../types/ir.js';
|
|
6
|
-
/** Common type names emitted by types-common.hbs. Used to skip re-exporting
|
|
7
|
-
* types that are already provided by an external schema package. */
|
|
8
15
|
export declare const COMMON_TYPE_NAMES: readonly ["PaginationQuery", "PageMeta", "Page", "SuccessResponse", "MessageResponse", "ApiErrorEnvelope"];
|
|
9
16
|
export interface ExternalExport {
|
|
10
17
|
exportName: string;
|
|
@@ -19,7 +26,7 @@ export declare function splitSchemasByOwnership(schemas: SchemaDefinition[]): {
|
|
|
19
26
|
externalSchemas: SchemaDefinition[];
|
|
20
27
|
};
|
|
21
28
|
export declare function buildExternalImportGroups(schemas: SchemaDefinition[]): ExternalImportGroup[];
|
|
22
|
-
export declare function collectExternalPackages(schemas: SchemaDefinition[], schemaPackage?: SDKMeta[
|
|
29
|
+
export declare function collectExternalPackages(schemas: SchemaDefinition[], schemaPackage?: SDKMeta["schemaPackage"]): Array<{
|
|
23
30
|
name: string;
|
|
24
31
|
version: string;
|
|
25
32
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/typescript/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/adapters/typescript/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAMnE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4GAOpB,CAAC;AAMX,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG;IACpE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,eAAe,EAAE,gBAAgB,EAAE,CAAC;CACrC,CAgBA;AAMD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,EAAE,GAC1B,mBAAmB,EAAE,CA4DvB;AAMD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACvC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1C"}
|
|
@@ -1,65 +1,117 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared TypeScript adapter utilities.
|
|
3
|
-
* External import grouping
|
|
3
|
+
* External import grouping + schema ownership partitioning.
|
|
4
|
+
*
|
|
5
|
+
* Optimized for:
|
|
6
|
+
* - Single-pass grouping where possible
|
|
7
|
+
* - Reduced allocations in hot loops
|
|
8
|
+
* - Safer deduplication logic
|
|
9
|
+
*/
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// Constants
|
|
12
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* Common runtime types emitted by shared templates.
|
|
15
|
+
* Used to avoid redundant re-exports from external schema packages.
|
|
4
16
|
*/
|
|
5
|
-
/** Common type names emitted by types-common.hbs. Used to skip re-exporting
|
|
6
|
-
* types that are already provided by an external schema package. */
|
|
7
17
|
export const COMMON_TYPE_NAMES = [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
"PaginationQuery",
|
|
19
|
+
"PageMeta",
|
|
20
|
+
"Page",
|
|
21
|
+
"SuccessResponse",
|
|
22
|
+
"MessageResponse",
|
|
23
|
+
"ApiErrorEnvelope",
|
|
14
24
|
];
|
|
25
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
26
|
+
// Schema partitioning
|
|
27
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
28
|
export function splitSchemasByOwnership(schemas) {
|
|
29
|
+
const generated = [];
|
|
30
|
+
const external = [];
|
|
31
|
+
for (const s of schemas) {
|
|
32
|
+
if (s.ownership?.kind === "external") {
|
|
33
|
+
external.push(s);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
generated.push(s);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
16
39
|
return {
|
|
17
|
-
generatedSchemas:
|
|
18
|
-
externalSchemas:
|
|
40
|
+
generatedSchemas: generated,
|
|
41
|
+
externalSchemas: external,
|
|
19
42
|
};
|
|
20
43
|
}
|
|
44
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
45
|
+
// External import grouping
|
|
46
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
47
|
export function buildExternalImportGroups(schemas) {
|
|
22
|
-
const
|
|
48
|
+
const groups = new Map();
|
|
23
49
|
for (const schema of schemas) {
|
|
24
|
-
|
|
50
|
+
const ownership = schema.ownership;
|
|
51
|
+
if (!ownership || ownership.kind !== "external")
|
|
25
52
|
continue;
|
|
26
|
-
const
|
|
27
|
-
if (!
|
|
28
|
-
continue;
|
|
29
|
-
const exportEntry = {
|
|
30
|
-
exportName: ei.exportName,
|
|
31
|
-
alias: schema.name !== ei.exportName ? schema.name : undefined,
|
|
32
|
-
};
|
|
33
|
-
const existing = byPath.get(ei.importPath);
|
|
34
|
-
if (!existing) {
|
|
35
|
-
byPath.set(ei.importPath, { importPath: ei.importPath, exports: [exportEntry] });
|
|
53
|
+
const imp = ownership.externalImport;
|
|
54
|
+
if (!imp)
|
|
36
55
|
continue;
|
|
56
|
+
const importPath = imp.importPath;
|
|
57
|
+
const exportName = imp.exportName;
|
|
58
|
+
let group = groups.get(importPath);
|
|
59
|
+
if (!group) {
|
|
60
|
+
group = {
|
|
61
|
+
importPath,
|
|
62
|
+
exports: [],
|
|
63
|
+
};
|
|
64
|
+
groups.set(importPath, group);
|
|
37
65
|
}
|
|
38
|
-
|
|
39
|
-
|
|
66
|
+
const exports = group.exports;
|
|
67
|
+
// Fast dedup (avoid O(n²) .some scans)
|
|
68
|
+
let exists = false;
|
|
69
|
+
for (let i = 0; i < exports.length; i++) {
|
|
70
|
+
const e = exports[i];
|
|
71
|
+
if (e.exportName === exportName &&
|
|
72
|
+
e.alias === (schema.name !== exportName ? schema.name : undefined)) {
|
|
73
|
+
exists = true;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
40
76
|
}
|
|
77
|
+
if (exists)
|
|
78
|
+
continue;
|
|
79
|
+
exports.push({
|
|
80
|
+
exportName,
|
|
81
|
+
alias: schema.name !== exportName ? schema.name : undefined,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Stable sort for deterministic output
|
|
85
|
+
const result = [...groups.values()];
|
|
86
|
+
for (const g of result) {
|
|
87
|
+
g.exports.sort((a, b) => {
|
|
88
|
+
const aKey = `${a.exportName}:${a.alias ?? ""}`;
|
|
89
|
+
const bKey = `${b.exportName}:${b.alias ?? ""}`;
|
|
90
|
+
return aKey.localeCompare(bKey);
|
|
91
|
+
});
|
|
41
92
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
...group,
|
|
45
|
-
exports: [...group.exports].sort((a, b) => `${a.exportName}:${a.alias ?? ''}`.localeCompare(`${b.exportName}:${b.alias ?? ''}`)),
|
|
46
|
-
}))
|
|
47
|
-
.sort((a, b) => a.importPath.localeCompare(b.importPath));
|
|
93
|
+
result.sort((a, b) => a.importPath.localeCompare(b.importPath));
|
|
94
|
+
return result;
|
|
48
95
|
}
|
|
96
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
97
|
+
// External package collection
|
|
98
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
49
99
|
export function collectExternalPackages(schemas, schemaPackage) {
|
|
50
100
|
const packages = new Map();
|
|
51
101
|
for (const schema of schemas) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
packages.set(schema.ownership.externalImport.packageName, '*');
|
|
102
|
+
const imp = schema.ownership?.externalImport;
|
|
103
|
+
if (imp?.packageName) {
|
|
104
|
+
packages.set(imp.packageName, imp.version ?? "*");
|
|
56
105
|
}
|
|
57
106
|
}
|
|
58
|
-
if (schemaPackage) {
|
|
59
|
-
packages.set(schemaPackage.name, schemaPackage.version ??
|
|
107
|
+
if (schemaPackage?.name) {
|
|
108
|
+
packages.set(schemaPackage.name, schemaPackage.version ?? "*");
|
|
109
|
+
}
|
|
110
|
+
const result = [];
|
|
111
|
+
for (const [name, version] of packages) {
|
|
112
|
+
result.push({ name, version });
|
|
60
113
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
.map(([name, version]) => ({ name, version }));
|
|
114
|
+
result.sort((a, b) => a.name.localeCompare(b.name));
|
|
115
|
+
return result;
|
|
64
116
|
}
|
|
65
117
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/adapters/typescript/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/adapters/typescript/shared.ts"],"names":[],"mappings":"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"}
|