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.
Files changed (126) hide show
  1. package/dist/cjs/modules/auth/auth.controller.js +13 -0
  2. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  3. package/dist/cjs/modules/auth/auth.service.js +40 -14
  4. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  5. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -1
  6. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  7. package/dist/cjs/modules/base/base.middlewares.js +6 -4
  8. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  9. package/dist/cjs/modules/base/utils/error-prettifier.js +185 -0
  10. package/dist/cjs/modules/base/utils/error-prettifier.js.map +1 -0
  11. package/dist/cjs/modules/email/email.service.js +4 -1
  12. package/dist/cjs/modules/email/email.service.js.map +1 -1
  13. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  14. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +9 -3
  15. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  16. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +27 -9
  17. package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  18. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +28 -11
  19. package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
  20. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  21. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  22. package/dist/cjs/types/auth.js.map +1 -1
  23. package/dist/cjs/utils/arkos-router/index.js +7 -1
  24. package/dist/cjs/utils/arkos-router/index.js.map +1 -1
  25. package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
  26. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +51 -0
  27. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
  28. package/dist/cjs/utils/cli/generate.js +38 -0
  29. package/dist/cjs/utils/cli/generate.js.map +1 -1
  30. package/dist/cjs/utils/cli/index.js +37 -4
  31. package/dist/cjs/utils/cli/index.js.map +1 -1
  32. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  33. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
  34. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  35. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +556 -0
  36. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
  37. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +327 -0
  38. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
  39. package/dist/cjs/utils/cli/utils/template-generators.js +14 -8
  40. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  41. package/dist/cjs/utils/dynamic-loader.js +2 -2
  42. package/dist/cjs/utils/dynamic-loader.js.map +1 -1
  43. package/dist/cjs/utils/helpers/routers.helpers.js +2 -3
  44. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  45. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +5 -5
  46. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  47. package/dist/esm/modules/auth/auth.controller.js +13 -0
  48. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  49. package/dist/esm/modules/auth/auth.service.js +40 -14
  50. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  51. package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -1
  52. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  53. package/dist/esm/modules/base/base.middlewares.js +6 -4
  54. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  55. package/dist/esm/modules/base/utils/error-prettifier.js +181 -0
  56. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -0
  57. package/dist/esm/modules/email/email.service.js +4 -1
  58. package/dist/esm/modules/email/email.service.js.map +1 -1
  59. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  60. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -3
  61. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  62. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +27 -9
  63. package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -1
  64. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +28 -11
  65. package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +1 -1
  66. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  67. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  68. package/dist/esm/types/auth.js.map +1 -1
  69. package/dist/esm/utils/arkos-router/index.js +8 -2
  70. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  71. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  72. package/dist/esm/utils/arkos-router/utils/helpers/index.js +50 -0
  73. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  74. package/dist/esm/utils/cli/generate.js +38 -0
  75. package/dist/esm/utils/cli/generate.js.map +1 -1
  76. package/dist/esm/utils/cli/index.js +37 -4
  77. package/dist/esm/utils/cli/index.js.map +1 -1
  78. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  79. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
  80. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  81. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +549 -0
  82. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
  83. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +320 -0
  84. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
  85. package/dist/esm/utils/cli/utils/template-generators.js +14 -8
  86. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  87. package/dist/esm/utils/dynamic-loader.js +2 -2
  88. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  89. package/dist/esm/utils/helpers/routers.helpers.js +2 -3
  90. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  91. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +5 -5
  92. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  93. package/dist/types/modules/auth/auth.service.d.ts +5 -0
  94. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  95. package/dist/types/modules/base/utils/error-prettifier.d.ts +19 -0
  96. package/dist/types/modules/email/email.service.d.ts +4 -8
  97. package/dist/types/types/auth.d.ts +3 -3
  98. package/dist/types/utils/arkos-router/index.d.ts +3 -1
  99. package/dist/types/utils/arkos-router/types/index.d.ts +2 -2
  100. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -0
  101. package/dist/types/utils/cli/generate.d.ts +4 -0
  102. package/dist/types/utils/cli/utils/template-generator/templates/auth-configs-template.d.ts +3 -1
  103. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +18 -0
  104. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +14 -0
  105. package/dist/types/utils/helpers/routers.helpers.d.ts +1 -1
  106. package/package.json +1 -1
  107. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -187
  108. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
  109. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -181
  110. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
  111. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -106
  112. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
  113. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -104
  114. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
  115. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -181
  116. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
  117. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -175
  118. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
  119. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -100
  120. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
  121. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -98
  122. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
  123. package/dist/types/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.d.ts +0 -2
  124. package/dist/types/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.d.ts +0 -2
  125. package/dist/types/utils/cli/utils/template-generator/templates/zod/create-schema-template.d.ts +0 -2
  126. package/dist/types/utils/cli/utils/template-generator/templates/zod/update-schema-template.d.ts +0 -2
@@ -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
@@ -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"]}
@@ -1,2 +0,0 @@
1
- import { TemplateOptions } from "../../../template-generators";
2
- export declare function generateCreateDtoTemplate(options: TemplateOptions): string;
@@ -1,2 +0,0 @@
1
- import { TemplateOptions } from "../../../template-generators";
2
- export declare function generateUpdateDtoTemplate(options: TemplateOptions): string;
@@ -1,2 +0,0 @@
1
- import { TemplateOptions } from "../../../template-generators";
2
- export declare function generateCreateSchemaTemplate(options: TemplateOptions): string;
@@ -1,2 +0,0 @@
1
- import { TemplateOptions } from "../../../template-generators";
2
- export declare function generateUpdateSchemaTemplate(options: TemplateOptions): string;