@zenstackhq/orm 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -598,6 +598,7 @@ __name(extractFieldName, "extractFieldName");
598
598
  // src/client/crud/operations/base.ts
599
599
  var import_cuid2 = require("@paralleldrive/cuid2");
600
600
  var import_common_helpers5 = require("@zenstackhq/common-helpers");
601
+ var import_cuid = __toESM(require("cuid"), 1);
601
602
  var import_kysely5 = require("kysely");
602
603
  var import_nanoid = require("nanoid");
603
604
  var import_ts_pattern6 = require("ts-pattern");
@@ -2583,7 +2584,20 @@ var BaseOperationHandler = class {
2583
2584
  }
2584
2585
  evalGenerator(defaultValue) {
2585
2586
  if (schema_exports.ExpressionUtils.isCall(defaultValue)) {
2586
- return (0, import_ts_pattern6.match)(defaultValue.function).with("cuid", () => (0, import_cuid2.createId)()).with("uuid", () => defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args?.[0]) && defaultValue.args[0].value === 7 ? uuid.v7() : uuid.v4()).with("nanoid", () => defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args[0]) && typeof defaultValue.args[0].value === "number" ? (0, import_nanoid.nanoid)(defaultValue.args[0].value) : (0, import_nanoid.nanoid)()).with("ulid", () => (0, import_ulid.ulid)()).otherwise(() => void 0);
2587
+ const firstArgVal = defaultValue.args?.[0] && schema_exports.ExpressionUtils.isLiteral(defaultValue.args[0]) ? defaultValue.args[0].value : void 0;
2588
+ return (0, import_ts_pattern6.match)(defaultValue.function).with("cuid", () => {
2589
+ const version = firstArgVal;
2590
+ const generated = version === 2 ? (0, import_cuid2.createId)() : (0, import_cuid.default)();
2591
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2592
+ }).with("uuid", () => {
2593
+ const version = firstArgVal;
2594
+ const generated = version === 7 ? uuid.v7() : uuid.v4();
2595
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2596
+ }).with("nanoid", () => {
2597
+ const length = firstArgVal;
2598
+ const generated = typeof length === "number" ? (0, import_nanoid.nanoid)(length) : (0, import_nanoid.nanoid)();
2599
+ return this.formatGeneratedValue(generated, defaultValue.args?.[1]);
2600
+ }).with("ulid", () => this.formatGeneratedValue((0, import_ulid.ulid)(), defaultValue.args?.[0])).otherwise(() => void 0);
2587
2601
  } else if (schema_exports.ExpressionUtils.isMember(defaultValue) && schema_exports.ExpressionUtils.isCall(defaultValue.receiver) && defaultValue.receiver.function === "auth") {
2588
2602
  let val = this.client.$auth;
2589
2603
  for (const member of defaultValue.members) {
@@ -2594,6 +2608,12 @@ var BaseOperationHandler = class {
2594
2608
  return void 0;
2595
2609
  }
2596
2610
  }
2611
+ formatGeneratedValue(generated, formatExpr) {
2612
+ if (!formatExpr || !schema_exports.ExpressionUtils.isLiteral(formatExpr) || typeof formatExpr.value !== "string") {
2613
+ return generated;
2614
+ }
2615
+ return formatExpr.value.replace(/(?<!\\)%s/g, generated).replace(/\\%s/g, "%s");
2616
+ }
2597
2617
  async update(kysely, model, where, data, fromRelation, allowRelationUpdate = true, throwIfNotFound = true, fieldsToReturn) {
2598
2618
  if (!data || typeof data !== "object") {
2599
2619
  throw createInvalidInputError("data must be an object");
@@ -4498,8 +4518,11 @@ var InputValidator = class {
4498
4518
  fieldSchema
4499
4519
  ];
4500
4520
  })));
4501
- const finalSchema = import_zod3.z.custom((v) => {
4502
- return schema.safeParse(v).success;
4521
+ const finalSchema = import_zod3.z.any().superRefine((value, ctx) => {
4522
+ const parseResult = schema.safeParse(value);
4523
+ if (!parseResult.success) {
4524
+ parseResult.error.issues.forEach((issue) => ctx.addIssue(issue));
4525
+ }
4503
4526
  });
4504
4527
  this.setSchemaCache(key, finalSchema);
4505
4528
  return finalSchema;
@@ -4577,7 +4600,9 @@ var InputValidator = class {
4577
4600
  }
4578
4601
  }
4579
4602
  }
4580
- fields["$expr"] = import_zod3.z.custom((v) => typeof v === "function").optional();
4603
+ fields["$expr"] = import_zod3.z.custom((v) => typeof v === "function", {
4604
+ error: '"$expr" must be a function'
4605
+ }).optional();
4581
4606
  fields["AND"] = this.orArray(import_zod3.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)), true).optional();
4582
4607
  fields["OR"] = import_zod3.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)).array().optional();
4583
4608
  fields["NOT"] = this.orArray(import_zod3.z.lazy(() => this.makeWhereSchema(model, false, withoutRelationFields)), true).optional();
@@ -5810,6 +5835,26 @@ var QueryNameMapper = class extends import_kysely6.OperationNodeTransformer {
5810
5835
  const mappedName = this.mapFieldName(scope.model, node.column.name);
5811
5836
  return import_kysely6.ColumnNode.create(mappedName);
5812
5837
  }
5838
+ transformBinaryOperation(node) {
5839
+ if (import_kysely6.ReferenceNode.is(node.leftOperand) && import_kysely6.ColumnNode.is(node.leftOperand.column) && (import_kysely6.ValueNode.is(node.rightOperand) || import_kysely6.PrimitiveValueListNode.is(node.rightOperand))) {
5840
+ const columnNode = node.leftOperand.column;
5841
+ const resolvedScope = this.resolveFieldFromScopes(columnNode.column.name, node.leftOperand.table?.table.identifier.name);
5842
+ if (resolvedScope?.model) {
5843
+ const valueNode = node.rightOperand;
5844
+ let resultValue = valueNode;
5845
+ if (import_kysely6.ValueNode.is(valueNode)) {
5846
+ resultValue = this.processEnumMappingForValue(resolvedScope.model, columnNode, valueNode);
5847
+ } else if (import_kysely6.PrimitiveValueListNode.is(valueNode)) {
5848
+ resultValue = import_kysely6.PrimitiveValueListNode.create(this.processEnumMappingForValues(resolvedScope.model, valueNode.values.map(() => columnNode), valueNode.values));
5849
+ }
5850
+ return super.transformBinaryOperation({
5851
+ ...node,
5852
+ rightOperand: resultValue
5853
+ });
5854
+ }
5855
+ }
5856
+ return super.transformBinaryOperation(node);
5857
+ }
5813
5858
  transformUpdateQuery(node) {
5814
5859
  if (!node.table) {
5815
5860
  return super.transformUpdateQuery(node);