@zenstackhq/runtime 2.16.0 → 3.0.0-alpha.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.
Files changed (236) hide show
  1. package/LICENSE +1 -1
  2. package/dist/client.cjs +6094 -0
  3. package/dist/client.cjs.map +1 -0
  4. package/dist/client.d.cts +19 -0
  5. package/dist/client.d.ts +19 -0
  6. package/dist/client.js +6060 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/contract-DguafRNB.d.cts +1272 -0
  9. package/dist/contract-DguafRNB.d.ts +1272 -0
  10. package/dist/index.cjs +6088 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.d.cts +14 -0
  13. package/dist/index.d.ts +14 -0
  14. package/dist/index.js +6057 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/plugins/policy.cjs +2343 -0
  17. package/dist/plugins/policy.cjs.map +1 -0
  18. package/dist/plugins/policy.d.cts +24 -0
  19. package/dist/plugins/policy.d.ts +24 -0
  20. package/dist/plugins/policy.js +2307 -0
  21. package/dist/plugins/policy.js.map +1 -0
  22. package/dist/schema.cjs +110 -0
  23. package/dist/schema.cjs.map +1 -0
  24. package/dist/schema.d.cts +29 -0
  25. package/dist/schema.d.ts +29 -0
  26. package/dist/schema.js +85 -0
  27. package/dist/schema.js.map +1 -0
  28. package/dist/utils/pg-utils.cjs +39 -0
  29. package/dist/utils/pg-utils.cjs.map +1 -0
  30. package/dist/utils/pg-utils.d.cts +8 -0
  31. package/dist/utils/pg-utils.d.ts +8 -0
  32. package/dist/utils/pg-utils.js +16 -0
  33. package/dist/utils/pg-utils.js.map +1 -0
  34. package/{browser/index.js → dist/utils/sqlite-utils.cjs} +21 -37
  35. package/dist/utils/sqlite-utils.cjs.map +1 -0
  36. package/dist/utils/sqlite-utils.d.cts +8 -0
  37. package/dist/utils/sqlite-utils.d.ts +8 -0
  38. package/dist/utils/sqlite-utils.js +22 -0
  39. package/dist/utils/sqlite-utils.js.map +1 -0
  40. package/package.json +106 -117
  41. package/README.md +0 -5
  42. package/browser/index.d.mts +0 -13
  43. package/browser/index.d.ts +0 -13
  44. package/browser/index.js.map +0 -1
  45. package/browser/index.mjs +0 -33
  46. package/browser/index.mjs.map +0 -1
  47. package/constants.d.ts +0 -62
  48. package/constants.js +0 -76
  49. package/constants.js.map +0 -1
  50. package/cross/index.d.mts +0 -379
  51. package/cross/index.d.ts +0 -379
  52. package/cross/index.js +0 -923
  53. package/cross/index.js.map +0 -1
  54. package/cross/index.mjs +0 -881
  55. package/cross/index.mjs.map +0 -1
  56. package/edge.d.ts +0 -1
  57. package/edge.js +0 -18
  58. package/edge.js.map +0 -1
  59. package/encryption/index.d.ts +0 -25
  60. package/encryption/index.js +0 -74
  61. package/encryption/index.js.map +0 -1
  62. package/encryption/utils.d.ts +0 -9
  63. package/encryption/utils.js +0 -99
  64. package/encryption/utils.js.map +0 -1
  65. package/enhance-edge.d.ts +0 -1
  66. package/enhance-edge.js +0 -10
  67. package/enhance.d.ts +0 -1
  68. package/enhance.js +0 -10
  69. package/enhancements/edge/create-enhancement.d.ts +0 -42
  70. package/enhancements/edge/create-enhancement.js +0 -102
  71. package/enhancements/edge/create-enhancement.js.map +0 -1
  72. package/enhancements/edge/default-auth.d.ts +0 -8
  73. package/enhancements/edge/default-auth.js +0 -180
  74. package/enhancements/edge/default-auth.js.map +0 -1
  75. package/enhancements/edge/delegate.d.ts +0 -77
  76. package/enhancements/edge/delegate.js +0 -1293
  77. package/enhancements/edge/delegate.js.map +0 -1
  78. package/enhancements/edge/encryption.d.ts +0 -7
  79. package/enhancements/edge/encryption.js +0 -150
  80. package/enhancements/edge/encryption.js.map +0 -1
  81. package/enhancements/edge/index.d.ts +0 -4
  82. package/enhancements/edge/index.js +0 -21
  83. package/enhancements/edge/index.js.map +0 -1
  84. package/enhancements/edge/json-processor.d.ts +0 -7
  85. package/enhancements/edge/json-processor.js +0 -89
  86. package/enhancements/edge/json-processor.js.map +0 -1
  87. package/enhancements/edge/logger.d.ts +0 -29
  88. package/enhancements/edge/logger.js +0 -65
  89. package/enhancements/edge/logger.js.map +0 -1
  90. package/enhancements/edge/omit.d.ts +0 -7
  91. package/enhancements/edge/omit.js +0 -96
  92. package/enhancements/edge/omit.js.map +0 -1
  93. package/enhancements/edge/password.d.ts +0 -7
  94. package/enhancements/edge/password.js +0 -64
  95. package/enhancements/edge/password.js.map +0 -1
  96. package/enhancements/edge/policy/check-utils.d.ts +0 -5
  97. package/enhancements/edge/policy/check-utils.js +0 -20
  98. package/enhancements/edge/policy/check-utils.js.map +0 -1
  99. package/enhancements/edge/policy/handler.d.ts +0 -100
  100. package/enhancements/edge/policy/handler.js +0 -1440
  101. package/enhancements/edge/policy/handler.js.map +0 -1
  102. package/enhancements/edge/policy/index.d.ts +0 -19
  103. package/enhancements/edge/policy/index.js +0 -65
  104. package/enhancements/edge/policy/index.js.map +0 -1
  105. package/enhancements/edge/policy/policy-utils.d.ts +0 -181
  106. package/enhancements/edge/policy/policy-utils.js +0 -1356
  107. package/enhancements/edge/policy/policy-utils.js.map +0 -1
  108. package/enhancements/edge/promise.d.ts +0 -15
  109. package/enhancements/edge/promise.js +0 -99
  110. package/enhancements/edge/promise.js.map +0 -1
  111. package/enhancements/edge/proxy.d.ts +0 -120
  112. package/enhancements/edge/proxy.js +0 -287
  113. package/enhancements/edge/proxy.js.map +0 -1
  114. package/enhancements/edge/query-utils.d.ts +0 -53
  115. package/enhancements/edge/query-utils.js +0 -256
  116. package/enhancements/edge/query-utils.js.map +0 -1
  117. package/enhancements/edge/types.d.ts +0 -238
  118. package/enhancements/edge/types.js +0 -3
  119. package/enhancements/edge/types.js.map +0 -1
  120. package/enhancements/edge/utils.d.ts +0 -11
  121. package/enhancements/edge/utils.js +0 -49
  122. package/enhancements/edge/utils.js.map +0 -1
  123. package/enhancements/edge/where-visitor.d.ts +0 -32
  124. package/enhancements/edge/where-visitor.js +0 -86
  125. package/enhancements/edge/where-visitor.js.map +0 -1
  126. package/enhancements/node/create-enhancement.d.ts +0 -42
  127. package/enhancements/node/create-enhancement.js +0 -102
  128. package/enhancements/node/create-enhancement.js.map +0 -1
  129. package/enhancements/node/default-auth.d.ts +0 -8
  130. package/enhancements/node/default-auth.js +0 -180
  131. package/enhancements/node/default-auth.js.map +0 -1
  132. package/enhancements/node/delegate.d.ts +0 -77
  133. package/enhancements/node/delegate.js +0 -1293
  134. package/enhancements/node/delegate.js.map +0 -1
  135. package/enhancements/node/encryption.d.ts +0 -7
  136. package/enhancements/node/encryption.js +0 -150
  137. package/enhancements/node/encryption.js.map +0 -1
  138. package/enhancements/node/index.d.ts +0 -4
  139. package/enhancements/node/index.js +0 -21
  140. package/enhancements/node/index.js.map +0 -1
  141. package/enhancements/node/json-processor.d.ts +0 -7
  142. package/enhancements/node/json-processor.js +0 -89
  143. package/enhancements/node/json-processor.js.map +0 -1
  144. package/enhancements/node/logger.d.ts +0 -29
  145. package/enhancements/node/logger.js +0 -65
  146. package/enhancements/node/logger.js.map +0 -1
  147. package/enhancements/node/omit.d.ts +0 -7
  148. package/enhancements/node/omit.js +0 -96
  149. package/enhancements/node/omit.js.map +0 -1
  150. package/enhancements/node/password.d.ts +0 -7
  151. package/enhancements/node/password.js +0 -64
  152. package/enhancements/node/password.js.map +0 -1
  153. package/enhancements/node/policy/check-utils.d.ts +0 -5
  154. package/enhancements/node/policy/check-utils.js +0 -87
  155. package/enhancements/node/policy/check-utils.js.map +0 -1
  156. package/enhancements/node/policy/constraint-solver.d.ts +0 -27
  157. package/enhancements/node/policy/constraint-solver.js +0 -164
  158. package/enhancements/node/policy/constraint-solver.js.map +0 -1
  159. package/enhancements/node/policy/handler.d.ts +0 -100
  160. package/enhancements/node/policy/handler.js +0 -1440
  161. package/enhancements/node/policy/handler.js.map +0 -1
  162. package/enhancements/node/policy/index.d.ts +0 -19
  163. package/enhancements/node/policy/index.js +0 -65
  164. package/enhancements/node/policy/index.js.map +0 -1
  165. package/enhancements/node/policy/policy-utils.d.ts +0 -181
  166. package/enhancements/node/policy/policy-utils.js +0 -1356
  167. package/enhancements/node/policy/policy-utils.js.map +0 -1
  168. package/enhancements/node/promise.d.ts +0 -15
  169. package/enhancements/node/promise.js +0 -99
  170. package/enhancements/node/promise.js.map +0 -1
  171. package/enhancements/node/proxy.d.ts +0 -120
  172. package/enhancements/node/proxy.js +0 -287
  173. package/enhancements/node/proxy.js.map +0 -1
  174. package/enhancements/node/query-utils.d.ts +0 -53
  175. package/enhancements/node/query-utils.js +0 -256
  176. package/enhancements/node/query-utils.js.map +0 -1
  177. package/enhancements/node/types.d.ts +0 -238
  178. package/enhancements/node/types.js +0 -3
  179. package/enhancements/node/types.js.map +0 -1
  180. package/enhancements/node/utils.d.ts +0 -11
  181. package/enhancements/node/utils.js +0 -49
  182. package/enhancements/node/utils.js.map +0 -1
  183. package/enhancements/node/where-visitor.d.ts +0 -32
  184. package/enhancements/node/where-visitor.js +0 -86
  185. package/enhancements/node/where-visitor.js.map +0 -1
  186. package/error.d.ts +0 -11
  187. package/error.js +0 -22
  188. package/error.js.map +0 -1
  189. package/index.d.ts +0 -7
  190. package/index.js +0 -24
  191. package/index.js.map +0 -1
  192. package/local-helpers/index.d.ts +0 -6
  193. package/local-helpers/index.js +0 -23
  194. package/local-helpers/index.js.map +0 -1
  195. package/local-helpers/is-plain-object.d.ts +0 -1
  196. package/local-helpers/is-plain-object.js +0 -25
  197. package/local-helpers/is-plain-object.js.map +0 -1
  198. package/local-helpers/lower-case-first.d.ts +0 -1
  199. package/local-helpers/lower-case-first.js +0 -7
  200. package/local-helpers/lower-case-first.js.map +0 -1
  201. package/local-helpers/param-case.d.ts +0 -1
  202. package/local-helpers/param-case.js +0 -20
  203. package/local-helpers/param-case.js.map +0 -1
  204. package/local-helpers/sleep.d.ts +0 -1
  205. package/local-helpers/sleep.js +0 -9
  206. package/local-helpers/sleep.js.map +0 -1
  207. package/local-helpers/tiny-invariant.d.ts +0 -1
  208. package/local-helpers/tiny-invariant.js +0 -15
  209. package/local-helpers/tiny-invariant.js.map +0 -1
  210. package/local-helpers/upper-case-first.d.ts +0 -1
  211. package/local-helpers/upper-case-first.js +0 -7
  212. package/local-helpers/upper-case-first.js.map +0 -1
  213. package/model-meta.d.ts +0 -1
  214. package/model-meta.js +0 -10
  215. package/models.d.ts +0 -1
  216. package/models.js +0 -1
  217. package/types.d.ts +0 -200
  218. package/types.js +0 -4
  219. package/types.js.map +0 -1
  220. package/validation.d.ts +0 -24
  221. package/validation.js +0 -52
  222. package/validation.js.map +0 -1
  223. package/version.d.ts +0 -5
  224. package/version.js +0 -35
  225. package/version.js.map +0 -1
  226. package/zod/index.d.ts +0 -3
  227. package/zod/index.js +0 -5
  228. package/zod/input.d.ts +0 -1
  229. package/zod/input.js +0 -8
  230. package/zod/models.d.ts +0 -1
  231. package/zod/models.js +0 -8
  232. package/zod/objects.d.ts +0 -1
  233. package/zod/objects.js +0 -8
  234. package/zod-utils.d.ts +0 -12
  235. package/zod-utils.js +0 -97
  236. package/zod-utils.js.map +0 -1
@@ -1,7 +0,0 @@
1
- import { InternalEnhancementOptions } from './create-enhancement';
2
- /**
3
- * Gets an enhanced Prisma client that supports `@password` attribute.
4
- *
5
- * @private
6
- */
7
- export declare function withPassword<DbClient extends object = any>(prisma: DbClient, options: InternalEnhancementOptions): DbClient;
@@ -1,64 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- /* eslint-disable @typescript-eslint/no-unused-vars */
4
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
- return new (P || (P = Promise))(function (resolve, reject) {
7
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
- step((generator = generator.apply(thisArg, _arguments || [])).next());
11
- });
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.withPassword = withPassword;
15
- const constants_1 = require("../../constants");
16
- const cross_1 = require("../../cross");
17
- const proxy_1 = require("./proxy");
18
- /**
19
- * Gets an enhanced Prisma client that supports `@password` attribute.
20
- *
21
- * @private
22
- */
23
- function withPassword(prisma, options) {
24
- return (0, proxy_1.makeProxy)(prisma, options.modelMeta, (_prisma, model) => new PasswordHandler(_prisma, model, options), 'password');
25
- }
26
- // eslint-disable-next-line @typescript-eslint/no-var-requires
27
- const hashFunc = typeof EdgeRuntime === 'string' ? require('bcryptjs').hashSync : require('bcryptjs').hash;
28
- class PasswordHandler extends proxy_1.DefaultPrismaProxyHandler {
29
- constructor(prisma, model, options) {
30
- super(prisma, model, options);
31
- }
32
- // base override
33
- preprocessArgs(action, args) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- if (args && constants_1.ACTIONS_WITH_WRITE_PAYLOAD.includes(action)) {
36
- yield this.preprocessWritePayload(this.model, action, args);
37
- }
38
- return args;
39
- });
40
- }
41
- preprocessWritePayload(model, action, args) {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- const visitor = new cross_1.NestedWriteVisitor(this.options.modelMeta, {
44
- field: (field, _action, data, context) => __awaiter(this, void 0, void 0, function* () {
45
- var _a, _b, _c;
46
- const pwdAttr = (_a = field.attributes) === null || _a === void 0 ? void 0 : _a.find((attr) => attr.name === '@password');
47
- if (pwdAttr && field.type === 'String') {
48
- // hash password value
49
- let salt = (_b = pwdAttr.args.find((arg) => arg.name === 'salt')) === null || _b === void 0 ? void 0 : _b.value;
50
- if (!salt) {
51
- salt = (_c = pwdAttr.args.find((arg) => arg.name === 'saltLength')) === null || _c === void 0 ? void 0 : _c.value;
52
- }
53
- if (!salt) {
54
- salt = constants_1.DEFAULT_PASSWORD_SALT_LENGTH;
55
- }
56
- context.parent[field.name] = yield hashFunc(data, salt);
57
- }
58
- }),
59
- });
60
- yield visitor.visit(model, action, args);
61
- });
62
- }
63
- }
64
- //# sourceMappingURL=password.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/enhancements/node/password.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,sDAAsD;;;;;;;;;;;AAatD,oCAUC;AArBD,+CAA2F;AAC3F,uCAA6E;AAG7E,mCAAmF;AAEnF;;;;GAIG;AACH,SAAgB,YAAY,CACxB,MAAgB,EAChB,OAAmC;IAEnC,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,OAAO,CAAC,SAAS,EACjB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,OAA2B,EAAE,KAAK,EAAE,OAAO,CAAC,EACpF,UAAU,CACb,CAAC;AACN,CAAC;AAOD,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AAE3G,MAAM,eAAgB,SAAQ,iCAAyB;IACnD,YAAY,MAAwB,EAAE,KAAa,EAAE,OAAmC;QACpF,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,MAA0B,EAAE,IAAS;;YAChE,IAAI,IAAI,IAAI,sCAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,MAA+B,EAAE,IAAI,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,sBAAsB,CAAC,KAAa,EAAE,MAA6B,EAAE,IAAS;;YACxF,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC3D,KAAK,EAAE,CAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBAC3C,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;oBAC5E,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,sBAAsB;wBACtB,IAAI,IAAI,GAAgC,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,0CACjF,KAAe,CAAC;wBACtB,IAAI,CAAC,IAAI,EAAE,CAAC;4BACR,IAAI,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,0CAAE,KAAe,CAAC;wBAClF,CAAC;wBACD,IAAI,CAAC,IAAI,EAAE,CAAC;4BACR,IAAI,GAAG,wCAA4B,CAAC;wBACxC,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC5D,CAAC;gBACL,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ"}
@@ -1,5 +0,0 @@
1
- import { ModelMeta } from '..';
2
- import type { DbClientContract } from '../../../types';
3
- import { PermissionCheckArgs } from '../types';
4
- import { PolicyUtil } from './policy-utils';
5
- export declare function checkPermission(model: string, args: PermissionCheckArgs, modelMeta: ModelMeta, policyUtils: PolicyUtil, prisma: DbClientContract, prismaModule: any): Promise<boolean>;
@@ -1,87 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.checkPermission = checkPermission;
13
- const ts_pattern_1 = require("ts-pattern");
14
- const __1 = require("..");
15
- const promise_1 = require("../promise");
16
- const utils_1 = require("../utils");
17
- const constraint_solver_1 = require("./constraint-solver");
18
- function checkPermission(model, args, modelMeta, policyUtils, prisma,
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- prismaModule) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- return (0, promise_1.createDeferredPromise)(() => doCheckPermission(model, args, modelMeta, policyUtils, prisma, prismaModule));
23
- });
24
- }
25
- function doCheckPermission(model, args, modelMeta, policyUtils, prisma,
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- prismaModule) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- if (!['create', 'read', 'update', 'delete'].includes(args.operation)) {
30
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Invalid "operation" ${args.operation}`);
31
- }
32
- let constraint = policyUtils.getCheckerConstraint(model, args.operation);
33
- if (typeof constraint === 'boolean') {
34
- return constraint;
35
- }
36
- if (args.where) {
37
- // combine runtime filters with generated constraints
38
- const extraConstraints = [];
39
- for (const [field, value] of Object.entries(args.where)) {
40
- if (value === undefined) {
41
- continue;
42
- }
43
- if (value === null) {
44
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Using "null" as filter value is not supported yet`);
45
- }
46
- const fieldInfo = (0, __1.requireField)(modelMeta, model, field);
47
- // relation and array fields are not supported
48
- if (fieldInfo.isDataModel || fieldInfo.isArray) {
49
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Providing filter for field "${field}" is not supported. Only scalar fields are allowed.`);
50
- }
51
- // map field type to constraint type
52
- const fieldType = (0, ts_pattern_1.match)(fieldInfo.type)
53
- .with(ts_pattern_1.P.union('Int', 'BigInt', 'Float', 'Decimal'), () => 'number')
54
- .with('String', () => 'string')
55
- .with('Boolean', () => 'boolean')
56
- .otherwise(() => {
57
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Providing filter for field "${field}" is not supported. Only number, string, and boolean fields are allowed.`);
58
- });
59
- // check value type
60
- const valueType = typeof value;
61
- if (valueType !== 'number' && valueType !== 'string' && valueType !== 'boolean') {
62
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Invalid value type for field "${field}". Only number, string or boolean is allowed.`);
63
- }
64
- if (fieldType !== valueType) {
65
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Invalid value type for field "${field}". Expected "${fieldType}".`);
66
- }
67
- // check number validity
68
- if (typeof value === 'number' && (!Number.isInteger(value) || value < 0)) {
69
- throw (0, utils_1.prismaClientValidationError)(prisma, prismaModule, `Invalid value for field "${field}". Only non-negative integers are allowed.`);
70
- }
71
- // build a constraint
72
- extraConstraints.push({
73
- kind: 'eq',
74
- left: { kind: 'variable', name: field, type: fieldType },
75
- right: { kind: 'value', value, type: fieldType },
76
- });
77
- }
78
- if (extraConstraints.length > 0) {
79
- // combine the constraints
80
- constraint = { kind: 'and', children: [constraint, ...extraConstraints] };
81
- }
82
- }
83
- // check satisfiability
84
- return new constraint_solver_1.ConstraintSolver().checkSat(constraint);
85
- });
86
- }
87
- //# sourceMappingURL=check-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-utils.js","sourceRoot":"","sources":["../../../../src/enhancements/node/policy/check-utils.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { PermissionCheckerConstraint } from '../types';
2
- /**
3
- * A boolean constraint solver based on `logic-solver`. Only boolean and integer types are supported.
4
- */
5
- export declare class ConstraintSolver {
6
- private stringTable;
7
- private variables;
8
- /**
9
- * Check the satisfiability of the given constraint.
10
- */
11
- checkSat(constraint: PermissionCheckerConstraint): boolean;
12
- private buildFormula;
13
- private buildLogicalFormula;
14
- private buildAndFormula;
15
- private buildOrFormula;
16
- private buildNotFormula;
17
- private isTrue;
18
- private isFalse;
19
- private buildComparisonFormula;
20
- private buildVariableFormula;
21
- private buildValueFormula;
22
- private booleanVariable;
23
- private intVariable;
24
- private transformEquality;
25
- private transformInequality;
26
- private transformComparison;
27
- }
@@ -1,164 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ConstraintSolver = void 0;
7
- const logic_solver_1 = __importDefault(require("logic-solver"));
8
- const ts_pattern_1 = require("ts-pattern");
9
- /**
10
- * A boolean constraint solver based on `logic-solver`. Only boolean and integer types are supported.
11
- */
12
- class ConstraintSolver {
13
- constructor() {
14
- // a table for internalizing string literals
15
- this.stringTable = [];
16
- // a map for storing variable names and their corresponding formulas
17
- this.variables = new Map();
18
- }
19
- /**
20
- * Check the satisfiability of the given constraint.
21
- */
22
- checkSat(constraint) {
23
- // reset state
24
- this.stringTable = [];
25
- this.variables = new Map();
26
- // convert the constraint to a "logic-solver" formula
27
- const formula = this.buildFormula(constraint);
28
- // solve the formula
29
- const solver = new logic_solver_1.default.Solver();
30
- solver.require(formula);
31
- // DEBUG:
32
- // const solution = solver.solve();
33
- // if (solution) {
34
- // console.log('Solution:');
35
- // this.variables.forEach((v, k) => console.log(`\t${k}=${solution?.evaluate(v)}`));
36
- // } else {
37
- // console.log('No solution');
38
- // }
39
- return !!solver.solve();
40
- }
41
- buildFormula(constraint) {
42
- return (0, ts_pattern_1.match)(constraint)
43
- .when((c) => c.kind === 'value', (c) => this.buildValueFormula(c))
44
- .when((c) => c.kind === 'variable', (c) => this.buildVariableFormula(c))
45
- .when((c) => ['eq', 'ne', 'gt', 'gte', 'lt', 'lte'].includes(c.kind), (c) => this.buildComparisonFormula(c))
46
- .when((c) => ['and', 'or', 'not'].includes(c.kind), (c) => this.buildLogicalFormula(c))
47
- .otherwise(() => {
48
- throw new Error(`Unsupported constraint format: ${JSON.stringify(constraint)}`);
49
- });
50
- }
51
- buildLogicalFormula(constraint) {
52
- return (0, ts_pattern_1.match)(constraint.kind)
53
- .with('and', () => this.buildAndFormula(constraint))
54
- .with('or', () => this.buildOrFormula(constraint))
55
- .with('not', () => this.buildNotFormula(constraint))
56
- .exhaustive();
57
- }
58
- buildAndFormula(constraint) {
59
- if (constraint.children.some((c) => this.isFalse(c))) {
60
- // short-circuit
61
- return logic_solver_1.default.FALSE;
62
- }
63
- return logic_solver_1.default.and(...constraint.children.map((c) => this.buildFormula(c)));
64
- }
65
- buildOrFormula(constraint) {
66
- if (constraint.children.some((c) => this.isTrue(c))) {
67
- // short-circuit
68
- return logic_solver_1.default.TRUE;
69
- }
70
- return logic_solver_1.default.or(...constraint.children.map((c) => this.buildFormula(c)));
71
- }
72
- buildNotFormula(constraint) {
73
- if (constraint.children.length !== 1) {
74
- throw new Error('"not" constraint must have exactly one child');
75
- }
76
- return logic_solver_1.default.not(this.buildFormula(constraint.children[0]));
77
- }
78
- isTrue(constraint) {
79
- return constraint.kind === 'value' && constraint.value === true;
80
- }
81
- isFalse(constraint) {
82
- return constraint.kind === 'value' && constraint.value === false;
83
- }
84
- buildComparisonFormula(constraint) {
85
- if (constraint.left.kind === 'value' && constraint.right.kind === 'value') {
86
- // constant comparison
87
- const left = constraint.left;
88
- const right = constraint.right;
89
- return (0, ts_pattern_1.match)(constraint.kind)
90
- .with('eq', () => (left.value === right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
91
- .with('ne', () => (left.value !== right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
92
- .with('gt', () => (left.value > right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
93
- .with('gte', () => (left.value >= right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
94
- .with('lt', () => (left.value < right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
95
- .with('lte', () => (left.value <= right.value ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
96
- .exhaustive();
97
- }
98
- return (0, ts_pattern_1.match)(constraint.kind)
99
- .with('eq', () => this.transformEquality(constraint.left, constraint.right))
100
- .with('ne', () => this.transformInequality(constraint.left, constraint.right))
101
- .with('gt', () => this.transformComparison(constraint.left, constraint.right, (l, r) => logic_solver_1.default.greaterThan(l, r)))
102
- .with('gte', () => this.transformComparison(constraint.left, constraint.right, (l, r) => logic_solver_1.default.greaterThanOrEqual(l, r)))
103
- .with('lt', () => this.transformComparison(constraint.left, constraint.right, (l, r) => logic_solver_1.default.lessThan(l, r)))
104
- .with('lte', () => this.transformComparison(constraint.left, constraint.right, (l, r) => logic_solver_1.default.lessThanOrEqual(l, r)))
105
- .exhaustive();
106
- }
107
- buildVariableFormula(constraint) {
108
- return ((0, ts_pattern_1.match)(constraint.type)
109
- .with('boolean', () => this.booleanVariable(constraint.name))
110
- .with('number', () => this.intVariable(constraint.name))
111
- // strings are internalized and represented by their indices
112
- .with('string', () => this.intVariable(constraint.name))
113
- .exhaustive());
114
- }
115
- buildValueFormula(constraint) {
116
- return (0, ts_pattern_1.match)(constraint.value)
117
- .when((v) => typeof v === 'boolean', (v) => (v === true ? logic_solver_1.default.TRUE : logic_solver_1.default.FALSE))
118
- .when((v) => typeof v === 'number', (v) => logic_solver_1.default.constantBits(v))
119
- .when((v) => typeof v === 'string', (v) => {
120
- // internalize the string and use its index as formula representation
121
- const index = this.stringTable.indexOf(v);
122
- if (index === -1) {
123
- this.stringTable.push(v);
124
- return logic_solver_1.default.constantBits(this.stringTable.length - 1);
125
- }
126
- else {
127
- return logic_solver_1.default.constantBits(index);
128
- }
129
- })
130
- .exhaustive();
131
- }
132
- booleanVariable(name) {
133
- this.variables.set(name, name);
134
- return name;
135
- }
136
- intVariable(name) {
137
- const r = logic_solver_1.default.variableBits(name, 32);
138
- this.variables.set(name, r);
139
- return r;
140
- }
141
- transformEquality(left, right) {
142
- if (left.type !== right.type) {
143
- throw new Error(`Type mismatch in equality constraint: ${JSON.stringify(left)}, ${JSON.stringify(right)}`);
144
- }
145
- const leftFormula = this.buildFormula(left);
146
- const rightFormula = this.buildFormula(right);
147
- if (left.type === 'boolean' && right.type === 'boolean') {
148
- // logical equivalence
149
- return logic_solver_1.default.equiv(leftFormula, rightFormula);
150
- }
151
- else {
152
- // integer equality
153
- return logic_solver_1.default.equalBits(leftFormula, rightFormula);
154
- }
155
- }
156
- transformInequality(left, right) {
157
- return logic_solver_1.default.not(this.transformEquality(left, right));
158
- }
159
- transformComparison(left, right, func) {
160
- return func(this.buildFormula(left), this.buildFormula(right));
161
- }
162
- }
163
- exports.ConstraintSolver = ConstraintSolver;
164
- //# sourceMappingURL=constraint-solver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constraint-solver.js","sourceRoot":"","sources":["../../../../src/enhancements/node/policy/constraint-solver.ts"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import { EnhancementContext, type DbClientContract } from '../../../types';
2
- import type { InternalEnhancementOptions } from '../create-enhancement';
3
- import { PrismaProxyHandler } from '../proxy';
4
- import type { PermissionCheckArgs } from '../types';
5
- /**
6
- * Prisma proxy handler for injecting access policy check.
7
- */
8
- export declare class PolicyProxyHandler<DbClient extends DbClientContract> implements PrismaProxyHandler {
9
- private readonly prisma;
10
- private readonly options;
11
- private readonly context?;
12
- private readonly logger;
13
- private readonly policyUtils;
14
- private readonly model;
15
- private readonly modelMeta;
16
- private readonly prismaModule;
17
- private readonly queryUtils;
18
- constructor(prisma: DbClient, model: string, options: InternalEnhancementOptions, context?: EnhancementContext | undefined);
19
- private get modelClient();
20
- findUnique(args: any): Promise<any>;
21
- findUniqueOrThrow(args: any): Promise<any>;
22
- findFirst(args?: any): Promise<any>;
23
- findFirstOrThrow(args: any): Promise<any>;
24
- findMany(args?: any): Promise<unknown[]>;
25
- private findWithFluent;
26
- private doFind;
27
- create(args: any): Promise<unknown>;
28
- private doCreate;
29
- private hasNestedCreateOrConnect;
30
- private validateCreateInputSchema;
31
- createMany(args: {
32
- data: any;
33
- skipDuplicates?: boolean;
34
- }): Promise<{
35
- count: number;
36
- }>;
37
- createManyAndReturn(args: {
38
- data: any;
39
- select?: any;
40
- skipDuplicates?: boolean;
41
- }): Promise<unknown[]>;
42
- /**
43
- * Preprocess the payload of `createMany` and `createManyAndReturn` and update in place if needed.
44
- * @returns `true` if the operation should be converted to regular `create`s; false otherwise.
45
- */
46
- private preprocessCreateManyPayload;
47
- private hasRelationFieldsInPayload;
48
- private validateCreateInput;
49
- private doCreateMany;
50
- private hasDuplicatedUniqueConstraint;
51
- update(args: any): Promise<unknown>;
52
- private doUpdate;
53
- private calculatePostUpdateIds;
54
- private overrideForeignKeyFields;
55
- private validateUpdateInputSchema;
56
- updateMany(args: any): Promise<any>;
57
- updateManyAndReturn(args: any): Promise<unknown[]>;
58
- private doUpdateMany;
59
- upsert(args: any): Promise<unknown>;
60
- delete(args: any): Promise<unknown>;
61
- deleteMany(args: any): Promise<{
62
- count: number;
63
- }>;
64
- aggregate(args: any): Promise<any>;
65
- groupBy(args: any): Promise<any>;
66
- count(args: any): Promise<any>;
67
- subscribe(args: any): Promise<{
68
- [Symbol.asyncIterator]: () => {
69
- next: () => Promise<{
70
- done: any;
71
- value: any;
72
- }>;
73
- return: () => any;
74
- throw: () => any;
75
- };
76
- }>;
77
- stream(args: any): Promise<{
78
- [Symbol.asyncIterator]: () => {
79
- next: () => Promise<{
80
- done: any;
81
- value: any;
82
- }>;
83
- return: () => any;
84
- throw: () => any;
85
- };
86
- }>;
87
- private handleSubscribeStream;
88
- /**
89
- * Checks if the given operation is possibly allowed by the policy, without querying the database.
90
- * @param operation The CRUD operation.
91
- * @param fieldValues Extra field value filters to be combined with the policy constraints.
92
- */
93
- check(args: PermissionCheckArgs): Promise<boolean>;
94
- private get shouldLogQuery();
95
- private runPostWriteChecks;
96
- private requireBackLink;
97
- private mergeToParent;
98
- private removeFromParent;
99
- private buildIdFilterWithEntityChecker;
100
- }