@visulima/prisma-dmmf-transformer 2.0.30 → 2.0.32

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/dist/index.d.ts CHANGED
@@ -1,3 +1,193 @@
1
- export { default as getJSONSchemaProperty } from "./properties.d.ts";
2
- export { default as transformDMMF } from "./transform-dmmf.d.ts";
3
- export type { DefinitionMap, ModelMetaData, PropertyMap, PropertyMetaData, TransformOptions } from "./types.d.ts";
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ import { ReadonlyDeep } from 'type-fest';
3
+
4
+ // ==================================================================================================
5
+ // JSON Schema Draft 07
6
+ // ==================================================================================================
7
+ // https://tools.ietf.org/html/draft-handrews-json-schema-validation-01
8
+ // --------------------------------------------------------------------------------------------------
9
+
10
+ /**
11
+ * Primitive type
12
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1
13
+ */
14
+ type JSONSchema7TypeName =
15
+ | "string" //
16
+ | "number"
17
+ | "integer"
18
+ | "boolean"
19
+ | "object"
20
+ | "array"
21
+ | "null";
22
+
23
+ /**
24
+ * Primitive type
25
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1
26
+ */
27
+ type JSONSchema7Type =
28
+ | string //
29
+ | number
30
+ | boolean
31
+ | JSONSchema7Object
32
+ | JSONSchema7Array
33
+ | null;
34
+
35
+ // Workaround for infinite type recursion
36
+ interface JSONSchema7Object {
37
+ [key: string]: JSONSchema7Type;
38
+ }
39
+
40
+ // Workaround for infinite type recursion
41
+ // https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
42
+ interface JSONSchema7Array extends Array<JSONSchema7Type> {}
43
+
44
+ /**
45
+ * Meta schema
46
+ *
47
+ * Recommended values:
48
+ * - 'http://json-schema.org/schema#'
49
+ * - 'http://json-schema.org/hyper-schema#'
50
+ * - 'http://json-schema.org/draft-07/schema#'
51
+ * - 'http://json-schema.org/draft-07/hyper-schema#'
52
+ *
53
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5
54
+ */
55
+ type JSONSchema7Version = string;
56
+
57
+ /**
58
+ * JSON Schema v7
59
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01
60
+ */
61
+ type JSONSchema7Definition = JSONSchema7 | boolean;
62
+ interface JSONSchema7 {
63
+ $id?: string | undefined;
64
+ $ref?: string | undefined;
65
+ $schema?: JSONSchema7Version | undefined;
66
+ $comment?: string | undefined;
67
+
68
+ /**
69
+ * @see https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-00#section-8.2.4
70
+ * @see https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-00#appendix-A
71
+ */
72
+ $defs?: {
73
+ [key: string]: JSONSchema7Definition;
74
+ } | undefined;
75
+
76
+ /**
77
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1
78
+ */
79
+ type?: JSONSchema7TypeName | JSONSchema7TypeName[] | undefined;
80
+ enum?: JSONSchema7Type[] | undefined;
81
+ const?: JSONSchema7Type | undefined;
82
+
83
+ /**
84
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.2
85
+ */
86
+ multipleOf?: number | undefined;
87
+ maximum?: number | undefined;
88
+ exclusiveMaximum?: number | undefined;
89
+ minimum?: number | undefined;
90
+ exclusiveMinimum?: number | undefined;
91
+
92
+ /**
93
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.3
94
+ */
95
+ maxLength?: number | undefined;
96
+ minLength?: number | undefined;
97
+ pattern?: string | undefined;
98
+
99
+ /**
100
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.4
101
+ */
102
+ items?: JSONSchema7Definition | JSONSchema7Definition[] | undefined;
103
+ additionalItems?: JSONSchema7Definition | undefined;
104
+ maxItems?: number | undefined;
105
+ minItems?: number | undefined;
106
+ uniqueItems?: boolean | undefined;
107
+ contains?: JSONSchema7Definition | undefined;
108
+
109
+ /**
110
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5
111
+ */
112
+ maxProperties?: number | undefined;
113
+ minProperties?: number | undefined;
114
+ required?: string[] | undefined;
115
+ properties?: {
116
+ [key: string]: JSONSchema7Definition;
117
+ } | undefined;
118
+ patternProperties?: {
119
+ [key: string]: JSONSchema7Definition;
120
+ } | undefined;
121
+ additionalProperties?: JSONSchema7Definition | undefined;
122
+ dependencies?: {
123
+ [key: string]: JSONSchema7Definition | string[];
124
+ } | undefined;
125
+ propertyNames?: JSONSchema7Definition | undefined;
126
+
127
+ /**
128
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.6
129
+ */
130
+ if?: JSONSchema7Definition | undefined;
131
+ then?: JSONSchema7Definition | undefined;
132
+ else?: JSONSchema7Definition | undefined;
133
+
134
+ /**
135
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.7
136
+ */
137
+ allOf?: JSONSchema7Definition[] | undefined;
138
+ anyOf?: JSONSchema7Definition[] | undefined;
139
+ oneOf?: JSONSchema7Definition[] | undefined;
140
+ not?: JSONSchema7Definition | undefined;
141
+
142
+ /**
143
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7
144
+ */
145
+ format?: string | undefined;
146
+
147
+ /**
148
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-8
149
+ */
150
+ contentMediaType?: string | undefined;
151
+ contentEncoding?: string | undefined;
152
+
153
+ /**
154
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-9
155
+ */
156
+ definitions?: {
157
+ [key: string]: JSONSchema7Definition;
158
+ } | undefined;
159
+
160
+ /**
161
+ * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-10
162
+ */
163
+ title?: string | undefined;
164
+ description?: string | undefined;
165
+ default?: JSONSchema7Type | undefined;
166
+ readOnly?: boolean | undefined;
167
+ writeOnly?: boolean | undefined;
168
+ examples?: JSONSchema7Type | undefined;
169
+ }
170
+
171
+ interface PropertyMetaData {
172
+ hasDefaultValue: boolean;
173
+ isScalar: boolean;
174
+ required: boolean;
175
+ }
176
+ interface ModelMetaData {
177
+ enums: ReadonlyDeep<DMMF.DatamodelEnum[]>;
178
+ }
179
+ type DefinitionMap = [name: string, definition: JSONSchema7Definition];
180
+ type PropertyMap = [...DefinitionMap, PropertyMetaData];
181
+ interface TransformOptions {
182
+ includeRequiredFields?: "false" | "true";
183
+ keepRelationScalarFields?: "false" | "true";
184
+ persistOriginalType?: "false" | "true";
185
+ schemaId?: string;
186
+ }
187
+
188
+ declare const getJSONSchemaProperty: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (field: DMMF.Field) => PropertyMap;
189
+
190
+ declare const transformDmmf: (dmmf: DMMF.Document, transformOptions?: TransformOptions) => JSONSchema7;
191
+
192
+ export { getJSONSchemaProperty, transformDmmf as transformDMMF };
193
+ export type { DefinitionMap, ModelMetaData, PropertyMap, PropertyMetaData, TransformOptions };
package/dist/index.mjs CHANGED
@@ -1,2 +1 @@
1
- export { default as getJSONSchemaProperty } from './packem_shared/getJSONSchemaProperty-DulgsLKr.mjs';
2
- export { default as transformDMMF } from './packem_shared/transformDMMF-DvU3tZ1x.mjs';
1
+ import{default as t}from"./packem_shared/getJSONSchemaProperty-BJUSxFNN.mjs";import{default as o}from"./packem_shared/transformDMMF-B3i5bZr6.mjs";export{t as getJSONSchemaProperty,o as transformDMMF};
@@ -0,0 +1 @@
1
+ var f=Object.defineProperty;var c=(e,t)=>f(e,"name",{value:t,configurable:!0});import{createRequire as g}from"node:module";const h=g(import.meta.url),o=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,S=c(e=>{if(typeof o<"u"&&o.versions&&o.versions.node){const[t,r]=o.versions.node.split(".").map(Number);if(t>22||t===22&&r>=3||t===20&&r>=16)return o.getBuiltinModule(e)}return h(e)},"__cjs_getBuiltinModule"),b=S("node:assert");var D=Object.defineProperty,s=c((e,t)=>D(e,"name",{value:t,configurable:!0}),"a");const u=s(e=>e!=null,"isDefined"),m=s(e=>{switch(e){case"BigInt":case"Int":return"integer";case"Boolean":return"boolean";case"Bytes":case"DateTime":case"String":return"string";case"Decimal":case"Float":return"number";case"Json":return["number","string","boolean","object","array","null"];default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e)}`)}},"getJSONSchemaScalar"),T=s(e=>{const{isList:t,isRequired:r,kind:n,type:a}=e;let i="object";return n==="scalar"&&!t?i=m(a):t?i="array":n==="enum"&&(i="string"),r||t?i:Array.isArray(i)?[...new Set(["null",...i])]:[i,"null"]},"getJSONSchemaType"),_=s(e=>{const t=e.default;if(e.hasDefaultValue){if(e.kind==="enum")return typeof t=="string"?t:void 0;if(e.kind==="scalar")switch(e.type){case"BigInt":case"DateTime":case"String":return typeof t=="string"?t:void 0;case"Boolean":return typeof t=="boolean"?t:void 0;case"Bytes":case"Json":return;case"Decimal":case"Float":case"Int":return typeof t=="number"?t:void 0;default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e.type)}`)}}},"getDefaultValue"),v=s(e=>{if(e==="DateTime")return"date-time"},"getFormatByDMMFType"),y=s((e,{persistOriginalType:t,schemaId:r})=>{const n=e.isRequired||e.isList;b.equal(typeof e.type,"string");const a=`#/definitions/${e.type}`,i={$ref:r?`${r}${a}`:a};return n?i:{anyOf:[i,{type:"null"}],...t&&{originalType:e.type}}},"getJSONSchemaForPropertyReference"),B=s((e,t)=>{if(!(e.kind==="scalar"&&!e.isList||e.kind==="enum"))return e.kind==="scalar"&&e.isList?{type:m(e.type)}:y(e,t)},"getItemsByDMMFType"),O=s(e=>e.kind!=="scalar"&&!e.isList&&e.kind!=="enum","isSingleReference"),k=s(e=>t=>{const r=e.enums.find(({name:n})=>n===t.type);if(r)return r.values.map(n=>n.name)},"getEnumListByDMMFType"),M=s(e=>e.documentation,"getDescription"),j=s((e,t,r)=>{const n=T(r),a=v(r.type),i=B(r,t),l=k(e)(r),d=_(r),p=M(r);return{type:n,...t.persistOriginalType&&{originalType:r.type},...u(d)&&{default:d},...u(a)&&{format:a},...u(i)&&{items:i},...u(l)&&{enum:l},...u(p)&&{description:p}}},"getPropertyDefinition"),J=s((e,t)=>r=>{const n={hasDefaultValue:r.hasDefaultValue,isScalar:r.kind==="scalar"||r.kind==="enum",required:r.isRequired},a=O(r)?y(r,t):j(e,t,r);return[r.name,a,n]},"getJSONSchemaProperty");export{J as default};
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var u=(e,t)=>p(e,"name",{value:t,configurable:!0});const f=require("node:assert"),g=u(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),D=g(f);var S=Object.defineProperty,a=u((e,t)=>S(e,"name",{value:t,configurable:!0}),"a");const o=a(e=>e!=null,"isDefined"),d=a(e=>{switch(e){case"BigInt":case"Int":return"integer";case"Boolean":return"boolean";case"Bytes":case"DateTime":case"String":return"string";case"Decimal":case"Float":return"number";case"Json":return["number","string","boolean","object","array","null"];default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e)}`)}},"getJSONSchemaScalar"),h=a(e=>{const{isList:t,isRequired:r,kind:n,type:s}=e;let i="object";return n==="scalar"&&!t?i=d(s):t?i="array":n==="enum"&&(i="string"),r||t?i:Array.isArray(i)?[...new Set(["null",...i])]:[i,"null"]},"getJSONSchemaType"),b=a(e=>{const t=e.default;if(e.hasDefaultValue){if(e.kind==="enum")return typeof t=="string"?t:void 0;if(e.kind==="scalar")switch(e.type){case"BigInt":case"DateTime":case"String":return typeof t=="string"?t:void 0;case"Boolean":return typeof t=="boolean"?t:void 0;case"Bytes":case"Json":return;case"Decimal":case"Float":case"Int":return typeof t=="number"?t:void 0;default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e.type)}`)}}},"getDefaultValue"),O=a(e=>{if(e==="DateTime")return"date-time"},"getFormatByDMMFType"),m=a((e,{persistOriginalType:t,schemaId:r})=>{const n=e.isRequired||e.isList;D.equal(typeof e.type,"string");const s=`#/definitions/${e.type}`,i={$ref:r?`${r}${s}`:s};return n?i:{anyOf:[i,{type:"null"}],...t&&{originalType:e.type}}},"getJSONSchemaForPropertyReference"),T=a((e,t)=>{if(!(e.kind==="scalar"&&!e.isList||e.kind==="enum"))return e.kind==="scalar"&&e.isList?{type:d(e.type)}:m(e,t)},"getItemsByDMMFType"),k=a(e=>e.kind!=="scalar"&&!e.isList&&e.kind!=="enum","isSingleReference"),B=a(e=>t=>{const r=e.enums.find(({name:n})=>n===t.type);if(r)return r.values.map(n=>n.name)},"getEnumListByDMMFType"),v=a(e=>e.documentation,"getDescription"),F=a((e,t,r)=>{const n=h(r),s=O(r.type),i=T(r,t),c=B(e)(r),l=b(r),y=v(r);return{type:n,...t.persistOriginalType&&{originalType:r.type},...o(l)&&{default:l},...o(s)&&{format:s},...o(i)&&{items:i},...o(c)&&{enum:c},...o(y)&&{description:y}}},"getPropertyDefinition"),J=a((e,t)=>r=>{const n={hasDefaultValue:r.hasDefaultValue,isScalar:r.kind==="scalar"||r.kind==="enum",required:r.isRequired},s=k(r)?m(r,t):F(e,t,r);return[r.name,s,n]},"getJSONSchemaProperty");module.exports=J;
@@ -0,0 +1 @@
1
+ var b=Object.defineProperty;var d=(r,e)=>b(r,"name",{value:e,configurable:!0});import j from"./getJSONSchemaProperty-BJUSxFNN.mjs";var v=Object.defineProperty,p=d((r,e)=>v(r,"name",{value:e,configurable:!0}),"n");const O=p(r=>r.fields.flatMap(e=>e.relationFromFields??[]),"getRelationScalarFields"),u=p((r,e)=>t=>{const i=t.fields.map(j(r,e)),o=i.map(([a,s])=>[a,s]),c=O(t),m=o.filter(a=>!c.includes(a[0])),l={properties:Object.fromEntries(e.keepRelationScalarFields==="true"?o:m),type:"object"};return e.includeRequiredFields&&(l.required=i.reduce((a,[s,,n])=>(n.required&&n.isScalar&&!n.hasDefaultValue&&a.push(s),a),[])),[t.name,l]},"getJSONSchemaModel");var g=Object.defineProperty,f=d((r,e)=>g(r,"name",{value:e,configurable:!0}),"o");const y=f(r=>r.slice(0,1).toLowerCase()+r.slice(1),"toCamelCase"),S=f(({schemaId:r})=>e=>{const t=`#/definitions/${e.name}`;return[y(e.name),{$ref:r?`${r}${t}`:t}]},"getPropertyDefinition"),D=f((r,e={})=>{const{enums:t=[],models:i=[],types:o=[]}=r.datamodel,c={$schema:"http://json-schema.org/draft-07/schema#",definitions:{},type:"object"},{schemaId:m}=e,l=i.map(u({enums:t},e)),a=o.map(u({enums:t},e)),s=i.map(S(e)),n=Object.fromEntries([...l,...a]),h=Object.fromEntries(s);return{...m?{$id:m}:void 0,...c,definitions:n,properties:h}},"transformDmmf");export{D as default};
@@ -0,0 +1 @@
1
+ "use strict";var b=Object.defineProperty;var d=(r,e)=>b(r,"name",{value:e,configurable:!0});const j=require("./getJSONSchemaProperty-DRt6R_Y4.cjs");var S=Object.defineProperty,f=d((r,e)=>S(r,"name",{value:e,configurable:!0}),"n");const g=f(r=>r.fields.flatMap(e=>e.relationFromFields??[]),"getRelationScalarFields"),p=f((r,e)=>t=>{const s=t.fields.map(j(r,e)),o=s.map(([a,i])=>[a,i]),l=g(t),c=o.filter(a=>!l.includes(a[0])),m={properties:Object.fromEntries(e.keepRelationScalarFields==="true"?o:c),type:"object"};return e.includeRequiredFields&&(m.required=s.reduce((a,[i,,n])=>(n.required&&n.isScalar&&!n.hasDefaultValue&&a.push(i),a),[])),[t.name,m]},"getJSONSchemaModel");var v=Object.defineProperty,u=d((r,e)=>v(r,"name",{value:e,configurable:!0}),"o");const y=u(r=>r.slice(0,1).toLowerCase()+r.slice(1),"toCamelCase"),O=u(({schemaId:r})=>e=>{const t=`#/definitions/${e.name}`;return[y(e.name),{$ref:r?`${r}${t}`:t}]},"getPropertyDefinition"),$=u((r,e={})=>{const{enums:t=[],models:s=[],types:o=[]}=r.datamodel,l={$schema:"http://json-schema.org/draft-07/schema#",definitions:{},type:"object"},{schemaId:c}=e,m=s.map(p({enums:t},e)),a=o.map(p({enums:t},e)),i=s.map(O(e)),n=Object.fromEntries([...m,...a]),h=Object.fromEntries(i);return{...c?{$id:c}:void 0,...l,definitions:n,properties:h}},"transformDmmf");module.exports=$;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/prisma-dmmf-transformer",
3
- "version": "2.0.30",
3
+ "version": "2.0.32",
4
4
  "description": "A generator for Prisma to generate a valid JSON Schema v7.",
5
5
  "keywords": [
6
6
  "anolilab",
@@ -66,7 +66,8 @@
66
66
  "LICENSE.md"
67
67
  ],
68
68
  "dependencies": {
69
- "@prisma/generator-helper": "6.15.0"
69
+ "@prisma/generator-helper": "6.17.1",
70
+ "type-fest": "5.1.0"
70
71
  },
71
72
  "peerDependencies": {
72
73
  "@prisma/client": "3.* || 4.* || 5.* || 6.*",
package/dist/model.d.cts DELETED
@@ -1,4 +0,0 @@
1
- import type { DMMF } from "@prisma/generator-helper";
2
- import type { DefinitionMap, ModelMetaData, TransformOptions } from "./types.d.cts";
3
- declare const getJSONSchemaModel: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (model: DMMF.Model) => DefinitionMap;
4
- export = getJSONSchemaModel;
package/dist/model.d.mts DELETED
@@ -1,4 +0,0 @@
1
- import type { DMMF } from "@prisma/generator-helper";
2
- import type { DefinitionMap, ModelMetaData, TransformOptions } from "./types.d.mts";
3
- declare const getJSONSchemaModel: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (model: DMMF.Model) => DefinitionMap;
4
- export default getJSONSchemaModel;
package/dist/model.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { DMMF } from "@prisma/generator-helper";
2
- import type { DefinitionMap, ModelMetaData, TransformOptions } from "./types.d.ts";
3
- declare const getJSONSchemaModel: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (model: DMMF.Model) => DefinitionMap;
4
- export = getJSONSchemaModel;
@@ -1,150 +0,0 @@
1
- import assert from 'node:assert';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
- const isDefined = /* @__PURE__ */ __name((value) => value !== void 0 && value !== null, "isDefined");
6
- const getJSONSchemaScalar = /* @__PURE__ */ __name((fieldType) => {
7
- switch (fieldType) {
8
- case "BigInt":
9
- case "Int": {
10
- return "integer";
11
- }
12
- case "Boolean": {
13
- return "boolean";
14
- }
15
- case "Bytes":
16
- case "DateTime":
17
- case "String": {
18
- return "string";
19
- }
20
- case "Decimal":
21
- case "Float": {
22
- return "number";
23
- }
24
- case "Json": {
25
- return ["number", "string", "boolean", "object", "array", "null"];
26
- }
27
- default: {
28
- throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);
29
- }
30
- }
31
- }, "getJSONSchemaScalar");
32
- const getJSONSchemaType = /* @__PURE__ */ __name((field) => {
33
- const { isList, isRequired, kind, type } = field;
34
- let scalarFieldType = "object";
35
- if (kind === "scalar" && !isList) {
36
- scalarFieldType = getJSONSchemaScalar(type);
37
- } else if (isList) {
38
- scalarFieldType = "array";
39
- } else if (kind === "enum") {
40
- scalarFieldType = "string";
41
- }
42
- if (isRequired || isList) {
43
- return scalarFieldType;
44
- }
45
- const isFieldUnion = Array.isArray(scalarFieldType);
46
- if (isFieldUnion) {
47
- return [.../* @__PURE__ */ new Set(["null", ...scalarFieldType])];
48
- }
49
- return [scalarFieldType, "null"];
50
- }, "getJSONSchemaType");
51
- const getDefaultValue = /* @__PURE__ */ __name((field) => {
52
- const fieldDefault = field.default;
53
- if (!field.hasDefaultValue) {
54
- return null;
55
- }
56
- if (field.kind === "enum") {
57
- return typeof fieldDefault === "string" ? fieldDefault : null;
58
- }
59
- if (field.kind !== "scalar") {
60
- return null;
61
- }
62
- switch (field.type) {
63
- case "BigInt":
64
- case "DateTime":
65
- case "String": {
66
- return typeof fieldDefault === "string" ? fieldDefault : null;
67
- }
68
- case "Boolean": {
69
- return typeof fieldDefault === "boolean" ? fieldDefault : null;
70
- }
71
- case "Bytes":
72
- case "Json": {
73
- return null;
74
- }
75
- case "Decimal":
76
- case "Float":
77
- case "Int": {
78
- return typeof fieldDefault === "number" ? fieldDefault : null;
79
- }
80
- default: {
81
- throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);
82
- }
83
- }
84
- }, "getDefaultValue");
85
- const getFormatByDMMFType = /* @__PURE__ */ __name((fieldType) => {
86
- if (fieldType === "DateTime") {
87
- return "date-time";
88
- }
89
- return void 0;
90
- }, "getFormatByDMMFType");
91
- const getJSONSchemaForPropertyReference = /* @__PURE__ */ __name((field, { persistOriginalType, schemaId }) => {
92
- const notNullable = field.isRequired || field.isList;
93
- assert.equal(typeof field.type, "string");
94
- const typeReference = `#/definitions/${field.type}`;
95
- const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };
96
- return notNullable ? reference : {
97
- anyOf: [reference, { type: "null" }],
98
- ...persistOriginalType && {
99
- originalType: field.type
100
- }
101
- };
102
- }, "getJSONSchemaForPropertyReference");
103
- const getItemsByDMMFType = /* @__PURE__ */ __name((field, transformOptions) => {
104
- if (field.kind === "scalar" && !field.isList || field.kind === "enum") {
105
- return void 0;
106
- }
107
- if (field.kind === "scalar" && field.isList) {
108
- return { type: getJSONSchemaScalar(field.type) };
109
- }
110
- return getJSONSchemaForPropertyReference(field, transformOptions);
111
- }, "getItemsByDMMFType");
112
- const isSingleReference = /* @__PURE__ */ __name((field) => field.kind !== "scalar" && !field.isList && field.kind !== "enum", "isSingleReference");
113
- const getEnumListByDMMFType = /* @__PURE__ */ __name((modelMetaData) => (field) => {
114
- const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);
115
- if (!enumItem) {
116
- return void 0;
117
- }
118
- return enumItem.values.map((item) => item.name);
119
- }, "getEnumListByDMMFType");
120
- const getDescription = /* @__PURE__ */ __name((field) => field.documentation, "getDescription");
121
- const getPropertyDefinition = /* @__PURE__ */ __name((modelMetaData, transformOptions, field) => {
122
- const type = getJSONSchemaType(field);
123
- const format = getFormatByDMMFType(field.type);
124
- const items = getItemsByDMMFType(field, transformOptions);
125
- const enumList = getEnumListByDMMFType(modelMetaData)(field);
126
- const defaultValue = getDefaultValue(field);
127
- const description = getDescription(field);
128
- return {
129
- type,
130
- ...transformOptions.persistOriginalType && {
131
- originalType: field.type
132
- },
133
- ...isDefined(defaultValue) && { default: defaultValue },
134
- ...isDefined(format) && { format },
135
- ...isDefined(items) && { items },
136
- ...isDefined(enumList) && { enum: enumList },
137
- ...isDefined(description) && { description }
138
- };
139
- }, "getPropertyDefinition");
140
- const getJSONSchemaProperty = /* @__PURE__ */ __name((modelMetaData, transformOptions) => (field) => {
141
- const propertyMetaData = {
142
- hasDefaultValue: field.hasDefaultValue,
143
- isScalar: field.kind === "scalar" || field.kind === "enum",
144
- required: field.isRequired
145
- };
146
- const property = isSingleReference(field) ? getJSONSchemaForPropertyReference(field, transformOptions) : getPropertyDefinition(modelMetaData, transformOptions, field);
147
- return [field.name, property, propertyMetaData];
148
- }, "getJSONSchemaProperty");
149
-
150
- export { getJSONSchemaProperty as default };
@@ -1,156 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('node:assert');
4
-
5
- const _interopDefaultCompat = e => e && typeof e === 'object' && 'default' in e ? e.default : e;
6
-
7
- const assert__default = /*#__PURE__*/_interopDefaultCompat(assert);
8
-
9
- var __defProp = Object.defineProperty;
10
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
11
- const isDefined = /* @__PURE__ */ __name((value) => value !== void 0 && value !== null, "isDefined");
12
- const getJSONSchemaScalar = /* @__PURE__ */ __name((fieldType) => {
13
- switch (fieldType) {
14
- case "BigInt":
15
- case "Int": {
16
- return "integer";
17
- }
18
- case "Boolean": {
19
- return "boolean";
20
- }
21
- case "Bytes":
22
- case "DateTime":
23
- case "String": {
24
- return "string";
25
- }
26
- case "Decimal":
27
- case "Float": {
28
- return "number";
29
- }
30
- case "Json": {
31
- return ["number", "string", "boolean", "object", "array", "null"];
32
- }
33
- default: {
34
- throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);
35
- }
36
- }
37
- }, "getJSONSchemaScalar");
38
- const getJSONSchemaType = /* @__PURE__ */ __name((field) => {
39
- const { isList, isRequired, kind, type } = field;
40
- let scalarFieldType = "object";
41
- if (kind === "scalar" && !isList) {
42
- scalarFieldType = getJSONSchemaScalar(type);
43
- } else if (isList) {
44
- scalarFieldType = "array";
45
- } else if (kind === "enum") {
46
- scalarFieldType = "string";
47
- }
48
- if (isRequired || isList) {
49
- return scalarFieldType;
50
- }
51
- const isFieldUnion = Array.isArray(scalarFieldType);
52
- if (isFieldUnion) {
53
- return [.../* @__PURE__ */ new Set(["null", ...scalarFieldType])];
54
- }
55
- return [scalarFieldType, "null"];
56
- }, "getJSONSchemaType");
57
- const getDefaultValue = /* @__PURE__ */ __name((field) => {
58
- const fieldDefault = field.default;
59
- if (!field.hasDefaultValue) {
60
- return null;
61
- }
62
- if (field.kind === "enum") {
63
- return typeof fieldDefault === "string" ? fieldDefault : null;
64
- }
65
- if (field.kind !== "scalar") {
66
- return null;
67
- }
68
- switch (field.type) {
69
- case "BigInt":
70
- case "DateTime":
71
- case "String": {
72
- return typeof fieldDefault === "string" ? fieldDefault : null;
73
- }
74
- case "Boolean": {
75
- return typeof fieldDefault === "boolean" ? fieldDefault : null;
76
- }
77
- case "Bytes":
78
- case "Json": {
79
- return null;
80
- }
81
- case "Decimal":
82
- case "Float":
83
- case "Int": {
84
- return typeof fieldDefault === "number" ? fieldDefault : null;
85
- }
86
- default: {
87
- throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);
88
- }
89
- }
90
- }, "getDefaultValue");
91
- const getFormatByDMMFType = /* @__PURE__ */ __name((fieldType) => {
92
- if (fieldType === "DateTime") {
93
- return "date-time";
94
- }
95
- return void 0;
96
- }, "getFormatByDMMFType");
97
- const getJSONSchemaForPropertyReference = /* @__PURE__ */ __name((field, { persistOriginalType, schemaId }) => {
98
- const notNullable = field.isRequired || field.isList;
99
- assert__default.equal(typeof field.type, "string");
100
- const typeReference = `#/definitions/${field.type}`;
101
- const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };
102
- return notNullable ? reference : {
103
- anyOf: [reference, { type: "null" }],
104
- ...persistOriginalType && {
105
- originalType: field.type
106
- }
107
- };
108
- }, "getJSONSchemaForPropertyReference");
109
- const getItemsByDMMFType = /* @__PURE__ */ __name((field, transformOptions) => {
110
- if (field.kind === "scalar" && !field.isList || field.kind === "enum") {
111
- return void 0;
112
- }
113
- if (field.kind === "scalar" && field.isList) {
114
- return { type: getJSONSchemaScalar(field.type) };
115
- }
116
- return getJSONSchemaForPropertyReference(field, transformOptions);
117
- }, "getItemsByDMMFType");
118
- const isSingleReference = /* @__PURE__ */ __name((field) => field.kind !== "scalar" && !field.isList && field.kind !== "enum", "isSingleReference");
119
- const getEnumListByDMMFType = /* @__PURE__ */ __name((modelMetaData) => (field) => {
120
- const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);
121
- if (!enumItem) {
122
- return void 0;
123
- }
124
- return enumItem.values.map((item) => item.name);
125
- }, "getEnumListByDMMFType");
126
- const getDescription = /* @__PURE__ */ __name((field) => field.documentation, "getDescription");
127
- const getPropertyDefinition = /* @__PURE__ */ __name((modelMetaData, transformOptions, field) => {
128
- const type = getJSONSchemaType(field);
129
- const format = getFormatByDMMFType(field.type);
130
- const items = getItemsByDMMFType(field, transformOptions);
131
- const enumList = getEnumListByDMMFType(modelMetaData)(field);
132
- const defaultValue = getDefaultValue(field);
133
- const description = getDescription(field);
134
- return {
135
- type,
136
- ...transformOptions.persistOriginalType && {
137
- originalType: field.type
138
- },
139
- ...isDefined(defaultValue) && { default: defaultValue },
140
- ...isDefined(format) && { format },
141
- ...isDefined(items) && { items },
142
- ...isDefined(enumList) && { enum: enumList },
143
- ...isDefined(description) && { description }
144
- };
145
- }, "getPropertyDefinition");
146
- const getJSONSchemaProperty = /* @__PURE__ */ __name((modelMetaData, transformOptions) => (field) => {
147
- const propertyMetaData = {
148
- hasDefaultValue: field.hasDefaultValue,
149
- isScalar: field.kind === "scalar" || field.kind === "enum",
150
- required: field.isRequired
151
- };
152
- const property = isSingleReference(field) ? getJSONSchemaForPropertyReference(field, transformOptions) : getPropertyDefinition(modelMetaData, transformOptions, field);
153
- return [field.name, property, propertyMetaData];
154
- }, "getJSONSchemaProperty");
155
-
156
- module.exports = getJSONSchemaProperty;
@@ -1,62 +0,0 @@
1
- 'use strict';
2
-
3
- const getJSONSchemaProperty = require('./getJSONSchemaProperty-E2OXsCgc.cjs');
4
-
5
- var __defProp$1 = Object.defineProperty;
6
- var __name$1 = (target, value) => __defProp$1(target, "name", { value, configurable: true });
7
- const getRelationScalarFields = /* @__PURE__ */ __name$1((model) => model.fields.flatMap((field) => field.relationFromFields ?? []), "getRelationScalarFields");
8
- const getJSONSchemaModel = /* @__PURE__ */ __name$1((modelMetaData, transformOptions) => (model) => {
9
- const definitionPropertiesMap = model.fields.map(getJSONSchemaProperty(modelMetaData, transformOptions));
10
- const propertiesMap = definitionPropertiesMap.map(([name, definition2]) => [name, definition2]);
11
- const relationScalarFields = getRelationScalarFields(model);
12
- const propertiesWithoutRelationScalars = propertiesMap.filter((property) => !relationScalarFields.includes(property[0]));
13
- const properties = Object.fromEntries(transformOptions.keepRelationScalarFields === "true" ? propertiesMap : propertiesWithoutRelationScalars);
14
- const definition = {
15
- properties,
16
- type: "object"
17
- };
18
- if (transformOptions.includeRequiredFields) {
19
- definition.required = definitionPropertiesMap.reduce((filtered, [name, , fieldMetaData]) => {
20
- if (fieldMetaData.required && fieldMetaData.isScalar && !fieldMetaData.hasDefaultValue) {
21
- filtered.push(name);
22
- }
23
- return filtered;
24
- }, []);
25
- }
26
- return [model.name, definition];
27
- }, "getJSONSchemaModel");
28
-
29
- var __defProp = Object.defineProperty;
30
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
31
- const toCamelCase = /* @__PURE__ */ __name((name) => name.slice(0, 1).toLowerCase() + name.slice(1), "toCamelCase");
32
- const getPropertyDefinition = /* @__PURE__ */ __name(({ schemaId }) => (model) => {
33
- const reference = `#/definitions/${model.name}`;
34
- return [
35
- toCamelCase(model.name),
36
- {
37
- $ref: schemaId ? `${schemaId}${reference}` : reference
38
- }
39
- ];
40
- }, "getPropertyDefinition");
41
- const transformDmmf = /* @__PURE__ */ __name((dmmf, transformOptions = {}) => {
42
- const { enums = [], models = [], types = [] } = dmmf.datamodel;
43
- const initialJSON = {
44
- $schema: "http://json-schema.org/draft-07/schema#",
45
- definitions: {},
46
- type: "object"
47
- };
48
- const { schemaId } = transformOptions;
49
- const modelDefinitionsMap = models.map(getJSONSchemaModel({ enums }, transformOptions));
50
- const typeDefinitionsMap = types.map(getJSONSchemaModel({ enums }, transformOptions));
51
- const modelPropertyDefinitionsMap = models.map(getPropertyDefinition(transformOptions));
52
- const definitions = Object.fromEntries([...modelDefinitionsMap, ...typeDefinitionsMap]);
53
- const properties = Object.fromEntries(modelPropertyDefinitionsMap);
54
- return {
55
- ...schemaId ? { $id: schemaId } : null,
56
- ...initialJSON,
57
- definitions,
58
- properties
59
- };
60
- }, "transformDmmf");
61
-
62
- module.exports = transformDmmf;