@apollo-deploy/tesseract 1.7.0 → 1.9.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.
@@ -29,6 +29,17 @@
29
29
  import type { BackendManifest, ManifestRouteSchema } from './types/manifest.js';
30
30
  import type { SDKModuleConfig, SDKRouteConfig } from './types/sdk-module.js';
31
31
  import type { TargetLanguage } from './types/ir.js';
32
+ /**
33
+ * Minimal interface for Zod v4's global registry — only what Tesseract needs.
34
+ * Declared here so adapters don't need a hard dependency on `zod`.
35
+ */
36
+ export interface ZodGlobalRegistry {
37
+ get(schema: unknown): {
38
+ id?: string;
39
+ } | undefined;
40
+ /** Internal id→schema map present in Zod v4 registries. */
41
+ _idmap?: Map<string, unknown>;
42
+ }
32
43
  export interface CollectorOptions {
33
44
  /** API metadata written into the generated package.json and README. */
34
45
  info: {
@@ -50,6 +61,33 @@ export interface CollectorOptions {
50
61
  version?: string;
51
62
  importPath?: string;
52
63
  };
64
+ /**
65
+ * Function to convert framework-specific schema objects (e.g. raw Zod schemas)
66
+ * to JSON Schema at generation time.
67
+ *
68
+ * Required when using `fastify-type-provider-zod` or passing raw Zod schemas
69
+ * directly to route/collector configs. Pass `toJSONSchema` from `zod` v4.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { toJSONSchema } from 'zod';
74
+ * new SDKCollector({ ..., schemaConverter: toJSONSchema });
75
+ * ```
76
+ */
77
+ schemaConverter?: (schema: unknown) => unknown;
78
+ /**
79
+ * Zod v4 global registry — controls how registered schemas are resolved
80
+ * when `schemaConverter` is set.
81
+ *
82
+ * - With `schemaPackage`: registered schemas emit a bare `$ref: 'Id'` so
83
+ * intake creates external import stubs.
84
+ * - Without `schemaPackage` (or when a target sets `schemaPackage: null`):
85
+ * registered schemas are expanded and wrapped in `$defs` so intake
86
+ * generates named data classes (e.g. Kotlin `data class`).
87
+ *
88
+ * Pass `z.globalRegistry` from your app.
89
+ */
90
+ zodGlobalRegistry?: ZodGlobalRegistry;
53
91
  /** `'functional'` (default) or `'class'` (Resend-style `new MySDK('key')`). */
54
92
  sdkStyle?: 'functional' | 'class';
55
93
  /** `'internal'` (default) or `'public'` (auth key only, baseUrl baked in). */
@@ -88,6 +126,24 @@ export interface CollectorOptions {
88
126
  packageVersion?: string;
89
127
  clientType?: 'internal' | 'public';
90
128
  sdkStyle?: 'functional' | 'class';
129
+ /**
130
+ * Override the schema package for this target.
131
+ *
132
+ * Set to `null` to disable external type imports for this target, causing
133
+ * all types to be generated inline. Useful when the primary output imports
134
+ * from a shared TypeScript package but an additional target (e.g. Kotlin)
135
+ * needs self-contained inline types.
136
+ *
137
+ * Omit to inherit the primary `schemaPackage`.
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * additionalTargets: [
142
+ * { language: 'kotlin', output: './sdk/java', schemaPackage: null },
143
+ * ]
144
+ * ```
145
+ */
146
+ schemaPackage?: CollectorOptions['schemaPackage'] | null;
91
147
  }>;
92
148
  }
93
149
  export interface CollectorRouteConfig {
@@ -151,6 +207,32 @@ export declare class SDKCollector {
151
207
  */
152
208
  tryGenerate(): Promise<boolean>;
153
209
  }
210
+ /**
211
+ * Post-process a JSON Schema produced by `toJSONSchema` so that any `$defs`
212
+ * entry whose key matches a registered global id is lifted to a bare `$ref`.
213
+ * Used in the external-target path so intake treats them as import stubs.
214
+ */
215
+ export declare function liftRegisteredRefs(schema: unknown, registeredIds: Set<string>): unknown;
216
+ /**
217
+ * Convert a single raw schema value to JSON Schema.
218
+ *
219
+ * - `isExternalTarget: true` — registered schema → bare `$ref: 'Id'` (external import stub)
220
+ * - `isExternalTarget: false` — registered schema → `{ $defs: { Id: <expanded> }, $ref: '#/$defs/Id' }`
221
+ * so `buildManifestFromRoutes` can extract it as a named local definition.
222
+ * - No registry — calls `toJSONSchema` directly; nested `$defs` are extracted by
223
+ * `buildManifestFromRoutes`.
224
+ */
225
+ export declare function convertSchemaValue(value: unknown, toJSONSchema: (s: unknown) => unknown, zodRegistry?: ZodGlobalRegistry, isExternalTarget?: boolean): unknown;
226
+ /**
227
+ * Convert all schema fields on a single route schema, applying the correct
228
+ * Zod→JSON Schema conversion strategy for the target.
229
+ */
230
+ export declare function convertRouteSchema(schema: ManifestRouteSchema | undefined, toJSONSchema: (s: unknown) => unknown, zodRegistry?: ZodGlobalRegistry, isExternalTarget?: boolean): ManifestRouteSchema | undefined;
231
+ /**
232
+ * Resolve the `toJSONSchema` converter: use the explicit one if provided,
233
+ * otherwise attempt auto-detection from the host app's `zod` package.
234
+ */
235
+ export declare function resolveSchemaConverter(explicit?: (s: unknown) => unknown): Promise<((s: unknown) => unknown) | undefined>;
154
236
  /**
155
237
  * Builds a `BackendManifest` from a flat list of collected routes and a domain
156
238
  * registry. Exported so framework adapters (including the Fastify plugin) can
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
package/dist/collector.js CHANGED
@@ -78,9 +78,27 @@ export class SDKCollector {
78
78
  /** Generate the SDK from accumulated routes and domains. */
79
79
  async generate() {
80
80
  const { generate } = await import('./index.js');
81
- const manifest = this.buildManifest();
81
+ const toJSONSchema = await resolveSchemaConverter(this.opts.schemaConverter);
82
+ /**
83
+ * Build a manifest for a specific schemaPackage context.
84
+ * When `toJSONSchema` is available, routes are re-converted with the
85
+ * correct `isExternalTarget` flag before the manifest is built.
86
+ */
87
+ const buildManifestFor = (schemaPackage) => {
88
+ if (!toJSONSchema) {
89
+ return buildManifestFromRoutes(this._routes, this._registry, this.opts.info, schemaPackage);
90
+ }
91
+ const isExternal = !!schemaPackage;
92
+ const registry = schemaPackage ? this.opts.zodGlobalRegistry : undefined;
93
+ const converted = this._routes.map((r) => ({
94
+ ...r,
95
+ schema: convertRouteSchema(r.schema, toJSONSchema, registry, isExternal),
96
+ }));
97
+ return buildManifestFromRoutes(converted, this._registry, this.opts.info, schemaPackage);
98
+ };
99
+ const primaryManifest = buildManifestFor(this.opts.schemaPackage);
82
100
  const primary = await generate({
83
- manifest,
101
+ manifest: primaryManifest,
84
102
  output: this.opts.output,
85
103
  language: this.opts.language,
86
104
  clientType: this.opts.clientType,
@@ -89,8 +107,15 @@ export class SDKCollector {
89
107
  sdkStyle: this.opts.sdkStyle,
90
108
  });
91
109
  for (const target of this.opts.additionalTargets ?? []) {
110
+ const hasSchemaPackageOverride = Object.prototype.hasOwnProperty.call(target, 'schemaPackage');
111
+ const targetSchemaPackage = hasSchemaPackageOverride
112
+ ? (target.schemaPackage ?? undefined)
113
+ : this.opts.schemaPackage;
114
+ const targetManifest = hasSchemaPackageOverride || targetSchemaPackage !== this.opts.schemaPackage
115
+ ? buildManifestFor(targetSchemaPackage)
116
+ : primaryManifest;
92
117
  const extra = await generate({
93
- manifest,
118
+ manifest: targetManifest,
94
119
  output: target.output,
95
120
  language: target.language,
96
121
  clientType: target.clientType ?? this.opts.clientType,
@@ -98,8 +123,6 @@ export class SDKCollector {
98
123
  packageVersion: target.packageVersion ?? this.opts.packageVersion,
99
124
  sdkStyle: target.sdkStyle ?? this.opts.sdkStyle,
100
125
  });
101
- // Merge warnings and counts back into the primary result so callers
102
- // get a single aggregated result regardless of target count.
103
126
  primary.filesWritten += extra.filesWritten;
104
127
  primary.filesSkipped += extra.filesSkipped;
105
128
  primary.warnings.push(...extra.warnings);
@@ -131,6 +154,131 @@ export class SDKCollector {
131
154
  return true;
132
155
  }
133
156
  }
157
+ // ── Zod schema conversion ─────────────────────────────────────────────────────
158
+ /** Returns true when `value` is a Zod v4 schema instance. */
159
+ function isZodSchema(value) {
160
+ return !!value && typeof value === 'object' && '_zod' in value;
161
+ }
162
+ /**
163
+ * Post-process a JSON Schema produced by `toJSONSchema` so that any `$defs`
164
+ * entry whose key matches a registered global id is lifted to a bare `$ref`.
165
+ * Used in the external-target path so intake treats them as import stubs.
166
+ */
167
+ export function liftRegisteredRefs(schema, registeredIds) {
168
+ if (!schema || typeof schema !== 'object')
169
+ return schema;
170
+ if (Array.isArray(schema)) {
171
+ return schema.map((item) => liftRegisteredRefs(item, registeredIds));
172
+ }
173
+ const s = schema;
174
+ if (typeof s.$ref === 'string' && s.$ref.startsWith('#/$defs/')) {
175
+ const id = s.$ref.slice('#/$defs/'.length);
176
+ if (registeredIds.has(id))
177
+ return { $ref: id };
178
+ }
179
+ const result = {};
180
+ for (const [key, val] of Object.entries(s)) {
181
+ if (key === '$defs')
182
+ continue;
183
+ result[key] = liftRegisteredRefs(val, registeredIds);
184
+ }
185
+ if (s.$defs && typeof s.$defs === 'object' && !Array.isArray(s.$defs)) {
186
+ const remainingDefs = {};
187
+ for (const [defKey, defVal] of Object.entries(s.$defs)) {
188
+ if (!registeredIds.has(defKey)) {
189
+ remainingDefs[defKey] = liftRegisteredRefs(defVal, registeredIds);
190
+ }
191
+ }
192
+ if (Object.keys(remainingDefs).length > 0)
193
+ result.$defs = remainingDefs;
194
+ }
195
+ return result;
196
+ }
197
+ /**
198
+ * Convert a single raw schema value to JSON Schema.
199
+ *
200
+ * - `isExternalTarget: true` — registered schema → bare `$ref: 'Id'` (external import stub)
201
+ * - `isExternalTarget: false` — registered schema → `{ $defs: { Id: <expanded> }, $ref: '#/$defs/Id' }`
202
+ * so `buildManifestFromRoutes` can extract it as a named local definition.
203
+ * - No registry — calls `toJSONSchema` directly; nested `$defs` are extracted by
204
+ * `buildManifestFromRoutes`.
205
+ */
206
+ export function convertSchemaValue(value, toJSONSchema, zodRegistry, isExternalTarget) {
207
+ if (isZodSchema(value)) {
208
+ if (zodRegistry) {
209
+ const entry = zodRegistry.get(value);
210
+ if (entry?.id) {
211
+ if (isExternalTarget) {
212
+ return { $ref: entry.id };
213
+ }
214
+ try {
215
+ const expanded = toJSONSchema(value);
216
+ return { $defs: { [entry.id]: expanded }, $ref: `#/$defs/${entry.id}` };
217
+ }
218
+ catch {
219
+ return { $ref: entry.id };
220
+ }
221
+ }
222
+ }
223
+ try {
224
+ const jsonSchema = toJSONSchema(value);
225
+ if (zodRegistry?._idmap && jsonSchema && typeof jsonSchema === 'object') {
226
+ const registeredIds = new Set(zodRegistry._idmap.keys());
227
+ return liftRegisteredRefs(jsonSchema, registeredIds);
228
+ }
229
+ return jsonSchema;
230
+ }
231
+ catch {
232
+ return value;
233
+ }
234
+ }
235
+ return value;
236
+ }
237
+ // Schema fields eligible for registry-based $ref replacement.
238
+ // headers are always expanded inline since they're rarely top-level registered schemas.
239
+ const REGISTRY_ELIGIBLE_FIELDS = new Set(['body', 'querystring', 'query', 'params']);
240
+ /**
241
+ * Convert all schema fields on a single route schema, applying the correct
242
+ * Zod→JSON Schema conversion strategy for the target.
243
+ */
244
+ export function convertRouteSchema(schema, toJSONSchema, zodRegistry, isExternalTarget) {
245
+ if (!schema)
246
+ return schema;
247
+ const result = {};
248
+ for (const [key, val] of Object.entries(schema)) {
249
+ if (key === 'response' && val && typeof val === 'object') {
250
+ const serialized = {};
251
+ for (const [status, responseSchema] of Object.entries(val)) {
252
+ serialized[status] = convertSchemaValue(responseSchema, toJSONSchema, zodRegistry, isExternalTarget);
253
+ }
254
+ result[key] = serialized;
255
+ }
256
+ else if (REGISTRY_ELIGIBLE_FIELDS.has(key)) {
257
+ result[key] = convertSchemaValue(val, toJSONSchema, zodRegistry, isExternalTarget);
258
+ }
259
+ else {
260
+ result[key] = convertSchemaValue(val, toJSONSchema);
261
+ }
262
+ }
263
+ return result;
264
+ }
265
+ /**
266
+ * Resolve the `toJSONSchema` converter: use the explicit one if provided,
267
+ * otherwise attempt auto-detection from the host app's `zod` package.
268
+ */
269
+ export async function resolveSchemaConverter(explicit) {
270
+ if (typeof explicit === 'function')
271
+ return explicit;
272
+ try {
273
+ const zodPkg = 'zod';
274
+ const zodModule = await import(zodPkg);
275
+ const converter = zodModule.toJSONSchema;
276
+ return typeof converter === 'function' ? converter : undefined;
277
+ }
278
+ catch {
279
+ return undefined;
280
+ }
281
+ }
134
282
  // ── Shared manifest builder ───────────────────────────────────────────────────
135
283
  /**
136
284
  * Builds a `BackendManifest` from a flat list of collected routes and a domain
@@ -169,6 +317,7 @@ export function buildManifestFromRoutes(routes, registry, info, schemaPackage) {
169
317
  },
170
318
  ...(schemaPackage && { schemaPackage }),
171
319
  domains: [...domainMap.values()].map(({ config, routes }) => ({ ...config, routes })),
320
+ ...buildDefinitionsFromDefs(routes),
172
321
  };
173
322
  }
174
323
  /** Derives a domain prefix from the first non-parameter URL segment. */
@@ -176,4 +325,71 @@ function derivePrefix(url) {
176
325
  const first = url.split('/').find((s) => s.length > 0 && !s.startsWith(':'));
177
326
  return first ? '/' + first : '/';
178
327
  }
328
+ // ── $defs extraction ──────────────────────────────────────────────────────────
329
+ /**
330
+ * Walk every schema value in every route and collect all `$defs` blocks.
331
+ * When `toJSONSchema` (e.g. Zod v4) produces a schema with `$defs`, those
332
+ * named definitions are lifted into `manifest.definitions` so that intake
333
+ * can generate named data classes (e.g. Kotlin `data class`) rather than
334
+ * expanding every reference inline.
335
+ *
336
+ * Returns `{ definitions }` only when at least one def is found, so the
337
+ * spread into the manifest is a no-op for manifests that have none.
338
+ */
339
+ function buildDefinitionsFromDefs(routes) {
340
+ const defs = {};
341
+ for (const route of routes) {
342
+ const s = route.schema;
343
+ if (!s)
344
+ continue;
345
+ const fields = [
346
+ s.params,
347
+ s.querystring,
348
+ s.query,
349
+ s.body,
350
+ s.headers,
351
+ ...(s.response ? Object.values(s.response) : []),
352
+ ];
353
+ for (const field of fields) {
354
+ if (field)
355
+ collectDefs(field, defs);
356
+ }
357
+ }
358
+ return Object.keys(defs).length > 0 ? { definitions: defs } : {};
359
+ }
360
+ /**
361
+ * Recursively collect all `$defs` entries found anywhere in a JSON Schema
362
+ * object into the `out` accumulator. Entries already present are not
363
+ * overwritten (first-write wins, matching JSON Schema semantics).
364
+ */
365
+ function collectDefs(schema, out) {
366
+ if (!schema || typeof schema !== 'object')
367
+ return;
368
+ if (schema.$defs && typeof schema.$defs === 'object' && !Array.isArray(schema.$defs)) {
369
+ for (const [key, val] of Object.entries(schema.$defs)) {
370
+ if (!(key in out))
371
+ out[key] = val;
372
+ // Recurse into the def itself — it may contain nested $defs
373
+ if (val && typeof val === 'object')
374
+ collectDefs(val, out);
375
+ }
376
+ }
377
+ // Recurse into all schema fields that may contain nested schemas
378
+ for (const key of Object.keys(schema)) {
379
+ if (key === '$defs')
380
+ continue;
381
+ const val = schema[key];
382
+ if (!val || typeof val !== 'object')
383
+ continue;
384
+ if (Array.isArray(val)) {
385
+ for (const item of val) {
386
+ if (item && typeof item === 'object')
387
+ collectDefs(item, out);
388
+ }
389
+ }
390
+ else {
391
+ collectDefs(val, out);
392
+ }
393
+ }
394
+ }
179
395
  //# sourceMappingURL=collector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
package/dist/fastify.d.ts CHANGED
@@ -21,6 +21,7 @@ import type { FastifyInstance, FastifyPluginAsync } from 'fastify';
21
21
  import type { SDKModuleConfig, SDKRouteConfig } from './types/sdk-module.js';
22
22
  import type { TargetLanguage } from './types/ir.js';
23
23
  import type { CollectorOptions } from './collector.js';
24
+ import { type ZodGlobalRegistry } from './collector.js';
24
25
  declare module 'fastify' {
25
26
  interface RouteOptions {
26
27
  /** SDK generation configuration for this route. Sibling to `schema`. */
@@ -156,14 +157,6 @@ export interface TesseractPluginOptions {
156
157
  export declare function sdkDomain(fastify: FastifyInstance, config: Omit<SDKModuleConfig, 'prefix'> & {
157
158
  prefix?: string;
158
159
  }): void;
159
- /** Minimal interface for z.globalRegistry — only what we need. */
160
- interface ZodGlobalRegistry {
161
- get(schema: unknown): {
162
- id?: string;
163
- } | undefined;
164
- /** Internal id→schema map present in Zod v4 registries. */
165
- _idmap?: Map<string, unknown>;
166
- }
167
160
  /**
168
161
  * Fastify plugin that collects SDK-annotated routes and generates an SDK
169
162
  * when `TESSERACT_GENERATE=1` is set in the environment.
@@ -184,5 +177,4 @@ interface ZodGlobalRegistry {
184
177
  * ```
185
178
  */
186
179
  export declare const tesseractPlugin: FastifyPluginAsync<TesseractPluginOptions>;
187
- export {};
188
180
  //# 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;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,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;IAClC;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;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;IAClD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AA8ND;;;;;;;;;;;;;;;;;;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;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAOxB,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;IAClC;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC1D;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;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;AAmJD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,4CAG1B,CAAC"}
package/dist/fastify.js CHANGED
@@ -18,6 +18,7 @@
18
18
  * Or via CLI: `tesseract run dist/app.js`
19
19
  */
20
20
  import fp from 'fastify-plugin';
21
+ import { SDKCollector, convertRouteSchema, resolveSchemaConverter, } from './collector.js';
21
22
  import { _domainRegistry } from './types/sdk-module.js';
22
23
  // ── Domain registration helper ────────────────────────────────────────────────
23
24
  /**
@@ -48,114 +49,6 @@ export function sdkDomain(fastify, config) {
48
49
  _domainRegistry.set(prefix, { prefix, ...config });
49
50
  }
50
51
  // ── Plugin ────────────────────────────────────────────────────────────────────
51
- /** Returns true if `value` is a Zod v4 schema instance. */
52
- function isZodSchema(value) {
53
- return !!value && typeof value === 'object' && '_zod' in value;
54
- }
55
- /**
56
- * Post-process a JSON Schema produced by `toJSONSchema` so that any `$defs`
57
- * entry whose key matches a registered global id is lifted to a bare `$ref`.
58
- *
59
- * Zod v4's `toJSONSchema` always emits `$ref: '#/$defs/<id>'` for sub-schemas
60
- * that have a registry id. Those `#/...` refs are treated as local by
61
- * `intake.ts` and would be inlined instead of resolved as external imports.
62
- * This function replaces them with bare `$ref: '<id>'` so `intake.ts` detects
63
- * them as external type stubs from the configured `schemaPackage`.
64
- */
65
- function liftRegisteredRefs(schema, registeredIds) {
66
- if (!schema || typeof schema !== 'object')
67
- return schema;
68
- if (Array.isArray(schema)) {
69
- return schema.map((item) => liftRegisteredRefs(item, registeredIds));
70
- }
71
- const s = schema;
72
- // If this node is a local $ref pointing at a registered id, lift it.
73
- if (typeof s.$ref === 'string' && s.$ref.startsWith('#/$defs/')) {
74
- const id = s.$ref.slice('#/$defs/'.length);
75
- if (registeredIds.has(id))
76
- return { $ref: id };
77
- }
78
- // Recurse into all values, skipping $defs (handled separately below).
79
- const result = {};
80
- for (const [key, val] of Object.entries(s)) {
81
- if (key === '$defs')
82
- continue;
83
- result[key] = liftRegisteredRefs(val, registeredIds);
84
- }
85
- // Re-add only $defs entries that are NOT lifted (i.e. not registered ids).
86
- if (s.$defs && typeof s.$defs === 'object' && !Array.isArray(s.$defs)) {
87
- const remainingDefs = {};
88
- for (const [defKey, defVal] of Object.entries(s.$defs)) {
89
- if (!registeredIds.has(defKey)) {
90
- remainingDefs[defKey] = liftRegisteredRefs(defVal, registeredIds);
91
- }
92
- }
93
- if (Object.keys(remainingDefs).length > 0)
94
- result.$defs = remainingDefs;
95
- }
96
- return result;
97
- }
98
- /**
99
- * Convert a single schema value. When `zodRegistry` is provided and the schema
100
- * has a registered global id, emit a bare `$ref` to that id instead of
101
- * expanding inline. This lets `intake.ts` treat it as an external type from
102
- * the configured `schemaPackage`.
103
- *
104
- * For schemas that are NOT directly registered but reference registered
105
- * sub-schemas, `toJSONSchema` is called and then `liftRegisteredRefs`
106
- * replaces any `$ref: '#/$defs/<id>'` with bare `$ref: '<id>'` for known ids.
107
- */
108
- function convertSchemaValue(value, toJSONSchema, zodRegistry) {
109
- if (isZodSchema(value)) {
110
- if (zodRegistry) {
111
- const entry = zodRegistry.get(value);
112
- if (entry?.id)
113
- return { $ref: entry.id };
114
- }
115
- try {
116
- const jsonSchema = toJSONSchema(value);
117
- if (zodRegistry?._idmap && jsonSchema && typeof jsonSchema === 'object') {
118
- const registeredIds = new Set(zodRegistry._idmap.keys());
119
- return liftRegisteredRefs(jsonSchema, registeredIds);
120
- }
121
- return jsonSchema;
122
- }
123
- catch {
124
- return value;
125
- }
126
- }
127
- return value;
128
- }
129
- // Schema fields whose values should be treated as typed payloads — eligible for
130
- // registry-based $ref replacement. All registered Zod schemas in these fields
131
- // are replaced with a bare $ref so intake.ts can create external type stubs and
132
- // emit specific named imports instead of wildcard re-exports.
133
- //
134
- // Note: headers are always expanded inline since they are rarely modelled as
135
- // top-level registered schemas and Tesseract reads individual header names.
136
- const REGISTRY_ELIGIBLE_FIELDS = new Set(['body', 'querystring', 'query', 'params']);
137
- function convertRouteSchema(schema, toJSONSchema, zodRegistry) {
138
- if (!schema)
139
- return schema;
140
- const result = {};
141
- for (const [key, val] of Object.entries(schema)) {
142
- if (key === 'response' && val && typeof val === 'object') {
143
- const serialized = {};
144
- for (const [status, responseSchema] of Object.entries(val)) {
145
- serialized[status] = convertSchemaValue(responseSchema, toJSONSchema, zodRegistry);
146
- }
147
- result[key] = serialized;
148
- }
149
- else if (REGISTRY_ELIGIBLE_FIELDS.has(key)) {
150
- result[key] = convertSchemaValue(val, toJSONSchema, zodRegistry);
151
- }
152
- else {
153
- // headers — always expand inline
154
- result[key] = convertSchemaValue(val, toJSONSchema);
155
- }
156
- }
157
- return result;
158
- }
159
52
  const _tesseractPlugin = async (fastify, opts) => {
160
53
  if (!process.env.TESSERACT_GENERATE)
161
54
  return;
@@ -183,42 +76,25 @@ const _tesseractPlugin = async (fastify, opts) => {
183
76
  console.error('\n[tesseract] No SDK routes found. Add `sdk: { ... }` to routes or use `@SDKModule` + `sdkDomain()`.');
184
77
  process.exit(1);
185
78
  }
186
- // Convert Zod v4 schemas to JSON Schema (dynamic import so Tesseract doesn't
187
- // need zod as a hard dependency — it resolves via the host app's node_modules).
188
- let resolvedRoutes = collectedRoutes;
189
- // When a schemaPackage is configured and the user provides their z.globalRegistry,
190
- // body/response schemas with a registered id emit a bare $ref instead of being
191
- // expanded inline. This lets intake.ts create correct external type stubs and
192
- // emit specific named exports instead of a wildcard re-export.
193
- const zodRegistry = opts.schemaPackage ? opts.zodGlobalRegistry : undefined;
194
- const toJSONSchema = opts.schemaConverter;
195
- if (typeof toJSONSchema === 'function') {
196
- resolvedRoutes = collectedRoutes.map((r) => ({
79
+ const toJSONSchema = await resolveSchemaConverter(opts.schemaConverter);
80
+ /**
81
+ * Convert collected routes for a specific schemaPackage context.
82
+ * isExternalTarget true → bare $ref (external import stub)
83
+ * isExternalTarget false $defs-wrapped (named local definition)
84
+ */
85
+ const convertRoutes = (zodRegistry, isExternalTarget) => {
86
+ if (!toJSONSchema)
87
+ return collectedRoutes;
88
+ return collectedRoutes.map((r) => ({
197
89
  ...r,
198
- schema: convertRouteSchema(r.schema, toJSONSchema, zodRegistry),
90
+ schema: convertRouteSchema(r.schema, toJSONSchema, zodRegistry, isExternalTarget),
199
91
  }));
200
- }
201
- else {
202
- // Attempt automatic detection via dynamic import as fallback.
203
- try {
204
- const zodPkg = 'zod';
205
- const zodModule = await import(zodPkg);
206
- const zodConverter = zodModule.toJSONSchema;
207
- if (typeof zodConverter === 'function') {
208
- resolvedRoutes = collectedRoutes.map((r) => ({
209
- ...r,
210
- schema: convertRouteSchema(r.schema, zodConverter, zodRegistry),
211
- }));
212
- }
213
- }
214
- catch {
215
- // zod not available — schemas stay as-is (JSON Schema passed directly)
216
- }
217
- }
218
- // Build a collector from the resolved routes so we can delegate to
219
- // collector.generate() — this gives us additionalTargets support for free.
220
- const { SDKCollector } = await import('./collector.js');
221
- const collector = new SDKCollector({
92
+ };
93
+ const { generate } = await import('./index.js');
94
+ // ── Primary target ──────────────────────────────────────────────────────
95
+ const primaryRegistry = opts.schemaPackage ? opts.zodGlobalRegistry : undefined;
96
+ const primaryRoutes = convertRoutes(primaryRegistry, !!opts.schemaPackage);
97
+ const primaryCollector = new SDKCollector({
222
98
  info: opts.info,
223
99
  output: opts.output,
224
100
  language: opts.language,
@@ -227,22 +103,68 @@ const _tesseractPlugin = async (fastify, opts) => {
227
103
  packageName: opts.packageName,
228
104
  packageVersion: opts.packageVersion,
229
105
  sdkStyle: opts.sdkStyle,
230
- additionalTargets: opts.additionalTargets,
231
106
  });
232
107
  for (const [prefix, domainConfig] of _domainRegistry) {
233
- collector.domain(prefix, domainConfig);
108
+ primaryCollector.domain(prefix, domainConfig);
234
109
  }
235
- for (const r of resolvedRoutes) {
236
- collector.route(r.url, r.method, { sdk: r.sdk, schema: r.schema, sse: r.sse });
110
+ for (const r of primaryRoutes) {
111
+ primaryCollector.route(r.url, r.method, { sdk: r.sdk, schema: r.schema, sse: r.sse });
237
112
  }
238
- const manifest = collector.buildManifest();
239
- console.log(`\n[tesseract] ${manifest.domains.length} domain(s), ${collectedRoutes.length} route(s) → ${opts.output}`);
113
+ const primaryManifest = primaryCollector.buildManifest();
114
+ console.log(`\n[tesseract] ${primaryManifest.domains.length} domain(s), ${collectedRoutes.length} route(s) → ${opts.output}`);
240
115
  try {
241
- const result = await collector.generate();
242
- for (const w of result.warnings) {
116
+ const primary = await generate({
117
+ manifest: primaryManifest,
118
+ output: opts.output,
119
+ language: opts.language,
120
+ clientType: opts.clientType,
121
+ packageName: opts.packageName,
122
+ packageVersion: opts.packageVersion,
123
+ sdkStyle: opts.sdkStyle,
124
+ });
125
+ for (const w of primary.warnings)
243
126
  console.warn(` ⚠ ${w}`);
127
+ console.log(`[tesseract] ✓ ${primary.filesWritten} files written\n`);
128
+ // ── Additional targets ────────────────────────────────────────────────
129
+ for (const target of opts.additionalTargets ?? []) {
130
+ const hasSchemaPackageOverride = Object.prototype.hasOwnProperty.call(target, 'schemaPackage');
131
+ const targetSchemaPackage = hasSchemaPackageOverride
132
+ ? (target.schemaPackage ?? undefined)
133
+ : opts.schemaPackage;
134
+ const targetRegistry = targetSchemaPackage ? opts.zodGlobalRegistry : undefined;
135
+ const targetRoutes = hasSchemaPackageOverride || targetSchemaPackage !== opts.schemaPackage
136
+ ? convertRoutes(targetRegistry, !!targetSchemaPackage)
137
+ : primaryRoutes;
138
+ const targetCollector = new SDKCollector({
139
+ info: opts.info,
140
+ output: target.output,
141
+ language: target.language,
142
+ schemaPackage: targetSchemaPackage,
143
+ clientType: target.clientType ?? opts.clientType,
144
+ packageName: target.packageName ?? opts.packageName,
145
+ packageVersion: target.packageVersion ?? opts.packageVersion,
146
+ sdkStyle: target.sdkStyle ?? opts.sdkStyle,
147
+ });
148
+ for (const [prefix, domainConfig] of _domainRegistry) {
149
+ targetCollector.domain(prefix, domainConfig);
150
+ }
151
+ for (const r of targetRoutes) {
152
+ targetCollector.route(r.url, r.method, { sdk: r.sdk, schema: r.schema, sse: r.sse });
153
+ }
154
+ console.log(`[tesseract] generating ${target.language} → ${target.output}`);
155
+ const extra = await generate({
156
+ manifest: targetCollector.buildManifest(),
157
+ output: target.output,
158
+ language: target.language,
159
+ clientType: target.clientType ?? opts.clientType,
160
+ packageName: target.packageName ?? opts.packageName,
161
+ packageVersion: target.packageVersion ?? opts.packageVersion,
162
+ sdkStyle: target.sdkStyle ?? opts.sdkStyle,
163
+ });
164
+ for (const w of extra.warnings)
165
+ console.warn(` ⚠ ${w}`);
166
+ console.log(`[tesseract] ✓ ${extra.filesWritten} files written\n`);
244
167
  }
245
- console.log(`[tesseract] ✓ ${result.filesWritten} files written\n`);
246
168
  process.exit(0);
247
169
  }
248
170
  catch (err) {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo-deploy/tesseract",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "type": "module",
5
5
  "description": "Manifest-first SDK generator — turns sdk-manifold/v1 manifests into production-ready TypeScript SDKs",
6
6
  "bin": {