@cedarjs/api 2.6.1-next.0 → 2.6.1-next.104

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAQD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BAgDlC,QAAQ;CA0B5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAmBD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BA+ClC,QAAQ;CA0B5C,CAAA"}
@@ -2,6 +2,10 @@ import { CacheTimeoutError } from "./errors.js";
2
2
  import { MemcachedClient } from "./clients/MemcachedClient.js";
3
3
  import { RedisClient } from "./clients/RedisClient.js";
4
4
  import { InMemoryClient } from "./clients/InMemoryClient.js";
5
+ const PRISMA_CLIENT_VALIDATION_ERROR_NAME = "PrismaClientValidationError";
6
+ const isPrismaClientValidationError = (error) => {
7
+ return error !== null && typeof error === "object" && "name" in error && error.name === PRISMA_CLIENT_VALIDATION_ERROR_NAME;
8
+ };
5
9
  const DEFAULT_LATEST_FIELDS = { id: "id", updatedAt: "updatedAt" };
6
10
  const wait = (ms) => {
7
11
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -71,7 +75,6 @@ const createCache = (cacheClient, options) => {
71
75
  const { conditions, ...rest } = options2;
72
76
  const cacheKey = formatCacheKey(key, prefix);
73
77
  let latest, latestCacheKey;
74
- const { PrismaClientValidationError } = await import("@prisma/client");
75
78
  try {
76
79
  latest = await model.findFirst({
77
80
  ...conditions,
@@ -79,17 +82,18 @@ const createCache = (cacheClient, options) => {
79
82
  select: { [fields.id]: true, [fields.updatedAt]: true }
80
83
  });
81
84
  } catch (e) {
82
- if (e instanceof PrismaClientValidationError) {
85
+ if (isPrismaClientValidationError(e)) {
83
86
  logger?.error(
84
87
  `[Cache] cacheFindMany error: model does not contain \`${fields.id}\` or \`${fields.updatedAt}\` fields`
85
88
  );
86
89
  } else {
87
- logger?.error(`[Cache] cacheFindMany error: ${e.message}`);
90
+ const message = e instanceof Error ? e.message : String(e ?? "Unknown error");
91
+ logger?.error(`[Cache] cacheFindMany error: ${message}`);
88
92
  }
89
93
  return serialize(await model.findMany(conditions));
90
94
  }
91
95
  if (latest) {
92
- latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest.id}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
96
+ latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest[fields.id]}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
93
97
  } else {
94
98
  logger?.debug(
95
99
  `[Cache] cacheFindMany: No data to cache for key \`${key}\`, skipping`
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAQD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BAgDlC,QAAQ;CA0B5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB,CACnC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7C,SAAQ,YAAY;IACpB,UAAU,CAAC,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IAC/B,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;CACjC,CAAA;AAmBD,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAEpC,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,SAAS,MAAM,WAkB5D,CAAA;AAMD,eAAO,MAAM,WAAW,GACtB,aAAa,UAAU,EACvB,UAAU,kBAAkB;YAQP,OAAO,OACrB,QAAQ,SACN,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAC7B,YAAY,KACrB,OAAO,CAAC,GAAG,CAAC;oBAqDc,SAAS,SAAS,eAAe,OACvD,QAAQ,SACN,SAAS,YACP,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;0BA+ClC,QAAQ;CA0B5C,CAAA"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var cache_exports = {};
30
20
  __export(cache_exports, {
@@ -40,6 +30,10 @@ var import_errors = require("./errors.js");
40
30
  var import_MemcachedClient = require("./clients/MemcachedClient.js");
41
31
  var import_RedisClient = require("./clients/RedisClient.js");
42
32
  var import_InMemoryClient = require("./clients/InMemoryClient.js");
33
+ const PRISMA_CLIENT_VALIDATION_ERROR_NAME = "PrismaClientValidationError";
34
+ const isPrismaClientValidationError = (error) => {
35
+ return error !== null && typeof error === "object" && "name" in error && error.name === PRISMA_CLIENT_VALIDATION_ERROR_NAME;
36
+ };
43
37
  const DEFAULT_LATEST_FIELDS = { id: "id", updatedAt: "updatedAt" };
44
38
  const wait = (ms) => {
45
39
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -109,7 +103,6 @@ const createCache = (cacheClient, options) => {
109
103
  const { conditions, ...rest } = options2;
110
104
  const cacheKey = formatCacheKey(key, prefix);
111
105
  let latest, latestCacheKey;
112
- const { PrismaClientValidationError } = await import("@prisma/client");
113
106
  try {
114
107
  latest = await model.findFirst({
115
108
  ...conditions,
@@ -117,17 +110,18 @@ const createCache = (cacheClient, options) => {
117
110
  select: { [fields.id]: true, [fields.updatedAt]: true }
118
111
  });
119
112
  } catch (e) {
120
- if (e instanceof PrismaClientValidationError) {
113
+ if (isPrismaClientValidationError(e)) {
121
114
  logger?.error(
122
115
  `[Cache] cacheFindMany error: model does not contain \`${fields.id}\` or \`${fields.updatedAt}\` fields`
123
116
  );
124
117
  } else {
125
- logger?.error(`[Cache] cacheFindMany error: ${e.message}`);
118
+ const message = e instanceof Error ? e.message : String(e ?? "Unknown error");
119
+ logger?.error(`[Cache] cacheFindMany error: ${message}`);
126
120
  }
127
121
  return serialize(await model.findMany(conditions));
128
122
  }
129
123
  if (latest) {
130
- latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest.id}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
124
+ latestCacheKey = `${cacheKey}${cacheKeySeparator}${latest[fields.id]}${cacheKeySeparator}${latest[fields.updatedAt].getTime()}`;
131
125
  } else {
132
126
  logger?.debug(
133
127
  `[Cache] cacheFindMany: No data to cache for key \`${key}\`, skipping`
@@ -1,4 +1,3 @@
1
- import { PrismaClient } from '@prisma/client';
2
1
  type WithOptionalMessage<T = Record<string, unknown>> = T & {
3
2
  /**
4
3
  * A message to be shown if the validation fails.
@@ -135,8 +134,17 @@ interface CustomValidatorOptions extends WithOptionalMessage {
135
134
  with: () => void;
136
135
  }
137
136
  interface UniquenessValidatorOptions extends WithOptionalMessage {
138
- db?: PrismaClient;
137
+ db?: UniquenessDb;
139
138
  }
139
+ type UniquenessWhere = Record<'AND' | 'NOT', Record<string, unknown>[]>;
140
+ export type UniquenessTransactionClient = Record<string, {
141
+ findFirst: (args: {
142
+ where: UniquenessWhere;
143
+ }) => Promise<unknown>;
144
+ }>;
145
+ type UniquenessDb = {
146
+ $transaction: <T>(callback: (tx: UniquenessTransactionClient) => Promise<T>) => Promise<T>;
147
+ };
140
148
  interface ValidationRecipe {
141
149
  /**
142
150
  * Requires that a field NOT be present, meaning it must be `null` or `undefined`.
@@ -195,8 +203,10 @@ interface ValidationRecipe {
195
203
  */
196
204
  presence?: boolean | PresenceValidatorOptions;
197
205
  /**
198
- * Run a custom validation function which should either throw or return nothing.
199
- * If the function throws an error, the error message will be used as the validation error associated with the field.
206
+ * Run a custom validation function which should either throw or return
207
+ * nothing.
208
+ * If the function throws an error, the error message will be used as the
209
+ * validation error associated with the field.
200
210
  */
201
211
  custom?: CustomValidatorOptions;
202
212
  }
@@ -210,13 +220,13 @@ interface ValidationWithMessagesRecipe extends ValidationRecipe {
210
220
  length?: WithRequiredMessage<LengthValidatorOptions>;
211
221
  numericality?: WithRequiredMessage<NumericalityValidatorOptions>;
212
222
  presence?: WithRequiredMessage<PresenceValidatorOptions>;
213
- custom?: WithRequiredMessage<CustomValidatorOptions>;
223
+ custom?: CustomValidatorOptions;
214
224
  }
215
225
  export declare function validate(value: unknown, labelOrRecipe: ValidationWithMessagesRecipe, recipe?: never): void;
216
226
  export declare function validate(value: unknown, labelOrRecipe: string, recipe: ValidationRecipe): void;
217
227
  export declare const validateWithSync: (func: () => void) => void;
218
228
  export declare const validateWith: (func: () => Promise<any>) => Promise<void>;
219
- export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: (tx: PrismaClient) => Promise<any>, callback: never): Promise<any>;
220
- export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: UniquenessValidatorOptions, callback?: (tx: PrismaClient) => Promise<any>): Promise<any>;
229
+ export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: (tx: UniquenessTransactionClient) => Promise<any>, callback?: never): Promise<any>;
230
+ export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: UniquenessValidatorOptions, callback?: (tx: UniquenessTransactionClient) => Promise<any>): Promise<any>;
221
231
  export {};
222
232
  //# sourceMappingURL=validations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../../src/validations/validations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C,KAAK,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;IAC1D;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AACD,KAAK,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClD,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;AAEnC,UAAU,uBAAwB,SAAQ,mBAAmB;IAC3D;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D;;OAEG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;CACf;AAED,KAAK,qBAAqB,GAAG,mBAAmB,CAAA;AAEhD,UAAU,yBAA0B,SAAQ,mBAAmB;IAC7D;;OAEG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,UAAU,yBAA0B,SAAQ,mBAAmB;IAC7D;;OAEG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,UAAU,4BAA6B,SAAQ,mBAAmB;IAChE;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,UAAU,sBAAuB,SAAQ,mBAAmB;IAC1D;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,UAAU,0BAA2B,SAAQ,mBAAmB;IAC9D,EAAE,CAAC,EAAE,YAAY,CAAA;CAClB;AAGD,UAAU,gBAAgB;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;IAC3C;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAA;IACjD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAA;IACvC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,yBAAyB,CAAA;IACjD;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAA;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,yBAAyB,CAAA;IACjD;;OAEG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAA;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,4BAA4B,CAAA;IACrD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAA;IAE7C;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC;AAGD,UAAU,4BAA6B,SAAQ,gBAAgB;IAC7D,OAAO,CAAC,EAAE,mBAAmB,CAAC,uBAAuB,CAAC,CAAA;IACtD,UAAU,CAAC,EAAE,mBAAmB,CAAC,0BAA0B,CAAC,CAAA;IAC5D,KAAK,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAA;IAClD,SAAS,CAAC,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,CAAA;IAC1D,MAAM,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAA;IACpD,SAAS,CAAC,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,CAAA;IAC1D,MAAM,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAA;IACpD,YAAY,CAAC,EAAE,mBAAmB,CAAC,4BAA4B,CAAC,CAAA;IAChE,QAAQ,CAAC,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;IACxD,MAAM,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAA;CACrD;AAqVD,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,4BAA4B,EAC3C,MAAM,CAAC,EAAE,KAAK,GACb,IAAI,CAAA;AACP,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAAA;AA8BP,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,IAAI,SAOhD,CAAA;AAGD,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,OAAO,CAAC,GAAG,CAAC,kBAO1D,CAAA;AA8CD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,iBAAiB,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,EACrD,QAAQ,EAAE,KAAK,GACd,OAAO,CAAC,GAAG,CAAC,CAAA;AACf,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,iBAAiB,EAAE,0BAA0B,EAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,GAAG,CAAC,GAC5C,OAAO,CAAC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../../src/validations/validations.ts"],"names":[],"mappings":"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"}
@@ -259,9 +259,8 @@ const fieldsToString = (fields) => {
259
259
  return output.join(", ");
260
260
  };
261
261
  const validationError = (type, name, options, substitutions = {}) => {
262
- const errorClassName = `${(0, import_pascalcase.default)(
263
- type
264
- )}ValidationError`;
262
+ const pascalType = (0, import_pascalcase.default)(type);
263
+ const errorClassName = `${pascalType}ValidationError`;
265
264
  const ErrorClass = ValidationErrors[errorClassName];
266
265
  const errorMessage = typeof options === "object" ? options.message : void 0;
267
266
  throw new ErrorClass(name, errorMessage, substitutions);
@@ -279,9 +278,11 @@ function validate(value, labelOrRecipe, recipe) {
279
278
  if (typeof labelOrRecipe === "object") {
280
279
  label = "";
281
280
  validationRecipe = labelOrRecipe;
282
- } else {
281
+ } else if (recipe) {
283
282
  label = labelOrRecipe;
284
283
  validationRecipe = recipe;
284
+ } else {
285
+ throw new Error("invalid options");
285
286
  }
286
287
  for (const [validator, options] of Object.entries(validationRecipe)) {
287
288
  if (typeof options === "undefined") {
@@ -310,20 +311,15 @@ async function validateUniqueness(model, fields, optionsOrCallback, callback) {
310
311
  const { $self, $scope, ...rest } = fields;
311
312
  let options = {};
312
313
  let validCallback;
313
- let db = null;
314
314
  if (typeof optionsOrCallback === "function") {
315
315
  validCallback = optionsOrCallback;
316
316
  } else {
317
317
  options = optionsOrCallback;
318
318
  validCallback = callback;
319
319
  }
320
- if (options.db) {
321
- const { db: customDb, ...restOptions } = options;
322
- options = restOptions;
323
- db = customDb;
324
- } else {
325
- db = new import_client.PrismaClient();
326
- }
320
+ const { db: _db, ...restOptions } = options;
321
+ const db = options.db || new import_client.PrismaClient();
322
+ options = restOptions;
327
323
  const where = {
328
324
  AND: [rest],
329
325
  NOT: []
@@ -337,7 +333,7 @@ async function validateUniqueness(model, fields, optionsOrCallback, callback) {
337
333
  return await db.$transaction(async (tx) => {
338
334
  const found = await tx[model].findFirst({ where });
339
335
  if (found) {
340
- validationError("uniqueness", fieldsToString(fields), options);
336
+ validationError("uniqueness", fieldsToString(rest), options);
341
337
  }
342
338
  return validCallback(tx);
343
339
  });
@@ -1,4 +1,3 @@
1
- import { PrismaClient } from '@prisma/client';
2
1
  type WithOptionalMessage<T = Record<string, unknown>> = T & {
3
2
  /**
4
3
  * A message to be shown if the validation fails.
@@ -135,8 +134,17 @@ interface CustomValidatorOptions extends WithOptionalMessage {
135
134
  with: () => void;
136
135
  }
137
136
  interface UniquenessValidatorOptions extends WithOptionalMessage {
138
- db?: PrismaClient;
137
+ db?: UniquenessDb;
139
138
  }
139
+ type UniquenessWhere = Record<'AND' | 'NOT', Record<string, unknown>[]>;
140
+ export type UniquenessTransactionClient = Record<string, {
141
+ findFirst: (args: {
142
+ where: UniquenessWhere;
143
+ }) => Promise<unknown>;
144
+ }>;
145
+ type UniquenessDb = {
146
+ $transaction: <T>(callback: (tx: UniquenessTransactionClient) => Promise<T>) => Promise<T>;
147
+ };
140
148
  interface ValidationRecipe {
141
149
  /**
142
150
  * Requires that a field NOT be present, meaning it must be `null` or `undefined`.
@@ -195,8 +203,10 @@ interface ValidationRecipe {
195
203
  */
196
204
  presence?: boolean | PresenceValidatorOptions;
197
205
  /**
198
- * Run a custom validation function which should either throw or return nothing.
199
- * If the function throws an error, the error message will be used as the validation error associated with the field.
206
+ * Run a custom validation function which should either throw or return
207
+ * nothing.
208
+ * If the function throws an error, the error message will be used as the
209
+ * validation error associated with the field.
200
210
  */
201
211
  custom?: CustomValidatorOptions;
202
212
  }
@@ -210,13 +220,13 @@ interface ValidationWithMessagesRecipe extends ValidationRecipe {
210
220
  length?: WithRequiredMessage<LengthValidatorOptions>;
211
221
  numericality?: WithRequiredMessage<NumericalityValidatorOptions>;
212
222
  presence?: WithRequiredMessage<PresenceValidatorOptions>;
213
- custom?: WithRequiredMessage<CustomValidatorOptions>;
223
+ custom?: CustomValidatorOptions;
214
224
  }
215
225
  export declare function validate(value: unknown, labelOrRecipe: ValidationWithMessagesRecipe, recipe?: never): void;
216
226
  export declare function validate(value: unknown, labelOrRecipe: string, recipe: ValidationRecipe): void;
217
227
  export declare const validateWithSync: (func: () => void) => void;
218
228
  export declare const validateWith: (func: () => Promise<any>) => Promise<void>;
219
- export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: (tx: PrismaClient) => Promise<any>, callback: never): Promise<any>;
220
- export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: UniquenessValidatorOptions, callback?: (tx: PrismaClient) => Promise<any>): Promise<any>;
229
+ export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: (tx: UniquenessTransactionClient) => Promise<any>, callback?: never): Promise<any>;
230
+ export declare function validateUniqueness(model: string, fields: Record<string, unknown>, optionsOrCallback: UniquenessValidatorOptions, callback?: (tx: UniquenessTransactionClient) => Promise<any>): Promise<any>;
221
231
  export {};
222
232
  //# sourceMappingURL=validations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/validations/validations.ts"],"names":[],"mappings":"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"}
@@ -223,9 +223,8 @@ const fieldsToString = (fields) => {
223
223
  return output.join(", ");
224
224
  };
225
225
  const validationError = (type, name, options, substitutions = {}) => {
226
- const errorClassName = `${pascalcase(
227
- type
228
- )}ValidationError`;
226
+ const pascalType = pascalcase(type);
227
+ const errorClassName = `${pascalType}ValidationError`;
229
228
  const ErrorClass = ValidationErrors[errorClassName];
230
229
  const errorMessage = typeof options === "object" ? options.message : void 0;
231
230
  throw new ErrorClass(name, errorMessage, substitutions);
@@ -243,9 +242,11 @@ function validate(value, labelOrRecipe, recipe) {
243
242
  if (typeof labelOrRecipe === "object") {
244
243
  label = "";
245
244
  validationRecipe = labelOrRecipe;
246
- } else {
245
+ } else if (recipe) {
247
246
  label = labelOrRecipe;
248
247
  validationRecipe = recipe;
248
+ } else {
249
+ throw new Error("invalid options");
249
250
  }
250
251
  for (const [validator, options] of Object.entries(validationRecipe)) {
251
252
  if (typeof options === "undefined") {
@@ -274,20 +275,15 @@ async function validateUniqueness(model, fields, optionsOrCallback, callback) {
274
275
  const { $self, $scope, ...rest } = fields;
275
276
  let options = {};
276
277
  let validCallback;
277
- let db = null;
278
278
  if (typeof optionsOrCallback === "function") {
279
279
  validCallback = optionsOrCallback;
280
280
  } else {
281
281
  options = optionsOrCallback;
282
282
  validCallback = callback;
283
283
  }
284
- if (options.db) {
285
- const { db: customDb, ...restOptions } = options;
286
- options = restOptions;
287
- db = customDb;
288
- } else {
289
- db = new PrismaClient();
290
- }
284
+ const { db: _db, ...restOptions } = options;
285
+ const db = options.db || new PrismaClient();
286
+ options = restOptions;
291
287
  const where = {
292
288
  AND: [rest],
293
289
  NOT: []
@@ -301,7 +297,7 @@ async function validateUniqueness(model, fields, optionsOrCallback, callback) {
301
297
  return await db.$transaction(async (tx) => {
302
298
  const found = await tx[model].findFirst({ where });
303
299
  if (found) {
304
- validationError("uniqueness", fieldsToString(fields), options);
300
+ validationError("uniqueness", fieldsToString(rest), options);
305
301
  }
306
302
  return validCallback(tx);
307
303
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedarjs/api",
3
- "version": "2.6.1-next.0+30211aa9a",
3
+ "version": "2.6.1-next.104+6be0fa58d",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/cedarjs/cedar.git",
@@ -97,7 +97,7 @@
97
97
  "title-case": "3.0.3"
98
98
  },
99
99
  "devDependencies": {
100
- "@cedarjs/framework-tools": "2.6.1-next.1",
100
+ "@cedarjs/framework-tools": "2.6.1-next.104",
101
101
  "@types/aws-lambda": "8.10.160",
102
102
  "@types/jsonwebtoken": "9.0.10",
103
103
  "@types/memjs": "1",
@@ -106,7 +106,7 @@
106
106
  "concurrently": "9.2.1",
107
107
  "memjs": "1.3.2",
108
108
  "publint": "0.3.17",
109
- "redis": "5.10.0",
109
+ "redis": "5.11.0",
110
110
  "split2": "4.2.0",
111
111
  "ts-toolbelt": "9.6.0",
112
112
  "tsx": "4.21.0",
@@ -115,7 +115,7 @@
115
115
  },
116
116
  "peerDependencies": {
117
117
  "memjs": "1.3.2",
118
- "redis": "5.10.0"
118
+ "redis": "5.11.0"
119
119
  },
120
120
  "peerDependenciesMeta": {
121
121
  "memjs": {
@@ -128,5 +128,5 @@
128
128
  "publishConfig": {
129
129
  "access": "public"
130
130
  },
131
- "gitHead": "30211aa9a59a86cf7e631071f0f67df976f6acfb"
131
+ "gitHead": "6be0fa58d21ad717026065445aab7117e39ee3eb"
132
132
  }