arkos 1.4.1-canary.8 → 1.5.0-canary.2
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/cjs/modules/auth/auth.controller.js +13 -0
- package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +40 -14
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/cjs/modules/base/base.middlewares.js +6 -4
- package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
- package/dist/cjs/modules/base/utils/error-prettifier.js +185 -0
- package/dist/cjs/modules/base/utils/error-prettifier.js.map +1 -0
- package/dist/cjs/modules/email/email.service.js +4 -1
- package/dist/cjs/modules/email/email.service.js.map +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +9 -3
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +27 -9
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +28 -11
- package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
- package/dist/cjs/types/auth.js.map +1 -1
- package/dist/cjs/utils/arkos-router/index.js +7 -1
- package/dist/cjs/utils/arkos-router/index.js.map +1 -1
- package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js +51 -0
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +38 -0
- package/dist/cjs/utils/cli/generate.js.map +1 -1
- package/dist/cjs/utils/cli/index.js +37 -4
- package/dist/cjs/utils/cli/index.js.map +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +556 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +327 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generators.js +14 -8
- package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/cjs/utils/dynamic-loader.js +2 -2
- package/dist/cjs/utils/dynamic-loader.js.map +1 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +2 -3
- package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +5 -5
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
- package/dist/esm/modules/auth/auth.controller.js +13 -0
- package/dist/esm/modules/auth/auth.controller.js.map +1 -1
- package/dist/esm/modules/auth/auth.service.js +40 -14
- package/dist/esm/modules/auth/auth.service.js.map +1 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/esm/modules/base/base.middlewares.js +6 -4
- package/dist/esm/modules/base/base.middlewares.js.map +1 -1
- package/dist/esm/modules/base/utils/error-prettifier.js +181 -0
- package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -0
- package/dist/esm/modules/email/email.service.js +4 -1
- package/dist/esm/modules/email/email.service.js.map +1 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -3
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +27 -9
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +28 -11
- package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
- package/dist/esm/types/auth.js.map +1 -1
- package/dist/esm/utils/arkos-router/index.js +8 -2
- package/dist/esm/utils/arkos-router/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/index.js +50 -0
- package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
- package/dist/esm/utils/cli/generate.js +38 -0
- package/dist/esm/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/index.js +37 -4
- package/dist/esm/utils/cli/index.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +549 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +320 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generators.js +14 -8
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/esm/utils/dynamic-loader.js +2 -2
- package/dist/esm/utils/dynamic-loader.js.map +1 -1
- package/dist/esm/utils/helpers/routers.helpers.js +2 -3
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +5 -5
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
- package/dist/types/modules/auth/auth.service.d.ts +5 -0
- package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
- package/dist/types/modules/base/utils/error-prettifier.d.ts +19 -0
- package/dist/types/modules/email/email.service.d.ts +4 -8
- package/dist/types/types/auth.d.ts +3 -3
- package/dist/types/utils/arkos-router/index.d.ts +3 -1
- package/dist/types/utils/arkos-router/types/index.d.ts +2 -2
- package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -0
- package/dist/types/utils/cli/generate.d.ts +4 -0
- package/dist/types/utils/cli/utils/template-generator/templates/auth-configs-template.d.ts +3 -1
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +18 -0
- package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +14 -0
- package/dist/types/utils/helpers/routers.helpers.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -187
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -181
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -106
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -104
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -181
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -175
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -100
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -98
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.d.ts +0 -2
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.d.ts +0 -2
- package/dist/types/utils/cli/utils/template-generator/templates/zod/create-schema-template.d.ts +0 -2
- package/dist/types/utils/cli/utils/template-generator/templates/zod/update-schema-template.d.ts +0 -2
package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-schema-template.js","sourceRoot":"","sources":["../../../../../../../../src/utils/cli/utils/template-generator/templates/zod/create-schema-template.ts"],"names":[],"mappings":"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","sourcesContent":["import prismaSchemaParser from \"../../../../../prisma/prisma-schema-parser\";\nimport { PrismaField } from \"../../../../../prisma/types\";\nimport { getUserFileExtension } from \"../../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../../template-generators\";\n\nexport function generateCreateSchemaTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n\n if (!modelName)\n throw new Error(\"Module name is required for create-schema template\");\n\n const model = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === modelName.pascal.toLowerCase()\n );\n\n if (!model)\n throw new Error(`Model ${modelName.pascal} not found in Prisma schema`);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\"id\", \"createdAt\", \"updatedAt\", \"deletedAt\"];\n const isUserModule = modelName.kebab === \"user\";\n const enumsUsed = new Set<string>();\n\n let schemaFields: string[] = [];\n\n for (const field of model.fields) {\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n\n if (field.isId || restrictedFields.includes(field.name) || isForeignKey)\n continue;\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n const refField = field.foreignReferenceField || \"id\";\n const refFieldType = referencedModel.fields.find(\n (f) => f.name === refField\n );\n\n const zodType = mapPrismaTypeToZod(refFieldType?.type!);\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n\n schemaFields.push(\n ` ${field.name}: z.object({ ${refField}: ${zodType} })${isOptional ? \".optional()\" : \"\"}`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) enumsUsed.add(field.type);\n\n const zodSchema = generateZodField(field, isUserModule);\n schemaFields.push(` ${field.name}: ${zodSchema}`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const typeExport = isTypeScript\n ? `\\nexport type Create${modelName.pascal}SchemaType = z.infer<typeof Create${modelName.pascal}Schema>;`\n : \"\";\n\n return `import { z } from \"zod\";\n${enumImports}\nconst Create${modelName.pascal}Schema = z.object({\n${schemaFields.join(\",\\n\")}\n});\n\n${typeExport}\nexport default Create${modelName.pascal}Schema;\n`;\n}\n\nfunction generateZodField(field: PrismaField, isUserModule: boolean): string {\n let zodType = mapPrismaTypeToZod(field.type);\n\n if (field.isArray) {\n zodType = `z.array(${zodType})`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n zodType = field.isArray\n ? `z.array(z.nativeEnum(${field.type}))`\n : `z.nativeEnum(${field.type})`;\n }\n\n if (isUserModule) {\n if (field.name === \"email\") {\n zodType = `z.string().email()`;\n } else if (field.name === \"password\") {\n zodType = `z.string().min(8).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)/, \"Password must contain at least one uppercase letter, one lowercase letter, and one number\")`;\n }\n }\n\n const isOptional = field.isOptional || field.defaultValue !== undefined;\n if (isOptional) {\n zodType += \".optional()\";\n }\n\n return zodType;\n}\n\nfunction mapPrismaTypeToZod(prismaType: string): string {\n switch (prismaType) {\n case \"String\":\n return \"z.string()\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n return \"z.number()\";\n case \"Boolean\":\n return \"z.boolean()\";\n case \"DateTime\":\n return \"z.date().or(z.string()).refine((val) => val instanceof Date || !isNaN(Date.parse(val)), 'Invalid date')\";\n case \"Json\":\n return \"z.any()\";\n case \"Bytes\":\n return \"z.instanceof(Buffer)\";\n case \"BigInt\":\n return \"z.bigint()\";\n default:\n return \"z.any()\";\n }\n}\n"]}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import prismaSchemaParser from "../../../../../prisma/prisma-schema-parser.js";
|
|
2
|
-
import { getUserFileExtension } from "../../../../../helpers/fs.helpers.js";
|
|
3
|
-
export function generateUpdateSchemaTemplate(options) {
|
|
4
|
-
const { modelName } = options;
|
|
5
|
-
if (!modelName)
|
|
6
|
-
throw new Error("Module name is required for update-schema template");
|
|
7
|
-
const model = prismaSchemaParser.models.find((m) => m.name.toLowerCase() === modelName.pascal.toLowerCase());
|
|
8
|
-
if (!model)
|
|
9
|
-
throw new Error(`Model ${modelName.pascal} not found in Prisma schema`);
|
|
10
|
-
const ext = getUserFileExtension();
|
|
11
|
-
const isTypeScript = ext === "ts";
|
|
12
|
-
const restrictedFields = ["id", "createdAt", "updatedAt", "deletedAt"];
|
|
13
|
-
const isUserModule = modelName.kebab === "user";
|
|
14
|
-
const enumsUsed = new Set();
|
|
15
|
-
let schemaFields = [];
|
|
16
|
-
for (const field of model.fields) {
|
|
17
|
-
const isForeignKey = model.fields.some((f) => f.foreignKeyField === field.name);
|
|
18
|
-
if (field.isId || restrictedFields.includes(field.name) || isForeignKey) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
if (field.isRelation) {
|
|
22
|
-
if (field.isArray)
|
|
23
|
-
continue;
|
|
24
|
-
const referencedModel = prismaSchemaParser.models.find((m) => m.name === field.type);
|
|
25
|
-
if (referencedModel) {
|
|
26
|
-
const refField = field.foreignReferenceField || "id";
|
|
27
|
-
const refFieldType = referencedModel.fields.find((f) => f.name === refField);
|
|
28
|
-
const zodType = mapPrismaTypeToZod(refFieldType?.type);
|
|
29
|
-
schemaFields.push(` ${field.name}: z.object({ ${refField}: ${zodType} }).optional()`);
|
|
30
|
-
}
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (prismaSchemaParser.isEnum(field.type)) {
|
|
34
|
-
enumsUsed.add(field.type);
|
|
35
|
-
}
|
|
36
|
-
const zodSchema = generateZodField(field, isUserModule);
|
|
37
|
-
schemaFields.push(` ${field.name}: ${zodSchema}`);
|
|
38
|
-
}
|
|
39
|
-
const enumImports = enumsUsed.size > 0
|
|
40
|
-
? `import { ${Array.from(enumsUsed).join(", ")} } from "@prisma/client";\n`
|
|
41
|
-
: "";
|
|
42
|
-
const typeExport = isTypeScript
|
|
43
|
-
? `\nexport type Update${modelName.pascal}SchemaType = z.infer<typeof Update${modelName.pascal}Schema>;`
|
|
44
|
-
: "";
|
|
45
|
-
return `import { z } from "zod";
|
|
46
|
-
${enumImports}
|
|
47
|
-
const Update${modelName.pascal}Schema = z.object({
|
|
48
|
-
${schemaFields.join(",\n")}
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
${typeExport}
|
|
52
|
-
export default Update${modelName.pascal}Schema;
|
|
53
|
-
`;
|
|
54
|
-
}
|
|
55
|
-
function generateZodField(field, isUserModule) {
|
|
56
|
-
let zodType = mapPrismaTypeToZod(field.type);
|
|
57
|
-
if (field.isArray) {
|
|
58
|
-
zodType = `z.array(${zodType})`;
|
|
59
|
-
}
|
|
60
|
-
if (prismaSchemaParser.isEnum(field.type)) {
|
|
61
|
-
zodType = field.isArray
|
|
62
|
-
? `z.array(z.nativeEnum(${field.type}))`
|
|
63
|
-
: `z.nativeEnum(${field.type})`;
|
|
64
|
-
}
|
|
65
|
-
if (isUserModule) {
|
|
66
|
-
if (field.name === "email") {
|
|
67
|
-
zodType = `z.string().email()`;
|
|
68
|
-
}
|
|
69
|
-
else if (field.name === "password") {
|
|
70
|
-
zodType = `z.string().min(8).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)/, "Password must contain at least one uppercase letter, one lowercase letter, and one number")`;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
zodType += ".optional()";
|
|
74
|
-
return zodType;
|
|
75
|
-
}
|
|
76
|
-
function mapPrismaTypeToZod(prismaType) {
|
|
77
|
-
switch (prismaType) {
|
|
78
|
-
case "String":
|
|
79
|
-
return "z.string()";
|
|
80
|
-
case "Int":
|
|
81
|
-
case "Float":
|
|
82
|
-
case "Decimal":
|
|
83
|
-
return "z.number()";
|
|
84
|
-
case "Boolean":
|
|
85
|
-
return "z.boolean()";
|
|
86
|
-
case "DateTime":
|
|
87
|
-
return "z.date().or(z.string()).refine((val) => val instanceof Date || !isNaN(Date.parse(val)), 'Invalid date')";
|
|
88
|
-
case "Json":
|
|
89
|
-
return "z.any()";
|
|
90
|
-
case "Bytes":
|
|
91
|
-
return "z.instanceof(Buffer)";
|
|
92
|
-
case "BigInt":
|
|
93
|
-
return "z.bigint()";
|
|
94
|
-
default:
|
|
95
|
-
return "z.any()";
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=update-schema-template.js.map
|
package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-schema-template.js","sourceRoot":"","sources":["../../../../../../../../src/utils/cli/utils/template-generator/templates/zod/update-schema-template.ts"],"names":[],"mappings":"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","sourcesContent":["import prismaSchemaParser from \"../../../../../prisma/prisma-schema-parser\";\nimport { PrismaField } from \"../../../../../prisma/types\";\nimport { getUserFileExtension } from \"../../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../../template-generators\";\n\nexport function generateUpdateSchemaTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n\n if (!modelName)\n throw new Error(\"Module name is required for update-schema template\");\n\n const model = prismaSchemaParser.models.find(\n (m) => m.name.toLowerCase() === modelName.pascal.toLowerCase()\n );\n\n if (!model)\n throw new Error(`Model ${modelName.pascal} not found in Prisma schema`);\n\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n const restrictedFields = [\"id\", \"createdAt\", \"updatedAt\", \"deletedAt\"];\n const isUserModule = modelName.kebab === \"user\";\n const enumsUsed = new Set<string>();\n\n let schemaFields: string[] = [];\n\n for (const field of model.fields) {\n const isForeignKey = model.fields.some(\n (f) => f.foreignKeyField === field.name\n );\n\n if (field.isId || restrictedFields.includes(field.name) || isForeignKey) {\n continue;\n }\n\n if (field.isRelation) {\n if (field.isArray) continue;\n\n const referencedModel = prismaSchemaParser.models.find(\n (m) => m.name === field.type\n );\n\n if (referencedModel) {\n const refField = field.foreignReferenceField || \"id\";\n const refFieldType = referencedModel.fields.find(\n (f) => f.name === refField\n );\n\n const zodType = mapPrismaTypeToZod(refFieldType?.type!);\n\n schemaFields.push(\n ` ${field.name}: z.object({ ${refField}: ${zodType} }).optional()`\n );\n }\n continue;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n enumsUsed.add(field.type);\n }\n\n const zodSchema = generateZodField(field, isUserModule);\n schemaFields.push(` ${field.name}: ${zodSchema}`);\n }\n\n const enumImports =\n enumsUsed.size > 0\n ? `import { ${Array.from(enumsUsed).join(\", \")} } from \"@prisma/client\";\\n`\n : \"\";\n\n const typeExport = isTypeScript\n ? `\\nexport type Update${modelName.pascal}SchemaType = z.infer<typeof Update${modelName.pascal}Schema>;`\n : \"\";\n\n return `import { z } from \"zod\";\n${enumImports}\nconst Update${modelName.pascal}Schema = z.object({\n${schemaFields.join(\",\\n\")}\n});\n\n${typeExport}\nexport default Update${modelName.pascal}Schema;\n`;\n}\n\nfunction generateZodField(field: PrismaField, isUserModule: boolean): string {\n let zodType = mapPrismaTypeToZod(field.type);\n\n if (field.isArray) {\n zodType = `z.array(${zodType})`;\n }\n\n if (prismaSchemaParser.isEnum(field.type)) {\n zodType = field.isArray\n ? `z.array(z.nativeEnum(${field.type}))`\n : `z.nativeEnum(${field.type})`;\n }\n\n if (isUserModule) {\n if (field.name === \"email\") {\n zodType = `z.string().email()`;\n } else if (field.name === \"password\") {\n zodType = `z.string().min(8).regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)/, \"Password must contain at least one uppercase letter, one lowercase letter, and one number\")`;\n }\n }\n\n zodType += \".optional()\";\n\n return zodType;\n}\n\nfunction mapPrismaTypeToZod(prismaType: string): string {\n switch (prismaType) {\n case \"String\":\n return \"z.string()\";\n case \"Int\":\n case \"Float\":\n case \"Decimal\":\n return \"z.number()\";\n case \"Boolean\":\n return \"z.boolean()\";\n case \"DateTime\":\n return \"z.date().or(z.string()).refine((val) => val instanceof Date || !isNaN(Date.parse(val)), 'Invalid date')\";\n case \"Json\":\n return \"z.any()\";\n case \"Bytes\":\n return \"z.instanceof(Buffer)\";\n case \"BigInt\":\n return \"z.bigint()\";\n default:\n return \"z.any()\";\n }\n}\n"]}
|