crudora 0.2.0 → 0.2.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.
Files changed (52) hide show
  1. package/dist/cli.js +55 -65
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.cjs +1692 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +404 -0
  6. package/dist/index.d.ts +404 -15
  7. package/dist/index.js +1685 -27
  8. package/dist/index.js.map +1 -1
  9. package/dist/scripts/copy-assets.js +0 -21
  10. package/package.json +5 -4
  11. package/scripts/copy-assets.js +0 -21
  12. package/dist/core/crudora.d.ts +0 -49
  13. package/dist/core/crudora.d.ts.map +0 -1
  14. package/dist/core/crudora.js +0 -370
  15. package/dist/core/crudora.js.map +0 -1
  16. package/dist/core/crudoraServer.d.ts +0 -84
  17. package/dist/core/crudoraServer.d.ts.map +0 -1
  18. package/dist/core/crudoraServer.js +0 -202
  19. package/dist/core/crudoraServer.js.map +0 -1
  20. package/dist/core/drizzleTableBuilder.d.ts +0 -6
  21. package/dist/core/drizzleTableBuilder.d.ts.map +0 -1
  22. package/dist/core/drizzleTableBuilder.js +0 -175
  23. package/dist/core/drizzleTableBuilder.js.map +0 -1
  24. package/dist/core/model.d.ts +0 -58
  25. package/dist/core/model.d.ts.map +0 -1
  26. package/dist/core/model.js +0 -64
  27. package/dist/core/model.js.map +0 -1
  28. package/dist/core/repository.d.ts +0 -106
  29. package/dist/core/repository.d.ts.map +0 -1
  30. package/dist/core/repository.js +0 -607
  31. package/dist/core/repository.js.map +0 -1
  32. package/dist/core/schemaGenerator.d.ts +0 -6
  33. package/dist/core/schemaGenerator.d.ts.map +0 -1
  34. package/dist/core/schemaGenerator.js +0 -248
  35. package/dist/core/schemaGenerator.js.map +0 -1
  36. package/dist/decorators/model.d.ts +0 -64
  37. package/dist/decorators/model.d.ts.map +0 -1
  38. package/dist/decorators/model.js +0 -138
  39. package/dist/decorators/model.js.map +0 -1
  40. package/dist/index.d.ts.map +0 -1
  41. package/dist/types/logger.type.d.ts +0 -7
  42. package/dist/types/logger.type.d.ts.map +0 -1
  43. package/dist/types/logger.type.js +0 -3
  44. package/dist/types/logger.type.js.map +0 -1
  45. package/dist/types/model.type.d.ts +0 -38
  46. package/dist/types/model.type.d.ts.map +0 -1
  47. package/dist/types/model.type.js +0 -3
  48. package/dist/types/model.type.js.map +0 -1
  49. package/dist/utils/validation.d.ts +0 -7
  50. package/dist/utils/validation.d.ts.map +0 -1
  51. package/dist/utils/validation.js +0 -107
  52. package/dist/utils/validation.js.map +0 -1
@@ -1,107 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidationGenerator = void 0;
4
- const zod_1 = require("zod");
5
- const model_1 = require("../decorators/model");
6
- function zodTypeFor(opts, forStrict) {
7
- const { type, required = false, nullable = false, length } = opts;
8
- let base;
9
- switch (type) {
10
- case 'integer':
11
- base = zod_1.z.number().int();
12
- break;
13
- case 'number':
14
- base = zod_1.z.number();
15
- break;
16
- case 'boolean':
17
- base = zod_1.z.boolean();
18
- break;
19
- case 'date':
20
- base = zod_1.z.coerce.date();
21
- break;
22
- case 'decimal':
23
- base = zod_1.z.string().regex(/^-?\d+(\.\d+)?$/, 'Must be a valid decimal number');
24
- break;
25
- case 'json':
26
- base = zod_1.z.union([zod_1.z.record(zod_1.z.string(), zod_1.z.any()), zod_1.z.array(zod_1.z.any())]);
27
- break;
28
- case 'uuid':
29
- base = zod_1.z.uuid();
30
- break;
31
- case 'enum':
32
- base = opts.enumValues?.length
33
- ? zod_1.z.enum(opts.enumValues)
34
- : zod_1.z.string();
35
- break;
36
- case 'bigint':
37
- base = zod_1.z.number().int();
38
- break;
39
- case 'serial':
40
- base = zod_1.z.number().int().positive();
41
- break;
42
- case 'array':
43
- base = zod_1.z.array(zod_1.z.string());
44
- break;
45
- case 'string':
46
- base = length ? zod_1.z.string().max(length) : zod_1.z.string();
47
- break;
48
- case 'text':
49
- default:
50
- base = zod_1.z.string();
51
- }
52
- if (nullable)
53
- base = base.nullable();
54
- // In strict mode, only required fields stay required; others become optional.
55
- // In partial mode, everything is optional.
56
- if (forStrict) {
57
- return required ? base : base.optional();
58
- }
59
- return base.optional();
60
- }
61
- const SYSTEM_FIELDS = new Set(['createdAt', 'updatedAt', 'deletedAt']);
62
- function resolveFields(modelClass) {
63
- const fieldMeta = (0, model_1.getFieldMetadata)(modelClass);
64
- const hasMeta = Object.keys(fieldMeta).length > 0;
65
- const fillable = modelClass.fillable;
66
- if (hasMeta) {
67
- // Exclude primary-key and system-managed fields — users must never write these directly
68
- let entries = Object.entries(fieldMeta).filter(([name, opts]) => !opts.primary && !SYSTEM_FIELDS.has(name));
69
- // When fillable is defined, restrict validation to only those fields.
70
- // A field not in fillable (e.g. password set via beforeCreate hook) must not
71
- // be required from the request body even if it has required: true in @Field().
72
- if (fillable?.length) {
73
- entries = entries.filter(([name]) => fillable.includes(name));
74
- }
75
- return entries.map(([name, opts]) => ({ name, opts }));
76
- }
77
- // Fallback: fillable defined but no @Field() decorators (e.g. registerTable() without decorators).
78
- // Column types are unknown — treat all as optional strings and let the DB enforce constraints.
79
- return (fillable ?? []).map((name) => ({
80
- name,
81
- opts: { type: 'string', required: false },
82
- }));
83
- }
84
- class ValidationGenerator {
85
- static generateZodSchema(modelClass) {
86
- const fields = resolveFields(modelClass);
87
- if (fields.length === 0)
88
- return zod_1.z.object({}).partial();
89
- const shape = {};
90
- for (const { name, opts } of fields) {
91
- shape[name] = zodTypeFor(opts, false);
92
- }
93
- return zod_1.z.object(shape);
94
- }
95
- static generateStrictZodSchema(modelClass) {
96
- const fields = resolveFields(modelClass);
97
- if (fields.length === 0)
98
- return zod_1.z.object({});
99
- const shape = {};
100
- for (const { name, opts } of fields) {
101
- shape[name] = zodTypeFor(opts, true);
102
- }
103
- return zod_1.z.object(shape);
104
- }
105
- }
106
- exports.ValidationGenerator = ValidationGenerator;
107
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}