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

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
@@ -44,10 +44,48 @@ Run both configured generators with:
44
44
  npx react-codegen codegen.config.js
45
45
  ```
46
46
 
47
- Paths are resolved relative to the config file. A configured `openapi` section enables OpenAPI generation; a configured `graphql` section enables GraphQL generation. Omit a section to skip it. At least one section is required. Each section writes one TypeScript file. `documents` is a directory; all `.graphql` files under it, including nested directories, are included. Each generator uses a temporary subdirectory inside the package's `.react-codegen-temp` directory; that subdirectory is removed after generation. Each completed output is staged beside its destination and published with an atomic rename.
47
+ Paths are resolved relative to the config file. A configured `openapi` section enables OpenAPI generation; a configured `graphql` section enables GraphQL generation. Omit a section to skip it. At least one section is required. Each section writes one TypeScript file. `documents` is a directory; all `.graphql` files under it, including nested directories, are included. The built-in OpenAPI generator reads and generates in memory, without third-party generators, subprocesses or intermediate files. GraphQL still uses its existing generator and a temporary subdirectory inside the package's `.react-codegen-temp` directory, removed after generation. Each completed output is staged beside its destination and published with an atomic rename.
48
48
 
49
49
  Schema values may be local paths or URLs. `output` directories are created when needed.
50
50
 
51
+ ## OpenAPI generator
52
+
53
+ Only `schema` and `output` are required. One OpenAPI 3.0.x or 3.1.x document in YAML/JSON produces one `.ts` file with types, a fetcher, request functions and TanStack Query 5 hooks. Swagger 2.0 is rejected. The generated client does not import this package. `yaml` only parses input during generation.
54
+
55
+ For `operationId: getPet`, the output includes:
56
+
57
+ ```ts
58
+ import { useGetPet, getPetQuery, getPetQueryKey, fetchGetPet } from './api/openapi';
59
+
60
+ const variables = { pathParams: { id: '42' } };
61
+ const query = useGetPet(variables, { select: pet => pet.name });
62
+ await queryClient.fetchQuery(getPetQuery(variables));
63
+ await queryClient.invalidateQueries({ queryKey: getPetQueryKey(variables) });
64
+ await fetchGetPet(variables, abortController.signal);
65
+ ```
66
+
67
+ GET generates `useX`, `useSuspenseX`, `xQuery`, `xQueryKey` and `fetchX`. Other methods generate `useX` mutations and `fetchX`, e.g. `useCreatePet().mutate({ body: pet })`. Variables group `pathParams`, `queryParams`, `headers` and `body`; required groups follow the schema. Calls with no required variables can omit the argument. Regular queries accept TanStack's `skipToken`; suspense queries require variables. Names use `operationId`, falling back to method and path; collisions report both locations.
68
+
69
+ Query keys include the configured base URL, HTTP method, path, operation name and variables. The generated `Accept` header and explicit request headers are normalized to their serialized names and values, so equivalent `Headers`, objects and tuple arrays share a cache entry while different header values stay separate. Tokens read from storage and browser cookies are not part of the key; clear the relevant query cache when the signed-in user changes.
70
+
71
+ ### Supported features
72
+
73
+ - Primitive types, arrays, objects, dictionaries, enums, internal `$ref`, recursive component types, `allOf` intersections, `oneOf`/`anyOf` unions. OpenAPI 3.1 also supports boolean schemas, `const` and type arrays.
74
+ - `required` controls optional properties. `null` is included only when allowed by the schema. No blanket replacement of `null` with `undefined`. `readOnly`/`writeOnly` produce input/output variants when needed.
75
+ - Path/header `simple` parameters; query `form`, flat `deepObject` with `explode: true`, array `spaceDelimited`/`pipeDelimited` with `explode: false`. Operation parameters override path-level parameters.
76
+ - JSON/`+json`, text/XML as strings, binary bodies/responses as `Blob`, multipart and URL-encoded object bodies. Multiple request formats are selected in this order: JSON, `+json`, URL-encoded, multipart, other supported formats alphabetically. Responses use their actual Content-Type; successful response types form a union. `default` is a success fallback only when no explicit 2xx exists. Empty mutation responses return `undefined` with type `void`.
77
+ - Descriptions become comments. Dates remain strings. Numeric bounds, patterns and lengths do not add runtime validation. `oneOf` becomes a TypeScript union without checking exclusivity. `discriminator` does not invent properties or values: describe the discriminator field in the schema.
78
+
79
+ ### Current limits
80
+
81
+ Generation fails with a schema location before replacing output for unsupported constructs: external `$ref` (bundle first), callbacks/webhooks, cookie parameters, parameter `content`, nested parameter objects/arrays, `allowReserved`, path `label`/`matrix`, custom form encoding, unsupported media types, and advanced JSON Schema keywords such as conditionals, `not`, dynamic references, `prefixItems`, `patternProperties` and `unevaluatedProperties`. Typed `additionalProperties` alongside named properties are rejected because a TypeScript index signature would also constrain named properties; use a separate dictionary property. Recursive types must be components; circular aliases and cyclic YAML aliases are rejected.
82
+
83
+ Fetch cannot send GET/HEAD bodies or TRACE requests. A GET response declared without a body is rejected because React Query cannot cache `undefined`; the generator does not replace it with `null`. Empty text responses remain empty strings. Path segments `.` and `..` are rejected before sending a request because Fetch would normalize them and change the route. Schema `servers` and `security` do not override configuration: use `baseUrl` and `auth`. Response headers are not returned separately. Generated types do not validate server responses at runtime.
84
+
85
+ ### Migration
86
+
87
+ Regenerate the client. Usual camelCase operation names and grouped variables remain, but full export compatibility is not guaranteed. Empty context, `deepMerge`, `QueryOperation`, shared `queryKeyFn` and `@ts-nocheck` are removed. Starting with `2.0.0-alpha.4`, query keys use `[baseUrl, method, path, operationName, normalizedVariables]` instead of `[operationName, variables]`: use `xQueryKey`, update manually constructed invalidation keys and clear persisted caches when upgrading. Type names use PascalCase; punctuation and underscores separate words. Errors use `OpenapiHttpError` or ordinary `Error` instead of `ErrorWrapper`. Stricter types may require call-site fixes.
88
+
51
89
  ## Programmatic API
52
90
 
53
91
  ```ts
package/README.ru.md CHANGED
@@ -44,10 +44,48 @@ export default {
44
44
  npx react-codegen codegen.config.js
45
45
  ```
46
46
 
47
- Пути разрешаются относительно файла конфигурации. Наличие секции `openapi` запускает генерацию OpenAPI, наличие `graphql` — GraphQL. Отсутствующую секцию можно опустить; нужна хотя бы одна. Каждая секция создаёт один TypeScript-файл. `documents` — каталог: в нём и всех подпапках рекурсивно ищутся файлы `.graphql`. Для каждого генератора создаётся временная подпапка внутри `.react-codegen-temp` в каталоге пакета; после генерации она удаляется. Готовые файлы сначала записываются рядом с назначением, затем публикуются атомарным переименованием.
47
+ Пути разрешаются относительно файла конфигурации. Наличие секции `openapi` запускает генерацию OpenAPI, наличие `graphql` — GraphQL. Отсутствующую секцию можно опустить; нужна хотя бы одна. Каждая секция создаёт один TypeScript-файл. `documents` — каталог: в нём и всех подпапках рекурсивно ищутся файлы `.graphql`. Собственный OpenAPI-генератор работает в памяти, без сторонних генераторов, дочерних процессов и промежуточных файлов. GraphQL пока использует прежний генератор и временную подпапку внутри `.react-codegen-temp` в каталоге пакета; после генерации она удаляется. Готовые файлы сначала записываются рядом с назначением, затем публикуются атомарным переименованием.
48
48
 
49
49
  В `schema` можно передавать локальный путь или URL. Каталоги для `output` создаются автоматически.
50
50
 
51
+ ## Генератор OpenAPI
52
+
53
+ Обязательны только `schema` и `output`. Один документ OpenAPI 3.0.x или 3.1.x в YAML/JSON превращается в один `.ts`-файл с типами, fetcher, функциями запросов и хуками TanStack Query 5. Swagger 2.0 не поддерживается. Готовый клиент не импортирует наш пакет. `yaml` нужен только для чтения схемы при генерации.
54
+
55
+ Для операции с `operationId: getPet`:
56
+
57
+ ```ts
58
+ import { useGetPet, getPetQuery, getPetQueryKey, fetchGetPet } from './api/openapi';
59
+
60
+ const variables = { pathParams: { id: '42' } };
61
+ const query = useGetPet(variables, { select: pet => pet.name });
62
+ await queryClient.fetchQuery(getPetQuery(variables));
63
+ await queryClient.invalidateQueries({ queryKey: getPetQueryKey(variables) });
64
+ await fetchGetPet(variables, abortController.signal);
65
+ ```
66
+
67
+ Для GET создаются `useX`, `useSuspenseX`, `xQuery`, `xQueryKey` и `fetchX`. Для остальных методов — мутация `useX` и функция `fetchX`, например `useCreatePet().mutate({ body: pet })`. Аргументы сгруппированы в `pathParams`, `queryParams`, `headers` и `body`; обязательность задаёт схема. Если обязательных аргументов нет, вызов возможен без них. Обычные query принимают `skipToken` из TanStack; suspense-query требуют аргументы. Имена строятся из `operationId`, а при его отсутствии — из метода и пути. Коллизия имён сообщает оба места в схеме.
68
+
69
+ Ключи кеша включают настроенный базовый URL, HTTP-метод, путь, имя операции и аргументы. Сгенерированный `Accept` и явно переданные заголовки приводятся к сериализованным именам и значениям: эквивалентные `Headers`, объекты и массивы пар используют одну запись кеша, разные значения заголовков — разные. Токены из хранилища и браузерные cookie в ключ не входят; при смене пользователя очищайте соответствующий кеш запросов.
70
+
71
+ ### Что поддерживается
72
+
73
+ - Примитивы, массивы, объекты, словари, enum, внутренние `$ref`, рекурсивные компоненты, пересечения `allOf`, объединения `oneOf`/`anyOf`. В OpenAPI 3.1 — также булевы схемы, `const` и массивы типов.
74
+ - `required` определяет необязательные поля. `null` появляется только там, где разрешён схемой. Массовой замены `null` на `undefined` нет. Для `readOnly`/`writeOnly` при необходимости создаются входные и выходные типы.
75
+ - Параметры пути/заголовков `simple`; query-параметры `form`, плоский `deepObject` с `explode: true`, массивы `spaceDelimited`/`pipeDelimited` с `explode: false`. Параметры операции переопределяют параметры уровня пути.
76
+ - JSON/`+json`, текст/XML как строки, бинарные тела/ответы как `Blob`, multipart и URL-encoded тела из объектов. При нескольких форматах запроса порядок выбора: JSON, `+json`, URL-encoded, multipart, остальные поддерживаемые форматы по алфавиту. Ответ читается по фактическому Content-Type; типы успешных ответов объединяются. `default` используется как успешный ответ только при отсутствии явных 2xx. Пустые ответы мутаций имеют тип `void` и возвращают `undefined`.
77
+ - Описания становятся комментариями. Даты остаются строками. Числовые границы, паттерны и длины не добавляют проверок во время выполнения. `oneOf` становится union без проверки исключительности. `discriminator` не добавляет выдуманных полей и значений: поле-дискриминатор нужно описать в схеме.
78
+
79
+ ### Текущие ограничения
80
+
81
+ Неподдерживаемые конструкции вызывают ошибку с местом в схеме до замены выходного файла: внешние `$ref` (сначала объедините схему), callbacks/webhooks, cookie-параметры, `content` у параметров, вложенные объекты/массивы параметров, `allowReserved`, стили пути `label`/`matrix`, пользовательский encoding форм, неподдерживаемые Content-Type и сложные ключевые слова JSON Schema: условия, `not`, динамические ссылки, `prefixItems`, `patternProperties`, `unevaluatedProperties`. Типизированные `additionalProperties` вместе с именованными свойствами отклоняются: индексная сигнатура TypeScript ошибочно ограничила бы и именованные свойства; словарь можно вынести в отдельное свойство. Рекурсивные типы должны быть компонентами; циклические цепочки алиасов и циклические YAML-ссылки отклоняются.
82
+
83
+ Fetch не позволяет отправлять тело с GET/HEAD и выполнять TRACE. GET с описанным ответом без тела отклоняется: React Query не кеширует `undefined`, и генератор не заменяет его на `null`. Пустые текстовые ответы остаются пустыми строками. Сегменты пути `.` и `..` отклоняются до отправки запроса: Fetch нормализовал бы их и изменил маршрут. `servers` и `security` из схемы не заменяют настройки: используйте `baseUrl` и `auth`. Заголовки ответа отдельно не возвращаются. Сгенерированные типы не проверяют фактические ответы сервера во время выполнения.
84
+
85
+ ### Переход с прежнего генератора
86
+
87
+ Перегенерируйте клиент. Привычные camelCase имена операций и группы аргументов сохраняются, но полной совместимости всех экспортов нет. Удалены пустой контекст, `deepMerge`, `QueryOperation`, общий `queryKeyFn` и `@ts-nocheck`. Начиная с `2.0.0-alpha.4`, ключи кеша имеют вид `[baseUrl, method, path, operationName, normalizedVariables]` вместо `[operationName, variables]`: используйте `xQueryKey`, обновите вручную составленные ключи инвалидации и очистите сохранённый кеш при обновлении. Имена типов приводятся к PascalCase, пунктуация и подчёркивания разделяют слова. Ошибки представлены `OpenapiHttpError` или обычным `Error` вместо `ErrorWrapper`. Более строгие типы могут потребовать исправить места вызова.
88
+
51
89
  ## Программный API
52
90
 
53
91
  ```ts
package/dist/generate.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { execFileSync } from 'node:child_process';
2
2
  import { existsSync, mkdirSync, mkdtempSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from 'node:fs';
3
3
  import { createRequire } from 'node:module';
4
- import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
4
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
+ import { generateOpenapiSource } from './openapi/generate.js';
6
7
  import { isUrl } from './path-utils.js';
7
8
  const packageDirectory = dirname(dirname(fileURLToPath(import.meta.url)));
8
9
  const templatesDirectory = join(packageDirectory, 'templates');
@@ -13,12 +14,6 @@ function outputPath(path, cwd) {
13
14
  function schemaValue(schema, cwd) {
14
15
  return isUrl(schema) ? schema : outputPath(schema, cwd);
15
16
  }
16
- function openapiSource(schema, cwd) {
17
- const value = schemaValue(schema, cwd);
18
- if (isUrl(value))
19
- return { source: 'url', url: value };
20
- return { source: 'file', relativePath: relative(packageDirectory, value) };
21
- }
22
17
  function runCli(entryPoint, args, cwd) {
23
18
  execFileSync(process.execPath, [entryPoint, ...args], { cwd, stdio: 'inherit' });
24
19
  }
@@ -27,37 +22,17 @@ function createTempDirectory(prefix) {
27
22
  mkdirSync(baseDirectory, { recursive: true });
28
23
  return mkdtempSync(join(baseDirectory, prefix));
29
24
  }
30
- function generateOpenapi(config, auth, cwd) {
31
- const tempDirectory = createTempDirectory('openapi-');
32
- const output = outputPath(config.output, cwd);
25
+ async function generateOpenapi(config, auth, cwd) {
33
26
  try {
34
- const fetcherPath = join(tempDirectory, 'openapi-fetcher.ts');
35
- const fetcherConfiguration = JSON.stringify({
27
+ const content = await generateOpenapiSource(schemaValue(config.schema, cwd), {
36
28
  ...(config.baseUrl ? { baseUrl: config.baseUrl } : {}),
37
29
  ...(auth ? { auth } : {}),
38
30
  });
39
- const fetcher = readFileSync(join(packageDirectory, 'dist', 'openapi-fetcher.js'), 'utf8')
40
- .replace(/\n?\/\/# sourceMappingURL=.*$/, '')
41
- .replace('createOpenapiFetcher()', `createOpenapiFetcher(${fetcherConfiguration})`)
42
- .replaceAll('export ', '');
43
- writeFileSync(fetcherPath, fetcher);
44
- const configText = readFileSync(join(templatesDirectory, 'openapi.template'), 'utf8')
45
- .replaceAll('%OPENAPI_SOURCE%', JSON.stringify(openapiSource(config.schema, cwd)))
46
- .replaceAll('%FILENAME%', JSON.stringify(join(tempDirectory, 'generated.ts')))
47
- .replaceAll('%OUTPUT_DIR%', JSON.stringify(relative(packageDirectory, join(tempDirectory, 'output'))))
48
- .replaceAll('%FETCHER_PATH%', JSON.stringify(fetcherPath));
49
- const configPath = join(tempDirectory, 'openapi.codegen.ts');
50
- writeFileSync(configPath, configText);
51
- const cli = join(dirname(require.resolve('@openapi-codegen/cli')), 'cli.js');
52
- runCli(cli, ['gen', 'openapi', '-c', relative(packageDirectory, configPath)], packageDirectory);
53
- return { path: output, content: readFileSync(join(tempDirectory, 'generated.ts'), 'utf8') };
31
+ return { path: outputPath(config.output, cwd), content };
54
32
  }
55
33
  catch (error) {
56
34
  throw new Error(`Could not generate OpenAPI client from ${schemaValue(config.schema, cwd)}: ${errorMessage(error)}`, { cause: error });
57
35
  }
58
- finally {
59
- rmSync(tempDirectory, { force: true, recursive: true });
60
- }
61
36
  }
62
37
  function generateGraphql(config, auth, cwd) {
63
38
  const output = outputPath(config.output, cwd);
@@ -210,7 +185,7 @@ export async function generate(config) {
210
185
  const cwd = process.cwd();
211
186
  const generated = [];
212
187
  if (config.openapi)
213
- generated.push(generateOpenapi(config.openapi, config.openapi.auth ?? config.auth, cwd));
188
+ generated.push(await generateOpenapi(config.openapi, config.openapi.auth ?? config.auth, cwd));
214
189
  if (config.graphql)
215
190
  generated.push(generateGraphql(config.graphql, config.graphql.auth ?? config.auth, cwd));
216
191
  publishOutputs(generated);
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type ObjectValue = Record<string, unknown>;
2
+ export declare function object(value: unknown, location: string): ObjectValue;
3
+ export declare function list(value: unknown, location: string): unknown[];
4
+ export declare function string(value: unknown, location: string): string;
5
+ export declare function pointer(...parts: string[]): string;
6
+ export declare class OpenapiDocument {
7
+ readonly root: ObjectValue;
8
+ readonly version: '3.0' | '3.1';
9
+ readonly schemas: ObjectValue;
10
+ constructor(root: ObjectValue);
11
+ reference(ref: string, location: string): unknown;
12
+ canonicalReference(ref: string, location: string): string;
13
+ resolve(value: unknown, location: string, visited?: Set<string>): ObjectValue;
14
+ }
15
+ export declare function loadOpenapi(source: string): Promise<OpenapiDocument>;
@@ -0,0 +1,113 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { parseDocument } from 'yaml';
3
+ export function object(value, location) {
4
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
5
+ throw new Error(`${location} must be an object.`);
6
+ }
7
+ return value;
8
+ }
9
+ export function list(value, location) {
10
+ if (!Array.isArray(value))
11
+ throw new Error(`${location} must be an array.`);
12
+ return value;
13
+ }
14
+ export function string(value, location) {
15
+ if (typeof value !== 'string' || !value.trim())
16
+ throw new Error(`${location} must be a non-empty string.`);
17
+ return value;
18
+ }
19
+ export function pointer(...parts) {
20
+ return `#/${parts.map((part) => part.replaceAll('~', '~0').replaceAll('/', '~1')).join('/')}`;
21
+ }
22
+ export class OpenapiDocument {
23
+ root;
24
+ version;
25
+ schemas;
26
+ constructor(root) {
27
+ this.root = root;
28
+ if (root.swagger !== undefined)
29
+ throw new Error('Swagger 2.0 is not supported. Use OpenAPI 3.0 or 3.1.');
30
+ const version = string(root.openapi, '#/openapi');
31
+ if (!/^3\.(0|1)\.\d+$/.test(version))
32
+ throw new Error(`Unsupported OpenAPI version "${version}". Use 3.0.x or 3.1.x.`);
33
+ this.version = version.startsWith('3.0.') ? '3.0' : '3.1';
34
+ const info = object(root.info, '#/info');
35
+ string(info.title, '#/info/title');
36
+ string(info.version, '#/info/version');
37
+ const components = root.components === undefined ? {} : object(root.components, '#/components');
38
+ this.schemas = components.schemas === undefined ? {} : object(components.schemas, '#/components/schemas');
39
+ if (root.webhooks !== undefined && Object.keys(object(root.webhooks, '#/webhooks')).length) {
40
+ throw new Error('#/webhooks is not supported by the HTTP client generator.');
41
+ }
42
+ }
43
+ reference(ref, location) {
44
+ if (!ref.startsWith('#/'))
45
+ throw new Error(`${location}: external $ref "${ref}" is not supported; bundle the schema first.`);
46
+ let current = this.root;
47
+ let parts;
48
+ try {
49
+ parts = decodeURIComponent(ref.slice(2))
50
+ .split('/')
51
+ .map((part) => part.replaceAll('~1', '/').replaceAll('~0', '~'));
52
+ }
53
+ catch {
54
+ throw new Error(`${location}: invalid reference "${ref}".`);
55
+ }
56
+ for (const part of parts) {
57
+ if (current === null || typeof current !== 'object' || !Object.hasOwn(current, part))
58
+ throw new Error(`${location}: unresolved $ref "${ref}".`);
59
+ current = current[part];
60
+ }
61
+ return current;
62
+ }
63
+ canonicalReference(ref, location) {
64
+ this.reference(ref, location);
65
+ return pointer(...decodeURIComponent(ref.slice(2))
66
+ .split('/')
67
+ .map((part) => part.replaceAll('~1', '/').replaceAll('~0', '~')));
68
+ }
69
+ resolve(value, location, visited = new Set()) {
70
+ const record = object(value, location);
71
+ if (record.$ref === undefined)
72
+ return record;
73
+ const ref = string(record.$ref, `${location}/$ref`);
74
+ if (visited.has(ref))
75
+ throw new Error(`${location}: circular reference "${ref}".`);
76
+ visited.add(ref);
77
+ return this.resolve(this.reference(ref, location), ref, visited);
78
+ }
79
+ }
80
+ export async function loadOpenapi(source) {
81
+ let content;
82
+ if (/^https?:\/\//i.test(source)) {
83
+ const response = await fetch(source, { signal: AbortSignal.timeout(30_000) });
84
+ if (!response.ok)
85
+ throw new Error(`Could not load ${source}: HTTP ${response.status}.`);
86
+ content = await response.text();
87
+ }
88
+ else {
89
+ content = await readFile(source, 'utf8');
90
+ }
91
+ const parsed = parseDocument(content, { uniqueKeys: true });
92
+ if (parsed.errors.length)
93
+ throw new Error(`Invalid YAML/JSON in ${source}: ${parsed.errors.map((error) => error.message).join('\n')}`);
94
+ const root = object(parsed.toJS({ maxAliasCount: 100 }), source);
95
+ const visited = new Set();
96
+ const active = new Set();
97
+ function check(value) {
98
+ if (!value || typeof value !== 'object')
99
+ return;
100
+ if (active.has(value))
101
+ throw new Error('Cyclic YAML aliases are not supported. Use OpenAPI $ref for recursive schemas.');
102
+ if (visited.has(value))
103
+ return;
104
+ active.add(value);
105
+ for (const child of Object.values(value))
106
+ check(child);
107
+ active.delete(value);
108
+ visited.add(value);
109
+ }
110
+ check(root);
111
+ return new OpenapiDocument(root);
112
+ }
113
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/openapi/document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { OpenapiFetcherConfiguration } from '../openapi-runtime.js';
2
+ /** Build the complete client in memory. The runtime is copied verbatim from checked TypeScript. */
3
+ export declare function generateOpenapiSource(source: string, configuration: OpenapiFetcherConfiguration): Promise<string>;
@@ -0,0 +1,66 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { loadOpenapi } from './document.js';
3
+ import { Names } from './names.js';
4
+ import { Operations } from './operations.js';
5
+ import { Schemas } from './schema.js';
6
+ /** Build the complete client in memory. The runtime is copied verbatim from checked TypeScript. */
7
+ export async function generateOpenapiSource(source, configuration) {
8
+ const document = await loadOpenapi(source);
9
+ const runtime = await readFile(new URL('../openapi-runtime.source', import.meta.url), 'utf8');
10
+ const names = new Names();
11
+ for (const name of [
12
+ 'reactQuery',
13
+ 'TokenStorage',
14
+ 'AuthConfig',
15
+ 'OpenapiFetcherOptions',
16
+ 'OpenapiFetcherConfiguration',
17
+ 'OpenapiParameter',
18
+ 'OpenapiHttpError',
19
+ 'createOpenapiFetcher',
20
+ 'openapiFetcher',
21
+ 'readConfiguredToken',
22
+ 'authorizationValue',
23
+ 'withBaseUrl',
24
+ 'parameterScalar',
25
+ 'parameterParts',
26
+ 'serializeQueryParams',
27
+ 'requestBody',
28
+ 'requestHeaders',
29
+ 'withQueryParams',
30
+ 'isJsonContentType',
31
+ 'readResponse',
32
+ 'Array',
33
+ 'Record',
34
+ 'Promise',
35
+ 'Omit',
36
+ 'TypeError',
37
+ 'Headers',
38
+ 'HeadersInit',
39
+ 'RequestCredentials',
40
+ 'BodyInit',
41
+ 'AbortSignal',
42
+ 'Response',
43
+ 'Blob',
44
+ 'FormData',
45
+ 'URLSearchParams',
46
+ 'Object',
47
+ 'String',
48
+ 'JSON',
49
+ 'globalThis',
50
+ 'document',
51
+ 'fetch',
52
+ ])
53
+ names.reserve(name, 'generated runtime');
54
+ const schemas = new Schemas(document, names);
55
+ const operations = new Operations(schemas, configuration.baseUrl).render();
56
+ const declarations = schemas.declarations();
57
+ return [
58
+ '// Generated by @kollors/react-codegen. Do not edit.',
59
+ ...(operations ? ["import * as reactQuery from '@tanstack/react-query';"] : []),
60
+ declarations,
61
+ ...(operations ? [runtime, `export const openapiFetcher = createOpenapiFetcher(${JSON.stringify(configuration)});`] : []),
62
+ operations,
63
+ '',
64
+ ].join('\n\n');
65
+ }
66
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAc,EAAE,aAA0C;IACpG,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI;QACjB,YAAY;QACZ,cAAc;QACd,YAAY;QACZ,uBAAuB;QACvB,6BAA6B;QAC7B,kBAAkB;QAClB,kBAAkB;QAClB,sBAAsB;QACtB,gBAAgB;QAChB,qBAAqB;QACrB,oBAAoB;QACpB,aAAa;QACb,iBAAiB;QACjB,gBAAgB;QAChB,sBAAsB;QACtB,aAAa;QACb,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,cAAc;QACd,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM;QACN,WAAW;QACX,SAAS;QACT,aAAa;QACb,oBAAoB;QACpB,UAAU;QACV,aAAa;QACb,UAAU;QACV,MAAM;QACN,UAAU;QACV,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,UAAU;QACV,OAAO;KACR;QACC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAC5C,OAAO;QACL,sDAAsD;QACtD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,YAAY;QACZ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,sDAAsD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,UAAU;QACV,EAAE;KACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function identifier(value: string, upper?: boolean): string;
2
+ export declare class Names {
3
+ private readonly used;
4
+ reserve(name: string, location: string): string;
5
+ }
6
+ export declare function comment(value: unknown): string;
@@ -0,0 +1,24 @@
1
+ export function identifier(value, upper = false) {
2
+ const name = (value.match(/[A-Za-z0-9$]+/g) ?? []).map((part, index) => (index ? part[0]?.toUpperCase() + part.slice(1) : part)).join('');
3
+ if (!name)
4
+ throw new Error(`Cannot derive a TypeScript identifier from "${value}".`);
5
+ const first = upper ? name[0]?.toUpperCase() : name[0]?.toLowerCase();
6
+ const result = first + name.slice(1);
7
+ return /^\d/.test(result) ? `_${result}` : result;
8
+ }
9
+ export class Names {
10
+ used = new Map();
11
+ reserve(name, location) {
12
+ const previous = this.used.get(name);
13
+ if (previous !== undefined)
14
+ throw new Error(`Generated name "${name}" collides between ${previous} and ${location}. Rename the schema or operationId.`);
15
+ this.used.set(name, location);
16
+ return name;
17
+ }
18
+ }
19
+ export function comment(value) {
20
+ if (typeof value !== 'string' || !value.trim())
21
+ return '';
22
+ return `/** ${value.replaceAll('*/', '* /').replace(/\r?\n/g, '\n * ')} */\n`;
23
+ }
24
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/openapi/names.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,KAAK;IACrD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1I,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,IAAI,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,KAAK;IACC,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,OAAO,CAAC,IAAY,EAAE,QAAgB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,SAAS;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,sBAAsB,QAAQ,QAAQ,QAAQ,qCAAqC,CAAC,CAAC;QAC9H,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC1D,OAAO,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;AAChF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Schemas } from './schema.js';
2
+ export declare class Operations {
3
+ private readonly schemas;
4
+ private readonly baseUrl;
5
+ constructor(schemas: Schemas, baseUrl?: string);
6
+ render(): string;
7
+ private media;
8
+ private parameters;
9
+ private flatParameter;
10
+ private operation;
11
+ }