@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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/adapters/types.d.ts +15 -0
  4. package/dist/adapters/types.d.ts.map +1 -0
  5. package/dist/adapters/types.js +6 -0
  6. package/dist/adapters/types.js.map +1 -0
  7. package/dist/adapters/typescript/index.d.ts +11 -0
  8. package/dist/adapters/typescript/index.d.ts.map +1 -0
  9. package/dist/adapters/typescript/index.js +112 -0
  10. package/dist/adapters/typescript/index.js.map +1 -0
  11. package/dist/adapters/typescript/model-emitter.d.ts +13 -0
  12. package/dist/adapters/typescript/model-emitter.d.ts.map +1 -0
  13. package/dist/adapters/typescript/model-emitter.js +415 -0
  14. package/dist/adapters/typescript/model-emitter.js.map +1 -0
  15. package/dist/adapters/typescript/shared.d.ts +26 -0
  16. package/dist/adapters/typescript/shared.d.ts.map +1 -0
  17. package/dist/adapters/typescript/shared.js +65 -0
  18. package/dist/adapters/typescript/shared.js.map +1 -0
  19. package/dist/cli.d.ts +6 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +53 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/helpers/handlebars.d.ts +15 -0
  24. package/dist/helpers/handlebars.d.ts.map +1 -0
  25. package/dist/helpers/handlebars.js +172 -0
  26. package/dist/helpers/handlebars.js.map +1 -0
  27. package/dist/index.d.ts +16 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +36 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/pipeline/enrich.d.ts +7 -0
  32. package/dist/pipeline/enrich.d.ts.map +1 -0
  33. package/dist/pipeline/enrich.js +277 -0
  34. package/dist/pipeline/enrich.js.map +1 -0
  35. package/dist/pipeline/intake.d.ts +11 -0
  36. package/dist/pipeline/intake.d.ts.map +1 -0
  37. package/dist/pipeline/intake.js +508 -0
  38. package/dist/pipeline/intake.js.map +1 -0
  39. package/dist/pipeline/write.d.ts +15 -0
  40. package/dist/pipeline/write.d.ts.map +1 -0
  41. package/dist/pipeline/write.js +33 -0
  42. package/dist/pipeline/write.js.map +1 -0
  43. package/dist/types/config.d.ts +47 -0
  44. package/dist/types/config.d.ts.map +1 -0
  45. package/dist/types/config.js +24 -0
  46. package/dist/types/config.js.map +1 -0
  47. package/dist/types/ir.d.ts +172 -0
  48. package/dist/types/ir.d.ts.map +1 -0
  49. package/dist/types/ir.js +7 -0
  50. package/dist/types/ir.js.map +1 -0
  51. package/dist/types/manifest.d.ts +112 -0
  52. package/dist/types/manifest.d.ts.map +1 -0
  53. package/dist/types/manifest.js +32 -0
  54. package/dist/types/manifest.js.map +1 -0
  55. package/dist/utils/format.d.ts +5 -0
  56. package/dist/utils/format.d.ts.map +1 -0
  57. package/dist/utils/format.js +21 -0
  58. package/dist/utils/format.js.map +1 -0
  59. package/dist/utils/naming.d.ts +26 -0
  60. package/dist/utils/naming.d.ts.map +1 -0
  61. package/dist/utils/naming.js +270 -0
  62. package/dist/utils/naming.js.map +1 -0
  63. package/package.json +58 -0
  64. package/templates/typescript/client.hbs +145 -0
  65. package/templates/typescript/domain-index.hbs +10 -0
  66. package/templates/typescript/domain.hbs +127 -0
  67. package/templates/typescript/index.hbs +64 -0
  68. package/templates/typescript/package-json.hbs +29 -0
  69. package/templates/typescript/readme.hbs +78 -0
  70. package/templates/typescript/transport-sse.hbs +377 -0
  71. package/templates/typescript/transport.hbs +662 -0
  72. package/templates/typescript/tsconfig.hbs +18 -0
  73. package/templates/typescript/types-common.hbs +98 -0
  74. package/templates/typescript/types-errors.hbs +191 -0
  75. package/templates/typescript/types.hbs +33 -0
  76. package/templates/typescript/utils-index.hbs +7 -0
  77. package/templates/typescript/utils-query.hbs +29 -0
  78. 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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"}
@@ -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"}