@kollors/react-codegen 2.0.0-alpha.4 → 2.0.0-alpha.6

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 (89) hide show
  1. package/README.md +193 -49
  2. package/README.ru.md +193 -49
  3. package/dist/{cli.js → cli/index.js} +6 -11
  4. package/dist/cli/index.js.map +1 -0
  5. package/dist/core/auth.d.ts +7 -0
  6. package/dist/core/auth.js +2 -0
  7. package/dist/core/auth.js.map +1 -0
  8. package/dist/core/config.d.ts +2 -0
  9. package/dist/core/config.js +67 -0
  10. package/dist/core/config.js.map +1 -0
  11. package/dist/{generate.d.ts → core/generate.d.ts} +0 -1
  12. package/dist/core/generate.js +47 -0
  13. package/dist/core/generate.js.map +1 -0
  14. package/dist/core/names.d.ts +5 -0
  15. package/dist/core/names.js +16 -0
  16. package/dist/core/names.js.map +1 -0
  17. package/dist/core/output.d.ts +5 -0
  18. package/dist/core/output.js +39 -0
  19. package/dist/core/output.js.map +1 -0
  20. package/dist/core/paths.d.ts +4 -0
  21. package/dist/core/paths.js +12 -0
  22. package/dist/core/paths.js.map +1 -0
  23. package/dist/{types.d.ts → core/types.d.ts} +2 -2
  24. package/dist/core/types.js.map +1 -0
  25. package/dist/graphql/document.d.ts +8 -0
  26. package/dist/graphql/document.js +118 -0
  27. package/dist/graphql/document.js.map +1 -0
  28. package/dist/graphql/fetcher.d.ts +5 -0
  29. package/dist/graphql/fetcher.js +4 -0
  30. package/dist/graphql/fetcher.js.map +1 -0
  31. package/dist/graphql/generate.d.ts +3 -0
  32. package/dist/graphql/generate.js +59 -0
  33. package/dist/graphql/generate.js.map +1 -0
  34. package/dist/graphql/operations.d.ts +13 -0
  35. package/dist/graphql/operations.js +139 -0
  36. package/dist/graphql/operations.js.map +1 -0
  37. package/dist/{graphql-fetcher.d.ts → graphql/runtime.d.ts} +4 -3
  38. package/dist/{graphql-fetcher.js → graphql/runtime.js} +12 -6
  39. package/dist/graphql/runtime.js.map +1 -0
  40. package/dist/graphql/runtime.source +140 -0
  41. package/dist/graphql/selections.d.ts +12 -0
  42. package/dist/graphql/selections.js +120 -0
  43. package/dist/graphql/selections.js.map +1 -0
  44. package/dist/graphql/types.d.ts +15 -0
  45. package/dist/graphql/types.js +110 -0
  46. package/dist/graphql/types.js.map +1 -0
  47. package/dist/index.d.ts +6 -6
  48. package/dist/index.js +3 -3
  49. package/dist/index.js.map +1 -1
  50. package/dist/openapi/fetcher.d.ts +3 -0
  51. package/dist/openapi/fetcher.js +4 -0
  52. package/dist/openapi/fetcher.js.map +1 -0
  53. package/dist/openapi/generate.d.ts +1 -1
  54. package/dist/openapi/generate.js +2 -1
  55. package/dist/openapi/generate.js.map +1 -1
  56. package/dist/openapi/names.d.ts +1 -5
  57. package/dist/openapi/names.js +1 -15
  58. package/dist/openapi/names.js.map +1 -1
  59. package/dist/openapi/operations.d.ts +0 -1
  60. package/dist/openapi/operations.js +35 -45
  61. package/dist/openapi/operations.js.map +1 -1
  62. package/dist/{openapi-runtime.d.ts → openapi/runtime.d.ts} +5 -7
  63. package/dist/{openapi-runtime.js → openapi/runtime.js} +38 -25
  64. package/dist/openapi/runtime.js.map +1 -0
  65. package/dist/{openapi-runtime.source → openapi/runtime.source} +43 -21
  66. package/dist/openapi/schema.d.ts +4 -0
  67. package/dist/openapi/schema.js +83 -77
  68. package/dist/openapi/schema.js.map +1 -1
  69. package/dist/openapi/type-expression.d.ts +38 -0
  70. package/dist/openapi/type-expression.js +166 -0
  71. package/dist/openapi/type-expression.js.map +1 -0
  72. package/docs/migration.md +21 -0
  73. package/docs/migration.ru.md +21 -0
  74. package/package.json +10 -15
  75. package/dist/cli.js.map +0 -1
  76. package/dist/generate.js +0 -197
  77. package/dist/generate.js.map +0 -1
  78. package/dist/graphql-fetcher.js.map +0 -1
  79. package/dist/openapi-fetcher.d.ts +0 -3
  80. package/dist/openapi-fetcher.js +0 -4
  81. package/dist/openapi-fetcher.js.map +0 -1
  82. package/dist/openapi-runtime.js.map +0 -1
  83. package/dist/path-utils.d.ts +0 -2
  84. package/dist/path-utils.js +0 -5
  85. package/dist/path-utils.js.map +0 -1
  86. package/dist/types.js.map +0 -1
  87. package/templates/graphql.template +0 -23
  88. /package/dist/{cli.d.ts → cli/index.d.ts} +0 -0
  89. /package/dist/{types.js → core/types.js} +0 -0
@@ -18,6 +18,8 @@ export interface OpenapiFetcherOptions<TBody, THeaders, TQueryParams, TPathParam
18
18
  contentType?: string;
19
19
  accept?: string;
20
20
  responseType?: 'blob';
21
+ /** Reject empty successful responses when the operation declares a response body. */
22
+ requireResponseBody?: boolean;
21
23
  /** Response status -> media type -> decoder. Exact statuses/media types take precedence over ranges and wildcards. */
22
24
  responseTypes?: Record<string, Record<string, 'blob' | 'auto'>>;
23
25
  parameters?: OpenapiParameter[];
@@ -88,21 +90,25 @@ export class OpenapiHttpError<TError = unknown> extends Error {
88
90
  }
89
91
  }
90
92
 
91
- function parameterScalar(value: unknown): string {
93
+ function parameterScalar(value: unknown, location = 'parameter'): string {
92
94
  if (value === null) return '';
93
- if (typeof value === 'object' || value === undefined) throw new TypeError('OpenAPI parameters must contain scalar values.');
95
+ if (typeof value === 'object' || value === undefined)
96
+ throw new TypeError(
97
+ `OpenAPI ${location} must contain scalar values; received ${value === undefined ? 'undefined' : Array.isArray(value) ? 'an array' : 'an object'}.`,
98
+ );
94
99
  return String(value);
95
100
  }
96
101
 
97
- function parameterParts(value: unknown, explode: boolean, encode: (value: string) => string): string[] {
98
- if (Array.isArray(value)) return value.map((item) => encode(parameterScalar(item)));
102
+ function parameterParts(value: unknown, explode: boolean, encode: (value: string) => string, location: string): string[] {
103
+ if (Array.isArray(value)) return value.map((item, index) => encode(parameterScalar(item, `${location}[${index}]`)));
99
104
  if (value !== null && typeof value === 'object') {
100
105
  return Object.entries(value).flatMap(([key, item]) => {
101
- const pair = [encode(key), encode(parameterScalar(item))];
106
+ if (item === undefined) return [];
107
+ const pair = [encode(key), encode(parameterScalar(item, `${location}.${key}`))];
102
108
  return explode ? [pair.join('=')] : pair;
103
109
  });
104
110
  }
105
- return [encode(parameterScalar(value))];
111
+ return [encode(parameterScalar(value, location))];
106
112
  }
107
113
 
108
114
  function serializeQueryParams(queryParams: unknown, parameters: OpenapiParameter[] = []): string {
@@ -123,21 +129,30 @@ function serializeQueryParams(queryParams: unknown, parameters: OpenapiParameter
123
129
  const explode = parameter?.explode ?? true;
124
130
  if (style === 'deepObject') {
125
131
  if (value === null || typeof value !== 'object' || Array.isArray(value)) throw new TypeError(`deepObject requires an object: ${key}`);
126
- for (const [name, item] of Object.entries(value)) append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item)));
132
+ for (const [name, item] of Object.entries(value)) {
133
+ if (item !== undefined) append(`${key}[${name}]`, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
134
+ }
127
135
  } else if (style === 'form' && explode && value !== null && typeof value === 'object' && !Array.isArray(value)) {
128
- for (const [name, item] of Object.entries(value)) append(name, encodeURIComponent(parameterScalar(item)));
136
+ for (const [name, item] of Object.entries(value)) {
137
+ if (item !== undefined) append(name, encodeURIComponent(parameterScalar(item, `query parameter "${key}.${name}"`)));
138
+ }
129
139
  } else if (explode && Array.isArray(value)) {
130
- for (const item of value) append(key, encodeURIComponent(parameterScalar(item)));
140
+ for (const [index, item] of value.entries())
141
+ append(key, encodeURIComponent(parameterScalar(item, `query parameter "${key}[${index}]"`)));
131
142
  } else {
132
143
  const separator = style === 'spaceDelimited' ? '%20' : style === 'pipeDelimited' ? '|' : ',';
133
- append(key, parameterParts(value, false, encodeURIComponent).join(separator));
144
+ append(key, parameterParts(value, false, encodeURIComponent, `query parameter "${key}"`).join(separator));
134
145
  }
135
146
  }
136
147
  return result.join('&');
137
148
  }
138
149
 
139
- function isJsonContentType(contentType: string): boolean {
140
- const mime = contentType.split(';')[0]?.trim().toLowerCase() ?? '';
150
+ export function normalizeContentType(contentType: string): string {
151
+ return contentType.split(';')[0]?.trim().toLowerCase() ?? '';
152
+ }
153
+
154
+ export function isJsonContentType(contentType: string): boolean {
155
+ const mime = normalizeContentType(contentType);
141
156
  return mime === 'application/json' || /^application\/[^/;\s]+\+json$/.test(mime);
142
157
  }
143
158
 
@@ -145,7 +160,8 @@ function requestBody(body: unknown, contentType: string): BodyInit | undefined {
145
160
  if (body === undefined) return undefined;
146
161
  if (body instanceof FormData || body instanceof Blob || body instanceof URLSearchParams) return body;
147
162
  if (isJsonContentType(contentType)) return JSON.stringify(body);
148
- if (contentType === 'multipart/form-data' || contentType === 'application/x-www-form-urlencoded') {
163
+ const mime = normalizeContentType(contentType);
164
+ if (mime === 'multipart/form-data' || mime === 'application/x-www-form-urlencoded') {
149
165
  if (body === null || typeof body !== 'object' || Array.isArray(body)) throw new TypeError(`${contentType} requires an object body.`);
150
166
  const form = new FormData();
151
167
  for (const [key, value] of Object.entries(body)) {
@@ -154,11 +170,11 @@ function requestBody(body: unknown, contentType: string): BodyInit | undefined {
154
170
  if (item instanceof Blob) form.append(key, item);
155
171
  else if (item !== null && typeof item === 'object') {
156
172
  const json = JSON.stringify(item);
157
- form.append(key, contentType === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
158
- } else form.append(key, parameterScalar(item));
173
+ form.append(key, mime === 'multipart/form-data' ? new Blob([json], { type: 'application/json' }) : json);
174
+ } else form.append(key, parameterScalar(item, `form field "${key}"`));
159
175
  }
160
176
  }
161
- if (contentType === 'multipart/form-data') return form;
177
+ if (mime === 'multipart/form-data') return form;
162
178
  const params = new URLSearchParams();
163
179
  form.forEach((value, key) => {
164
180
  if (typeof value !== 'string') throw new TypeError('URL-encoded bodies cannot contain binary files.');
@@ -177,7 +193,7 @@ function requestHeaders(value: unknown, parameters: OpenapiParameter[]): Headers
177
193
  for (const [key, item] of Object.entries(value)) {
178
194
  if (item === undefined) continue;
179
195
  const parameter = parameters.find((entry) => entry.in === 'header' && entry.name.toLowerCase() === key.toLowerCase());
180
- headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part).join(','));
196
+ headers.set(key, parameterParts(item, parameter?.explode ?? false, (part) => part, `header parameter "${key}"`).join(','));
181
197
  }
182
198
  }
183
199
  return headers;
@@ -195,7 +211,7 @@ function withQueryParams(url: string, serialized: string): string {
195
211
  async function readResponse(response: Response, responseType?: 'blob'): Promise<unknown> {
196
212
  if (response.status === 204 || response.status === 205) return undefined;
197
213
  if (responseType === 'blob') return await response.blob();
198
- const contentType = response.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() ?? '';
214
+ const contentType = normalizeContentType(response.headers.get('content-type') ?? '');
199
215
  const json = isJsonContentType(contentType);
200
216
  if (contentType.startsWith('text/') || (!json && contentType.includes('xml'))) return await response.text();
201
217
  if (response.body === null || response.headers.get('content-length') === '0') return undefined;
@@ -217,7 +233,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
217
233
  const headers = new Headers();
218
234
  const contentType = options.contentType ?? 'application/json';
219
235
  if (options.body !== undefined) {
220
- if (contentType === '*/*') {
236
+ if (normalizeContentType(contentType) === '*/*') {
221
237
  if (!(options.body instanceof Blob)) throw new TypeError('Wildcard request content requires a Blob body.');
222
238
  headers.set('content-type', options.body.type || 'application/octet-stream');
223
239
  } else {
@@ -249,7 +265,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
249
265
  const value = pathParams?.[key];
250
266
  if (value === undefined || value === null) throw new Error(`Missing required OpenAPI path parameter "${key}" for ${options.url}.`);
251
267
  const parameter = parameters.find((item) => item.in === 'path' && item.name === key);
252
- return parameterParts(value, parameter?.explode ?? false, encodeURIComponent).join(',');
268
+ return parameterParts(value, parameter?.explode ?? false, encodeURIComponent, `path parameter "${key}"`).join(',');
253
269
  });
254
270
  const pathSegments = path.split(/[?#]/, 1)[0]?.split('/') ?? [];
255
271
  if (pathSegments.some((segment) => /^(?:\.|%2e){1,2}$/i.test(segment))) {
@@ -280,7 +296,7 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
280
296
  options.responseTypes?.[response.status] ??
281
297
  options.responseTypes?.[`${Math.floor(response.status / 100)}XX`] ??
282
298
  options.responseTypes?.default;
283
- const mime = response.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase() ?? '';
299
+ const mime = normalizeContentType(response.headers.get('content-type') ?? '');
284
300
  const declaredType = declaredContent?.[mime] ?? declaredContent?.[`${mime.split('/')[0]}/*`] ?? declaredContent?.['*/*'];
285
301
  const responseType = options.responseTypes
286
302
  ? declaredType === 'blob'
@@ -305,6 +321,12 @@ export function createOpenapiFetcher(configuration: OpenapiFetcherConfiguration
305
321
  throw new OpenapiHttpError<TError>(response.status, response.statusText, requestUrl, result as TError);
306
322
  }
307
323
 
324
+ if (result === undefined && options.requireResponseBody) {
325
+ throw new Error(
326
+ `OpenAPI response contract violation: HTTP ${response.status} returned no body for ${options.method.toUpperCase()} ${requestUrl}; the operation expects a response body.`,
327
+ );
328
+ }
329
+
308
330
  return result as TData;
309
331
  } catch (error) {
310
332
  throw error instanceof Error ? error : new Error(String(error));
@@ -7,6 +7,7 @@ export declare class Schemas {
7
7
  private readonly models;
8
8
  private readonly variants;
9
9
  private readonly contexts;
10
+ private readonly resolvedTypes;
10
11
  constructor(document: OpenapiDocument, names: Names);
11
12
  private checkAliases;
12
13
  private needsVariant;
@@ -15,5 +16,8 @@ export declare class Schemas {
15
16
  declarations(): string;
16
17
  private contextualType;
17
18
  type(value: unknown, location: string, mode?: SchemaMode, trail?: string[], excluded?: Set<string>): string;
19
+ parameterKind(value: unknown, location: string): 'scalar' | 'array' | 'object';
20
+ private referenceType;
21
+ private expression;
18
22
  private objectType;
19
23
  }
@@ -1,5 +1,6 @@
1
1
  import { list, object, pointer, string } from './document.js';
2
2
  import { comment, identifier } from './names.js';
3
+ import { atom, intersection, literalType, neverType, parameterKind, renderType, union, unknownType, } from './type-expression.js';
3
4
  const unsupported = [
4
5
  '$dynamicRef',
5
6
  '$dynamicAnchor',
@@ -9,6 +10,7 @@ const unsupported = [
9
10
  'then',
10
11
  'else',
11
12
  'dependentSchemas',
13
+ 'dependentRequired',
12
14
  'patternProperties',
13
15
  'unevaluatedProperties',
14
16
  'unevaluatedItems',
@@ -21,6 +23,7 @@ export class Schemas {
21
23
  models = new Map();
22
24
  variants = new Map();
23
25
  contexts = new Map();
26
+ resolvedTypes = new Map();
24
27
  constructor(document, names) {
25
28
  this.document = document;
26
29
  this.names = names;
@@ -29,48 +32,48 @@ export class Schemas {
29
32
  this.models.set(pointer('components', 'schemas', key), name);
30
33
  }
31
34
  for (const [ref, name] of this.models) {
32
- this.checkAliases(document.reference(ref, ref), [ref]);
35
+ this.checkAliases(document.reference(ref, ref), ref, [ref]);
33
36
  for (const mode of ['input', 'output']) {
34
- if (this.needsVariant(document.reference(ref, ref), mode)) {
37
+ if (this.needsVariant(document.reference(ref, ref), ref, mode)) {
35
38
  this.variants.set(mode + ref, names.reserve(name + (mode === 'input' ? 'Input' : 'Output'), `${ref} (${mode})`));
36
39
  }
37
40
  }
38
41
  }
39
42
  }
40
- checkAliases(value, trail) {
43
+ checkAliases(value, location, trail) {
41
44
  if (typeof value === 'boolean')
42
45
  return;
43
- const schema = object(value, trail.at(-1) ?? '#/components/schemas');
46
+ const schema = object(value, location);
44
47
  if (typeof schema.$ref === 'string') {
45
- const ref = this.document.canonicalReference(schema.$ref, trail.at(-1) ?? schema.$ref);
48
+ const ref = this.document.canonicalReference(schema.$ref, location);
46
49
  if (trail.includes(ref))
47
50
  throw new Error(`${ref}: circular type aliases must pass through an object property or array item.`);
48
- this.checkAliases(this.document.reference(ref, ref), [...trail, ref]);
51
+ this.checkAliases(this.document.reference(ref, location), ref, [...trail, ref]);
49
52
  }
50
53
  for (const key of ['allOf', 'oneOf', 'anyOf']) {
51
54
  if (Array.isArray(schema[key]))
52
- for (const child of schema[key])
53
- this.checkAliases(child, trail);
55
+ for (const [index, child] of schema[key].entries())
56
+ this.checkAliases(child, `${location}/${key}/${index}`, trail);
54
57
  }
55
58
  }
56
- needsVariant(value, mode, visited = new Set()) {
59
+ needsVariant(value, location, mode, visited = new Set()) {
57
60
  if (value === null || typeof value !== 'object' || visited.has(value))
58
61
  return false;
59
62
  visited.add(value);
60
63
  if (Array.isArray(value))
61
- return value.some((item) => this.needsVariant(item, mode, visited));
64
+ return value.some((item, index) => this.needsVariant(item, `${location}/${index}`, mode, visited));
62
65
  const schema = value;
63
66
  if (schema[mode === 'input' ? 'readOnly' : 'writeOnly'] === true)
64
67
  return true;
65
- if (typeof schema.$ref === 'string' && this.needsVariant(this.document.reference(schema.$ref, schema.$ref), mode, visited))
68
+ if (typeof schema.$ref === 'string' && this.needsVariant(this.document.reference(schema.$ref, location), schema.$ref, mode, visited))
66
69
  return true;
67
70
  // Only schema-bearing keywords are traversed; examples/defaults may contain arbitrary data.
68
71
  return ['properties', 'items', 'additionalProperties', 'allOf', 'oneOf', 'anyOf'].some((key) => {
69
72
  const child = schema[key];
70
73
  if (key === 'properties' && child && typeof child === 'object') {
71
- return Object.values(child).some((property) => this.needsVariant(property, mode, visited));
74
+ return Object.entries(child).some(([name, property]) => this.needsVariant(property, `${location}${pointer('properties', name).slice(1)}`, mode, visited));
72
75
  }
73
- return this.needsVariant(child, mode, visited);
76
+ return this.needsVariant(child, `${location}/${key}`, mode, visited);
74
77
  });
75
78
  }
76
79
  metadata(value, location, visited = new Set()) {
@@ -107,7 +110,7 @@ export class Schemas {
107
110
  return excluded;
108
111
  }
109
112
  for (const [name, property] of Object.entries(object(schema.properties ?? {}, `${location}/properties`))) {
110
- const metadata = this.metadata(property, `${location}/properties/${name}`);
113
+ const metadata = this.metadata(property, `${location}${pointer('properties', name).slice(1)}`);
111
114
  if (metadata[mode === 'input' ? 'readOnly' : 'writeOnly'] === true)
112
115
  excluded.add(name);
113
116
  }
@@ -132,28 +135,50 @@ export class Schemas {
132
135
  }
133
136
  }
134
137
  for (const context of this.contexts.values())
135
- result.push(`type ${context.name} = ${context.type};`);
138
+ result.push(`type ${context.name} = ${renderType(context.type ?? unknownType)};`);
136
139
  return result.join('\n\n');
137
140
  }
138
141
  contextualType(ref, mode, excluded, name, trail) {
139
142
  const key = JSON.stringify([ref, mode, [...excluded].sort()]);
140
143
  const existing = this.contexts.get(key);
141
144
  if (existing)
142
- return existing.name;
145
+ return { kind: 'reference', name: existing.name, resolve: () => existing.type };
143
146
  const context = {
144
147
  name: this.names.reserve(`${name}Context${this.contexts.size + 1}`, `${ref} (${mode}, contextual fields)`),
145
- type: '',
148
+ type: undefined,
146
149
  };
147
150
  // Reserve the alias before rendering its body so recursive contextual references can use the same name.
148
151
  this.contexts.set(key, context);
149
- context.type = this.type(this.document.reference(ref, ref), ref, mode, [...trail, ref], excluded);
150
- return context.name;
152
+ context.type = this.expression(this.document.reference(ref, ref), ref, mode, [...trail, ref], excluded);
153
+ return { kind: 'reference', name: context.name, resolve: () => context.type };
151
154
  }
152
155
  type(value, location, mode = 'model', trail = [], excluded = new Set()) {
156
+ return renderType(this.expression(value, location, mode, trail, excluded));
157
+ }
158
+ parameterKind(value, location) {
159
+ return parameterKind(this.expression(value, location, 'input'), location);
160
+ }
161
+ referenceType(ref, name, mode, trail, excluded) {
162
+ const key = JSON.stringify([ref, mode, [...excluded].sort()]);
163
+ return {
164
+ kind: 'reference',
165
+ name,
166
+ resolve: () => {
167
+ if (this.resolvedTypes.has(key))
168
+ return this.resolvedTypes.get(key);
169
+ // An in-progress reference stays symbolic so recursive object fields do not expand forever.
170
+ this.resolvedTypes.set(key, undefined);
171
+ const type = this.expression(this.document.reference(ref, ref), ref, mode, [...trail, ref], excluded);
172
+ this.resolvedTypes.set(key, type);
173
+ return type;
174
+ },
175
+ };
176
+ }
177
+ expression(value, location, mode = 'model', trail = [], excluded = new Set()) {
153
178
  if (typeof value === 'boolean') {
154
179
  if (this.document.version === '3.0')
155
180
  throw new Error(`${location}: boolean schemas require OpenAPI 3.1.`);
156
- return value ? 'unknown' : 'never';
181
+ return value ? unknownType : neverType;
157
182
  }
158
183
  const schema = object(value, location);
159
184
  const excludedHere = new Set([...excluded, ...this.excludedProperties(schema, location, mode)]);
@@ -172,14 +197,13 @@ export class Schemas {
172
197
  const type = name
173
198
  ? hasContextExclusions
174
199
  ? this.contextualType(ref, mode, excludedHere, name, trail)
175
- : name
176
- : this.type(referenced, ref, mode, [...trail, ref], excludedHere);
200
+ : this.referenceType(ref, name, mode, trail, excludedHere)
201
+ : this.expression(referenced, ref, mode, [...trail, ref], excludedHere);
177
202
  if (this.document.version === '3.0')
178
203
  return type;
179
204
  const siblings = { ...schema };
180
205
  delete siblings.$ref;
181
- const siblingType = this.type(siblings, location, mode, trail, excludedHere);
182
- return siblingType === 'unknown' ? type : `(${type}) & (${siblingType})`;
206
+ return intersection(type, this.expression(siblings, location, mode, trail, excludedHere));
183
207
  }
184
208
  const constraints = [];
185
209
  for (const key of ['allOf', 'oneOf', 'anyOf']) {
@@ -187,8 +211,8 @@ export class Schemas {
187
211
  const members = list(schema[key], `${location}/${key}`);
188
212
  if (!members.length)
189
213
  throw new Error(`${location}/${key} must not be empty.`);
190
- const types = members.map((member, index) => `(${this.type(member, `${location}/${key}/${index}`, mode, trail, excludedHere)})`);
191
- constraints.push(types.join(key === 'allOf' ? ' & ' : ' | '));
214
+ const types = members.map((member, index) => this.expression(member, `${location}/${key}/${index}`, mode, trail, excludedHere));
215
+ constraints.push(key === 'allOf' ? intersection(...types) : union(...types));
192
216
  }
193
217
  }
194
218
  let types = schema.type === undefined ? [] : Array.isArray(schema.type) ? schema.type : [schema.type];
@@ -205,18 +229,21 @@ export class Schemas {
205
229
  case 'null':
206
230
  if (this.document.version === '3.0' && schema.type !== undefined)
207
231
  throw new Error(`${location}: use nullable in OpenAPI 3.0.`);
208
- return 'null';
232
+ return atom('null');
209
233
  case 'string':
210
- return schema.format === 'binary' ? 'Blob' : 'string';
234
+ return atom(schema.format === 'binary' ? 'Blob' : 'string');
211
235
  case 'number':
212
236
  case 'integer':
213
- return 'number';
237
+ return atom('number');
214
238
  case 'boolean':
215
- return 'boolean';
239
+ return atom('boolean');
216
240
  case 'array':
217
241
  if (schema.items === undefined && this.document.version === '3.0' && schema.type !== undefined)
218
242
  throw new Error(`${location}/items is required for arrays.`);
219
- return `Array<${schema.items === undefined ? 'unknown' : this.type(schema.items, `${location}/items`, mode, trail)}>`;
243
+ return {
244
+ kind: 'array',
245
+ item: schema.items === undefined ? unknownType : this.expression(schema.items, `${location}/items`, mode, trail),
246
+ };
220
247
  case 'object':
221
248
  return this.objectType(schema, location, mode, trail, excludedHere);
222
249
  default:
@@ -225,23 +252,21 @@ export class Schemas {
225
252
  });
226
253
  if (primitives.length) {
227
254
  if (this.document.version === '3.0' && schema.type !== undefined && schema.nullable === true)
228
- primitives.push('null');
229
- constraints.push([...new Set(primitives)].join(' | '));
255
+ primitives.push(atom('null'));
256
+ constraints.push(union(...primitives));
230
257
  }
231
258
  if (schema.enum !== undefined) {
232
259
  const values = list(schema.enum, `${location}/enum`);
233
260
  if (!values.length)
234
261
  throw new Error(`${location}/enum must not be empty.`);
235
- constraints.push([...new Set(values.map((item) => literal(item, `${location}/enum`)))].join(' | '));
262
+ constraints.push(union(...values.map((item) => literalType(item, `${location}/enum`))));
236
263
  }
237
264
  if (schema.const !== undefined || Object.hasOwn(schema, 'const')) {
238
265
  if (this.document.version === '3.0')
239
266
  throw new Error(`${location}: const requires OpenAPI 3.1.`);
240
- constraints.push(literal(schema.const, `${location}/const`));
267
+ constraints.push(literalType(schema.const, `${location}/const`));
241
268
  }
242
- if (!constraints.length)
243
- return 'unknown';
244
- return constraints.length === 1 ? constraints[0] : constraints.map((part) => `(${part})`).join(' & ');
269
+ return intersection(...constraints);
245
270
  }
246
271
  objectType(schema, location, mode, trail, excluded) {
247
272
  const properties = schema.properties === undefined ? {} : object(schema.properties, `${location}/properties`);
@@ -252,13 +277,17 @@ export class Schemas {
252
277
  throw new Error(`${location}/required/${index} must be a string.`);
253
278
  return key;
254
279
  }));
255
- const fields = [];
280
+ const fields = new Map();
256
281
  for (const [name, value] of Object.entries(properties)) {
257
282
  if (excluded.has(name))
258
283
  continue;
259
- const metadata = this.metadata(value, `${location}/properties/${name}`);
260
- const optional = required.has(name) ? '' : '?';
261
- fields.push(`${comment(metadata.description)}${JSON.stringify(name)}${optional}: ${this.type(value, `${location}/properties/${name}`, mode, trail)};`);
284
+ const propertyLocation = `${location}${pointer('properties', name).slice(1)}`;
285
+ const metadata = this.metadata(value, propertyLocation);
286
+ fields.set(name, {
287
+ type: this.expression(value, propertyLocation, mode, trail),
288
+ optional: !required.has(name),
289
+ description: metadata.description,
290
+ });
262
291
  }
263
292
  for (const name of required) {
264
293
  if (excluded.has(name))
@@ -266,48 +295,25 @@ export class Schemas {
266
295
  if (!Object.hasOwn(properties, name)) {
267
296
  const extra = schema.additionalProperties;
268
297
  const type = extra === false
269
- ? 'never'
298
+ ? neverType
270
299
  : extra === undefined || extra === true
271
- ? 'unknown'
272
- : this.type(extra, `${location}/additionalProperties`, mode, trail);
273
- fields.push(`${JSON.stringify(name)}: ${type};`);
300
+ ? unknownType
301
+ : this.expression(extra, `${location}/additionalProperties`, mode, trail);
302
+ fields.set(name, { type, optional: false });
274
303
  }
275
304
  }
276
305
  const extra = schema.additionalProperties;
277
- if (extra === undefined || extra === true) {
278
- fields.push('[key: string]: unknown;');
279
- }
280
- else if (extra !== false) {
281
- const type = this.type(extra, `${location}/additionalProperties`, mode, trail);
282
- if (Object.keys(properties).length && type !== 'unknown') {
306
+ const extraType = extra === false
307
+ ? false
308
+ : extra === undefined || extra === true
309
+ ? unknownType
310
+ : this.expression(extra, `${location}/additionalProperties`, mode, trail);
311
+ if (extra !== undefined && extra !== true && extra !== false) {
312
+ if (Object.keys(properties).length && renderType(extraType || neverType) !== 'unknown') {
283
313
  throw new Error(`${location}: typed additionalProperties alongside named properties cannot be represented exactly in TypeScript. Use a separate dictionary property.`);
284
314
  }
285
- fields.push(`[key: string]: ${type};`);
286
315
  }
287
- return fields.length
288
- ? `{\n${fields
289
- .join('\n')
290
- .split('\n')
291
- .map((line) => ` ${line}`)
292
- .join('\n')}\n}`
293
- : 'Record<string, never>';
294
- }
295
- }
296
- function literal(value, location) {
297
- if (value === null || typeof value === 'string' || typeof value === 'boolean' || (typeof value === 'number' && Number.isFinite(value))) {
298
- return JSON.stringify(value);
299
- }
300
- if (Array.isArray(value))
301
- return `[${value.map((item) => literal(item, location)).join(', ')}]`;
302
- if (value && typeof value === 'object') {
303
- if (!Object.keys(value).length)
304
- return 'Record<string, never>';
305
- return ('{ ' +
306
- Object.entries(value)
307
- .map(([key, item]) => `${JSON.stringify(key)}: ${literal(item, location)}`)
308
- .join('; ') +
309
- ' }');
316
+ return { kind: 'object', fields, extra: extraType };
310
317
  }
311
- throw new Error(`${location}: expected a JSON value.`);
312
318
  }
313
319
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/openapi/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/openapi/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface Field {
2
+ type: TypeExpression;
3
+ optional: boolean;
4
+ description?: unknown;
5
+ }
6
+ export type TypeExpression = {
7
+ kind: 'atom';
8
+ name: string;
9
+ } | {
10
+ kind: 'literal';
11
+ value: string | number | boolean | null;
12
+ } | {
13
+ kind: 'reference';
14
+ name: string;
15
+ resolve: () => TypeExpression | undefined;
16
+ } | {
17
+ kind: 'object';
18
+ fields: Map<string, Field>;
19
+ extra: TypeExpression | false;
20
+ } | {
21
+ kind: 'array';
22
+ item: TypeExpression;
23
+ } | {
24
+ kind: 'tuple';
25
+ items: TypeExpression[];
26
+ } | {
27
+ kind: 'union' | 'intersection';
28
+ members: TypeExpression[];
29
+ };
30
+ export declare const atom: (name: string) => TypeExpression;
31
+ export declare const unknownType: TypeExpression;
32
+ export declare const neverType: TypeExpression;
33
+ export declare function union(...types: TypeExpression[]): TypeExpression;
34
+ export declare function intersection(...types: TypeExpression[]): TypeExpression;
35
+ export declare function literalType(value: unknown, location: string): TypeExpression;
36
+ export declare function renderType(type: TypeExpression): string;
37
+ /** Parameter serialization supports scalars, scalar arrays and objects with scalar properties. */
38
+ export declare function parameterKind(type: TypeExpression, location: string, resolving?: Set<string>): 'scalar' | 'array' | 'object';