ts-procedures 9.1.0 → 10.0.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/CHANGELOG.md +73 -0
- package/agent_config/claude-code/skills/ts-procedures/api-reference.md +4 -0
- package/agent_config/copilot/copilot-instructions.md +2 -0
- package/agent_config/cursor/cursorrules +2 -0
- package/build/codegen/bin/cli.d.ts +4 -0
- package/build/codegen/bin/cli.js +20 -1
- package/build/codegen/bin/cli.js.map +1 -1
- package/build/codegen/bin/cli.test.js +21 -0
- package/build/codegen/bin/cli.test.js.map +1 -1
- package/build/codegen/bin/flag-specs.js +3 -0
- package/build/codegen/bin/flag-specs.js.map +1 -1
- package/build/codegen/check-output.d.ts +28 -0
- package/build/codegen/check-output.js +216 -0
- package/build/codegen/check-output.js.map +1 -0
- package/build/codegen/check-output.test.d.ts +1 -0
- package/build/codegen/check-output.test.js +160 -0
- package/build/codegen/check-output.test.js.map +1 -0
- package/build/codegen/emit/api-route.js +2 -2
- package/build/codegen/emit/api-route.js.map +1 -1
- package/build/codegen/emit/context.d.ts +9 -0
- package/build/codegen/emit/http-stream-route.js +1 -1
- package/build/codegen/emit/http-stream-route.js.map +1 -1
- package/build/codegen/emit/rpc-route.js +1 -1
- package/build/codegen/emit/rpc-route.js.map +1 -1
- package/build/codegen/emit/scope-file.js +15 -1
- package/build/codegen/emit/scope-file.js.map +1 -1
- package/build/codegen/emit/stream-route.js +1 -1
- package/build/codegen/emit/stream-route.js.map +1 -1
- package/build/codegen/emit-errors.integration.test.js +2 -2
- package/build/codegen/emit-errors.integration.test.js.map +1 -1
- package/build/codegen/emit-scope.test.js +55 -0
- package/build/codegen/emit-scope.test.js.map +1 -1
- package/build/codegen/emit-types.js +19 -0
- package/build/codegen/emit-types.js.map +1 -1
- package/build/codegen/emit-types.test.js +34 -0
- package/build/codegen/emit-types.test.js.map +1 -1
- package/build/codegen/index.d.ts +14 -0
- package/build/codegen/index.js +11 -1
- package/build/codegen/index.js.map +1 -1
- package/build/codegen/resolve-envelope.js +1 -1
- package/build/codegen/resolve-envelope.js.map +1 -1
- package/build/codegen/targets/ts/name-collision.test.d.ts +1 -0
- package/build/codegen/targets/ts/name-collision.test.js +30 -0
- package/build/codegen/targets/ts/name-collision.test.js.map +1 -0
- package/build/codegen/targets/ts/run.js +13 -0
- package/build/codegen/targets/ts/run.js.map +1 -1
- package/build/codegen/test-helpers/run-tsc.js +1 -1
- package/build/codegen/test-helpers/run-tsc.js.map +1 -1
- package/docs/client-and-codegen.md +17 -0
- package/docs/migration-v8-to-v9.md +12 -4
- package/package.json +8 -8
- package/src/codegen/bin/cli.test.ts +28 -0
- package/src/codegen/bin/cli.ts +27 -1
- package/src/codegen/bin/flag-specs.ts +3 -0
- package/src/codegen/check-output.test.ts +177 -0
- package/src/codegen/check-output.ts +262 -0
- package/src/codegen/emit/api-route.ts +2 -2
- package/src/codegen/emit/context.ts +9 -0
- package/src/codegen/emit/http-stream-route.ts +1 -1
- package/src/codegen/emit/rpc-route.ts +1 -1
- package/src/codegen/emit/scope-file.ts +19 -1
- package/src/codegen/emit/stream-route.ts +1 -1
- package/src/codegen/emit-errors.integration.test.ts +2 -2
- package/src/codegen/emit-scope.test.ts +60 -0
- package/src/codegen/emit-types.test.ts +36 -0
- package/src/codegen/emit-types.ts +20 -0
- package/src/codegen/index.ts +23 -1
- package/src/codegen/resolve-envelope.ts +1 -1
- package/src/codegen/targets/ts/name-collision.test.ts +34 -0
- package/src/codegen/targets/ts/run.ts +16 -0
- package/src/codegen/test-helpers/run-tsc.ts +1 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in self-validation of generated output (`--check`).
|
|
3
|
+
*
|
|
4
|
+
* Codegen is otherwise throw-to-fail: a bug that emits syntactically-written
|
|
5
|
+
* but non-compiling output (a dangling type reference, a duplicate identifier)
|
|
6
|
+
* exits 0 and silently overwrites a previously-working client. `--check` turns
|
|
7
|
+
* that into a loud, non-zero failure.
|
|
8
|
+
*
|
|
9
|
+
* Two modes:
|
|
10
|
+
* - `'scan'` (default): a dependency-free, in-memory scan for *dangling type
|
|
11
|
+
* references* — a type alias whose body is a bare identifier that is never
|
|
12
|
+
* declared or imported (the exact shape of the namespace-mode root-union
|
|
13
|
+
* bug, `export type Params = Root`). It deliberately does NOT try to detect
|
|
14
|
+
* duplicate identifiers: that needs an accurate model of TypeScript's
|
|
15
|
+
* declaration-merging rules to avoid false positives (a value and a type
|
|
16
|
+
* legally share a name), the duplicate-from-name-collision case is already
|
|
17
|
+
* caught deterministically at the source (see `emitScopeFile`), and `'tsc'`
|
|
18
|
+
* mode catches the rest. Keeping the scan to one high-confidence check makes
|
|
19
|
+
* it reliable and trivial to reason about.
|
|
20
|
+
* - `'tsc'`: a real `tsc --noEmit` over the generated code via the programmatic
|
|
21
|
+
* `typescript` API — authoritative, catches everything. `typescript` is a
|
|
22
|
+
* dev/peer dependency that some consumers won't have installed, so it
|
|
23
|
+
* gracefully falls back to `'scan'` (with a warning) when it can't be
|
|
24
|
+
* resolved.
|
|
25
|
+
*/
|
|
26
|
+
import { dirname, resolve } from 'node:path';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Scan mode
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Any exported declaration that introduces an identifier the file can later
|
|
31
|
+
// reference (so a `export type X = Foo` whose `Foo` is declared lower down
|
|
32
|
+
// doesn't read as dangling).
|
|
33
|
+
const DECL_RE = /^\s*export\s+(?:declare\s+)?(?:type|interface|class|const|let|var|function|enum|namespace)\s+([A-Za-z_$][\w$]*)/;
|
|
34
|
+
// `export type X = <body>` — body captured for the bare-identifier test.
|
|
35
|
+
const TYPE_ALIAS_RE = /^\s*export\s+type\s+([A-Za-z_$][\w$]*)\s*=\s*(.+?);?\s*$/;
|
|
36
|
+
const IMPORT_NAMES_RE = /import\s+(?:type\s+)?(?:\*\s+as\s+\w+|(\w+)\s*,?\s*)?(?:\{([^}]*)\})?\s*from/g;
|
|
37
|
+
const BARE_IDENT_RE = /^[A-Za-z_$][\w$]*$/;
|
|
38
|
+
// TS lib globals / primitives a bare type-alias body may legitimately resolve
|
|
39
|
+
// to without being declared or imported in the file.
|
|
40
|
+
const BUILTIN_TYPES = new Set([
|
|
41
|
+
'string', 'number', 'boolean', 'void', 'undefined', 'null', 'unknown', 'any',
|
|
42
|
+
'never', 'object', 'symbol', 'bigint', 'this', 'true', 'false', 'Date',
|
|
43
|
+
'Array', 'ReadonlyArray', 'Record', 'Promise', 'Map', 'Set', 'Partial',
|
|
44
|
+
'Required', 'Readonly', 'Pick', 'Omit', 'Exclude', 'Extract', 'NonNullable',
|
|
45
|
+
'ReturnType', 'Parameters', 'Uint8Array', 'ArrayBuffer', 'Blob',
|
|
46
|
+
]);
|
|
47
|
+
/**
|
|
48
|
+
* Collects every identifier the file declares or imports — the set of names a
|
|
49
|
+
* bare type-alias body is allowed to reference. Declarations at any nesting are
|
|
50
|
+
* counted: the check only asks "does this name exist in the file at all", not
|
|
51
|
+
* "is it in scope here", so it never false-positives on a valid reference.
|
|
52
|
+
*/
|
|
53
|
+
function collectKnownNames(code) {
|
|
54
|
+
const names = new Set();
|
|
55
|
+
for (const line of code.split('\n')) {
|
|
56
|
+
const decl = DECL_RE.exec(line);
|
|
57
|
+
if (decl)
|
|
58
|
+
names.add(decl[1]);
|
|
59
|
+
}
|
|
60
|
+
for (const m of code.matchAll(IMPORT_NAMES_RE)) {
|
|
61
|
+
if (m[1])
|
|
62
|
+
names.add(m[1]);
|
|
63
|
+
if (m[2]) {
|
|
64
|
+
for (const part of m[2].split(',')) {
|
|
65
|
+
const name = part.split(/\s+as\s+/).pop()?.trim();
|
|
66
|
+
if (name)
|
|
67
|
+
names.add(name);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return names;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Flags `export type X = <Bare>` where `<Bare>` is a lone identifier that is
|
|
75
|
+
* neither declared nor imported in the file nor a TS built-in — the exact shape
|
|
76
|
+
* of the namespace-mode root-union bug (`export type Params = Root`). Bodies
|
|
77
|
+
* that are anything other than a single bare identifier (object literals,
|
|
78
|
+
* unions, generics, qualified names) are left alone: they're either valid or
|
|
79
|
+
* the kind of error only a real type-check can adjudicate.
|
|
80
|
+
*/
|
|
81
|
+
function scanFile(file, known) {
|
|
82
|
+
const issues = [];
|
|
83
|
+
const lines = file.code.split('\n');
|
|
84
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
85
|
+
const alias = TYPE_ALIAS_RE.exec(lines[i]);
|
|
86
|
+
if (alias == null)
|
|
87
|
+
continue;
|
|
88
|
+
const rhs = alias[2].trim();
|
|
89
|
+
if (BARE_IDENT_RE.test(rhs) && !BUILTIN_TYPES.has(rhs) && !known.has(rhs)) {
|
|
90
|
+
issues.push({
|
|
91
|
+
file: file.path,
|
|
92
|
+
line: i + 1,
|
|
93
|
+
message: `Type alias "${alias[1]}" references "${rhs}", which is never declared or imported in this file (dangling reference).`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return issues;
|
|
98
|
+
}
|
|
99
|
+
export function scanGeneratedFiles(files) {
|
|
100
|
+
return files
|
|
101
|
+
.filter((f) => f.path.endsWith('.ts'))
|
|
102
|
+
.flatMap((f) => scanFile(f, collectKnownNames(f.code)));
|
|
103
|
+
}
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// tsc mode
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
/**
|
|
108
|
+
* Type-checks the generated files in-process with the programmatic `typescript`
|
|
109
|
+
* API. Builds a `Program` over the in-memory `code` via a `CompilerHost` that
|
|
110
|
+
* serves generated content for generated paths and delegates everything else
|
|
111
|
+
* (the default lib + `node_modules`) to the real filesystem. Files are anchored
|
|
112
|
+
* at `outDir`, so extensionless/bare imports (`./_models`, `ts-procedures/client`)
|
|
113
|
+
* resolve under Bundler resolution exactly as the consumer's tooling resolves
|
|
114
|
+
* them: self-contained output resolves entirely within the in-memory set;
|
|
115
|
+
* non-self-contained output finds the installed `ts-procedures` by walking up
|
|
116
|
+
* from `outDir` to the nearest `node_modules`. It reads no bytes it didn't emit
|
|
117
|
+
* and writes nothing, so it can't perturb the frozen codegen output. Works in
|
|
118
|
+
* dry-run too (nothing needs to be on disk). Returns `null` to signal "couldn't
|
|
119
|
+
* run, fall back to scan" when `typescript` can't be resolved.
|
|
120
|
+
*
|
|
121
|
+
* The in-memory host approach mirrors the sibling ts-channels generator's
|
|
122
|
+
* `assertGeneratedFilesCompile`, keeping the two generators' tsc checks aligned.
|
|
123
|
+
*/
|
|
124
|
+
async function tscCheck(files) {
|
|
125
|
+
let ts;
|
|
126
|
+
try {
|
|
127
|
+
const mod = await import('typescript');
|
|
128
|
+
ts = mod.default ?? mod;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
const tsFiles = files.filter((f) => f.path.endsWith('.ts'));
|
|
134
|
+
if (tsFiles.length === 0)
|
|
135
|
+
return [];
|
|
136
|
+
// ts-procedures emits extensionless relative imports (`from './_models'`),
|
|
137
|
+
// which are illegal under NodeNext — so type-check under Bundler resolution to
|
|
138
|
+
// match how that output is actually consumed (tsx / bundlers).
|
|
139
|
+
const options = {
|
|
140
|
+
target: ts.ScriptTarget.ES2022,
|
|
141
|
+
module: ts.ModuleKind.ESNext,
|
|
142
|
+
moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
143
|
+
strict: true,
|
|
144
|
+
noEmit: true,
|
|
145
|
+
skipLibCheck: true,
|
|
146
|
+
};
|
|
147
|
+
const generated = new Map();
|
|
148
|
+
const generatedDirs = new Set();
|
|
149
|
+
for (const f of tsFiles) {
|
|
150
|
+
const abs = resolve(f.path);
|
|
151
|
+
generated.set(abs, f.code);
|
|
152
|
+
generatedDirs.add(dirname(abs));
|
|
153
|
+
}
|
|
154
|
+
const host = ts.createCompilerHost(options, true);
|
|
155
|
+
const baseGetSourceFile = host.getSourceFile.bind(host);
|
|
156
|
+
const baseReadFile = host.readFile.bind(host);
|
|
157
|
+
const baseFileExists = host.fileExists.bind(host);
|
|
158
|
+
const baseDirectoryExists = host.directoryExists?.bind(host);
|
|
159
|
+
host.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreate) => {
|
|
160
|
+
const content = generated.get(resolve(fileName));
|
|
161
|
+
if (content !== undefined)
|
|
162
|
+
return ts.createSourceFile(fileName, content, languageVersionOrOptions, true);
|
|
163
|
+
return baseGetSourceFile(fileName, languageVersionOrOptions, onError, shouldCreate);
|
|
164
|
+
};
|
|
165
|
+
host.readFile = (fileName) => {
|
|
166
|
+
const content = generated.get(resolve(fileName));
|
|
167
|
+
return content !== undefined ? content : baseReadFile(fileName);
|
|
168
|
+
};
|
|
169
|
+
host.fileExists = (fileName) => generated.has(resolve(fileName)) || baseFileExists(fileName);
|
|
170
|
+
// Without this, Bundler resolution of `./_types` etc. bails when the virtual
|
|
171
|
+
// outDir doesn't exist on disk (e.g. --dry-run) and every relative import
|
|
172
|
+
// reports TS2307, cascading into TS7006 implicit-any noise.
|
|
173
|
+
host.directoryExists = (d) => generatedDirs.has(resolve(d)) || (baseDirectoryExists?.(d) ?? false);
|
|
174
|
+
const program = ts.createProgram([...generated.keys()], options, host);
|
|
175
|
+
const diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => d.file != null && generated.has(resolve(d.file.fileName)));
|
|
176
|
+
return diagnostics.map((d) => {
|
|
177
|
+
const message = ts.flattenDiagnosticMessageText(d.messageText, '\n');
|
|
178
|
+
const issue = {
|
|
179
|
+
file: d.file.fileName,
|
|
180
|
+
message: `TS${d.code}: ${message}`,
|
|
181
|
+
};
|
|
182
|
+
if (d.start != null) {
|
|
183
|
+
issue.line = d.file.getLineAndCharacterOfPosition(d.start).line + 1;
|
|
184
|
+
}
|
|
185
|
+
return issue;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export async function checkGeneratedFiles(files, options) {
|
|
189
|
+
if (options.mode === 'tsc') {
|
|
190
|
+
// The in-memory type-check works from the emitted code, so it runs even in
|
|
191
|
+
// --dry-run. The only reason to fall back is a missing `typescript` peer.
|
|
192
|
+
const tscIssues = await tscCheck(files);
|
|
193
|
+
if (tscIssues != null) {
|
|
194
|
+
return { ok: tscIssues.length === 0, mode: 'tsc', issues: tscIssues };
|
|
195
|
+
}
|
|
196
|
+
options.logger?.('[ts-procedures-codegen] --check-mode tsc requested but `typescript` could not be resolved. Falling back to the scan check.');
|
|
197
|
+
}
|
|
198
|
+
const issues = scanGeneratedFiles(files);
|
|
199
|
+
return { ok: issues.length === 0, mode: 'scan', issues };
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Renders a failed {@link CheckResult} as a multi-line, human-readable report.
|
|
203
|
+
* Shared by the CLI (stderr) and `generateClient({ validate })` (thrown error)
|
|
204
|
+
* so both surface findings identically.
|
|
205
|
+
*/
|
|
206
|
+
export function formatCheckResult(result) {
|
|
207
|
+
const lines = [
|
|
208
|
+
`[ts-procedures-codegen] Self-check (${result.mode}) found ${result.issues.length} problem(s) in the generated output:`,
|
|
209
|
+
];
|
|
210
|
+
for (const issue of result.issues) {
|
|
211
|
+
const loc = issue.line != null ? `:${issue.line}` : '';
|
|
212
|
+
lines.push(` ${issue.file}${loc} — ${issue.message}`);
|
|
213
|
+
}
|
|
214
|
+
return lines.join('\n');
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=check-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-output.js","sourceRoot":"","sources":["../../src/codegen/check-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { scanGeneratedFiles, checkGeneratedFiles, formatCheckResult } from './check-output.js';
|
|
3
|
+
import { runPipeline } from './pipeline.js';
|
|
4
|
+
import { generateClient } from './index.js';
|
|
5
|
+
import { makeRpcRoute, makeEnvelope } from './__fixtures__/make-envelope.js';
|
|
6
|
+
const file = (path, code) => ({ path, code });
|
|
7
|
+
const validEnvelope = makeEnvelope([
|
|
8
|
+
makeRpcRoute({
|
|
9
|
+
name: 'GetUser',
|
|
10
|
+
scope: 'users',
|
|
11
|
+
jsonSchema: {
|
|
12
|
+
body: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },
|
|
13
|
+
response: { type: 'object', properties: { name: { type: 'string' } }, required: ['name'] },
|
|
14
|
+
},
|
|
15
|
+
}),
|
|
16
|
+
]);
|
|
17
|
+
describe('check-output scan', () => {
|
|
18
|
+
it('does not flag same-named types in different namespaces (no false positive)', () => {
|
|
19
|
+
const code = [
|
|
20
|
+
'export namespace Tasks {',
|
|
21
|
+
' export namespace A {',
|
|
22
|
+
' export type Ref = { a: string }',
|
|
23
|
+
' }',
|
|
24
|
+
' export namespace B {',
|
|
25
|
+
' export type Ref = { b: number }',
|
|
26
|
+
' }',
|
|
27
|
+
'}',
|
|
28
|
+
'',
|
|
29
|
+
].join('\n');
|
|
30
|
+
expect(scanGeneratedFiles([file('/out/tasks.ts', code)])).toEqual([]);
|
|
31
|
+
});
|
|
32
|
+
it('flags a dangling bare type-alias reference (the namespace-mode Root bug)', () => {
|
|
33
|
+
const code = [
|
|
34
|
+
'export namespace Tasks {',
|
|
35
|
+
' export namespace SetLink {',
|
|
36
|
+
' export type Params = Root',
|
|
37
|
+
' }',
|
|
38
|
+
'}',
|
|
39
|
+
'',
|
|
40
|
+
].join('\n');
|
|
41
|
+
const issues = scanGeneratedFiles([file('/out/tasks.ts', code)]);
|
|
42
|
+
expect(issues).toHaveLength(1);
|
|
43
|
+
expect(issues[0].message).toContain('dangling reference');
|
|
44
|
+
expect(issues[0].message).toContain('Root');
|
|
45
|
+
});
|
|
46
|
+
it('does not flag a bare alias that resolves to an import', () => {
|
|
47
|
+
const code = ["import type { Message } from './_models'", 'export type Params = Message', ''].join('\n');
|
|
48
|
+
expect(scanGeneratedFiles([file('/out/a.ts', code)])).toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
it('does not flag a bare alias that resolves to a built-in', () => {
|
|
51
|
+
expect(scanGeneratedFiles([file('/out/a.ts', 'export type Params = string\n')])).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
it('does not flag a bare alias that resolves to a type declared in the same file', () => {
|
|
54
|
+
const code = ['export type Inner = { a: string }', 'export type Params = Inner', ''].join('\n');
|
|
55
|
+
expect(scanGeneratedFiles([file('/out/a.ts', code)])).toEqual([]);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('checkGeneratedFiles orchestration', () => {
|
|
59
|
+
it('returns ok for clean scan', async () => {
|
|
60
|
+
const r = await checkGeneratedFiles([file('/out/a.ts', 'export type X = string\n')], { mode: 'scan' });
|
|
61
|
+
expect(r).toEqual({ ok: true, mode: 'scan', issues: [] });
|
|
62
|
+
});
|
|
63
|
+
it('returns not-ok with issues for broken scan', async () => {
|
|
64
|
+
const r = await checkGeneratedFiles([file('/out/a.ts', 'export type X = Nope\n')], { mode: 'scan' });
|
|
65
|
+
expect(r.ok).toBe(false);
|
|
66
|
+
expect(r.mode).toBe('scan');
|
|
67
|
+
expect(r.issues).toHaveLength(1);
|
|
68
|
+
});
|
|
69
|
+
it('tsc mode type-checks in-memory and passes clean self-resolving output', async () => {
|
|
70
|
+
const r = await checkGeneratedFiles([file('/out/a.ts', 'export type X = string\nexport const y: X = "z"\n')], {
|
|
71
|
+
mode: 'tsc',
|
|
72
|
+
});
|
|
73
|
+
// typescript is a devDependency here, so tsc mode actually runs.
|
|
74
|
+
expect(r.mode).toBe('tsc');
|
|
75
|
+
expect(r.ok).toBe(true);
|
|
76
|
+
});
|
|
77
|
+
it('tsc mode flags a real type error', async () => {
|
|
78
|
+
const r = await checkGeneratedFiles([file('/out/a.ts', 'export const n: number = "not a number"\n')], {
|
|
79
|
+
mode: 'tsc',
|
|
80
|
+
});
|
|
81
|
+
expect(r.mode).toBe('tsc');
|
|
82
|
+
expect(r.ok).toBe(false);
|
|
83
|
+
expect(r.issues.length).toBeGreaterThan(0);
|
|
84
|
+
expect(r.issues[0].message).toMatch(/^TS\d+:/);
|
|
85
|
+
});
|
|
86
|
+
// End-to-end: a real self-contained client (vendored ./_client + ./_types)
|
|
87
|
+
// must type-check via the in-memory host, proving relative imports resolve
|
|
88
|
+
// within the emitted set without anything written to disk.
|
|
89
|
+
it('tsc mode passes real self-contained generated output (dry-run, in-memory)', async () => {
|
|
90
|
+
const envelope = makeEnvelope([
|
|
91
|
+
makeRpcRoute({
|
|
92
|
+
name: 'GetUser',
|
|
93
|
+
scope: 'users',
|
|
94
|
+
jsonSchema: {
|
|
95
|
+
body: { type: 'object', properties: { id: { type: 'string' } }, required: ['id'] },
|
|
96
|
+
response: { type: 'object', properties: { name: { type: 'string' } }, required: ['name'] },
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
]);
|
|
100
|
+
const files = await runPipeline({
|
|
101
|
+
envelope,
|
|
102
|
+
outDir: '/unused-out',
|
|
103
|
+
dryRun: true,
|
|
104
|
+
selfContained: true,
|
|
105
|
+
namespaceTypes: true,
|
|
106
|
+
});
|
|
107
|
+
const r = await checkGeneratedFiles(files, { mode: 'tsc' });
|
|
108
|
+
expect(r.mode).toBe('tsc');
|
|
109
|
+
expect(r.issues).toEqual([]);
|
|
110
|
+
expect(r.ok).toBe(true);
|
|
111
|
+
// The dependency-free scan must also pass the same real output.
|
|
112
|
+
expect(scanGeneratedFiles(files)).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('formatCheckResult', () => {
|
|
116
|
+
it('renders a header and one line per issue', () => {
|
|
117
|
+
const text = formatCheckResult({
|
|
118
|
+
ok: false,
|
|
119
|
+
mode: 'scan',
|
|
120
|
+
issues: [{ file: '/out/tasks.ts', line: 4, message: 'Type alias "Params" references "Root" …' }],
|
|
121
|
+
});
|
|
122
|
+
expect(text).toContain('Self-check (scan) found 1 problem(s)');
|
|
123
|
+
expect(text).toContain('/out/tasks.ts:4 — Type alias "Params" references "Root" …');
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe('generateClient({ validate })', () => {
|
|
127
|
+
it('returns files when valid output passes the scan', async () => {
|
|
128
|
+
const files = await generateClient({
|
|
129
|
+
envelope: validEnvelope,
|
|
130
|
+
outDir: '/unused-out',
|
|
131
|
+
dryRun: true,
|
|
132
|
+
selfContained: true,
|
|
133
|
+
namespaceTypes: true,
|
|
134
|
+
validate: true,
|
|
135
|
+
});
|
|
136
|
+
expect(files.length).toBeGreaterThan(0);
|
|
137
|
+
});
|
|
138
|
+
it('returns files when valid output passes the tsc check', async () => {
|
|
139
|
+
const files = await generateClient({
|
|
140
|
+
envelope: validEnvelope,
|
|
141
|
+
outDir: '/unused-out',
|
|
142
|
+
dryRun: true,
|
|
143
|
+
selfContained: true,
|
|
144
|
+
namespaceTypes: true,
|
|
145
|
+
validate: { mode: 'tsc' },
|
|
146
|
+
});
|
|
147
|
+
expect(files.length).toBeGreaterThan(0);
|
|
148
|
+
});
|
|
149
|
+
it('does not validate when the option is omitted', async () => {
|
|
150
|
+
const files = await generateClient({
|
|
151
|
+
envelope: validEnvelope,
|
|
152
|
+
outDir: '/unused-out',
|
|
153
|
+
dryRun: true,
|
|
154
|
+
selfContained: true,
|
|
155
|
+
namespaceTypes: true,
|
|
156
|
+
});
|
|
157
|
+
expect(files.length).toBeGreaterThan(0);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=check-output.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-output.test.js","sourceRoot":"","sources":["../../src/codegen/check-output.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAG5E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAE5E,MAAM,aAAa,GAAG,YAAY,CAAC;IACjC,YAAY,CAAC;QACX,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,OAAO;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;YAClF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;SAC3F;KACF,CAAC;CACH,CAAC,CAAA;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,IAAI,GAAG;YACX,0BAA0B;YAC1B,wBAAwB;YACxB,qCAAqC;YACrC,KAAK;YACL,wBAAwB;YACxB,qCAAqC;YACrC,KAAK;YACL,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,IAAI,GAAG;YACX,0BAA0B;YAC1B,8BAA8B;YAC9B,+BAA+B;YAC/B,KAAK;YACL,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,CAAC,0CAA0C,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxG,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,IAAI,GAAG,CAAC,mCAAmC,EAAE,4BAA4B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/F,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACtG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACpG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,mDAAmD,CAAC,CAAC,EAAE;YAC5G,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;QACF,iEAAiE;QACjE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,2CAA2C,CAAC,CAAC,EAAE;YACpG,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;QACF,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,2DAA2D;IAC3D,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,QAAQ,GAAG,YAAY,CAAC;YAC5B,YAAY,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;oBAClF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;iBAC3F;aACF,CAAC;SACH,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;YAC9B,QAAQ;YACR,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,gEAAgE;QAChE,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,iBAAiB,CAAC;YAC7B,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;SACjG,CAAC,CAAA;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAA;QAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,2DAA2D,CAAC,CAAA;IACrF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;YACjC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;YACjC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SAC1B,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;YACjC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -47,7 +47,7 @@ export async function emitApiRoute(route, ctx) {
|
|
|
47
47
|
: `${pascal}Errors`;
|
|
48
48
|
const declarations = [];
|
|
49
49
|
let paramsTypeName = 'void';
|
|
50
|
-
let returnTypeName
|
|
50
|
+
let returnTypeName;
|
|
51
51
|
// Track reserved names across all sub-namespaces. Model names are reserved
|
|
52
52
|
// so an ajsc-extracted sub-type can't silently merge with a referenced model.
|
|
53
53
|
const taken = new Set(['Req', 'Response']);
|
|
@@ -151,6 +151,6 @@ export async function emitApiRoute(route, ctx) {
|
|
|
151
151
|
const hasErrorsInjected = ctx.namespaceTypes
|
|
152
152
|
? injectRouteErrors(declarations, pascal, errorUnion, ctx.namespaceTypes)
|
|
153
153
|
: errorUnion !== null; // flat mode already emitted errors above
|
|
154
|
-
return { typeDeclarations: declarations, callable, hasStream: false, hasErrors: hasErrorsInjected };
|
|
154
|
+
return { typeDeclarations: declarations, callable, hasStream: false, hasErrors: hasErrorsInjected, routePascal: pascal };
|
|
155
155
|
}
|
|
156
156
|
//# sourceMappingURL=api-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/api-route.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAkB,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1F;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,OAA2B,EAC3B,UAA8B;IAE9B,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QAC1B,OAAO,WAAW,OAAO,cAAc,UAAU,IAAI,CAAA;IACvD,CAAC;IACD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3B,IAAI,UAAU;QAAE,OAAO,cAAc,UAAU,IAAI,CAAA;IACnD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAsB,EAAE,GAAqB;IAC9E,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAA;IAEtC,mBAAmB;IACnB,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAU,CAAA;IAC1E,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,MAAM,eAAe,GAAa,EAAE,CAAA;IAEpC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAC3B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAC3D,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAgB;QAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;QACvC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE;KAC9C,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAA;IACzC,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrD,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAA;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc;QAClC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,MAAM,SAAS;QACvC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAA;IAErB,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,IAAI,cAAc,GAAG,MAAM,CAAA;IAC3B,IAAI,
|
|
1
|
+
{"version":3,"file":"api-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/api-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,15 @@ export interface RouteChunks {
|
|
|
12
12
|
hasStream: boolean;
|
|
13
13
|
/** True when this route emitted an `Errors` type (drives the `_errors` import at the top of the scope file). */
|
|
14
14
|
hasErrors: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The PascalCase name this route emits its types/namespace under (e.g.
|
|
17
|
+
* `GetTask`). `emitScopeFile` checks these for collisions across routes in
|
|
18
|
+
* the scope — two routes whose names pascalize to the same value (e.g.
|
|
19
|
+
* `get-task` and `getTask`, or `Foo`@v2 and `FooV2`@v1) would otherwise emit
|
|
20
|
+
* merged namespaces / duplicate `export type` declarations and a duplicated
|
|
21
|
+
* callable key, none of which compile.
|
|
22
|
+
*/
|
|
23
|
+
routePascal: string;
|
|
15
24
|
}
|
|
16
25
|
export interface EmitRouteContext {
|
|
17
26
|
ajsc?: AjscOptions;
|
|
@@ -133,6 +133,6 @@ export async function emitHttpStreamRoute(route, ctx) {
|
|
|
133
133
|
` },`,
|
|
134
134
|
].join('\n');
|
|
135
135
|
const hasErrors = injectRouteErrors(declarations, pascal, buildErrorUnion(route.errors, ctx), ctx.namespaceTypes);
|
|
136
|
-
return { typeDeclarations: declarations, callable, hasStream: true, hasErrors };
|
|
136
|
+
return { typeDeclarations: declarations, callable, hasStream: true, hasErrors, routePascal: pascal };
|
|
137
137
|
}
|
|
138
138
|
//# sourceMappingURL=http-stream-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-stream-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/http-stream-route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http-stream-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/http-stream-route.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,6 @@ export async function emitRpcRoute(route, ctx) {
|
|
|
32
32
|
` }),`,
|
|
33
33
|
].join('\n');
|
|
34
34
|
const hasErrorsInjected = injectRouteErrors(declarations, pascal, errorUnion, ctx.namespaceTypes);
|
|
35
|
-
return { typeDeclarations: declarations, callable, hasStream: false, hasErrors: hasErrorsInjected };
|
|
35
|
+
return { typeDeclarations: declarations, callable, hasStream: false, hasErrors: hasErrorsInjected, routePascal: pascal };
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=rpc-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/rpc-route.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE3G,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAsB,EAAE,GAAqB;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAEzD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;QACvD,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACtD,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;KAC7D,EAAE,GAAG,CAAC,CAAA;IAEP,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAA;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAEjF,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrD,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAA;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc;QAClC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,MAAM,SAAS;QACvC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAA;IACrB,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,4BAA4B,cAAc,KAAK,gBAAgB,KAAK,SAAS,GAAG;QAClF,CAAC,CAAC,uBAAuB,cAAc,KAAK,gBAAgB,GAAG,CAAA;IAEjE,MAAM,QAAQ,GAAG;QACf,kBAAkB,CAAC;YACjB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YACvC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SACxC,CAAC;QACF,OAAO,MAAM,KAAK,UAAU,IAAI;QAChC,gBAAgB,MAAM,IAAI;QAC1B,iBAAiB,QAAQ,IAAI;QAC7B,gBAAgB,KAAK,CAAC,IAAI,IAAI;QAC9B,kBAAkB,KAAK,CAAC,MAAM,IAAI;QAClC,oBAAoB;QACpB,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IAEjG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"rpc-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/rpc-route.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE3G,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAsB,EAAE,GAAqB;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAEzD,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;QACvD,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACtD,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;KAC7D,EAAE,GAAG,CAAC,CAAA;IAEP,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,CAAA;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAEjF,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrD,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAA;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc;QAClC,CAAC,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,MAAM,SAAS;QACvC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAA;IACrB,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC,4BAA4B,cAAc,KAAK,gBAAgB,KAAK,SAAS,GAAG;QAClF,CAAC,CAAC,uBAAuB,cAAc,KAAK,gBAAgB,GAAG,CAAA;IAEjE,MAAM,QAAQ,GAAG;QACf,kBAAkB,CAAC;YACjB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YACvC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SACxC,CAAC;QACF,OAAO,MAAM,KAAK,UAAU,IAAI;QAChC,gBAAgB,MAAM,IAAI;QAC1B,iBAAiB,QAAQ,IAAI;QAC7B,gBAAgB,KAAK,CAAC,IAAI,IAAI;QAC9B,kBAAkB,KAAK,CAAC,MAAM,IAAI;QAClC,oBAAoB;QACpB,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IAEjG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;AAC1H,CAAC"}
|
|
@@ -49,6 +49,13 @@ export async function emitScopeFile(group, options) {
|
|
|
49
49
|
const callables = [];
|
|
50
50
|
let hasStream = false;
|
|
51
51
|
let scopeHasErrors = false;
|
|
52
|
+
// routePascal → the first route name that claimed it. Two routes whose names
|
|
53
|
+
// pascalize to the same value (e.g. `get-task`/`getTask`, or `Foo`@v2 and
|
|
54
|
+
// `FooV2`@v1) would emit merged namespaces, duplicate `export type`
|
|
55
|
+
// declarations, and a duplicated callable key — none of which compile. We
|
|
56
|
+
// fail fast with an actionable message rather than silently emit a broken
|
|
57
|
+
// scope file.
|
|
58
|
+
const pascalToName = new Map();
|
|
52
59
|
for (const route of group.routes) {
|
|
53
60
|
let chunks;
|
|
54
61
|
const kind = route.kind ?? inferRouteKind(route);
|
|
@@ -71,8 +78,15 @@ export async function emitScopeFile(group, options) {
|
|
|
71
78
|
}
|
|
72
79
|
catch (err) {
|
|
73
80
|
const msg = err instanceof Error ? err.message : String(err);
|
|
74
|
-
throw new Error(`[ts-procedures-codegen] Failed to emit route "${route.name}" (kind: ${kind}, scope: ${group.scopeKey}): ${msg}
|
|
81
|
+
throw new Error(`[ts-procedures-codegen] Failed to emit route "${route.name}" (kind: ${kind}, scope: ${group.scopeKey}): ${msg}`, { cause: err });
|
|
75
82
|
}
|
|
83
|
+
const prior = pascalToName.get(chunks.routePascal);
|
|
84
|
+
if (prior != null) {
|
|
85
|
+
throw new Error(`[ts-procedures-codegen] Scope "${group.scopeKey}": routes "${prior}" and "${route.name}" both generate the name "${chunks.routePascal}", ` +
|
|
86
|
+
`whose generated types and callable would collide (duplicate identifier / duplicate object key). ` +
|
|
87
|
+
`Rename one of the routes so they pascalize to distinct names.`);
|
|
88
|
+
}
|
|
89
|
+
pascalToName.set(chunks.routePascal, route.name);
|
|
76
90
|
allTypeDeclarations.push(...chunks.typeDeclarations);
|
|
77
91
|
callables.push(chunks.callable);
|
|
78
92
|
if (chunks.hasStream)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-file.js","sourceRoot":"","sources":["../../../src/codegen/emit/scope-file.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AA8B5D,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,cAAc,CAAC,KAA8B;IACpD,IAAI,YAAY,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,aAAa,CAAA;IACtE,IAAI,YAAY,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAA;IAC1C,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,KAAK,CAAA;IACrC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,OAA0B;IAE1B,MAAM,EACJ,IAAI,EAAE,QAAQ,EACd,gBAAgB,GAAG,sBAAsB,EACzC,cAAc,GAAG,KAAK,EACtB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,aAAa,GACd,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC1C,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,QAAQ;QACd,cAAc;QACd,WAAW,EAAE,MAAM;QACnB,WAAW;QACX,SAAS;QACT,aAAa;QACb,gBAAgB;KACjB,CAAA;IAED,MAAM,mBAAmB,GAAa,EAAE,CAAA;IACxC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,cAAc,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"scope-file.js","sourceRoot":"","sources":["../../../src/codegen/emit/scope-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,6 @@ export async function emitStreamRoute(route, ctx) {
|
|
|
57
57
|
` },`,
|
|
58
58
|
].join('\n');
|
|
59
59
|
const hasErrors = injectRouteErrors(declarations, pascal, buildErrorUnion(route.errors, ctx), ctx.namespaceTypes);
|
|
60
|
-
return { typeDeclarations: declarations, callable, hasStream: true, hasErrors };
|
|
60
|
+
return { typeDeclarations: declarations, callable, hasStream: true, hasErrors, routePascal: pascal };
|
|
61
61
|
}
|
|
62
62
|
//# sourceMappingURL=stream-route.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/stream-route.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,SAAS,aAAa,CAAC,MAA+B;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAA;IAC/B,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC/E,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,MAA+B;IAE/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAqD,CAAA;IAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,UAAU,IAAI,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAyB,EAAE,GAAqB;IACpF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAEzD,qCAAqC;IACrC,IAAI,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA;IAC5C,IAAI,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACpF,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;QACvD,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;QACxD,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;QAC3C,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;KAC7D,EAAE,GAAG,CAAC,CAAA;IAEP,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAEjF,MAAM,QAAQ,GAAG;QACf,kBAAkB,CAAC;YACjB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAChE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO,MAAM,YAAY,cAAc,kDAAkD,aAAa,KAAK,cAAc,KAAK;QAC9H,8BAA8B,aAAa,KAAK,cAAc,KAAK;QACnE,kBAAkB,MAAM,IAAI;QAC5B,mBAAmB,QAAQ,IAAI;QAC/B,kBAAkB,KAAK,CAAC,IAAI,IAAI;QAChC,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;QACjD,yBAAyB;QACzB,wBAAwB,KAAK,CAAC,UAAU,IAAI;QAC5C,iBAAiB;QACjB,mBAAmB;QACnB,QAAQ;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,SAAS,GAAG,iBAAiB,CACjC,YAAY,EACZ,MAAM,EACN,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,GAAG,CAAC,cAAc,CACnB,CAAA;IAED,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"stream-route.js","sourceRoot":"","sources":["../../../src/codegen/emit/stream-route.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE3G;;;GAGG;AACH,SAAS,aAAa,CAAC,MAA+B;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAA;IAC/B,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC/E,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,MAA+B;IAE/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAqD,CAAA;IAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,UAAU,IAAI,MAAM,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAyB,EAAE,GAAqB;IACpF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAEzD,qCAAqC;IACrC,IAAI,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA;IAC5C,IAAI,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACpF,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;QACvD,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;QACxD,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;QAC3C,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;KAC7D,EAAE,GAAG,CAAC,CAAA;IAEP,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAA;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAEjF,MAAM,QAAQ,GAAG;QACf,kBAAkB,CAAC;YACjB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAChE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,OAAO,MAAM,YAAY,cAAc,kDAAkD,aAAa,KAAK,cAAc,KAAK;QAC9H,8BAA8B,aAAa,KAAK,cAAc,KAAK;QACnE,kBAAkB,MAAM,IAAI;QAC5B,mBAAmB,QAAQ,IAAI;QAC/B,kBAAkB,KAAK,CAAC,IAAI,IAAI;QAChC,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;QACjD,yBAAyB;QACzB,wBAAwB,KAAK,CAAC,UAAU,IAAI;QAC5C,iBAAiB;QACjB,mBAAmB;QACnB,QAAQ;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,SAAS,GAAG,iBAAiB,CACjC,YAAY,EACZ,MAAM,EACN,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,GAAG,CAAC,cAAc,CACnB,CAAA;IAED,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA;AACtG,CAAC"}
|
|
@@ -83,7 +83,7 @@ describe('generated _errors.ts — runtime behavior', () => {
|
|
|
83
83
|
const err = e;
|
|
84
84
|
const stdout = err.stdout?.toString() ?? '';
|
|
85
85
|
const stderr = err.stderr?.toString() ?? '';
|
|
86
|
-
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}
|
|
86
|
+
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`, { cause: e });
|
|
87
87
|
}
|
|
88
88
|
// Dynamic import of the compiled output.
|
|
89
89
|
const errorsUrl = `file://${join(outDir, 'out', '_errors.js')}`;
|
|
@@ -144,7 +144,7 @@ describe('generated _errors.ts — runtime behavior', () => {
|
|
|
144
144
|
const err = e;
|
|
145
145
|
const stdout = err.stdout?.toString() ?? '';
|
|
146
146
|
const stderr = err.stderr?.toString() ?? '';
|
|
147
|
-
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}
|
|
147
|
+
throw new Error(`tsc failed in ${outDir}:\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`, { cause: e });
|
|
148
148
|
}
|
|
149
149
|
const errorsUrl = `file://${join(outDir, 'out', '_errors.js')}`;
|
|
150
150
|
const mod = await import(errorsUrl);
|