@zenstackhq/orm 3.0.0-beta.25 → 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 +78 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +635 -584
- package/dist/index.d.ts +635 -584
- package/dist/index.js +78 -16
- 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 {
|
|
@@ -3972,6 +3983,9 @@ var InputValidator = class {
|
|
|
3972
3983
|
get schema() {
|
|
3973
3984
|
return this.client.$schema;
|
|
3974
3985
|
}
|
|
3986
|
+
get options() {
|
|
3987
|
+
return this.client.$options;
|
|
3988
|
+
}
|
|
3975
3989
|
get extraValidationsEnabled() {
|
|
3976
3990
|
return this.client.$options.validateInput !== false;
|
|
3977
3991
|
}
|
|
@@ -4461,7 +4475,11 @@ var InputValidator = class {
|
|
|
4461
4475
|
for (const field of Object.keys(modelDef.fields)) {
|
|
4462
4476
|
const fieldDef = requireField(this.schema, model, field);
|
|
4463
4477
|
if (!fieldDef.relation) {
|
|
4464
|
-
|
|
4478
|
+
if (this.options.allowQueryTimeOmitOverride !== false) {
|
|
4479
|
+
fields[field] = z2.boolean().optional();
|
|
4480
|
+
} else {
|
|
4481
|
+
fields[field] = z2.literal(true).optional();
|
|
4482
|
+
}
|
|
4465
4483
|
}
|
|
4466
4484
|
}
|
|
4467
4485
|
return z2.strictObject(fields);
|
|
@@ -4874,7 +4892,8 @@ var InputValidator = class {
|
|
|
4874
4892
|
let schema = z2.strictObject({
|
|
4875
4893
|
where: this.makeWhereSchema(model, true),
|
|
4876
4894
|
select: this.makeSelectSchema(model).optional().nullable(),
|
|
4877
|
-
include: this.makeIncludeSchema(model).optional().nullable()
|
|
4895
|
+
include: this.makeIncludeSchema(model).optional().nullable(),
|
|
4896
|
+
omit: this.makeOmitSchema(model).optional().nullable()
|
|
4878
4897
|
});
|
|
4879
4898
|
schema = this.refineForSelectIncludeMutuallyExclusive(schema);
|
|
4880
4899
|
schema = this.refineForSelectOmitMutuallyExclusive(schema);
|
|
@@ -6796,6 +6815,9 @@ var ClientImpl = class _ClientImpl {
|
|
|
6796
6815
|
get $auth() {
|
|
6797
6816
|
return this.auth;
|
|
6798
6817
|
}
|
|
6818
|
+
$setOptions(options) {
|
|
6819
|
+
return new _ClientImpl(this.schema, options, this);
|
|
6820
|
+
}
|
|
6799
6821
|
$setInputValidation(enable) {
|
|
6800
6822
|
const newOptions = {
|
|
6801
6823
|
...this.options,
|
|
@@ -7275,7 +7297,8 @@ var DefaultOperationNodeVisitor = class extends OperationNodeVisitor {
|
|
|
7275
7297
|
// src/utils/schema-utils.ts
|
|
7276
7298
|
var schema_utils_exports = {};
|
|
7277
7299
|
__export(schema_utils_exports, {
|
|
7278
|
-
ExpressionVisitor: () => ExpressionVisitor
|
|
7300
|
+
ExpressionVisitor: () => ExpressionVisitor,
|
|
7301
|
+
MatchingExpressionVisitor: () => MatchingExpressionVisitor
|
|
7279
7302
|
});
|
|
7280
7303
|
import { match as match17 } from "ts-pattern";
|
|
7281
7304
|
var ExpressionVisitor = class {
|
|
@@ -7283,7 +7306,7 @@ var ExpressionVisitor = class {
|
|
|
7283
7306
|
__name(this, "ExpressionVisitor");
|
|
7284
7307
|
}
|
|
7285
7308
|
visit(expr) {
|
|
7286
|
-
match17(expr).with({
|
|
7309
|
+
return match17(expr).with({
|
|
7287
7310
|
kind: "literal"
|
|
7288
7311
|
}, (e) => this.visitLiteral(e)).with({
|
|
7289
7312
|
kind: "array"
|
|
@@ -7306,28 +7329,67 @@ var ExpressionVisitor = class {
|
|
|
7306
7329
|
visitLiteral(_e) {
|
|
7307
7330
|
}
|
|
7308
7331
|
visitArray(e) {
|
|
7309
|
-
|
|
7332
|
+
for (const item of e.items) {
|
|
7333
|
+
const result = this.visit(item);
|
|
7334
|
+
if (result?.abort) {
|
|
7335
|
+
return result;
|
|
7336
|
+
}
|
|
7337
|
+
}
|
|
7310
7338
|
}
|
|
7311
7339
|
visitField(_e) {
|
|
7312
7340
|
}
|
|
7313
7341
|
visitMember(e) {
|
|
7314
|
-
this.visit(e.receiver);
|
|
7342
|
+
return this.visit(e.receiver);
|
|
7315
7343
|
}
|
|
7316
7344
|
visitBinary(e) {
|
|
7317
|
-
this.visit(e.left);
|
|
7318
|
-
|
|
7345
|
+
const l = this.visit(e.left);
|
|
7346
|
+
if (l?.abort) {
|
|
7347
|
+
return l;
|
|
7348
|
+
} else {
|
|
7349
|
+
return this.visit(e.right);
|
|
7350
|
+
}
|
|
7319
7351
|
}
|
|
7320
7352
|
visitUnary(e) {
|
|
7321
|
-
this.visit(e.operand);
|
|
7353
|
+
return this.visit(e.operand);
|
|
7322
7354
|
}
|
|
7323
7355
|
visitCall(e) {
|
|
7324
|
-
e.args
|
|
7356
|
+
for (const arg of e.args ?? []) {
|
|
7357
|
+
const r = this.visit(arg);
|
|
7358
|
+
if (r?.abort) {
|
|
7359
|
+
return r;
|
|
7360
|
+
}
|
|
7361
|
+
}
|
|
7325
7362
|
}
|
|
7326
7363
|
visitThis(_e) {
|
|
7327
7364
|
}
|
|
7328
7365
|
visitNull(_e) {
|
|
7329
7366
|
}
|
|
7330
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
|
+
};
|
|
7331
7393
|
export {
|
|
7332
7394
|
BaseCrudDialect,
|
|
7333
7395
|
CRUD,
|