@visulima/prisma-dmmf-transformer 1.0.9 → 2.0.1
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/CHANGELOG.md +20 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +27 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## @visulima/prisma-dmmf-transformer [2.0.1](https://github.com/visulima/visulima/compare/@visulima/prisma-dmmf-transformer@2.0.0...@visulima/prisma-dmmf-transformer@2.0.1) (2023-08-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* fixed wrong settings for node 18+ in typescript ([ac6711f](https://github.com/visulima/visulima/commit/ac6711fd2b4fdc5506b03e3a6ae25bb983aa6ea3))
|
|
7
|
+
* remove unused files and refactor imports and typings ([ba2ab03](https://github.com/visulima/visulima/commit/ba2ab03d2d7aff5f49c4d6714a61b99706778f19))
|
|
8
|
+
* updated various package dependencies and optimized code formatting. ([5d71d91](https://github.com/visulima/visulima/commit/5d71d913e857b71a7b741abe848780aaa22d679f))
|
|
9
|
+
|
|
10
|
+
## @visulima/prisma-dmmf-transformer [2.0.0](https://github.com/visulima/visulima/compare/@visulima/prisma-dmmf-transformer@1.0.9...@visulima/prisma-dmmf-transformer@2.0.0) (2023-08-28)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### ⚠ BREAKING CHANGES
|
|
14
|
+
|
|
15
|
+
* update minimum Node.js version requirement to 18
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* refactor query parsing and update dependencies ([#203](https://github.com/visulima/visulima/issues/203)) ([cf77427](https://github.com/visulima/visulima/commit/cf7742795f970ebeeb5da22a82fd17750028ee87))
|
|
20
|
+
|
|
1
21
|
## @visulima/prisma-dmmf-transformer [1.0.9](https://github.com/visulima/visulima/compare/@visulima/prisma-dmmf-transformer@1.0.8...@visulima/prisma-dmmf-transformer@1.0.9) (2023-07-28)
|
|
2
22
|
|
|
3
23
|
|
package/dist/index.d.mts
CHANGED
|
@@ -22,7 +22,7 @@ interface TransformOptions {
|
|
|
22
22
|
schemaId?: string;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
declare const getJSONSchemaProperty: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (field: DMMF.Field) => [string, json_schema.JSONSchema7Definition, PropertyMetaData];
|
|
25
|
+
declare const getJSONSchemaProperty: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (field: DMMF.Field) => [name: string, definition: json_schema.JSONSchema7Definition, PropertyMetaData];
|
|
26
26
|
|
|
27
27
|
declare const transformDmmf: (dmmf: DMMF.Document, transformOptions?: TransformOptions) => JSONSchema7;
|
|
28
28
|
|
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ interface TransformOptions {
|
|
|
22
22
|
schemaId?: string;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
declare const getJSONSchemaProperty: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (field: DMMF.Field) => [string, json_schema.JSONSchema7Definition, PropertyMetaData];
|
|
25
|
+
declare const getJSONSchemaProperty: (modelMetaData: ModelMetaData, transformOptions: TransformOptions) => (field: DMMF.Field) => [name: string, definition: json_schema.JSONSchema7Definition, PropertyMetaData];
|
|
26
26
|
|
|
27
27
|
declare const transformDmmf: (dmmf: DMMF.Document, transformOptions?: TransformOptions) => JSONSchema7;
|
|
28
28
|
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var D = require('assert');
|
|
4
4
|
|
|
5
5
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var D__default = /*#__PURE__*/_interopDefault(D);
|
|
8
8
|
|
|
9
|
-
var l=e=>e!=null,
|
|
9
|
+
var l=e=>e!=null,d=e=>{switch(e){case"Int":case"BigInt":return "integer";case"DateTime":case"Bytes":case"String":return "string";case"Float":case"Decimal":return "number";case"Json":return ["number","string","boolean","object","array","null"];case"Boolean":return "boolean";default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e)}`)}},h=e=>{let{isList:t,isRequired:r,kind:n,type:i}=e,a="object";return n==="scalar"&&!t?a=d(i):t?a="array":n==="enum"&&(a="string"),r||t?a:Array.isArray(a)?[...new Set([...a,"null"])]:[a,"null"]},g=e=>{let t=e.default;if(!e.hasDefaultValue)return null;if(e.kind==="enum")return typeof t=="string"?t:null;if(e.kind!=="scalar")return null;switch(e.type){case"String":case"BigInt":case"DateTime":return typeof t=="string"?t:null;case"Int":case"Float":case"Decimal":return typeof t=="number"?t:null;case"Boolean":return typeof t=="boolean"?t:null;case"Json":case"Bytes":return null;default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e.type)}`)}},F=e=>{if(e==="DateTime")return "date-time"},S=(e,{persistOriginalType:t,schemaId:r})=>{let n=e.isRequired||e.isList;D__default.default.equal(typeof e.type,"string");let i=`#/definitions/${e.type}`,a={$ref:r?`${r}${i}`:i};return n?a:{anyOf:[a,{type:"null"}],...t&&{originalType:e.type}}},O=(e,t)=>{if(!(e.kind==="scalar"&&!e.isList||e.kind==="enum"))return e.kind==="scalar"&&e.isList?{type:d(e.type)}:S(e,t)},N=e=>e.kind!=="scalar"&&!e.isList&&e.kind!=="enum",J=e=>t=>{let r=e.enums.find(({name:n})=>n===t.type);if(r)return r.values.map(n=>n.name)},T=e=>e.documentation,P=(e,t,r)=>{let n=h(r),i=F(r.type),a=O(r,t),o=J(e)(r),p=g(r),c=T(r);return {type:n,...t.persistOriginalType&&{originalType:r.type},...l(p)&&{default:p},...l(i)&&{format:i},...l(a)&&{items:a},...l(o)&&{enum:o},...l(c)&&{description:c}}},b=(e,t)=>r=>{let n={hasDefaultValue:r.hasDefaultValue,isScalar:r.kind==="scalar"||r.kind==="enum",required:r.isRequired},i=N(r)?S(r,t):P(e,t,r);return [r.name,i,n]},M=b;var $=e=>e.fields.flatMap(t=>t.relationFromFields??[]),j=(e,t)=>r=>{let n=r.fields.map(M(e,t)),i=n.map(([s,m])=>[s,m]),a=$(r),o=i.filter(s=>!a.includes(s[0])),c={properties:Object.fromEntries(t.keepRelationScalarFields==="true"?i:o),type:"object"};return t.includeRequiredFields&&(c.required=n.reduce((s,[m,,u])=>(u.required&&u.isScalar&&!u.hasDefaultValue&&s.push(m),s),[])),[r.name,c]},f=j;var k=e=>e.slice(0,1).toLowerCase()+e.slice(1),R=({schemaId:e})=>t=>{let r=`#/definitions/${t.name}`;return [k(t.name),{$ref:e?`${e}${r}`:r}]},B=(e,t={})=>{let{enums:r=[],models:n=[],types:i=[]}=e.datamodel,a={$schema:"http://json-schema.org/draft-07/schema#",definitions:{},type:"object"},{schemaId:o}=t,p=n.map(f({enums:r},t)),c=i.map(f({enums:r},t)),s=n.map(R(t)),m=Object.fromEntries([...p,...c]),u=Object.fromEntries(s);return {...o?{$id:o}:null,...a,definitions:m,properties:u}},q=B;
|
|
10
10
|
|
|
11
|
-
exports.getJSONSchemaProperty =
|
|
12
|
-
exports.transformDMMF =
|
|
11
|
+
exports.getJSONSchemaProperty = M;
|
|
12
|
+
exports.transformDMMF = q;
|
|
13
13
|
//# sourceMappingURL=out.js.map
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/properties.ts","../src/model.ts","../src/transform-dmmf.ts"],"names":["assert","isDefined","value","getJSONSchemaScalar","fieldType","getJSONSchemaType","field","isList","isRequired","kind","type","scalarFieldType","getDefaultValue","fieldDefault","getFormatByDMMFType","getJSONSchemaForPropertyReference","persistOriginalType","schemaId","notNullable","typeReference","reference","getItemsByDMMFType","transformOptions","isSingleReference","getEnumListByDMMFType","modelMetaData","enumItem","name","item","getDescription","getPropertyDefinition","format","items","enumList","defaultValue","description","getJSONSchemaProperty","propertyMetaData","property","properties_default","getRelationScalarFields","model","getJSONSchemaModel","definitionPropertiesMap","propertiesMap","definition","relationScalarFields","propertiesWithoutRelationScalars","filtered","fieldMetaData","model_default","toCamelCase","transformDmmf","dmmf","enums","models","types","initialJSON","modelDefinitionsMap","typeDefinitionsMap","modelPropertyDefinitionsMap","definitions","properties","transform_dmmf_default"],"mappings":"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","sourcesContent":["import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\nimport assert from \"node:assert\";\n\nimport type { ModelMetaData, PrismaPrimitive, PropertyMap, PropertyMetaData, TransformOptions } from \"./types.d\";\n\nconst isDefined = <T>(value: T | null | undefined): value is T => value !== undefined && value !== null;\n\nconst getJSONSchemaScalar = (fieldType: PrismaPrimitive): JSONSchema7TypeName | JSONSchema7TypeName[] => {\n switch (fieldType) {\n case \"Int\":\n case \"BigInt\": {\n return \"integer\";\n }\n case \"DateTime\":\n case \"Bytes\":\n case \"String\": {\n return \"string\";\n }\n case \"Float\":\n case \"Decimal\": {\n return \"number\";\n }\n case \"Json\": {\n return [\"number\", \"string\", \"boolean\", \"object\", \"array\", \"null\"];\n }\n case \"Boolean\": {\n return \"boolean\";\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);\n }\n }\n};\n\nconst getJSONSchemaType = (field: DMMF.Field): JSONSchema7[\"type\"] => {\n const { isList, isRequired, kind, type } = field;\n\n let scalarFieldType: JSONSchema7[\"type\"] = \"object\";\n\n if (kind === \"scalar\" && !isList) {\n scalarFieldType = getJSONSchemaScalar(type as PrismaPrimitive);\n } else if (isList) {\n scalarFieldType = \"array\";\n } else if (kind === \"enum\") {\n scalarFieldType = \"string\";\n }\n\n if (isRequired || isList) {\n return scalarFieldType;\n }\n\n const isFieldUnion = Array.isArray(scalarFieldType);\n\n if (isFieldUnion) {\n return [...new Set([...scalarFieldType, \"null\"])] as JSONSchema7[\"type\"];\n }\n\n return [scalarFieldType as JSONSchema7TypeName, \"null\"];\n};\n\nconst getDefaultValue = (field: DMMF.Field): JSONSchema7[\"default\"] => {\n const fieldDefault = field.default;\n\n if (!field.hasDefaultValue) {\n return null;\n }\n\n if (field.kind === \"enum\") {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n\n if (field.kind !== \"scalar\") {\n return null;\n }\n\n switch (field.type) {\n case \"String\":\n case \"BigInt\":\n case \"DateTime\": {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n case \"Int\":\n case \"Float\":\n case \"Decimal\": {\n return typeof fieldDefault === \"number\" ? fieldDefault : null;\n }\n case \"Boolean\": {\n return typeof fieldDefault === \"boolean\" ? fieldDefault : null;\n }\n case \"Json\":\n case \"Bytes\": {\n return null;\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);\n }\n }\n};\n\nconst getFormatByDMMFType = (fieldType: DMMF.Field[\"type\"]): string | undefined => {\n if (fieldType === \"DateTime\") {\n return \"date-time\";\n }\n\n return undefined;\n};\n\nconst getJSONSchemaForPropertyReference = (field: DMMF.Field, { persistOriginalType, schemaId }: TransformOptions): JSONSchema7 => {\n const notNullable = field.isRequired || field.isList;\n\n assert.equal(typeof field.type, \"string\");\n\n const typeReference = `#/definitions/${field.type}`;\n const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };\n\n return notNullable\n ? reference\n : {\n anyOf: [reference, { type: \"null\" }],\n ...(persistOriginalType && {\n originalType: field.type,\n }),\n };\n};\n\nconst getItemsByDMMFType = (field: DMMF.Field, transformOptions: TransformOptions): JSONSchema7[\"items\"] => {\n if ((field.kind === \"scalar\" && !field.isList) || field.kind === \"enum\") {\n return undefined;\n }\n\n if (field.kind === \"scalar\" && field.isList) {\n return { type: getJSONSchemaScalar(field.type as PrismaPrimitive) };\n }\n\n return getJSONSchemaForPropertyReference(field, transformOptions);\n};\n\nconst isSingleReference = (field: DMMF.Field) => field.kind !== \"scalar\" && !field.isList && field.kind !== \"enum\";\n\nconst getEnumListByDMMFType =\n (modelMetaData: ModelMetaData) =>\n (field: DMMF.Field): string[] | undefined => {\n const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);\n\n if (!enumItem) {\n return undefined;\n }\n\n return enumItem.values.map((item) => item.name);\n };\n\nconst getDescription = (field: DMMF.Field) => field.documentation;\n\nconst getPropertyDefinition = (modelMetaData: ModelMetaData, transformOptions: TransformOptions, field: DMMF.Field) => {\n const type = getJSONSchemaType(field);\n const format = getFormatByDMMFType(field.type);\n const items = getItemsByDMMFType(field, transformOptions);\n const enumList = getEnumListByDMMFType(modelMetaData)(field);\n const defaultValue = getDefaultValue(field);\n const description = getDescription(field);\n\n return {\n type,\n ...(transformOptions.persistOriginalType && {\n originalType: field.type,\n }),\n ...(isDefined(defaultValue) && { default: defaultValue }),\n ...(isDefined(format) && { format }),\n ...(isDefined(items) && { items }),\n ...(isDefined(enumList) && { enum: enumList }),\n ...(isDefined(description) && { description }),\n };\n};\n\nconst getJSONSchemaProperty =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (field: DMMF.Field): PropertyMap => {\n const propertyMetaData: PropertyMetaData = {\n hasDefaultValue: field.hasDefaultValue,\n isScalar: field.kind === \"scalar\" || field.kind === \"enum\",\n required: field.isRequired,\n };\n\n const property = isSingleReference(field)\n ? getJSONSchemaForPropertyReference(field, transformOptions)\n : getPropertyDefinition(modelMetaData, transformOptions, field);\n\n return [field.name, property, propertyMetaData];\n };\n\nexport default getJSONSchemaProperty;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaProperty from \"./properties\";\nimport type { DefinitionMap, ModelMetaData, TransformOptions } from \"./types.d\";\n\nconst getRelationScalarFields = (model: DMMF.Model): string[] => model.fields.flatMap((field) => field.relationFromFields ?? []);\n\nconst getJSONSchemaModel =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (model: DMMF.Model): DefinitionMap => {\n const definitionPropertiesMap = model.fields.map(getJSONSchemaProperty(modelMetaData, transformOptions));\n\n const propertiesMap = definitionPropertiesMap.map(([name, definition]) => [name, definition] as DefinitionMap);\n const relationScalarFields = getRelationScalarFields(model);\n const propertiesWithoutRelationScalars = propertiesMap.filter((property) => !relationScalarFields.includes(property[0]));\n\n const properties = Object.fromEntries(transformOptions.keepRelationScalarFields === \"true\" ? propertiesMap : propertiesWithoutRelationScalars);\n\n const definition: JSONSchema7Definition = {\n properties,\n type: \"object\",\n };\n\n if (transformOptions.includeRequiredFields) {\n // eslint-disable-next-line unicorn/no-array-reduce\n definition.required = definitionPropertiesMap.reduce((filtered: string[], [name, , fieldMetaData]) => {\n if (fieldMetaData.required && fieldMetaData.isScalar && !fieldMetaData.hasDefaultValue) {\n filtered.push(name);\n }\n return filtered;\n }, []);\n }\n\n return [model.name, definition];\n };\n\nexport default getJSONSchemaModel;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaModel from \"./model\";\nimport type { TransformOptions } from \"./types.d\";\n\nconst toCamelCase = (name: string): string => name.slice(0, 1).toLowerCase() + name.slice(1);\n\nconst getPropertyDefinition =\n ({ schemaId }: TransformOptions) =>\n (model: DMMF.Model): [name: string, reference: JSONSchema7Definition] => {\n const reference = `#/definitions/${model.name}`;\n\n return [\n toCamelCase(model.name),\n {\n $ref: schemaId ? `${schemaId}${reference}` : reference,\n },\n ];\n };\n\nconst transformDmmf = (dmmf: DMMF.Document, transformOptions: TransformOptions = {}): JSONSchema7 => {\n // TODO: Remove default values as soon as prisma version < 3.10.0 doesn't have to be supported anymore\n const { enums = [], models = [], types = [] } = dmmf.datamodel;\n const initialJSON = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n definitions: {},\n type: \"object\",\n } as JSONSchema7;\n const { schemaId } = transformOptions;\n\n const modelDefinitionsMap = models.map(getJSONSchemaModel({ enums }, transformOptions));\n const typeDefinitionsMap = types.map(getJSONSchemaModel({ enums }, transformOptions));\n const modelPropertyDefinitionsMap = models.map(getPropertyDefinition(transformOptions));\n const definitions = Object.fromEntries([...modelDefinitionsMap, ...typeDefinitionsMap]);\n const properties = Object.fromEntries(modelPropertyDefinitionsMap);\n\n return {\n ...(schemaId ? { $id: schemaId } : null),\n ...initialJSON,\n definitions,\n properties,\n };\n};\n\nexport default transformDmmf;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/properties.ts","../src/model.ts","../src/transform-dmmf.ts"],"names":["assert","isDefined","value","getJSONSchemaScalar","fieldType","getJSONSchemaType","field","isList","isRequired","kind","type","scalarFieldType","getDefaultValue","fieldDefault","getFormatByDMMFType","getJSONSchemaForPropertyReference","persistOriginalType","schemaId","notNullable","typeReference","reference","getItemsByDMMFType","transformOptions","isSingleReference","getEnumListByDMMFType","modelMetaData","enumItem","name","item","getDescription","getPropertyDefinition","format","items","enumList","defaultValue","description","getJSONSchemaProperty","propertyMetaData","property","properties_default","getRelationScalarFields","model","getJSONSchemaModel","definitionPropertiesMap","propertiesMap","definition","relationScalarFields","propertiesWithoutRelationScalars","filtered","fieldMetaData","model_default","toCamelCase","transformDmmf","dmmf","enums","models","types","initialJSON","modelDefinitionsMap","typeDefinitionsMap","modelPropertyDefinitionsMap","definitions","properties","transform_dmmf_default"],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\n\nimport type { ModelMetaData, PrismaPrimitive, PropertyMap, PropertyMetaData, TransformOptions } from \"./types.d\";\n\nconst isDefined = <T>(value: T | null | undefined): value is T => value !== undefined && value !== null;\n\nconst getJSONSchemaScalar = (fieldType: PrismaPrimitive): JSONSchema7TypeName | JSONSchema7TypeName[] => {\n switch (fieldType) {\n case \"Int\":\n case \"BigInt\": {\n return \"integer\";\n }\n case \"DateTime\":\n case \"Bytes\":\n case \"String\": {\n return \"string\";\n }\n case \"Float\":\n case \"Decimal\": {\n return \"number\";\n }\n case \"Json\": {\n return [\"number\", \"string\", \"boolean\", \"object\", \"array\", \"null\"];\n }\n case \"Boolean\": {\n return \"boolean\";\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);\n }\n }\n};\n\nconst getJSONSchemaType = (field: DMMF.Field): JSONSchema7[\"type\"] => {\n const { isList, isRequired, kind, type } = field;\n\n let scalarFieldType: JSONSchema7[\"type\"] = \"object\";\n\n if (kind === \"scalar\" && !isList) {\n scalarFieldType = getJSONSchemaScalar(type as PrismaPrimitive);\n } else if (isList) {\n scalarFieldType = \"array\";\n } else if (kind === \"enum\") {\n scalarFieldType = \"string\";\n }\n\n if (isRequired || isList) {\n return scalarFieldType;\n }\n\n const isFieldUnion = Array.isArray(scalarFieldType);\n\n if (isFieldUnion) {\n return [...new Set([...scalarFieldType, \"null\"])] as JSONSchema7[\"type\"];\n }\n\n return [scalarFieldType as JSONSchema7TypeName, \"null\"];\n};\n\nconst getDefaultValue = (field: DMMF.Field): JSONSchema7[\"default\"] => {\n const fieldDefault = field.default;\n\n if (!field.hasDefaultValue) {\n return null;\n }\n\n if (field.kind === \"enum\") {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n\n if (field.kind !== \"scalar\") {\n return null;\n }\n\n switch (field.type) {\n case \"String\":\n case \"BigInt\":\n case \"DateTime\": {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n case \"Int\":\n case \"Float\":\n case \"Decimal\": {\n return typeof fieldDefault === \"number\" ? fieldDefault : null;\n }\n case \"Boolean\": {\n return typeof fieldDefault === \"boolean\" ? fieldDefault : null;\n }\n case \"Json\":\n case \"Bytes\": {\n return null;\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);\n }\n }\n};\n\nconst getFormatByDMMFType = (fieldType: DMMF.Field[\"type\"]): string | undefined => {\n if (fieldType === \"DateTime\") {\n return \"date-time\";\n }\n\n return undefined;\n};\n\nconst getJSONSchemaForPropertyReference = (field: DMMF.Field, { persistOriginalType, schemaId }: TransformOptions): JSONSchema7 => {\n const notNullable = field.isRequired || field.isList;\n\n assert.equal(typeof field.type, \"string\");\n\n const typeReference = `#/definitions/${field.type}`;\n const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };\n\n return notNullable\n ? reference\n : {\n anyOf: [reference, { type: \"null\" }],\n ...(persistOriginalType && {\n originalType: field.type,\n }),\n };\n};\n\nconst getItemsByDMMFType = (field: DMMF.Field, transformOptions: TransformOptions): JSONSchema7[\"items\"] => {\n if ((field.kind === \"scalar\" && !field.isList) || field.kind === \"enum\") {\n return undefined;\n }\n\n if (field.kind === \"scalar\" && field.isList) {\n return { type: getJSONSchemaScalar(field.type as PrismaPrimitive) };\n }\n\n return getJSONSchemaForPropertyReference(field, transformOptions);\n};\n\nconst isSingleReference = (field: DMMF.Field) => field.kind !== \"scalar\" && !field.isList && field.kind !== \"enum\";\n\nconst getEnumListByDMMFType =\n (modelMetaData: ModelMetaData) =>\n (field: DMMF.Field): string[] | undefined => {\n const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);\n\n if (!enumItem) {\n return undefined;\n }\n\n return enumItem.values.map((item) => item.name);\n };\n\nconst getDescription = (field: DMMF.Field) => field.documentation;\n\nconst getPropertyDefinition = (modelMetaData: ModelMetaData, transformOptions: TransformOptions, field: DMMF.Field) => {\n const type = getJSONSchemaType(field);\n const format = getFormatByDMMFType(field.type);\n const items = getItemsByDMMFType(field, transformOptions);\n const enumList = getEnumListByDMMFType(modelMetaData)(field);\n const defaultValue = getDefaultValue(field);\n const description = getDescription(field);\n\n return {\n type,\n ...(transformOptions.persistOriginalType && {\n originalType: field.type,\n }),\n ...(isDefined(defaultValue) && { default: defaultValue }),\n ...(isDefined(format) && { format }),\n ...(isDefined(items) && { items }),\n ...(isDefined(enumList) && { enum: enumList }),\n ...(isDefined(description) && { description }),\n };\n};\n\nconst getJSONSchemaProperty =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (field: DMMF.Field): PropertyMap => {\n const propertyMetaData: PropertyMetaData = {\n hasDefaultValue: field.hasDefaultValue,\n isScalar: field.kind === \"scalar\" || field.kind === \"enum\",\n required: field.isRequired,\n };\n\n const property = isSingleReference(field)\n ? getJSONSchemaForPropertyReference(field, transformOptions)\n : getPropertyDefinition(modelMetaData, transformOptions, field);\n\n return [field.name, property, propertyMetaData];\n };\n\nexport default getJSONSchemaProperty;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaProperty from \"./properties\";\nimport type { DefinitionMap, ModelMetaData, TransformOptions } from \"./types.d\";\n\nconst getRelationScalarFields = (model: DMMF.Model): string[] => model.fields.flatMap((field) => field.relationFromFields ?? []);\n\nconst getJSONSchemaModel =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (model: DMMF.Model): DefinitionMap => {\n const definitionPropertiesMap = model.fields.map(getJSONSchemaProperty(modelMetaData, transformOptions));\n\n const propertiesMap = definitionPropertiesMap.map(([name, definition]) => [name, definition] as DefinitionMap);\n const relationScalarFields = getRelationScalarFields(model);\n const propertiesWithoutRelationScalars = propertiesMap.filter((property) => !relationScalarFields.includes(property[0]));\n\n const properties = Object.fromEntries(transformOptions.keepRelationScalarFields === \"true\" ? propertiesMap : propertiesWithoutRelationScalars);\n\n const definition: JSONSchema7Definition = {\n properties,\n type: \"object\",\n };\n\n if (transformOptions.includeRequiredFields) {\n // eslint-disable-next-line unicorn/no-array-reduce\n definition.required = definitionPropertiesMap.reduce((filtered: string[], [name, , fieldMetaData]) => {\n if (fieldMetaData.required && fieldMetaData.isScalar && !fieldMetaData.hasDefaultValue) {\n filtered.push(name);\n }\n return filtered;\n }, []);\n }\n\n return [model.name, definition];\n };\n\nexport default getJSONSchemaModel;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaModel from \"./model\";\nimport type { TransformOptions } from \"./types.d\";\n\nconst toCamelCase = (name: string): string => name.slice(0, 1).toLowerCase() + name.slice(1);\n\nconst getPropertyDefinition =\n ({ schemaId }: TransformOptions) =>\n (model: DMMF.Model): [name: string, reference: JSONSchema7Definition] => {\n const reference = `#/definitions/${model.name}`;\n\n return [\n toCamelCase(model.name),\n {\n $ref: schemaId ? `${schemaId}${reference}` : reference,\n },\n ];\n };\n\nconst transformDmmf = (dmmf: DMMF.Document, transformOptions: TransformOptions = {}): JSONSchema7 => {\n // TODO: Remove default values as soon as prisma version < 3.10.0 doesn't have to be supported anymore\n const { enums = [], models = [], types = [] } = dmmf.datamodel;\n const initialJSON = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n definitions: {},\n type: \"object\",\n } as JSONSchema7;\n const { schemaId } = transformOptions;\n\n const modelDefinitionsMap = models.map(getJSONSchemaModel({ enums }, transformOptions));\n const typeDefinitionsMap = types.map(getJSONSchemaModel({ enums }, transformOptions));\n const modelPropertyDefinitionsMap = models.map(getPropertyDefinition(transformOptions));\n const definitions = Object.fromEntries([...modelDefinitionsMap, ...typeDefinitionsMap]);\n const properties = Object.fromEntries(modelPropertyDefinitionsMap);\n\n return {\n ...(schemaId ? { $id: schemaId } : null),\n ...initialJSON,\n definitions,\n properties,\n };\n};\n\nexport default transformDmmf;\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import h from 'assert';
|
|
2
2
|
|
|
3
|
-
var l=e=>e!=null,
|
|
3
|
+
var l=e=>e!=null,S=e=>{switch(e){case"Int":case"BigInt":return "integer";case"DateTime":case"Bytes":case"String":return "string";case"Float":case"Decimal":return "number";case"Json":return ["number","string","boolean","object","array","null"];case"Boolean":return "boolean";default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e)}`)}},g=e=>{let{isList:t,isRequired:r,kind:n,type:i}=e,a="object";return n==="scalar"&&!t?a=S(i):t?a="array":n==="enum"&&(a="string"),r||t?a:Array.isArray(a)?[...new Set([...a,"null"])]:[a,"null"]},F=e=>{let t=e.default;if(!e.hasDefaultValue)return null;if(e.kind==="enum")return typeof t=="string"?t:null;if(e.kind!=="scalar")return null;switch(e.type){case"String":case"BigInt":case"DateTime":return typeof t=="string"?t:null;case"Int":case"Float":case"Decimal":return typeof t=="number"?t:null;case"Boolean":return typeof t=="boolean"?t:null;case"Json":case"Bytes":return null;default:throw new Error(`Unhandled discriminated union member: ${JSON.stringify(e.type)}`)}},O=e=>{if(e==="DateTime")return "date-time"},D=(e,{persistOriginalType:t,schemaId:r})=>{let n=e.isRequired||e.isList;h.equal(typeof e.type,"string");let i=`#/definitions/${e.type}`,a={$ref:r?`${r}${i}`:i};return n?a:{anyOf:[a,{type:"null"}],...t&&{originalType:e.type}}},N=(e,t)=>{if(!(e.kind==="scalar"&&!e.isList||e.kind==="enum"))return e.kind==="scalar"&&e.isList?{type:S(e.type)}:D(e,t)},J=e=>e.kind!=="scalar"&&!e.isList&&e.kind!=="enum",T=e=>t=>{let r=e.enums.find(({name:n})=>n===t.type);if(r)return r.values.map(n=>n.name)},P=e=>e.documentation,b=(e,t,r)=>{let n=g(r),i=O(r.type),a=N(r,t),o=T(e)(r),p=F(r),c=P(r);return {type:n,...t.persistOriginalType&&{originalType:r.type},...l(p)&&{default:p},...l(i)&&{format:i},...l(a)&&{items:a},...l(o)&&{enum:o},...l(c)&&{description:c}}},$=(e,t)=>r=>{let n={hasDefaultValue:r.hasDefaultValue,isScalar:r.kind==="scalar"||r.kind==="enum",required:r.isRequired},i=J(r)?D(r,t):b(e,t,r);return [r.name,i,n]},f=$;var j=e=>e.fields.flatMap(t=>t.relationFromFields??[]),k=(e,t)=>r=>{let n=r.fields.map(f(e,t)),i=n.map(([s,m])=>[s,m]),a=j(r),o=i.filter(s=>!a.includes(s[0])),c={properties:Object.fromEntries(t.keepRelationScalarFields==="true"?i:o),type:"object"};return t.includeRequiredFields&&(c.required=n.reduce((s,[m,,u])=>(u.required&&u.isScalar&&!u.hasDefaultValue&&s.push(m),s),[])),[r.name,c]},d=k;var R=e=>e.slice(0,1).toLowerCase()+e.slice(1),B=({schemaId:e})=>t=>{let r=`#/definitions/${t.name}`;return [R(t.name),{$ref:e?`${e}${r}`:r}]},q=(e,t={})=>{let{enums:r=[],models:n=[],types:i=[]}=e.datamodel,a={$schema:"http://json-schema.org/draft-07/schema#",definitions:{},type:"object"},{schemaId:o}=t,p=n.map(d({enums:r},t)),c=i.map(d({enums:r},t)),s=n.map(B(t)),m=Object.fromEntries([...p,...c]),u=Object.fromEntries(s);return {...o?{$id:o}:null,...a,definitions:m,properties:u}},w=q;
|
|
4
4
|
|
|
5
|
-
export {
|
|
5
|
+
export { f as getJSONSchemaProperty, w as transformDMMF };
|
|
6
6
|
//# sourceMappingURL=out.js.map
|
|
7
7
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/properties.ts","../src/model.ts","../src/transform-dmmf.ts"],"names":["assert","isDefined","value","getJSONSchemaScalar","fieldType","getJSONSchemaType","field","isList","isRequired","kind","type","scalarFieldType","getDefaultValue","fieldDefault","getFormatByDMMFType","getJSONSchemaForPropertyReference","persistOriginalType","schemaId","notNullable","typeReference","reference","getItemsByDMMFType","transformOptions","isSingleReference","getEnumListByDMMFType","modelMetaData","enumItem","name","item","getDescription","getPropertyDefinition","format","items","enumList","defaultValue","description","getJSONSchemaProperty","propertyMetaData","property","properties_default","getRelationScalarFields","model","getJSONSchemaModel","definitionPropertiesMap","propertiesMap","definition","relationScalarFields","propertiesWithoutRelationScalars","filtered","fieldMetaData","model_default","toCamelCase","transformDmmf","dmmf","enums","models","types","initialJSON","modelDefinitionsMap","typeDefinitionsMap","modelPropertyDefinitionsMap","definitions","properties","transform_dmmf_default"],"mappings":"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","sourcesContent":["import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\nimport assert from \"node:assert\";\n\nimport type { ModelMetaData, PrismaPrimitive, PropertyMap, PropertyMetaData, TransformOptions } from \"./types.d\";\n\nconst isDefined = <T>(value: T | null | undefined): value is T => value !== undefined && value !== null;\n\nconst getJSONSchemaScalar = (fieldType: PrismaPrimitive): JSONSchema7TypeName | JSONSchema7TypeName[] => {\n switch (fieldType) {\n case \"Int\":\n case \"BigInt\": {\n return \"integer\";\n }\n case \"DateTime\":\n case \"Bytes\":\n case \"String\": {\n return \"string\";\n }\n case \"Float\":\n case \"Decimal\": {\n return \"number\";\n }\n case \"Json\": {\n return [\"number\", \"string\", \"boolean\", \"object\", \"array\", \"null\"];\n }\n case \"Boolean\": {\n return \"boolean\";\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);\n }\n }\n};\n\nconst getJSONSchemaType = (field: DMMF.Field): JSONSchema7[\"type\"] => {\n const { isList, isRequired, kind, type } = field;\n\n let scalarFieldType: JSONSchema7[\"type\"] = \"object\";\n\n if (kind === \"scalar\" && !isList) {\n scalarFieldType = getJSONSchemaScalar(type as PrismaPrimitive);\n } else if (isList) {\n scalarFieldType = \"array\";\n } else if (kind === \"enum\") {\n scalarFieldType = \"string\";\n }\n\n if (isRequired || isList) {\n return scalarFieldType;\n }\n\n const isFieldUnion = Array.isArray(scalarFieldType);\n\n if (isFieldUnion) {\n return [...new Set([...scalarFieldType, \"null\"])] as JSONSchema7[\"type\"];\n }\n\n return [scalarFieldType as JSONSchema7TypeName, \"null\"];\n};\n\nconst getDefaultValue = (field: DMMF.Field): JSONSchema7[\"default\"] => {\n const fieldDefault = field.default;\n\n if (!field.hasDefaultValue) {\n return null;\n }\n\n if (field.kind === \"enum\") {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n\n if (field.kind !== \"scalar\") {\n return null;\n }\n\n switch (field.type) {\n case \"String\":\n case \"BigInt\":\n case \"DateTime\": {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n case \"Int\":\n case \"Float\":\n case \"Decimal\": {\n return typeof fieldDefault === \"number\" ? fieldDefault : null;\n }\n case \"Boolean\": {\n return typeof fieldDefault === \"boolean\" ? fieldDefault : null;\n }\n case \"Json\":\n case \"Bytes\": {\n return null;\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);\n }\n }\n};\n\nconst getFormatByDMMFType = (fieldType: DMMF.Field[\"type\"]): string | undefined => {\n if (fieldType === \"DateTime\") {\n return \"date-time\";\n }\n\n return undefined;\n};\n\nconst getJSONSchemaForPropertyReference = (field: DMMF.Field, { persistOriginalType, schemaId }: TransformOptions): JSONSchema7 => {\n const notNullable = field.isRequired || field.isList;\n\n assert.equal(typeof field.type, \"string\");\n\n const typeReference = `#/definitions/${field.type}`;\n const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };\n\n return notNullable\n ? reference\n : {\n anyOf: [reference, { type: \"null\" }],\n ...(persistOriginalType && {\n originalType: field.type,\n }),\n };\n};\n\nconst getItemsByDMMFType = (field: DMMF.Field, transformOptions: TransformOptions): JSONSchema7[\"items\"] => {\n if ((field.kind === \"scalar\" && !field.isList) || field.kind === \"enum\") {\n return undefined;\n }\n\n if (field.kind === \"scalar\" && field.isList) {\n return { type: getJSONSchemaScalar(field.type as PrismaPrimitive) };\n }\n\n return getJSONSchemaForPropertyReference(field, transformOptions);\n};\n\nconst isSingleReference = (field: DMMF.Field) => field.kind !== \"scalar\" && !field.isList && field.kind !== \"enum\";\n\nconst getEnumListByDMMFType =\n (modelMetaData: ModelMetaData) =>\n (field: DMMF.Field): string[] | undefined => {\n const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);\n\n if (!enumItem) {\n return undefined;\n }\n\n return enumItem.values.map((item) => item.name);\n };\n\nconst getDescription = (field: DMMF.Field) => field.documentation;\n\nconst getPropertyDefinition = (modelMetaData: ModelMetaData, transformOptions: TransformOptions, field: DMMF.Field) => {\n const type = getJSONSchemaType(field);\n const format = getFormatByDMMFType(field.type);\n const items = getItemsByDMMFType(field, transformOptions);\n const enumList = getEnumListByDMMFType(modelMetaData)(field);\n const defaultValue = getDefaultValue(field);\n const description = getDescription(field);\n\n return {\n type,\n ...(transformOptions.persistOriginalType && {\n originalType: field.type,\n }),\n ...(isDefined(defaultValue) && { default: defaultValue }),\n ...(isDefined(format) && { format }),\n ...(isDefined(items) && { items }),\n ...(isDefined(enumList) && { enum: enumList }),\n ...(isDefined(description) && { description }),\n };\n};\n\nconst getJSONSchemaProperty =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (field: DMMF.Field): PropertyMap => {\n const propertyMetaData: PropertyMetaData = {\n hasDefaultValue: field.hasDefaultValue,\n isScalar: field.kind === \"scalar\" || field.kind === \"enum\",\n required: field.isRequired,\n };\n\n const property = isSingleReference(field)\n ? getJSONSchemaForPropertyReference(field, transformOptions)\n : getPropertyDefinition(modelMetaData, transformOptions, field);\n\n return [field.name, property, propertyMetaData];\n };\n\nexport default getJSONSchemaProperty;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaProperty from \"./properties\";\nimport type { DefinitionMap, ModelMetaData, TransformOptions } from \"./types.d\";\n\nconst getRelationScalarFields = (model: DMMF.Model): string[] => model.fields.flatMap((field) => field.relationFromFields ?? []);\n\nconst getJSONSchemaModel =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (model: DMMF.Model): DefinitionMap => {\n const definitionPropertiesMap = model.fields.map(getJSONSchemaProperty(modelMetaData, transformOptions));\n\n const propertiesMap = definitionPropertiesMap.map(([name, definition]) => [name, definition] as DefinitionMap);\n const relationScalarFields = getRelationScalarFields(model);\n const propertiesWithoutRelationScalars = propertiesMap.filter((property) => !relationScalarFields.includes(property[0]));\n\n const properties = Object.fromEntries(transformOptions.keepRelationScalarFields === \"true\" ? propertiesMap : propertiesWithoutRelationScalars);\n\n const definition: JSONSchema7Definition = {\n properties,\n type: \"object\",\n };\n\n if (transformOptions.includeRequiredFields) {\n // eslint-disable-next-line unicorn/no-array-reduce\n definition.required = definitionPropertiesMap.reduce((filtered: string[], [name, , fieldMetaData]) => {\n if (fieldMetaData.required && fieldMetaData.isScalar && !fieldMetaData.hasDefaultValue) {\n filtered.push(name);\n }\n return filtered;\n }, []);\n }\n\n return [model.name, definition];\n };\n\nexport default getJSONSchemaModel;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaModel from \"./model\";\nimport type { TransformOptions } from \"./types.d\";\n\nconst toCamelCase = (name: string): string => name.slice(0, 1).toLowerCase() + name.slice(1);\n\nconst getPropertyDefinition =\n ({ schemaId }: TransformOptions) =>\n (model: DMMF.Model): [name: string, reference: JSONSchema7Definition] => {\n const reference = `#/definitions/${model.name}`;\n\n return [\n toCamelCase(model.name),\n {\n $ref: schemaId ? `${schemaId}${reference}` : reference,\n },\n ];\n };\n\nconst transformDmmf = (dmmf: DMMF.Document, transformOptions: TransformOptions = {}): JSONSchema7 => {\n // TODO: Remove default values as soon as prisma version < 3.10.0 doesn't have to be supported anymore\n const { enums = [], models = [], types = [] } = dmmf.datamodel;\n const initialJSON = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n definitions: {},\n type: \"object\",\n } as JSONSchema7;\n const { schemaId } = transformOptions;\n\n const modelDefinitionsMap = models.map(getJSONSchemaModel({ enums }, transformOptions));\n const typeDefinitionsMap = types.map(getJSONSchemaModel({ enums }, transformOptions));\n const modelPropertyDefinitionsMap = models.map(getPropertyDefinition(transformOptions));\n const definitions = Object.fromEntries([...modelDefinitionsMap, ...typeDefinitionsMap]);\n const properties = Object.fromEntries(modelPropertyDefinitionsMap);\n\n return {\n ...(schemaId ? { $id: schemaId } : null),\n ...initialJSON,\n definitions,\n properties,\n };\n};\n\nexport default transformDmmf;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/properties.ts","../src/model.ts","../src/transform-dmmf.ts"],"names":["assert","isDefined","value","getJSONSchemaScalar","fieldType","getJSONSchemaType","field","isList","isRequired","kind","type","scalarFieldType","getDefaultValue","fieldDefault","getFormatByDMMFType","getJSONSchemaForPropertyReference","persistOriginalType","schemaId","notNullable","typeReference","reference","getItemsByDMMFType","transformOptions","isSingleReference","getEnumListByDMMFType","modelMetaData","enumItem","name","item","getDescription","getPropertyDefinition","format","items","enumList","defaultValue","description","getJSONSchemaProperty","propertyMetaData","property","properties_default","getRelationScalarFields","model","getJSONSchemaModel","definitionPropertiesMap","propertiesMap","definition","relationScalarFields","propertiesWithoutRelationScalars","filtered","fieldMetaData","model_default","toCamelCase","transformDmmf","dmmf","enums","models","types","initialJSON","modelDefinitionsMap","typeDefinitionsMap","modelPropertyDefinitionsMap","definitions","properties","transform_dmmf_default"],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7TypeName } from \"json-schema\";\n\nimport type { ModelMetaData, PrismaPrimitive, PropertyMap, PropertyMetaData, TransformOptions } from \"./types.d\";\n\nconst isDefined = <T>(value: T | null | undefined): value is T => value !== undefined && value !== null;\n\nconst getJSONSchemaScalar = (fieldType: PrismaPrimitive): JSONSchema7TypeName | JSONSchema7TypeName[] => {\n switch (fieldType) {\n case \"Int\":\n case \"BigInt\": {\n return \"integer\";\n }\n case \"DateTime\":\n case \"Bytes\":\n case \"String\": {\n return \"string\";\n }\n case \"Float\":\n case \"Decimal\": {\n return \"number\";\n }\n case \"Json\": {\n return [\"number\", \"string\", \"boolean\", \"object\", \"array\", \"null\"];\n }\n case \"Boolean\": {\n return \"boolean\";\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(fieldType)}`);\n }\n }\n};\n\nconst getJSONSchemaType = (field: DMMF.Field): JSONSchema7[\"type\"] => {\n const { isList, isRequired, kind, type } = field;\n\n let scalarFieldType: JSONSchema7[\"type\"] = \"object\";\n\n if (kind === \"scalar\" && !isList) {\n scalarFieldType = getJSONSchemaScalar(type as PrismaPrimitive);\n } else if (isList) {\n scalarFieldType = \"array\";\n } else if (kind === \"enum\") {\n scalarFieldType = \"string\";\n }\n\n if (isRequired || isList) {\n return scalarFieldType;\n }\n\n const isFieldUnion = Array.isArray(scalarFieldType);\n\n if (isFieldUnion) {\n return [...new Set([...scalarFieldType, \"null\"])] as JSONSchema7[\"type\"];\n }\n\n return [scalarFieldType as JSONSchema7TypeName, \"null\"];\n};\n\nconst getDefaultValue = (field: DMMF.Field): JSONSchema7[\"default\"] => {\n const fieldDefault = field.default;\n\n if (!field.hasDefaultValue) {\n return null;\n }\n\n if (field.kind === \"enum\") {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n\n if (field.kind !== \"scalar\") {\n return null;\n }\n\n switch (field.type) {\n case \"String\":\n case \"BigInt\":\n case \"DateTime\": {\n return typeof fieldDefault === \"string\" ? fieldDefault : null;\n }\n case \"Int\":\n case \"Float\":\n case \"Decimal\": {\n return typeof fieldDefault === \"number\" ? fieldDefault : null;\n }\n case \"Boolean\": {\n return typeof fieldDefault === \"boolean\" ? fieldDefault : null;\n }\n case \"Json\":\n case \"Bytes\": {\n return null;\n }\n default: {\n throw new Error(`Unhandled discriminated union member: ${JSON.stringify(field.type)}`);\n }\n }\n};\n\nconst getFormatByDMMFType = (fieldType: DMMF.Field[\"type\"]): string | undefined => {\n if (fieldType === \"DateTime\") {\n return \"date-time\";\n }\n\n return undefined;\n};\n\nconst getJSONSchemaForPropertyReference = (field: DMMF.Field, { persistOriginalType, schemaId }: TransformOptions): JSONSchema7 => {\n const notNullable = field.isRequired || field.isList;\n\n assert.equal(typeof field.type, \"string\");\n\n const typeReference = `#/definitions/${field.type}`;\n const reference = { $ref: schemaId ? `${schemaId}${typeReference}` : typeReference };\n\n return notNullable\n ? reference\n : {\n anyOf: [reference, { type: \"null\" }],\n ...(persistOriginalType && {\n originalType: field.type,\n }),\n };\n};\n\nconst getItemsByDMMFType = (field: DMMF.Field, transformOptions: TransformOptions): JSONSchema7[\"items\"] => {\n if ((field.kind === \"scalar\" && !field.isList) || field.kind === \"enum\") {\n return undefined;\n }\n\n if (field.kind === \"scalar\" && field.isList) {\n return { type: getJSONSchemaScalar(field.type as PrismaPrimitive) };\n }\n\n return getJSONSchemaForPropertyReference(field, transformOptions);\n};\n\nconst isSingleReference = (field: DMMF.Field) => field.kind !== \"scalar\" && !field.isList && field.kind !== \"enum\";\n\nconst getEnumListByDMMFType =\n (modelMetaData: ModelMetaData) =>\n (field: DMMF.Field): string[] | undefined => {\n const enumItem = modelMetaData.enums.find(({ name }) => name === field.type);\n\n if (!enumItem) {\n return undefined;\n }\n\n return enumItem.values.map((item) => item.name);\n };\n\nconst getDescription = (field: DMMF.Field) => field.documentation;\n\nconst getPropertyDefinition = (modelMetaData: ModelMetaData, transformOptions: TransformOptions, field: DMMF.Field) => {\n const type = getJSONSchemaType(field);\n const format = getFormatByDMMFType(field.type);\n const items = getItemsByDMMFType(field, transformOptions);\n const enumList = getEnumListByDMMFType(modelMetaData)(field);\n const defaultValue = getDefaultValue(field);\n const description = getDescription(field);\n\n return {\n type,\n ...(transformOptions.persistOriginalType && {\n originalType: field.type,\n }),\n ...(isDefined(defaultValue) && { default: defaultValue }),\n ...(isDefined(format) && { format }),\n ...(isDefined(items) && { items }),\n ...(isDefined(enumList) && { enum: enumList }),\n ...(isDefined(description) && { description }),\n };\n};\n\nconst getJSONSchemaProperty =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (field: DMMF.Field): PropertyMap => {\n const propertyMetaData: PropertyMetaData = {\n hasDefaultValue: field.hasDefaultValue,\n isScalar: field.kind === \"scalar\" || field.kind === \"enum\",\n required: field.isRequired,\n };\n\n const property = isSingleReference(field)\n ? getJSONSchemaForPropertyReference(field, transformOptions)\n : getPropertyDefinition(modelMetaData, transformOptions, field);\n\n return [field.name, property, propertyMetaData];\n };\n\nexport default getJSONSchemaProperty;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaProperty from \"./properties\";\nimport type { DefinitionMap, ModelMetaData, TransformOptions } from \"./types.d\";\n\nconst getRelationScalarFields = (model: DMMF.Model): string[] => model.fields.flatMap((field) => field.relationFromFields ?? []);\n\nconst getJSONSchemaModel =\n (modelMetaData: ModelMetaData, transformOptions: TransformOptions) =>\n (model: DMMF.Model): DefinitionMap => {\n const definitionPropertiesMap = model.fields.map(getJSONSchemaProperty(modelMetaData, transformOptions));\n\n const propertiesMap = definitionPropertiesMap.map(([name, definition]) => [name, definition] as DefinitionMap);\n const relationScalarFields = getRelationScalarFields(model);\n const propertiesWithoutRelationScalars = propertiesMap.filter((property) => !relationScalarFields.includes(property[0]));\n\n const properties = Object.fromEntries(transformOptions.keepRelationScalarFields === \"true\" ? propertiesMap : propertiesWithoutRelationScalars);\n\n const definition: JSONSchema7Definition = {\n properties,\n type: \"object\",\n };\n\n if (transformOptions.includeRequiredFields) {\n // eslint-disable-next-line unicorn/no-array-reduce\n definition.required = definitionPropertiesMap.reduce((filtered: string[], [name, , fieldMetaData]) => {\n if (fieldMetaData.required && fieldMetaData.isScalar && !fieldMetaData.hasDefaultValue) {\n filtered.push(name);\n }\n return filtered;\n }, []);\n }\n\n return [model.name, definition];\n };\n\nexport default getJSONSchemaModel;\n","import type { DMMF } from \"@prisma/generator-helper\";\nimport type { JSONSchema7, JSONSchema7Definition } from \"json-schema\";\n\nimport getJSONSchemaModel from \"./model\";\nimport type { TransformOptions } from \"./types.d\";\n\nconst toCamelCase = (name: string): string => name.slice(0, 1).toLowerCase() + name.slice(1);\n\nconst getPropertyDefinition =\n ({ schemaId }: TransformOptions) =>\n (model: DMMF.Model): [name: string, reference: JSONSchema7Definition] => {\n const reference = `#/definitions/${model.name}`;\n\n return [\n toCamelCase(model.name),\n {\n $ref: schemaId ? `${schemaId}${reference}` : reference,\n },\n ];\n };\n\nconst transformDmmf = (dmmf: DMMF.Document, transformOptions: TransformOptions = {}): JSONSchema7 => {\n // TODO: Remove default values as soon as prisma version < 3.10.0 doesn't have to be supported anymore\n const { enums = [], models = [], types = [] } = dmmf.datamodel;\n const initialJSON = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n definitions: {},\n type: \"object\",\n } as JSONSchema7;\n const { schemaId } = transformOptions;\n\n const modelDefinitionsMap = models.map(getJSONSchemaModel({ enums }, transformOptions));\n const typeDefinitionsMap = types.map(getJSONSchemaModel({ enums }, transformOptions));\n const modelPropertyDefinitionsMap = models.map(getPropertyDefinition(transformOptions));\n const definitions = Object.fromEntries([...modelDefinitionsMap, ...typeDefinitionsMap]);\n const properties = Object.fromEntries(modelPropertyDefinitionsMap);\n\n return {\n ...(schemaId ? { $id: schemaId } : null),\n ...initialJSON,\n definitions,\n properties,\n };\n};\n\nexport default transformDmmf;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/prisma-dmmf-transformer",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "A generator for Prisma to generate a valid JSON Schema v7.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -39,8 +39,14 @@
|
|
|
39
39
|
"exports": {
|
|
40
40
|
".": {
|
|
41
41
|
"types": "./dist/index.d.ts",
|
|
42
|
-
"require":
|
|
43
|
-
|
|
42
|
+
"require": {
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"default": "./dist/index.js"
|
|
45
|
+
},
|
|
46
|
+
"import": {
|
|
47
|
+
"types": "./dist/index.d.mts",
|
|
48
|
+
"default": "./dist/index.mjs"
|
|
49
|
+
}
|
|
44
50
|
},
|
|
45
51
|
"./package.json": "./package.json"
|
|
46
52
|
},
|
|
@@ -60,7 +66,7 @@
|
|
|
60
66
|
"clean": "rimraf node_modules dist .eslintcache",
|
|
61
67
|
"coverage": "vitest run --coverage",
|
|
62
68
|
"dev": "pnpm run build --watch",
|
|
63
|
-
"lint:eslint": "eslint . --ext js,jsx,ts,tsx --max-warnings=0 --config .eslintrc.js
|
|
69
|
+
"lint:eslint": "eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.js",
|
|
64
70
|
"lint:eslint:fix": "pnpm run lint:eslint --fix",
|
|
65
71
|
"lint:prettier": "prettier --config=.prettierrc.js --check .",
|
|
66
72
|
"lint:prettier:fix": "prettier --config=.prettierrc.js --write .",
|
|
@@ -69,40 +75,42 @@
|
|
|
69
75
|
"test:watch": "vitest"
|
|
70
76
|
},
|
|
71
77
|
"dependencies": {
|
|
72
|
-
"@prisma/generator-helper": "5.
|
|
73
|
-
"@prisma/internals": "5.
|
|
78
|
+
"@prisma/generator-helper": "5.2.0",
|
|
79
|
+
"@prisma/internals": "5.2.0"
|
|
74
80
|
},
|
|
75
81
|
"devDependencies": {
|
|
76
|
-
"@anolilab/eslint-config": "^11.
|
|
77
|
-
"@anolilab/prettier-config": "^5.0.
|
|
78
|
-
"@anolilab/semantic-release-preset": "^6.0.
|
|
82
|
+
"@anolilab/eslint-config": "^11.3.3",
|
|
83
|
+
"@anolilab/prettier-config": "^5.0.3",
|
|
84
|
+
"@anolilab/semantic-release-preset": "^6.0.4",
|
|
79
85
|
"@prisma/client": "4.16.2",
|
|
80
86
|
"@rushstack/eslint-plugin-security": "^0.6.0",
|
|
81
87
|
"@types/json-schema": "7.0.12",
|
|
82
88
|
"@types/micromatch": "4.0.2",
|
|
83
|
-
"@types/node": "18.
|
|
84
|
-
"@vitest/coverage-v8": "0.
|
|
89
|
+
"@types/node": "18.17.1",
|
|
90
|
+
"@vitest/coverage-v8": "0.34.3",
|
|
85
91
|
"ajv": "8.12.0",
|
|
86
92
|
"ajv-formats": "2.1.1",
|
|
87
93
|
"cross-env": "7.0.3",
|
|
88
|
-
"eslint": "^8.
|
|
94
|
+
"eslint": "^8.48.0",
|
|
89
95
|
"eslint-plugin-etc": "^2.0.3",
|
|
90
|
-
"eslint-plugin-mdx": "^2.
|
|
96
|
+
"eslint-plugin-mdx": "^2.2.0",
|
|
91
97
|
"eslint-plugin-vitest": "^0.2.8",
|
|
92
|
-
"
|
|
98
|
+
"eslint-plugin-vitest-globals": "^1.4.0",
|
|
99
|
+
"prettier": "3.0.2",
|
|
93
100
|
"prisma": "4.16.2",
|
|
94
101
|
"rimraf": "5.0.1",
|
|
95
|
-
"semantic-release": "21.
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
102
|
+
"semantic-release": "21.1.1",
|
|
103
|
+
"sort-package-json": "^2.5.1",
|
|
104
|
+
"tsup": "7.2.0",
|
|
105
|
+
"typescript": "5.2.2",
|
|
106
|
+
"vitest": "0.34.3"
|
|
99
107
|
},
|
|
100
108
|
"peerDependencies": {
|
|
101
109
|
"@prisma/client": "3.* || 4.*",
|
|
102
110
|
"prisma": "3.* || 4.*"
|
|
103
111
|
},
|
|
104
112
|
"engines": {
|
|
105
|
-
"node": ">=
|
|
113
|
+
"node": ">=18.* <=20.*"
|
|
106
114
|
},
|
|
107
115
|
"publishConfig": {
|
|
108
116
|
"access": "public",
|