@apollo-deploy/tesseract 1.6.0 → 1.8.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/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Tesseract
2
2
 
3
- Manifest-first SDK generator — turns `sdk-manifold/v1` manifests into production-ready TypeScript SDKs.
3
+ Manifest-first SDK generator — turns `sdk-manifold/v1` manifests into production-ready SDKs.
4
4
 
5
- Tesseract is **not** an OpenAPI parser. It consumes a purpose-built manifest format designed specifically for SDK generation, producing fully typed, batteries-included TypeScript packages.
5
+ Tesseract is **not** an OpenAPI parser. It consumes a purpose-built manifest format designed specifically for SDK generation, producing fully typed, batteries-included packages across multiple target languages.
6
6
 
7
7
  ## Install
8
8
 
@@ -18,7 +18,7 @@ bun add -g @apollo-deploy/tesseract
18
18
  tesseract generate -i manifest.json -o ./sdk
19
19
  ```
20
20
 
21
- This reads your manifest and produces a complete npm-ready SDK in `./sdk/`.
21
+ This reads your manifest and produces a complete npm-ready TypeScript SDK in `./sdk/`.
22
22
 
23
23
  ## CLI
24
24
 
@@ -30,6 +30,7 @@ Generate an SDK from a static manifest file.
30
30
  |------|----------|-------------|
31
31
  | `-i, --input <path>` | Yes | Path to the `sdk-manifold/v1` manifest JSON file |
32
32
  | `-o, --output <dir>` | Yes | Output directory for the generated SDK |
33
+ | `-l, --language <lang>` | No | Target language: `typescript` (default), `python`, `ruby`, `php`, `go`, `rust`, `kotlin`, `csharp` |
33
34
  | `-n, --name <name>` | No | Override the npm package name |
34
35
  | `--package-version <version>` | No | Override the generated package version |
35
36
  | `--client-name <name>` | No | Override the generated client class name |
@@ -49,7 +50,39 @@ Boot an instrumented Fastify app with `TESSERACT_GENERATE=1` to collect annotate
49
50
  tesseract run dist/app.js
50
51
  ```
51
52
 
52
- The app must register `tesseractPlugin` from `@apollo-deploy/tesseract/fastify`. See [Fastify Integration](#fastify-integration) below.
53
+ The app must register `tesseractPlugin` from `@apollo-deploy/tesseract/fastify`. See [Fastify Integration](#fastify) below.
54
+
55
+ ## Target Languages
56
+
57
+ Tesseract ships adapters for multiple target languages. Pass `-l <lang>` to `tesseract generate`, set `language` in `CollectorOptions`, or use `additionalTargets` to emit multiple languages in a single run.
58
+
59
+ | Language | Value | Output |
60
+ |----------|-------|--------|
61
+ | TypeScript | `typescript` | npm-ready package with Axios transport |
62
+ | Python | `python` | pip-ready package |
63
+ | Ruby | `ruby` | gem-ready package |
64
+ | PHP | `php` | Composer package |
65
+ | Go | `go` | Go module |
66
+ | Rust | `rust` | Cargo crate |
67
+ | Kotlin | `kotlin` | Gradle project with Ktor + kotlinx.serialization |
68
+ | C# | `csharp` | NuGet package |
69
+
70
+ ### Multiple targets in one run
71
+
72
+ Use `additionalTargets` on any collector or the Fastify plugin to emit multiple languages simultaneously without running the generator twice:
73
+
74
+ ```ts
75
+ const collector = new SDKCollector({
76
+ info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
77
+ output: './sdk/typescript', // primary — TypeScript
78
+ additionalTargets: [
79
+ { language: 'kotlin', output: './sdk/java' },
80
+ { language: 'python', output: './sdk/python', packageName: 'my-api' },
81
+ ],
82
+ });
83
+ ```
84
+
85
+ Each additional target inherits `clientType`, `packageName`, `packageVersion`, and `sdkStyle` from the primary options unless overridden per-target.
53
86
 
54
87
  ## Input: The Manifest
55
88
 
@@ -124,17 +157,13 @@ Tesseract ships adapters for every major Node.js API framework. Each adapter is
124
157
  | **NestJS** | `@apollo-deploy/tesseract/nestjs` |
125
158
  | **Generic / any framework** | `import { SDKCollector } from '@apollo-deploy/tesseract'` |
126
159
 
127
- All non-Fastify adapters follow the same pattern:
128
-
129
- 1. Create an `SDKCollector` (or framework-specific subclass) with your API metadata.
130
- 2. Register domains and routes with the collector alongside your framework route definitions.
131
- 3. Call `collector.tryGenerate()` (or let a plugin do it) — it only runs when `TESSERACT_GENERATE=1`.
160
+ All adapters share the same `CollectorOptions` interface, which means `language` and `additionalTargets` work identically across every framework.
132
161
 
133
162
  ---
134
163
 
135
164
  ### Fastify
136
165
 
137
- The Fastify adapter hooks into `onRoute` to collect routes automatically at boot time — no manual registration needed.
166
+ The Fastify adapter hooks into `onRoute` to collect routes automatically at boot time — no manual registration needed. Internally it delegates to `SDKCollector`, so all `CollectorOptions` including `language` and `additionalTargets` are supported.
138
167
 
139
168
  ```ts
140
169
  // app.ts
@@ -143,6 +172,10 @@ import { tesseractPlugin } from '@apollo-deploy/tesseract/fastify';
143
172
  app.register(tesseractPlugin, {
144
173
  info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
145
174
  output: './packages/api-sdk',
175
+ // Generate a Kotlin SDK alongside the primary TypeScript one:
176
+ additionalTargets: [
177
+ { language: 'kotlin', output: './sdk/java' },
178
+ ],
146
179
  // Optional: import types from a shared package instead of regenerating them
147
180
  schemaPackage: { name: '@my-org/schemas', version: '^2.0.0' },
148
181
  sdkStyle: 'functional', // or 'class'
@@ -209,6 +242,9 @@ const app = express();
209
242
  const collector = new ExpressSDKCollector({
210
243
  info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
211
244
  output: './packages/api-sdk',
245
+ additionalTargets: [
246
+ { language: 'kotlin', output: './sdk/java' },
247
+ ],
212
248
  });
213
249
 
214
250
  collector.domain('/users', { domain: 'users', description: 'User management' });
@@ -357,6 +393,9 @@ async function bootstrap() {
357
393
  const collector = new SDKCollector({
358
394
  info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
359
395
  output: './packages/api-sdk',
396
+ additionalTargets: [
397
+ { language: 'kotlin', output: './sdk/java' },
398
+ ],
360
399
  });
361
400
  collectFromNestControllers([UsersController], collector);
362
401
  await collector.generate();
@@ -385,6 +424,10 @@ import { SDKCollector } from '@apollo-deploy/tesseract';
385
424
  const collector = new SDKCollector({
386
425
  info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
387
426
  output: './packages/api-sdk',
427
+ additionalTargets: [
428
+ { language: 'kotlin', output: './sdk/java' },
429
+ { language: 'python', output: './sdk/python', packageName: 'my-api' },
430
+ ],
388
431
  });
389
432
 
390
433
  collector.domain('/users', { domain: 'users', description: 'User management' });
@@ -397,7 +440,9 @@ if (await collector.tryGenerate()) process.exit(0);
397
440
 
398
441
  ## Output
399
442
 
400
- Tesseract generates a complete, publishable npm package. The structure varies slightly by `sdkStyle`.
443
+ Tesseract generates a complete, publishable package. Structure varies by `sdkStyle` and target language.
444
+
445
+ ### TypeScript (default)
401
446
 
402
447
  **Functional style** (default — `createMyClient(config)`):
403
448
 
@@ -408,27 +453,51 @@ sdk/
408
453
  ├── README.md
409
454
  ├── index.ts
410
455
  └── src/
411
- ├── client.ts # Main client with config, auth, plugins
456
+ ├── client.ts
412
457
  ├── transport/
413
- │ ├── axios.ts # HTTP transport with retries, telemetry
414
- │ └── sse.ts # SSE streaming transport (if needed)
458
+ │ ├── axios.ts
459
+ │ └── sse.ts
415
460
  ├── domain/
416
- ├── users.ts # Domain-grouped API methods
417
- │ └── ...
461
+ └── users.ts
418
462
  ├── types/
419
- │ ├── models.ts # Interfaces, type aliases, enums
420
- │ ├── common.ts # Pagination, error envelope
421
- │ ├── errors.ts # SDKError class
422
- │ └── index.ts # Barrel export
463
+ │ ├── models.ts
464
+ │ ├── common.ts
465
+ │ ├── errors.ts
466
+ │ └── index.ts
423
467
  ├── utils/
424
- │ └── query.ts # Query parameter utilities
468
+ │ └── query.ts
425
469
  └── webhooks/
426
- └── handler.ts # Typed webhook registry (if needed)
470
+ └── handler.ts
471
+ ```
472
+
473
+ **Class style** (`--sdk-style class` — `new MySDK('api_key', options?)`): generates `client-class.ts`, `domain-class/` files, and a matching `index.ts`.
474
+
475
+ ### Kotlin
476
+
477
+ Generates a Gradle project using Ktor HTTP client, kotlinx.serialization, and coroutines:
478
+
479
+ ```
480
+ sdk/java/
481
+ ├── build.gradle.kts
482
+ ├── settings.gradle.kts
483
+ ├── gradle.properties
484
+ ├── gradle/wrapper/gradle-wrapper.properties
485
+ ├── .gitignore
486
+ ├── README.md
487
+ └── src/main/kotlin/<package>/
488
+ ├── Client.kt
489
+ ├── internal/Transport.kt
490
+ ├── exceptions/SdkException.kt
491
+ ├── models/Types.kt
492
+ └── api/
493
+ └── UsersAPI.kt
427
494
  ```
428
495
 
429
- **Class style** (`--sdk-style class` — `new MySDK('api_key', options?)`): generates `client-class.ts`, `domain-class/` files, and a matching `index.ts` using the class-based entry point.
496
+ ### Other languages
497
+
498
+ Python, Ruby, PHP, Go, Rust, and C# each generate idiomatic project scaffolding with appropriate package manager files and typed client code.
430
499
 
431
- ### Generated SDK Features
500
+ ### Generated TypeScript SDK Features
432
501
 
433
502
  - **Typed client** with grouped domain methods
434
503
  - **Automatic retries** with exponential backoff, jitter, and customizable retry logic
@@ -442,7 +511,7 @@ sdk/
442
511
  - **AbortSignal support** for request cancellation
443
512
  - **Per-request overrides** — timeout, headers, retry config
444
513
 
445
- ### Example Usage of Generated SDK
514
+ ### Example Usage of Generated TypeScript SDK
446
515
 
447
516
  ```typescript
448
517
  import { createMyApiClient } from './sdk';
@@ -500,7 +569,7 @@ Tesseract uses a dual strategy:
500
569
  - **[ts-morph](https://ts-morph.com/)** (AST-based) for type definitions — interfaces, enums, type aliases
501
570
  - **[Handlebars](https://handlebarsjs.com/)** templates for everything else — client, transport, domain methods, utilities
502
571
 
503
- All output is formatted with Prettier.
572
+ TypeScript output is formatted with Prettier.
504
573
 
505
574
  ## Programmatic API
506
575
 
@@ -510,15 +579,13 @@ import { generate } from '@apollo-deploy/tesseract';
510
579
  await generate({
511
580
  input: './manifest.json',
512
581
  output: './sdk',
513
- language: 'typescript',
582
+ language: 'kotlin',
514
583
  packageName: '@my-org/api-sdk',
515
584
  packageVersion: '1.2.3',
516
- clientName: 'MyApi',
517
- baseUrl: 'https://api.example.com',
518
585
  });
519
586
  ```
520
587
 
521
- You can also pass a pre-parsed manifest object instead of a file path:
588
+ You can also pass a pre-parsed manifest object:
522
589
 
523
590
  ```typescript
524
591
  import { generate } from '@apollo-deploy/tesseract';
@@ -526,7 +593,7 @@ import type { BackendManifest } from '@apollo-deploy/tesseract';
526
593
 
527
594
  const manifest: BackendManifest = { /* ... */ };
528
595
 
529
- await generate({ manifest, output: './sdk' });
596
+ await generate({ manifest, output: './sdk', language: 'kotlin' });
530
597
  ```
531
598
 
532
599
  ### Configuration
@@ -538,8 +605,8 @@ Either `input` or `manifest` must be provided.
538
605
  | `input` | `string?` | Path to the manifest file. Required if `manifest` is not provided. |
539
606
  | `manifest` | `BackendManifest?` | Pre-parsed manifest object. Alternative to `input`. |
540
607
  | `output` | `string` | Output directory |
541
- | `language` | `'typescript'` | Target language |
542
- | `packageName` | `string?` | Override npm package name |
608
+ | `language` | `TargetLanguage?` | Target language (default: `typescript`). One of: `typescript`, `python`, `ruby`, `php`, `go`, `rust`, `kotlin`, `csharp` |
609
+ | `packageName` | `string?` | Override npm/package name |
543
610
  | `packageVersion` | `string?` | Override generated package version; defaults to `info.version` from the manifest |
544
611
  | `clientName` | `string?` | Override client class name |
545
612
  | `baseUrl` | `string?` | Override default base URL |
@@ -550,6 +617,33 @@ Either `input` or `manifest` must be provided.
550
617
  | `check` | `boolean?` | Compare output without writing |
551
618
  | `prettier` | `boolean?` | Toggle formatting (default: `true`) |
552
619
 
620
+ ### `CollectorOptions`
621
+
622
+ Shared by all framework adapters and `SDKCollector`. Extends the programmatic API config with `additionalTargets`.
623
+
624
+ | Option | Type | Description |
625
+ |--------|------|-------------|
626
+ | `info` | `object` | API metadata: `title`, `version`, `baseUrl?`, `description?` |
627
+ | `output` | `string` | Primary output directory |
628
+ | `language` | `TargetLanguage?` | Primary target language (default: `typescript`) |
629
+ | `additionalTargets` | `AdditionalTarget[]?` | Extra languages to emit alongside the primary output |
630
+ | `schemaPackage` | `object?` | External type package: `name`, `version?`, `importPath?` |
631
+ | `sdkStyle` | `'functional' \| 'class'?` | SDK style |
632
+ | `clientType` | `'internal' \| 'public'?` | Client type |
633
+ | `packageName` | `string?` | Override package name |
634
+ | `packageVersion` | `string?` | Override package version |
635
+
636
+ Each `AdditionalTarget` entry:
637
+
638
+ | Field | Type | Description |
639
+ |-------|------|-------------|
640
+ | `language` | `TargetLanguage` | Required. Target language for this output |
641
+ | `output` | `string` | Required. Output directory |
642
+ | `packageName` | `string?` | Overrides primary `packageName` for this target |
643
+ | `packageVersion` | `string?` | Overrides primary `packageVersion` for this target |
644
+ | `clientType` | `'internal' \| 'public'?` | Overrides primary `clientType` for this target |
645
+ | `sdkStyle` | `'functional' \| 'class'?` | Overrides primary `sdkStyle` for this target |
646
+
553
647
  ## Requirements
554
648
 
555
649
  - Node.js ≥ 18 or Bun ≥ 1.0
@@ -28,6 +28,7 @@
28
28
  */
29
29
  import type { BackendManifest, ManifestRouteSchema } from './types/manifest.js';
30
30
  import type { SDKModuleConfig, SDKRouteConfig } from './types/sdk-module.js';
31
+ import type { TargetLanguage } from './types/ir.js';
31
32
  export interface CollectorOptions {
32
33
  /** API metadata written into the generated package.json and README. */
33
34
  info: {
@@ -57,6 +58,55 @@ export interface CollectorOptions {
57
58
  packageName?: string;
58
59
  /** Override the generated package version. */
59
60
  packageVersion?: string;
61
+ /**
62
+ * Target SDK language for the primary output. Defaults to `'typescript'`.
63
+ * Use `additionalTargets` to emit multiple languages simultaneously.
64
+ */
65
+ language?: TargetLanguage;
66
+ /**
67
+ * Additional SDK targets to generate alongside the primary output.
68
+ *
69
+ * Each entry runs a full generation pass with its own language adapter and
70
+ * output directory. The primary SDK is unaffected.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const collector = new SDKCollector({
75
+ * info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
76
+ * output: './packages/api-sdk',
77
+ * additionalTargets: [
78
+ * { language: 'kotlin', output: './sdk/java' },
79
+ * { language: 'python', output: './sdk/python', packageName: 'my-api' },
80
+ * ],
81
+ * });
82
+ * ```
83
+ */
84
+ additionalTargets?: Array<{
85
+ language: TargetLanguage;
86
+ output: string;
87
+ packageName?: string;
88
+ packageVersion?: string;
89
+ clientType?: 'internal' | 'public';
90
+ sdkStyle?: 'functional' | 'class';
91
+ /**
92
+ * Override the schema package for this target.
93
+ *
94
+ * Set to `null` to disable external type imports for this target, causing
95
+ * all types to be generated inline. Useful when the primary output imports
96
+ * from a shared TypeScript package but an additional target (e.g. Kotlin)
97
+ * needs self-contained inline types.
98
+ *
99
+ * Omit to inherit the primary `schemaPackage`.
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * additionalTargets: [
104
+ * { language: 'kotlin', output: './sdk/java', schemaPackage: null },
105
+ * ]
106
+ * ```
107
+ */
108
+ schemaPackage?: CollectorOptions['schemaPackage'] | null;
109
+ }>;
60
110
  }
61
111
  export interface CollectorRouteConfig {
62
112
  /** JSON Schemas for params, querystring, body, headers, and response. */
@@ -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,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE7E,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,+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;CACzB;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;IAa9D;;;;;;;;;;OAUG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAStC;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,CAuCjB"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
package/dist/collector.js CHANGED
@@ -79,14 +79,40 @@ export class SDKCollector {
79
79
  async generate() {
80
80
  const { generate } = await import('./index.js');
81
81
  const manifest = this.buildManifest();
82
- return generate({
82
+ const primary = await generate({
83
83
  manifest,
84
84
  output: this.opts.output,
85
+ language: this.opts.language,
85
86
  clientType: this.opts.clientType,
86
87
  packageName: this.opts.packageName,
87
88
  packageVersion: this.opts.packageVersion,
88
89
  sdkStyle: this.opts.sdkStyle,
89
90
  });
91
+ 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
+ const hasSchemaPackageOverride = Object.prototype.hasOwnProperty.call(target, 'schemaPackage');
96
+ const targetManifest = hasSchemaPackageOverride
97
+ ? buildManifestFromRoutes(this._routes, this._registry, this.opts.info, target.schemaPackage ?? undefined)
98
+ : manifest;
99
+ const extra = await generate({
100
+ manifest: targetManifest,
101
+ output: target.output,
102
+ language: target.language,
103
+ clientType: target.clientType ?? this.opts.clientType,
104
+ packageName: target.packageName ?? this.opts.packageName,
105
+ packageVersion: target.packageVersion ?? this.opts.packageVersion,
106
+ sdkStyle: target.sdkStyle ?? this.opts.sdkStyle,
107
+ });
108
+ // Merge warnings and counts back into the primary result so callers
109
+ // get a single aggregated result regardless of target count.
110
+ primary.filesWritten += extra.filesWritten;
111
+ primary.filesSkipped += extra.filesSkipped;
112
+ primary.warnings.push(...extra.warnings);
113
+ primary.changedFiles.push(...extra.changedFiles);
114
+ }
115
+ return primary;
90
116
  }
91
117
  /**
92
118
  * Check if `TESSERACT_GENERATE=1` is set and generate the SDK if so.
@@ -107,7 +133,8 @@ export class SDKCollector {
107
133
  for (const w of result.warnings)
108
134
  console.warn(` ⚠ ${w}`);
109
135
  }
110
- console.log(`[tesseract] ✓ ${result.filesWritten} files written → ${this.opts.output}`);
136
+ const targets = [this.opts.output, ...(this.opts.additionalTargets ?? []).map((t) => t.output)];
137
+ console.log(`[tesseract] ✓ ${result.filesWritten} files written → ${targets.join(', ')}`);
111
138
  return true;
112
139
  }
113
140
  }
@@ -149,6 +176,7 @@ export function buildManifestFromRoutes(routes, registry, info, schemaPackage) {
149
176
  },
150
177
  ...(schemaPackage && { schemaPackage }),
151
178
  domains: [...domainMap.values()].map(({ config, routes }) => ({ ...config, routes })),
179
+ ...buildDefinitionsFromDefs(routes),
152
180
  };
153
181
  }
154
182
  /** Derives a domain prefix from the first non-parameter URL segment. */
@@ -156,4 +184,71 @@ function derivePrefix(url) {
156
184
  const first = url.split('/').find((s) => s.length > 0 && !s.startsWith(':'));
157
185
  return first ? '/' + first : '/';
158
186
  }
187
+ // ── $defs extraction ──────────────────────────────────────────────────────────
188
+ /**
189
+ * Walk every schema value in every route and collect all `$defs` blocks.
190
+ * When `toJSONSchema` (e.g. Zod v4) produces a schema with `$defs`, those
191
+ * named definitions are lifted into `manifest.definitions` so that intake
192
+ * can generate named data classes (e.g. Kotlin `data class`) rather than
193
+ * expanding every reference inline.
194
+ *
195
+ * Returns `{ definitions }` only when at least one def is found, so the
196
+ * spread into the manifest is a no-op for manifests that have none.
197
+ */
198
+ function buildDefinitionsFromDefs(routes) {
199
+ const defs = {};
200
+ for (const route of routes) {
201
+ const s = route.schema;
202
+ if (!s)
203
+ continue;
204
+ const fields = [
205
+ s.params,
206
+ s.querystring,
207
+ s.query,
208
+ s.body,
209
+ s.headers,
210
+ ...(s.response ? Object.values(s.response) : []),
211
+ ];
212
+ for (const field of fields) {
213
+ if (field)
214
+ collectDefs(field, defs);
215
+ }
216
+ }
217
+ return Object.keys(defs).length > 0 ? { definitions: defs } : {};
218
+ }
219
+ /**
220
+ * Recursively collect all `$defs` entries found anywhere in a JSON Schema
221
+ * object into the `out` accumulator. Entries already present are not
222
+ * overwritten (first-write wins, matching JSON Schema semantics).
223
+ */
224
+ function collectDefs(schema, out) {
225
+ if (!schema || typeof schema !== 'object')
226
+ return;
227
+ if (schema.$defs && typeof schema.$defs === 'object' && !Array.isArray(schema.$defs)) {
228
+ for (const [key, val] of Object.entries(schema.$defs)) {
229
+ if (!(key in out))
230
+ out[key] = val;
231
+ // Recurse into the def itself — it may contain nested $defs
232
+ if (val && typeof val === 'object')
233
+ collectDefs(val, out);
234
+ }
235
+ }
236
+ // Recurse into all schema fields that may contain nested schemas
237
+ for (const key of Object.keys(schema)) {
238
+ if (key === '$defs')
239
+ continue;
240
+ const val = schema[key];
241
+ if (!val || typeof val !== 'object')
242
+ continue;
243
+ if (Array.isArray(val)) {
244
+ for (const item of val) {
245
+ if (item && typeof item === 'object')
246
+ collectDefs(item, out);
247
+ }
248
+ }
249
+ else {
250
+ collectDefs(val, out);
251
+ }
252
+ }
253
+ }
159
254
  //# 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
@@ -19,6 +19,8 @@
19
19
  */
20
20
  import type { FastifyInstance, FastifyPluginAsync } from 'fastify';
21
21
  import type { SDKModuleConfig, SDKRouteConfig } from './types/sdk-module.js';
22
+ import type { TargetLanguage } from './types/ir.js';
23
+ import type { CollectorOptions } from './collector.js';
22
24
  declare module 'fastify' {
23
25
  interface RouteOptions {
24
26
  /** SDK generation configuration for this route. Sibling to `schema`. */
@@ -104,6 +106,29 @@ export interface TesseractPluginOptions {
104
106
  packageVersion?: string;
105
107
  /** `'functional'` (default) or `'class'` (Resend-style `new MySDK('key')`). */
106
108
  sdkStyle?: 'functional' | 'class';
109
+ /**
110
+ * Additional SDK targets to generate alongside the primary output.
111
+ *
112
+ * Each entry runs a full generation pass with its own language adapter and
113
+ * output directory. The primary SDK is unaffected.
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * app.register(tesseractPlugin, {
118
+ * info: { title: 'My API', version: '1.0.0', baseUrl: 'https://api.example.com' },
119
+ * output: './packages/api-sdk',
120
+ * additionalTargets: [
121
+ * { language: 'kotlin', output: './sdk/java' },
122
+ * { language: 'python', output: './sdk/python', packageName: 'my-api' },
123
+ * ],
124
+ * });
125
+ * ```
126
+ */
127
+ additionalTargets?: CollectorOptions['additionalTargets'];
128
+ /**
129
+ * Target SDK language. Defaults to `'typescript'` when omitted.
130
+ */
131
+ language?: TargetLanguage;
107
132
  }
108
133
  /**
109
134
  * Declare SDK domain metadata for the current Fastify plugin scope.
@@ -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;;;;;;;;;;;;;;;;;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;IAClD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAoND;;;;;;;;;;;;;;;;;;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;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"}
package/dist/fastify.js CHANGED
@@ -19,7 +19,6 @@
19
19
  */
20
20
  import fp from 'fastify-plugin';
21
21
  import { _domainRegistry } from './types/sdk-module.js';
22
- import { buildManifestFromRoutes } from './collector.js';
23
22
  // ── Domain registration helper ────────────────────────────────────────────────
24
23
  /**
25
24
  * Declare SDK domain metadata for the current Fastify plugin scope.
@@ -216,20 +215,30 @@ const _tesseractPlugin = async (fastify, opts) => {
216
215
  // zod not available — schemas stay as-is (JSON Schema passed directly)
217
216
  }
218
217
  }
219
- const manifest = buildManifestFromRoutes(resolvedRoutes, _domainRegistry, opts.info, opts.schemaPackage);
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({
222
+ info: opts.info,
223
+ output: opts.output,
224
+ language: opts.language,
225
+ schemaPackage: opts.schemaPackage,
226
+ clientType: opts.clientType,
227
+ packageName: opts.packageName,
228
+ packageVersion: opts.packageVersion,
229
+ sdkStyle: opts.sdkStyle,
230
+ additionalTargets: opts.additionalTargets,
231
+ });
232
+ for (const [prefix, domainConfig] of _domainRegistry) {
233
+ collector.domain(prefix, domainConfig);
234
+ }
235
+ for (const r of resolvedRoutes) {
236
+ collector.route(r.url, r.method, { sdk: r.sdk, schema: r.schema, sse: r.sse });
237
+ }
238
+ const manifest = collector.buildManifest();
220
239
  console.log(`\n[tesseract] ${manifest.domains.length} domain(s), ${collectedRoutes.length} route(s) → ${opts.output}`);
221
- // Dynamic import keeps the generation pipeline out of the user's app bundle
222
- // when TESSERACT_GENERATE is not set (the plugin returns early above).
223
240
  try {
224
- const { generate } = await import('./index.js');
225
- const result = await generate({
226
- manifest,
227
- output: opts.output,
228
- clientType: opts.clientType,
229
- packageName: opts.packageName,
230
- packageVersion: opts.packageVersion,
231
- sdkStyle: opts.sdkStyle,
232
- });
241
+ const result = await collector.generate();
233
242
  for (const w of result.warnings) {
234
243
  console.warn(` ⚠ ${w}`);
235
244
  }
@@ -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.6.0",
3
+ "version": "1.8.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": {