crudora 0.2.0 → 0.3.0
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/cli.js +55 -65
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +1732 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +438 -0
- package/dist/index.d.ts +438 -15
- package/dist/index.js +1725 -27
- package/dist/index.js.map +1 -1
- package/dist/scripts/copy-assets.js +0 -21
- package/package.json +5 -4
- package/scripts/copy-assets.js +0 -21
- package/dist/core/crudora.d.ts +0 -49
- package/dist/core/crudora.d.ts.map +0 -1
- package/dist/core/crudora.js +0 -370
- package/dist/core/crudora.js.map +0 -1
- package/dist/core/crudoraServer.d.ts +0 -84
- package/dist/core/crudoraServer.d.ts.map +0 -1
- package/dist/core/crudoraServer.js +0 -202
- package/dist/core/crudoraServer.js.map +0 -1
- package/dist/core/drizzleTableBuilder.d.ts +0 -6
- package/dist/core/drizzleTableBuilder.d.ts.map +0 -1
- package/dist/core/drizzleTableBuilder.js +0 -175
- package/dist/core/drizzleTableBuilder.js.map +0 -1
- package/dist/core/model.d.ts +0 -58
- package/dist/core/model.d.ts.map +0 -1
- package/dist/core/model.js +0 -64
- package/dist/core/model.js.map +0 -1
- package/dist/core/repository.d.ts +0 -106
- package/dist/core/repository.d.ts.map +0 -1
- package/dist/core/repository.js +0 -607
- package/dist/core/repository.js.map +0 -1
- package/dist/core/schemaGenerator.d.ts +0 -6
- package/dist/core/schemaGenerator.d.ts.map +0 -1
- package/dist/core/schemaGenerator.js +0 -248
- package/dist/core/schemaGenerator.js.map +0 -1
- package/dist/decorators/model.d.ts +0 -64
- package/dist/decorators/model.d.ts.map +0 -1
- package/dist/decorators/model.js +0 -138
- package/dist/decorators/model.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types/logger.type.d.ts +0 -7
- package/dist/types/logger.type.d.ts.map +0 -1
- package/dist/types/logger.type.js +0 -3
- package/dist/types/logger.type.js.map +0 -1
- package/dist/types/model.type.d.ts +0 -38
- package/dist/types/model.type.d.ts.map +0 -1
- package/dist/types/model.type.js +0 -3
- package/dist/types/model.type.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -7
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -107
- package/dist/utils/validation.js.map +0 -1
package/dist/utils/validation.js
DELETED
|
@@ -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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"}
|