@qualisero/openapi-endpoint 0.18.1 → 0.19.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 +7 -7
- package/dist/cli.js +102 -38
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +19 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# OpenApiEndpoint
|
|
2
2
|
|
|
3
|
-
[](https://badge.fury.io/js/@qualisero%2Fopenapi-endpoint)
|
|
4
|
+
[](https://github.com/qualisero/openapi-endpoint/actions/workflows/ci.yml)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://qualisero.github.io/openapi-endpoint/)
|
|
7
7
|
|
|
@@ -171,19 +171,19 @@ const mutation = api.createPet.useMutation({
|
|
|
171
171
|
|
|
172
172
|
```typescript
|
|
173
173
|
import type {
|
|
174
|
-
ApiResponse, // Response type (
|
|
175
|
-
|
|
174
|
+
ApiResponse, // Response type (ALL fields required - default)
|
|
175
|
+
ApiResponseStrict, // Response type (only readonly/required fields required - strict mode)
|
|
176
176
|
ApiRequest, // Request body type
|
|
177
177
|
ApiPathParams, // Path parameters type
|
|
178
178
|
ApiQueryParams, // Query parameters type
|
|
179
179
|
} from './generated/api-operations'
|
|
180
180
|
|
|
181
|
-
// ApiResponse - ALL fields required
|
|
181
|
+
// ApiResponse - default, ALL fields required
|
|
182
182
|
type PetResponse = ApiResponse<OpType.getPet>
|
|
183
183
|
// { readonly id: string, name: string, tag: string, status: 'available' | ... }
|
|
184
184
|
|
|
185
|
-
//
|
|
186
|
-
type
|
|
185
|
+
// ApiResponseStrict - strict mode, only readonly/required fields required
|
|
186
|
+
type PetResponseStrict = ApiResponseStrict<OpType.getPet>
|
|
187
187
|
// { readonly id: string, name: string, tag?: string, status?: 'available' | ... }
|
|
188
188
|
```
|
|
189
189
|
|
package/dist/cli.js
CHANGED
|
@@ -359,25 +359,47 @@ function addEnumIfUnique(enumName, enumValues, sourcePath, enums, seenEnumValues
|
|
|
359
359
|
/**
|
|
360
360
|
* Extracts all enums from an OpenAPI spec.
|
|
361
361
|
* Walks through:
|
|
362
|
-
* 1. components.schemas and their properties
|
|
362
|
+
* 1. components.schemas and their properties (inline enum or $ref to enum schema)
|
|
363
363
|
* 2. Operation parameters (query, header, path, cookie)
|
|
364
364
|
* Deduplicates by comparing enum value sets.
|
|
365
365
|
*/
|
|
366
366
|
function extractEnumsFromSpec(openApiSpec) {
|
|
367
367
|
const enums = [];
|
|
368
368
|
const seenEnumValues = new Map(); // Maps JSON stringified values -> enum name (for deduplication)
|
|
369
|
+
// Build lookup of schemas that ARE enums (have enum property on the schema itself)
|
|
370
|
+
const schemaEnumLookup = new Map();
|
|
371
|
+
if (openApiSpec.components?.schemas) {
|
|
372
|
+
for (const [schemaName, schema] of Object.entries(openApiSpec.components.schemas)) {
|
|
373
|
+
if (schema.enum && Array.isArray(schema.enum)) {
|
|
374
|
+
const enumValues = schema.enum.filter((v) => v !== null);
|
|
375
|
+
if (enumValues.length > 0) {
|
|
376
|
+
schemaEnumLookup.set(schemaName, enumValues);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
// Helper to resolve enum values from a schema (inline or $ref)
|
|
382
|
+
function resolveEnumValues(schema) {
|
|
383
|
+
// Inline enum
|
|
384
|
+
if (schema.enum && Array.isArray(schema.enum)) {
|
|
385
|
+
const enumValues = schema.enum.filter((v) => v !== null);
|
|
386
|
+
return enumValues.length > 0 ? enumValues : null;
|
|
387
|
+
}
|
|
388
|
+
// $ref to an enum schema
|
|
389
|
+
if (typeof schema.$ref === 'string') {
|
|
390
|
+
const refName = schema.$ref.split('/').pop();
|
|
391
|
+
return schemaEnumLookup.get(refName) ?? null;
|
|
392
|
+
}
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
369
395
|
// Extract from components.schemas
|
|
370
396
|
if (openApiSpec.components?.schemas) {
|
|
371
397
|
for (const [schemaName, schema] of Object.entries(openApiSpec.components.schemas)) {
|
|
372
398
|
if (!schema.properties)
|
|
373
399
|
continue;
|
|
374
400
|
for (const [propName, propSchema] of Object.entries(schema.properties)) {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
// Filter out null values from enum array
|
|
378
|
-
const enumValues = propSchema.enum.filter((v) => v !== null);
|
|
379
|
-
// Skip if all values were null
|
|
380
|
-
if (enumValues.length === 0)
|
|
401
|
+
const enumValues = resolveEnumValues(propSchema);
|
|
402
|
+
if (!enumValues)
|
|
381
403
|
continue;
|
|
382
404
|
// Use schema name as-is (already PascalCase), convert property name from snake_case
|
|
383
405
|
const enumName = schemaName + toPascalCase(propName);
|
|
@@ -401,10 +423,10 @@ function extractEnumsFromSpec(openApiSpec) {
|
|
|
401
423
|
const paramName = paramObj.name;
|
|
402
424
|
const paramIn = paramObj.in;
|
|
403
425
|
const paramSchema = paramObj.schema;
|
|
404
|
-
if (!paramName || !paramIn || !paramSchema
|
|
426
|
+
if (!paramName || !paramIn || !paramSchema)
|
|
405
427
|
continue;
|
|
406
|
-
const enumValues = paramSchema
|
|
407
|
-
if (enumValues
|
|
428
|
+
const enumValues = resolveEnumValues(paramSchema);
|
|
429
|
+
if (!enumValues)
|
|
408
430
|
continue;
|
|
409
431
|
// Create a descriptive name: OperationName + ParamName
|
|
410
432
|
const operationName = op.operationId
|
|
@@ -808,13 +830,15 @@ function _generateOperationJSDoc(operationId, method, apiPath) {
|
|
|
808
830
|
lines.push(' */');
|
|
809
831
|
return lines.join('\n');
|
|
810
832
|
}
|
|
811
|
-
function generateApiClientContent(operationMap) {
|
|
833
|
+
function generateApiClientContent(operationMap, useStrictResponse = false) {
|
|
812
834
|
const ids = Object.keys(operationMap).sort();
|
|
813
835
|
const QUERY_HTTP = new Set(['GET', 'HEAD', 'OPTIONS']);
|
|
814
836
|
const isQuery = (id) => QUERY_HTTP.has(operationMap[id].method);
|
|
815
837
|
const hasPathParams = (id) => operationMap[id].path.includes('{');
|
|
816
838
|
// Registry for invalidateOperations support
|
|
817
839
|
const registryEntries = ids.map((id) => ` ${id}: { path: '${operationMap[id].path}' },`).join('\n');
|
|
840
|
+
// Response type to use for ALL operations (queries and mutations)
|
|
841
|
+
const responseType = useStrictResponse ? 'ApiResponseStrict' : 'ApiResponse';
|
|
818
842
|
// Generic factory helpers (4 patterns)
|
|
819
843
|
const helpers = `/**
|
|
820
844
|
* Generic query helper for operations without path parameters.
|
|
@@ -825,7 +849,7 @@ function _queryNoParams<Op extends AllOps>(
|
|
|
825
849
|
cfg: { path: string; method: HttpMethod; listPath: string | null },
|
|
826
850
|
enums: Record<string, unknown>,
|
|
827
851
|
) {
|
|
828
|
-
type Response =
|
|
852
|
+
type Response = ${responseType}<Op>
|
|
829
853
|
type QueryParams = ApiQueryParams<Op>
|
|
830
854
|
|
|
831
855
|
const useQuery = (
|
|
@@ -892,7 +916,7 @@ function _queryWithParams<Op extends AllOps>(
|
|
|
892
916
|
) {
|
|
893
917
|
type PathParams = ApiPathParams<Op>
|
|
894
918
|
type PathParamsInput = ApiPathParamsInput<Op>
|
|
895
|
-
type Response =
|
|
919
|
+
type Response = ${responseType}<Op>
|
|
896
920
|
type QueryParams = ApiQueryParams<Op>
|
|
897
921
|
|
|
898
922
|
// Two-overload interface: non-function (exact via object-literal checking) +
|
|
@@ -986,7 +1010,7 @@ function _mutationNoParams<Op extends AllOps>(
|
|
|
986
1010
|
enums: Record<string, unknown>,
|
|
987
1011
|
) {
|
|
988
1012
|
type RequestBody = ApiRequest<Op>
|
|
989
|
-
type Response =
|
|
1013
|
+
type Response = ${responseType}<Op>
|
|
990
1014
|
type QueryParams = ApiQueryParams<Op>
|
|
991
1015
|
|
|
992
1016
|
const useMutation = (
|
|
@@ -1031,7 +1055,7 @@ function _mutationWithParams<Op extends AllOps>(
|
|
|
1031
1055
|
type PathParams = ApiPathParams<Op>
|
|
1032
1056
|
type PathParamsInput = ApiPathParamsInput<Op>
|
|
1033
1057
|
type RequestBody = ApiRequest<Op>
|
|
1034
|
-
type Response =
|
|
1058
|
+
type Response = ${responseType}<Op>
|
|
1035
1059
|
type QueryParams = ApiQueryParams<Op>
|
|
1036
1060
|
|
|
1037
1061
|
// Three-overload interface:
|
|
@@ -1155,7 +1179,7 @@ import {
|
|
|
1155
1179
|
import type { QueryClient } from '@tanstack/vue-query'
|
|
1156
1180
|
|
|
1157
1181
|
import type {
|
|
1158
|
-
ApiResponse,
|
|
1182
|
+
ApiResponse${useStrictResponse ? ',\n ApiResponseStrict' : ''},
|
|
1159
1183
|
ApiRequest,
|
|
1160
1184
|
ApiPathParams,
|
|
1161
1185
|
ApiPathParamsInput,
|
|
@@ -1239,9 +1263,9 @@ ${factoryCalls}
|
|
|
1239
1263
|
export type ApiClient = ReturnType<typeof createApiClient>
|
|
1240
1264
|
`;
|
|
1241
1265
|
}
|
|
1242
|
-
async function generateApiClientFile(openApiSpec, outputDir, excludePrefix) {
|
|
1266
|
+
async function generateApiClientFile(openApiSpec, outputDir, excludePrefix, useStrictResponse = false) {
|
|
1243
1267
|
const operationMap = buildOperationMap(openApiSpec, excludePrefix);
|
|
1244
|
-
const content = generateApiClientContent(operationMap);
|
|
1268
|
+
const content = generateApiClientContent(operationMap, useStrictResponse);
|
|
1245
1269
|
fs.writeFileSync(path.join(outputDir, 'api-client.ts'), content);
|
|
1246
1270
|
console.log(`✅ Generated api-client.ts (${Object.keys(operationMap).length} operations)`);
|
|
1247
1271
|
}
|
|
@@ -1255,16 +1279,18 @@ Arguments:
|
|
|
1255
1279
|
output-directory Directory where generated files will be saved
|
|
1256
1280
|
|
|
1257
1281
|
Options:
|
|
1258
|
-
--exclude-prefix PREFIX
|
|
1259
|
-
|
|
1260
|
-
--
|
|
1261
|
-
|
|
1282
|
+
--exclude-prefix PREFIX Exclude operations with operationId starting with PREFIX
|
|
1283
|
+
(default: '_deprecated', use 'false' to disable)
|
|
1284
|
+
--use-strict-response Use ApiResponseStrict for responses (only readonly/required fields required)
|
|
1285
|
+
(default: false; when disabled, ALL fields required)
|
|
1286
|
+
--help, -h Show this help message
|
|
1262
1287
|
|
|
1263
1288
|
Examples:
|
|
1264
1289
|
npx @qualisero/openapi-endpoint ./api/openapi.json ./src/generated
|
|
1265
1290
|
npx @qualisero/openapi-endpoint https://api.example.com/openapi.json ./src/api
|
|
1266
1291
|
npx @qualisero/openapi-endpoint ./api.json ./src/gen --exclude-prefix _internal
|
|
1267
|
-
npx @qualisero/openapi-endpoint ./api.json ./src/gen --
|
|
1292
|
+
npx @qualisero/openapi-endpoint ./api.json ./src/gen --exclude-prefix false
|
|
1293
|
+
npx @qualisero/openapi-endpoint ./api.json ./src/gen --use-strict-response true
|
|
1268
1294
|
|
|
1269
1295
|
This command will generate:
|
|
1270
1296
|
- openapi-types.ts (TypeScript types from OpenAPI spec)
|
|
@@ -1273,6 +1299,20 @@ This command will generate:
|
|
|
1273
1299
|
- api-types.ts (Types namespace for type-only access)
|
|
1274
1300
|
- api-enums.ts (Type-safe enum objects from OpenAPI spec)
|
|
1275
1301
|
- api-schemas.ts (Type aliases for schema objects from OpenAPI spec)
|
|
1302
|
+
|
|
1303
|
+
Response Typing (--use-strict-response):
|
|
1304
|
+
By default, ApiResponse makes ALL fields required for all endpoint responses
|
|
1305
|
+
(GET, POST, PUT, PATCH, DELETE). This assumes the API always returns all fields
|
|
1306
|
+
regardless of how they're marked in the OpenAPI spec.
|
|
1307
|
+
|
|
1308
|
+
When --use-strict-response is enabled, ApiResponseStrict is used instead, which
|
|
1309
|
+
only marks fields as required if they are:
|
|
1310
|
+
- readonly (server-generated fields like 'id'), OR
|
|
1311
|
+
- marked as required in the OpenAPI spec
|
|
1312
|
+
All other fields remain optional.
|
|
1313
|
+
|
|
1314
|
+
Note: readonly only affects REQUEST BODIES (mutations), not response types.
|
|
1315
|
+
Request bodies always exclude readonly fields (client cannot set them).
|
|
1276
1316
|
`);
|
|
1277
1317
|
}
|
|
1278
1318
|
// ============================================================================
|
|
@@ -1449,10 +1489,10 @@ function generateApiOperationsContent(operationMap, opEnums, schemaEnumNames) {
|
|
|
1449
1489
|
const typeHelpers = `
|
|
1450
1490
|
type AllOps = keyof operations
|
|
1451
1491
|
|
|
1452
|
-
/** Response data type
|
|
1492
|
+
/** Response data type (ALL fields required - default). */
|
|
1453
1493
|
export type ApiResponse<K extends AllOps> = _ApiResponse<operations, K>
|
|
1454
|
-
/** Response data type
|
|
1455
|
-
export type
|
|
1494
|
+
/** Response data type (only readonly/required fields required - strict mode). */
|
|
1495
|
+
export type ApiResponseStrict<K extends AllOps> = _ApiResponseStrict<operations, K>
|
|
1456
1496
|
/** Request body type. */
|
|
1457
1497
|
export type ApiRequest<K extends AllOps> = _ApiRequest<operations, K>
|
|
1458
1498
|
/** Path parameters type. */
|
|
@@ -1473,7 +1513,7 @@ import type { operations } from './openapi-types.js'
|
|
|
1473
1513
|
import { HttpMethod } from '@qualisero/openapi-endpoint'
|
|
1474
1514
|
import type {
|
|
1475
1515
|
ApiResponse as _ApiResponse,
|
|
1476
|
-
|
|
1516
|
+
ApiResponseStrict as _ApiResponseStrict,
|
|
1477
1517
|
ApiRequest as _ApiRequest,
|
|
1478
1518
|
ApiPathParams as _ApiPathParams,
|
|
1479
1519
|
ApiPathParamsInput as _ApiPathParamsInput,
|
|
@@ -1544,10 +1584,10 @@ function generateApiTypesContent(operationMap, opEnums) {
|
|
|
1544
1584
|
})
|
|
1545
1585
|
.join('\n');
|
|
1546
1586
|
const commonLines = [
|
|
1547
|
-
` /**
|
|
1548
|
-
` export type Response
|
|
1549
|
-
` /** Response type - only
|
|
1550
|
-
` export type
|
|
1587
|
+
` /** Response type - ALL fields required (default). */`,
|
|
1588
|
+
` export type Response = _ApiResponse<OpenApiOperations, '${id}'>`,
|
|
1589
|
+
` /** Response type - only readonly/required fields required (strict mode). */`,
|
|
1590
|
+
` export type StrictResponse = _ApiResponseStrict<OpenApiOperations, '${id}'>`,
|
|
1551
1591
|
];
|
|
1552
1592
|
if (!query) {
|
|
1553
1593
|
commonLines.push(` /** Request body type. */`, ` export type Request = _ApiRequest<OpenApiOperations, '${id}'>`);
|
|
@@ -1562,7 +1602,7 @@ function generateApiTypesContent(operationMap, opEnums) {
|
|
|
1562
1602
|
|
|
1563
1603
|
import type {
|
|
1564
1604
|
ApiResponse as _ApiResponse,
|
|
1565
|
-
|
|
1605
|
+
ApiResponseStrict as _ApiResponseStrict,
|
|
1566
1606
|
ApiRequest as _ApiRequest,
|
|
1567
1607
|
ApiPathParams as _ApiPathParams,
|
|
1568
1608
|
ApiQueryParams as _ApiQueryParams,
|
|
@@ -1612,13 +1652,18 @@ async function main() {
|
|
|
1612
1652
|
const [openapiInput, outputDir, ...optionArgs] = args;
|
|
1613
1653
|
// Parse options
|
|
1614
1654
|
let excludePrefix = '_deprecated'; // default
|
|
1655
|
+
let useStrictResponse = false; // default to false
|
|
1615
1656
|
for (let i = 0; i < optionArgs.length; i++) {
|
|
1616
|
-
if (optionArgs[i] === '--
|
|
1617
|
-
excludePrefix = null;
|
|
1618
|
-
}
|
|
1619
|
-
else if (optionArgs[i] === '--exclude-prefix') {
|
|
1657
|
+
if (optionArgs[i] === '--exclude-prefix') {
|
|
1620
1658
|
if (i + 1 < optionArgs.length) {
|
|
1621
|
-
|
|
1659
|
+
const value = optionArgs[i + 1];
|
|
1660
|
+
// If value is 'false', treat as no exclusion
|
|
1661
|
+
if (value === 'false') {
|
|
1662
|
+
excludePrefix = null;
|
|
1663
|
+
}
|
|
1664
|
+
else {
|
|
1665
|
+
excludePrefix = value;
|
|
1666
|
+
}
|
|
1622
1667
|
i++; // Skip next arg since we consumed it
|
|
1623
1668
|
}
|
|
1624
1669
|
else {
|
|
@@ -1627,6 +1672,18 @@ async function main() {
|
|
|
1627
1672
|
process.exit(1);
|
|
1628
1673
|
}
|
|
1629
1674
|
}
|
|
1675
|
+
else if (optionArgs[i] === '--use-strict-response') {
|
|
1676
|
+
if (i + 1 < optionArgs.length) {
|
|
1677
|
+
const value = optionArgs[i + 1];
|
|
1678
|
+
// Support 'true' or 'false' values
|
|
1679
|
+
useStrictResponse = value !== 'false';
|
|
1680
|
+
i++; // Skip next arg since we consumed it
|
|
1681
|
+
}
|
|
1682
|
+
else {
|
|
1683
|
+
// Flag without value means true
|
|
1684
|
+
useStrictResponse = true;
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1630
1687
|
}
|
|
1631
1688
|
try {
|
|
1632
1689
|
// Ensure output directory exists
|
|
@@ -1641,6 +1698,13 @@ async function main() {
|
|
|
1641
1698
|
else {
|
|
1642
1699
|
console.log(`✅ Including all operations (no exclusion filter)`);
|
|
1643
1700
|
}
|
|
1701
|
+
// Log response typing setting
|
|
1702
|
+
if (useStrictResponse) {
|
|
1703
|
+
console.log(`✅ Using ApiResponseStrict (only readonly/required fields required)`);
|
|
1704
|
+
}
|
|
1705
|
+
else {
|
|
1706
|
+
console.log(`✅ Using ApiResponse (ALL fields required)`);
|
|
1707
|
+
}
|
|
1644
1708
|
// Fetch and parse OpenAPI spec once
|
|
1645
1709
|
let openapiContent = await fetchOpenAPISpec(openapiInput);
|
|
1646
1710
|
const openApiSpec = JSON.parse(openapiContent);
|
|
@@ -1656,7 +1720,7 @@ async function main() {
|
|
|
1656
1720
|
generateApiSchemas(openapiContent, outputDir, excludePrefix),
|
|
1657
1721
|
generateApiOperationsFile(openApiSpec, outputDir, excludePrefix, schemaEnumNames),
|
|
1658
1722
|
generateApiTypesFile(openApiSpec, outputDir, excludePrefix),
|
|
1659
|
-
generateApiClientFile(openApiSpec, outputDir, excludePrefix),
|
|
1723
|
+
generateApiClientFile(openApiSpec, outputDir, excludePrefix, useStrictResponse),
|
|
1660
1724
|
]);
|
|
1661
1725
|
console.log('🎉 Code generation completed successfully!');
|
|
1662
1726
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { useEndpointMutation } from './openapi-mutation';
|
|
|
3
3
|
export { defaultQueryClient } from './openapi-helpers';
|
|
4
4
|
export type { QueryReturn, LazyQueryReturn } from './openapi-query';
|
|
5
5
|
export type { MutationReturn } from './openapi-mutation';
|
|
6
|
-
export type { EndpointConfig, QueryOptions, LazyQueryFetchOptions, MutationOptions, MutationVars, CacheInvalidationOptions, Refetchable, MutateFn, MutateAsyncFn, MutateAsyncReturn, ReactiveOr, NoExcessReturn, AxiosRequestConfigExtended, ApiResponse,
|
|
6
|
+
export type { EndpointConfig, QueryOptions, LazyQueryFetchOptions, MutationOptions, MutationVars, CacheInvalidationOptions, Refetchable, MutateFn, MutateAsyncFn, MutateAsyncReturn, ReactiveOr, NoExcessReturn, AxiosRequestConfigExtended, ApiResponse, ApiResponseStrict, ApiRequest, ApiPathParams, ApiPathParamsInput, ApiQueryParams, } from './types';
|
|
7
7
|
export { HttpMethod, QUERY_METHODS, MUTATION_METHODS, isQueryMethod, isMutationMethod } from './types';
|
|
8
8
|
export type { Ref, ComputedRef } from 'vue';
|
|
9
9
|
export type { MaybeRefOrGetter } from '@vue/reactivity';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAKtD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAKxD,YAAY,EAEV,cAAc,EAGd,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,YAAY,EAGZ,wBAAwB,EACxB,WAAW,EAGX,QAAQ,EACR,aAAa,EACb,iBAAiB,EAGjB,UAAU,EACV,cAAc,EAGd,0BAA0B,EAG1B,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAKtD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAKxD,YAAY,EAEV,cAAc,EAGd,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,YAAY,EAGZ,wBAAwB,EACxB,WAAW,EAGX,QAAQ,EACR,aAAa,EACb,iBAAiB,EAGjB,UAAU,EACV,cAAc,EAGd,0BAA0B,EAG1B,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAA;AAKhB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAKtG,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -195,10 +195,10 @@ type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends <
|
|
|
195
195
|
type IsReadonly<T, K extends keyof T> = IfEquals<Pick<T, K>, {
|
|
196
196
|
-readonly [Q in K]: T[K];
|
|
197
197
|
}, false, true>;
|
|
198
|
-
type
|
|
199
|
-
[K in keyof T as IsReadonly<T, K> extends true ? K : never]-?: T[K];
|
|
198
|
+
type RequireReadonlyOrRequired<T> = {
|
|
199
|
+
[K in keyof T as IsReadonly<T, K> extends true ? K : undefined extends T[K] ? never : K]-?: T[K];
|
|
200
200
|
} & {
|
|
201
|
-
[K in keyof T as IsReadonly<T, K> extends false ? K : never]: T[K];
|
|
201
|
+
[K in keyof T as IsReadonly<T, K> extends false ? (undefined extends T[K] ? K : never) : never]: T[K];
|
|
202
202
|
};
|
|
203
203
|
type ExtractResponseData<Ops extends AnyOps, Op extends keyof Ops> = Ops[Op] extends {
|
|
204
204
|
responses: {
|
|
@@ -250,14 +250,26 @@ type ExtractResponseData<Ops extends AnyOps, Op extends keyof Ops> = Ops[Op] ext
|
|
|
250
250
|
};
|
|
251
251
|
} ? Data : unknown;
|
|
252
252
|
/**
|
|
253
|
-
* Extract
|
|
254
|
-
*
|
|
253
|
+
* Extract response data type (ALL fields required - default behavior).
|
|
254
|
+
*
|
|
255
|
+
* Used for ALL endpoint responses (GET, POST, PUT, PATCH, DELETE) by default.
|
|
256
|
+
* Assumes the API always returns all fields regardless of how they're marked in the spec.
|
|
257
|
+
*
|
|
258
|
+
* @example `ApiResponse<operations, 'getPet'>` → `{ readonly id: string, name: string, tag: string, status: 'available' | ... }`
|
|
255
259
|
*/
|
|
256
260
|
export type ApiResponse<Ops extends AnyOps, Op extends keyof Ops> = RequireAll<ExtractResponseData<Ops, Op>>;
|
|
257
261
|
/**
|
|
258
|
-
* Extract
|
|
262
|
+
* Extract response data type (only readonly OR required fields are required - strict mode).
|
|
263
|
+
*
|
|
264
|
+
* Used for ALL endpoint responses when `--use-strict-response` flag is enabled.
|
|
265
|
+
* Only marks fields as required if they are:
|
|
266
|
+
* - readonly (server-generated), OR
|
|
267
|
+
* - marked as required in the OpenAPI spec
|
|
268
|
+
* All other fields remain optional.
|
|
269
|
+
*
|
|
270
|
+
* @example `ApiResponseStrict<operations, 'getPet'>` → `{ readonly id: string, name: string, tag?: string, status?: 'available' | ... }`
|
|
259
271
|
*/
|
|
260
|
-
export type
|
|
272
|
+
export type ApiResponseStrict<Ops extends AnyOps, Op extends keyof Ops> = RequireReadonlyOrRequired<ExtractResponseData<Ops, Op>>;
|
|
261
273
|
type Writable<T> = {
|
|
262
274
|
-readonly [K in keyof T as IfEquals<Pick<T, K>, {
|
|
263
275
|
-readonly [Q in K]: T[K];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|