@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.
Files changed (68) hide show
  1. package/dist/adapters/typescript/emitter/emitSchema.d.ts +12 -0
  2. package/dist/adapters/typescript/emitter/emitSchema.d.ts.map +1 -0
  3. package/dist/adapters/typescript/emitter/emitSchema.js +93 -0
  4. package/dist/adapters/typescript/emitter/emitSchema.js.map +1 -0
  5. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts +10 -0
  6. package/dist/adapters/typescript/emitter/emitTypeScriptModels.d.ts.map +1 -0
  7. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js +81 -0
  8. package/dist/adapters/typescript/emitter/emitTypeScriptModels.js.map +1 -0
  9. package/dist/adapters/typescript/emitter/importCollector.d.ts +6 -0
  10. package/dist/adapters/typescript/emitter/importCollector.d.ts.map +1 -0
  11. package/dist/adapters/typescript/emitter/importCollector.js +39 -0
  12. package/dist/adapters/typescript/emitter/importCollector.js.map +1 -0
  13. package/dist/adapters/typescript/emitter/nameAllocator.d.ts +5 -0
  14. package/dist/adapters/typescript/emitter/nameAllocator.d.ts.map +1 -0
  15. package/dist/adapters/typescript/emitter/nameAllocator.js +13 -0
  16. package/dist/adapters/typescript/emitter/nameAllocator.js.map +1 -0
  17. package/dist/adapters/typescript/emitter/parsers.d.ts +7 -0
  18. package/dist/adapters/typescript/emitter/parsers.d.ts.map +1 -0
  19. package/dist/adapters/typescript/emitter/parsers.js +73 -0
  20. package/dist/adapters/typescript/emitter/parsers.js.map +1 -0
  21. package/dist/adapters/typescript/emitter/typeHoister.d.ts +6 -0
  22. package/dist/adapters/typescript/emitter/typeHoister.d.ts.map +1 -0
  23. package/dist/adapters/typescript/emitter/typeHoister.js +47 -0
  24. package/dist/adapters/typescript/emitter/typeHoister.js.map +1 -0
  25. package/dist/adapters/typescript/index.d.ts +3 -3
  26. package/dist/adapters/typescript/index.d.ts.map +1 -1
  27. package/dist/adapters/typescript/index.js +131 -115
  28. package/dist/adapters/typescript/index.js.map +1 -1
  29. package/dist/adapters/typescript/shared.d.ts +12 -5
  30. package/dist/adapters/typescript/shared.d.ts.map +1 -1
  31. package/dist/adapters/typescript/shared.js +92 -40
  32. package/dist/adapters/typescript/shared.js.map +1 -1
  33. package/dist/cli.d.ts +1 -1
  34. package/dist/cli.js +119 -68
  35. package/dist/cli.js.map +1 -1
  36. package/dist/fastify.d.ts +26 -0
  37. package/dist/fastify.d.ts.map +1 -1
  38. package/dist/fastify.js +33 -5
  39. package/dist/fastify.js.map +1 -1
  40. package/dist/helpers/handlebars.d.ts +6 -2
  41. package/dist/helpers/handlebars.d.ts.map +1 -1
  42. package/dist/helpers/handlebars.js +157 -121
  43. package/dist/helpers/handlebars.js.map +1 -1
  44. package/dist/index.d.ts +13 -11
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +75 -43
  47. package/dist/index.js.map +1 -1
  48. package/dist/pipeline/enrich.d.ts +11 -3
  49. package/dist/pipeline/enrich.d.ts.map +1 -1
  50. package/dist/pipeline/enrich.js +180 -154
  51. package/dist/pipeline/enrich.js.map +1 -1
  52. package/dist/pipeline/intake.js +5 -2
  53. package/dist/pipeline/intake.js.map +1 -1
  54. package/dist/pipeline/write.d.ts +13 -3
  55. package/dist/pipeline/write.d.ts.map +1 -1
  56. package/dist/pipeline/write.js +111 -32
  57. package/dist/pipeline/write.js.map +1 -1
  58. package/dist/types/ir.d.ts +64 -40
  59. package/dist/types/ir.d.ts.map +1 -1
  60. package/dist/types/ir.js +6 -2
  61. package/dist/types/ir.js.map +1 -1
  62. package/dist/utils/naming.d.ts +0 -4
  63. package/dist/utils/naming.d.ts.map +1 -1
  64. package/dist/utils/naming.js +294 -182
  65. package/dist/utils/naming.js.map +1 -1
  66. package/package.json +8 -1
  67. package/templates/typescript/domain.hbs +1 -1
  68. 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 'commander';
6
- import { readFileSync } from 'node:fs';
7
- import { resolve } from 'node:path';
8
- import { fileURLToPath } from 'node:url';
9
- import { dirname, join } from 'node:path';
10
- import { generate } from './index.js';
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
- const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
13
- const program = new Command();
14
- program
15
- .name('tesseract')
16
- .description('Manifest-first SDK generator turns sdk-manifold/v1 manifests into production-ready TypeScript SDKs')
17
- .version(pkg.version);
18
- program
19
- .command('generate')
20
- .description('Generate an SDK from an sdk-manifold/v1 manifest file')
21
- .requiredOption('-i, --input <path>', 'Path to the sdk-manifold/v1 manifest JSON file')
22
- .requiredOption('-o, --output <dir>', 'Output directory for the generated SDK')
23
- .option('-n, --name <name>', 'Override the SDK package name')
24
- .option('--package-version <version>', 'Override the generated package version')
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: 'typescript',
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
- try {
50
- const result = await generate(config);
51
- if (result.warnings.length > 0) {
52
- console.warn('\nWarnings:');
53
- for (const w of result.warnings)
54
- console.warn(` ⚠ ${w}`);
55
- }
56
- if (result.mode === 'check') {
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
- for (const file of result.changedFiles) {
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 > 0) {
70
- for (const file of result.changedFiles) {
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
- console.log(`\n✓ Generated ${result.filesWritten} files → ${opts.output}`);
80
- if (result.filesSkipped > 0) {
81
- console.log(` ${result.filesSkipped} files unchanged (skipped)`);
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
- console.error(`\n✗ Generation failed: ${err instanceof Error ? err.message : String(err)}`);
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
- program
90
- .command('run')
91
- .description('Boot an instrumented Fastify app with TESSERACT_GENERATE=1 to collect routes and generate an SDK.\n' +
92
- 'The app must register `tesseractPlugin` from `@apollo-deploy/tesseract/fastify`.')
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: '1' },
99
- stdio: 'inherit',
115
+ env: { ...process.env, TESSERACT_GENERATE: "1" },
116
+ stdio: "inherit",
100
117
  });
101
118
  process.exit(result.status ?? 0);
102
- });
103
- program.parse();
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":"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"}
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
@@ -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;AA6HD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,4CAG1B,CAAC"}
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
- function convertSchemaValue(value, toJSONSchema) {
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
- function convertRouteSchema(schema, toJSONSchema) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"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"}
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
- * Registers all custom helpers and provides template loading.
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 '../types/ir.js';
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;;;GAGG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAK3D,KAAK,gBAAgB,GAAG,0BAA0B,CAAC;AAKnD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAmB5E;AAID,wBAAgB,eAAe,IAAI,IAAI,CAyEtC;AAiBD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAG1D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAG1D;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAGlE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAQxD;AAyBD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,MAAM,EAAE,CAeV"}
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"}