@zenstackhq/runtime 1.0.0-beta.1 → 1.0.0-beta.11

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.
Files changed (49) hide show
  1. package/browser/index.d.mts +13 -0
  2. package/browser/index.d.ts +13 -0
  3. package/browser/index.js +70 -0
  4. package/browser/index.js.map +1 -0
  5. package/browser/index.mjs +32 -0
  6. package/browser/index.mjs.map +1 -0
  7. package/constants.d.ts +12 -2
  8. package/constants.js +13 -2
  9. package/constants.js.map +1 -1
  10. package/enhancements/index.d.ts +4 -0
  11. package/enhancements/index.js +4 -0
  12. package/enhancements/index.js.map +1 -1
  13. package/enhancements/model-meta.d.ts +4 -0
  14. package/enhancements/model-meta.js +24 -3
  15. package/enhancements/model-meta.js.map +1 -1
  16. package/enhancements/nested-write-vistor.d.ts +12 -11
  17. package/enhancements/nested-write-vistor.js +10 -10
  18. package/enhancements/nested-write-vistor.js.map +1 -1
  19. package/enhancements/policy/handler.d.ts +4 -3
  20. package/enhancements/policy/handler.js +12 -13
  21. package/enhancements/policy/handler.js.map +1 -1
  22. package/enhancements/policy/index.d.ts +5 -1
  23. package/enhancements/policy/index.js +36 -4
  24. package/enhancements/policy/index.js.map +1 -1
  25. package/enhancements/policy/policy-utils.d.ts +6 -3
  26. package/enhancements/policy/policy-utils.js +112 -39
  27. package/enhancements/policy/policy-utils.js.map +1 -1
  28. package/enhancements/types.d.ts +10 -1
  29. package/enhancements/utils.js +26 -4
  30. package/enhancements/utils.js.map +1 -1
  31. package/enhancements/where-visitor.d.ts +33 -0
  32. package/enhancements/where-visitor.js +87 -0
  33. package/enhancements/where-visitor.js.map +1 -0
  34. package/index.d.ts +2 -2
  35. package/index.js +2 -2
  36. package/index.js.map +1 -1
  37. package/package.json +31 -8
  38. package/zod/index.d.ts +2 -0
  39. package/zod/index.js +4 -0
  40. package/zod/input.d.ts +1 -0
  41. package/zod/input.js +8 -0
  42. package/zod/models.d.ts +1 -0
  43. package/zod/models.js +8 -0
  44. package/serialization-utils.d.ts +0 -1
  45. package/serialization-utils.js +0 -22
  46. package/serialization-utils.js.map +0 -1
  47. package/zod.d.ts +0 -10
  48. package/zod.js +0 -17
  49. package/zod.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Serialize the given value with superjson
3
+ */
4
+ declare function serialize(value: unknown): {
5
+ data: unknown;
6
+ meta: unknown;
7
+ };
8
+ /**
9
+ * Deserialize the given value with superjson using the given metadata
10
+ */
11
+ declare function deserialize(value: unknown, meta: any): unknown;
12
+
13
+ export { deserialize, serialize };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Serialize the given value with superjson
3
+ */
4
+ declare function serialize(value: unknown): {
5
+ data: unknown;
6
+ meta: unknown;
7
+ };
8
+ /**
9
+ * Deserialize the given value with superjson using the given metadata
10
+ */
11
+ declare function deserialize(value: unknown, meta: any): unknown;
12
+
13
+ export { deserialize, serialize };
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
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
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/browser/index.ts
31
+ var browser_exports = {};
32
+ __export(browser_exports, {
33
+ deserialize: () => deserialize,
34
+ serialize: () => serialize
35
+ });
36
+ module.exports = __toCommonJS(browser_exports);
37
+
38
+ // src/browser/serialization.ts
39
+ var import_buffer = require("buffer");
40
+ var import_decimal = __toESM(require("decimal.js"));
41
+ var import_superjson = __toESM(require("superjson"));
42
+ import_superjson.default.registerCustom(
43
+ {
44
+ isApplicable: (v) => import_decimal.default.isDecimal(v),
45
+ serialize: (v) => v.toJSON(),
46
+ deserialize: (v) => new import_decimal.default(v)
47
+ },
48
+ "Decimal"
49
+ );
50
+ import_superjson.default.registerCustom(
51
+ {
52
+ isApplicable: (v) => import_buffer.Buffer.isBuffer(v),
53
+ serialize: (v) => v.toString("base64"),
54
+ deserialize: (v) => import_buffer.Buffer.from(v, "base64")
55
+ },
56
+ "Bytes"
57
+ );
58
+ function serialize(value) {
59
+ const { json, meta } = import_superjson.default.serialize(value);
60
+ return { data: json, meta };
61
+ }
62
+ function deserialize(value, meta) {
63
+ return import_superjson.default.deserialize({ json: value, meta });
64
+ }
65
+ // Annotate the CommonJS export names for ESM import in node:
66
+ 0 && (module.exports = {
67
+ deserialize,
68
+ serialize
69
+ });
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/browser/index.ts","../../src/browser/serialization.ts"],"sourcesContent":["export * from './serialization';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Buffer } from 'buffer';\nimport Decimal from 'decimal.js';\nimport SuperJSON from 'superjson';\n\nSuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal'\n);\n\nSuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes'\n);\n\n/**\n * Serialize the given value with superjson\n */\nexport function serialize(value: unknown): { data: unknown; meta: unknown } {\n const { json, meta } = SuperJSON.serialize(value);\n return { data: json, meta };\n}\n\n/**\n * Deserialize the given value with superjson using the given metadata\n */\nexport function deserialize(value: unknown, meta: any): unknown {\n return SuperJSON.deserialize({ json: value as any, meta });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,oBAAuB;AACvB,qBAAoB;AACpB,uBAAsB;AAEtB,iBAAAA,QAAU;AAAA,EACN;AAAA,IACI,cAAc,CAAC,MAAoB,eAAAC,QAAQ,UAAU,CAAC;AAAA,IACtD,WAAW,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3B,aAAa,CAAC,MAAM,IAAI,eAAAA,QAAQ,CAAC;AAAA,EACrC;AAAA,EACA;AACJ;AAEA,iBAAAD,QAAU;AAAA,EACN;AAAA,IACI,cAAc,CAAC,MAAmB,qBAAO,SAAS,CAAC;AAAA,IACnD,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ;AAAA,IACrC,aAAa,CAAC,MAAM,qBAAO,KAAK,GAAG,QAAQ;AAAA,EAC/C;AAAA,EACA;AACJ;AAKO,SAAS,UAAU,OAAkD;AACxE,QAAM,EAAE,MAAM,KAAK,IAAI,iBAAAA,QAAU,UAAU,KAAK;AAChD,SAAO,EAAE,MAAM,MAAM,KAAK;AAC9B;AAKO,SAAS,YAAY,OAAgB,MAAoB;AAC5D,SAAO,iBAAAA,QAAU,YAAY,EAAE,MAAM,OAAc,KAAK,CAAC;AAC7D;","names":["SuperJSON","Decimal"]}
@@ -0,0 +1,32 @@
1
+ // src/browser/serialization.ts
2
+ import { Buffer } from "buffer";
3
+ import Decimal from "decimal.js";
4
+ import SuperJSON from "superjson";
5
+ SuperJSON.registerCustom(
6
+ {
7
+ isApplicable: (v) => Decimal.isDecimal(v),
8
+ serialize: (v) => v.toJSON(),
9
+ deserialize: (v) => new Decimal(v)
10
+ },
11
+ "Decimal"
12
+ );
13
+ SuperJSON.registerCustom(
14
+ {
15
+ isApplicable: (v) => Buffer.isBuffer(v),
16
+ serialize: (v) => v.toString("base64"),
17
+ deserialize: (v) => Buffer.from(v, "base64")
18
+ },
19
+ "Bytes"
20
+ );
21
+ function serialize(value) {
22
+ const { json, meta } = SuperJSON.serialize(value);
23
+ return { data: json, meta };
24
+ }
25
+ function deserialize(value, meta) {
26
+ return SuperJSON.deserialize({ json: value, meta });
27
+ }
28
+ export {
29
+ deserialize,
30
+ serialize
31
+ };
32
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/browser/serialization.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Buffer } from 'buffer';\nimport Decimal from 'decimal.js';\nimport SuperJSON from 'superjson';\n\nSuperJSON.registerCustom<Decimal, string>(\n {\n isApplicable: (v): v is Decimal => Decimal.isDecimal(v),\n serialize: (v) => v.toJSON(),\n deserialize: (v) => new Decimal(v),\n },\n 'Decimal'\n);\n\nSuperJSON.registerCustom<Buffer, string>(\n {\n isApplicable: (v): v is Buffer => Buffer.isBuffer(v),\n serialize: (v) => v.toString('base64'),\n deserialize: (v) => Buffer.from(v, 'base64'),\n },\n 'Bytes'\n);\n\n/**\n * Serialize the given value with superjson\n */\nexport function serialize(value: unknown): { data: unknown; meta: unknown } {\n const { json, meta } = SuperJSON.serialize(value);\n return { data: json, meta };\n}\n\n/**\n * Deserialize the given value with superjson using the given metadata\n */\nexport function deserialize(value: unknown, meta: any): unknown {\n return SuperJSON.deserialize({ json: value as any, meta });\n}\n"],"mappings":";AACA,SAAS,cAAc;AACvB,OAAO,aAAa;AACpB,OAAO,eAAe;AAEtB,UAAU;AAAA,EACN;AAAA,IACI,cAAc,CAAC,MAAoB,QAAQ,UAAU,CAAC;AAAA,IACtD,WAAW,CAAC,MAAM,EAAE,OAAO;AAAA,IAC3B,aAAa,CAAC,MAAM,IAAI,QAAQ,CAAC;AAAA,EACrC;AAAA,EACA;AACJ;AAEA,UAAU;AAAA,EACN;AAAA,IACI,cAAc,CAAC,MAAmB,OAAO,SAAS,CAAC;AAAA,IACnD,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ;AAAA,IACrC,aAAa,CAAC,MAAM,OAAO,KAAK,GAAG,QAAQ;AAAA,EAC/C;AAAA,EACA;AACJ;AAKO,SAAS,UAAU,OAAkD;AACxE,QAAM,EAAE,MAAM,KAAK,IAAI,UAAU,UAAU,KAAK;AAChD,SAAO,EAAE,MAAM,MAAM,KAAK;AAC9B;AAKO,SAAS,YAAY,OAAgB,MAAoB;AAC5D,SAAO,UAAU,YAAY,EAAE,MAAM,OAAc,KAAK,CAAC;AAC7D;","names":[]}
package/constants.d.ts CHANGED
@@ -15,11 +15,21 @@ export declare const GUARD_FIELD_NAME = "zenstack_guard";
15
15
  */
16
16
  export declare const AUXILIARY_FIELDS: string[];
17
17
  /**
18
- * Reasons for a CRUD operation to fail.
18
+ * Reasons for a CRUD operation to fail
19
19
  */
20
20
  export declare enum CrudFailureReason {
21
21
  /**
22
22
  * CRUD suceeded but the result was not readable.
23
23
  */
24
- RESULT_NOT_READABLE = "RESULT_NOT_READABLE"
24
+ RESULT_NOT_READABLE = "RESULT_NOT_READABLE",
25
+ /**
26
+ * CRUD failed because of a data validation rule violation.
27
+ */
28
+ DATA_VALIDATION_VIOLATION = "DATA_VALIDATION_VIOLATION"
29
+ }
30
+ /**
31
+ * Prisma error codes used
32
+ */
33
+ export declare enum PrismaErrorCode {
34
+ CONSTRAINED_FAILED = "P2004"
25
35
  }
package/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CrudFailureReason = exports.AUXILIARY_FIELDS = exports.GUARD_FIELD_NAME = exports.TRANSACTION_FIELD_NAME = exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
3
+ exports.PrismaErrorCode = exports.CrudFailureReason = exports.AUXILIARY_FIELDS = exports.GUARD_FIELD_NAME = exports.TRANSACTION_FIELD_NAME = exports.DEFAULT_PASSWORD_SALT_LENGTH = void 0;
4
4
  /**
5
5
  * Default length of password hash salt (used by bcryptjs to hash password)
6
6
  */
@@ -18,7 +18,7 @@ exports.GUARD_FIELD_NAME = 'zenstack_guard';
18
18
  */
19
19
  exports.AUXILIARY_FIELDS = [exports.TRANSACTION_FIELD_NAME, exports.GUARD_FIELD_NAME];
20
20
  /**
21
- * Reasons for a CRUD operation to fail.
21
+ * Reasons for a CRUD operation to fail
22
22
  */
23
23
  var CrudFailureReason;
24
24
  (function (CrudFailureReason) {
@@ -26,5 +26,16 @@ var CrudFailureReason;
26
26
  * CRUD suceeded but the result was not readable.
27
27
  */
28
28
  CrudFailureReason["RESULT_NOT_READABLE"] = "RESULT_NOT_READABLE";
29
+ /**
30
+ * CRUD failed because of a data validation rule violation.
31
+ */
32
+ CrudFailureReason["DATA_VALIDATION_VIOLATION"] = "DATA_VALIDATION_VIOLATION";
29
33
  })(CrudFailureReason = exports.CrudFailureReason || (exports.CrudFailureReason = {}));
34
+ /**
35
+ * Prisma error codes used
36
+ */
37
+ var PrismaErrorCode;
38
+ (function (PrismaErrorCode) {
39
+ PrismaErrorCode["CONSTRAINED_FAILED"] = "P2004";
40
+ })(PrismaErrorCode = exports.PrismaErrorCode || (exports.PrismaErrorCode = {}));
30
41
  //# sourceMappingURL=constants.js.map
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACU,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,8BAAsB,EAAE,wBAAgB,CAAC,CAAC;AAE3E;;GAEG;AACH,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB;;OAEG;IACH,gEAA2C,CAAA;AAC/C,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;GAEG;AACU,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;GAEG;AACU,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,8BAAsB,EAAE,wBAAgB,CAAC,CAAC;AAE3E;;GAEG;AACH,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB;;OAEG;IACH,gEAA2C,CAAA;IAE3C;;OAEG;IACH,4EAAuD,CAAA;AAC3D,CAAC,EAVW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAU5B;AAED;;GAEG;AACH,IAAY,eAEX;AAFD,WAAY,eAAe;IACvB,+CAA4B,CAAA;AAChC,CAAC,EAFW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAE1B"}
@@ -1,5 +1,9 @@
1
+ export * from './model-meta';
2
+ export * from './nested-write-vistor';
1
3
  export * from './omit';
2
4
  export * from './password';
3
5
  export * from './policy';
4
6
  export * from './preset';
7
+ export * from './types';
5
8
  export * from './utils';
9
+ export * from './where-visitor';
@@ -14,9 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./model-meta"), exports);
18
+ __exportStar(require("./nested-write-vistor"), exports);
17
19
  __exportStar(require("./omit"), exports);
18
20
  __exportStar(require("./password"), exports);
19
21
  __exportStar(require("./policy"), exports);
20
22
  __exportStar(require("./preset"), exports);
23
+ __exportStar(require("./types"), exports);
21
24
  __exportStar(require("./utils"), exports);
25
+ __exportStar(require("./where-visitor"), exports);
22
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enhancements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enhancements/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,wDAAsC;AACtC,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,0CAAwB;AACxB,kDAAgC"}
@@ -7,3 +7,7 @@ export declare function getDefaultModelMeta(): ModelMeta;
7
7
  * Resolves a model field to its metadata. Returns undefined if not found.
8
8
  */
9
9
  export declare function resolveField(modelMeta: ModelMeta, model: string, field: string): import("..").FieldInfo;
10
+ /**
11
+ * Gets all fields of a model.
12
+ */
13
+ export declare function getFields(modelMeta: ModelMeta, model: string): Record<string, import("..").FieldInfo>;
@@ -1,17 +1,31 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveField = exports.getDefaultModelMeta = void 0;
6
+ exports.getFields = exports.resolveField = exports.getDefaultModelMeta = void 0;
7
+ /* eslint-disable @typescript-eslint/no-var-requires */
4
8
  const lower_case_first_1 = require("lower-case-first");
9
+ const path_1 = __importDefault(require("path"));
5
10
  /**
6
11
  * Load model meta from standard location.
7
12
  */
8
13
  function getDefaultModelMeta() {
9
14
  try {
10
- // eslint-disable-next-line @typescript-eslint/no-var-requires
15
+ // normal load
11
16
  return require('.zenstack/model-meta').default;
12
17
  }
13
18
  catch (_a) {
14
- throw new Error('Model meta cannot be loaded');
19
+ if (process.env.ZENSTACK_TEST === '1') {
20
+ try {
21
+ // special handling for running as tests, try resolving relative to CWD
22
+ return require(path_1.default.join(process.cwd(), 'node_modules', '.zenstack', 'model-meta')).default;
23
+ }
24
+ catch (_b) {
25
+ throw new Error('Model meta cannot be loaded. Please make sure "zenstack generate" has been run.');
26
+ }
27
+ }
28
+ throw new Error('Model meta cannot be loaded. Please make sure "zenstack generate" has been run.');
15
29
  }
16
30
  }
17
31
  exports.getDefaultModelMeta = getDefaultModelMeta;
@@ -22,4 +36,11 @@ function resolveField(modelMeta, model, field) {
22
36
  return modelMeta.fields[(0, lower_case_first_1.lowerCaseFirst)(model)][field];
23
37
  }
24
38
  exports.resolveField = resolveField;
39
+ /**
40
+ * Gets all fields of a model.
41
+ */
42
+ function getFields(modelMeta, model) {
43
+ return modelMeta.fields[(0, lower_case_first_1.lowerCaseFirst)(model)];
44
+ }
45
+ exports.getFields = getFields;
25
46
  //# sourceMappingURL=model-meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAGlD;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;AACL,CAAC;AAPD,kDAOC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,oCAEC"}
1
+ {"version":3,"file":"model-meta.js","sourceRoot":"","sources":["../../src/enhancements/model-meta.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuD;AACvD,uDAAkD;AAClD,gDAAwB;AAGxB;;GAEG;AACH,SAAgB,mBAAmB;IAC/B,IAAI;QACA,cAAc;QACd,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC;KAClD;IAAC,WAAM;QACJ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE;YACnC,IAAI;gBACA,uEAAuE;gBACvE,OAAO,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;aAC/F;YAAC,WAAM;gBACJ,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACtG;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;KACtG;AACL,CAAC;AAfD,kDAeC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAoB,EAAE,KAAa,EAAE,KAAa;IAC3E,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAFD,oCAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,SAAoB,EAAE,KAAa;IACzD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,8BAEC"}
@@ -2,13 +2,14 @@ import { FieldInfo, PrismaWriteActionType } from '../types';
2
2
  import { ModelMeta } from './types';
3
3
  type NestingPathItem = {
4
4
  field?: FieldInfo;
5
+ model: string;
5
6
  where: any;
6
7
  unique: boolean;
7
8
  };
8
9
  /**
9
10
  * Context for visiting
10
11
  */
11
- export type VisitorContext = {
12
+ export type NestedWriteVisitorContext = {
12
13
  /**
13
14
  * Parent data, can be used to replace fields
14
15
  */
@@ -26,29 +27,29 @@ export type VisitorContext = {
26
27
  * NestedWriteVisitor's callback actions
27
28
  */
28
29
  export type NestedWriterVisitorCallback = {
29
- create?: (model: string, args: any[], context: VisitorContext) => Promise<void>;
30
+ create?: (model: string, args: any[], context: NestedWriteVisitorContext) => Promise<void>;
30
31
  connectOrCreate?: (model: string, args: {
31
32
  where: object;
32
33
  create: any;
33
- }, context: VisitorContext) => Promise<void>;
34
- connect?: (model: string, args: object, context: VisitorContext) => Promise<void>;
35
- disconnect?: (model: string, args: object, context: VisitorContext) => Promise<void>;
34
+ }, context: NestedWriteVisitorContext) => Promise<void>;
35
+ connect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<void>;
36
+ disconnect?: (model: string, args: object, context: NestedWriteVisitorContext) => Promise<void>;
36
37
  update?: (model: string, args: {
37
38
  where: object;
38
39
  data: any;
39
- }, context: VisitorContext) => Promise<void>;
40
+ }, context: NestedWriteVisitorContext) => Promise<void>;
40
41
  updateMany?: (model: string, args: {
41
42
  where?: object;
42
43
  data: any;
43
- }, context: VisitorContext) => Promise<void>;
44
+ }, context: NestedWriteVisitorContext) => Promise<void>;
44
45
  upsert?: (model: string, args: {
45
46
  where: object;
46
47
  create: any;
47
48
  update: any;
48
- }, context: VisitorContext) => Promise<void>;
49
- delete?: (model: string, args: object | boolean, context: VisitorContext) => Promise<void>;
50
- deleteMany?: (model: string, args: any | object, context: VisitorContext) => Promise<void>;
51
- field?: (field: FieldInfo, action: PrismaWriteActionType, data: any, context: VisitorContext) => Promise<void>;
49
+ }, context: NestedWriteVisitorContext) => Promise<void>;
50
+ delete?: (model: string, args: object | boolean, context: NestedWriteVisitorContext) => Promise<void>;
51
+ deleteMany?: (model: string, args: any | object, context: NestedWriteVisitorContext) => Promise<void>;
52
+ field?: (field: FieldInfo, action: PrismaWriteActionType, data: any, context: NestedWriteVisitorContext) => Promise<void>;
52
53
  };
53
54
  /**
54
55
  * Recursive visitor for nested write (create/update) payload
@@ -61,7 +61,7 @@ class NestedWriteVisitor {
61
61
  // visit payload
62
62
  switch (action) {
63
63
  case 'create':
64
- context.nestingPath.push({ field, where: {}, unique: false });
64
+ context.nestingPath.push({ field, model, where: {}, unique: false });
65
65
  for (const item of (0, utils_1.enumerate)(data)) {
66
66
  if (this.callback.create) {
67
67
  yield this.callback.create(model, item, context);
@@ -72,7 +72,7 @@ class NestedWriteVisitor {
72
72
  case 'createMany':
73
73
  // skip the 'data' layer so as to keep consistency with 'create'
74
74
  if (data.data) {
75
- context.nestingPath.push({ field, where: {}, unique: false });
75
+ context.nestingPath.push({ field, model, where: {}, unique: false });
76
76
  for (const item of (0, utils_1.enumerate)(data.data)) {
77
77
  if (this.callback.create) {
78
78
  yield this.callback.create(model, item, context);
@@ -82,7 +82,7 @@ class NestedWriteVisitor {
82
82
  }
83
83
  break;
84
84
  case 'connectOrCreate':
85
- context.nestingPath.push({ field, where: data.where, unique: true });
85
+ context.nestingPath.push({ field, model, where: data.where, unique: true });
86
86
  for (const item of (0, utils_1.enumerate)(data)) {
87
87
  if (this.callback.connectOrCreate) {
88
88
  yield this.callback.connectOrCreate(model, item, context);
@@ -93,7 +93,7 @@ class NestedWriteVisitor {
93
93
  case 'connect':
94
94
  if (this.callback.connect) {
95
95
  for (const item of (0, utils_1.enumerate)(data)) {
96
- const newContext = Object.assign(Object.assign({}, context), { nestingPath: [...context.nestingPath, { field, where: item, unique: true }] });
96
+ const newContext = Object.assign(Object.assign({}, context), { nestingPath: [...context.nestingPath, { field, model, where: item, unique: true }] });
97
97
  yield this.callback.connect(model, item, newContext);
98
98
  }
99
99
  }
@@ -106,14 +106,14 @@ class NestedWriteVisitor {
106
106
  for (const item of (0, utils_1.enumerate)(data)) {
107
107
  const newContext = Object.assign(Object.assign({}, context), { nestingPath: [
108
108
  ...context.nestingPath,
109
- { field, where: item, unique: typeof item === 'object' },
109
+ { field, model, where: item, unique: typeof item === 'object' },
110
110
  ] });
111
111
  yield this.callback.disconnect(model, item, newContext);
112
112
  }
113
113
  }
114
114
  break;
115
115
  case 'update':
116
- context.nestingPath.push({ field, where: data.where, unique: false });
116
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
117
117
  for (const item of (0, utils_1.enumerate)(data)) {
118
118
  if (this.callback.update) {
119
119
  yield this.callback.update(model, item, context);
@@ -123,7 +123,7 @@ class NestedWriteVisitor {
123
123
  }
124
124
  break;
125
125
  case 'updateMany':
126
- context.nestingPath.push({ field, where: data.where, unique: false });
126
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
127
127
  for (const item of (0, utils_1.enumerate)(data)) {
128
128
  if (this.callback.updateMany) {
129
129
  yield this.callback.updateMany(model, item, context);
@@ -132,7 +132,7 @@ class NestedWriteVisitor {
132
132
  }
133
133
  break;
134
134
  case 'upsert': {
135
- context.nestingPath.push({ field, where: data.where, unique: true });
135
+ context.nestingPath.push({ field, model, where: data.where, unique: true });
136
136
  for (const item of (0, utils_1.enumerate)(data)) {
137
137
  if (this.callback.upsert) {
138
138
  yield this.callback.upsert(model, item, context);
@@ -144,7 +144,7 @@ class NestedWriteVisitor {
144
144
  }
145
145
  case 'delete': {
146
146
  if (this.callback.delete) {
147
- context.nestingPath.push({ field, where: data.where, unique: false });
147
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
148
148
  for (const item of (0, utils_1.enumerate)(data)) {
149
149
  yield this.callback.delete(model, item, context);
150
150
  }
@@ -153,7 +153,7 @@ class NestedWriteVisitor {
153
153
  }
154
154
  case 'deleteMany':
155
155
  if (this.callback.deleteMany) {
156
- context.nestingPath.push({ field, where: data.where, unique: false });
156
+ context.nestingPath.push({ field, model, where: data.where, unique: false });
157
157
  for (const item of (0, utils_1.enumerate)(data)) {
158
158
  yield this.callback.deleteMany(model, item, context);
159
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-write-vistor.js","sourceRoot":"","sources":["../../src/enhancements/nested-write-vistor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AuthUser, DbClientContract, PolicyOperationKind } from '../../types';
2
2
  import { BatchResult, PrismaProxyHandler } from '../proxy';
3
- import { ModelMeta, PolicyDef } from '../types';
3
+ import type { ModelMeta, PolicyDef, ZodSchemas } from '../types';
4
4
  /**
5
5
  * Prisma proxy handler for injecting access policy check.
6
6
  */
@@ -8,12 +8,13 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
8
8
  private readonly prisma;
9
9
  private readonly policy;
10
10
  private readonly modelMeta;
11
+ private readonly zodSchemas;
11
12
  private readonly model;
12
13
  private readonly user?;
13
14
  private readonly logPrismaQuery?;
14
15
  private readonly logger;
15
16
  private readonly utils;
16
- constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, model: string, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
17
+ constructor(prisma: DbClient, policy: PolicyDef, modelMeta: ModelMeta, zodSchemas: ZodSchemas | undefined, model: string, user?: AuthUser | undefined, logPrismaQuery?: boolean | undefined);
17
18
  private get modelClient();
18
19
  findUnique(args: any): Promise<{} | null>;
19
20
  findUniqueOrThrow(args: any): Promise<{}>;
@@ -32,7 +33,7 @@ export declare class PolicyProxyHandler<DbClient extends DbClientContract> imple
32
33
  aggregate(args: any): Promise<unknown>;
33
34
  groupBy(args: any): Promise<unknown>;
34
35
  count(args: any): Promise<unknown>;
35
- tryReject(operation: PolicyOperationKind): Promise<void>;
36
+ tryReject(operation: PolicyOperationKind): void;
36
37
  private checkReadback;
37
38
  private get shouldLogQuery();
38
39
  }
@@ -19,15 +19,16 @@ const policy_utils_1 = require("./policy-utils");
19
19
  * Prisma proxy handler for injecting access policy check.
20
20
  */
21
21
  class PolicyProxyHandler {
22
- constructor(prisma, policy, modelMeta, model, user, logPrismaQuery) {
22
+ constructor(prisma, policy, modelMeta, zodSchemas, model, user, logPrismaQuery) {
23
23
  this.prisma = prisma;
24
24
  this.policy = policy;
25
25
  this.modelMeta = modelMeta;
26
+ this.zodSchemas = zodSchemas;
26
27
  this.model = model;
27
28
  this.user = user;
28
29
  this.logPrismaQuery = logPrismaQuery;
29
30
  this.logger = new logger_1.Logger(prisma);
30
- this.utils = new policy_utils_1.PolicyUtil(this.prisma, this.modelMeta, this.policy, this.user, this.logPrismaQuery);
31
+ this.utils = new policy_utils_1.PolicyUtil(this.prisma, this.modelMeta, this.policy, this.zodSchemas, this.user, this.logPrismaQuery);
31
32
  }
32
33
  get modelClient() {
33
34
  return this.prisma[this.model];
@@ -41,7 +42,7 @@ class PolicyProxyHandler {
41
42
  if (!args.where) {
42
43
  throw (0, utils_1.prismaClientValidationError)(this.prisma, 'where field is required in query argument');
43
44
  }
44
- const guard = yield this.utils.getAuthGuard(this.model, 'read');
45
+ const guard = this.utils.getAuthGuard(this.model, 'read');
45
46
  if (guard === false) {
46
47
  return null;
47
48
  }
@@ -51,7 +52,7 @@ class PolicyProxyHandler {
51
52
  }
52
53
  findUniqueOrThrow(args) {
53
54
  return __awaiter(this, void 0, void 0, function* () {
54
- const guard = yield this.utils.getAuthGuard(this.model, 'read');
55
+ const guard = this.utils.getAuthGuard(this.model, 'read');
55
56
  if (guard === false) {
56
57
  throw this.utils.notFound(this.model);
57
58
  }
@@ -65,7 +66,7 @@ class PolicyProxyHandler {
65
66
  findFirst(args) {
66
67
  var _a;
67
68
  return __awaiter(this, void 0, void 0, function* () {
68
- const guard = yield this.utils.getAuthGuard(this.model, 'read');
69
+ const guard = this.utils.getAuthGuard(this.model, 'read');
69
70
  if (guard === false) {
70
71
  return null;
71
72
  }
@@ -75,7 +76,7 @@ class PolicyProxyHandler {
75
76
  }
76
77
  findFirstOrThrow(args) {
77
78
  return __awaiter(this, void 0, void 0, function* () {
78
- const guard = yield this.utils.getAuthGuard(this.model, 'read');
79
+ const guard = this.utils.getAuthGuard(this.model, 'read');
79
80
  if (guard === false) {
80
81
  throw this.utils.notFound(this.model);
81
82
  }
@@ -88,7 +89,7 @@ class PolicyProxyHandler {
88
89
  }
89
90
  findMany(args) {
90
91
  return __awaiter(this, void 0, void 0, function* () {
91
- const guard = yield this.utils.getAuthGuard(this.model, 'read');
92
+ const guard = this.utils.getAuthGuard(this.model, 'read');
92
93
  if (guard === false) {
93
94
  return [];
94
95
  }
@@ -313,12 +314,10 @@ class PolicyProxyHandler {
313
314
  });
314
315
  }
315
316
  tryReject(operation) {
316
- return __awaiter(this, void 0, void 0, function* () {
317
- const guard = yield this.utils.getAuthGuard(this.model, operation);
318
- if (guard === false) {
319
- throw this.utils.deniedByPolicy(this.model, operation);
320
- }
321
- });
317
+ const guard = this.utils.getAuthGuard(this.model, operation);
318
+ if (guard === false) {
319
+ throw this.utils.deniedByPolicy(this.model, operation);
320
+ }
322
321
  }
323
322
  checkReadback(origArgs, ids, action, operation) {
324
323
  return __awaiter(this, void 0, void 0, function* () {