@zenstackhq/orm 3.0.0-beta.24 → 3.0.0-beta.26
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/index.cjs +82 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +638 -580
- package/dist/index.d.ts +638 -580
- package/dist/index.js +82 -21
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1098,7 +1098,7 @@ var BaseCrudDialect = class {
|
|
|
1098
1098
|
if (isRelationField(this.schema, model, field)) {
|
|
1099
1099
|
continue;
|
|
1100
1100
|
}
|
|
1101
|
-
if (omit
|
|
1101
|
+
if (this.shouldOmitField(omit, model, field)) {
|
|
1102
1102
|
continue;
|
|
1103
1103
|
}
|
|
1104
1104
|
result = this.buildSelectField(result, model, modelAlias, field);
|
|
@@ -1119,6 +1119,16 @@ var BaseCrudDialect = class {
|
|
|
1119
1119
|
}
|
|
1120
1120
|
return result;
|
|
1121
1121
|
}
|
|
1122
|
+
shouldOmitField(omit, model, field) {
|
|
1123
|
+
if (omit && typeof omit === "object" && typeof omit[field] === "boolean") {
|
|
1124
|
+
return omit[field];
|
|
1125
|
+
}
|
|
1126
|
+
if (this.options.omit?.[model] && typeof this.options.omit[model] === "object" && typeof this.options.omit[model][field] === "boolean") {
|
|
1127
|
+
return this.options.omit[model][field];
|
|
1128
|
+
}
|
|
1129
|
+
const fieldDef = requireField(this.schema, model, field);
|
|
1130
|
+
return !!fieldDef.omit;
|
|
1131
|
+
}
|
|
1122
1132
|
buildModelSelect(model, subQueryAlias, payload, selectAllFields) {
|
|
1123
1133
|
let subQuery = this.buildSelectModel(model, subQueryAlias);
|
|
1124
1134
|
if (selectAllFields) {
|
|
@@ -1382,7 +1392,8 @@ var PostgresCrudDialect = class extends BaseCrudDialect {
|
|
|
1382
1392
|
]).flatMap((v) => v));
|
|
1383
1393
|
}
|
|
1384
1394
|
if (payload === true || !payload.select) {
|
|
1385
|
-
|
|
1395
|
+
const omit = typeof payload === "object" ? payload.omit : void 0;
|
|
1396
|
+
objArgs.push(...Object.entries(relationModelDef.fields).filter(([, value]) => !value.relation).filter(([name]) => !this.shouldOmitField(omit, relationModel, name)).map(([field]) => [
|
|
1386
1397
|
sql2.lit(field),
|
|
1387
1398
|
this.fieldRef(relationModel, field, relationModelAlias, false)
|
|
1388
1399
|
]).flatMap((v) => v));
|
|
@@ -1593,7 +1604,8 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
|
|
|
1593
1604
|
]).flatMap((v) => v));
|
|
1594
1605
|
}
|
|
1595
1606
|
if (payload === true || !payload.select) {
|
|
1596
|
-
|
|
1607
|
+
const omit = typeof payload === "object" ? payload.omit : void 0;
|
|
1608
|
+
objArgs.push(...Object.entries(relationModelDef.fields).filter(([, value]) => !value.relation).filter(([name]) => !this.shouldOmitField(omit, relationModel, name)).map(([field]) => [
|
|
1597
1609
|
sql3.lit(field),
|
|
1598
1610
|
this.fieldRef(relationModel, field, subQueryName, false)
|
|
1599
1611
|
]).flatMap((v) => v));
|
|
@@ -3069,12 +3081,11 @@ var BaseOperationHandler = class {
|
|
|
3069
3081
|
const allFields = Object.keys(modelDef.fields);
|
|
3070
3082
|
const relationFields = Object.values(modelDef.fields).filter((f) => f.relation).map((f) => f.name);
|
|
3071
3083
|
const computedFields = Object.values(modelDef.fields).filter((f) => f.computed).map((f) => f.name);
|
|
3072
|
-
const omit = Object.entries(args.omit ?? {}).filter(([, v]) => v).map(([k]) => k);
|
|
3073
3084
|
const allFieldsSelected = [];
|
|
3074
3085
|
if (!args.select || typeof args.select !== "object") {
|
|
3075
|
-
allFieldsSelected.push(...allFields.filter((f) => !relationFields.includes(f) && !
|
|
3086
|
+
allFieldsSelected.push(...allFields.filter((f) => !relationFields.includes(f) && !this.dialect.shouldOmitField(args.omit, model, f)));
|
|
3076
3087
|
} else {
|
|
3077
|
-
allFieldsSelected.push(...Object.entries(args.select).filter(([k, v]) => v && !
|
|
3088
|
+
allFieldsSelected.push(...Object.entries(args.select).filter(([k, v]) => v && !this.dialect.shouldOmitField(args.omit, model, k)).map(([k]) => k));
|
|
3078
3089
|
}
|
|
3079
3090
|
if (allFieldsSelected.some((f) => relationFields.includes(f) || computedFields.includes(f))) {
|
|
3080
3091
|
return {
|
|
@@ -3697,15 +3708,14 @@ function addBigIntValidation(schema, attributes) {
|
|
|
3697
3708
|
if (val === void 0) {
|
|
3698
3709
|
continue;
|
|
3699
3710
|
}
|
|
3700
|
-
const bigIntVal = BigInt(val);
|
|
3701
3711
|
match12(attr.name).with("@gt", () => {
|
|
3702
|
-
result = result.gt(
|
|
3712
|
+
result = result.gt(BigInt(val));
|
|
3703
3713
|
}).with("@gte", () => {
|
|
3704
|
-
result = result.gte(
|
|
3714
|
+
result = result.gte(BigInt(val));
|
|
3705
3715
|
}).with("@lt", () => {
|
|
3706
|
-
result = result.lt(
|
|
3716
|
+
result = result.lt(BigInt(val));
|
|
3707
3717
|
}).with("@lte", () => {
|
|
3708
|
-
result = result.lte(
|
|
3718
|
+
result = result.lte(BigInt(val));
|
|
3709
3719
|
});
|
|
3710
3720
|
}
|
|
3711
3721
|
return result;
|
|
@@ -3973,6 +3983,9 @@ var InputValidator = class {
|
|
|
3973
3983
|
get schema() {
|
|
3974
3984
|
return this.client.$schema;
|
|
3975
3985
|
}
|
|
3986
|
+
get options() {
|
|
3987
|
+
return this.client.$options;
|
|
3988
|
+
}
|
|
3976
3989
|
get extraValidationsEnabled() {
|
|
3977
3990
|
return this.client.$options.validateInput !== false;
|
|
3978
3991
|
}
|
|
@@ -4462,7 +4475,11 @@ var InputValidator = class {
|
|
|
4462
4475
|
for (const field of Object.keys(modelDef.fields)) {
|
|
4463
4476
|
const fieldDef = requireField(this.schema, model, field);
|
|
4464
4477
|
if (!fieldDef.relation) {
|
|
4465
|
-
|
|
4478
|
+
if (this.options.allowQueryTimeOmitOverride !== false) {
|
|
4479
|
+
fields[field] = z2.boolean().optional();
|
|
4480
|
+
} else {
|
|
4481
|
+
fields[field] = z2.literal(true).optional();
|
|
4482
|
+
}
|
|
4466
4483
|
}
|
|
4467
4484
|
}
|
|
4468
4485
|
return z2.strictObject(fields);
|
|
@@ -4875,7 +4892,8 @@ var InputValidator = class {
|
|
|
4875
4892
|
let schema = z2.strictObject({
|
|
4876
4893
|
where: this.makeWhereSchema(model, true),
|
|
4877
4894
|
select: this.makeSelectSchema(model).optional().nullable(),
|
|
4878
|
-
include: this.makeIncludeSchema(model).optional().nullable()
|
|
4895
|
+
include: this.makeIncludeSchema(model).optional().nullable(),
|
|
4896
|
+
omit: this.makeOmitSchema(model).optional().nullable()
|
|
4879
4897
|
});
|
|
4880
4898
|
schema = this.refineForSelectIncludeMutuallyExclusive(schema);
|
|
4881
4899
|
schema = this.refineForSelectOmitMutuallyExclusive(schema);
|
|
@@ -6797,6 +6815,9 @@ var ClientImpl = class _ClientImpl {
|
|
|
6797
6815
|
get $auth() {
|
|
6798
6816
|
return this.auth;
|
|
6799
6817
|
}
|
|
6818
|
+
$setOptions(options) {
|
|
6819
|
+
return new _ClientImpl(this.schema, options, this);
|
|
6820
|
+
}
|
|
6800
6821
|
$setInputValidation(enable) {
|
|
6801
6822
|
const newOptions = {
|
|
6802
6823
|
...this.options,
|
|
@@ -7276,7 +7297,8 @@ var DefaultOperationNodeVisitor = class extends OperationNodeVisitor {
|
|
|
7276
7297
|
// src/utils/schema-utils.ts
|
|
7277
7298
|
var schema_utils_exports = {};
|
|
7278
7299
|
__export(schema_utils_exports, {
|
|
7279
|
-
ExpressionVisitor: () => ExpressionVisitor
|
|
7300
|
+
ExpressionVisitor: () => ExpressionVisitor,
|
|
7301
|
+
MatchingExpressionVisitor: () => MatchingExpressionVisitor
|
|
7280
7302
|
});
|
|
7281
7303
|
import { match as match17 } from "ts-pattern";
|
|
7282
7304
|
var ExpressionVisitor = class {
|
|
@@ -7284,7 +7306,7 @@ var ExpressionVisitor = class {
|
|
|
7284
7306
|
__name(this, "ExpressionVisitor");
|
|
7285
7307
|
}
|
|
7286
7308
|
visit(expr) {
|
|
7287
|
-
match17(expr).with({
|
|
7309
|
+
return match17(expr).with({
|
|
7288
7310
|
kind: "literal"
|
|
7289
7311
|
}, (e) => this.visitLiteral(e)).with({
|
|
7290
7312
|
kind: "array"
|
|
@@ -7307,28 +7329,67 @@ var ExpressionVisitor = class {
|
|
|
7307
7329
|
visitLiteral(_e) {
|
|
7308
7330
|
}
|
|
7309
7331
|
visitArray(e) {
|
|
7310
|
-
|
|
7332
|
+
for (const item of e.items) {
|
|
7333
|
+
const result = this.visit(item);
|
|
7334
|
+
if (result?.abort) {
|
|
7335
|
+
return result;
|
|
7336
|
+
}
|
|
7337
|
+
}
|
|
7311
7338
|
}
|
|
7312
7339
|
visitField(_e) {
|
|
7313
7340
|
}
|
|
7314
7341
|
visitMember(e) {
|
|
7315
|
-
this.visit(e.receiver);
|
|
7342
|
+
return this.visit(e.receiver);
|
|
7316
7343
|
}
|
|
7317
7344
|
visitBinary(e) {
|
|
7318
|
-
this.visit(e.left);
|
|
7319
|
-
|
|
7345
|
+
const l = this.visit(e.left);
|
|
7346
|
+
if (l?.abort) {
|
|
7347
|
+
return l;
|
|
7348
|
+
} else {
|
|
7349
|
+
return this.visit(e.right);
|
|
7350
|
+
}
|
|
7320
7351
|
}
|
|
7321
7352
|
visitUnary(e) {
|
|
7322
|
-
this.visit(e.operand);
|
|
7353
|
+
return this.visit(e.operand);
|
|
7323
7354
|
}
|
|
7324
7355
|
visitCall(e) {
|
|
7325
|
-
e.args
|
|
7356
|
+
for (const arg of e.args ?? []) {
|
|
7357
|
+
const r = this.visit(arg);
|
|
7358
|
+
if (r?.abort) {
|
|
7359
|
+
return r;
|
|
7360
|
+
}
|
|
7361
|
+
}
|
|
7326
7362
|
}
|
|
7327
7363
|
visitThis(_e) {
|
|
7328
7364
|
}
|
|
7329
7365
|
visitNull(_e) {
|
|
7330
7366
|
}
|
|
7331
7367
|
};
|
|
7368
|
+
var MatchingExpressionVisitor = class extends ExpressionVisitor {
|
|
7369
|
+
static {
|
|
7370
|
+
__name(this, "MatchingExpressionVisitor");
|
|
7371
|
+
}
|
|
7372
|
+
predicate;
|
|
7373
|
+
found = false;
|
|
7374
|
+
constructor(predicate) {
|
|
7375
|
+
super(), this.predicate = predicate;
|
|
7376
|
+
}
|
|
7377
|
+
find(expr) {
|
|
7378
|
+
this.found = false;
|
|
7379
|
+
this.visit(expr);
|
|
7380
|
+
return this.found;
|
|
7381
|
+
}
|
|
7382
|
+
visit(expr) {
|
|
7383
|
+
if (this.predicate(expr)) {
|
|
7384
|
+
this.found = true;
|
|
7385
|
+
return {
|
|
7386
|
+
abort: true
|
|
7387
|
+
};
|
|
7388
|
+
} else {
|
|
7389
|
+
return super.visit(expr);
|
|
7390
|
+
}
|
|
7391
|
+
}
|
|
7392
|
+
};
|
|
7332
7393
|
export {
|
|
7333
7394
|
BaseCrudDialect,
|
|
7334
7395
|
CRUD,
|