@apollo-deploy/tesseract 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/typescript/emitter/emitSchema.d.ts +12 -0
- package/dist/adapters/typescript/emitter/emitSchema.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/emitSchema.js +93 -0
- package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +10 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +81 -0
- package/dist/adapters/typescript/emitter/emitTypeScriptModels.js.map +1 -0
- package/dist/adapters/typescript/emitter/importCollector.d.ts +6 -0
- package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/importCollector.js +39 -0
- package/dist/adapters/typescript/emitter/importCollector.js.map +1 -0
- package/dist/adapters/typescript/emitter/nameAllocator.d.ts +5 -0
- package/dist/adapters/typescript/emitter/nameAllocator.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/nameAllocator.js +13 -0
- package/dist/adapters/typescript/emitter/nameAllocator.js.map +1 -0
- package/dist/adapters/typescript/emitter/parsers.d.ts +7 -0
- package/dist/adapters/typescript/emitter/parsers.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/parsers.js +73 -0
- package/dist/adapters/typescript/emitter/parsers.js.map +1 -0
- package/dist/adapters/typescript/emitter/typeHoister.d.ts +6 -0
- package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -0
- package/dist/adapters/typescript/emitter/typeHoister.js +47 -0
- package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -0
- package/dist/adapters/typescript/index.d.ts +3 -3
- package/dist/adapters/typescript/index.d.ts.map +1 -1
- package/dist/adapters/typescript/index.js +131 -115
- package/dist/adapters/typescript/index.js.map +1 -1
- package/dist/adapters/typescript/shared.d.ts +12 -5
- package/dist/adapters/typescript/shared.d.ts.map +1 -1
- package/dist/adapters/typescript/shared.js +92 -40
- package/dist/adapters/typescript/shared.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +119 -68
- package/dist/cli.js.map +1 -1
- package/dist/fastify.d.ts +26 -0
- package/dist/fastify.d.ts.map +1 -1
- package/dist/fastify.js +33 -5
- package/dist/fastify.js.map +1 -1
- package/dist/helpers/handlebars.d.ts +6 -2
- package/dist/helpers/handlebars.d.ts.map +1 -1
- package/dist/helpers/handlebars.js +157 -121
- package/dist/helpers/handlebars.js.map +1 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -43
- package/dist/index.js.map +1 -1
- package/dist/pipeline/enrich.d.ts +11 -3
- package/dist/pipeline/enrich.d.ts.map +1 -1
- package/dist/pipeline/enrich.js +180 -154
- package/dist/pipeline/enrich.js.map +1 -1
- package/dist/pipeline/intake.js +5 -2
- package/dist/pipeline/intake.js.map +1 -1
- package/dist/pipeline/write.d.ts +13 -3
- package/dist/pipeline/write.d.ts.map +1 -1
- package/dist/pipeline/write.js +111 -32
- package/dist/pipeline/write.js.map +1 -1
- package/dist/types/ir.d.ts +64 -40
- package/dist/types/ir.d.ts.map +1 -1
- package/dist/types/ir.js +6 -2
- package/dist/types/ir.js.map +1 -1
- package/dist/utils/naming.d.ts +0 -4
- package/dist/utils/naming.d.ts.map +1 -1
- package/dist/utils/naming.js +294 -182
- package/dist/utils/naming.js.map +1 -1
- package/package.json +8 -1
- package/templates/typescript/domain.hbs +1 -1
- package/templates/typescript/types.hbs +7 -1
package/dist/cli.js
CHANGED
|
@@ -1,42 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Tesseract CLI — manifest-first SDK generator.
|
|
3
|
+
* Tesseract CLI — manifest-first SDK generator (refactored, scalable).
|
|
4
4
|
*/
|
|
5
|
-
import { Command } from
|
|
6
|
-
import { readFileSync } from
|
|
7
|
-
import { resolve } from
|
|
8
|
-
import { fileURLToPath } from
|
|
9
|
-
import {
|
|
10
|
-
import { generate } from
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
|
+
import { resolve, join, dirname } from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { spawnSync } from "node:child_process";
|
|
10
|
+
import { generate } from "./index.js";
|
|
11
11
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
.option('--client-name <name>', 'Override the client class name')
|
|
26
|
-
.option('--base-url <url>', 'Override the base URL')
|
|
27
|
-
.option('--dry-run', 'Preview output without writing files')
|
|
28
|
-
.option('--check', 'Exit non-zero if generated output is out of date')
|
|
29
|
-
.option('--sdk-style <style>', 'SDK style: functional (default) or class (Resend-style: new MySDK("key"))')
|
|
30
|
-
.option('--client-type <type>', 'Client type: internal (full options, default) or public (auth key only, baseUrl baked in)')
|
|
31
|
-
.action(async (opts) => {
|
|
32
|
-
if (opts.dryRun && opts.check) {
|
|
33
|
-
console.error('\n✗ --dry-run and --check are mutually exclusive');
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
const config = {
|
|
12
|
+
/**
|
|
13
|
+
* Package metadata loader (isolated for testability + reuse)
|
|
14
|
+
*/
|
|
15
|
+
function loadPackageVersion() {
|
|
16
|
+
const pkgPath = join(__dirname, "..", "package.json");
|
|
17
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
18
|
+
return pkg.version;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Shared config builder
|
|
22
|
+
*/
|
|
23
|
+
function buildConfig(opts) {
|
|
24
|
+
return {
|
|
37
25
|
input: resolve(opts.input),
|
|
38
26
|
output: resolve(opts.output),
|
|
39
|
-
language:
|
|
27
|
+
language: "typescript",
|
|
40
28
|
packageName: opts.name,
|
|
41
29
|
packageVersion: opts.packageVersion,
|
|
42
30
|
clientName: opts.clientName,
|
|
@@ -46,59 +34,122 @@ program
|
|
|
46
34
|
sdkStyle: opts.sdkStyle,
|
|
47
35
|
clientType: opts.clientType,
|
|
48
36
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Handles CLI output formatting centrally
|
|
40
|
+
*/
|
|
41
|
+
function printWarnings(warnings) {
|
|
42
|
+
if (!warnings.length)
|
|
43
|
+
return;
|
|
44
|
+
console.warn("\nWarnings:");
|
|
45
|
+
for (const w of warnings) {
|
|
46
|
+
console.warn(` ⚠ ${w}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function printFileList(files, prefix = " - ") {
|
|
50
|
+
for (const file of files) {
|
|
51
|
+
console.log(`${prefix}${file}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Handles result modes in a unified way
|
|
56
|
+
*/
|
|
57
|
+
function handleResult(opts, result) {
|
|
58
|
+
printWarnings(result.warnings);
|
|
59
|
+
switch (result.mode) {
|
|
60
|
+
case "check":
|
|
57
61
|
if (result.hasChanges) {
|
|
58
62
|
console.error(`\n✗ Generated output is out of date: ${result.filesWritten} files would change`);
|
|
59
|
-
|
|
60
|
-
console.error(` - ${file}`);
|
|
61
|
-
}
|
|
63
|
+
printFileList(result.changedFiles);
|
|
62
64
|
process.exit(1);
|
|
63
65
|
}
|
|
64
66
|
console.log(`\n✓ Generated output is up to date → ${opts.output}`);
|
|
65
67
|
return;
|
|
66
|
-
|
|
67
|
-
if (result.mode === 'dry-run') {
|
|
68
|
+
case "dry-run":
|
|
68
69
|
console.log(`\n✓ Dry run complete: ${result.filesWritten} files would change → ${opts.output}`);
|
|
69
|
-
if (result.changedFiles.length
|
|
70
|
-
|
|
71
|
-
console.log(` - ${file}`);
|
|
72
|
-
}
|
|
70
|
+
if (result.changedFiles.length) {
|
|
71
|
+
printFileList(result.changedFiles);
|
|
73
72
|
}
|
|
74
73
|
if (result.filesSkipped > 0) {
|
|
75
74
|
console.log(` ${result.filesSkipped} files unchanged`);
|
|
76
75
|
}
|
|
77
76
|
return;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
default:
|
|
78
|
+
console.log(`\n✓ Generated ${result.filesWritten} files → ${opts.output}`);
|
|
79
|
+
if (result.filesSkipped > 0) {
|
|
80
|
+
console.log(` ${result.filesSkipped} files unchanged (skipped)`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Ensures mutually exclusive flags are valid
|
|
86
|
+
*/
|
|
87
|
+
function validateFlags(opts) {
|
|
88
|
+
if (opts.dryRun && opts.check) {
|
|
89
|
+
console.error("\n✗ --dry-run and --check are mutually exclusive");
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Core generate action
|
|
95
|
+
*/
|
|
96
|
+
async function handleGenerate(opts) {
|
|
97
|
+
validateFlags(opts);
|
|
98
|
+
const config = buildConfig(opts);
|
|
99
|
+
try {
|
|
100
|
+
const result = await generate(config);
|
|
101
|
+
handleResult(opts, result);
|
|
83
102
|
}
|
|
84
103
|
catch (err) {
|
|
85
|
-
|
|
104
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
105
|
+
console.error(`\n✗ Generation failed: ${message}`);
|
|
86
106
|
process.exit(1);
|
|
87
107
|
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
.argument('<app>', 'Path to the compiled app entry-point (e.g. dist/app.js)')
|
|
94
|
-
.action(async (appPath) => {
|
|
95
|
-
const { spawnSync } = await import('node:child_process');
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Run command handler (isolated execution layer)
|
|
111
|
+
*/
|
|
112
|
+
function handleRun(appPath) {
|
|
96
113
|
const resolved = resolve(appPath);
|
|
97
114
|
const result = spawnSync(process.execPath, [resolved], {
|
|
98
|
-
env: { ...process.env, TESSERACT_GENERATE:
|
|
99
|
-
stdio:
|
|
115
|
+
env: { ...process.env, TESSERACT_GENERATE: "1" },
|
|
116
|
+
stdio: "inherit",
|
|
100
117
|
});
|
|
101
118
|
process.exit(result.status ?? 0);
|
|
102
|
-
}
|
|
103
|
-
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* CLI bootstrap
|
|
122
|
+
*/
|
|
123
|
+
function createCLI() {
|
|
124
|
+
const program = new Command();
|
|
125
|
+
const version = loadPackageVersion();
|
|
126
|
+
program
|
|
127
|
+
.name("tesseract")
|
|
128
|
+
.description("Manifest-first SDK generator — turns sdk-manifold/v1 manifests into production-ready TypeScript SDKs")
|
|
129
|
+
.version(version);
|
|
130
|
+
program
|
|
131
|
+
.command("generate")
|
|
132
|
+
.description("Generate an SDK from an sdk-manifold/v1 manifest file")
|
|
133
|
+
.requiredOption("-i, --input <path>", "Path to the sdk-manifold/v1 manifest JSON file")
|
|
134
|
+
.requiredOption("-o, --output <dir>", "Output directory for the generated SDK")
|
|
135
|
+
.option("-n, --name <name>", "Override the SDK package name")
|
|
136
|
+
.option("--package-version <version>", "Override the generated package version")
|
|
137
|
+
.option("--client-name <name>", "Override the client class name")
|
|
138
|
+
.option("--base-url <url>", "Override the base URL")
|
|
139
|
+
.option("--dry-run", "Preview output without writing files")
|
|
140
|
+
.option("--check", "Exit non-zero if generated output is out of date")
|
|
141
|
+
.option("--sdk-style <style>", 'SDK style: functional (default) or class (Resend-style: new MySDK("key"))')
|
|
142
|
+
.option("--client-type <type>", "Client type: internal (full options, default) or public (auth key only, baseUrl baked in)")
|
|
143
|
+
.action(handleGenerate);
|
|
144
|
+
program
|
|
145
|
+
.command("run")
|
|
146
|
+
.description([
|
|
147
|
+
"Boot an instrumented Fastify app with TESSERACT_GENERATE=1 to collect routes and generate an SDK.",
|
|
148
|
+
"The app must register `tesseractPlugin` from `@apollo-deploy/tesseract/fastify`.",
|
|
149
|
+
].join("\n"))
|
|
150
|
+
.argument("<app>", "Path to the compiled app entry-point (e.g. dist/app.js)")
|
|
151
|
+
.action(handleRun);
|
|
152
|
+
return program;
|
|
153
|
+
}
|
|
154
|
+
createCLI().parse();
|
|
104
155
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/fastify.d.ts
CHANGED
|
@@ -74,6 +74,25 @@ export interface TesseractPluginOptions {
|
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
76
|
schemaConverter?: (schema: unknown) => unknown;
|
|
77
|
+
/**
|
|
78
|
+
* Zod v4 global registry — used to emit specific named re-exports from
|
|
79
|
+
* `schemaPackage` instead of a wildcard `export type *`.
|
|
80
|
+
*
|
|
81
|
+
* Pass `z.globalRegistry` from your app so Tesseract can map Zod schemas
|
|
82
|
+
* that have a registered id to their canonical type name, replacing inline
|
|
83
|
+
* expansion with a bare `$ref` that intake resolves as an external type.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { z, toJSONSchema } from 'zod';
|
|
88
|
+
* app.register(tesseractPlugin, {
|
|
89
|
+
* ...,
|
|
90
|
+
* schemaConverter: toJSONSchema,
|
|
91
|
+
* zodGlobalRegistry: z.globalRegistry,
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
zodGlobalRegistry?: ZodGlobalRegistry;
|
|
77
96
|
/**
|
|
78
97
|
* `'public'` strips routes marked `internal: true` from the SDK.
|
|
79
98
|
* `'internal'` includes all routes. Defaults to `'internal'`.
|
|
@@ -112,6 +131,12 @@ export interface TesseractPluginOptions {
|
|
|
112
131
|
export declare function sdkDomain(fastify: FastifyInstance, config: Omit<SDKModuleConfig, 'prefix'> & {
|
|
113
132
|
prefix?: string;
|
|
114
133
|
}): void;
|
|
134
|
+
/** Minimal interface for z.globalRegistry — only what we need. */
|
|
135
|
+
interface ZodGlobalRegistry {
|
|
136
|
+
get(schema: unknown): {
|
|
137
|
+
id?: string;
|
|
138
|
+
} | undefined;
|
|
139
|
+
}
|
|
115
140
|
/**
|
|
116
141
|
* Fastify plugin that collects SDK-annotated routes and generates an SDK
|
|
117
142
|
* when `TESSERACT_GENERATE=1` is set in the environment.
|
|
@@ -132,4 +157,5 @@ export declare function sdkDomain(fastify: FastifyInstance, config: Omit<SDKModu
|
|
|
132
157
|
* ```
|
|
133
158
|
*/
|
|
134
159
|
export declare const tesseractPlugin: FastifyPluginAsync<TesseractPluginOptions>;
|
|
160
|
+
export {};
|
|
135
161
|
//# sourceMappingURL=fastify.d.ts.map
|
package/dist/fastify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS7E,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,YAAY;QACpB,wEAAwE;QACxE,GAAG,CAAC,EAAE,cAAc,CAAC;KACtB;IACD,UAAU,qBAAqB;QAC7B,wEAAwE;QACxE,GAAG,CAAC,EAAE,cAAc,CAAC;KACtB;CACF;AAYD,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;CACnC;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,IAAI,CAGN;
|
|
1
|
+
{"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS7E,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,YAAY;QACpB,wEAAwE;QACxE,GAAG,CAAC,EAAE,cAAc,CAAC;KACtB;IACD,UAAU,qBAAqB;QAC7B,wEAAwE;QACxE,GAAG,CAAC,EAAE,cAAc,CAAC;KACtB;CACF;AAYD,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAC/C;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;CACnC;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,IAAI,CAGN;AASD,kEAAkE;AAClE,UAAU,iBAAiB;IACzB,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACnD;AAwJD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,4CAG1B,CAAC"}
|
package/dist/fastify.js
CHANGED
|
@@ -53,8 +53,19 @@ export function sdkDomain(fastify, config) {
|
|
|
53
53
|
function isZodSchema(value) {
|
|
54
54
|
return !!value && typeof value === 'object' && '_zod' in value;
|
|
55
55
|
}
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Convert a single schema value. When `zodRegistry` is provided and the schema
|
|
58
|
+
* has a registered global id, emit a bare `$ref` to that id instead of
|
|
59
|
+
* expanding inline. This lets `intake.ts` treat it as an external type from
|
|
60
|
+
* the configured `schemaPackage`.
|
|
61
|
+
*/
|
|
62
|
+
function convertSchemaValue(value, toJSONSchema, zodRegistry) {
|
|
57
63
|
if (isZodSchema(value)) {
|
|
64
|
+
if (zodRegistry) {
|
|
65
|
+
const entry = zodRegistry.get(value);
|
|
66
|
+
if (entry?.id)
|
|
67
|
+
return { $ref: entry.id };
|
|
68
|
+
}
|
|
58
69
|
try {
|
|
59
70
|
return toJSONSchema(value);
|
|
60
71
|
}
|
|
@@ -64,7 +75,15 @@ function convertSchemaValue(value, toJSONSchema) {
|
|
|
64
75
|
}
|
|
65
76
|
return value;
|
|
66
77
|
}
|
|
67
|
-
|
|
78
|
+
// Schema fields whose values should be treated as typed payloads — eligible for
|
|
79
|
+
// registry-based $ref replacement. All registered Zod schemas in these fields
|
|
80
|
+
// are replaced with a bare $ref so intake.ts can create external type stubs and
|
|
81
|
+
// emit specific named imports instead of wildcard re-exports.
|
|
82
|
+
//
|
|
83
|
+
// Note: headers are always expanded inline since they are rarely modelled as
|
|
84
|
+
// top-level registered schemas and Tesseract reads individual header names.
|
|
85
|
+
const REGISTRY_ELIGIBLE_FIELDS = new Set(['body', 'querystring', 'query', 'params']);
|
|
86
|
+
function convertRouteSchema(schema, toJSONSchema, zodRegistry) {
|
|
68
87
|
if (!schema)
|
|
69
88
|
return schema;
|
|
70
89
|
const result = {};
|
|
@@ -72,11 +91,15 @@ function convertRouteSchema(schema, toJSONSchema) {
|
|
|
72
91
|
if (key === 'response' && val && typeof val === 'object') {
|
|
73
92
|
const serialized = {};
|
|
74
93
|
for (const [status, responseSchema] of Object.entries(val)) {
|
|
75
|
-
serialized[status] = convertSchemaValue(responseSchema, toJSONSchema);
|
|
94
|
+
serialized[status] = convertSchemaValue(responseSchema, toJSONSchema, zodRegistry);
|
|
76
95
|
}
|
|
77
96
|
result[key] = serialized;
|
|
78
97
|
}
|
|
98
|
+
else if (REGISTRY_ELIGIBLE_FIELDS.has(key)) {
|
|
99
|
+
result[key] = convertSchemaValue(val, toJSONSchema, zodRegistry);
|
|
100
|
+
}
|
|
79
101
|
else {
|
|
102
|
+
// headers — always expand inline
|
|
80
103
|
result[key] = convertSchemaValue(val, toJSONSchema);
|
|
81
104
|
}
|
|
82
105
|
}
|
|
@@ -112,11 +135,16 @@ const _tesseractPlugin = async (fastify, opts) => {
|
|
|
112
135
|
// Convert Zod v4 schemas to JSON Schema (dynamic import so Tesseract doesn't
|
|
113
136
|
// need zod as a hard dependency — it resolves via the host app's node_modules).
|
|
114
137
|
let resolvedRoutes = collectedRoutes;
|
|
138
|
+
// When a schemaPackage is configured and the user provides their z.globalRegistry,
|
|
139
|
+
// body/response schemas with a registered id emit a bare $ref instead of being
|
|
140
|
+
// expanded inline. This lets intake.ts create correct external type stubs and
|
|
141
|
+
// emit specific named exports instead of a wildcard re-export.
|
|
142
|
+
const zodRegistry = opts.schemaPackage ? opts.zodGlobalRegistry : undefined;
|
|
115
143
|
const toJSONSchema = opts.schemaConverter;
|
|
116
144
|
if (typeof toJSONSchema === 'function') {
|
|
117
145
|
resolvedRoutes = collectedRoutes.map((r) => ({
|
|
118
146
|
...r,
|
|
119
|
-
schema: convertRouteSchema(r.schema, toJSONSchema),
|
|
147
|
+
schema: convertRouteSchema(r.schema, toJSONSchema, zodRegistry),
|
|
120
148
|
}));
|
|
121
149
|
}
|
|
122
150
|
else {
|
|
@@ -128,7 +156,7 @@ const _tesseractPlugin = async (fastify, opts) => {
|
|
|
128
156
|
if (typeof zodConverter === 'function') {
|
|
129
157
|
resolvedRoutes = collectedRoutes.map((r) => ({
|
|
130
158
|
...r,
|
|
131
|
-
schema: convertRouteSchema(r.schema, zodConverter),
|
|
159
|
+
schema: convertRouteSchema(r.schema, zodConverter, zodRegistry),
|
|
132
160
|
}));
|
|
133
161
|
}
|
|
134
162
|
}
|
package/dist/fastify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIhC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Handlebars helpers + template engine.
|
|
3
|
-
*
|
|
3
|
+
* Optimized for:
|
|
4
|
+
* - Reduced helper registration overhead
|
|
5
|
+
* - Faster signature generation (no repeated allocations)
|
|
6
|
+
* - Safer type handling for IR operations
|
|
7
|
+
* - Better import resolution accuracy
|
|
4
8
|
*/
|
|
5
|
-
import type { Operation } from
|
|
9
|
+
import type { Operation } from "../types/ir.js";
|
|
6
10
|
type CompiledTemplate = HandlebarsTemplateDelegate;
|
|
7
11
|
export declare function getTemplate(language: string, name: string): CompiledTemplate;
|
|
8
12
|
export declare function registerHelpers(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlebars.d.ts","sourceRoot":"","sources":["../../src/helpers/handlebars.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"handlebars.d.ts","sourceRoot":"","sources":["../../src/helpers/handlebars.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAS3D,KAAK,gBAAgB,GAAG,0BAA0B,CAAC;AAGnD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAqB5E;AAQD,wBAAgB,eAAe,IAAI,IAAI,CAuFtC;AAyCD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAE1D;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAElE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAUxD;AAyCD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,MAAM,EAAE,CAoBV"}
|