@apollo-deploy/tesseract 1.8.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.
- package/dist/collector.d.ts +64 -0
- package/dist/collector.d.ts.map +1 -1
- package/dist/collector.js +151 -10
- package/dist/collector.js.map +1 -1
- package/dist/fastify.d.ts +1 -9
- package/dist/fastify.d.ts.map +1 -1
- package/dist/fastify.js +73 -151
- package/dist/fastify.js.map +1 -1
- package/package.json +1 -1
package/dist/collector.d.ts
CHANGED
|
@@ -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). */
|
|
@@ -169,6 +207,32 @@ export declare class SDKCollector {
|
|
|
169
207
|
*/
|
|
170
208
|
tryGenerate(): Promise<boolean>;
|
|
171
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>;
|
|
172
236
|
/**
|
|
173
237
|
* Builds a `BackendManifest` from a flat list of collected routes and a domain
|
|
174
238
|
* registry. Exported so framework adapters (including the Fastify plugin) can
|
package/dist/collector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,mBAAmB,EAAc,MAAM,qBAAqB,CAAC;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,mBAAmB,EAAc,MAAM,qBAAqB,CAAC;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,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;AAED,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,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;;;;;OAKG;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;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAClC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IACnC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;QACxB,QAAQ,EAAE,cAAc,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;QAClC;;;;;;;;;;;;;;;;WAgBG;QACH,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;KAC1D,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,2CAA2C;IAC3C,GAAG,EAAE,cAAc,CAAC;IACpB,wDAAwD;IACxD,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,CAAM;IACjD,SAAS,CAAC,QAAQ,CAAC,SAAS,+BAAsC;IAClE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAE9B,IAAI,EAAE,gBAAgB;IAIlC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,IAAI;IAKtE;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAYtE,sFAAsF;IACtF,aAAa,IAAI,eAAe;IAIhC,4DAA4D;IACtD,QAAQ,IAAI,OAAO,CAAC,OAAO,YAAY,EAAE,cAAc,CAAC;IAiE9D;;;;;;;;;;OAUG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAUtC;AASD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,OAAO,CAyBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,EACrC,WAAW,CAAC,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,OAAO,GACzB,OAAO,CA0BT;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,EACrC,WAAW,CAAC,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,OAAO,GACzB,mBAAmB,GAAG,SAAS,CAiBjC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,GACjC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC,CAUhD;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,cAAc,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC,EACF,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9C,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,GAChD,eAAe,CAwCjB"}
|
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
|
|
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,13 +107,13 @@ export class SDKCollector {
|
|
|
89
107
|
sdkStyle: this.opts.sdkStyle,
|
|
90
108
|
});
|
|
91
109
|
for (const target of this.opts.additionalTargets ?? []) {
|
|
92
|
-
// If the target overrides schemaPackage (including null to disable it),
|
|
93
|
-
// rebuild the manifest with the target-specific schemaPackage so that
|
|
94
|
-
// intake resolves types correctly for this language.
|
|
95
110
|
const hasSchemaPackageOverride = Object.prototype.hasOwnProperty.call(target, 'schemaPackage');
|
|
96
|
-
const
|
|
97
|
-
?
|
|
98
|
-
:
|
|
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;
|
|
99
117
|
const extra = await generate({
|
|
100
118
|
manifest: targetManifest,
|
|
101
119
|
output: target.output,
|
|
@@ -105,8 +123,6 @@ export class SDKCollector {
|
|
|
105
123
|
packageVersion: target.packageVersion ?? this.opts.packageVersion,
|
|
106
124
|
sdkStyle: target.sdkStyle ?? this.opts.sdkStyle,
|
|
107
125
|
});
|
|
108
|
-
// Merge warnings and counts back into the primary result so callers
|
|
109
|
-
// get a single aggregated result regardless of target count.
|
|
110
126
|
primary.filesWritten += extra.filesWritten;
|
|
111
127
|
primary.filesSkipped += extra.filesSkipped;
|
|
112
128
|
primary.warnings.push(...extra.warnings);
|
|
@@ -138,6 +154,131 @@ export class SDKCollector {
|
|
|
138
154
|
return true;
|
|
139
155
|
}
|
|
140
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
|
+
}
|
|
141
282
|
// ── Shared manifest builder ───────────────────────────────────────────────────
|
|
142
283
|
/**
|
|
143
284
|
* Builds a `BackendManifest` from a flat list of collected routes and a domain
|
package/dist/collector.js.map
CHANGED
|
@@ -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
|
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;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
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
|
-
|
|
108
|
+
primaryCollector.domain(prefix, domainConfig);
|
|
234
109
|
}
|
|
235
|
-
for (const r of
|
|
236
|
-
|
|
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
|
|
239
|
-
console.log(`\n[tesseract] ${
|
|
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
|
|
242
|
-
|
|
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) {
|
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;AAMhC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA+HxD,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,SAAS,CACvB,OAAwB,EACxB,MAA6D;IAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;IACtD,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,iFAAiF;AAEjF,
|
|
1
|
+
{"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"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"}
|