@apollo-deploy/tesseract 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 +235 -0
- package/dist/adapters/types.d.ts +15 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/typescript/index.d.ts +11 -0
- package/dist/adapters/typescript/index.d.ts.map +1 -0
- package/dist/adapters/typescript/index.js +112 -0
- package/dist/adapters/typescript/index.js.map +1 -0
- package/dist/adapters/typescript/model-emitter.d.ts +13 -0
- package/dist/adapters/typescript/model-emitter.d.ts.map +1 -0
- package/dist/adapters/typescript/model-emitter.js +415 -0
- package/dist/adapters/typescript/model-emitter.js.map +1 -0
- package/dist/adapters/typescript/shared.d.ts +26 -0
- package/dist/adapters/typescript/shared.d.ts.map +1 -0
- package/dist/adapters/typescript/shared.js +65 -0
- package/dist/adapters/typescript/shared.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +53 -0
- package/dist/cli.js.map +1 -0
- package/dist/helpers/handlebars.d.ts +15 -0
- package/dist/helpers/handlebars.d.ts.map +1 -0
- package/dist/helpers/handlebars.js +172 -0
- package/dist/helpers/handlebars.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/enrich.d.ts +7 -0
- package/dist/pipeline/enrich.d.ts.map +1 -0
- package/dist/pipeline/enrich.js +277 -0
- package/dist/pipeline/enrich.js.map +1 -0
- package/dist/pipeline/intake.d.ts +11 -0
- package/dist/pipeline/intake.d.ts.map +1 -0
- package/dist/pipeline/intake.js +508 -0
- package/dist/pipeline/intake.js.map +1 -0
- package/dist/pipeline/write.d.ts +15 -0
- package/dist/pipeline/write.d.ts.map +1 -0
- package/dist/pipeline/write.js +33 -0
- package/dist/pipeline/write.js.map +1 -0
- package/dist/types/config.d.ts +47 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +24 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/ir.d.ts +172 -0
- package/dist/types/ir.d.ts.map +1 -0
- package/dist/types/ir.js +7 -0
- package/dist/types/ir.js.map +1 -0
- package/dist/types/manifest.d.ts +112 -0
- package/dist/types/manifest.d.ts.map +1 -0
- package/dist/types/manifest.js +32 -0
- package/dist/types/manifest.js.map +1 -0
- package/dist/utils/format.d.ts +5 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +21 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/naming.d.ts +26 -0
- package/dist/utils/naming.d.ts.map +1 -0
- package/dist/utils/naming.js +270 -0
- package/dist/utils/naming.js.map +1 -0
- package/package.json +58 -0
- package/templates/typescript/client.hbs +145 -0
- package/templates/typescript/domain-index.hbs +10 -0
- package/templates/typescript/domain.hbs +127 -0
- package/templates/typescript/index.hbs +64 -0
- package/templates/typescript/package-json.hbs +29 -0
- package/templates/typescript/readme.hbs +78 -0
- package/templates/typescript/transport-sse.hbs +377 -0
- package/templates/typescript/transport.hbs +662 -0
- package/templates/typescript/tsconfig.hbs +18 -0
- package/templates/typescript/types-common.hbs +98 -0
- package/templates/typescript/types-errors.hbs +191 -0
- package/templates/typescript/types.hbs +33 -0
- package/templates/typescript/utils-index.hbs +7 -0
- package/templates/typescript/utils-query.hbs +29 -0
- package/templates/typescript/webhook-handler.hbs +447 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handlebars helpers + template engine.
|
|
3
|
+
* Registers all custom helpers and provides template loading.
|
|
4
|
+
*/
|
|
5
|
+
import Handlebars from 'handlebars';
|
|
6
|
+
import { readFileSync } from 'node:fs';
|
|
7
|
+
import { join, dirname } from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { camelCase, pascalCase, kebabCase, snakeCase } from 'change-case';
|
|
10
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const TEMPLATES_DIR = join(__dirname, '..', '..', 'templates');
|
|
12
|
+
const templateCache = new Map();
|
|
13
|
+
// ── Template engine ──────────────────────────────────────────────────────────
|
|
14
|
+
export function getTemplate(language, name) {
|
|
15
|
+
const key = `${language}:${name}`;
|
|
16
|
+
const cached = templateCache.get(key);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
const filePath = join(TEMPLATES_DIR, language, `${name}.hbs`);
|
|
20
|
+
let source;
|
|
21
|
+
try {
|
|
22
|
+
source = readFileSync(filePath, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
throw new Error(`Template not found: "${name}" for language "${language}" (expected at ${filePath})`, { cause: err });
|
|
26
|
+
}
|
|
27
|
+
const compiled = Handlebars.compile(source, { noEscape: true });
|
|
28
|
+
templateCache.set(key, compiled);
|
|
29
|
+
return compiled;
|
|
30
|
+
}
|
|
31
|
+
// ── Helper registration ──────────────────────────────────────────────────────
|
|
32
|
+
export function registerHelpers() {
|
|
33
|
+
Handlebars.registerHelper('camelCase', (str) => camelCase(str));
|
|
34
|
+
Handlebars.registerHelper('pascalCase', (str) => pascalCase(str));
|
|
35
|
+
Handlebars.registerHelper('kebabCase', (str) => kebabCase(str));
|
|
36
|
+
Handlebars.registerHelper('snakeCase', (str) => snakeCase(str));
|
|
37
|
+
Handlebars.registerHelper('upperCase', (str) => str.toUpperCase());
|
|
38
|
+
Handlebars.registerHelper('eq', (a, b) => a === b);
|
|
39
|
+
Handlebars.registerHelper('neq', (a, b) => a !== b);
|
|
40
|
+
Handlebars.registerHelper('and', (a, b) => a && b);
|
|
41
|
+
Handlebars.registerHelper('or', (a, b) => a || b);
|
|
42
|
+
Handlebars.registerHelper('not', (a) => !a);
|
|
43
|
+
Handlebars.registerHelper('join', (arr, sep) => {
|
|
44
|
+
if (!Array.isArray(arr))
|
|
45
|
+
return '';
|
|
46
|
+
return arr.join(typeof sep === 'string' ? sep : ', ');
|
|
47
|
+
});
|
|
48
|
+
Handlebars.registerHelper('methodSignature', (op) => new Handlebars.SafeString(buildMethodSignature(op)));
|
|
49
|
+
Handlebars.registerHelper('methodParams', (op) => new Handlebars.SafeString(buildMethodParamList(op)));
|
|
50
|
+
Handlebars.registerHelper('requestBuilderParams', (op) => new Handlebars.SafeString(buildRequestBuilderParamList(op)));
|
|
51
|
+
Handlebars.registerHelper('methodArgs', (op) => new Handlebars.SafeString(buildMethodArgList(op)));
|
|
52
|
+
Handlebars.registerHelper('queryParamsType', (op) => new Handlebars.SafeString(buildQueryParamsType(op.queryParams)));
|
|
53
|
+
Handlebars.registerHelper('hasQueryParams', (op) => op.queryParams.length > 0);
|
|
54
|
+
Handlebars.registerHelper('hasRequestBody', (op) => !!op.requestBody);
|
|
55
|
+
Handlebars.registerHelper('hasPathParams', (op) => op.pathParams.length > 0);
|
|
56
|
+
Handlebars.registerHelper('isEventStream', (op) => !!op.isEventStream);
|
|
57
|
+
Handlebars.registerHelper('sseMethodSignature', (op) => new Handlebars.SafeString(buildSSEMethodSignature(op)));
|
|
58
|
+
Handlebars.registerHelper('sseMethodParams', (op) => new Handlebars.SafeString(buildSSEMethodParamList(op)));
|
|
59
|
+
Handlebars.registerHelper('optional', (required) => new Handlebars.SafeString(required ? '' : '?'));
|
|
60
|
+
Handlebars.registerHelper('tsType', (type, nullable) => {
|
|
61
|
+
if (nullable) {
|
|
62
|
+
if (type.includes(' | ') || type.includes(' & '))
|
|
63
|
+
return new Handlebars.SafeString(`(${type}) | null`);
|
|
64
|
+
return new Handlebars.SafeString(`${type} | null`);
|
|
65
|
+
}
|
|
66
|
+
return new Handlebars.SafeString(type);
|
|
67
|
+
});
|
|
68
|
+
Handlebars.registerHelper('isString', (val) => typeof val === 'string');
|
|
69
|
+
Handlebars.registerHelper('json', (context) => new Handlebars.SafeString(JSON.stringify(context, null, 2)));
|
|
70
|
+
}
|
|
71
|
+
// ── Signature builders ───────────────────────────────────────────────────────
|
|
72
|
+
function buildParamStrings(op) {
|
|
73
|
+
const params = [];
|
|
74
|
+
for (const p of op.pathParams)
|
|
75
|
+
params.push(`${p.name}: ${p.type}`);
|
|
76
|
+
if (op.requestBody) {
|
|
77
|
+
const opt = op.requestBody.required ? '' : '?';
|
|
78
|
+
params.push(`input${opt}: ${op.requestBody.type}`);
|
|
79
|
+
}
|
|
80
|
+
if (op.queryType)
|
|
81
|
+
params.push(`query?: ${op.queryType}`);
|
|
82
|
+
if (op.headerParams.length > 0 && op.headerType)
|
|
83
|
+
params.push(`headers?: ${op.headerType}`);
|
|
84
|
+
if (op.cookieParams && op.cookieParams.length > 0 && op.cookieType)
|
|
85
|
+
params.push(`cookies?: ${op.cookieType}`);
|
|
86
|
+
return params;
|
|
87
|
+
}
|
|
88
|
+
export function buildMethodSignature(op) {
|
|
89
|
+
const params = [...buildParamStrings(op), 'options?: RequestOptions'];
|
|
90
|
+
return `(${params.join(', ')}): Promise<${op.responseType}>`;
|
|
91
|
+
}
|
|
92
|
+
export function buildMethodParamList(op) {
|
|
93
|
+
const params = [...buildParamStrings(op), 'options?: RequestOptions'];
|
|
94
|
+
return `(${params.join(', ')})`;
|
|
95
|
+
}
|
|
96
|
+
export function buildRequestBuilderParamList(op) {
|
|
97
|
+
const params = buildParamStrings(op);
|
|
98
|
+
return `(${params.join(', ')})`;
|
|
99
|
+
}
|
|
100
|
+
export function buildMethodArgList(op) {
|
|
101
|
+
const args = [];
|
|
102
|
+
for (const p of op.pathParams)
|
|
103
|
+
args.push(p.name);
|
|
104
|
+
if (op.requestBody)
|
|
105
|
+
args.push('input');
|
|
106
|
+
if (op.queryType)
|
|
107
|
+
args.push('query');
|
|
108
|
+
if (op.headerParams.length > 0 && op.headerType)
|
|
109
|
+
args.push('headers');
|
|
110
|
+
if (op.cookieParams && op.cookieParams.length > 0 && op.cookieType)
|
|
111
|
+
args.push('cookies');
|
|
112
|
+
return args.join(', ');
|
|
113
|
+
}
|
|
114
|
+
function buildQueryParamsType(params) {
|
|
115
|
+
const props = params.map((p) => {
|
|
116
|
+
const opt = p.required ? '' : '?';
|
|
117
|
+
return `${p.name}${opt}: ${p.type}`;
|
|
118
|
+
});
|
|
119
|
+
return `{ ${props.join('; ')} }`;
|
|
120
|
+
}
|
|
121
|
+
function buildSSEMethodSignature(op) {
|
|
122
|
+
const eventType = op.eventSchema ?? 'Record<string, unknown>';
|
|
123
|
+
const params = [...buildParamStrings(op), 'options?: SSEOptions'];
|
|
124
|
+
return `(${params.join(', ')}): AsyncIterable<SSEEvent<${eventType}>>`;
|
|
125
|
+
}
|
|
126
|
+
function buildSSEMethodParamList(op) {
|
|
127
|
+
const params = [...buildParamStrings(op), 'options?: SSEOptions'];
|
|
128
|
+
return `(${params.join(', ')})`;
|
|
129
|
+
}
|
|
130
|
+
// ── Import collector ─────────────────────────────────────────────────────────
|
|
131
|
+
export function collectImports(operations, schemaNames) {
|
|
132
|
+
const imports = new Set();
|
|
133
|
+
for (const op of operations) {
|
|
134
|
+
if (op.responseType !== 'void' && !isPrimitive(op.responseType))
|
|
135
|
+
addTypeImport(op.responseType, schemaNames, imports);
|
|
136
|
+
if (op.requestBody && !isPrimitive(op.requestBody.type))
|
|
137
|
+
addTypeImport(op.requestBody.type, schemaNames, imports);
|
|
138
|
+
if (op.queryType && schemaNames.has(op.queryType))
|
|
139
|
+
imports.add(op.queryType);
|
|
140
|
+
if (op.headerType && schemaNames.has(op.headerType))
|
|
141
|
+
imports.add(op.headerType);
|
|
142
|
+
for (const p of [...op.pathParams, ...op.queryParams, ...op.headerParams]) {
|
|
143
|
+
if (!isPrimitive(p.type))
|
|
144
|
+
addTypeImport(p.type, schemaNames, imports);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return Array.from(imports).sort();
|
|
148
|
+
}
|
|
149
|
+
function addTypeImport(type, schemaNames, imports) {
|
|
150
|
+
const genericMatch = type.match(/^(\w+)<(.+)>$/);
|
|
151
|
+
if (genericMatch) {
|
|
152
|
+
const [, outer, inner] = genericMatch;
|
|
153
|
+
if (schemaNames.has(outer))
|
|
154
|
+
imports.add(outer);
|
|
155
|
+
addTypeImport(inner, schemaNames, imports);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const cleaned = type.replace(/\[\]$/, '').replace(/ \| null$/, '').replace(/^\(/, '').replace(/\)$/, '');
|
|
159
|
+
for (const part of cleaned.split(/\s*\|\s*/)) {
|
|
160
|
+
const trimmed = part.trim();
|
|
161
|
+
if (schemaNames.has(trimmed))
|
|
162
|
+
imports.add(trimmed);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function isPrimitive(type) {
|
|
166
|
+
const primitives = new Set(['string', 'number', 'boolean', 'void', 'unknown', 'any', 'never', 'null', 'undefined']);
|
|
167
|
+
const base = type.replace(/\[\]$/, '').replace(/ \| null$/, '').trim();
|
|
168
|
+
if (base.includes('<'))
|
|
169
|
+
return false;
|
|
170
|
+
return primitives.has(base) || base.startsWith('Record<') || base.startsWith('{');
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=handlebars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlebars.js","sourceRoot":"","sources":["../../src/helpers/handlebars.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tesseract — manifest-first SDK generator.
|
|
3
|
+
* Public API.
|
|
4
|
+
*/
|
|
5
|
+
import type { TesseractConfig } from './types/config.js';
|
|
6
|
+
export interface GenerateResult {
|
|
7
|
+
filesWritten: number;
|
|
8
|
+
filesSkipped: number;
|
|
9
|
+
warnings: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function generate(config: TesseractConfig): Promise<GenerateResult>;
|
|
12
|
+
export type { TesseractConfig } from './types/config.js';
|
|
13
|
+
export type { SDKIR, EnrichedSDKIR } from './types/ir.js';
|
|
14
|
+
export type { LanguageAdapter, EmitResult } from './adapters/types.js';
|
|
15
|
+
export type { EmittedFile } from './pipeline/write.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B/E;AAGD,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tesseract — manifest-first SDK generator.
|
|
3
|
+
* Public API.
|
|
4
|
+
*/
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import { intake } from './pipeline/intake.js';
|
|
7
|
+
import { enrich } from './pipeline/enrich.js';
|
|
8
|
+
import { write } from './pipeline/write.js';
|
|
9
|
+
import { resolveConfig } from './types/config.js';
|
|
10
|
+
import { TypeScriptAdapter } from './adapters/typescript/index.js';
|
|
11
|
+
const adapters = {
|
|
12
|
+
typescript: () => new TypeScriptAdapter(),
|
|
13
|
+
};
|
|
14
|
+
export async function generate(config) {
|
|
15
|
+
const resolved = resolveConfig(config);
|
|
16
|
+
// 1. Intake: manifest → SDKIR
|
|
17
|
+
const ir = intake(resolved);
|
|
18
|
+
// 2. Enrich: SDKIR → EnrichedSDKIR
|
|
19
|
+
const enriched = enrich(ir);
|
|
20
|
+
// 3. Emit: EnrichedSDKIR → files
|
|
21
|
+
const adapterFactory = adapters[resolved.language];
|
|
22
|
+
if (!adapterFactory) {
|
|
23
|
+
throw new Error(`Unsupported language: "${resolved.language}". Available: ${Object.keys(adapters).join(', ')}`);
|
|
24
|
+
}
|
|
25
|
+
const adapter = adapterFactory();
|
|
26
|
+
const outputDir = resolve(resolved.output);
|
|
27
|
+
const emitResult = await adapter.emit(enriched, outputDir);
|
|
28
|
+
// 4. Write: files → disk
|
|
29
|
+
const writeResult = write(emitResult.files, outputDir);
|
|
30
|
+
return {
|
|
31
|
+
filesWritten: writeResult.written.length,
|
|
32
|
+
filesSkipped: writeResult.skipped.length,
|
|
33
|
+
warnings: emitResult.warnings,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAUnE,MAAM,QAAQ,GAA0C;IACtD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE;CAC1C,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAuB;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEvC,8BAA8B;IAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE5B,mCAAmC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,iCAAiC;IACjC,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,QAAQ,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE3D,yBAAyB;IACzB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEvD,OAAO;QACL,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;QACxC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;QACxC,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enrichment — adds symbol table, import graph, topological order,
|
|
3
|
+
* doc blocks, signatures, and domain allocation to a raw SDKIR.
|
|
4
|
+
*/
|
|
5
|
+
import type { SDKIR, EnrichedSDKIR } from '../types/ir.js';
|
|
6
|
+
export declare function enrich(ir: SDKIR): EnrichedSDKIR;
|
|
7
|
+
//# sourceMappingURL=enrich.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrich.d.ts","sourceRoot":"","sources":["../../src/pipeline/enrich.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EAWd,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,aAAa,CAuB/C"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enrichment — adds symbol table, import graph, topological order,
|
|
3
|
+
* doc blocks, signatures, and domain allocation to a raw SDKIR.
|
|
4
|
+
*/
|
|
5
|
+
import { deduplicateMethodNames } from '../utils/naming.js';
|
|
6
|
+
// ── Entry point ──────────────────────────────────────────────────────────────
|
|
7
|
+
export function enrich(ir) {
|
|
8
|
+
const symbolTable = buildSymbolTable(ir.schemas);
|
|
9
|
+
const importGraph = buildImportGraph(ir.schemas, symbolTable);
|
|
10
|
+
const schemaOrder = topoSort(ir.schemas, importGraph);
|
|
11
|
+
const domainAllocations = buildDomainAllocations(ir.groups, ir.schemas, symbolTable);
|
|
12
|
+
const renderDecisions = buildRenderDecisions(ir.schemas);
|
|
13
|
+
const serialization = buildSerializationHints(ir.schemas);
|
|
14
|
+
const operations = deduplicateAllMethods(ir.groups);
|
|
15
|
+
const signatures = buildSignatures(operations);
|
|
16
|
+
const docBlocks = buildDocBlocks(operations);
|
|
17
|
+
return {
|
|
18
|
+
...ir,
|
|
19
|
+
groups: operations,
|
|
20
|
+
symbolTable,
|
|
21
|
+
importGraph,
|
|
22
|
+
schemaOrder,
|
|
23
|
+
domainAllocations,
|
|
24
|
+
signatures,
|
|
25
|
+
docBlocks,
|
|
26
|
+
renderDecisions,
|
|
27
|
+
serialization,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// ── Symbol table ─────────────────────────────────────────────────────────────
|
|
31
|
+
function buildSymbolTable(schemas) {
|
|
32
|
+
const table = {};
|
|
33
|
+
for (const s of schemas) {
|
|
34
|
+
table[s.name] = {
|
|
35
|
+
definedIn: s.ownership?.kind === 'generated' ? 'types' : s.ownership?.kind ?? 'types',
|
|
36
|
+
kind: s.isEnum ? 'enum' : s.isTypeAlias ? 'alias' : 'interface',
|
|
37
|
+
isExternal: s.ownership?.kind === 'external',
|
|
38
|
+
importPath: s.ownership?.kind === 'external' ? s.ownership.externalImport?.importPath : undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return table;
|
|
42
|
+
}
|
|
43
|
+
// ── Import graph ─────────────────────────────────────────────────────────────
|
|
44
|
+
function buildImportGraph(schemas, symbolTable) {
|
|
45
|
+
const graph = {};
|
|
46
|
+
for (const schema of schemas) {
|
|
47
|
+
const deps = new Set();
|
|
48
|
+
collectSchemaDeps(schema, symbolTable, deps);
|
|
49
|
+
graph[schema.name] = [...deps];
|
|
50
|
+
}
|
|
51
|
+
return graph;
|
|
52
|
+
}
|
|
53
|
+
function collectSchemaDeps(schema, symbolTable, out) {
|
|
54
|
+
if (schema.extends) {
|
|
55
|
+
const ref = extractRefName(schema.extends);
|
|
56
|
+
if (ref && ref !== schema.name && ref in symbolTable)
|
|
57
|
+
out.add(ref);
|
|
58
|
+
}
|
|
59
|
+
for (const prop of schema.properties) {
|
|
60
|
+
collectTypeDeps(prop.type, symbolTable, out, schema.name);
|
|
61
|
+
}
|
|
62
|
+
if (schema.unionMembers) {
|
|
63
|
+
for (const m of schema.unionMembers)
|
|
64
|
+
collectTypeDeps(m, symbolTable, out, schema.name);
|
|
65
|
+
}
|
|
66
|
+
if (schema.intersectionMembers) {
|
|
67
|
+
for (const m of schema.intersectionMembers)
|
|
68
|
+
collectTypeDeps(m, symbolTable, out, schema.name);
|
|
69
|
+
}
|
|
70
|
+
if (schema.additionalPropertiesType) {
|
|
71
|
+
collectTypeDeps(schema.additionalPropertiesType, symbolTable, out, schema.name);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function collectTypeDeps(typeStr, symbolTable, out, self) {
|
|
75
|
+
// Extract PascalCase words that could be symbol references
|
|
76
|
+
const references = typeStr.match(/\b[A-Z][a-zA-Z0-9]+\b/g) ?? [];
|
|
77
|
+
for (const ref of references) {
|
|
78
|
+
if (ref !== self && ref in symbolTable && ref !== 'Array' && ref !== 'Record') {
|
|
79
|
+
out.add(ref);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function extractRefName(typeStr) {
|
|
84
|
+
const match = typeStr.match(/^([A-Z][a-zA-Z0-9]+)$/);
|
|
85
|
+
return match?.[1];
|
|
86
|
+
}
|
|
87
|
+
// ── Topological sort ─────────────────────────────────────────────────────────
|
|
88
|
+
function topoSort(schemas, importGraph) {
|
|
89
|
+
const visited = new Set();
|
|
90
|
+
const order = [];
|
|
91
|
+
const visiting = new Set(); // cycle detection
|
|
92
|
+
const nameSet = new Set(schemas.map((s) => s.name));
|
|
93
|
+
function visit(name) {
|
|
94
|
+
if (visited.has(name))
|
|
95
|
+
return;
|
|
96
|
+
if (visiting.has(name))
|
|
97
|
+
return; // break cycle
|
|
98
|
+
visiting.add(name);
|
|
99
|
+
const deps = importGraph[name] ?? [];
|
|
100
|
+
for (const dep of deps) {
|
|
101
|
+
if (nameSet.has(dep))
|
|
102
|
+
visit(dep);
|
|
103
|
+
}
|
|
104
|
+
visiting.delete(name);
|
|
105
|
+
visited.add(name);
|
|
106
|
+
order.push(name);
|
|
107
|
+
}
|
|
108
|
+
for (const schema of schemas) {
|
|
109
|
+
visit(schema.name);
|
|
110
|
+
}
|
|
111
|
+
return order;
|
|
112
|
+
}
|
|
113
|
+
// ── Domain allocations ───────────────────────────────────────────────────────
|
|
114
|
+
function buildDomainAllocations(groups, schemas, _symbolTable) {
|
|
115
|
+
const domainMap = new Map();
|
|
116
|
+
// Schemas explicitly assigned to a domain
|
|
117
|
+
for (const schema of schemas) {
|
|
118
|
+
if (schema.ownership?.kind === 'generated' && schema.ownership.domainFile) {
|
|
119
|
+
const domain = schema.ownership.domainFile;
|
|
120
|
+
if (!domainMap.has(domain))
|
|
121
|
+
domainMap.set(domain, new Set());
|
|
122
|
+
domainMap.get(domain).add(schema.name);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Schemas referenced by operations in each group
|
|
126
|
+
for (const group of groups) {
|
|
127
|
+
if (!domainMap.has(group.fileName))
|
|
128
|
+
domainMap.set(group.fileName, new Set());
|
|
129
|
+
const domainSchemas = domainMap.get(group.fileName);
|
|
130
|
+
for (const op of group.operations) {
|
|
131
|
+
collectOperationSchemaRefs(op, domainSchemas);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return Array.from(domainMap.entries()).map(([fileName, schemaNames]) => ({
|
|
135
|
+
fileName,
|
|
136
|
+
schemas: [...schemaNames],
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
function collectOperationSchemaRefs(op, out) {
|
|
140
|
+
const refs = (op.responseType + ' ' + (op.requestBody?.type ?? '') + ' ' + (op.queryType ?? ''))
|
|
141
|
+
.match(/\b[A-Z][a-zA-Z0-9]+\b/g) ?? [];
|
|
142
|
+
for (const ref of refs) {
|
|
143
|
+
if (ref !== 'Array' && ref !== 'Record')
|
|
144
|
+
out.add(ref);
|
|
145
|
+
}
|
|
146
|
+
for (const p of [...op.pathParams, ...op.queryParams, ...op.headerParams]) {
|
|
147
|
+
const pRefs = p.type.match(/\b[A-Z][a-zA-Z0-9]+\b/g) ?? [];
|
|
148
|
+
for (const ref of pRefs) {
|
|
149
|
+
if (ref !== 'Array' && ref !== 'Record')
|
|
150
|
+
out.add(ref);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ── Render decisions ─────────────────────────────────────────────────────────
|
|
155
|
+
function buildRenderDecisions(schemas) {
|
|
156
|
+
const decisions = {};
|
|
157
|
+
for (const schema of schemas) {
|
|
158
|
+
if (schema.ownership?.kind === 'external') {
|
|
159
|
+
decisions[schema.name] = 'skip';
|
|
160
|
+
}
|
|
161
|
+
else if (schema.isEnum) {
|
|
162
|
+
decisions[schema.name] = 'enum';
|
|
163
|
+
}
|
|
164
|
+
else if (schema.isTypeAlias) {
|
|
165
|
+
decisions[schema.name] = 'type-alias';
|
|
166
|
+
}
|
|
167
|
+
else if (schema.isUnionType) {
|
|
168
|
+
decisions[schema.name] = 'union';
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
decisions[schema.name] = 'interface';
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return decisions;
|
|
175
|
+
}
|
|
176
|
+
// ── Serialization hints ──────────────────────────────────────────────────────
|
|
177
|
+
function buildSerializationHints(schemas) {
|
|
178
|
+
const hints = {};
|
|
179
|
+
for (const schema of schemas) {
|
|
180
|
+
const dateProps = [];
|
|
181
|
+
for (const prop of schema.properties) {
|
|
182
|
+
if (prop.format === 'date-time' || prop.format === 'date') {
|
|
183
|
+
dateProps.push(prop.name);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (dateProps.length > 0) {
|
|
187
|
+
hints[schema.name] = { dateProperties: dateProps };
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return hints;
|
|
191
|
+
}
|
|
192
|
+
// ── Method deduplication ─────────────────────────────────────────────────────
|
|
193
|
+
function deduplicateAllMethods(groups) {
|
|
194
|
+
return groups.map((group) => {
|
|
195
|
+
const names = group.operations.map((op) => op.name);
|
|
196
|
+
const deduped = deduplicateMethodNames(names);
|
|
197
|
+
return {
|
|
198
|
+
...group,
|
|
199
|
+
operations: group.operations.map((op, i) => ({ ...op, name: deduped[i] })),
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// ── Operation signatures ─────────────────────────────────────────────────────
|
|
204
|
+
function buildSignatures(groups) {
|
|
205
|
+
const signatures = {};
|
|
206
|
+
for (const group of groups) {
|
|
207
|
+
for (const op of group.operations) {
|
|
208
|
+
const paramParts = [];
|
|
209
|
+
// Path params always first
|
|
210
|
+
for (const p of op.pathParams) {
|
|
211
|
+
paramParts.push(`${p.name}: ${p.type}`);
|
|
212
|
+
}
|
|
213
|
+
// Body param
|
|
214
|
+
if (op.requestBody) {
|
|
215
|
+
paramParts.push(`body: ${op.requestBody.type}`);
|
|
216
|
+
}
|
|
217
|
+
// Query params (as options bag)
|
|
218
|
+
const optionalQuery = op.queryParams.filter((p) => !p.required);
|
|
219
|
+
const requiredQuery = op.queryParams.filter((p) => p.required);
|
|
220
|
+
if (requiredQuery.length > 0 || op.queryType) {
|
|
221
|
+
if (op.queryType) {
|
|
222
|
+
paramParts.push(`query: ${op.queryType}`);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
const queryParts = requiredQuery.map((p) => `${p.name}: ${p.type}`);
|
|
226
|
+
paramParts.push(queryParts.join(', '));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (optionalQuery.length > 0 && !op.queryType) {
|
|
230
|
+
const optParts = optionalQuery.map((p) => `${p.name}?: ${p.type}`);
|
|
231
|
+
paramParts.push(optParts.join(', '));
|
|
232
|
+
}
|
|
233
|
+
// Header params
|
|
234
|
+
for (const h of op.headerParams) {
|
|
235
|
+
paramParts.push(`${h.name}${h.required ? '' : '?'}: ${h.type}`);
|
|
236
|
+
}
|
|
237
|
+
const returnType = op.isEventStream ? `AsyncIterable<${op.responseType}>` : op.responseType;
|
|
238
|
+
signatures[`${group.name}.${op.name}`] = {
|
|
239
|
+
params: paramParts.join(', '),
|
|
240
|
+
returnType,
|
|
241
|
+
isAsync: true,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return signatures;
|
|
246
|
+
}
|
|
247
|
+
// ── Doc blocks ───────────────────────────────────────────────────────────────
|
|
248
|
+
function buildDocBlocks(groups) {
|
|
249
|
+
const docs = {};
|
|
250
|
+
for (const group of groups) {
|
|
251
|
+
for (const op of group.operations) {
|
|
252
|
+
const lines = [];
|
|
253
|
+
if (op.summary)
|
|
254
|
+
lines.push(op.summary);
|
|
255
|
+
if (op.description && op.description !== op.summary) {
|
|
256
|
+
if (lines.length > 0)
|
|
257
|
+
lines.push('');
|
|
258
|
+
lines.push(op.description);
|
|
259
|
+
}
|
|
260
|
+
for (const p of op.pathParams) {
|
|
261
|
+
lines.push(`@param ${p.name} ${p.description ?? ''}`);
|
|
262
|
+
}
|
|
263
|
+
if (op.requestBody) {
|
|
264
|
+
lines.push(`@param body ${op.requestBody.type}`);
|
|
265
|
+
}
|
|
266
|
+
if (op.deprecated)
|
|
267
|
+
lines.push('@deprecated');
|
|
268
|
+
docs[`${group.name}.${op.name}`] = {
|
|
269
|
+
summary: op.summary,
|
|
270
|
+
description: op.description,
|
|
271
|
+
lines,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return docs;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=enrich.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrich.js","sourceRoot":"","sources":["../../src/pipeline/enrich.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest Intake — converts an sdk-manifold/v1 manifest to SDKIR.
|
|
3
|
+
*
|
|
4
|
+
* This is the only intake path in Tesseract. No OpenAPI parsing.
|
|
5
|
+
*/
|
|
6
|
+
import type { JsonSchema } from '../types/manifest.js';
|
|
7
|
+
import type { SDKIR } from '../types/ir.js';
|
|
8
|
+
import type { ResolvedConfig } from '../types/config.js';
|
|
9
|
+
export declare function intake(config: ResolvedConfig): SDKIR;
|
|
10
|
+
export declare function jsonSchemaToType(schema: JsonSchema): string;
|
|
11
|
+
//# sourceMappingURL=intake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intake.d.ts","sourceRoot":"","sources":["../../src/pipeline/intake.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAIV,UAAU,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,KAAK,EAQN,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,wBAAgB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,CAyEpD;AA+JD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA2D3D"}
|