@workos/oagen 0.22.6 → 0.23.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 +1 -1
- package/dist/cli/index.mjs +271 -42
- package/dist/cli/index.mjs.map +1 -1
- package/dist/compat/index.d.mts +2 -2
- package/dist/compat/index.mjs +9 -8
- package/dist/compat/index.mjs.map +1 -1
- package/dist/{diff-CQzcGuFJ.mjs → diff-B7dMUCoJ.mjs} +235 -27
- package/dist/diff-B7dMUCoJ.mjs.map +1 -0
- package/dist/{differ-CC65Efzt.d.mts → differ-DMmw0tbA.d.mts} +5 -5
- package/dist/{differ-CC65Efzt.d.mts.map → differ-DMmw0tbA.d.mts.map} +1 -1
- package/dist/index.d.mts +64 -9
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +26 -11
- package/dist/index.mjs.map +1 -1
- package/dist/{overlay-cb32jDBS.mjs → overlay-sQHQoN0I.mjs} +4 -4
- package/dist/overlay-sQHQoN0I.mjs.map +1 -0
- package/dist/scripts/smoke/baseline.mjs +25 -10
- package/dist/scripts/smoke/baseline.mjs.map +1 -1
- package/dist/scripts/smoke/sdk-test.mjs +3 -3
- package/dist/scripts/smoke/sdk-test.mjs.map +1 -1
- package/dist/smoke.d.mts +19 -4
- package/dist/smoke.d.mts.map +1 -1
- package/dist/smoke.mjs +25 -10
- package/dist/smoke.mjs.map +1 -1
- package/dist/tree-sitter-DcUvm0KA.mjs.map +1 -1
- package/dist/{types-Cjh39AGQ.d.mts → types-nM5Kp7UP.d.mts} +16 -9
- package/dist/types-nM5Kp7UP.d.mts.map +1 -0
- package/dist/verify/index.d.mts +2 -2
- package/dist/verify/index.mjs +2 -2
- package/docs/architecture/extractor-contract.md +2 -2
- package/docs/architecture/pipeline.md +2 -2
- package/docs/cli.md +19 -19
- package/docs/core/compatibility-policy.md +1 -1
- package/docs/core/manifest-schema.md +2 -2
- package/package.json +1 -1
- package/skills/generate-emitter/SKILL.md +2 -2
- package/skills/generate-emitter/references/common-pitfalls.md +1 -1
- package/skills/generate-emitter/references/project-scaffold.md +3 -3
- package/skills/generate-extractor/SKILL.md +2 -2
- package/skills/generate-smoke-test/SKILL.md +1 -1
- package/skills/verify-smoke-test/SKILL.md +1 -1
- package/dist/diff-CQzcGuFJ.mjs.map +0 -1
- package/dist/overlay-cb32jDBS.mjs.map +0 -1
- package/dist/types-Cjh39AGQ.d.mts.map +0 -1
|
@@ -7,9 +7,9 @@ import { execFileSync } from "node:child_process";
|
|
|
7
7
|
* Runs an SDK smoke test + diff against an existing raw baseline.
|
|
8
8
|
*
|
|
9
9
|
* Usage:
|
|
10
|
-
* npm run smoke -- --lang node --sdk-path path/to/
|
|
11
|
-
* npm run smoke -- --lang ruby --sdk-path path/to/
|
|
12
|
-
* npm run smoke -- --lang node --sdk-path path/to/
|
|
10
|
+
* npm run smoke -- --lang node --sdk-path path/to/acme-node
|
|
11
|
+
* npm run smoke -- --lang ruby --sdk-path path/to/acme-ruby
|
|
12
|
+
* npm run smoke -- --lang node --sdk-path path/to/acme-node --raw-results custom-baseline.json
|
|
13
13
|
*
|
|
14
14
|
* Requires OPENAPI_SPEC_PATH env var (or --spec <path>) pointing to the OpenAPI spec.
|
|
15
15
|
* The --lang flag is required and selects which SDK runner to use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-test.mjs","names":[],"sources":["../../../scripts/smoke/sdk-test.ts"],"sourcesContent":["/**\n * Runs an SDK smoke test + diff against an existing raw baseline.\n *\n * Usage:\n * npm run smoke -- --lang node --sdk-path path/to/
|
|
1
|
+
{"version":3,"file":"sdk-test.mjs","names":[],"sources":["../../../scripts/smoke/sdk-test.ts"],"sourcesContent":["/**\n * Runs an SDK smoke test + diff against an existing raw baseline.\n *\n * Usage:\n * npm run smoke -- --lang node --sdk-path path/to/acme-node\n * npm run smoke -- --lang ruby --sdk-path path/to/acme-ruby\n * npm run smoke -- --lang node --sdk-path path/to/acme-node --raw-results custom-baseline.json\n *\n * Requires OPENAPI_SPEC_PATH env var (or --spec <path>) pointing to the OpenAPI spec.\n * The --lang flag is required and selects which SDK runner to use\n * (e.g. \"node\" → scripts/smoke/sdk-node.ts).\n */\n\nimport { existsSync, writeFileSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport { resolve, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\nconst args = process.argv.slice(2);\n\n// Extract --lang <name> (required)\nconst langIdx = args.indexOf('--lang');\nconst forwardedArgs = [...args];\n\nif (langIdx === -1 || !args[langIdx + 1]) {\n console.error('--lang is required (e.g. --lang node, --lang ruby)');\n process.exit(1);\n}\n\nconst lang = args[langIdx + 1];\nforwardedArgs.splice(langIdx, 2);\n\n// Extract --raw-results <path>\nconst rawResultsIdx = forwardedArgs.indexOf('--raw-results');\nlet rawResultsPath = 'smoke-results-raw.json';\n\nif (rawResultsIdx !== -1 && forwardedArgs[rawResultsIdx + 1]) {\n rawResultsPath = forwardedArgs[rawResultsIdx + 1];\n forwardedArgs.splice(rawResultsIdx, 2);\n}\n\n// Resolve the SDK runner script relative to this file's directory\nconst sdkScript = resolve(__dirname, `sdk-${lang}.ts`);\nif (!existsSync(sdkScript)) {\n console.error(`No smoke runner found for language \"${lang}\" (expected ${sdkScript})`);\n console.error(`Available runners:`);\n const { readdirSync } = await import('node:fs');\n for (const f of readdirSync(__dirname)) {\n const match = f.match(/^sdk-(.+)\\.ts$/);\n if (match && match[1] !== 'test') {\n console.error(` --lang ${match[1]}`);\n }\n }\n process.exit(1);\n}\n\nconst sdkResultsPath = `smoke-results-sdk-${lang}.json`;\n\nconst diffArgs = ['--raw', rawResultsPath, '--sdk', sdkResultsPath];\n\n// Pre-flight: tsc compile check on SDK if tsconfig.json exists\nconst sdkPathIdx = forwardedArgs.indexOf('--sdk-path');\nconst sdkPathValue = sdkPathIdx !== -1 && forwardedArgs[sdkPathIdx + 1] ? forwardedArgs[sdkPathIdx + 1] : undefined;\n\nif (sdkPathValue) {\n const tsconfigPath = resolve(sdkPathValue, 'tsconfig.json');\n if (existsSync(tsconfigPath)) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Type-checking SDK at ${sdkPathValue}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsc', '--noEmit', '--project', sdkPathValue], {\n stdio: 'pipe',\n env: process.env,\n });\n console.log(' Type check passed');\n } catch (err) {\n const output = (err as { stdout?: Buffer; stderr?: Buffer }).stdout?.toString() ?? '';\n const findings = parseTscOutput(output);\n writeFileSync('smoke-compile-errors.json', JSON.stringify(findings, null, 2));\n console.error(` Type check failed (${findings.length} errors). See smoke-compile-errors.json`);\n process.exit(2);\n }\n }\n}\n\nconst steps: [string, string[]][] = [\n [sdkScript, forwardedArgs],\n [resolve(__dirname, 'diff.ts'), diffArgs],\n];\n\nfor (const [script, scriptArgs] of steps) {\n console.log(`\\n${'='.repeat(60)}`);\n console.log(`Running ${script}`);\n console.log('='.repeat(60));\n\n try {\n execFileSync('npx', ['tsx', script, ...scriptArgs], {\n stdio: 'inherit',\n env: process.env,\n });\n } catch {\n process.exit(1);\n }\n}\n\nfunction parseTscOutput(output: string): Array<{ file: string; line: number; code: string; message: string }> {\n const errors: Array<{ file: string; line: number; code: string; message: string }> = [];\n const re = /^(.+)\\((\\d+),\\d+\\): error (TS\\d+): (.+)$/gm;\n let match;\n while ((match = re.exec(output)) !== null) {\n errors.push({\n file: match[1],\n line: Number(match[2]),\n code: match[3],\n message: match[4],\n });\n }\n return errors;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,IAAI,CACZ;AAErC,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,MAAM,UAAU,KAAK,QAAQ,SAAS;AACtC,MAAM,gBAAgB,CAAC,GAAG,KAAK;AAE/B,IAAI,YAAY,MAAM,CAAC,KAAK,UAAU,IAAI;AACxC,SAAQ,MAAM,qDAAqD;AACnE,SAAQ,KAAK,EAAE;;AAGjB,MAAM,OAAO,KAAK,UAAU;AAC5B,cAAc,OAAO,SAAS,EAAE;AAGhC,MAAM,gBAAgB,cAAc,QAAQ,gBAAgB;AAC5D,IAAI,iBAAiB;AAErB,IAAI,kBAAkB,MAAM,cAAc,gBAAgB,IAAI;AAC5D,kBAAiB,cAAc,gBAAgB;AAC/C,eAAc,OAAO,eAAe,EAAE;;AAIxC,MAAM,YAAY,QAAQ,WAAW,OAAO,KAAK,KAAK;AACtD,IAAI,CAAC,WAAW,UAAU,EAAE;AAC1B,SAAQ,MAAM,uCAAuC,KAAK,cAAc,UAAU,GAAG;AACrF,SAAQ,MAAM,qBAAqB;CACnC,MAAM,EAAE,gBAAgB,MAAM,OAAO;AACrC,MAAK,MAAM,KAAK,YAAY,UAAU,EAAE;EACtC,MAAM,QAAQ,EAAE,MAAM,iBAAiB;AACvC,MAAI,SAAS,MAAM,OAAO,OACxB,SAAQ,MAAM,YAAY,MAAM,KAAK;;AAGzC,SAAQ,KAAK,EAAE;;AAGjB,MAAM,iBAAiB,qBAAqB,KAAK;AAEjD,MAAM,WAAW;CAAC;CAAS;CAAgB;CAAS;CAAe;AAGnE,MAAM,aAAa,cAAc,QAAQ,aAAa;AACtD,MAAM,eAAe,eAAe,MAAM,cAAc,aAAa,KAAK,cAAc,aAAa,KAAK,KAAA;AAE1G,IAAI;KAEE,WADiB,QAAQ,cAAc,gBAAgB,CAC/B,EAAE;AAC5B,UAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,UAAQ,IAAI,wBAAwB,eAAe;AACnD,UAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,MAAI;AACF,gBAAa,OAAO;IAAC;IAAO;IAAY;IAAa;IAAa,EAAE;IAClE,OAAO;IACP,KAAK,QAAQ;IACd,CAAC;AACF,WAAQ,IAAI,sBAAsB;WAC3B,KAAK;GAEZ,MAAM,WAAW,eADD,IAA6C,QAAQ,UAAU,IAAI,GAC5C;AACvC,iBAAc,6BAA6B,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AAC7E,WAAQ,MAAM,wBAAwB,SAAS,OAAO,yCAAyC;AAC/F,WAAQ,KAAK,EAAE;;;;AAKrB,MAAM,QAA8B,CAClC,CAAC,WAAW,cAAc,EAC1B,CAAC,QAAQ,WAAW,UAAU,EAAE,SAAS,CAC1C;AAED,KAAK,MAAM,CAAC,QAAQ,eAAe,OAAO;AACxC,SAAQ,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG;AAClC,SAAQ,IAAI,WAAW,SAAS;AAChC,SAAQ,IAAI,IAAI,OAAO,GAAG,CAAC;AAE3B,KAAI;AACF,eAAa,OAAO;GAAC;GAAO;GAAQ,GAAG;GAAW,EAAE;GAClD,OAAO;GACP,KAAK,QAAQ;GACd,CAAC;SACI;AACN,UAAQ,KAAK,EAAE;;;AAInB,SAAS,eAAe,QAAsF;CAC5G,MAAM,SAA+E,EAAE;CACvF,MAAM,KAAK;CACX,IAAI;AACJ,SAAQ,QAAQ,GAAG,KAAK,OAAO,MAAM,KACnC,QAAO,KAAK;EACV,MAAM,MAAM;EACZ,MAAM,OAAO,MAAM,GAAG;EACtB,MAAM,MAAM;EACZ,SAAS,MAAM;EAChB,CAAC;AAEJ,QAAO"}
|
package/dist/smoke.d.mts
CHANGED
|
@@ -44,8 +44,7 @@ interface ErrorPolicy {
|
|
|
44
44
|
serverErrorKind: string;
|
|
45
45
|
/** Catch-all error kind for unrecognized status codes. */
|
|
46
46
|
clientErrorKind: string;
|
|
47
|
-
/** URL template for error documentation. Use {code} as placeholder for the API error code.
|
|
48
|
-
* Example: 'https://workos.com/docs/errors/{code}' */
|
|
47
|
+
/** URL template for error documentation. Use {code} as placeholder for the API error code. */
|
|
49
48
|
errorDocUrlTemplate?: string;
|
|
50
49
|
}
|
|
51
50
|
/** Telemetry — what request metrics to track and send. */
|
|
@@ -83,7 +82,7 @@ interface UserAgentPolicy {
|
|
|
83
82
|
/** Template for the SDK identifier string.
|
|
84
83
|
* Placeholders: {name} = spec name, {lang} = emitter language, {version} = SDK version.
|
|
85
84
|
* Each emitter interpolates with its own language string and casing conventions.
|
|
86
|
-
* Example: '{name} {lang}/{version}' → '
|
|
85
|
+
* Example: '{name} {lang}/{version}' → 'Acme PHP/4.32.0' */
|
|
87
86
|
sdkIdentifierTemplate: string;
|
|
88
87
|
/** Whether to append the runtime/language version (e.g. PHP 8.2, Python 3.12). */
|
|
89
88
|
includeRuntimeVersion: boolean;
|
|
@@ -109,7 +108,7 @@ interface RequestGuardPolicy {
|
|
|
109
108
|
interface TimeoutPolicy {
|
|
110
109
|
/** Default HTTP request timeout in seconds. */
|
|
111
110
|
defaultTimeoutSeconds: number;
|
|
112
|
-
/** Environment variable name to override the timeout (e.g. '
|
|
111
|
+
/** Environment variable name to override the timeout (e.g. 'SDK_REQUEST_TIMEOUT'). */
|
|
113
112
|
timeoutEnvVar?: string;
|
|
114
113
|
}
|
|
115
114
|
/** Language-agnostic runtime policies for generated SDKs.
|
|
@@ -318,6 +317,15 @@ interface Model {
|
|
|
318
317
|
}
|
|
319
318
|
interface Field {
|
|
320
319
|
name: string;
|
|
320
|
+
/**
|
|
321
|
+
* Optional domain-facing name override. When set, emitters derive the
|
|
322
|
+
* domain-side identifier (in their own casing) from this instead of `name`,
|
|
323
|
+
* while serialization still uses `name` for the wire key. Lets an SDK expose
|
|
324
|
+
* a wire field under a friendlier name (e.g. `connection_type` → `type`)
|
|
325
|
+
* without changing the API contract. Set via the `fieldHints` config and
|
|
326
|
+
* honored by any emitter that reads it.
|
|
327
|
+
*/
|
|
328
|
+
domainName?: string;
|
|
321
329
|
type: TypeRef;
|
|
322
330
|
required: boolean;
|
|
323
331
|
description?: string;
|
|
@@ -363,6 +371,13 @@ type OpenApiDocument = Record<string, unknown>;
|
|
|
363
371
|
interface ParseOptions {
|
|
364
372
|
operationIdTransform?: (id: string) => string;
|
|
365
373
|
schemaNameTransform?: (name: string) => string;
|
|
374
|
+
/**
|
|
375
|
+
* Domain-facing field-name overrides, keyed by IR model name then wire field
|
|
376
|
+
* name: `{ Connection: { connection_type: 'type' } }`. Sets `Field.domainName`
|
|
377
|
+
* so emitters expose the field under the friendlier name while keeping the
|
|
378
|
+
* wire key. Language-agnostic — honored by any emitter that reads `domainName`.
|
|
379
|
+
*/
|
|
380
|
+
fieldHints?: Record<string, Record<string, string>>;
|
|
366
381
|
/**
|
|
367
382
|
* Pre-IR overlay applied to the bundled OpenAPI document before any IR
|
|
368
383
|
* extraction runs. Use this when the upstream spec can't be changed but you
|
package/dist/smoke.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke.d.mts","names":[],"sources":["../src/ir/sdk-behavior.ts","../src/ir/types.ts","../src/parser/parse.ts","../src/utils/naming.ts","../scripts/smoke/shared.ts"],"mappings":";;;;AAYA;;;;;;UAAiB,WAAA;EAQf;EANA,oBAAA;EAQS;EANT,UAAA;EAMwB;EAJxB,sBAAA;EAY8B;EAV9B,cAAA;EAU8B;EAR9B,OAAA,EAAS,eAAA;AAAA;;;;;AAsBX;UAdiB,eAAA;;EAEf,YAAA;EAeA;EAbA,UAAA;EAeA;EAbA,QAAA;
|
|
1
|
+
{"version":3,"file":"smoke.d.mts","names":[],"sources":["../src/ir/sdk-behavior.ts","../src/ir/types.ts","../src/parser/parse.ts","../src/utils/naming.ts","../scripts/smoke/shared.ts"],"mappings":"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"}
|
package/dist/smoke.mjs
CHANGED
|
@@ -145,9 +145,8 @@ function cleanSchemaName(name) {
|
|
|
145
145
|
//#endregion
|
|
146
146
|
//#region src/ir/sdk-behavior.ts
|
|
147
147
|
/**
|
|
148
|
-
* Canonical SDK behavior defaults.
|
|
149
|
-
*
|
|
150
|
-
* via `mergeSdkBehavior()` in each SDK's `oagen.config.ts`.
|
|
148
|
+
* Canonical SDK behavior defaults. Per-language or per-project overrides can
|
|
149
|
+
* be applied via `mergeSdkBehavior()` in each SDK's `oagen.config.ts`.
|
|
151
150
|
*
|
|
152
151
|
* - Retry: exponential backoff with jitter, retries on 429/5xx
|
|
153
152
|
* - Errors: standard HTTP status → exception kind mapping
|
|
@@ -190,12 +189,11 @@ function defaultSdkBehavior() {
|
|
|
190
189
|
429: "RateLimitExceeded"
|
|
191
190
|
},
|
|
192
191
|
serverErrorKind: "Server",
|
|
193
|
-
clientErrorKind: "Api"
|
|
194
|
-
errorDocUrlTemplate: "https://workos.com/docs/errors/{code}"
|
|
192
|
+
clientErrorKind: "Api"
|
|
195
193
|
},
|
|
196
194
|
telemetry: {
|
|
197
195
|
enabledByDefault: true,
|
|
198
|
-
headerName: "X-
|
|
196
|
+
headerName: "X-Client-Telemetry",
|
|
199
197
|
requestIdHeader: "X-Request-ID"
|
|
200
198
|
},
|
|
201
199
|
pagination: { autoPageDelayMs: 0 },
|
|
@@ -1993,11 +1991,11 @@ function inferVerb(method, path) {
|
|
|
1993
1991
|
* Uses the last non-param segment (the resource being operated on).
|
|
1994
1992
|
*
|
|
1995
1993
|
* Examples:
|
|
1996
|
-
* /
|
|
1997
|
-
* /
|
|
1998
|
-
* /
|
|
1994
|
+
* /accounts/users → "Users"
|
|
1995
|
+
* /accounts/users/{id} → "User" (singular for item operations)
|
|
1996
|
+
* /accounts/users/{id}/auth_factors → "AuthFactors"
|
|
1999
1997
|
* /organizations/{id}/api_keys → "ApiKeys"
|
|
2000
|
-
* /
|
|
1998
|
+
* /auth/authorize → "Authorize" (action endpoint)
|
|
2001
1999
|
*/
|
|
2002
2000
|
function inferResourceFromPath(path) {
|
|
2003
2001
|
const segments = path.split("/").filter(Boolean);
|
|
@@ -2643,6 +2641,7 @@ async function parseSpec(specPath, options) {
|
|
|
2643
2641
|
const fieldInlineModels = extractInlineModelsFromSchemas(spec.components?.schemas);
|
|
2644
2642
|
clearSchemaNameTransform();
|
|
2645
2643
|
const finalModels = collapseJsonSuffixModels(mergeFieldInlineModels(responseNormalizedModels, fieldInlineModels), services);
|
|
2644
|
+
applyFieldHints(finalModels, options?.fieldHints);
|
|
2646
2645
|
collectInlineEnumsFromModels(finalModels, enums);
|
|
2647
2646
|
collectInlineEnumsFromOperations(services, enums);
|
|
2648
2647
|
const auth = extractAuthSchemes(spec.components?.securitySchemes);
|
|
@@ -2665,6 +2664,22 @@ async function parseSpec(specPath, options) {
|
|
|
2665
2664
|
validateModelRefs(result);
|
|
2666
2665
|
return result;
|
|
2667
2666
|
}
|
|
2667
|
+
/**
|
|
2668
|
+
* Apply `fieldHints` onto the built models, setting `Field.domainName` for each
|
|
2669
|
+
* matching (model name, wire field name) pair. Serialization still uses
|
|
2670
|
+
* `Field.name`; only the domain-facing identifier changes.
|
|
2671
|
+
*/
|
|
2672
|
+
function applyFieldHints(models, fieldHints) {
|
|
2673
|
+
if (!fieldHints) return;
|
|
2674
|
+
for (const model of models) {
|
|
2675
|
+
const hints = fieldHints[model.name];
|
|
2676
|
+
if (!hints) continue;
|
|
2677
|
+
for (const field of model.fields) {
|
|
2678
|
+
const domainName = hints[field.name];
|
|
2679
|
+
if (domainName) field.domainName = domainName;
|
|
2680
|
+
}
|
|
2681
|
+
}
|
|
2682
|
+
}
|
|
2668
2683
|
/** Extract authentication schemes from OpenAPI securitySchemes. */
|
|
2669
2684
|
function extractAuthSchemes(securitySchemes) {
|
|
2670
2685
|
if (!securitySchemes) return void 0;
|