@zenstackhq/orm 3.4.0-beta.3 → 3.4.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/index.cjs CHANGED
@@ -58,6 +58,7 @@ __export(src_exports, {
58
58
  SchemaUtils: () => schema_utils_exports,
59
59
  TransactionIsolationLevel: () => TransactionIsolationLevel,
60
60
  ZenStackClient: () => ZenStackClient,
61
+ createQuerySchemaFactory: () => createQuerySchemaFactory,
61
62
  definePlugin: () => definePlugin,
62
63
  getCrudDialect: () => getCrudDialect
63
64
  });
@@ -65,7 +66,7 @@ module.exports = __toCommonJS(src_exports);
65
66
 
66
67
  // src/client/client-impl.ts
67
68
  var import_common_helpers14 = require("@zenstackhq/common-helpers");
68
- var import_kysely11 = require("kysely");
69
+ var import_kysely12 = require("kysely");
69
70
 
70
71
  // src/client/crud/operations/aggregate.ts
71
72
  var import_ts_pattern8 = require("ts-pattern");
@@ -73,6 +74,7 @@ var import_ts_pattern8 = require("ts-pattern");
73
74
  // src/client/query-utils.ts
74
75
  var query_utils_exports = {};
75
76
  __export(query_utils_exports, {
77
+ TEMP_ALIAS_PREFIX: () => TEMP_ALIAS_PREFIX,
76
78
  aggregate: () => aggregate,
77
79
  buildJoinPairs: () => buildJoinPairs,
78
80
  ensureArray: () => ensureArray,
@@ -105,7 +107,8 @@ __export(query_utils_exports, {
105
107
  requireIdFields: () => requireIdFields,
106
108
  requireModel: () => requireModel,
107
109
  requireTypeDef: () => requireTypeDef,
108
- stripAlias: () => stripAlias
110
+ stripAlias: () => stripAlias,
111
+ tmpAlias: () => tmpAlias
109
112
  });
110
113
  var import_common_helpers = require("@zenstackhq/common-helpers");
111
114
  var import_kysely = require("kysely");
@@ -620,6 +623,15 @@ function extractFieldName(node) {
620
623
  }
621
624
  }
622
625
  __name(extractFieldName, "extractFieldName");
626
+ var TEMP_ALIAS_PREFIX = "$$_";
627
+ function tmpAlias(name) {
628
+ if (!name.startsWith(TEMP_ALIAS_PREFIX)) {
629
+ return `${TEMP_ALIAS_PREFIX}${name}`;
630
+ } else {
631
+ return name;
632
+ }
633
+ }
634
+ __name(tmpAlias, "tmpAlias");
623
635
 
624
636
  // src/client/crud/operations/base.ts
625
637
  var import_cuid2 = require("@paralleldrive/cuid2");
@@ -896,7 +908,7 @@ var BaseCrudDialect = class {
896
908
  });
897
909
  }
898
910
  }
899
- const joinAlias = `${modelAlias}$${field}`;
911
+ const joinAlias = tmpAlias(`${modelAlias}$${field}`);
900
912
  const joinPairs = buildJoinPairs(
901
913
  this.schema,
902
914
  model,
@@ -905,7 +917,7 @@ var BaseCrudDialect = class {
905
917
  field,
906
918
  joinAlias
907
919
  );
908
- const filterResultField = `${field}$filter`;
920
+ const filterResultField = tmpAlias(`${field}$flt`);
909
921
  const joinSelect = this.eb.selectFrom(`${fieldDef.type} as ${joinAlias}`).where(() => this.and(...joinPairs.map(([left, right]) => this.eb(this.eb.ref(left), "=", this.eb.ref(right))))).select(() => this.eb.fn.count(this.eb.lit(1)).as(filterResultField));
910
922
  const conditions = [];
911
923
  if ("is" in payload || "isNot" in payload) {
@@ -938,7 +950,7 @@ var BaseCrudDialect = class {
938
950
  return this.eb(this.eb.ref(`${modelAlias}.${field}`), "is", null);
939
951
  }
940
952
  const relationModel = fieldDef.type;
941
- const relationFilterSelectAlias = `${modelAlias}$${field}$filter`;
953
+ const relationFilterSelectAlias = tmpAlias(`${modelAlias}$${field}$flt`);
942
954
  const buildPkFkWhereRefs = /* @__PURE__ */ __name((eb) => {
943
955
  const m2m = getManyToManyRelation(this.schema, model, field);
944
956
  if (m2m) {
@@ -1402,7 +1414,7 @@ var BaseCrudDialect = class {
1402
1414
  (0, import_common_helpers2.invariant)(value._count === "asc" || value._count === "desc", 'invalid orderBy value for field "_count"');
1403
1415
  const sort = this.negateSort(value._count, negated);
1404
1416
  result = result.orderBy((eb) => {
1405
- const subQueryAlias = `${modelAlias}$orderBy$${field}$count`;
1417
+ const subQueryAlias = tmpAlias(`${modelAlias}$ob$${field}$ct`);
1406
1418
  let subQuery = this.buildSelectModel(relationModel, subQueryAlias);
1407
1419
  const joinPairs = buildJoinPairs(this.schema, model, modelAlias, field, subQueryAlias);
1408
1420
  subQuery = subQuery.where(() => this.and(...joinPairs.map(([left, right]) => eb(this.eb.ref(left), "=", this.eb.ref(right)))));
@@ -1411,7 +1423,7 @@ var BaseCrudDialect = class {
1411
1423
  }, sort);
1412
1424
  }
1413
1425
  } else {
1414
- const joinAlias = `${modelAlias}$orderBy$${index}`;
1426
+ const joinAlias = tmpAlias(`${modelAlias}$ob$${index}`);
1415
1427
  result = result.leftJoin(`${relationModel} as ${joinAlias}`, (join) => {
1416
1428
  const joinPairs = buildJoinPairs(this.schema, model, modelAlias, field, joinAlias);
1417
1429
  return join.on((eb) => this.and(...joinPairs.map(([left, right]) => eb(this.eb.ref(left), "=", this.eb.ref(right)))));
@@ -1604,7 +1616,7 @@ var LateralJoinDialectBase = class extends BaseCrudDialect {
1604
1616
  __name(this, "LateralJoinDialectBase");
1605
1617
  }
1606
1618
  buildRelationSelection(query, model, relationField, parentAlias, payload) {
1607
- const relationResultName = `${parentAlias}$${relationField}`;
1619
+ const relationResultName = tmpAlias(`${parentAlias}$${relationField}`);
1608
1620
  const joinedQuery = this.buildRelationJSON(model, query, relationField, parentAlias, payload, relationResultName);
1609
1621
  return joinedQuery.select(`${relationResultName}.$data as ${relationField}`);
1610
1622
  }
@@ -1612,7 +1624,7 @@ var LateralJoinDialectBase = class extends BaseCrudDialect {
1612
1624
  const relationFieldDef = requireField(this.schema, model, relationField);
1613
1625
  const relationModel = relationFieldDef.type;
1614
1626
  return qb.leftJoinLateral((eb) => {
1615
- const relationSelectName = `${resultName}$sub`;
1627
+ const relationSelectName = tmpAlias(`${resultName}$sub`);
1616
1628
  const relationModelDef = requireModel(this.schema, relationModel);
1617
1629
  let tbl;
1618
1630
  if (this.canJoinWithoutNestedSelect(relationModelDef, payload)) {
@@ -1899,7 +1911,7 @@ var MySqlCrudDialect = class extends LateralJoinDialectBase {
1899
1911
  ]), "=", this.transformInput(value, "Json", false))).with("array_ends_with", () => this.eb(import_kysely3.sql`JSON_EXTRACT(${lhs}, CONCAT('$[', JSON_LENGTH(${lhs}) - 1, ']'))`, "=", this.transformInput(value, "Json", false))).exhaustive();
1900
1912
  }
1901
1913
  buildJsonArrayExistsPredicate(receiver, buildFilter) {
1902
- return this.eb.exists(this.eb.selectFrom(import_kysely3.sql`JSON_TABLE(${receiver}, '$[*]' COLUMNS(value JSON PATH '$'))`.as("$items")).select(this.eb.lit(1).as("$t")).where(buildFilter(this.eb.ref("$items.value"))));
1914
+ return this.eb.exists(this.eb.selectFrom(import_kysely3.sql`JSON_TABLE(${receiver}, '$[*]' COLUMNS(value JSON PATH '$'))`.as("$items")).select(this.eb.lit(1).as("_")).where(buildFilter(this.eb.ref("$items.value"))));
1903
1915
  }
1904
1916
  getStringCasingBehavior() {
1905
1917
  return {
@@ -2156,7 +2168,7 @@ var PostgresCrudDialect = class _PostgresCrudDialect extends LateralJoinDialectB
2156
2168
  buildJsonArrayExistsPredicate(receiver, buildFilter) {
2157
2169
  return this.eb.exists(this.eb.selectFrom(this.eb.fn("jsonb_array_elements", [
2158
2170
  receiver
2159
- ]).as("$items")).select(this.eb.lit(1).as("$t")).where(buildFilter(this.eb.ref("$items.value"))));
2171
+ ]).as("$items")).select(this.eb.lit(1).as("_")).where(buildFilter(this.eb.ref("$items.value"))));
2160
2172
  }
2161
2173
  getSqlType(zmodelType) {
2162
2174
  if (isEnum(this.schema, zmodelType)) {
@@ -2315,14 +2327,14 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2315
2327
  const relationFieldDef = requireField(this.schema, model, relationField);
2316
2328
  const relationModel = relationFieldDef.type;
2317
2329
  const relationModelDef = requireModel(this.schema, relationModel);
2318
- const subQueryName = `${parentAlias}$${relationField}`;
2330
+ const subQueryName = tmpAlias(`${parentAlias}$${relationField}`);
2319
2331
  let tbl;
2320
2332
  if (this.canJoinWithoutNestedSelect(relationModelDef, payload)) {
2321
2333
  tbl = this.buildModelSelect(relationModel, subQueryName, payload, false);
2322
2334
  tbl = this.buildRelationJoinFilter(tbl, model, relationField, subQueryName, parentAlias);
2323
2335
  } else {
2324
2336
  tbl = eb.selectFrom(() => {
2325
- const selectModelAlias = `${parentAlias}$${relationField}$sub`;
2337
+ const selectModelAlias = tmpAlias(`${parentAlias}$${relationField}$sub`);
2326
2338
  let selectModelQuery = this.buildModelSelect(relationModel, selectModelAlias, payload, true);
2327
2339
  selectModelQuery = this.buildRelationJoinFilter(selectModelQuery, model, relationField, selectModelAlias, parentAlias);
2328
2340
  return selectModelQuery.as(subQueryName);
@@ -2346,7 +2358,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2346
2358
  } else if (payload.select) {
2347
2359
  objArgs.push(...Object.entries(payload.select).filter(([, value]) => value).map(([field, value]) => {
2348
2360
  if (field === "_count") {
2349
- const subJson = this.buildCountJson(relationModel, eb, `${parentAlias}$${relationField}`, value);
2361
+ const subJson = this.buildCountJson(relationModel, eb, tmpAlias(`${parentAlias}$${relationField}`), value);
2350
2362
  return [
2351
2363
  import_kysely5.sql.lit(field),
2352
2364
  subJson
@@ -2354,7 +2366,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2354
2366
  } else {
2355
2367
  const fieldDef = requireField(this.schema, relationModel, field);
2356
2368
  if (fieldDef.relation) {
2357
- const subJson = this.buildRelationJSON(relationModel, eb, field, `${parentAlias}$${relationField}`, value);
2369
+ const subJson = this.buildRelationJSON(relationModel, eb, field, tmpAlias(`${parentAlias}$${relationField}`), value);
2358
2370
  return [
2359
2371
  import_kysely5.sql.lit(field),
2360
2372
  subJson
@@ -2370,7 +2382,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2370
2382
  }
2371
2383
  if (typeof payload === "object" && payload.include && typeof payload.include === "object") {
2372
2384
  objArgs.push(...Object.entries(payload.include).filter(([, value]) => value).map(([field, value]) => {
2373
- const subJson = this.buildRelationJSON(relationModel, eb, field, `${parentAlias}$${relationField}`, value);
2385
+ const subJson = this.buildRelationJSON(relationModel, eb, field, tmpAlias(`${parentAlias}$${relationField}`), value);
2374
2386
  return [
2375
2387
  import_kysely5.sql.lit(field),
2376
2388
  subJson
@@ -2447,7 +2459,7 @@ var SqliteCrudDialect = class extends BaseCrudDialect {
2447
2459
  buildJsonArrayExistsPredicate(receiver, buildFilter) {
2448
2460
  return this.eb.exists(this.eb.selectFrom(this.eb.fn("json_each", [
2449
2461
  receiver
2450
- ]).as("$items")).select(this.eb.lit(1).as("$t")).where(buildFilter(this.eb.ref("$items.value"))));
2462
+ ]).as("$items")).select(this.eb.lit(1).as("_")).where(buildFilter(this.eb.ref("$items.value"))));
2451
2463
  }
2452
2464
  buildArrayLength(array) {
2453
2465
  return this.eb.fn("json_array_length", [
@@ -2629,7 +2641,7 @@ var BaseOperationHandler = class {
2629
2641
  });
2630
2642
  }
2631
2643
  async existsNonUnique(kysely, model, filter) {
2632
- const query = kysely.selectNoFrom((eb) => eb.exists(this.dialect.buildSelectModel(model, model).select(import_kysely6.sql.lit(1).as("$t")).where(() => this.dialect.buildFilter(model, model, filter))).as("exists")).modifyEnd(this.makeContextComment({
2644
+ const query = kysely.selectNoFrom((eb) => eb.exists(this.dialect.buildSelectModel(model, model).select(import_kysely6.sql.lit(1).as("_")).where(() => this.dialect.buildFilter(model, model, filter))).as("$exists")).modifyEnd(this.makeContextComment({
2633
2645
  model,
2634
2646
  operation: "read"
2635
2647
  }));
@@ -2641,7 +2653,7 @@ var BaseOperationHandler = class {
2641
2653
  } catch (err) {
2642
2654
  throw createDBQueryError(`Failed to execute query: ${err}`, err, compiled.sql, compiled.parameters);
2643
2655
  }
2644
- return !!result[0]?.exists;
2656
+ return !!result[0]?.$exists;
2645
2657
  }
2646
2658
  async read(kysely, model, args) {
2647
2659
  let query = this.dialect.buildSelectModel(model, model);
@@ -3238,7 +3250,7 @@ var BaseOperationHandler = class {
3238
3250
  if (modelDef.baseModel) {
3239
3251
  const baseUpdateResult = await this.processBaseModelUpdate(kysely, modelDef.baseModel, combinedWhere, finalData, throwIfNotFound);
3240
3252
  finalData = baseUpdateResult.remainingFields;
3241
- combinedWhere = baseUpdateResult.baseEntity;
3253
+ combinedWhere = baseUpdateResult.baseEntity ? getIdValues(this.schema, modelDef.baseModel, baseUpdateResult.baseEntity) : baseUpdateResult.baseEntity;
3242
3254
  if (baseUpdateResult.baseEntity) {
3243
3255
  for (const [key, value] of Object.entries(baseUpdateResult.baseEntity)) {
3244
3256
  if (key in thisEntity) {
@@ -4635,11 +4647,9 @@ var UpdateOperationHandler = class extends BaseOperationHandler {
4635
4647
  }
4636
4648
  };
4637
4649
 
4638
- // src/client/crud/validator/index.ts
4650
+ // src/client/crud/validator/validator.ts
4639
4651
  var import_common_helpers9 = require("@zenstackhq/common-helpers");
4640
- var import_decimal5 = __toESM(require("decimal.js"), 1);
4641
4652
  var import_ts_pattern14 = require("ts-pattern");
4642
- var import_zod2 = require("zod");
4643
4653
 
4644
4654
  // src/utils/zod-utils.ts
4645
4655
  var import_v4 = require("zod-validation-error/v4");
@@ -4648,7 +4658,14 @@ function formatError(error) {
4648
4658
  }
4649
4659
  __name(formatError, "formatError");
4650
4660
 
4651
- // src/client/crud/validator/cache-decorator.ts
4661
+ // src/client/zod/factory.ts
4662
+ var import_common_helpers8 = require("@zenstackhq/common-helpers");
4663
+ var import_zod = require("@zenstackhq/zod");
4664
+ var import_decimal4 = __toESM(require("decimal.js"), 1);
4665
+ var import_ts_pattern13 = require("ts-pattern");
4666
+ var import_zod2 = require("zod");
4667
+
4668
+ // src/client/zod/cache-decorator.ts
4652
4669
  var import_json_stable_stringify = __toESM(require("json-stable-stringify"), 1);
4653
4670
  function cache() {
4654
4671
  return function(_target, propertyKey, descriptor) {
@@ -4680,371 +4697,7 @@ function cache() {
4680
4697
  }
4681
4698
  __name(cache, "cache");
4682
4699
 
4683
- // src/client/crud/validator/utils.ts
4684
- var import_common_helpers8 = require("@zenstackhq/common-helpers");
4685
- var import_decimal4 = __toESM(require("decimal.js"), 1);
4686
- var import_ts_pattern13 = require("ts-pattern");
4687
- var import_zod = require("zod");
4688
- var import_v3 = require("zod/v3");
4689
- function getArgValue(expr) {
4690
- if (!expr || !schema_exports.ExpressionUtils.isLiteral(expr)) {
4691
- return void 0;
4692
- }
4693
- return expr.value;
4694
- }
4695
- __name(getArgValue, "getArgValue");
4696
- function addStringValidation(schema, attributes) {
4697
- if (!attributes || attributes.length === 0) {
4698
- return schema;
4699
- }
4700
- let result = schema;
4701
- for (const attr of attributes) {
4702
- (0, import_ts_pattern13.match)(attr.name).with("@length", () => {
4703
- const min = getArgValue(attr.args?.[0]?.value);
4704
- if (min !== void 0) {
4705
- result = result.min(min);
4706
- }
4707
- const max = getArgValue(attr.args?.[1]?.value);
4708
- if (max !== void 0) {
4709
- result = result.max(max);
4710
- }
4711
- }).with("@startsWith", () => {
4712
- const value = getArgValue(attr.args?.[0]?.value);
4713
- if (value !== void 0) {
4714
- result = result.startsWith(value);
4715
- }
4716
- }).with("@endsWith", () => {
4717
- const value = getArgValue(attr.args?.[0]?.value);
4718
- if (value !== void 0) {
4719
- result = result.endsWith(value);
4720
- }
4721
- }).with("@contains", () => {
4722
- const value = getArgValue(attr.args?.[0]?.value);
4723
- if (value !== void 0) {
4724
- result = result.includes(value);
4725
- }
4726
- }).with("@regex", () => {
4727
- const pattern = getArgValue(attr.args?.[0]?.value);
4728
- if (pattern !== void 0) {
4729
- result = result.regex(new RegExp(pattern));
4730
- }
4731
- }).with("@email", () => {
4732
- result = result.email();
4733
- }).with("@datetime", () => {
4734
- result = result.datetime();
4735
- }).with("@url", () => {
4736
- result = result.url();
4737
- }).with("@trim", () => {
4738
- result = result.trim();
4739
- }).with("@lower", () => {
4740
- result = result.toLowerCase();
4741
- }).with("@upper", () => {
4742
- result = result.toUpperCase();
4743
- });
4744
- }
4745
- return result;
4746
- }
4747
- __name(addStringValidation, "addStringValidation");
4748
- function addNumberValidation(schema, attributes) {
4749
- if (!attributes || attributes.length === 0) {
4750
- return schema;
4751
- }
4752
- let result = schema;
4753
- for (const attr of attributes) {
4754
- const val = getArgValue(attr.args?.[0]?.value);
4755
- if (val === void 0) {
4756
- continue;
4757
- }
4758
- (0, import_ts_pattern13.match)(attr.name).with("@gt", () => {
4759
- result = result.gt(val);
4760
- }).with("@gte", () => {
4761
- result = result.gte(val);
4762
- }).with("@lt", () => {
4763
- result = result.lt(val);
4764
- }).with("@lte", () => {
4765
- result = result.lte(val);
4766
- });
4767
- }
4768
- return result;
4769
- }
4770
- __name(addNumberValidation, "addNumberValidation");
4771
- function addBigIntValidation(schema, attributes) {
4772
- if (!attributes || attributes.length === 0) {
4773
- return schema;
4774
- }
4775
- let result = schema;
4776
- for (const attr of attributes) {
4777
- const val = getArgValue(attr.args?.[0]?.value);
4778
- if (val === void 0) {
4779
- continue;
4780
- }
4781
- (0, import_ts_pattern13.match)(attr.name).with("@gt", () => {
4782
- result = result.gt(BigInt(val));
4783
- }).with("@gte", () => {
4784
- result = result.gte(BigInt(val));
4785
- }).with("@lt", () => {
4786
- result = result.lt(BigInt(val));
4787
- }).with("@lte", () => {
4788
- result = result.lte(BigInt(val));
4789
- });
4790
- }
4791
- return result;
4792
- }
4793
- __name(addBigIntValidation, "addBigIntValidation");
4794
- function addDecimalValidation(schema, attributes, addExtraValidation) {
4795
- let result = schema;
4796
- if (schema instanceof import_zod.z.ZodString) {
4797
- result = schema.superRefine((v, ctx) => {
4798
- try {
4799
- new import_decimal4.default(v);
4800
- } catch (err) {
4801
- ctx.addIssue({
4802
- code: import_zod.z.ZodIssueCode.custom,
4803
- message: `Invalid decimal: ${err}`
4804
- });
4805
- }
4806
- }).transform((val) => new import_decimal4.default(val));
4807
- }
4808
- function refine(schema2, op, value) {
4809
- return schema2.superRefine((v, ctx) => {
4810
- const base = import_zod.z.number();
4811
- const { error } = base[op](value).safeParse(v.toNumber());
4812
- error?.issues.forEach((issue) => {
4813
- if (op === "gt" || op === "gte") {
4814
- ctx.addIssue({
4815
- code: import_v3.ZodIssueCode.too_small,
4816
- origin: "number",
4817
- minimum: value,
4818
- type: "decimal",
4819
- inclusive: op === "gte",
4820
- message: issue.message
4821
- });
4822
- } else {
4823
- ctx.addIssue({
4824
- code: import_v3.ZodIssueCode.too_big,
4825
- origin: "number",
4826
- maximum: value,
4827
- type: "decimal",
4828
- inclusive: op === "lte",
4829
- message: issue.message
4830
- });
4831
- }
4832
- });
4833
- });
4834
- }
4835
- __name(refine, "refine");
4836
- if (attributes && addExtraValidation) {
4837
- for (const attr of attributes) {
4838
- const val = getArgValue(attr.args?.[0]?.value);
4839
- if (val === void 0) {
4840
- continue;
4841
- }
4842
- (0, import_ts_pattern13.match)(attr.name).with("@gt", () => {
4843
- result = refine(result, "gt", val);
4844
- }).with("@gte", () => {
4845
- result = refine(result, "gte", val);
4846
- }).with("@lt", () => {
4847
- result = refine(result, "lt", val);
4848
- }).with("@lte", () => {
4849
- result = refine(result, "lte", val);
4850
- });
4851
- }
4852
- }
4853
- return result;
4854
- }
4855
- __name(addDecimalValidation, "addDecimalValidation");
4856
- function addListValidation(schema, attributes) {
4857
- if (!attributes || attributes.length === 0) {
4858
- return schema;
4859
- }
4860
- let result = schema;
4861
- for (const attr of attributes) {
4862
- (0, import_ts_pattern13.match)(attr.name).with("@length", () => {
4863
- const min = getArgValue(attr.args?.[0]?.value);
4864
- if (min !== void 0) {
4865
- result = result.min(min);
4866
- }
4867
- const max = getArgValue(attr.args?.[1]?.value);
4868
- if (max !== void 0) {
4869
- result = result.max(max);
4870
- }
4871
- }).otherwise(() => {
4872
- });
4873
- }
4874
- return result;
4875
- }
4876
- __name(addListValidation, "addListValidation");
4877
- function addCustomValidation(schema, attributes) {
4878
- const attrs = attributes?.filter((a) => a.name === "@@validate");
4879
- if (!attrs || attrs.length === 0) {
4880
- return schema;
4881
- }
4882
- let result = schema;
4883
- for (const attr of attrs) {
4884
- const expr = attr.args?.[0]?.value;
4885
- if (!expr) {
4886
- continue;
4887
- }
4888
- const message = getArgValue(attr.args?.[1]?.value);
4889
- const pathExpr = attr.args?.[2]?.value;
4890
- let path = void 0;
4891
- if (pathExpr && schema_exports.ExpressionUtils.isArray(pathExpr)) {
4892
- path = pathExpr.items.map((e) => schema_exports.ExpressionUtils.getLiteralValue(e));
4893
- }
4894
- result = applyValidation(result, expr, message, path);
4895
- }
4896
- return result;
4897
- }
4898
- __name(addCustomValidation, "addCustomValidation");
4899
- function applyValidation(schema, expr, message, path) {
4900
- const options = {};
4901
- if (message) {
4902
- options.error = message;
4903
- }
4904
- if (path) {
4905
- options.path = path;
4906
- }
4907
- return schema.refine((data) => Boolean(evalExpression(data, expr)), options);
4908
- }
4909
- __name(applyValidation, "applyValidation");
4910
- function evalExpression(data, expr) {
4911
- return (0, import_ts_pattern13.match)(expr).with({
4912
- kind: "literal"
4913
- }, (e) => e.value).with({
4914
- kind: "array"
4915
- }, (e) => e.items.map((item) => evalExpression(data, item))).with({
4916
- kind: "field"
4917
- }, (e) => evalField(data, e)).with({
4918
- kind: "member"
4919
- }, (e) => evalMember(data, e)).with({
4920
- kind: "unary"
4921
- }, (e) => evalUnary(data, e)).with({
4922
- kind: "binary"
4923
- }, (e) => evalBinary(data, e)).with({
4924
- kind: "call"
4925
- }, (e) => evalCall(data, e)).with({
4926
- kind: "this"
4927
- }, () => data ?? null).with({
4928
- kind: "null"
4929
- }, () => null).with({
4930
- kind: "binding"
4931
- }, () => {
4932
- throw new Error("Binding expression is not supported in validation expressions");
4933
- }).exhaustive();
4934
- }
4935
- __name(evalExpression, "evalExpression");
4936
- function evalField(data, e) {
4937
- return data?.[e.field] ?? null;
4938
- }
4939
- __name(evalField, "evalField");
4940
- function evalUnary(data, expr) {
4941
- const operand = evalExpression(data, expr.operand);
4942
- switch (expr.op) {
4943
- case "!":
4944
- return !operand;
4945
- default:
4946
- throw new Error(`Unsupported unary operator: ${expr.op}`);
4947
- }
4948
- }
4949
- __name(evalUnary, "evalUnary");
4950
- function evalBinary(data, expr) {
4951
- const left = evalExpression(data, expr.left);
4952
- const right = evalExpression(data, expr.right);
4953
- return (0, import_ts_pattern13.match)(expr.op).with("&&", () => Boolean(left) && Boolean(right)).with("||", () => Boolean(left) || Boolean(right)).with("==", () => left == right).with("!=", () => left != right).with("<", () => left < right).with("<=", () => left <= right).with(">", () => left > right).with(">=", () => left >= right).with("?", () => {
4954
- if (!Array.isArray(left)) {
4955
- return false;
4956
- }
4957
- return left.some((item) => item === right);
4958
- }).with("!", () => {
4959
- if (!Array.isArray(left)) {
4960
- return false;
4961
- }
4962
- return left.every((item) => item === right);
4963
- }).with("^", () => {
4964
- if (!Array.isArray(left)) {
4965
- return false;
4966
- }
4967
- return !left.some((item) => item === right);
4968
- }).with("in", () => {
4969
- if (!Array.isArray(right)) {
4970
- return false;
4971
- }
4972
- return right.includes(left);
4973
- }).exhaustive();
4974
- }
4975
- __name(evalBinary, "evalBinary");
4976
- function evalMember(data, expr) {
4977
- let result = evalExpression(data, expr.receiver);
4978
- for (const member of expr.members) {
4979
- if (!result || typeof result !== "object") {
4980
- return void 0;
4981
- }
4982
- result = result[member];
4983
- }
4984
- return result ?? null;
4985
- }
4986
- __name(evalMember, "evalMember");
4987
- function evalCall(data, expr) {
4988
- const fieldArg = expr.args?.[0] ? evalExpression(data, expr.args[0]) : void 0;
4989
- return (0, import_ts_pattern13.match)(expr.function).with("length", (f) => {
4990
- if (fieldArg === void 0 || fieldArg === null) {
4991
- return false;
4992
- }
4993
- (0, import_common_helpers8.invariant)(typeof fieldArg === "string" || Array.isArray(fieldArg), `"${f}" first argument must be a string or a list`);
4994
- return fieldArg.length;
4995
- }).with(import_ts_pattern13.P.union("startsWith", "endsWith", "contains"), (f) => {
4996
- if (fieldArg === void 0 || fieldArg === null) {
4997
- return false;
4998
- }
4999
- (0, import_common_helpers8.invariant)(typeof fieldArg === "string", `"${f}" first argument must be a string`);
5000
- (0, import_common_helpers8.invariant)(expr.args?.[1], `"${f}" requires a search argument`);
5001
- const search2 = getArgValue(expr.args?.[1]);
5002
- const caseInsensitive = getArgValue(expr.args?.[2]) ?? false;
5003
- const matcher = /* @__PURE__ */ __name((x, y) => (0, import_ts_pattern13.match)(f).with("startsWith", () => x.startsWith(y)).with("endsWith", () => x.endsWith(y)).with("contains", () => x.includes(y)).exhaustive(), "matcher");
5004
- return caseInsensitive ? matcher(fieldArg.toLowerCase(), search2.toLowerCase()) : matcher(fieldArg, search2);
5005
- }).with("regex", (f) => {
5006
- if (fieldArg === void 0 || fieldArg === null) {
5007
- return false;
5008
- }
5009
- (0, import_common_helpers8.invariant)(typeof fieldArg === "string", `"${f}" first argument must be a string`);
5010
- const pattern = getArgValue(expr.args?.[1]);
5011
- (0, import_common_helpers8.invariant)(pattern !== void 0, `"${f}" requires a pattern argument`);
5012
- return new RegExp(pattern).test(fieldArg);
5013
- }).with(import_ts_pattern13.P.union("isEmail", "isUrl", "isDateTime"), (f) => {
5014
- if (fieldArg === void 0 || fieldArg === null) {
5015
- return false;
5016
- }
5017
- (0, import_common_helpers8.invariant)(typeof fieldArg === "string", `"${f}" first argument must be a string`);
5018
- const fn = (0, import_ts_pattern13.match)(f).with("isEmail", () => "email").with("isUrl", () => "url").with("isDateTime", () => "datetime").exhaustive();
5019
- return import_zod.z.string()[fn]().safeParse(fieldArg).success;
5020
- }).with(import_ts_pattern13.P.union("has", "hasEvery", "hasSome"), (f) => {
5021
- (0, import_common_helpers8.invariant)(expr.args?.[1], `${f} requires a search argument`);
5022
- if (fieldArg === void 0 || fieldArg === null) {
5023
- return false;
5024
- }
5025
- (0, import_common_helpers8.invariant)(Array.isArray(fieldArg), `"${f}" first argument must be an array field`);
5026
- const search2 = evalExpression(data, expr.args?.[1]);
5027
- const matcher = /* @__PURE__ */ __name((x, y) => (0, import_ts_pattern13.match)(f).with("has", () => x.some((item) => item === y)).with("hasEvery", () => {
5028
- (0, import_common_helpers8.invariant)(Array.isArray(y), "hasEvery second argument must be an array");
5029
- return y.every((v) => x.some((item) => item === v));
5030
- }).with("hasSome", () => {
5031
- (0, import_common_helpers8.invariant)(Array.isArray(y), "hasSome second argument must be an array");
5032
- return y.some((v) => x.some((item) => item === v));
5033
- }).exhaustive(), "matcher");
5034
- return matcher(fieldArg, search2);
5035
- }).with("isEmpty", (f) => {
5036
- if (fieldArg === void 0 || fieldArg === null) {
5037
- return false;
5038
- }
5039
- (0, import_common_helpers8.invariant)(Array.isArray(fieldArg), `"${f}" first argument must be an array field`);
5040
- return fieldArg.length === 0;
5041
- }).otherwise(() => {
5042
- throw createNotSupportedError(`Unsupported function "${expr.function}"`);
5043
- });
5044
- }
5045
- __name(evalCall, "evalCall");
5046
-
5047
- // src/client/crud/validator/index.ts
4700
+ // src/client/zod/factory.ts
5048
4701
  function _ts_decorate(decorators, target, key, desc) {
5049
4702
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5050
4703
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -5056,303 +4709,185 @@ function _ts_metadata(k, v) {
5056
4709
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
5057
4710
  }
5058
4711
  __name(_ts_metadata, "_ts_metadata");
5059
- var InputValidator = class {
4712
+ function createQuerySchemaFactory(clientOrSchema, options) {
4713
+ return new ZodSchemaFactory(clientOrSchema, options);
4714
+ }
4715
+ __name(createQuerySchemaFactory, "createQuerySchemaFactory");
4716
+ var ZodSchemaFactory = class {
5060
4717
  static {
5061
- __name(this, "InputValidator");
4718
+ __name(this, "ZodSchemaFactory");
5062
4719
  }
5063
- client;
5064
4720
  schemaCache = /* @__PURE__ */ new Map();
5065
4721
  allFilterKinds = [
5066
4722
  ...new Set(Object.values(FILTER_PROPERTY_TO_KIND))
5067
4723
  ];
5068
- constructor(client) {
5069
- this.client = client;
5070
- }
5071
- get schema() {
5072
- return this.client.$schema;
4724
+ schema;
4725
+ options;
4726
+ constructor(clientOrSchema, options) {
4727
+ if ("$schema" in clientOrSchema) {
4728
+ this.schema = clientOrSchema.$schema;
4729
+ this.options = clientOrSchema.$options;
4730
+ } else {
4731
+ this.schema = clientOrSchema;
4732
+ this.options = options || {};
4733
+ }
5073
4734
  }
5074
- get options() {
5075
- return this.client.$options;
4735
+ get plugins() {
4736
+ return this.options.plugins ?? [];
5076
4737
  }
5077
4738
  get extraValidationsEnabled() {
5078
- return this.client.$options.validateInput !== false;
5079
- }
5080
- // #region Entry points
5081
- validateFindArgs(model, args, operation) {
5082
- return this.validate(model, operation, (model2) => this.makeFindSchema(model2, operation), args);
5083
- }
5084
- validateExistsArgs(model, args) {
5085
- return this.validate(model, "exists", (model2) => this.makeExistsSchema(model2), args);
4739
+ return this.options.validateInput !== false;
5086
4740
  }
5087
- validateCreateArgs(model, args) {
5088
- return this.validate(model, "create", (model2) => this.makeCreateSchema(model2), args);
4741
+ shouldIncludeRelations(options) {
4742
+ return options?.relationDepth === void 0 || options.relationDepth > 0;
5089
4743
  }
5090
- validateCreateManyArgs(model, args) {
5091
- return this.validate(model, "createMany", (model2) => this.makeCreateManySchema(model2), args);
4744
+ nextOptions(options) {
4745
+ if (!options) return void 0;
4746
+ if (options.relationDepth === void 0) return options;
4747
+ return {
4748
+ ...options,
4749
+ relationDepth: options.relationDepth - 1
4750
+ };
5092
4751
  }
5093
- validateCreateManyAndReturnArgs(model, args) {
5094
- return this.validate(model, "createManyAndReturn", (model2) => this.makeCreateManyAndReturnSchema(model2), args);
4752
+ // #region Cache Management
4753
+ // @ts-ignore
4754
+ getCache(cacheKey) {
4755
+ return this.schemaCache.get(cacheKey);
5095
4756
  }
5096
- validateUpdateArgs(model, args) {
5097
- return this.validate(model, "update", (model2) => this.makeUpdateSchema(model2), args);
4757
+ // @ts-ignore
4758
+ setCache(cacheKey, schema) {
4759
+ return this.schemaCache.set(cacheKey, schema);
5098
4760
  }
5099
- validateUpdateManyArgs(model, args) {
5100
- return this.validate(model, "updateMany", (model2) => this.makeUpdateManySchema(model2), args);
4761
+ // @ts-ignore
4762
+ printCacheStats(detailed = false) {
4763
+ console.log("Schema cache size:", this.schemaCache.size);
4764
+ if (detailed) {
4765
+ for (const key of this.schemaCache.keys()) {
4766
+ console.log(` ${key}`);
4767
+ }
4768
+ }
5101
4769
  }
5102
- validateUpdateManyAndReturnArgs(model, args) {
5103
- return this.validate(model, "updateManyAndReturn", (model2) => this.makeUpdateManyAndReturnSchema(model2), args);
4770
+ // #endregion
4771
+ // #region Find
4772
+ makeFindUniqueSchema(model, options) {
4773
+ return this.makeFindSchema(model, "findUnique", options);
5104
4774
  }
5105
- validateUpsertArgs(model, args) {
5106
- return this.validate(model, "upsert", (model2) => this.makeUpsertSchema(model2), args);
4775
+ makeFindFirstSchema(model, options) {
4776
+ return this.makeFindSchema(model, "findFirst", options);
5107
4777
  }
5108
- validateDeleteArgs(model, args) {
5109
- return this.validate(model, "delete", (model2) => this.makeDeleteSchema(model2), args);
4778
+ makeFindManySchema(model, options) {
4779
+ return this.makeFindSchema(model, "findMany", options);
5110
4780
  }
5111
- validateDeleteManyArgs(model, args) {
5112
- return this.validate(model, "deleteMany", (model2) => this.makeDeleteManySchema(model2), args);
4781
+ makeFindSchema(model, operation, options) {
4782
+ const fields = {};
4783
+ const unique = operation === "findUnique";
4784
+ const findOne = operation === "findUnique" || operation === "findFirst";
4785
+ const where = this.makeWhereSchema(model, unique, false, false, options);
4786
+ if (unique) {
4787
+ fields["where"] = where;
4788
+ } else {
4789
+ fields["where"] = where.optional();
4790
+ }
4791
+ fields["select"] = this.makeSelectSchema(model, options).optional().nullable();
4792
+ fields["include"] = this.makeIncludeSchema(model, options).optional().nullable();
4793
+ fields["omit"] = this.makeOmitSchema(model).optional().nullable();
4794
+ if (!unique) {
4795
+ fields["skip"] = this.makeSkipSchema().optional();
4796
+ if (findOne) {
4797
+ fields["take"] = import_zod2.z.literal(1).optional();
4798
+ } else {
4799
+ fields["take"] = this.makeTakeSchema().optional();
4800
+ }
4801
+ fields["orderBy"] = this.orArray(this.makeOrderBySchema(model, true, false, options), true).optional();
4802
+ fields["cursor"] = this.makeCursorSchema(model, options).optional();
4803
+ fields["distinct"] = this.makeDistinctSchema(model).optional();
4804
+ }
4805
+ const baseSchema = import_zod2.z.strictObject(fields);
4806
+ let result = this.mergePluginArgsSchema(baseSchema, operation);
4807
+ result = this.refineForSelectIncludeMutuallyExclusive(result);
4808
+ result = this.refineForSelectOmitMutuallyExclusive(result);
4809
+ result = this.refineForSelectHasTruthyField(result);
4810
+ if (!unique) {
4811
+ result = result.optional();
4812
+ }
4813
+ return result;
5113
4814
  }
5114
- validateCountArgs(model, args) {
5115
- return this.validate(model, "count", (model2) => this.makeCountSchema(model2), args);
4815
+ makeExistsSchema(model, options) {
4816
+ const baseSchema = import_zod2.z.strictObject({
4817
+ where: this.makeWhereSchema(model, false, false, false, options).optional()
4818
+ });
4819
+ return this.mergePluginArgsSchema(baseSchema, "exists").optional();
5116
4820
  }
5117
- validateAggregateArgs(model, args) {
5118
- return this.validate(model, "aggregate", (model2) => this.makeAggregateSchema(model2), args);
4821
+ makeScalarSchema(type, attributes) {
4822
+ if (this.schema.typeDefs && type in this.schema.typeDefs) {
4823
+ return this.makeTypeDefSchema(type);
4824
+ } else if (this.schema.enums && type in this.schema.enums) {
4825
+ return this.makeEnumSchema(type);
4826
+ } else {
4827
+ return (0, import_ts_pattern13.match)(type).with("String", () => this.extraValidationsEnabled ? import_zod.ZodUtils.addStringValidation(import_zod2.z.string(), attributes) : import_zod2.z.string()).with("Int", () => this.extraValidationsEnabled ? import_zod.ZodUtils.addNumberValidation(import_zod2.z.number().int(), attributes) : import_zod2.z.number().int()).with("Float", () => this.extraValidationsEnabled ? import_zod.ZodUtils.addNumberValidation(import_zod2.z.number(), attributes) : import_zod2.z.number()).with("Boolean", () => import_zod2.z.boolean()).with("BigInt", () => import_zod2.z.union([
4828
+ this.extraValidationsEnabled ? import_zod.ZodUtils.addNumberValidation(import_zod2.z.number().int(), attributes) : import_zod2.z.number().int(),
4829
+ this.extraValidationsEnabled ? import_zod.ZodUtils.addBigIntValidation(import_zod2.z.bigint(), attributes) : import_zod2.z.bigint()
4830
+ ])).with("Decimal", () => {
4831
+ return import_zod2.z.union([
4832
+ this.extraValidationsEnabled ? import_zod.ZodUtils.addNumberValidation(import_zod2.z.number(), attributes) : import_zod2.z.number(),
4833
+ import_zod.ZodUtils.addDecimalValidation(import_zod2.z.instanceof(import_decimal4.default), attributes, this.extraValidationsEnabled),
4834
+ import_zod.ZodUtils.addDecimalValidation(import_zod2.z.string(), attributes, this.extraValidationsEnabled)
4835
+ ]);
4836
+ }).with("DateTime", () => import_zod2.z.union([
4837
+ import_zod2.z.date(),
4838
+ import_zod2.z.iso.datetime()
4839
+ ])).with("Bytes", () => import_zod2.z.instanceof(Uint8Array)).with("Json", () => this.makeJsonValueSchema(false, false)).otherwise(() => import_zod2.z.unknown());
4840
+ }
5119
4841
  }
5120
- validateGroupByArgs(model, args) {
5121
- return this.validate(model, "groupBy", (model2) => this.makeGroupBySchema(model2), args);
4842
+ makeEnumSchema(_enum) {
4843
+ const enumDef = getEnum(this.schema, _enum);
4844
+ (0, import_common_helpers8.invariant)(enumDef, `Enum "${_enum}" not found in schema`);
4845
+ return import_zod2.z.enum(Object.keys(enumDef.values));
5122
4846
  }
5123
- // TODO: turn it into a Zod schema and cache
5124
- validateProcedureInput(proc, input) {
5125
- const procDef = (this.schema.procedures ?? {})[proc];
5126
- (0, import_common_helpers9.invariant)(procDef, `Procedure "${proc}" not found in schema`);
5127
- const params = Object.values(procDef.params ?? {});
5128
- if (typeof input === "undefined") {
5129
- if (params.length === 0) {
5130
- return void 0;
5131
- }
5132
- if (params.every((p) => p.optional)) {
5133
- return void 0;
5134
- }
5135
- throw createInvalidInputError("Missing procedure arguments", `$procs.${proc}`);
5136
- }
5137
- if (typeof input !== "object" || input === null || Array.isArray(input)) {
5138
- throw createInvalidInputError("Procedure input must be an object", `$procs.${proc}`);
5139
- }
5140
- const envelope = input;
5141
- const argsPayload = Object.prototype.hasOwnProperty.call(envelope, "args") ? envelope.args : void 0;
5142
- if (params.length === 0) {
5143
- if (typeof argsPayload === "undefined") {
5144
- return input;
5145
- }
5146
- if (!argsPayload || typeof argsPayload !== "object" || Array.isArray(argsPayload)) {
5147
- throw createInvalidInputError("Procedure `args` must be an object", `$procs.${proc}`);
4847
+ makeTypeDefSchema(type) {
4848
+ const typeDef = getTypeDef(this.schema, type);
4849
+ (0, import_common_helpers8.invariant)(typeDef, `Type definition "${type}" not found in schema`);
4850
+ const schema = import_zod2.z.looseObject(Object.fromEntries(Object.entries(typeDef.fields).map(([field, def]) => {
4851
+ let fieldSchema = this.makeScalarSchema(def.type);
4852
+ if (def.array) {
4853
+ fieldSchema = fieldSchema.array();
5148
4854
  }
5149
- if (Object.keys(argsPayload).length === 0) {
5150
- return input;
4855
+ if (def.optional) {
4856
+ fieldSchema = fieldSchema.nullish();
5151
4857
  }
5152
- throw createInvalidInputError("Procedure does not accept arguments", `$procs.${proc}`);
5153
- }
5154
- if (typeof argsPayload === "undefined") {
5155
- if (params.every((p) => p.optional)) {
5156
- return input;
5157
- }
5158
- throw createInvalidInputError("Missing procedure arguments", `$procs.${proc}`);
5159
- }
5160
- if (!argsPayload || typeof argsPayload !== "object" || Array.isArray(argsPayload)) {
5161
- throw createInvalidInputError("Procedure `args` must be an object", `$procs.${proc}`);
5162
- }
5163
- const obj = argsPayload;
5164
- for (const param of params) {
5165
- const value = obj[param.name];
5166
- if (!Object.prototype.hasOwnProperty.call(obj, param.name)) {
5167
- if (param.optional) {
5168
- continue;
5169
- }
5170
- throw createInvalidInputError(`Missing procedure argument: ${param.name}`, `$procs.${proc}`);
5171
- }
5172
- if (typeof value === "undefined") {
5173
- if (param.optional) {
5174
- continue;
5175
- }
5176
- throw createInvalidInputError(`Invalid procedure argument: ${param.name} is required`, `$procs.${proc}`);
5177
- }
5178
- const schema = this.makeProcedureParamSchema(param);
5179
- const parsed = schema.safeParse(value);
5180
- if (!parsed.success) {
5181
- throw createInvalidInputError(`Invalid procedure argument: ${param.name}: ${formatError(parsed.error)}`, `$procs.${proc}`);
5182
- }
5183
- }
5184
- return input;
5185
- }
5186
- // #endregion
5187
- // #region Validation helpers
5188
- validate(model, operation, getSchema, args) {
5189
- const schema = getSchema(model);
5190
- const { error, data } = schema.safeParse(args);
5191
- if (error) {
5192
- throw createInvalidInputError(`Invalid ${operation} args for model "${model}": ${formatError(error)}`, model, {
5193
- cause: error
5194
- });
5195
- }
5196
- return data;
5197
- }
5198
- mergePluginArgsSchema(schema, operation) {
5199
- let result = schema;
5200
- for (const plugin of this.options.plugins ?? []) {
5201
- if (plugin.queryArgs) {
5202
- const pluginSchema = this.getPluginExtQueryArgsSchema(plugin, operation);
5203
- if (pluginSchema) {
5204
- result = result.extend(pluginSchema.shape);
5205
- }
5206
- }
5207
- }
5208
- return result.strict();
5209
- }
5210
- getPluginExtQueryArgsSchema(plugin, operation) {
5211
- if (!plugin.queryArgs) {
5212
- return void 0;
5213
- }
5214
- let result;
5215
- if (operation in plugin.queryArgs && plugin.queryArgs[operation]) {
5216
- result = plugin.queryArgs[operation];
5217
- } else if (operation === "upsert") {
5218
- const createSchema = "$create" in plugin.queryArgs && plugin.queryArgs["$create"] ? plugin.queryArgs["$create"] : void 0;
5219
- const updateSchema = "$update" in plugin.queryArgs && plugin.queryArgs["$update"] ? plugin.queryArgs["$update"] : void 0;
5220
- if (createSchema && updateSchema) {
5221
- (0, import_common_helpers9.invariant)(createSchema instanceof import_zod2.z.ZodObject, "Plugin extended query args schema must be a Zod object");
5222
- (0, import_common_helpers9.invariant)(updateSchema instanceof import_zod2.z.ZodObject, "Plugin extended query args schema must be a Zod object");
5223
- result = createSchema.extend(updateSchema.shape);
5224
- } else if (createSchema) {
5225
- result = createSchema;
5226
- } else if (updateSchema) {
5227
- result = updateSchema;
5228
- }
5229
- } else if (
5230
- // then comes grouped operations: $create, $read, $update, $delete
5231
- CoreCreateOperations.includes(operation) && "$create" in plugin.queryArgs && plugin.queryArgs["$create"]
5232
- ) {
5233
- result = plugin.queryArgs["$create"];
5234
- } else if (CoreReadOperations.includes(operation) && "$read" in plugin.queryArgs && plugin.queryArgs["$read"]) {
5235
- result = plugin.queryArgs["$read"];
5236
- } else if (CoreUpdateOperations.includes(operation) && "$update" in plugin.queryArgs && plugin.queryArgs["$update"]) {
5237
- result = plugin.queryArgs["$update"];
5238
- } else if (CoreDeleteOperations.includes(operation) && "$delete" in plugin.queryArgs && plugin.queryArgs["$delete"]) {
5239
- result = plugin.queryArgs["$delete"];
5240
- } else if ("$all" in plugin.queryArgs && plugin.queryArgs["$all"]) {
5241
- result = plugin.queryArgs["$all"];
5242
- }
5243
- (0, import_common_helpers9.invariant)(result === void 0 || result instanceof import_zod2.z.ZodObject, "Plugin extended query args schema must be a Zod object");
5244
- return result;
5245
- }
5246
- // #endregion
5247
- // #region Find
5248
- makeFindSchema(model, operation) {
5249
- const fields = {};
5250
- const unique = operation === "findUnique";
5251
- const findOne = operation === "findUnique" || operation === "findFirst";
5252
- const where = this.makeWhereSchema(model, unique);
5253
- if (unique) {
5254
- fields["where"] = where;
5255
- } else {
5256
- fields["where"] = where.optional();
5257
- }
5258
- fields["select"] = this.makeSelectSchema(model).optional().nullable();
5259
- fields["include"] = this.makeIncludeSchema(model).optional().nullable();
5260
- fields["omit"] = this.makeOmitSchema(model).optional().nullable();
5261
- if (!unique) {
5262
- fields["skip"] = this.makeSkipSchema().optional();
5263
- if (findOne) {
5264
- fields["take"] = import_zod2.z.literal(1).optional();
5265
- } else {
5266
- fields["take"] = this.makeTakeSchema().optional();
5267
- }
5268
- fields["orderBy"] = this.orArray(this.makeOrderBySchema(model, true, false), true).optional();
5269
- fields["cursor"] = this.makeCursorSchema(model).optional();
5270
- fields["distinct"] = this.makeDistinctSchema(model).optional();
5271
- }
5272
- const baseSchema = import_zod2.z.strictObject(fields);
5273
- let result = this.mergePluginArgsSchema(baseSchema, operation);
5274
- result = this.refineForSelectIncludeMutuallyExclusive(result);
5275
- result = this.refineForSelectOmitMutuallyExclusive(result);
5276
- if (!unique) {
5277
- result = result.optional();
5278
- }
5279
- return result;
5280
- }
5281
- makeExistsSchema(model) {
5282
- const baseSchema = import_zod2.z.strictObject({
5283
- where: this.makeWhereSchema(model, false).optional()
5284
- });
5285
- return this.mergePluginArgsSchema(baseSchema, "exists").optional();
5286
- }
5287
- makeScalarSchema(type, attributes) {
5288
- if (this.schema.typeDefs && type in this.schema.typeDefs) {
5289
- return this.makeTypeDefSchema(type);
5290
- } else if (this.schema.enums && type in this.schema.enums) {
5291
- return this.makeEnumSchema(type);
5292
- } else {
5293
- return (0, import_ts_pattern14.match)(type).with("String", () => this.extraValidationsEnabled ? addStringValidation(import_zod2.z.string(), attributes) : import_zod2.z.string()).with("Int", () => this.extraValidationsEnabled ? addNumberValidation(import_zod2.z.number().int(), attributes) : import_zod2.z.number().int()).with("Float", () => this.extraValidationsEnabled ? addNumberValidation(import_zod2.z.number(), attributes) : import_zod2.z.number()).with("Boolean", () => import_zod2.z.boolean()).with("BigInt", () => import_zod2.z.union([
5294
- this.extraValidationsEnabled ? addNumberValidation(import_zod2.z.number().int(), attributes) : import_zod2.z.number().int(),
5295
- this.extraValidationsEnabled ? addBigIntValidation(import_zod2.z.bigint(), attributes) : import_zod2.z.bigint()
5296
- ])).with("Decimal", () => {
5297
- return import_zod2.z.union([
5298
- this.extraValidationsEnabled ? addNumberValidation(import_zod2.z.number(), attributes) : import_zod2.z.number(),
5299
- addDecimalValidation(import_zod2.z.instanceof(import_decimal5.default), attributes, this.extraValidationsEnabled),
5300
- addDecimalValidation(import_zod2.z.string(), attributes, this.extraValidationsEnabled)
5301
- ]);
5302
- }).with("DateTime", () => import_zod2.z.union([
5303
- import_zod2.z.date(),
5304
- import_zod2.z.iso.datetime()
5305
- ])).with("Bytes", () => import_zod2.z.instanceof(Uint8Array)).with("Json", () => this.makeJsonValueSchema(false, false)).otherwise(() => import_zod2.z.unknown());
5306
- }
5307
- }
5308
- makeEnumSchema(type) {
5309
- const enumDef = getEnum(this.schema, type);
5310
- (0, import_common_helpers9.invariant)(enumDef, `Enum "${type}" not found in schema`);
5311
- return import_zod2.z.enum(Object.keys(enumDef.values));
5312
- }
5313
- makeTypeDefSchema(type) {
5314
- const typeDef = getTypeDef(this.schema, type);
5315
- (0, import_common_helpers9.invariant)(typeDef, `Type definition "${type}" not found in schema`);
5316
- const schema = import_zod2.z.looseObject(Object.fromEntries(Object.entries(typeDef.fields).map(([field, def]) => {
5317
- let fieldSchema = this.makeScalarSchema(def.type);
5318
- if (def.array) {
5319
- fieldSchema = fieldSchema.array();
5320
- }
5321
- if (def.optional) {
5322
- fieldSchema = fieldSchema.nullish();
5323
- }
5324
- return [
5325
- field,
5326
- fieldSchema
5327
- ];
5328
- })));
5329
- const finalSchema = import_zod2.z.any().superRefine((value, ctx) => {
5330
- const parseResult = schema.safeParse(value);
5331
- if (!parseResult.success) {
5332
- parseResult.error.issues.forEach((issue) => ctx.addIssue(issue));
4858
+ return [
4859
+ field,
4860
+ fieldSchema
4861
+ ];
4862
+ })));
4863
+ const finalSchema = import_zod2.z.any().superRefine((value, ctx) => {
4864
+ const parseResult = schema.safeParse(value);
4865
+ if (!parseResult.success) {
4866
+ parseResult.error.issues.forEach((issue) => ctx.addIssue(issue));
5333
4867
  }
5334
4868
  });
5335
4869
  return finalSchema;
5336
4870
  }
5337
- makeWhereSchema(model, unique, withoutRelationFields = false, withAggregations = false) {
4871
+ makeWhereSchema(model, unique, withoutRelationFields = false, withAggregations = false, options) {
5338
4872
  const modelDef = requireModel(this.schema, model);
5339
4873
  const uniqueFieldNames = unique ? getUniqueFields(this.schema, model).filter((uf) => (
5340
4874
  // single-field unique
5341
4875
  "def" in uf
5342
4876
  )).map((uf) => uf.name) : void 0;
4877
+ const nextOpts = this.nextOptions(options);
5343
4878
  const fields = {};
5344
4879
  for (const field of Object.keys(modelDef.fields)) {
5345
4880
  const fieldDef = requireField(this.schema, model, field);
5346
4881
  let fieldSchema;
5347
4882
  if (fieldDef.relation) {
5348
- if (withoutRelationFields) {
4883
+ if (withoutRelationFields || !this.shouldIncludeRelations(options)) {
5349
4884
  continue;
5350
4885
  }
5351
4886
  const allowedFilterKinds = this.getEffectiveFilterKinds(model, field);
5352
4887
  if (allowedFilterKinds && !allowedFilterKinds.includes("Relation")) {
5353
4888
  fieldSchema = import_zod2.z.never();
5354
4889
  } else {
5355
- fieldSchema = import_zod2.z.lazy(() => this.makeWhereSchema(fieldDef.type, false).optional());
4890
+ fieldSchema = import_zod2.z.lazy(() => this.makeWhereSchema(fieldDef.type, false, false, false, nextOpts).optional());
5356
4891
  fieldSchema = this.nullableIf(fieldSchema, !fieldDef.array && !!fieldDef.optional);
5357
4892
  if (fieldDef.array) {
5358
4893
  fieldSchema = import_zod2.z.union([
@@ -5397,7 +4932,7 @@ var InputValidator = class {
5397
4932
  for (const uniqueField of uniqueFields) {
5398
4933
  if ("defs" in uniqueField) {
5399
4934
  fields[uniqueField.name] = import_zod2.z.object(Object.fromEntries(Object.entries(uniqueField.defs).map(([key, def]) => {
5400
- (0, import_common_helpers9.invariant)(!def.relation, "unique field cannot be a relation");
4935
+ (0, import_common_helpers8.invariant)(!def.relation, "unique field cannot be a relation");
5401
4936
  let fieldSchema;
5402
4937
  const enumDef = getEnum(this.schema, def.type);
5403
4938
  if (enumDef) {
@@ -5420,9 +4955,9 @@ var InputValidator = class {
5420
4955
  fields["$expr"] = import_zod2.z.custom((v) => typeof v === "function", {
5421
4956
  error: '"$expr" must be a function'
5422
4957
  }).optional();
5423
- fields["AND"] = this.orArray(import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)), true).optional();
5424
- fields["OR"] = import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)).array().optional();
5425
- fields["NOT"] = this.orArray(import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)), true).optional();
4958
+ fields["AND"] = this.orArray(import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields, false, options)), true).optional();
4959
+ fields["OR"] = import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields, false, options)).array().optional();
4960
+ fields["NOT"] = this.orArray(import_zod2.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields, false, options)), true).optional();
5426
4961
  const baseWhere = import_zod2.z.strictObject(fields);
5427
4962
  let result = baseWhere;
5428
4963
  if (unique) {
@@ -5448,7 +4983,7 @@ var InputValidator = class {
5448
4983
  const optional = !!fieldInfo.optional;
5449
4984
  const array = !!fieldInfo.array;
5450
4985
  const typeDef = getTypeDef(this.schema, type);
5451
- (0, import_common_helpers9.invariant)(typeDef, `Type definition "${type}" not found in schema`);
4986
+ (0, import_common_helpers8.invariant)(typeDef, `Type definition "${type}" not found in schema`);
5452
4987
  const candidates = [];
5453
4988
  if (!array) {
5454
4989
  const fieldSchemas = {};
@@ -5500,7 +5035,7 @@ var InputValidator = class {
5500
5035
  const optional = !!fieldInfo.optional;
5501
5036
  const array = !!fieldInfo.array;
5502
5037
  const enumDef = getEnum(this.schema, enumName);
5503
- (0, import_common_helpers9.invariant)(enumDef, `Enum "${enumName}" not found in schema`);
5038
+ (0, import_common_helpers8.invariant)(enumDef, `Enum "${enumName}" not found in schema`);
5504
5039
  const baseSchema = import_zod2.z.enum(Object.keys(enumDef.values));
5505
5040
  if (array) {
5506
5041
  return this.internalMakeArrayFilterSchema(model, fieldInfo.name, baseSchema);
@@ -5537,7 +5072,7 @@ var InputValidator = class {
5537
5072
  const allowedFilterKinds = ignoreSlicing ? void 0 : this.getEffectiveFilterKinds(contextModel, fieldInfo.name);
5538
5073
  const type = fieldInfo.type;
5539
5074
  const optional = !!fieldInfo.optional;
5540
- return (0, import_ts_pattern14.match)(type).with("String", () => this.makeStringFilterSchema(optional, withAggregations, allowedFilterKinds)).with(import_ts_pattern14.P.union("Int", "Float", "Decimal", "BigInt"), (type2) => this.makeNumberFilterSchema(this.makeScalarSchema(type2), optional, withAggregations, allowedFilterKinds)).with("Boolean", () => this.makeBooleanFilterSchema(optional, withAggregations, allowedFilterKinds)).with("DateTime", () => this.makeDateTimeFilterSchema(optional, withAggregations, allowedFilterKinds)).with("Bytes", () => this.makeBytesFilterSchema(optional, withAggregations, allowedFilterKinds)).with("Json", () => this.makeJsonFilterSchema(contextModel, fieldInfo.name, optional)).with("Unsupported", () => import_zod2.z.never()).exhaustive();
5075
+ return (0, import_ts_pattern13.match)(type).with("String", () => this.makeStringFilterSchema(optional, withAggregations, allowedFilterKinds)).with(import_ts_pattern13.P.union("Int", "Float", "Decimal", "BigInt"), (type2) => this.makeNumberFilterSchema(this.makeScalarSchema(type2), optional, withAggregations, allowedFilterKinds)).with("Boolean", () => this.makeBooleanFilterSchema(optional, withAggregations, allowedFilterKinds)).with("DateTime", () => this.makeDateTimeFilterSchema(optional, withAggregations, allowedFilterKinds)).with("Bytes", () => this.makeBytesFilterSchema(optional, withAggregations, allowedFilterKinds)).with("Json", () => this.makeJsonFilterSchema(contextModel, fieldInfo.name, optional)).with("Unsupported", () => import_zod2.z.never()).exhaustive();
5541
5076
  }
5542
5077
  makeJsonValueSchema(nullable, forFilter) {
5543
5078
  const options = [
@@ -5701,29 +5236,35 @@ var InputValidator = class {
5701
5236
  import_zod2.z.literal("insensitive")
5702
5237
  ]);
5703
5238
  }
5704
- makeSelectSchema(model) {
5239
+ makeSelectSchema(model, options) {
5705
5240
  const modelDef = requireModel(this.schema, model);
5706
5241
  const fields = {};
5707
5242
  for (const field of Object.keys(modelDef.fields)) {
5708
5243
  const fieldDef = requireField(this.schema, model, field);
5709
5244
  if (fieldDef.relation) {
5245
+ if (!this.shouldIncludeRelations(options)) {
5246
+ continue;
5247
+ }
5710
5248
  if (this.isModelAllowed(fieldDef.type)) {
5711
- fields[field] = this.makeRelationSelectIncludeSchema(model, field).optional();
5249
+ fields[field] = this.makeRelationSelectIncludeSchema(model, field, options).optional();
5712
5250
  }
5713
5251
  } else {
5714
5252
  fields[field] = import_zod2.z.boolean().optional();
5715
5253
  }
5716
5254
  }
5717
- const _countSchema = this.makeCountSelectionSchema(model);
5718
- if (!(_countSchema instanceof import_zod2.z.ZodNever)) {
5719
- fields["_count"] = _countSchema;
5255
+ if (this.shouldIncludeRelations(options)) {
5256
+ const _countSchema = this.makeCountSelectionSchema(model, options);
5257
+ if (!(_countSchema instanceof import_zod2.z.ZodNever)) {
5258
+ fields["_count"] = _countSchema;
5259
+ }
5720
5260
  }
5721
5261
  return import_zod2.z.strictObject(fields);
5722
5262
  }
5723
- makeCountSelectionSchema(model) {
5263
+ makeCountSelectionSchema(model, options) {
5724
5264
  const modelDef = requireModel(this.schema, model);
5725
5265
  const toManyRelations = Object.values(modelDef.fields).filter((def) => def.relation && def.array);
5726
5266
  if (toManyRelations.length > 0) {
5267
+ const nextOpts = this.nextOptions(options);
5727
5268
  return import_zod2.z.union([
5728
5269
  import_zod2.z.literal(true),
5729
5270
  import_zod2.z.strictObject({
@@ -5732,7 +5273,7 @@ var InputValidator = class {
5732
5273
  [fieldDef.name]: import_zod2.z.union([
5733
5274
  import_zod2.z.boolean(),
5734
5275
  import_zod2.z.strictObject({
5735
- where: this.makeWhereSchema(fieldDef.type, false, false)
5276
+ where: this.makeWhereSchema(fieldDef.type, false, false, false, nextOpts)
5736
5277
  })
5737
5278
  ]).optional()
5738
5279
  }), {}))
@@ -5742,27 +5283,29 @@ var InputValidator = class {
5742
5283
  return import_zod2.z.never();
5743
5284
  }
5744
5285
  }
5745
- makeRelationSelectIncludeSchema(model, field) {
5286
+ makeRelationSelectIncludeSchema(model, field, options) {
5746
5287
  const fieldDef = requireField(this.schema, model, field);
5288
+ const nextOpts = this.nextOptions(options);
5747
5289
  let objSchema = import_zod2.z.strictObject({
5748
5290
  ...fieldDef.array || fieldDef.optional ? {
5749
5291
  // to-many relations and optional to-one relations are filterable
5750
- where: import_zod2.z.lazy(() => this.makeWhereSchema(fieldDef.type, false)).optional()
5292
+ where: import_zod2.z.lazy(() => this.makeWhereSchema(fieldDef.type, false, false, false, nextOpts)).optional()
5751
5293
  } : {},
5752
- select: import_zod2.z.lazy(() => this.makeSelectSchema(fieldDef.type)).optional().nullable(),
5753
- include: import_zod2.z.lazy(() => this.makeIncludeSchema(fieldDef.type)).optional().nullable(),
5294
+ select: import_zod2.z.lazy(() => this.makeSelectSchema(fieldDef.type, nextOpts)).optional().nullable(),
5295
+ include: import_zod2.z.lazy(() => this.makeIncludeSchema(fieldDef.type, nextOpts)).optional().nullable(),
5754
5296
  omit: import_zod2.z.lazy(() => this.makeOmitSchema(fieldDef.type)).optional().nullable(),
5755
5297
  ...fieldDef.array ? {
5756
5298
  // to-many relations can be ordered, skipped, taken, and cursor-located
5757
- orderBy: import_zod2.z.lazy(() => this.orArray(this.makeOrderBySchema(fieldDef.type, true, false), true)).optional(),
5299
+ orderBy: import_zod2.z.lazy(() => this.orArray(this.makeOrderBySchema(fieldDef.type, true, false, nextOpts), true)).optional(),
5758
5300
  skip: this.makeSkipSchema().optional(),
5759
5301
  take: this.makeTakeSchema().optional(),
5760
- cursor: this.makeCursorSchema(fieldDef.type).optional(),
5302
+ cursor: this.makeCursorSchema(fieldDef.type, nextOpts).optional(),
5761
5303
  distinct: this.makeDistinctSchema(fieldDef.type).optional()
5762
5304
  } : {}
5763
5305
  });
5764
5306
  objSchema = this.refineForSelectIncludeMutuallyExclusive(objSchema);
5765
5307
  objSchema = this.refineForSelectOmitMutuallyExclusive(objSchema);
5308
+ objSchema = this.refineForSelectHasTruthyField(objSchema);
5766
5309
  return import_zod2.z.union([
5767
5310
  import_zod2.z.boolean(),
5768
5311
  objSchema
@@ -5783,36 +5326,42 @@ var InputValidator = class {
5783
5326
  }
5784
5327
  return import_zod2.z.strictObject(fields);
5785
5328
  }
5786
- makeIncludeSchema(model) {
5329
+ makeIncludeSchema(model, options) {
5787
5330
  const modelDef = requireModel(this.schema, model);
5788
5331
  const fields = {};
5789
5332
  for (const field of Object.keys(modelDef.fields)) {
5790
5333
  const fieldDef = requireField(this.schema, model, field);
5791
5334
  if (fieldDef.relation) {
5335
+ if (!this.shouldIncludeRelations(options)) {
5336
+ continue;
5337
+ }
5792
5338
  if (this.isModelAllowed(fieldDef.type)) {
5793
- fields[field] = this.makeRelationSelectIncludeSchema(model, field).optional();
5339
+ fields[field] = this.makeRelationSelectIncludeSchema(model, field, options).optional();
5794
5340
  }
5795
5341
  }
5796
5342
  }
5797
- const _countSchema = this.makeCountSelectionSchema(model);
5798
- if (!(_countSchema instanceof import_zod2.z.ZodNever)) {
5799
- fields["_count"] = _countSchema;
5343
+ if (this.shouldIncludeRelations(options)) {
5344
+ const _countSchema = this.makeCountSelectionSchema(model, options);
5345
+ if (!(_countSchema instanceof import_zod2.z.ZodNever)) {
5346
+ fields["_count"] = _countSchema;
5347
+ }
5800
5348
  }
5801
5349
  return import_zod2.z.strictObject(fields);
5802
5350
  }
5803
- makeOrderBySchema(model, withRelation, WithAggregation) {
5351
+ makeOrderBySchema(model, withRelation, WithAggregation, options) {
5804
5352
  const modelDef = requireModel(this.schema, model);
5805
5353
  const fields = {};
5806
5354
  const sort = import_zod2.z.union([
5807
5355
  import_zod2.z.literal("asc"),
5808
5356
  import_zod2.z.literal("desc")
5809
5357
  ]);
5358
+ const nextOpts = this.nextOptions(options);
5810
5359
  for (const field of Object.keys(modelDef.fields)) {
5811
5360
  const fieldDef = requireField(this.schema, model, field);
5812
5361
  if (fieldDef.relation) {
5813
- if (withRelation) {
5362
+ if (withRelation && this.shouldIncludeRelations(options)) {
5814
5363
  fields[field] = import_zod2.z.lazy(() => {
5815
- let relationOrderBy = this.makeOrderBySchema(fieldDef.type, withRelation, WithAggregation);
5364
+ let relationOrderBy = this.makeOrderBySchema(fieldDef.type, withRelation, WithAggregation, nextOpts);
5816
5365
  if (fieldDef.array) {
5817
5366
  relationOrderBy = relationOrderBy.extend({
5818
5367
  _count: sort
@@ -5847,7 +5396,7 @@ var InputValidator = class {
5847
5396
  "_max"
5848
5397
  ];
5849
5398
  for (const agg of aggregationFields) {
5850
- fields[agg] = import_zod2.z.lazy(() => this.makeOrderBySchema(model, true, false).optional());
5399
+ fields[agg] = import_zod2.z.lazy(() => this.makeOrderBySchema(model, true, false, options).optional());
5851
5400
  }
5852
5401
  }
5853
5402
  return import_zod2.z.strictObject(fields);
@@ -5855,56 +5404,56 @@ var InputValidator = class {
5855
5404
  makeDistinctSchema(model) {
5856
5405
  const modelDef = requireModel(this.schema, model);
5857
5406
  const nonRelationFields = Object.keys(modelDef.fields).filter((field) => !modelDef.fields[field]?.relation);
5858
- return this.orArray(import_zod2.z.enum(nonRelationFields), true);
5407
+ return nonRelationFields.length > 0 ? this.orArray(import_zod2.z.enum(nonRelationFields), true) : import_zod2.z.never();
5859
5408
  }
5860
- makeCursorSchema(model) {
5861
- return this.makeWhereSchema(model, true, true).optional();
5409
+ makeCursorSchema(model, options) {
5410
+ return this.makeWhereSchema(model, true, true, false, options).optional();
5862
5411
  }
5863
5412
  // #endregion
5864
5413
  // #region Create
5865
- makeCreateSchema(model) {
5866
- const dataSchema = this.makeCreateDataSchema(model, false);
5414
+ makeCreateSchema(model, options) {
5415
+ const dataSchema = this.makeCreateDataSchema(model, false, [], false, options);
5867
5416
  const baseSchema = import_zod2.z.strictObject({
5868
5417
  data: dataSchema,
5869
- select: this.makeSelectSchema(model).optional().nullable(),
5870
- include: this.makeIncludeSchema(model).optional().nullable(),
5418
+ select: this.makeSelectSchema(model, options).optional().nullable(),
5419
+ include: this.makeIncludeSchema(model, options).optional().nullable(),
5871
5420
  omit: this.makeOmitSchema(model).optional().nullable()
5872
5421
  });
5873
5422
  let schema = this.mergePluginArgsSchema(baseSchema, "create");
5874
5423
  schema = this.refineForSelectIncludeMutuallyExclusive(schema);
5875
5424
  schema = this.refineForSelectOmitMutuallyExclusive(schema);
5425
+ schema = this.refineForSelectHasTruthyField(schema);
5876
5426
  return schema;
5877
5427
  }
5878
- makeCreateManySchema(model) {
5879
- return this.mergePluginArgsSchema(this.makeCreateManyDataSchema(model, []), "createMany").optional();
5428
+ makeCreateManySchema(model, options) {
5429
+ return this.mergePluginArgsSchema(this.makeCreateManyPayloadSchema(model, [], options), "createMany");
5880
5430
  }
5881
- makeCreateManyAndReturnSchema(model) {
5882
- const base = this.makeCreateManyDataSchema(model, []);
5431
+ makeCreateManyAndReturnSchema(model, options) {
5432
+ const base = this.makeCreateManyPayloadSchema(model, [], options);
5883
5433
  let result = base.extend({
5884
- select: this.makeSelectSchema(model).optional().nullable(),
5434
+ select: this.makeSelectSchema(model, options).optional().nullable(),
5885
5435
  omit: this.makeOmitSchema(model).optional().nullable()
5886
5436
  });
5887
5437
  result = this.mergePluginArgsSchema(result, "createManyAndReturn");
5888
- return this.refineForSelectOmitMutuallyExclusive(result).optional();
5438
+ return this.refineForSelectHasTruthyField(this.refineForSelectOmitMutuallyExclusive(result)).optional();
5889
5439
  }
5890
- makeCreateDataSchema(model, canBeArray, withoutFields = [], withoutRelationFields = false) {
5440
+ makeCreateDataSchema(model, canBeArray, withoutFields = [], withoutRelationFields = false, options) {
5441
+ const skipRelations = withoutRelationFields || !this.shouldIncludeRelations(options);
5891
5442
  const uncheckedVariantFields = {};
5892
5443
  const checkedVariantFields = {};
5893
5444
  const modelDef = requireModel(this.schema, model);
5894
- const hasRelation = !withoutRelationFields && Object.entries(modelDef.fields).some(([f, def]) => !withoutFields.includes(f) && def.relation);
5445
+ const hasRelation = !skipRelations && Object.entries(modelDef.fields).some(([f, def]) => !withoutFields.includes(f) && def.relation);
5446
+ const nextOpts = this.nextOptions(options);
5895
5447
  Object.keys(modelDef.fields).forEach((field) => {
5896
5448
  if (withoutFields.includes(field)) {
5897
5449
  return;
5898
5450
  }
5899
5451
  const fieldDef = requireField(this.schema, model, field);
5900
- if (fieldDef.computed) {
5901
- return;
5902
- }
5903
- if (this.isDelegateDiscriminator(fieldDef)) {
5452
+ if (fieldDef.computed || fieldDef.isDiscriminator) {
5904
5453
  return;
5905
5454
  }
5906
5455
  if (fieldDef.relation) {
5907
- if (withoutRelationFields) {
5456
+ if (skipRelations) {
5908
5457
  return;
5909
5458
  }
5910
5459
  if (!this.isModelAllowed(fieldDef.type)) {
@@ -5919,7 +5468,7 @@ var InputValidator = class {
5919
5468
  excludeFields.push(...oppositeFieldDef.relation.fields);
5920
5469
  }
5921
5470
  }
5922
- let fieldSchema = import_zod2.z.lazy(() => this.makeRelationManipulationSchema(model, field, excludeFields, "create"));
5471
+ let fieldSchema = import_zod2.z.lazy(() => this.makeRelationManipulationSchema(model, field, excludeFields, "create", nextOpts));
5923
5472
  if (fieldDef.optional || fieldDef.array) {
5924
5473
  fieldSchema = fieldSchema.optional();
5925
5474
  } else {
@@ -5944,7 +5493,7 @@ var InputValidator = class {
5944
5493
  } else {
5945
5494
  let fieldSchema = this.makeScalarSchema(fieldDef.type, fieldDef.attributes);
5946
5495
  if (fieldDef.array) {
5947
- fieldSchema = addListValidation(fieldSchema.array(), fieldDef.attributes);
5496
+ fieldSchema = import_zod.ZodUtils.addListValidation(fieldSchema.array(), fieldDef.attributes);
5948
5497
  fieldSchema = import_zod2.z.union([
5949
5498
  fieldSchema,
5950
5499
  import_zod2.z.strictObject({
@@ -5971,8 +5520,8 @@ var InputValidator = class {
5971
5520
  }
5972
5521
  }
5973
5522
  });
5974
- const uncheckedCreateSchema = this.extraValidationsEnabled ? addCustomValidation(import_zod2.z.strictObject(uncheckedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(uncheckedVariantFields);
5975
- const checkedCreateSchema = this.extraValidationsEnabled ? addCustomValidation(import_zod2.z.strictObject(checkedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(checkedVariantFields);
5523
+ const uncheckedCreateSchema = this.extraValidationsEnabled ? import_zod.ZodUtils.addCustomValidation(import_zod2.z.strictObject(uncheckedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(uncheckedVariantFields);
5524
+ const checkedCreateSchema = this.extraValidationsEnabled ? import_zod.ZodUtils.addCustomValidation(import_zod2.z.strictObject(checkedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(checkedVariantFields);
5976
5525
  if (!hasRelation) {
5977
5526
  return this.orArray(uncheckedCreateSchema, canBeArray);
5978
5527
  } else {
@@ -5988,153 +5537,154 @@ var InputValidator = class {
5988
5537
  ]);
5989
5538
  }
5990
5539
  }
5991
- isDelegateDiscriminator(fieldDef) {
5992
- if (!fieldDef.originModel) {
5993
- return false;
5994
- }
5995
- const discriminatorField = getDiscriminatorField(this.schema, fieldDef.originModel);
5996
- return discriminatorField === fieldDef.name;
5997
- }
5998
- makeRelationManipulationSchema(model, field, withoutFields, mode) {
5540
+ makeRelationManipulationSchema(model, field, withoutFields, mode, options) {
5999
5541
  const fieldDef = requireField(this.schema, model, field);
6000
5542
  const fieldType = fieldDef.type;
6001
5543
  const array = !!fieldDef.array;
6002
5544
  const fields = {
6003
- create: this.makeCreateDataSchema(fieldDef.type, !!fieldDef.array, withoutFields).optional(),
6004
- connect: this.makeConnectDataSchema(fieldType, array).optional(),
6005
- connectOrCreate: this.makeConnectOrCreateDataSchema(fieldType, array, withoutFields).optional()
5545
+ create: this.makeCreateDataSchema(fieldDef.type, !!fieldDef.array, withoutFields, false, options).optional(),
5546
+ connect: this.makeConnectDataSchema(fieldType, array, options).optional(),
5547
+ connectOrCreate: this.makeConnectOrCreateDataSchema(fieldType, array, withoutFields, options).optional()
6006
5548
  };
6007
5549
  if (array) {
6008
- fields["createMany"] = this.makeCreateManyDataSchema(fieldType, withoutFields).optional();
5550
+ fields["createMany"] = this.makeCreateManyPayloadSchema(fieldType, withoutFields, options).optional();
6009
5551
  }
6010
5552
  if (mode === "update") {
6011
5553
  if (fieldDef.optional || fieldDef.array) {
6012
- fields["disconnect"] = this.makeDisconnectDataSchema(fieldType, array).optional();
6013
- fields["delete"] = this.makeDeleteRelationDataSchema(fieldType, array, true).optional();
5554
+ fields["disconnect"] = this.makeDisconnectDataSchema(fieldType, array, options).optional();
5555
+ fields["delete"] = this.makeDeleteRelationDataSchema(fieldType, array, true, options).optional();
6014
5556
  }
6015
5557
  fields["update"] = array ? this.orArray(import_zod2.z.strictObject({
6016
- where: this.makeWhereSchema(fieldType, true),
6017
- data: this.makeUpdateDataSchema(fieldType, withoutFields)
5558
+ where: this.makeWhereSchema(fieldType, true, false, false, options),
5559
+ data: this.makeUpdateDataSchema(fieldType, withoutFields, false, options)
6018
5560
  }), true).optional() : import_zod2.z.union([
6019
5561
  import_zod2.z.strictObject({
6020
- where: this.makeWhereSchema(fieldType, false).optional(),
6021
- data: this.makeUpdateDataSchema(fieldType, withoutFields)
5562
+ where: this.makeWhereSchema(fieldType, false, false, false, options).optional(),
5563
+ data: this.makeUpdateDataSchema(fieldType, withoutFields, false, options)
6022
5564
  }),
6023
- this.makeUpdateDataSchema(fieldType, withoutFields)
5565
+ this.makeUpdateDataSchema(fieldType, withoutFields, false, options)
6024
5566
  ]).optional();
6025
- let upsertWhere = this.makeWhereSchema(fieldType, true);
5567
+ let upsertWhere = this.makeWhereSchema(fieldType, true, false, false, options);
6026
5568
  if (!fieldDef.array) {
6027
5569
  upsertWhere = upsertWhere.optional();
6028
5570
  }
6029
5571
  fields["upsert"] = this.orArray(import_zod2.z.strictObject({
6030
5572
  where: upsertWhere,
6031
- create: this.makeCreateDataSchema(fieldType, false, withoutFields),
6032
- update: this.makeUpdateDataSchema(fieldType, withoutFields)
5573
+ create: this.makeCreateDataSchema(fieldType, false, withoutFields, false, options),
5574
+ update: this.makeUpdateDataSchema(fieldType, withoutFields, false, options)
6033
5575
  }), true).optional();
6034
5576
  if (array) {
6035
- fields["set"] = this.makeSetDataSchema(fieldType, true).optional();
5577
+ fields["set"] = this.makeSetDataSchema(fieldType, true, options).optional();
6036
5578
  fields["updateMany"] = this.orArray(import_zod2.z.strictObject({
6037
- where: this.makeWhereSchema(fieldType, false, true),
6038
- data: this.makeUpdateDataSchema(fieldType, withoutFields)
5579
+ where: this.makeWhereSchema(fieldType, false, true, false, options),
5580
+ data: this.makeUpdateDataSchema(fieldType, withoutFields, false, options)
6039
5581
  }), true).optional();
6040
- fields["deleteMany"] = this.makeDeleteRelationDataSchema(fieldType, true, false).optional();
5582
+ fields["deleteMany"] = this.makeDeleteRelationDataSchema(fieldType, true, false, options).optional();
6041
5583
  }
6042
5584
  }
6043
5585
  return import_zod2.z.strictObject(fields);
6044
5586
  }
6045
- makeSetDataSchema(model, canBeArray) {
6046
- return this.orArray(this.makeWhereSchema(model, true), canBeArray);
5587
+ makeSetDataSchema(model, canBeArray, options) {
5588
+ return this.orArray(this.makeWhereSchema(model, true, false, false, options), canBeArray);
6047
5589
  }
6048
- makeConnectDataSchema(model, canBeArray) {
6049
- return this.orArray(this.makeWhereSchema(model, true), canBeArray);
5590
+ makeConnectDataSchema(model, canBeArray, options) {
5591
+ return this.orArray(this.makeWhereSchema(model, true, false, false, options), canBeArray);
6050
5592
  }
6051
- makeDisconnectDataSchema(model, canBeArray) {
5593
+ makeDisconnectDataSchema(model, canBeArray, options) {
6052
5594
  if (canBeArray) {
6053
- return this.orArray(this.makeWhereSchema(model, true), canBeArray);
5595
+ return this.orArray(this.makeWhereSchema(model, true, false, false, options), canBeArray);
6054
5596
  } else {
6055
5597
  return import_zod2.z.union([
6056
5598
  import_zod2.z.boolean(),
6057
- this.makeWhereSchema(model, false)
5599
+ this.makeWhereSchema(model, false, false, false, options)
6058
5600
  ]);
6059
5601
  }
6060
5602
  }
6061
- makeDeleteRelationDataSchema(model, toManyRelation, uniqueFilter) {
6062
- return toManyRelation ? this.orArray(this.makeWhereSchema(model, uniqueFilter), true) : import_zod2.z.union([
5603
+ makeDeleteRelationDataSchema(model, toManyRelation, uniqueFilter, options) {
5604
+ return toManyRelation ? this.orArray(this.makeWhereSchema(model, uniqueFilter, false, false, options), true) : import_zod2.z.union([
6063
5605
  import_zod2.z.boolean(),
6064
- this.makeWhereSchema(model, uniqueFilter)
5606
+ this.makeWhereSchema(model, uniqueFilter, false, false, options)
6065
5607
  ]);
6066
5608
  }
6067
- makeConnectOrCreateDataSchema(model, canBeArray, withoutFields) {
6068
- const whereSchema = this.makeWhereSchema(model, true);
6069
- const createSchema = this.makeCreateDataSchema(model, false, withoutFields);
5609
+ makeConnectOrCreateDataSchema(model, canBeArray, withoutFields, options) {
5610
+ const whereSchema = this.makeWhereSchema(model, true, false, false, options);
5611
+ const createSchema = this.makeCreateDataSchema(model, false, withoutFields, false, options);
6070
5612
  return this.orArray(import_zod2.z.strictObject({
6071
5613
  where: whereSchema,
6072
5614
  create: createSchema
6073
5615
  }), canBeArray);
6074
5616
  }
6075
- makeCreateManyDataSchema(model, withoutFields) {
5617
+ makeCreateManyPayloadSchema(model, withoutFields, options) {
6076
5618
  return import_zod2.z.strictObject({
6077
- data: this.makeCreateDataSchema(model, true, withoutFields, true),
5619
+ data: this.makeCreateDataSchema(model, true, withoutFields, true, options),
6078
5620
  skipDuplicates: import_zod2.z.boolean().optional()
6079
5621
  });
6080
5622
  }
6081
5623
  // #endregion
6082
5624
  // #region Update
6083
- makeUpdateSchema(model) {
5625
+ makeUpdateSchema(model, options) {
6084
5626
  const baseSchema = import_zod2.z.strictObject({
6085
- where: this.makeWhereSchema(model, true),
6086
- data: this.makeUpdateDataSchema(model),
6087
- select: this.makeSelectSchema(model).optional().nullable(),
6088
- include: this.makeIncludeSchema(model).optional().nullable(),
5627
+ where: this.makeWhereSchema(model, true, false, false, options),
5628
+ data: this.makeUpdateDataSchema(model, [], false, options),
5629
+ select: this.makeSelectSchema(model, options).optional().nullable(),
5630
+ include: this.makeIncludeSchema(model, options).optional().nullable(),
6089
5631
  omit: this.makeOmitSchema(model).optional().nullable()
6090
5632
  });
6091
5633
  let schema = this.mergePluginArgsSchema(baseSchema, "update");
6092
5634
  schema = this.refineForSelectIncludeMutuallyExclusive(schema);
6093
5635
  schema = this.refineForSelectOmitMutuallyExclusive(schema);
5636
+ schema = this.refineForSelectHasTruthyField(schema);
6094
5637
  return schema;
6095
5638
  }
6096
- makeUpdateManySchema(model) {
5639
+ makeUpdateManySchema(model, options) {
6097
5640
  return this.mergePluginArgsSchema(import_zod2.z.strictObject({
6098
- where: this.makeWhereSchema(model, false).optional(),
6099
- data: this.makeUpdateDataSchema(model, [], true),
5641
+ where: this.makeWhereSchema(model, false, false, false, options).optional(),
5642
+ data: this.makeUpdateDataSchema(model, [], true, options),
6100
5643
  limit: import_zod2.z.number().int().nonnegative().optional()
6101
5644
  }), "updateMany");
6102
5645
  }
6103
- makeUpdateManyAndReturnSchema(model) {
6104
- const baseSchema = this.makeUpdateManySchema(model);
5646
+ makeUpdateManyAndReturnSchema(model, options) {
5647
+ const baseSchema = this.makeUpdateManySchema(model, options);
6105
5648
  let schema = baseSchema.extend({
6106
- select: this.makeSelectSchema(model).optional().nullable(),
5649
+ select: this.makeSelectSchema(model, options).optional().nullable(),
6107
5650
  omit: this.makeOmitSchema(model).optional().nullable()
6108
5651
  });
6109
5652
  schema = this.refineForSelectOmitMutuallyExclusive(schema);
5653
+ schema = this.refineForSelectHasTruthyField(schema);
6110
5654
  return schema;
6111
5655
  }
6112
- makeUpsertSchema(model) {
5656
+ makeUpsertSchema(model, options) {
6113
5657
  const baseSchema = import_zod2.z.strictObject({
6114
- where: this.makeWhereSchema(model, true),
6115
- create: this.makeCreateDataSchema(model, false),
6116
- update: this.makeUpdateDataSchema(model),
6117
- select: this.makeSelectSchema(model).optional().nullable(),
6118
- include: this.makeIncludeSchema(model).optional().nullable(),
5658
+ where: this.makeWhereSchema(model, true, false, false, options),
5659
+ create: this.makeCreateDataSchema(model, false, [], false, options),
5660
+ update: this.makeUpdateDataSchema(model, [], false, options),
5661
+ select: this.makeSelectSchema(model, options).optional().nullable(),
5662
+ include: this.makeIncludeSchema(model, options).optional().nullable(),
6119
5663
  omit: this.makeOmitSchema(model).optional().nullable()
6120
5664
  });
6121
5665
  let schema = this.mergePluginArgsSchema(baseSchema, "upsert");
6122
5666
  schema = this.refineForSelectIncludeMutuallyExclusive(schema);
6123
5667
  schema = this.refineForSelectOmitMutuallyExclusive(schema);
5668
+ schema = this.refineForSelectHasTruthyField(schema);
6124
5669
  return schema;
6125
5670
  }
6126
- makeUpdateDataSchema(model, withoutFields = [], withoutRelationFields = false) {
5671
+ makeUpdateDataSchema(model, withoutFields = [], withoutRelationFields = false, options) {
5672
+ const skipRelations = withoutRelationFields || !this.shouldIncludeRelations(options);
6127
5673
  const uncheckedVariantFields = {};
6128
5674
  const checkedVariantFields = {};
6129
5675
  const modelDef = requireModel(this.schema, model);
6130
- const hasRelation = Object.entries(modelDef.fields).some(([key, value]) => value.relation && !withoutFields.includes(key));
5676
+ const hasRelation = !skipRelations && Object.entries(modelDef.fields).some(([key, value]) => value.relation && !withoutFields.includes(key));
5677
+ const nextOpts = this.nextOptions(options);
6131
5678
  Object.keys(modelDef.fields).forEach((field) => {
6132
5679
  if (withoutFields.includes(field)) {
6133
5680
  return;
6134
5681
  }
6135
5682
  const fieldDef = requireField(this.schema, model, field);
5683
+ if (fieldDef.computed || fieldDef.isDiscriminator) {
5684
+ return;
5685
+ }
6136
5686
  if (fieldDef.relation) {
6137
- if (withoutRelationFields) {
5687
+ if (skipRelations) {
6138
5688
  return;
6139
5689
  }
6140
5690
  if (!this.isModelAllowed(fieldDef.type)) {
@@ -6149,7 +5699,7 @@ var InputValidator = class {
6149
5699
  excludeFields.push(...oppositeFieldDef.relation.fields);
6150
5700
  }
6151
5701
  }
6152
- let fieldSchema = import_zod2.z.lazy(() => this.makeRelationManipulationSchema(model, field, excludeFields, "update")).optional();
5702
+ let fieldSchema = import_zod2.z.lazy(() => this.makeRelationManipulationSchema(model, field, excludeFields, "update", nextOpts)).optional();
6153
5703
  if (fieldDef.optional && !fieldDef.array) {
6154
5704
  fieldSchema = fieldSchema.nullable();
6155
5705
  }
@@ -6163,6 +5713,7 @@ var InputValidator = class {
6163
5713
  fieldSchema = import_zod2.z.union([
6164
5714
  fieldSchema,
6165
5715
  import_zod2.z.object({
5716
+ // TODO: use Decimal/BigInt for incremental updates
6166
5717
  set: this.nullableIf(import_zod2.z.number().optional(), !!fieldDef.optional).optional(),
6167
5718
  increment: import_zod2.z.number().optional(),
6168
5719
  decrement: import_zod2.z.number().optional(),
@@ -6172,7 +5723,7 @@ var InputValidator = class {
6172
5723
  ]);
6173
5724
  }
6174
5725
  if (fieldDef.array) {
6175
- const arraySchema = addListValidation(fieldSchema.array(), fieldDef.attributes);
5726
+ const arraySchema = import_zod.ZodUtils.addListValidation(fieldSchema.array(), fieldDef.attributes);
6176
5727
  fieldSchema = import_zod2.z.union([
6177
5728
  arraySchema,
6178
5729
  import_zod2.z.object({
@@ -6201,8 +5752,8 @@ var InputValidator = class {
6201
5752
  }
6202
5753
  }
6203
5754
  });
6204
- const uncheckedUpdateSchema = this.extraValidationsEnabled ? addCustomValidation(import_zod2.z.strictObject(uncheckedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(uncheckedVariantFields);
6205
- const checkedUpdateSchema = this.extraValidationsEnabled ? addCustomValidation(import_zod2.z.strictObject(checkedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(checkedVariantFields);
5755
+ const uncheckedUpdateSchema = this.extraValidationsEnabled ? import_zod.ZodUtils.addCustomValidation(import_zod2.z.strictObject(uncheckedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(uncheckedVariantFields);
5756
+ const checkedUpdateSchema = this.extraValidationsEnabled ? import_zod.ZodUtils.addCustomValidation(import_zod2.z.strictObject(checkedVariantFields), modelDef.attributes) : import_zod2.z.strictObject(checkedVariantFields);
6206
5757
  if (!hasRelation) {
6207
5758
  return uncheckedUpdateSchema;
6208
5759
  } else {
@@ -6214,32 +5765,33 @@ var InputValidator = class {
6214
5765
  }
6215
5766
  // #endregion
6216
5767
  // #region Delete
6217
- makeDeleteSchema(model) {
5768
+ makeDeleteSchema(model, options) {
6218
5769
  const baseSchema = import_zod2.z.strictObject({
6219
- where: this.makeWhereSchema(model, true),
6220
- select: this.makeSelectSchema(model).optional().nullable(),
6221
- include: this.makeIncludeSchema(model).optional().nullable(),
5770
+ where: this.makeWhereSchema(model, true, false, false, options),
5771
+ select: this.makeSelectSchema(model, options).optional().nullable(),
5772
+ include: this.makeIncludeSchema(model, options).optional().nullable(),
6222
5773
  omit: this.makeOmitSchema(model).optional().nullable()
6223
5774
  });
6224
5775
  let schema = this.mergePluginArgsSchema(baseSchema, "delete");
6225
5776
  schema = this.refineForSelectIncludeMutuallyExclusive(schema);
6226
5777
  schema = this.refineForSelectOmitMutuallyExclusive(schema);
5778
+ schema = this.refineForSelectHasTruthyField(schema);
6227
5779
  return schema;
6228
5780
  }
6229
- makeDeleteManySchema(model) {
5781
+ makeDeleteManySchema(model, options) {
6230
5782
  return this.mergePluginArgsSchema(import_zod2.z.strictObject({
6231
- where: this.makeWhereSchema(model, false).optional(),
5783
+ where: this.makeWhereSchema(model, false, false, false, options).optional(),
6232
5784
  limit: import_zod2.z.number().int().nonnegative().optional()
6233
5785
  }), "deleteMany").optional();
6234
5786
  }
6235
5787
  // #endregion
6236
5788
  // #region Count
6237
- makeCountSchema(model) {
5789
+ makeCountSchema(model, options) {
6238
5790
  return this.mergePluginArgsSchema(import_zod2.z.strictObject({
6239
- where: this.makeWhereSchema(model, false).optional(),
5791
+ where: this.makeWhereSchema(model, false, false, false, options).optional(),
6240
5792
  skip: this.makeSkipSchema().optional(),
6241
5793
  take: this.makeTakeSchema().optional(),
6242
- orderBy: this.orArray(this.makeOrderBySchema(model, true, false), true).optional(),
5794
+ orderBy: this.orArray(this.makeOrderBySchema(model, true, false, options), true).optional(),
6243
5795
  select: this.makeCountAggregateInputSchema(model).optional()
6244
5796
  }), "count").optional();
6245
5797
  }
@@ -6258,12 +5810,12 @@ var InputValidator = class {
6258
5810
  }
6259
5811
  // #endregion
6260
5812
  // #region Aggregate
6261
- makeAggregateSchema(model) {
5813
+ makeAggregateSchema(model, options) {
6262
5814
  return this.mergePluginArgsSchema(import_zod2.z.strictObject({
6263
- where: this.makeWhereSchema(model, false).optional(),
5815
+ where: this.makeWhereSchema(model, false, false, false, options).optional(),
6264
5816
  skip: this.makeSkipSchema().optional(),
6265
5817
  take: this.makeTakeSchema().optional(),
6266
- orderBy: this.orArray(this.makeOrderBySchema(model, true, false), true).optional(),
5818
+ orderBy: this.orArray(this.makeOrderBySchema(model, true, false, options), true).optional(),
6267
5819
  _count: this.makeCountAggregateInputSchema(model).optional(),
6268
5820
  _avg: this.makeSumAvgInputSchema(model).optional(),
6269
5821
  _sum: this.makeSumAvgInputSchema(model).optional(),
@@ -6291,15 +5843,17 @@ var InputValidator = class {
6291
5843
  return acc;
6292
5844
  }, {}));
6293
5845
  }
6294
- makeGroupBySchema(model) {
5846
+ // #endregion
5847
+ // #region Group By
5848
+ makeGroupBySchema(model, options) {
6295
5849
  const modelDef = requireModel(this.schema, model);
6296
5850
  const nonRelationFields = Object.keys(modelDef.fields).filter((field) => !modelDef.fields[field]?.relation);
6297
5851
  const bySchema = nonRelationFields.length > 0 ? this.orArray(import_zod2.z.enum(nonRelationFields), true) : import_zod2.z.never();
6298
5852
  const baseSchema = import_zod2.z.strictObject({
6299
- where: this.makeWhereSchema(model, false).optional(),
6300
- orderBy: this.orArray(this.makeOrderBySchema(model, false, true), true).optional(),
5853
+ where: this.makeWhereSchema(model, false, false, false, options).optional(),
5854
+ orderBy: this.orArray(this.makeOrderBySchema(model, false, true, options), true).optional(),
6301
5855
  by: bySchema,
6302
- having: this.makeHavingSchema(model).optional(),
5856
+ having: this.makeHavingSchema(model, options).optional(),
6303
5857
  skip: this.makeSkipSchema().optional(),
6304
5858
  take: this.makeTakeSchema().optional(),
6305
5859
  _count: this.makeCountAggregateInputSchema(model).optional(),
@@ -6310,9 +5864,7 @@ var InputValidator = class {
6310
5864
  });
6311
5865
  let schema = this.mergePluginArgsSchema(baseSchema, "groupBy");
6312
5866
  schema = schema.refine((value) => {
6313
- const bys = typeof value.by === "string" ? [
6314
- value.by
6315
- ] : value.by;
5867
+ const bys = (0, import_common_helpers8.enumerate)(value.by);
6316
5868
  if (value.having && typeof value.having === "object") {
6317
5869
  for (const [key, val] of Object.entries(value.having)) {
6318
5870
  if (AggregateOperators.includes(key)) {
@@ -6332,14 +5884,13 @@ var InputValidator = class {
6332
5884
  return true;
6333
5885
  }, 'fields in "having" must be in "by"');
6334
5886
  schema = schema.refine((value) => {
6335
- const bys = typeof value.by === "string" ? [
6336
- value.by
6337
- ] : value.by;
6338
- if (value.orderBy && Object.keys(value.orderBy).filter((f) => !AggregateOperators.includes(f)).some((key) => !bys.includes(key))) {
6339
- return false;
6340
- } else {
6341
- return true;
5887
+ const bys = (0, import_common_helpers8.enumerate)(value.by);
5888
+ for (const orderBy of (0, import_common_helpers8.enumerate)(value.orderBy)) {
5889
+ if (orderBy && Object.keys(orderBy).filter((f) => !AggregateOperators.includes(f)).some((key) => !bys.includes(key))) {
5890
+ return false;
5891
+ }
6342
5892
  }
5893
+ return true;
6343
5894
  }, 'fields in "orderBy" must be in "by"');
6344
5895
  return schema;
6345
5896
  }
@@ -6349,7 +5900,7 @@ var InputValidator = class {
6349
5900
  continue;
6350
5901
  }
6351
5902
  if (LOGICAL_COMBINATORS.includes(key)) {
6352
- if ((0, import_common_helpers9.enumerate)(value).every((v) => this.onlyAggregationFields(v))) {
5903
+ if ((0, import_common_helpers8.enumerate)(value).every((v) => this.onlyAggregationFields(v))) {
6353
5904
  continue;
6354
5905
  }
6355
5906
  }
@@ -6357,12 +5908,12 @@ var InputValidator = class {
6357
5908
  }
6358
5909
  return true;
6359
5910
  }
6360
- makeHavingSchema(model) {
6361
- return this.makeWhereSchema(model, false, true, true);
5911
+ makeHavingSchema(model, options) {
5912
+ return this.makeWhereSchema(model, false, true, true, options);
6362
5913
  }
6363
5914
  // #endregion
6364
5915
  // #region Procedures
6365
- makeProcedureParamSchema(param) {
5916
+ makeProcedureParamSchema(param, _options) {
6366
5917
  let schema;
6367
5918
  if (isTypeDef(this.schema, param.type)) {
6368
5919
  schema = this.makeTypeDefSchema(param.type);
@@ -6385,21 +5936,54 @@ var InputValidator = class {
6385
5936
  return schema;
6386
5937
  }
6387
5938
  // #endregion
6388
- // #region Cache Management
6389
- getCache(cacheKey) {
6390
- return this.schemaCache.get(cacheKey);
6391
- }
6392
- setCache(cacheKey, schema) {
6393
- return this.schemaCache.set(cacheKey, schema);
5939
+ // #region Plugin Args
5940
+ mergePluginArgsSchema(schema, operation) {
5941
+ let result = schema;
5942
+ for (const plugin of this.plugins ?? []) {
5943
+ if (plugin.queryArgs) {
5944
+ const pluginSchema = this.getPluginExtQueryArgsSchema(plugin, operation);
5945
+ if (pluginSchema) {
5946
+ result = result.extend(pluginSchema.shape);
5947
+ }
5948
+ }
5949
+ }
5950
+ return result.strict();
6394
5951
  }
6395
- // @ts-ignore
6396
- printCacheStats(detailed = false) {
6397
- console.log("Schema cache size:", this.schemaCache.size);
6398
- if (detailed) {
6399
- for (const key of this.schemaCache.keys()) {
6400
- console.log(` ${key}`);
5952
+ getPluginExtQueryArgsSchema(plugin, operation) {
5953
+ if (!plugin.queryArgs) {
5954
+ return void 0;
5955
+ }
5956
+ let result;
5957
+ if (operation in plugin.queryArgs && plugin.queryArgs[operation]) {
5958
+ result = plugin.queryArgs[operation];
5959
+ } else if (operation === "upsert") {
5960
+ const createSchema = "$create" in plugin.queryArgs && plugin.queryArgs["$create"] ? plugin.queryArgs["$create"] : void 0;
5961
+ const updateSchema = "$update" in plugin.queryArgs && plugin.queryArgs["$update"] ? plugin.queryArgs["$update"] : void 0;
5962
+ if (createSchema && updateSchema) {
5963
+ (0, import_common_helpers8.invariant)(createSchema instanceof import_zod2.ZodObject, "Plugin extended query args schema must be a Zod object");
5964
+ (0, import_common_helpers8.invariant)(updateSchema instanceof import_zod2.ZodObject, "Plugin extended query args schema must be a Zod object");
5965
+ result = createSchema.extend(updateSchema.shape);
5966
+ } else if (createSchema) {
5967
+ result = createSchema;
5968
+ } else if (updateSchema) {
5969
+ result = updateSchema;
6401
5970
  }
5971
+ } else if (
5972
+ // then comes grouped operations: $create, $read, $update, $delete
5973
+ CoreCreateOperations.includes(operation) && "$create" in plugin.queryArgs && plugin.queryArgs["$create"]
5974
+ ) {
5975
+ result = plugin.queryArgs["$create"];
5976
+ } else if (CoreReadOperations.includes(operation) && "$read" in plugin.queryArgs && plugin.queryArgs["$read"]) {
5977
+ result = plugin.queryArgs["$read"];
5978
+ } else if (CoreUpdateOperations.includes(operation) && "$update" in plugin.queryArgs && plugin.queryArgs["$update"]) {
5979
+ result = plugin.queryArgs["$update"];
5980
+ } else if (CoreDeleteOperations.includes(operation) && "$delete" in plugin.queryArgs && plugin.queryArgs["$delete"]) {
5981
+ result = plugin.queryArgs["$delete"];
5982
+ } else if ("$all" in plugin.queryArgs && plugin.queryArgs["$all"]) {
5983
+ result = plugin.queryArgs["$all"];
6402
5984
  }
5985
+ (0, import_common_helpers8.invariant)(result === void 0 || result instanceof import_zod2.ZodObject, "Plugin extended query args schema must be a Zod object");
5986
+ return result;
6403
5987
  }
6404
5988
  // #endregion
6405
5989
  // #region Helpers
@@ -6415,6 +5999,15 @@ var InputValidator = class {
6415
5999
  refineForSelectOmitMutuallyExclusive(schema) {
6416
6000
  return schema.refine((value) => !(value["select"] && value["omit"]), '"select" and "omit" cannot be used together');
6417
6001
  }
6002
+ refineForSelectHasTruthyField(schema) {
6003
+ return schema.refine((value) => {
6004
+ const select = value["select"];
6005
+ if (!select || typeof select !== "object") {
6006
+ return true;
6007
+ }
6008
+ return Object.values(select).some((v) => v);
6009
+ }, '"select" must have at least one truthy value');
6010
+ }
6418
6011
  nullableIf(schema, nullable) {
6419
6012
  return nullable ? schema.nullable() : schema;
6420
6013
  }
@@ -6432,7 +6025,7 @@ var InputValidator = class {
6432
6025
  }
6433
6026
  /**
6434
6027
  * Gets the effective set of allowed FilterKind values for a specific model and field.
6435
- * Respects the precedence: field-level > model-level $all > global $all.
6028
+ * Respects the precedence: model[field] > model.$all > $all[field] > $all.$all.
6436
6029
  */
6437
6030
  getEffectiveFilterKinds(model, field) {
6438
6031
  if (!model) {
@@ -6442,21 +6035,27 @@ var InputValidator = class {
6442
6035
  if (!slicing?.models) {
6443
6036
  return void 0;
6444
6037
  }
6445
- const modelConfig = slicing.models[model];
6038
+ const modelsRecord = slicing.models;
6039
+ const modelConfig = modelsRecord[(0, import_common_helpers8.lowerCaseFirst)(model)];
6446
6040
  if (modelConfig?.fields) {
6447
6041
  const fieldConfig = modelConfig.fields[field];
6448
6042
  if (fieldConfig) {
6449
6043
  return this.computeFilterKinds(fieldConfig.includedFilterKinds, fieldConfig.excludedFilterKinds);
6450
6044
  }
6451
- const allFieldsConfig = modelConfig.fields.$all;
6045
+ const allFieldsConfig = modelConfig.fields["$all"];
6452
6046
  if (allFieldsConfig) {
6453
6047
  return this.computeFilterKinds(allFieldsConfig.includedFilterKinds, allFieldsConfig.excludedFilterKinds);
6454
6048
  }
6455
6049
  }
6456
- const allModelsConfig = slicing.models.$all;
6050
+ const allModelsConfig = modelsRecord["$all"];
6457
6051
  if (allModelsConfig?.fields) {
6458
- if (allModelsConfig.fields.$all) {
6459
- return this.computeFilterKinds(allModelsConfig.fields.$all.includedFilterKinds, allModelsConfig.fields.$all.excludedFilterKinds);
6052
+ const allModelsFieldConfig = allModelsConfig.fields[field];
6053
+ if (allModelsFieldConfig) {
6054
+ return this.computeFilterKinds(allModelsFieldConfig.includedFilterKinds, allModelsFieldConfig.excludedFilterKinds);
6055
+ }
6056
+ const allModelsAllFieldsConfig = allModelsConfig.fields["$all"];
6057
+ if (allModelsAllFieldsConfig) {
6058
+ return this.computeFilterKinds(allModelsAllFieldsConfig.includedFilterKinds, allModelsAllFieldsConfig.excludedFilterKinds);
6460
6059
  }
6461
6060
  }
6462
6061
  return void 0;
@@ -6538,18 +6137,20 @@ _ts_decorate([
6538
6137
  _ts_metadata("design:type", Function),
6539
6138
  _ts_metadata("design:paramtypes", [
6540
6139
  String,
6541
- typeof CoreCrudOperations === "undefined" ? Object : CoreCrudOperations
6140
+ typeof CoreCrudOperations === "undefined" ? Object : CoreCrudOperations,
6141
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6542
6142
  ]),
6543
6143
  _ts_metadata("design:returntype", void 0)
6544
- ], InputValidator.prototype, "makeFindSchema", null);
6144
+ ], ZodSchemaFactory.prototype, "makeFindSchema", null);
6545
6145
  _ts_decorate([
6546
6146
  cache(),
6547
6147
  _ts_metadata("design:type", Function),
6548
6148
  _ts_metadata("design:paramtypes", [
6549
- String
6149
+ typeof Model === "undefined" ? Object : Model,
6150
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6550
6151
  ]),
6551
- _ts_metadata("design:returntype", void 0)
6552
- ], InputValidator.prototype, "makeExistsSchema", null);
6152
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6153
+ ], ZodSchemaFactory.prototype, "makeExistsSchema", null);
6553
6154
  _ts_decorate([
6554
6155
  cache(),
6555
6156
  _ts_metadata("design:type", Function),
@@ -6557,15 +6158,15 @@ _ts_decorate([
6557
6158
  String
6558
6159
  ]),
6559
6160
  _ts_metadata("design:returntype", void 0)
6560
- ], InputValidator.prototype, "makeEnumSchema", null);
6161
+ ], ZodSchemaFactory.prototype, "makeEnumSchema", null);
6561
6162
  _ts_decorate([
6562
6163
  cache(),
6563
6164
  _ts_metadata("design:type", Function),
6564
6165
  _ts_metadata("design:paramtypes", [
6565
6166
  String
6566
6167
  ]),
6567
- _ts_metadata("design:returntype", typeof import_zod2.z === "undefined" || typeof import_zod2.z.ZodType === "undefined" ? Object : import_zod2.z.ZodType)
6568
- ], InputValidator.prototype, "makeTypeDefSchema", null);
6168
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6169
+ ], ZodSchemaFactory.prototype, "makeTypeDefSchema", null);
6569
6170
  _ts_decorate([
6570
6171
  cache(),
6571
6172
  _ts_metadata("design:type", Function),
@@ -6573,10 +6174,11 @@ _ts_decorate([
6573
6174
  String,
6574
6175
  Boolean,
6575
6176
  void 0,
6576
- void 0
6177
+ void 0,
6178
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6577
6179
  ]),
6578
6180
  _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6579
- ], InputValidator.prototype, "makeWhereSchema", null);
6181
+ ], ZodSchemaFactory.prototype, "makeWhereSchema", null);
6580
6182
  _ts_decorate([
6581
6183
  cache(),
6582
6184
  _ts_metadata("design:type", Function),
@@ -6585,7 +6187,7 @@ _ts_decorate([
6585
6187
  typeof FieldInfo === "undefined" ? Object : FieldInfo
6586
6188
  ]),
6587
6189
  _ts_metadata("design:returntype", void 0)
6588
- ], InputValidator.prototype, "makeTypedJsonFilterSchema", null);
6190
+ ], ZodSchemaFactory.prototype, "makeTypedJsonFilterSchema", null);
6589
6191
  _ts_decorate([
6590
6192
  cache(),
6591
6193
  _ts_metadata("design:type", Function),
@@ -6596,7 +6198,7 @@ _ts_decorate([
6596
6198
  Boolean
6597
6199
  ]),
6598
6200
  _ts_metadata("design:returntype", void 0)
6599
- ], InputValidator.prototype, "makeEnumFilterSchema", null);
6201
+ ], ZodSchemaFactory.prototype, "makeEnumFilterSchema", null);
6600
6202
  _ts_decorate([
6601
6203
  cache(),
6602
6204
  _ts_metadata("design:type", Function),
@@ -6605,7 +6207,7 @@ _ts_decorate([
6605
6207
  typeof FieldInfo === "undefined" ? Object : FieldInfo
6606
6208
  ]),
6607
6209
  _ts_metadata("design:returntype", void 0)
6608
- ], InputValidator.prototype, "makeArrayFilterSchema", null);
6210
+ ], ZodSchemaFactory.prototype, "makeArrayFilterSchema", null);
6609
6211
  _ts_decorate([
6610
6212
  cache(),
6611
6213
  _ts_metadata("design:type", Function),
@@ -6616,7 +6218,7 @@ _ts_decorate([
6616
6218
  void 0
6617
6219
  ]),
6618
6220
  _ts_metadata("design:returntype", void 0)
6619
- ], InputValidator.prototype, "makePrimitiveFilterSchema", null);
6221
+ ], ZodSchemaFactory.prototype, "makePrimitiveFilterSchema", null);
6620
6222
  _ts_decorate([
6621
6223
  cache(),
6622
6224
  _ts_metadata("design:type", Function),
@@ -6626,7 +6228,7 @@ _ts_decorate([
6626
6228
  Boolean
6627
6229
  ]),
6628
6230
  _ts_metadata("design:returntype", void 0)
6629
- ], InputValidator.prototype, "makeJsonFilterSchema", null);
6231
+ ], ZodSchemaFactory.prototype, "makeJsonFilterSchema", null);
6630
6232
  _ts_decorate([
6631
6233
  cache(),
6632
6234
  _ts_metadata("design:type", Function),
@@ -6636,7 +6238,7 @@ _ts_decorate([
6636
6238
  Object
6637
6239
  ]),
6638
6240
  _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6639
- ], InputValidator.prototype, "makeDateTimeFilterSchema", null);
6241
+ ], ZodSchemaFactory.prototype, "makeDateTimeFilterSchema", null);
6640
6242
  _ts_decorate([
6641
6243
  cache(),
6642
6244
  _ts_metadata("design:type", Function),
@@ -6646,7 +6248,7 @@ _ts_decorate([
6646
6248
  Object
6647
6249
  ]),
6648
6250
  _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6649
- ], InputValidator.prototype, "makeBooleanFilterSchema", null);
6251
+ ], ZodSchemaFactory.prototype, "makeBooleanFilterSchema", null);
6650
6252
  _ts_decorate([
6651
6253
  cache(),
6652
6254
  _ts_metadata("design:type", Function),
@@ -6656,32 +6258,35 @@ _ts_decorate([
6656
6258
  Object
6657
6259
  ]),
6658
6260
  _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6659
- ], InputValidator.prototype, "makeBytesFilterSchema", null);
6261
+ ], ZodSchemaFactory.prototype, "makeBytesFilterSchema", null);
6660
6262
  _ts_decorate([
6661
6263
  cache(),
6662
6264
  _ts_metadata("design:type", Function),
6663
6265
  _ts_metadata("design:paramtypes", [
6664
- String
6266
+ String,
6267
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6665
6268
  ]),
6666
6269
  _ts_metadata("design:returntype", void 0)
6667
- ], InputValidator.prototype, "makeSelectSchema", null);
6270
+ ], ZodSchemaFactory.prototype, "makeSelectSchema", null);
6668
6271
  _ts_decorate([
6669
6272
  cache(),
6670
6273
  _ts_metadata("design:type", Function),
6671
6274
  _ts_metadata("design:paramtypes", [
6672
- String
6275
+ String,
6276
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6673
6277
  ]),
6674
6278
  _ts_metadata("design:returntype", void 0)
6675
- ], InputValidator.prototype, "makeCountSelectionSchema", null);
6279
+ ], ZodSchemaFactory.prototype, "makeCountSelectionSchema", null);
6676
6280
  _ts_decorate([
6677
6281
  cache(),
6678
6282
  _ts_metadata("design:type", Function),
6679
6283
  _ts_metadata("design:paramtypes", [
6680
6284
  String,
6681
- String
6285
+ String,
6286
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6682
6287
  ]),
6683
6288
  _ts_metadata("design:returntype", void 0)
6684
- ], InputValidator.prototype, "makeRelationSelectIncludeSchema", null);
6289
+ ], ZodSchemaFactory.prototype, "makeRelationSelectIncludeSchema", null);
6685
6290
  _ts_decorate([
6686
6291
  cache(),
6687
6292
  _ts_metadata("design:type", Function),
@@ -6689,25 +6294,27 @@ _ts_decorate([
6689
6294
  String
6690
6295
  ]),
6691
6296
  _ts_metadata("design:returntype", void 0)
6692
- ], InputValidator.prototype, "makeOmitSchema", null);
6297
+ ], ZodSchemaFactory.prototype, "makeOmitSchema", null);
6693
6298
  _ts_decorate([
6694
6299
  cache(),
6695
6300
  _ts_metadata("design:type", Function),
6696
6301
  _ts_metadata("design:paramtypes", [
6697
- String
6302
+ String,
6303
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6698
6304
  ]),
6699
6305
  _ts_metadata("design:returntype", void 0)
6700
- ], InputValidator.prototype, "makeIncludeSchema", null);
6306
+ ], ZodSchemaFactory.prototype, "makeIncludeSchema", null);
6701
6307
  _ts_decorate([
6702
6308
  cache(),
6703
6309
  _ts_metadata("design:type", Function),
6704
6310
  _ts_metadata("design:paramtypes", [
6705
6311
  String,
6706
6312
  Boolean,
6707
- Boolean
6313
+ Boolean,
6314
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6708
6315
  ]),
6709
6316
  _ts_metadata("design:returntype", void 0)
6710
- ], InputValidator.prototype, "makeOrderBySchema", null);
6317
+ ], ZodSchemaFactory.prototype, "makeOrderBySchema", null);
6711
6318
  _ts_decorate([
6712
6319
  cache(),
6713
6320
  _ts_metadata("design:type", Function),
@@ -6715,31 +6322,34 @@ _ts_decorate([
6715
6322
  String
6716
6323
  ]),
6717
6324
  _ts_metadata("design:returntype", void 0)
6718
- ], InputValidator.prototype, "makeDistinctSchema", null);
6325
+ ], ZodSchemaFactory.prototype, "makeDistinctSchema", null);
6719
6326
  _ts_decorate([
6720
6327
  cache(),
6721
6328
  _ts_metadata("design:type", Function),
6722
6329
  _ts_metadata("design:paramtypes", [
6723
- String
6330
+ typeof Model === "undefined" ? Object : Model,
6331
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6724
6332
  ]),
6725
- _ts_metadata("design:returntype", void 0)
6726
- ], InputValidator.prototype, "makeCreateSchema", null);
6333
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6334
+ ], ZodSchemaFactory.prototype, "makeCreateSchema", null);
6727
6335
  _ts_decorate([
6728
6336
  cache(),
6729
6337
  _ts_metadata("design:type", Function),
6730
6338
  _ts_metadata("design:paramtypes", [
6731
- String
6339
+ typeof Model === "undefined" ? Object : Model,
6340
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6732
6341
  ]),
6733
- _ts_metadata("design:returntype", void 0)
6734
- ], InputValidator.prototype, "makeCreateManySchema", null);
6342
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6343
+ ], ZodSchemaFactory.prototype, "makeCreateManySchema", null);
6735
6344
  _ts_decorate([
6736
6345
  cache(),
6737
6346
  _ts_metadata("design:type", Function),
6738
6347
  _ts_metadata("design:paramtypes", [
6739
- String
6348
+ typeof Model === "undefined" ? Object : Model,
6349
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6740
6350
  ]),
6741
- _ts_metadata("design:returntype", void 0)
6742
- ], InputValidator.prototype, "makeCreateManyAndReturnSchema", null);
6351
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6352
+ ], ZodSchemaFactory.prototype, "makeCreateManyAndReturnSchema", null);
6743
6353
  _ts_decorate([
6744
6354
  cache(),
6745
6355
  _ts_metadata("design:type", Function),
@@ -6747,10 +6357,11 @@ _ts_decorate([
6747
6357
  String,
6748
6358
  Boolean,
6749
6359
  Array,
6750
- void 0
6360
+ void 0,
6361
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6751
6362
  ]),
6752
6363
  _ts_metadata("design:returntype", void 0)
6753
- ], InputValidator.prototype, "makeCreateDataSchema", null);
6364
+ ], ZodSchemaFactory.prototype, "makeCreateDataSchema", null);
6754
6365
  _ts_decorate([
6755
6366
  cache(),
6756
6367
  _ts_metadata("design:type", Function),
@@ -6758,132 +6369,147 @@ _ts_decorate([
6758
6369
  String,
6759
6370
  String,
6760
6371
  Array,
6761
- String
6372
+ String,
6373
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6762
6374
  ]),
6763
6375
  _ts_metadata("design:returntype", void 0)
6764
- ], InputValidator.prototype, "makeRelationManipulationSchema", null);
6376
+ ], ZodSchemaFactory.prototype, "makeRelationManipulationSchema", null);
6765
6377
  _ts_decorate([
6766
6378
  cache(),
6767
6379
  _ts_metadata("design:type", Function),
6768
6380
  _ts_metadata("design:paramtypes", [
6769
6381
  String,
6770
- Boolean
6382
+ Boolean,
6383
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6771
6384
  ]),
6772
6385
  _ts_metadata("design:returntype", void 0)
6773
- ], InputValidator.prototype, "makeSetDataSchema", null);
6386
+ ], ZodSchemaFactory.prototype, "makeSetDataSchema", null);
6774
6387
  _ts_decorate([
6775
6388
  cache(),
6776
6389
  _ts_metadata("design:type", Function),
6777
6390
  _ts_metadata("design:paramtypes", [
6778
6391
  String,
6779
- Boolean
6392
+ Boolean,
6393
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6780
6394
  ]),
6781
6395
  _ts_metadata("design:returntype", void 0)
6782
- ], InputValidator.prototype, "makeConnectDataSchema", null);
6396
+ ], ZodSchemaFactory.prototype, "makeConnectDataSchema", null);
6783
6397
  _ts_decorate([
6784
6398
  cache(),
6785
6399
  _ts_metadata("design:type", Function),
6786
6400
  _ts_metadata("design:paramtypes", [
6787
6401
  String,
6788
- Boolean
6402
+ Boolean,
6403
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6789
6404
  ]),
6790
6405
  _ts_metadata("design:returntype", void 0)
6791
- ], InputValidator.prototype, "makeDisconnectDataSchema", null);
6406
+ ], ZodSchemaFactory.prototype, "makeDisconnectDataSchema", null);
6792
6407
  _ts_decorate([
6793
6408
  cache(),
6794
6409
  _ts_metadata("design:type", Function),
6795
6410
  _ts_metadata("design:paramtypes", [
6796
6411
  String,
6797
6412
  Boolean,
6798
- Boolean
6413
+ Boolean,
6414
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6799
6415
  ]),
6800
6416
  _ts_metadata("design:returntype", void 0)
6801
- ], InputValidator.prototype, "makeDeleteRelationDataSchema", null);
6417
+ ], ZodSchemaFactory.prototype, "makeDeleteRelationDataSchema", null);
6802
6418
  _ts_decorate([
6803
6419
  cache(),
6804
6420
  _ts_metadata("design:type", Function),
6805
6421
  _ts_metadata("design:paramtypes", [
6806
6422
  String,
6807
6423
  Boolean,
6808
- Array
6424
+ Array,
6425
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6809
6426
  ]),
6810
6427
  _ts_metadata("design:returntype", void 0)
6811
- ], InputValidator.prototype, "makeConnectOrCreateDataSchema", null);
6428
+ ], ZodSchemaFactory.prototype, "makeConnectOrCreateDataSchema", null);
6812
6429
  _ts_decorate([
6813
6430
  cache(),
6814
6431
  _ts_metadata("design:type", Function),
6815
6432
  _ts_metadata("design:paramtypes", [
6816
6433
  String,
6817
- Array
6434
+ Array,
6435
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6818
6436
  ]),
6819
6437
  _ts_metadata("design:returntype", void 0)
6820
- ], InputValidator.prototype, "makeCreateManyDataSchema", null);
6438
+ ], ZodSchemaFactory.prototype, "makeCreateManyPayloadSchema", null);
6821
6439
  _ts_decorate([
6822
6440
  cache(),
6823
6441
  _ts_metadata("design:type", Function),
6824
6442
  _ts_metadata("design:paramtypes", [
6825
- String
6443
+ typeof Model === "undefined" ? Object : Model,
6444
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6826
6445
  ]),
6827
- _ts_metadata("design:returntype", void 0)
6828
- ], InputValidator.prototype, "makeUpdateSchema", null);
6446
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6447
+ ], ZodSchemaFactory.prototype, "makeUpdateSchema", null);
6829
6448
  _ts_decorate([
6830
6449
  cache(),
6831
6450
  _ts_metadata("design:type", Function),
6832
6451
  _ts_metadata("design:paramtypes", [
6833
- String
6452
+ typeof Model === "undefined" ? Object : Model,
6453
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6834
6454
  ]),
6835
- _ts_metadata("design:returntype", void 0)
6836
- ], InputValidator.prototype, "makeUpdateManySchema", null);
6455
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6456
+ ], ZodSchemaFactory.prototype, "makeUpdateManySchema", null);
6837
6457
  _ts_decorate([
6838
6458
  cache(),
6839
6459
  _ts_metadata("design:type", Function),
6840
6460
  _ts_metadata("design:paramtypes", [
6841
- String
6461
+ typeof Model === "undefined" ? Object : Model,
6462
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6842
6463
  ]),
6843
- _ts_metadata("design:returntype", void 0)
6844
- ], InputValidator.prototype, "makeUpdateManyAndReturnSchema", null);
6464
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6465
+ ], ZodSchemaFactory.prototype, "makeUpdateManyAndReturnSchema", null);
6845
6466
  _ts_decorate([
6846
6467
  cache(),
6847
6468
  _ts_metadata("design:type", Function),
6848
6469
  _ts_metadata("design:paramtypes", [
6849
- String
6470
+ typeof Model === "undefined" ? Object : Model,
6471
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6850
6472
  ]),
6851
- _ts_metadata("design:returntype", void 0)
6852
- ], InputValidator.prototype, "makeUpsertSchema", null);
6473
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6474
+ ], ZodSchemaFactory.prototype, "makeUpsertSchema", null);
6853
6475
  _ts_decorate([
6854
6476
  cache(),
6855
6477
  _ts_metadata("design:type", Function),
6856
6478
  _ts_metadata("design:paramtypes", [
6857
6479
  String,
6858
6480
  Array,
6859
- void 0
6481
+ void 0,
6482
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6860
6483
  ]),
6861
6484
  _ts_metadata("design:returntype", void 0)
6862
- ], InputValidator.prototype, "makeUpdateDataSchema", null);
6485
+ ], ZodSchemaFactory.prototype, "makeUpdateDataSchema", null);
6863
6486
  _ts_decorate([
6864
6487
  cache(),
6865
6488
  _ts_metadata("design:type", Function),
6866
6489
  _ts_metadata("design:paramtypes", [
6867
- String
6490
+ typeof Model === "undefined" ? Object : Model,
6491
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6868
6492
  ]),
6869
- _ts_metadata("design:returntype", void 0)
6870
- ], InputValidator.prototype, "makeDeleteSchema", null);
6493
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6494
+ ], ZodSchemaFactory.prototype, "makeDeleteSchema", null);
6871
6495
  _ts_decorate([
6872
6496
  cache(),
6873
6497
  _ts_metadata("design:type", Function),
6874
6498
  _ts_metadata("design:paramtypes", [
6875
- String
6499
+ typeof Model === "undefined" ? Object : Model,
6500
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6876
6501
  ]),
6877
- _ts_metadata("design:returntype", void 0)
6878
- ], InputValidator.prototype, "makeDeleteManySchema", null);
6502
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6503
+ ], ZodSchemaFactory.prototype, "makeDeleteManySchema", null);
6879
6504
  _ts_decorate([
6880
6505
  cache(),
6881
6506
  _ts_metadata("design:type", Function),
6882
6507
  _ts_metadata("design:paramtypes", [
6883
- String
6508
+ typeof Model === "undefined" ? Object : Model,
6509
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6884
6510
  ]),
6885
- _ts_metadata("design:returntype", void 0)
6886
- ], InputValidator.prototype, "makeCountSchema", null);
6511
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6512
+ ], ZodSchemaFactory.prototype, "makeCountSchema", null);
6887
6513
  _ts_decorate([
6888
6514
  cache(),
6889
6515
  _ts_metadata("design:type", Function),
@@ -6891,15 +6517,16 @@ _ts_decorate([
6891
6517
  String
6892
6518
  ]),
6893
6519
  _ts_metadata("design:returntype", void 0)
6894
- ], InputValidator.prototype, "makeCountAggregateInputSchema", null);
6520
+ ], ZodSchemaFactory.prototype, "makeCountAggregateInputSchema", null);
6895
6521
  _ts_decorate([
6896
6522
  cache(),
6897
6523
  _ts_metadata("design:type", Function),
6898
6524
  _ts_metadata("design:paramtypes", [
6899
- String
6525
+ typeof Model === "undefined" ? Object : Model,
6526
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6900
6527
  ]),
6901
- _ts_metadata("design:returntype", void 0)
6902
- ], InputValidator.prototype, "makeAggregateSchema", null);
6528
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6529
+ ], ZodSchemaFactory.prototype, "makeAggregateSchema", null);
6903
6530
  _ts_decorate([
6904
6531
  cache(),
6905
6532
  _ts_metadata("design:type", Function),
@@ -6907,7 +6534,7 @@ _ts_decorate([
6907
6534
  String
6908
6535
  ]),
6909
6536
  _ts_metadata("design:returntype", void 0)
6910
- ], InputValidator.prototype, "makeSumAvgInputSchema", null);
6537
+ ], ZodSchemaFactory.prototype, "makeSumAvgInputSchema", null);
6911
6538
  _ts_decorate([
6912
6539
  cache(),
6913
6540
  _ts_metadata("design:type", Function),
@@ -6915,35 +6542,168 @@ _ts_decorate([
6915
6542
  String
6916
6543
  ]),
6917
6544
  _ts_metadata("design:returntype", void 0)
6918
- ], InputValidator.prototype, "makeMinMaxInputSchema", null);
6545
+ ], ZodSchemaFactory.prototype, "makeMinMaxInputSchema", null);
6919
6546
  _ts_decorate([
6920
6547
  cache(),
6921
6548
  _ts_metadata("design:type", Function),
6922
6549
  _ts_metadata("design:paramtypes", [
6923
- String
6550
+ typeof Model === "undefined" ? Object : Model,
6551
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6924
6552
  ]),
6925
- _ts_metadata("design:returntype", void 0)
6926
- ], InputValidator.prototype, "makeGroupBySchema", null);
6553
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6554
+ ], ZodSchemaFactory.prototype, "makeGroupBySchema", null);
6927
6555
  _ts_decorate([
6928
6556
  cache(),
6929
6557
  _ts_metadata("design:type", Function),
6930
6558
  _ts_metadata("design:paramtypes", [
6931
- Object
6559
+ Object,
6560
+ typeof CreateSchemaOptions === "undefined" ? Object : CreateSchemaOptions
6932
6561
  ]),
6933
- _ts_metadata("design:returntype", typeof import_zod2.z === "undefined" || typeof import_zod2.z.ZodType === "undefined" ? Object : import_zod2.z.ZodType)
6934
- ], InputValidator.prototype, "makeProcedureParamSchema", null);
6562
+ _ts_metadata("design:returntype", typeof import_zod2.ZodType === "undefined" ? Object : import_zod2.ZodType)
6563
+ ], ZodSchemaFactory.prototype, "makeProcedureParamSchema", null);
6935
6564
  _ts_decorate([
6936
6565
  cache(),
6937
6566
  _ts_metadata("design:type", Function),
6938
6567
  _ts_metadata("design:paramtypes", []),
6939
6568
  _ts_metadata("design:returntype", void 0)
6940
- ], InputValidator.prototype, "makeSkipSchema", null);
6569
+ ], ZodSchemaFactory.prototype, "makeSkipSchema", null);
6941
6570
  _ts_decorate([
6942
6571
  cache(),
6943
6572
  _ts_metadata("design:type", Function),
6944
6573
  _ts_metadata("design:paramtypes", []),
6945
6574
  _ts_metadata("design:returntype", void 0)
6946
- ], InputValidator.prototype, "makeTakeSchema", null);
6575
+ ], ZodSchemaFactory.prototype, "makeTakeSchema", null);
6576
+
6577
+ // src/client/crud/validator/validator.ts
6578
+ var InputValidator = class {
6579
+ static {
6580
+ __name(this, "InputValidator");
6581
+ }
6582
+ client;
6583
+ zodFactory;
6584
+ constructor(client) {
6585
+ this.client = client;
6586
+ this.zodFactory = new ZodSchemaFactory(client);
6587
+ }
6588
+ // #region Entry points
6589
+ validateFindArgs(model, args, operation) {
6590
+ return this.validate(model, operation, (model2) => (0, import_ts_pattern14.match)(operation).with("findFirst", () => this.zodFactory.makeFindFirstSchema(model2)).with("findUnique", () => this.zodFactory.makeFindUniqueSchema(model2)).with("findMany", () => this.zodFactory.makeFindManySchema(model2)).exhaustive(), args);
6591
+ }
6592
+ validateExistsArgs(model, args) {
6593
+ return this.validate(model, "exists", (model2) => this.zodFactory.makeExistsSchema(model2), args);
6594
+ }
6595
+ validateCreateArgs(model, args) {
6596
+ return this.validate(model, "create", (model2) => this.zodFactory.makeCreateSchema(model2), args);
6597
+ }
6598
+ validateCreateManyArgs(model, args) {
6599
+ return this.validate(model, "createMany", (model2) => this.zodFactory.makeCreateManySchema(model2), args);
6600
+ }
6601
+ validateCreateManyAndReturnArgs(model, args) {
6602
+ return this.validate(model, "createManyAndReturn", (model2) => this.zodFactory.makeCreateManyAndReturnSchema(model2), args);
6603
+ }
6604
+ validateUpdateArgs(model, args) {
6605
+ return this.validate(model, "update", (model2) => this.zodFactory.makeUpdateSchema(model2), args);
6606
+ }
6607
+ validateUpdateManyArgs(model, args) {
6608
+ return this.validate(model, "updateMany", (model2) => this.zodFactory.makeUpdateManySchema(model2), args);
6609
+ }
6610
+ validateUpdateManyAndReturnArgs(model, args) {
6611
+ return this.validate(model, "updateManyAndReturn", (model2) => this.zodFactory.makeUpdateManyAndReturnSchema(model2), args);
6612
+ }
6613
+ validateUpsertArgs(model, args) {
6614
+ return this.validate(model, "upsert", (model2) => this.zodFactory.makeUpsertSchema(model2), args);
6615
+ }
6616
+ validateDeleteArgs(model, args) {
6617
+ return this.validate(model, "delete", (model2) => this.zodFactory.makeDeleteSchema(model2), args);
6618
+ }
6619
+ validateDeleteManyArgs(model, args) {
6620
+ return this.validate(model, "deleteMany", (model2) => this.zodFactory.makeDeleteManySchema(model2), args);
6621
+ }
6622
+ validateCountArgs(model, args) {
6623
+ return this.validate(model, "count", (model2) => this.zodFactory.makeCountSchema(model2), args);
6624
+ }
6625
+ validateAggregateArgs(model, args) {
6626
+ return this.validate(model, "aggregate", (model2) => this.zodFactory.makeAggregateSchema(model2), args);
6627
+ }
6628
+ validateGroupByArgs(model, args) {
6629
+ return this.validate(model, "groupBy", (model2) => this.zodFactory.makeGroupBySchema(model2), args);
6630
+ }
6631
+ // TODO: turn it into a Zod schema and cache
6632
+ validateProcedureInput(proc, input) {
6633
+ const procDef = (this.client.$schema.procedures ?? {})[proc];
6634
+ (0, import_common_helpers9.invariant)(procDef, `Procedure "${proc}" not found in schema`);
6635
+ const params = Object.values(procDef.params ?? {});
6636
+ if (typeof input === "undefined") {
6637
+ if (params.length === 0) {
6638
+ return void 0;
6639
+ }
6640
+ if (params.every((p) => p.optional)) {
6641
+ return void 0;
6642
+ }
6643
+ throw createInvalidInputError("Missing procedure arguments", `$procs.${proc}`);
6644
+ }
6645
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
6646
+ throw createInvalidInputError("Procedure input must be an object", `$procs.${proc}`);
6647
+ }
6648
+ const envelope = input;
6649
+ const argsPayload = Object.prototype.hasOwnProperty.call(envelope, "args") ? envelope.args : void 0;
6650
+ if (params.length === 0) {
6651
+ if (typeof argsPayload === "undefined") {
6652
+ return input;
6653
+ }
6654
+ if (!argsPayload || typeof argsPayload !== "object" || Array.isArray(argsPayload)) {
6655
+ throw createInvalidInputError("Procedure `args` must be an object", `$procs.${proc}`);
6656
+ }
6657
+ if (Object.keys(argsPayload).length === 0) {
6658
+ return input;
6659
+ }
6660
+ throw createInvalidInputError("Procedure does not accept arguments", `$procs.${proc}`);
6661
+ }
6662
+ if (typeof argsPayload === "undefined") {
6663
+ if (params.every((p) => p.optional)) {
6664
+ return input;
6665
+ }
6666
+ throw createInvalidInputError("Missing procedure arguments", `$procs.${proc}`);
6667
+ }
6668
+ if (!argsPayload || typeof argsPayload !== "object" || Array.isArray(argsPayload)) {
6669
+ throw createInvalidInputError("Procedure `args` must be an object", `$procs.${proc}`);
6670
+ }
6671
+ const obj = argsPayload;
6672
+ for (const param of params) {
6673
+ const value = obj[param.name];
6674
+ if (!Object.prototype.hasOwnProperty.call(obj, param.name)) {
6675
+ if (param.optional) {
6676
+ continue;
6677
+ }
6678
+ throw createInvalidInputError(`Missing procedure argument: ${param.name}`, `$procs.${proc}`);
6679
+ }
6680
+ if (typeof value === "undefined") {
6681
+ if (param.optional) {
6682
+ continue;
6683
+ }
6684
+ throw createInvalidInputError(`Invalid procedure argument: ${param.name} is required`, `$procs.${proc}`);
6685
+ }
6686
+ const schema = this.zodFactory.makeProcedureParamSchema(param);
6687
+ const parsed = schema.safeParse(value);
6688
+ if (!parsed.success) {
6689
+ throw createInvalidInputError(`Invalid procedure argument: ${param.name}: ${formatError(parsed.error)}`, `$procs.${proc}`);
6690
+ }
6691
+ }
6692
+ return input;
6693
+ }
6694
+ // #endregion
6695
+ // #region Validation helpers
6696
+ validate(model, operation, getSchema, args) {
6697
+ const schema = getSchema(model);
6698
+ const { error, data } = schema.safeParse(args);
6699
+ if (error) {
6700
+ throw createInvalidInputError(`Invalid ${operation} args for model "${model}": ${formatError(error)}`, model, {
6701
+ cause: error
6702
+ });
6703
+ }
6704
+ return data;
6705
+ }
6706
+ };
6947
6707
 
6948
6708
  // src/client/executor/zenstack-driver.ts
6949
6709
  var ZenStackDriver = class {
@@ -7130,7 +6890,7 @@ __name(performanceNow, "performanceNow");
7130
6890
 
7131
6891
  // src/client/executor/zenstack-query-executor.ts
7132
6892
  var import_common_helpers11 = require("@zenstackhq/common-helpers");
7133
- var import_kysely8 = require("kysely");
6893
+ var import_kysely9 = require("kysely");
7134
6894
  var import_ts_pattern15 = require("ts-pattern");
7135
6895
 
7136
6896
  // src/client/executor/name-mapper.ts
@@ -7718,8 +7478,32 @@ var QueryNameMapper = class extends import_kysely7.OperationNodeTransformer {
7718
7478
  }
7719
7479
  };
7720
7480
 
7481
+ // src/client/executor/temp-alias-transformer.ts
7482
+ var import_kysely8 = require("kysely");
7483
+ var TempAliasTransformer = class extends import_kysely8.OperationNodeTransformer {
7484
+ static {
7485
+ __name(this, "TempAliasTransformer");
7486
+ }
7487
+ aliasMap = /* @__PURE__ */ new Map();
7488
+ run(node) {
7489
+ this.aliasMap.clear();
7490
+ return this.transformNode(node);
7491
+ }
7492
+ transformIdentifier(node, queryId) {
7493
+ if (node.name.startsWith(TEMP_ALIAS_PREFIX)) {
7494
+ let mapped = this.aliasMap.get(node.name);
7495
+ if (!mapped) {
7496
+ mapped = `$$t${this.aliasMap.size + 1}`;
7497
+ this.aliasMap.set(node.name, mapped);
7498
+ }
7499
+ return import_kysely8.IdentifierNode.create(mapped);
7500
+ }
7501
+ return super.transformIdentifier(node, queryId);
7502
+ }
7503
+ };
7504
+
7721
7505
  // src/client/executor/zenstack-query-executor.ts
7722
- var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely8.DefaultQueryExecutor {
7506
+ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely9.DefaultQueryExecutor {
7723
7507
  static {
7724
7508
  __name(this, "ZenStackQueryExecutor");
7725
7509
  }
@@ -7821,17 +7605,17 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely8.
7821
7605
  }
7822
7606
  let preUpdateIds;
7823
7607
  const mutationModel = this.getMutationModel(query);
7824
- const needLoadAfterMutationEntities = (import_kysely8.InsertQueryNode.is(query) || import_kysely8.UpdateQueryNode.is(query)) && this.hasEntityMutationPluginsWithAfterMutationHooks;
7608
+ const needLoadAfterMutationEntities = (import_kysely9.InsertQueryNode.is(query) || import_kysely9.UpdateQueryNode.is(query)) && this.hasEntityMutationPluginsWithAfterMutationHooks;
7825
7609
  if (needLoadAfterMutationEntities) {
7826
7610
  if (this.dialect.supportsReturning) {
7827
7611
  query = {
7828
7612
  ...query,
7829
- returning: import_kysely8.ReturningNode.create([
7830
- import_kysely8.SelectionNode.createSelectAll()
7613
+ returning: import_kysely9.ReturningNode.create([
7614
+ import_kysely9.SelectionNode.createSelectAll()
7831
7615
  ])
7832
7616
  };
7833
7617
  } else {
7834
- if (import_kysely8.UpdateQueryNode.is(query)) {
7618
+ if (import_kysely9.UpdateQueryNode.is(query)) {
7835
7619
  preUpdateIds = await this.getPreUpdateIds(mutationModel, query, connection);
7836
7620
  }
7837
7621
  }
@@ -7841,7 +7625,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely8.
7841
7625
  const mutationInfo = this.getMutationInfo(query);
7842
7626
  let beforeMutationEntities;
7843
7627
  const loadBeforeMutationEntities = /* @__PURE__ */ __name(async () => {
7844
- if (beforeMutationEntities === void 0 && (import_kysely8.UpdateQueryNode.is(query) || import_kysely8.DeleteQueryNode.is(query))) {
7628
+ if (beforeMutationEntities === void 0 && (import_kysely9.UpdateQueryNode.is(query) || import_kysely9.DeleteQueryNode.is(query))) {
7845
7629
  beforeMutationEntities = await this.loadEntities(mutationInfo.model, mutationInfo.where, connection, void 0);
7846
7630
  }
7847
7631
  return beforeMutationEntities;
@@ -7945,10 +7729,10 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely8.
7945
7729
  if (this.dialect.supportsReturning) {
7946
7730
  return queryResult.rows;
7947
7731
  } else {
7948
- const mutatedIds = import_kysely8.InsertQueryNode.is(queryNode) ? this.getInsertIds(mutationInfo.model, queryNode, queryResult) : preUpdateIds;
7732
+ const mutatedIds = import_kysely9.InsertQueryNode.is(queryNode) ? this.getInsertIds(mutationInfo.model, queryNode, queryResult) : preUpdateIds;
7949
7733
  if (mutatedIds) {
7950
7734
  const idFields = requireIdFields(this.client.$schema, mutationInfo.model);
7951
- const eb = (0, import_kysely8.expressionBuilder)();
7735
+ const eb = (0, import_kysely9.expressionBuilder)();
7952
7736
  const filter = eb(
7953
7737
  // @ts-ignore
7954
7738
  eb.refTuple(...idFields),
@@ -7957,7 +7741,7 @@ var ZenStackQueryExecutor = class _ZenStackQueryExecutor extends import_kysely8.
7957
7741
  ...idFields.map((idField) => eb.val(idObj[idField]))
7958
7742
  ))
7959
7743
  );
7960
- const entities = await this.loadEntities(mutationInfo.model, import_kysely8.WhereNode.create(filter.toOperationNode()), connection, void 0);
7744
+ const entities = await this.loadEntities(mutationInfo.model, import_kysely9.WhereNode.create(filter.toOperationNode()), connection, void 0);
7961
7745
  return entities;
7962
7746
  } else {
7963
7747
  console.warn(`Unable to load after-mutation entities for hooks: model "${mutationInfo.model}", operation "${mutationInfo.action}".
@@ -7978,9 +7762,9 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
7978
7762
  const idFields = requireIdFields(this.client.$schema, mutationModel);
7979
7763
  if (query.updates) {
7980
7764
  for (const update of query.updates) {
7981
- if (import_kysely8.ColumnUpdateNode.is(update)) {
7765
+ if (import_kysely9.ColumnUpdateNode.is(update)) {
7982
7766
  const columnNode = update.column;
7983
- if (import_kysely8.ColumnNode.is(columnNode)) {
7767
+ if (import_kysely9.ColumnNode.is(columnNode)) {
7984
7768
  const columnName = columnNode.column.name;
7985
7769
  if (idFields.includes(columnName)) {
7986
7770
  return void 0;
@@ -7993,7 +7777,7 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
7993
7777
  }
7994
7778
  getInsertIds(mutationModel, query, queryResult) {
7995
7779
  const idFields = requireIdFields(this.client.$schema, mutationModel);
7996
- if (import_kysely8.InsertQueryNode.is(query) && queryResult.numAffectedRows === 1n && queryResult.insertId && idFields.length === 1) {
7780
+ if (import_kysely9.InsertQueryNode.is(query) && queryResult.numAffectedRows === 1n && queryResult.insertId && idFields.length === 1) {
7997
7781
  return [
7998
7782
  {
7999
7783
  [idFields[0]]: queryResult.insertId
@@ -8005,13 +7789,13 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
8005
7789
  return void 0;
8006
7790
  }
8007
7791
  const values = query.values;
8008
- if (!values || !import_kysely8.ValuesNode.is(values)) {
7792
+ if (!values || !import_kysely9.ValuesNode.is(values)) {
8009
7793
  return void 0;
8010
7794
  }
8011
7795
  const allIds = [];
8012
7796
  for (const valuesItem of values.values) {
8013
7797
  const rowIds = {};
8014
- if (import_kysely8.PrimitiveValueListNode.is(valuesItem)) {
7798
+ if (import_kysely9.PrimitiveValueListNode.is(valuesItem)) {
8015
7799
  (0, import_common_helpers11.invariant)(valuesItem.values.length === columns.length, "Values count must match columns count");
8016
7800
  for (const idField of idFields) {
8017
7801
  const colIndex = columns.findIndex((col) => col.column.name === idField);
@@ -8028,7 +7812,7 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
8028
7812
  return void 0;
8029
7813
  }
8030
7814
  const valueNode = valuesItem.values[colIndex];
8031
- if (!valueNode || !import_kysely8.ValueNode.is(valueNode)) {
7815
+ if (!valueNode || !import_kysely9.ValueNode.is(valueNode)) {
8032
7816
  return void 0;
8033
7817
  }
8034
7818
  rowIds[idField] = valueNode.value;
@@ -8057,13 +7841,13 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
8057
7841
  // #region utilities
8058
7842
  getMutationInfo(queryNode) {
8059
7843
  const model = this.getMutationModel(queryNode);
8060
- const { action, where } = (0, import_ts_pattern15.match)(queryNode).when(import_kysely8.InsertQueryNode.is, () => ({
7844
+ const { action, where } = (0, import_ts_pattern15.match)(queryNode).when(import_kysely9.InsertQueryNode.is, () => ({
8061
7845
  action: "create",
8062
7846
  where: void 0
8063
- })).when(import_kysely8.UpdateQueryNode.is, (node) => ({
7847
+ })).when(import_kysely9.UpdateQueryNode.is, (node) => ({
8064
7848
  action: "update",
8065
7849
  where: node.where
8066
- })).when(import_kysely8.DeleteQueryNode.is, (node) => ({
7850
+ })).when(import_kysely9.DeleteQueryNode.is, (node) => ({
8067
7851
  action: "delete",
8068
7852
  where: node.where
8069
7853
  })).exhaustive();
@@ -8074,31 +7858,43 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
8074
7858
  };
8075
7859
  }
8076
7860
  isMutationNode(queryNode) {
8077
- return import_kysely8.InsertQueryNode.is(queryNode) || import_kysely8.UpdateQueryNode.is(queryNode) || import_kysely8.DeleteQueryNode.is(queryNode);
7861
+ return import_kysely9.InsertQueryNode.is(queryNode) || import_kysely9.UpdateQueryNode.is(queryNode) || import_kysely9.DeleteQueryNode.is(queryNode);
8078
7862
  }
8079
7863
  getMutationModel(queryNode) {
8080
- return (0, import_ts_pattern15.match)(queryNode).when(import_kysely8.InsertQueryNode.is, (node) => {
7864
+ return (0, import_ts_pattern15.match)(queryNode).when(import_kysely9.InsertQueryNode.is, (node) => {
8081
7865
  (0, import_common_helpers11.invariant)(node.into, "InsertQueryNode must have an into clause");
8082
7866
  return node.into.table.identifier.name;
8083
- }).when(import_kysely8.UpdateQueryNode.is, (node) => {
7867
+ }).when(import_kysely9.UpdateQueryNode.is, (node) => {
8084
7868
  (0, import_common_helpers11.invariant)(node.table, "UpdateQueryNode must have a table");
8085
7869
  const { node: tableNode } = stripAlias(node.table);
8086
- (0, import_common_helpers11.invariant)(import_kysely8.TableNode.is(tableNode), "UpdateQueryNode must use a TableNode");
7870
+ (0, import_common_helpers11.invariant)(import_kysely9.TableNode.is(tableNode), "UpdateQueryNode must use a TableNode");
8087
7871
  return tableNode.table.identifier.name;
8088
- }).when(import_kysely8.DeleteQueryNode.is, (node) => {
7872
+ }).when(import_kysely9.DeleteQueryNode.is, (node) => {
8089
7873
  (0, import_common_helpers11.invariant)(node.from.froms.length === 1, "Delete query must have exactly one from table");
8090
7874
  const { node: tableNode } = stripAlias(node.from.froms[0]);
8091
- (0, import_common_helpers11.invariant)(import_kysely8.TableNode.is(tableNode), "DeleteQueryNode must use a TableNode");
7875
+ (0, import_common_helpers11.invariant)(import_kysely9.TableNode.is(tableNode), "DeleteQueryNode must use a TableNode");
8092
7876
  return tableNode.table.identifier.name;
8093
7877
  }).otherwise((node) => {
8094
7878
  throw createInternalError(`Invalid query node: ${node}`);
8095
7879
  });
8096
7880
  }
7881
+ processQueryNode(query) {
7882
+ let result = query;
7883
+ result = this.processNameMapping(result);
7884
+ result = this.processTempAlias(result);
7885
+ return result;
7886
+ }
8097
7887
  processNameMapping(query) {
8098
7888
  return this.nameMapper?.transformNode(query) ?? query;
8099
7889
  }
7890
+ processTempAlias(query) {
7891
+ if (this.options.useCompactAliasNames === false) {
7892
+ return query;
7893
+ }
7894
+ return new TempAliasTransformer().run(query);
7895
+ }
8100
7896
  createClientForConnection(connection, inTx) {
8101
- const innerExecutor = this.withConnectionProvider(new import_kysely8.SingleConnectionProvider(connection));
7897
+ const innerExecutor = this.withConnectionProvider(new import_kysely9.SingleConnectionProvider(connection));
8102
7898
  innerExecutor.suppressMutationHooks = true;
8103
7899
  const innerClient = this.client.withExecutor(innerExecutor);
8104
7900
  if (inTx) {
@@ -8108,16 +7904,16 @@ In such cases, ZenStack cannot reliably determine the IDs of the mutated entitie
8108
7904
  }
8109
7905
  andNodes(condition1, condition2) {
8110
7906
  if (condition1 && condition2) {
8111
- return import_kysely8.WhereNode.create(import_kysely8.AndNode.create(condition1, condition2));
7907
+ return import_kysely9.WhereNode.create(import_kysely9.AndNode.create(condition1, condition2));
8112
7908
  } else if (condition1) {
8113
- return import_kysely8.WhereNode.create(condition1);
7909
+ return import_kysely9.WhereNode.create(condition1);
8114
7910
  } else {
8115
7911
  return condition2;
8116
7912
  }
8117
7913
  }
8118
7914
  async internalExecuteQuery(query, connection, queryId, parameters) {
8119
- const finalQuery = this.processNameMapping(query);
8120
- let compiledQuery = this.compileQuery(finalQuery, queryId ?? (0, import_kysely8.createQueryId)());
7915
+ const finalQuery = this.processQueryNode(query);
7916
+ let compiledQuery = this.compileQuery(finalQuery, queryId ?? (0, import_kysely9.createQueryId)());
8121
7917
  if (parameters) {
8122
7918
  compiledQuery = {
8123
7919
  ...compiledQuery,
@@ -8187,7 +7983,7 @@ __export(functions_exports, {
8187
7983
  startsWith: () => startsWith
8188
7984
  });
8189
7985
  var import_common_helpers12 = require("@zenstackhq/common-helpers");
8190
- var import_kysely9 = require("kysely");
7986
+ var import_kysely10 = require("kysely");
8191
7987
  var import_ts_pattern16 = require("ts-pattern");
8192
7988
  var contains = /* @__PURE__ */ __name((eb, args, context) => textMatch(eb, args, context, "contains"), "contains");
8193
7989
  var search = /* @__PURE__ */ __name((_eb, _args) => {
@@ -8225,20 +8021,20 @@ var textMatch = /* @__PURE__ */ __name((eb, args, { dialect }, method) => {
8225
8021
  } else {
8226
8022
  op = "like";
8227
8023
  }
8228
- searchExpr = eb.fn.coalesce(searchExpr, import_kysely9.sql.lit(""));
8229
- const escapedSearch = import_kysely9.sql`REPLACE(REPLACE(REPLACE(${dialect.castText(searchExpr)}, ${import_kysely9.sql.val("\\")}, ${import_kysely9.sql.val("\\\\")}), ${import_kysely9.sql.val("%")}, ${import_kysely9.sql.val("\\%")}), ${import_kysely9.sql.val("_")}, ${import_kysely9.sql.val("\\_")})`;
8024
+ searchExpr = eb.fn.coalesce(searchExpr, import_kysely10.sql.lit(""));
8025
+ const escapedSearch = import_kysely10.sql`REPLACE(REPLACE(REPLACE(${dialect.castText(searchExpr)}, ${import_kysely10.sql.val("\\")}, ${import_kysely10.sql.val("\\\\")}), ${import_kysely10.sql.val("%")}, ${import_kysely10.sql.val("\\%")}), ${import_kysely10.sql.val("_")}, ${import_kysely10.sql.val("\\_")})`;
8230
8026
  searchExpr = (0, import_ts_pattern16.match)(method).with("contains", () => eb.fn("CONCAT", [
8231
- import_kysely9.sql.lit("%"),
8027
+ import_kysely10.sql.lit("%"),
8232
8028
  escapedSearch,
8233
- import_kysely9.sql.lit("%")
8029
+ import_kysely10.sql.lit("%")
8234
8030
  ])).with("startsWith", () => eb.fn("CONCAT", [
8235
8031
  escapedSearch,
8236
- import_kysely9.sql.lit("%")
8032
+ import_kysely10.sql.lit("%")
8237
8033
  ])).with("endsWith", () => eb.fn("CONCAT", [
8238
- import_kysely9.sql.lit("%"),
8034
+ import_kysely10.sql.lit("%"),
8239
8035
  escapedSearch
8240
8036
  ])).exhaustive();
8241
- return import_kysely9.sql`${fieldExpr} ${import_kysely9.sql.raw(op)} ${searchExpr} escape ${import_kysely9.sql.val("\\")}`;
8037
+ return import_kysely10.sql`${fieldExpr} ${import_kysely10.sql.raw(op)} ${searchExpr} escape ${import_kysely10.sql.val("\\")}`;
8242
8038
  }, "textMatch");
8243
8039
  var has = /* @__PURE__ */ __name((_eb, args, context) => {
8244
8040
  const [field, search2] = args;
@@ -8275,16 +8071,16 @@ var isEmpty = /* @__PURE__ */ __name((eb, args, { dialect }) => {
8275
8071
  if (!field) {
8276
8072
  throw new Error('"field" parameter is required');
8277
8073
  }
8278
- return eb(dialect.buildArrayLength(field), "=", import_kysely9.sql.lit(0));
8074
+ return eb(dialect.buildArrayLength(field), "=", import_kysely10.sql.lit(0));
8279
8075
  }, "isEmpty");
8280
- var now = /* @__PURE__ */ __name(() => import_kysely9.sql.raw("CURRENT_TIMESTAMP"), "now");
8076
+ var now = /* @__PURE__ */ __name(() => import_kysely10.sql.raw("CURRENT_TIMESTAMP"), "now");
8281
8077
  var currentModel = /* @__PURE__ */ __name((_eb, args, { model }) => {
8282
8078
  let result = model;
8283
8079
  const [casing] = args;
8284
8080
  if (casing) {
8285
8081
  result = processCasing(casing, result, model);
8286
8082
  }
8287
- return import_kysely9.sql.lit(result);
8083
+ return import_kysely10.sql.lit(result);
8288
8084
  }, "currentModel");
8289
8085
  var currentOperation = /* @__PURE__ */ __name((_eb, args, { operation }) => {
8290
8086
  let result = operation;
@@ -8292,11 +8088,11 @@ var currentOperation = /* @__PURE__ */ __name((_eb, args, { operation }) => {
8292
8088
  if (casing) {
8293
8089
  result = processCasing(casing, result, operation);
8294
8090
  }
8295
- return import_kysely9.sql.lit(result);
8091
+ return import_kysely10.sql.lit(result);
8296
8092
  }, "currentOperation");
8297
8093
  function processCasing(casing, result, model) {
8298
8094
  const opNode = casing.toOperationNode();
8299
- (0, import_common_helpers12.invariant)(import_kysely9.ValueNode.is(opNode) && typeof opNode.value === "string", '"casting" parameter must be a string value');
8095
+ (0, import_common_helpers12.invariant)(import_kysely10.ValueNode.is(opNode) && typeof opNode.value === "string", '"casting" parameter must be a string value');
8300
8096
  result = (0, import_ts_pattern16.match)(opNode.value).with("original", () => model).with("upper", () => result.toUpperCase()).with("lower", () => result.toLowerCase()).with("capitalize", () => (0, import_common_helpers12.upperCaseFirst)(result)).with("uncapitalize", () => (0, import_common_helpers12.lowerCaseFirst)(result)).otherwise(() => {
8301
8097
  throw new Error(`Invalid casing value: ${opNode.value}. Must be "original", "upper", "lower", "capitalize", or "uncapitalize".`);
8302
8098
  });
@@ -8308,14 +8104,14 @@ function readBoolean(expr, defaultValue) {
8308
8104
  return defaultValue;
8309
8105
  }
8310
8106
  const opNode = expr.toOperationNode();
8311
- (0, import_common_helpers12.invariant)(import_kysely9.ValueNode.is(opNode), "expression must be a literal value");
8107
+ (0, import_common_helpers12.invariant)(import_kysely10.ValueNode.is(opNode), "expression must be a literal value");
8312
8108
  return !!opNode.value;
8313
8109
  }
8314
8110
  __name(readBoolean, "readBoolean");
8315
8111
 
8316
8112
  // src/client/helpers/schema-db-pusher.ts
8317
8113
  var import_common_helpers13 = require("@zenstackhq/common-helpers");
8318
- var import_kysely10 = require("kysely");
8114
+ var import_kysely11 = require("kysely");
8319
8115
  var import_toposort = __toESM(require("toposort"), 1);
8320
8116
  var import_ts_pattern17 = require("ts-pattern");
8321
8117
  var SchemaDbPusher = class {
@@ -8493,7 +8289,7 @@ var SchemaDbPusher = class {
8493
8289
  if (fieldDef.default !== void 0 && this.isDefaultValueSupportedForType(fieldDef.type)) {
8494
8290
  if (typeof fieldDef.default === "object" && "kind" in fieldDef.default) {
8495
8291
  if (schema_exports.ExpressionUtils.isCall(fieldDef.default) && fieldDef.default.function === "now") {
8496
- col = this.schema.provider.type === "mysql" ? col.defaultTo(import_kysely10.sql`CURRENT_TIMESTAMP(3)`) : col.defaultTo(import_kysely10.sql`CURRENT_TIMESTAMP`);
8292
+ col = this.schema.provider.type === "mysql" ? col.defaultTo(import_kysely11.sql`CURRENT_TIMESTAMP(3)`) : col.defaultTo(import_kysely11.sql`CURRENT_TIMESTAMP`);
8497
8293
  }
8498
8294
  } else {
8499
8295
  if (this.schema.provider.type === "mysql" && fieldDef.type === "DateTime" && typeof fieldDef.default === "string") {
@@ -8525,7 +8321,7 @@ var SchemaDbPusher = class {
8525
8321
  mapFieldType(fieldDef) {
8526
8322
  if (this.schema.enums?.[fieldDef.type]) {
8527
8323
  if (this.schema.provider.type === "postgresql") {
8528
- return import_kysely10.sql.ref(fieldDef.type);
8324
+ return import_kysely11.sql.ref(fieldDef.type);
8529
8325
  } else if (this.schema.provider.type === "mysql") {
8530
8326
  const enumDef = this.schema.enums[fieldDef.type];
8531
8327
  let enumValues;
@@ -8543,7 +8339,7 @@ var SchemaDbPusher = class {
8543
8339
  } else {
8544
8340
  enumValues = Object.values(enumDef.values);
8545
8341
  }
8546
- return import_kysely10.sql.raw(`enum(${enumValues.map((v) => `'${v}'`).join(", ")})`);
8342
+ return import_kysely11.sql.raw(`enum(${enumValues.map((v) => `'${v}'`).join(", ")})`);
8547
8343
  } else {
8548
8344
  return "text";
8549
8345
  }
@@ -8559,7 +8355,7 @@ var SchemaDbPusher = class {
8559
8355
  throw new Error(`Unsupported field type: ${type}`);
8560
8356
  });
8561
8357
  if (fieldDef.array) {
8562
- return import_kysely10.sql.raw(`${result}[]`);
8358
+ return import_kysely11.sql.raw(`${result}[]`);
8563
8359
  } else {
8564
8360
  return result;
8565
8361
  }
@@ -8605,25 +8401,25 @@ var SchemaDbPusher = class {
8605
8401
  return (0, import_ts_pattern17.match)(this.schema.provider.type).with("postgresql", () => "bytea").with("mysql", () => "blob").otherwise(() => "blob");
8606
8402
  }
8607
8403
  get stringType() {
8608
- return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely10.sql.raw("varchar(255)")).otherwise(() => "text");
8404
+ return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely11.sql.raw("varchar(255)")).otherwise(() => "text");
8609
8405
  }
8610
8406
  get booleanType() {
8611
- return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely10.sql.raw("tinyint(1)")).otherwise(() => "boolean");
8407
+ return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely11.sql.raw("tinyint(1)")).otherwise(() => "boolean");
8612
8408
  }
8613
8409
  get intType() {
8614
8410
  return "integer";
8615
8411
  }
8616
8412
  get floatType() {
8617
- return (0, import_ts_pattern17.match)(this.schema.provider.type).with("postgresql", () => "double precision").with("mysql", () => import_kysely10.sql.raw("double")).otherwise(() => "real");
8413
+ return (0, import_ts_pattern17.match)(this.schema.provider.type).with("postgresql", () => "double precision").with("mysql", () => import_kysely11.sql.raw("double")).otherwise(() => "real");
8618
8414
  }
8619
8415
  get bigIntType() {
8620
8416
  return "bigint";
8621
8417
  }
8622
8418
  get decimalType() {
8623
- return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely10.sql.raw("decimal(65, 30)")).otherwise(() => "decimal");
8419
+ return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely11.sql.raw("decimal(65, 30)")).otherwise(() => "decimal");
8624
8420
  }
8625
8421
  get dateTimeType() {
8626
- return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely10.sql.raw("datetime(3)")).otherwise(() => "timestamp");
8422
+ return (0, import_ts_pattern17.match)(this.schema.provider.type).with("mysql", () => import_kysely11.sql.raw("datetime(3)")).otherwise(() => "timestamp");
8627
8423
  }
8628
8424
  columnSupportsAutoIncrement() {
8629
8425
  return [
@@ -8814,15 +8610,15 @@ var ClientImpl = class _ClientImpl {
8814
8610
  if (baseClient) {
8815
8611
  this.kyselyProps = {
8816
8612
  ...baseClient.kyselyProps,
8817
- executor: executor ?? new ZenStackQueryExecutor(this, baseClient.kyselyProps.driver, baseClient.kyselyProps.dialect.createQueryCompiler(), baseClient.kyselyProps.dialect.createAdapter(), new import_kysely11.DefaultConnectionProvider(baseClient.kyselyProps.driver))
8613
+ executor: executor ?? new ZenStackQueryExecutor(this, baseClient.kyselyProps.driver, baseClient.kyselyProps.dialect.createQueryCompiler(), baseClient.kyselyProps.dialect.createAdapter(), new import_kysely12.DefaultConnectionProvider(baseClient.kyselyProps.driver))
8818
8614
  };
8819
8615
  this.kyselyRaw = baseClient.kyselyRaw;
8820
8616
  this.auth = baseClient.auth;
8821
8617
  } else {
8822
- const driver = new ZenStackDriver(options.dialect.createDriver(), new import_kysely11.Log(this.$options.log ?? []));
8618
+ const driver = new ZenStackDriver(options.dialect.createDriver(), new import_kysely12.Log(this.$options.log ?? []));
8823
8619
  const compiler = options.dialect.createQueryCompiler();
8824
8620
  const adapter = options.dialect.createAdapter();
8825
- const connectionProvider = new import_kysely11.DefaultConnectionProvider(driver);
8621
+ const connectionProvider = new import_kysely12.DefaultConnectionProvider(driver);
8826
8622
  this.kyselyProps = {
8827
8623
  config: {
8828
8624
  dialect: options.dialect,
@@ -8832,12 +8628,12 @@ var ClientImpl = class _ClientImpl {
8832
8628
  driver,
8833
8629
  executor: executor ?? new ZenStackQueryExecutor(this, driver, compiler, adapter, connectionProvider)
8834
8630
  };
8835
- this.kyselyRaw = new import_kysely11.Kysely({
8631
+ this.kyselyRaw = new import_kysely12.Kysely({
8836
8632
  ...this.kyselyProps,
8837
- executor: new import_kysely11.DefaultQueryExecutor(compiler, adapter, connectionProvider, [])
8633
+ executor: new import_kysely12.DefaultQueryExecutor(compiler, adapter, connectionProvider, [])
8838
8634
  });
8839
8635
  }
8840
- this.kysely = new import_kysely11.Kysely(this.kyselyProps);
8636
+ this.kysely = new import_kysely12.Kysely(this.kyselyProps);
8841
8637
  this.inputValidator = baseClient?.inputValidator ?? new InputValidator(this);
8842
8638
  return createClientProxy(this);
8843
8639
  }
@@ -8847,6 +8643,9 @@ var ClientImpl = class _ClientImpl {
8847
8643
  get $qbRaw() {
8848
8644
  return this.kyselyRaw;
8849
8645
  }
8646
+ get $zod() {
8647
+ return this.inputValidator.zodFactory;
8648
+ }
8850
8649
  get isTransaction() {
8851
8650
  return this.kysely.isTransaction;
8852
8651
  }
@@ -8887,7 +8686,7 @@ var ClientImpl = class _ClientImpl {
8887
8686
  }
8888
8687
  forceTransaction() {
8889
8688
  if (!this.kysely.isTransaction) {
8890
- this.kysely = new import_kysely11.Transaction(this.kyselyProps);
8689
+ this.kysely = new import_kysely12.Transaction(this.kyselyProps);
8891
8690
  }
8892
8691
  }
8893
8692
  async interactiveTransaction(callback, options) {
@@ -8978,7 +8777,7 @@ var ClientImpl = class _ClientImpl {
8978
8777
  }
8979
8778
  async $connect() {
8980
8779
  await this.kysely.connection().execute(async (conn) => {
8981
- await conn.executeQuery(import_kysely11.sql`select 1`.compile(this.kysely));
8780
+ await conn.executeQuery(import_kysely12.sql`select 1`.compile(this.kysely));
8982
8781
  });
8983
8782
  }
8984
8783
  async $disconnect() {
@@ -9049,7 +8848,7 @@ var ClientImpl = class _ClientImpl {
9049
8848
  }
9050
8849
  $executeRaw(query, ...values) {
9051
8850
  return createZenStackPromise(async () => {
9052
- const result = await (0, import_kysely11.sql)(query, ...values).execute(this.kysely);
8851
+ const result = await (0, import_kysely12.sql)(query, ...values).execute(this.kysely);
9053
8852
  return Number(result.numAffectedRows ?? 0);
9054
8853
  });
9055
8854
  }
@@ -9062,7 +8861,7 @@ var ClientImpl = class _ClientImpl {
9062
8861
  }
9063
8862
  $queryRaw(query, ...values) {
9064
8863
  return createZenStackPromise(async () => {
9065
- const result = await (0, import_kysely11.sql)(query, ...values).execute(this.kysely);
8864
+ const result = await (0, import_kysely12.sql)(query, ...values).execute(this.kysely);
9066
8865
  return result.rows;
9067
8866
  });
9068
8867
  }
@@ -9074,7 +8873,7 @@ var ClientImpl = class _ClientImpl {
9074
8873
  });
9075
8874
  }
9076
8875
  createRawCompiledQuery(query, values) {
9077
- const q = import_kysely11.CompiledQuery.raw(query, values);
8876
+ const q = import_kysely12.CompiledQuery.raw(query, values);
9078
8877
  return {
9079
8878
  ...q,
9080
8879
  $raw: true
@@ -9253,7 +9052,7 @@ function createModelCrudHandler(client, model, inputValidator, resultProcessor)
9253
9052
  };
9254
9053
  const slicing = client.$options.slicing;
9255
9054
  if (slicing?.models) {
9256
- const modelSlicing = slicing.models[model];
9055
+ const modelSlicing = slicing.models[(0, import_common_helpers14.lowerCaseFirst)(model)];
9257
9056
  const allSlicing = slicing.models.$all;
9258
9057
  const includedOperations = modelSlicing?.includedOperations ?? allSlicing?.includedOperations;
9259
9058
  const excludedOperations = modelSlicing?.excludedOperations ?? allSlicing?.excludedOperations;
@@ -9285,8 +9084,8 @@ var kysely_utils_exports = {};
9285
9084
  __export(kysely_utils_exports, {
9286
9085
  DefaultOperationNodeVisitor: () => DefaultOperationNodeVisitor
9287
9086
  });
9288
- var import_kysely12 = require("kysely");
9289
- var DefaultOperationNodeVisitor = class extends import_kysely12.OperationNodeVisitor {
9087
+ var import_kysely13 = require("kysely");
9088
+ var DefaultOperationNodeVisitor = class extends import_kysely13.OperationNodeVisitor {
9290
9089
  static {
9291
9090
  __name(this, "DefaultOperationNodeVisitor");
9292
9091
  }
@@ -9724,6 +9523,7 @@ var MatchingExpressionVisitor = class extends ExpressionVisitor {
9724
9523
  SchemaUtils,
9725
9524
  TransactionIsolationLevel,
9726
9525
  ZenStackClient,
9526
+ createQuerySchemaFactory,
9727
9527
  definePlugin,
9728
9528
  getCrudDialect
9729
9529
  });