zod-openapi 2.6.2 → 2.7.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.
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createParamOrRef = exports.createMediaTypeSchema = exports.getDefaultComponents = void 0;
3
+ exports.createParamOrRef = exports.createMediaTypeSchema = exports.getDefaultComponents = exports.createComponents = void 0;
4
4
  var components_1 = require("./create/components");
5
+ Object.defineProperty(exports, "createComponents", { enumerable: true, get: function () { return components_1.createComponents; } });
5
6
  Object.defineProperty(exports, "getDefaultComponents", { enumerable: true, get: function () { return components_1.getDefaultComponents; } });
6
7
  var content_1 = require("./create/content");
7
8
  Object.defineProperty(exports, "createMediaTypeSchema", { enumerable: true, get: function () { return content_1.createMediaTypeSchema; } });
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAAA,kDAG6B;AAF3B,kHAAA,oBAAoB,OAAA;AAGtB,4CAAyD;AAAhD,gHAAA,qBAAqB,OAAA;AAC9B,kDAAuD;AAA9C,8GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAAA,kDAI6B;AAH3B,8GAAA,gBAAgB,OAAA;AAChB,kHAAA,oBAAoB,OAAA;AAGtB,4CAAyD;AAAhD,gHAAA,qBAAqB,OAAA;AAC9B,kDAAuD;AAA9C,8GAAA,gBAAgB,OAAA"}
@@ -1,10 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createRecordSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const openapi_1 = require("../../openapi");
4
6
  const _1 = require(".");
5
- const createRecordSchema = (zodRecord, state) => ({
6
- type: 'object',
7
- additionalProperties: (0, _1.createSchemaOrRef)(zodRecord.valueSchema, state, ['record value']),
8
- });
7
+ const createRecordSchema = (zodRecord, state) => {
8
+ const additionalProperties = (0, _1.createSchemaOrRef)(zodRecord.valueSchema, state, ['record value']);
9
+ if (zodRecord.keySchema instanceof zod_1.ZodEnum) {
10
+ return {
11
+ type: 'object',
12
+ properties: zodRecord.keySchema._def.values.reduce((acc, key) => {
13
+ acc[key] = additionalProperties;
14
+ return acc;
15
+ }, {}),
16
+ additionalProperties: false,
17
+ };
18
+ }
19
+ if ((0, openapi_1.satisfiesVersion)(state.components.openapi, '3.1.0') &&
20
+ zodRecord.keySchema instanceof zod_1.ZodString &&
21
+ zodRecord.keySchema._def.checks.length) {
22
+ return {
23
+ type: 'object',
24
+ // @ts-expect-error FIXME: https://github.com/metadevpro/openapi3-ts/pull/120
25
+ propertyNames: (0, _1.createSchemaOrRef)(zodRecord.keySchema, state, ['record key']),
26
+ additionalProperties,
27
+ };
28
+ }
29
+ return {
30
+ type: 'object',
31
+ additionalProperties,
32
+ };
33
+ };
9
34
  exports.createRecordSchema = createRecordSchema;
10
35
  //# sourceMappingURL=record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/create/schema/record.ts"],"names":[],"mappings":";;;AAIA,wBAAwD;AAEjD,MAAM,kBAAkB,GAAG,CAChC,SAA8B,EAC9B,KAAkB,EACE,EAAE,CAAC,CAAC;IACxB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAA,oBAAiB,EACrC,SAAS,CAAC,WAAyB,EACnC,KAAK,EACL,CAAC,cAAc,CAAC,CACjB;CACF,CAAC,CAAC;AAVU,QAAA,kBAAkB,sBAU5B"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/create/schema/record.ts"],"names":[],"mappings":";;;AAAA,6BAA0E;AAE1E,2CAAiD;AAGjD,wBAAwD;AAEjD,MAAM,kBAAkB,GAAG,CAChC,SAA8B,EAC9B,KAAkB,EACE,EAAE;IACtB,MAAM,oBAAoB,GAAG,IAAA,oBAAiB,EAC5C,SAAS,CAAC,WAAyB,EACnC,KAAK,EACL,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,IAAI,SAAS,CAAC,SAAS,YAAY,aAAO,EAAE;QAC1C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAmB,CAAC,MAAM,CAE9D,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACb,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBAChC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC;YACN,oBAAoB,EAAE,KAAK;SAC5B,CAAC;KACH;IAED,IACE,IAAA,0BAAgB,EAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACnD,SAAS,CAAC,SAAS,YAAY,eAAS;QACxC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EACtC;QACA,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,6EAA6E;YAC7E,aAAa,EAAE,IAAA,oBAAiB,EAC9B,SAAS,CAAC,SAAuB,EACjC,KAAK,EACL,CAAC,YAAY,CAAC,CACf;YACD,oBAAoB;SACrB,CAAC;KACH;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,kBAAkB,sBA4C7B"}
package/lib-es2015/api.js CHANGED
@@ -1,4 +1,4 @@
1
- export { getDefaultComponents, } from './create/components';
1
+ export { createComponents, getDefaultComponents, } from './create/components';
2
2
  export { createMediaTypeSchema } from './create/content';
3
3
  export { createParamOrRef } from './create/parameters';
4
4
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,6 +1,31 @@
1
+ import { ZodEnum, ZodString } from 'zod';
2
+ import { satisfiesVersion } from '../../openapi';
1
3
  import { createSchemaOrRef } from '.';
2
- export const createRecordSchema = (zodRecord, state) => ({
3
- type: 'object',
4
- additionalProperties: createSchemaOrRef(zodRecord.valueSchema, state, ['record value']),
5
- });
4
+ export const createRecordSchema = (zodRecord, state) => {
5
+ const additionalProperties = createSchemaOrRef(zodRecord.valueSchema, state, ['record value']);
6
+ if (zodRecord.keySchema instanceof ZodEnum) {
7
+ return {
8
+ type: 'object',
9
+ properties: zodRecord.keySchema._def.values.reduce((acc, key) => {
10
+ acc[key] = additionalProperties;
11
+ return acc;
12
+ }, {}),
13
+ additionalProperties: false,
14
+ };
15
+ }
16
+ if (satisfiesVersion(state.components.openapi, '3.1.0') &&
17
+ zodRecord.keySchema instanceof ZodString &&
18
+ zodRecord.keySchema._def.checks.length) {
19
+ return {
20
+ type: 'object',
21
+ // @ts-expect-error FIXME: https://github.com/metadevpro/openapi3-ts/pull/120
22
+ propertyNames: createSchemaOrRef(zodRecord.keySchema, state, ['record key']),
23
+ additionalProperties,
24
+ };
25
+ }
26
+ return {
27
+ type: 'object',
28
+ additionalProperties,
29
+ };
30
+ };
6
31
  //# sourceMappingURL=record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/create/schema/record.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA8B,EAC9B,KAAkB,EACE,EAAE,CAAC,CAAC;IACxB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,iBAAiB,CACrC,SAAS,CAAC,WAAyB,EACnC,KAAK,EACL,CAAC,cAAc,CAAC,CACjB;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/create/schema/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,SAAS,EAAmB,MAAM,KAAK,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAoB,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA8B,EAC9B,KAAkB,EACE,EAAE;IACtB,MAAM,oBAAoB,GAAG,iBAAiB,CAC5C,SAAS,CAAC,WAAyB,EACnC,KAAK,EACL,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,IAAI,SAAS,CAAC,SAAS,YAAY,OAAO,EAAE;QAC1C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAG,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAmB,CAAC,MAAM,CAE9D,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACb,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC;gBAChC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC;YACN,oBAAoB,EAAE,KAAK;SAC5B,CAAC;KACH;IAED,IACE,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QACnD,SAAS,CAAC,SAAS,YAAY,SAAS;QACxC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EACtC;QACA,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,6EAA6E;YAC7E,aAAa,EAAE,iBAAiB,CAC9B,SAAS,CAAC,SAAuB,EACjC,KAAK,EACL,CAAC,YAAY,CAAC,CACf;YACD,oBAAoB;SACrB,CAAC;KACH;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- export { getDefaultComponents, type ComponentsObject, } from './create/components';
1
+ export { createComponents, getDefaultComponents, type ComponentsObject, } from './create/components';
2
2
  export { createMediaTypeSchema } from './create/content';
3
3
  export { createParamOrRef } from './create/parameters';
@@ -1,4 +1,4 @@
1
- import type { ZodRecord } from 'zod';
1
+ import { type ZodRecord } from 'zod';
2
2
  import type { oas31 } from '../../openapi3-ts/dist';
3
3
  import { type SchemaState } from '.';
4
4
  export declare const createRecordSchema: (zodRecord: ZodRecord<any, any>, state: SchemaState) => oas31.SchemaObject;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-openapi",
3
- "version": "2.6.2",
3
+ "version": "2.7.0",
4
4
  "description": "Convert Zod Schemas to OpenAPI v3.x documentation",
5
5
  "keywords": [
6
6
  "typescript",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {},
45
45
  "devDependencies": {
46
- "@redocly/cli": "1.0.0-beta.129",
46
+ "@redocly/cli": "1.0.0-beta.131",
47
47
  "@types/node": "^20.3.0",
48
48
  "eslint-plugin-zod-openapi": "^0.1.0",
49
49
  "openapi3-ts": "4.1.2",