@workos/oagen 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/cli/index.d.mts +2 -0
  2. package/dist/cli/index.mjs +6018 -0
  3. package/dist/cli/index.mjs.map +1 -0
  4. package/dist/compat/{index.d.ts → index.d.mts} +43 -114
  5. package/dist/compat/index.d.mts.map +1 -0
  6. package/dist/compat/index.mjs +4562 -0
  7. package/dist/compat/index.mjs.map +1 -0
  8. package/dist/diff-DyQF4sel.mjs +2250 -0
  9. package/dist/diff-DyQF4sel.mjs.map +1 -0
  10. package/dist/differ-BwelBJN0.mjs +1100 -0
  11. package/dist/differ-BwelBJN0.mjs.map +1 -0
  12. package/dist/index.d.mts +295 -0
  13. package/dist/index.d.mts.map +1 -0
  14. package/dist/index.mjs +1553 -0
  15. package/dist/index.mjs.map +1 -0
  16. package/dist/scripts/smoke/baseline.d.mts +1 -0
  17. package/dist/scripts/smoke/baseline.mjs +1916 -0
  18. package/dist/scripts/smoke/baseline.mjs.map +1 -0
  19. package/dist/scripts/smoke/sdk-test.d.mts +1 -0
  20. package/dist/scripts/smoke/sdk-test.mjs +111 -0
  21. package/dist/scripts/smoke/sdk-test.mjs.map +1 -0
  22. package/dist/smoke.d.mts +331 -0
  23. package/dist/smoke.d.mts.map +1 -0
  24. package/dist/smoke.mjs +2084 -0
  25. package/dist/smoke.mjs.map +1 -0
  26. package/dist/tree-sitter-BPNfbEzY.mjs +359 -0
  27. package/dist/tree-sitter-BPNfbEzY.mjs.map +1 -0
  28. package/dist/types-O25qZxMl.d.mts +397 -0
  29. package/dist/types-O25qZxMl.d.mts.map +1 -0
  30. package/dist/verify/index.d.mts +82 -0
  31. package/dist/verify/index.d.mts.map +1 -0
  32. package/dist/verify/index.mjs +327 -0
  33. package/dist/verify/index.mjs.map +1 -0
  34. package/package.json +19 -16
  35. package/dist/chunk-CIX5NOBF.js +0 -263
  36. package/dist/chunk-IJ5E5AE7.js +0 -1040
  37. package/dist/chunk-VUSRNIG2.js +0 -1661
  38. package/dist/cli/index.js +0 -5314
  39. package/dist/compat/index.js +0 -4491
  40. package/dist/index.d.ts +0 -277
  41. package/dist/index.js +0 -1565
  42. package/dist/scripts/smoke/baseline.js +0 -1813
  43. package/dist/scripts/smoke/sdk-test.js +0 -93
  44. package/dist/smoke.js +0 -2025
  45. package/dist/types-B5t9O9Wm.d.ts +0 -367
  46. package/dist/verify/index.d.ts +0 -76
  47. package/dist/verify/index.js +0 -336
package/dist/index.d.ts DELETED
@@ -1,277 +0,0 @@
1
- import { M as Model, A as ApiSpec, a as ApiSurface, O as OverlayLookup, E as Enum, S as Service, b as Operation, c as Extractor } from './types-B5t9O9Wm.js';
2
- export { d as ArrayType, e as AuthScheme, f as EnumRef, g as EnumValue, h as ErrorResponse, F as Field, H as HttpMethod, L as LiteralType, i as MapType, j as ModelRef, N as NullableType, P as PaginationMeta, k as Parameter, l as PrimitiveType, m as ServerEntry, n as SuccessResponse, T as TypeParam, o as TypeRef, U as UnionType, p as assertNever, q as mapTypeRef, w as walkTypeRef } from './types-B5t9O9Wm.js';
3
-
4
- /**
5
- * Structured error hierarchy for oagen.
6
- *
7
- * Every error carries a human-readable `hint` that suggests a recovery action.
8
- * The hint is appended to the `message` so it appears in stack traces and logs.
9
- */
10
- /** Base class for all oagen errors. */
11
- declare class OagenError extends Error {
12
- readonly hint: string;
13
- constructor(message: string, hint: string);
14
- }
15
- /** Thrown when a command should terminate with a specific exit code. */
16
- declare class CommandError extends OagenError {
17
- readonly exitCode: number;
18
- constructor(message: string, hint: string, exitCode: number);
19
- }
20
- /** Thrown when an OpenAPI spec cannot be parsed or has an unsupported version. */
21
- declare class SpecParseError extends OagenError {
22
- constructor(message: string, hint: string);
23
- }
24
- /** Thrown when configuration files (manifests, API surfaces, overlays) are missing or malformed. */
25
- declare class ConfigError extends OagenError {
26
- constructor(message: string, hint: string);
27
- }
28
- /** Thrown when a config file exists but cannot be loaded or evaluated. */
29
- declare class ConfigLoadError extends ConfigError {
30
- constructor(message: string, hint: string);
31
- }
32
- /** Thrown when a config targets a different IR version than the installed package. */
33
- declare class ConfigVersionMismatchError extends ConfigError {
34
- constructor(message: string, hint: string);
35
- }
36
- /** Thrown when an API surface extractor encounters a problem. */
37
- declare class ExtractorError extends OagenError {
38
- constructor(message: string, hint: string);
39
- }
40
- /** Thrown when a requested language or extractor is not found in a registry. */
41
- declare class RegistryError extends OagenError {
42
- constructor(message: string, hint: string);
43
- }
44
- /** Thrown for internal invariant violations that indicate a bug. */
45
- declare class InternalError extends OagenError {
46
- constructor(message: string, hint: string);
47
- }
48
-
49
- interface GeneratedFile {
50
- path: string;
51
- content: string;
52
- skipIfExists?: boolean;
53
- headerPlacement?: 'prepend' | 'skip';
54
- /** When false, exclude this file from --target integration. Defaults to true. */
55
- integrateTarget?: boolean;
56
- }
57
- interface EmitterContext {
58
- namespace: string;
59
- namespacePascal: string;
60
- spec: ApiSpec;
61
- outputDir?: string;
62
- apiSurface?: ApiSurface;
63
- overlayLookup?: OverlayLookup;
64
- }
65
- interface Emitter {
66
- language: string;
67
- generateModels(models: Model[], ctx: EmitterContext): GeneratedFile[];
68
- generateEnums(enums: Enum[], ctx: EmitterContext): GeneratedFile[];
69
- generateResources(services: Service[], ctx: EmitterContext): GeneratedFile[];
70
- generateClient(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[];
71
- generateErrors(ctx: EmitterContext): GeneratedFile[];
72
- generateConfig(ctx: EmitterContext): GeneratedFile[];
73
- generateTypeSignatures?(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[];
74
- generateTests(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[];
75
- /** Optional: generate a smoke-manifest.json mapping operationIds to SDK methods */
76
- generateManifest?(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[];
77
- fileHeader(): string;
78
- }
79
-
80
- interface DiffReport {
81
- oldVersion: string;
82
- newVersion: string;
83
- changes: Change[];
84
- summary: {
85
- added: number;
86
- removed: number;
87
- modified: number;
88
- breaking: number;
89
- additive: number;
90
- };
91
- }
92
- type Change = ModelAdded | ModelRemoved | ModelModified | EnumAdded | EnumRemoved | EnumModified | ServiceAdded | ServiceRemoved | OperationAdded | OperationRemoved | OperationModified;
93
- interface ModelAdded {
94
- kind: 'model-added';
95
- name: string;
96
- classification: 'additive';
97
- }
98
- interface ModelRemoved {
99
- kind: 'model-removed';
100
- name: string;
101
- classification: 'breaking';
102
- }
103
- interface ModelModified {
104
- kind: 'model-modified';
105
- name: string;
106
- fieldChanges: FieldChange[];
107
- classification: 'additive' | 'breaking';
108
- }
109
- interface FieldChange {
110
- kind: 'field-added' | 'field-removed' | 'field-type-changed' | 'field-required-changed' | 'field-access-changed';
111
- fieldName: string;
112
- classification: 'additive' | 'breaking';
113
- details?: string;
114
- }
115
- interface EnumAdded {
116
- kind: 'enum-added';
117
- name: string;
118
- classification: 'additive';
119
- }
120
- interface EnumRemoved {
121
- kind: 'enum-removed';
122
- name: string;
123
- classification: 'breaking';
124
- }
125
- interface EnumModified {
126
- kind: 'enum-modified';
127
- name: string;
128
- valueChanges: EnumValueChange[];
129
- classification: 'additive' | 'breaking';
130
- }
131
- interface EnumValueChange {
132
- kind: 'value-added' | 'value-removed' | 'value-changed';
133
- valueName: string;
134
- classification: 'additive' | 'breaking';
135
- details?: string;
136
- }
137
- interface ServiceAdded {
138
- kind: 'service-added';
139
- name: string;
140
- classification: 'additive';
141
- }
142
- interface ServiceRemoved {
143
- kind: 'service-removed';
144
- name: string;
145
- classification: 'breaking';
146
- }
147
- interface OperationAdded {
148
- kind: 'operation-added';
149
- serviceName: string;
150
- operationName: string;
151
- classification: 'additive';
152
- }
153
- interface OperationRemoved {
154
- kind: 'operation-removed';
155
- serviceName: string;
156
- operationName: string;
157
- classification: 'breaking';
158
- }
159
- interface OperationModified {
160
- kind: 'operation-modified';
161
- serviceName: string;
162
- operationName: string;
163
- paramChanges: ParamChange[];
164
- responseChanged: boolean;
165
- requestBodyChanged: boolean;
166
- httpMethodChanged: boolean;
167
- pathChanged: boolean;
168
- paginatedChanged: boolean;
169
- injectIdempotencyKeyChanged: boolean;
170
- errorsChanged: boolean;
171
- classification: 'additive' | 'breaking';
172
- }
173
- interface ParamChange {
174
- kind: 'param-added' | 'param-removed' | 'param-type-changed' | 'param-required-changed';
175
- paramName: string;
176
- classification: 'additive' | 'breaking';
177
- }
178
-
179
- interface ParseOptions {
180
- operationIdTransform?: (id: string) => string;
181
- }
182
- declare function parseSpec(specPath: string, options?: ParseOptions): Promise<ApiSpec>;
183
-
184
- declare function generate(spec: ApiSpec, emitter: Emitter, options: {
185
- namespace: string;
186
- dryRun?: boolean;
187
- outputDir: string;
188
- target?: string;
189
- apiSurface?: ApiSurface;
190
- overlayLookup?: OverlayLookup;
191
- }): Promise<GeneratedFile[]>;
192
-
193
- declare function buildEmitterContext(spec: ApiSpec, options: {
194
- namespace: string;
195
- outputDir: string;
196
- apiSurface?: ApiSurface;
197
- overlayLookup?: OverlayLookup;
198
- }): EmitterContext;
199
- /** Collect all generated files from an emitter (no headers, no path prefixes). */
200
- declare function generateAllFiles(spec: ApiSpec, emitter: Emitter, ctx: EmitterContext): GeneratedFile[];
201
- /** Apply file header to generated files, respecting headerPlacement and JSON files. */
202
- declare function applyFileHeaders(files: GeneratedFile[], header: string): GeneratedFile[];
203
- declare function generateFiles(spec: ApiSpec, emitter: Emitter, options: {
204
- namespace: string;
205
- outputDir: string;
206
- apiSurface?: ApiSurface;
207
- overlayLookup?: OverlayLookup;
208
- }): {
209
- files: GeneratedFile[];
210
- ctx: EmitterContext;
211
- header: string;
212
- };
213
-
214
- interface WriteResult {
215
- written: string[];
216
- merged: string[];
217
- skipped: string[];
218
- identical: string[];
219
- ignored: string[];
220
- }
221
-
222
- declare function mapFilesForTargetIntegration(files: GeneratedFile[], language: string): GeneratedFile[];
223
- declare function integrateGeneratedFiles(opts: {
224
- files: GeneratedFile[];
225
- language: string;
226
- targetDir: string;
227
- header: string;
228
- }): Promise<WriteResult>;
229
-
230
- declare function registerEmitter(emitter: Emitter): void;
231
- declare function getEmitter(language: string): Emitter;
232
-
233
- declare function diffSpecs(oldSpec: ApiSpec, newSpec: ApiSpec): DiffReport;
234
-
235
- declare const ACRONYM_SET: Set<string>;
236
- declare function toPascalCase(s: string, acronyms?: Set<string>): string;
237
- declare function toCamelCase(s: string, acronyms?: Set<string>): string;
238
- declare function toSnakeCase(s: string): string;
239
- declare function toKebabCase(s: string): string;
240
- declare function toUpperSnakeCase(s: string): string;
241
- declare function stripBackendPrefixes(name: string): string;
242
- declare function cleanSchemaName(name: string): string;
243
-
244
- interface OperationPlan {
245
- operation: Operation;
246
- isDelete: boolean;
247
- hasBody: boolean;
248
- isIdempotentPost: boolean;
249
- pathParamsInOptions: boolean;
250
- isPaginated: boolean;
251
- responseModelName: string | null;
252
- isModelResponse: boolean;
253
- hasQueryParams: boolean;
254
- isAsync: boolean;
255
- }
256
- declare function planOperation(op: Operation): OperationPlan;
257
-
258
- interface OagenConfig {
259
- emitters?: Emitter[];
260
- extractors?: Extractor[];
261
- /** Path to the emitter project (where skills scaffold new emitters, tests, smoke runners). */
262
- emitterProject?: string;
263
- /** Map from language key to custom smoke runner script path. */
264
- smokeRunners?: Record<string, string>;
265
- /**
266
- * Custom transform for operation IDs. When provided, replaces the default
267
- * camelCase pass-through. Receives the raw operationId string; return the
268
- * desired operation name (no additional conversion is applied).
269
- *
270
- */
271
- operationIdTransform?: (id: string) => string;
272
- /** Base URL for documentation links. When set, relative paths in descriptions
273
- * (e.g. `/reference/authkit/user`) are expanded to full URLs. */
274
- docUrl?: string;
275
- }
276
-
277
- export { ACRONYM_SET, ApiSpec, type Change, CommandError, ConfigError, ConfigLoadError, ConfigVersionMismatchError, type DiffReport, type Emitter, type EmitterContext, Enum, type EnumAdded, type EnumModified, type EnumRemoved, type EnumValueChange, ExtractorError, type FieldChange, type GeneratedFile, InternalError, Model, type ModelAdded, type ModelModified, type ModelRemoved, type OagenConfig, OagenError, Operation, type OperationAdded, type OperationModified, type OperationPlan, type OperationRemoved, type ParamChange, RegistryError, Service, type ServiceAdded, type ServiceRemoved, SpecParseError, applyFileHeaders, buildEmitterContext, cleanSchemaName, diffSpecs, generate, generateAllFiles, generateFiles, getEmitter, integrateGeneratedFiles, mapFilesForTargetIntegration, parseSpec, planOperation, registerEmitter, stripBackendPrefixes, toCamelCase, toKebabCase, toPascalCase, toSnakeCase, toUpperSnakeCase };