@cerbos/orm-prisma 4.0.0 → 5.0.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 (203) hide show
  1. package/README.md +611 -460
  2. package/lib/collections.d.ts +30 -0
  3. package/lib/collections.d.ts.map +1 -0
  4. package/lib/collections.js +421 -0
  5. package/lib/collections.js.map +1 -0
  6. package/lib/comparison.d.ts +24 -0
  7. package/lib/comparison.d.ts.map +1 -0
  8. package/lib/comparison.js +731 -0
  9. package/lib/comparison.js.map +1 -0
  10. package/lib/errors.d.ts +13 -0
  11. package/lib/errors.d.ts.map +1 -0
  12. package/lib/errors.js +17 -0
  13. package/lib/errors.js.map +1 -0
  14. package/lib/evaluate.d.ts +5 -0
  15. package/lib/evaluate.d.ts.map +1 -0
  16. package/lib/evaluate.js +118 -0
  17. package/lib/evaluate.js.map +1 -0
  18. package/lib/fields.d.ts +34 -0
  19. package/lib/fields.d.ts.map +1 -0
  20. package/lib/fields.js +253 -0
  21. package/lib/fields.js.map +1 -0
  22. package/lib/functions.d.ts +5 -0
  23. package/lib/functions.d.ts.map +1 -0
  24. package/lib/functions.js +408 -0
  25. package/lib/functions.js.map +1 -0
  26. package/lib/hierarchy.d.ts +6 -0
  27. package/lib/hierarchy.d.ts.map +1 -0
  28. package/lib/hierarchy.js +266 -0
  29. package/lib/hierarchy.js.map +1 -0
  30. package/lib/index.d.ts +91 -8
  31. package/lib/index.d.ts.map +1 -1
  32. package/lib/index.js +34 -2301
  33. package/lib/index.js.map +1 -1
  34. package/lib/literals.d.ts +20 -0
  35. package/lib/literals.d.ts.map +1 -0
  36. package/lib/literals.js +290 -0
  37. package/lib/literals.js.map +1 -0
  38. package/lib/mapping.d.ts +95 -0
  39. package/lib/mapping.d.ts.map +1 -0
  40. package/lib/mapping.js +316 -0
  41. package/lib/mapping.js.map +1 -0
  42. package/lib/narrowing.d.ts +12 -0
  43. package/lib/narrowing.d.ts.map +1 -0
  44. package/lib/narrowing.js +32 -0
  45. package/lib/narrowing.js.map +1 -0
  46. package/lib/plan.d.ts +49 -0
  47. package/lib/plan.d.ts.map +1 -0
  48. package/lib/plan.js +86 -0
  49. package/lib/plan.js.map +1 -0
  50. package/lib/presence.d.ts +25 -0
  51. package/lib/presence.d.ts.map +1 -0
  52. package/lib/presence.js +82 -0
  53. package/lib/presence.js.map +1 -0
  54. package/lib/regex.d.ts +33 -0
  55. package/lib/regex.d.ts.map +1 -0
  56. package/lib/regex.js +480 -0
  57. package/lib/regex.js.map +1 -0
  58. package/lib/relations.d.ts +58 -0
  59. package/lib/relations.d.ts.map +1 -0
  60. package/lib/relations.js +175 -0
  61. package/lib/relations.js.map +1 -0
  62. package/lib/rewrite.d.ts +36 -0
  63. package/lib/rewrite.d.ts.map +1 -0
  64. package/lib/rewrite.js +366 -0
  65. package/lib/rewrite.js.map +1 -0
  66. package/lib/solve.d.ts +20 -0
  67. package/lib/solve.d.ts.map +1 -0
  68. package/lib/solve.js +77 -0
  69. package/lib/solve.js.map +1 -0
  70. package/lib/strings.d.ts +12 -0
  71. package/lib/strings.d.ts.map +1 -0
  72. package/lib/strings.js +110 -0
  73. package/lib/strings.js.map +1 -0
  74. package/lib/ternary.d.ts +12 -0
  75. package/lib/ternary.d.ts.map +1 -0
  76. package/lib/ternary.js +192 -0
  77. package/lib/ternary.js.map +1 -0
  78. package/lib/timestamp.d.ts +45 -0
  79. package/lib/timestamp.d.ts.map +1 -0
  80. package/lib/timestamp.js +225 -0
  81. package/lib/timestamp.js.map +1 -0
  82. package/lib/translate.d.ts +20 -0
  83. package/lib/translate.d.ts.map +1 -0
  84. package/lib/translate.js +287 -0
  85. package/lib/translate.js.map +1 -0
  86. package/lib/types.d.ts +29 -0
  87. package/lib/types.d.ts.map +1 -0
  88. package/lib/types.js +980 -0
  89. package/lib/types.js.map +1 -0
  90. package/lib/value.d.ts +8 -0
  91. package/lib/value.d.ts.map +1 -0
  92. package/lib/value.js +7 -0
  93. package/lib/value.js.map +1 -0
  94. package/package.json +31 -18
  95. package/src/adversarial.test.ts +488 -488
  96. package/src/collections.ts +738 -0
  97. package/src/comparison.ts +1157 -0
  98. package/src/corpus.ts +597 -0
  99. package/src/errors.ts +12 -0
  100. package/src/evaluate.ts +170 -0
  101. package/src/fields.ts +373 -0
  102. package/src/functions.ts +548 -0
  103. package/src/generated/prisma-adversarial/browser.ts +20 -0
  104. package/src/generated/prisma-adversarial/client.ts +20 -0
  105. package/src/generated/prisma-adversarial/commonInputTypes.ts +116 -127
  106. package/src/generated/prisma-adversarial/internal/class.ts +44 -4
  107. package/src/generated/prisma-adversarial/internal/prismaNamespace.ts +350 -3
  108. package/src/generated/prisma-adversarial/internal/prismaNamespaceBrowser.ts +49 -2
  109. package/src/generated/prisma-adversarial/models/AdversarialBoolListElement.ts +1272 -0
  110. package/src/generated/prisma-adversarial/models/AdversarialInner.ts +1369 -0
  111. package/src/generated/prisma-adversarial/models/AdversarialNumberListElement.ts +1316 -0
  112. package/src/generated/prisma-adversarial/models/AdversarialParent.ts +1474 -0
  113. package/src/generated/prisma-adversarial/models/AdversarialResource.ts +547 -75
  114. package/src/generated/prisma-adversarial/models.ts +4 -0
  115. package/src/generated/prisma-adversarial-mysql/browser.ts +64 -0
  116. package/src/generated/{prisma → prisma-adversarial-mysql}/client.ts +23 -18
  117. package/src/generated/{prisma → prisma-adversarial-mysql}/commonInputTypes.ts +167 -92
  118. package/src/generated/prisma-adversarial-mysql/internal/class.ts +284 -0
  119. package/src/generated/prisma-adversarial-mysql/internal/prismaNamespace.ts +1518 -0
  120. package/src/generated/prisma-adversarial-mysql/internal/prismaNamespaceBrowser.ts +274 -0
  121. package/src/generated/prisma-adversarial-mysql/models/AdversarialBoolListElement.ts +1157 -0
  122. package/src/generated/prisma-adversarial-mysql/models/AdversarialCategory.ts +1286 -0
  123. package/src/generated/prisma-adversarial-mysql/models/AdversarialInner.ts +1247 -0
  124. package/src/generated/prisma-adversarial-mysql/models/AdversarialLabel.ts +1157 -0
  125. package/src/generated/prisma-adversarial-mysql/models/AdversarialNumberListElement.ts +1201 -0
  126. package/src/generated/prisma-adversarial-mysql/models/AdversarialParent.ts +1352 -0
  127. package/src/generated/prisma-adversarial-mysql/models/AdversarialResource.ts +2021 -0
  128. package/src/generated/prisma-adversarial-mysql/models/AdversarialSubCategory.ts +1286 -0
  129. package/src/generated/prisma-adversarial-mysql/models/AdversarialTag.ts +1190 -0
  130. package/src/generated/prisma-adversarial-mysql/models.ts +20 -0
  131. package/src/generated/prisma-adversarial-mysql-v6/index.d.ts +13822 -0
  132. package/src/generated/prisma-adversarial-pg/browser.ts +64 -0
  133. package/src/generated/prisma-adversarial-pg/client.ts +86 -0
  134. package/src/generated/prisma-adversarial-pg/commonInputTypes.ts +345 -0
  135. package/src/generated/prisma-adversarial-pg/enums.ts +15 -0
  136. package/src/generated/prisma-adversarial-pg/internal/class.ts +284 -0
  137. package/src/generated/prisma-adversarial-pg/internal/prismaNamespace.ts +1542 -0
  138. package/src/generated/{prisma → prisma-adversarial-pg}/internal/prismaNamespaceBrowser.ts +72 -43
  139. package/src/generated/prisma-adversarial-pg/models/AdversarialBoolListElement.ts +1275 -0
  140. package/src/generated/prisma-adversarial-pg/models/AdversarialCategory.ts +1404 -0
  141. package/src/generated/prisma-adversarial-pg/models/AdversarialInner.ts +1371 -0
  142. package/src/generated/prisma-adversarial-pg/models/AdversarialLabel.ts +1275 -0
  143. package/src/generated/prisma-adversarial-pg/models/AdversarialNumberListElement.ts +1319 -0
  144. package/src/generated/prisma-adversarial-pg/models/AdversarialParent.ts +1476 -0
  145. package/src/generated/prisma-adversarial-pg/models/AdversarialResource.ts +2139 -0
  146. package/src/generated/prisma-adversarial-pg/models/AdversarialSubCategory.ts +1404 -0
  147. package/src/generated/prisma-adversarial-pg/models/AdversarialTag.ts +1310 -0
  148. package/src/generated/prisma-adversarial-pg/models.ts +20 -0
  149. package/src/generated/prisma-adversarial-pg-v6/client.d.ts +1 -0
  150. package/src/generated/prisma-adversarial-pg-v6/default.d.ts +1 -0
  151. package/src/generated/prisma-adversarial-pg-v6/edge.d.ts +1 -0
  152. package/src/generated/prisma-adversarial-pg-v6/index.d.ts +14918 -0
  153. package/src/generated/prisma-adversarial-pg-v6/runtime/index-browser.d.ts +370 -0
  154. package/src/generated/prisma-adversarial-pg-v6/runtime/library.d.ts +3982 -0
  155. package/src/generated/prisma-adversarial-pg-v6/wasm.d.ts +1 -0
  156. package/src/generated/prisma-adversarial-v6/index.d.ts +6515 -304
  157. package/src/hierarchy.ts +405 -0
  158. package/src/index.ts +134 -3325
  159. package/src/literals.ts +363 -0
  160. package/src/mapping.ts +474 -0
  161. package/src/narrowing.ts +33 -0
  162. package/src/plan.ts +125 -0
  163. package/src/presence.ts +114 -0
  164. package/src/regex.ts +596 -0
  165. package/src/relations.ts +226 -0
  166. package/src/rewrite.ts +524 -0
  167. package/src/solve.ts +96 -0
  168. package/src/strings.ts +152 -0
  169. package/src/ternary.ts +359 -0
  170. package/src/test-setup.adversarial-url.ts +21 -0
  171. package/src/test-setup.adversarial.mysql.v6.ts +13 -0
  172. package/src/test-setup.adversarial.mysql.v7.ts +12 -0
  173. package/src/test-setup.adversarial.pg.v6.ts +13 -0
  174. package/src/test-setup.adversarial.pg.v7.ts +9 -0
  175. package/src/test-setup.adversarial.v7.ts +1 -0
  176. package/src/timestamp.ts +308 -0
  177. package/src/translate.ts +419 -0
  178. package/src/translator.test.ts +766 -0
  179. package/src/types.ts +1310 -0
  180. package/src/value.ts +16 -0
  181. package/src/generated/prisma/browser.ts +0 -59
  182. package/src/generated/prisma/internal/class.ts +0 -274
  183. package/src/generated/prisma/internal/prismaNamespace.ts +0 -1403
  184. package/src/generated/prisma/models/Category.ts +0 -1412
  185. package/src/generated/prisma/models/Label.ts +0 -1276
  186. package/src/generated/prisma/models/NestedResource.ts +0 -1562
  187. package/src/generated/prisma/models/NextLevelNestedResource.ts +0 -1337
  188. package/src/generated/prisma/models/Resource.ts +0 -2196
  189. package/src/generated/prisma/models/SubCategory.ts +0 -1412
  190. package/src/generated/prisma/models/Tag.ts +0 -1276
  191. package/src/generated/prisma/models/User.ts +0 -1503
  192. package/src/generated/prisma/models.ts +0 -19
  193. package/src/generated/prisma-v6/index.d.ts +0 -13726
  194. package/src/index.test.ts +0 -8885
  195. package/src/test-setup.v6.ts +0 -5
  196. package/src/test-setup.v7.ts +0 -7
  197. /package/src/generated/{prisma → prisma-adversarial-mysql}/enums.ts +0 -0
  198. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/client.d.ts +0 -0
  199. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/default.d.ts +0 -0
  200. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/edge.d.ts +0 -0
  201. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/runtime/index-browser.d.ts +0 -0
  202. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/runtime/library.d.ts +0 -0
  203. /package/src/generated/{prisma-v6 → prisma-adversarial-mysql-v6}/wasm.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparison.js","sourceRoot":"","sources":["../src/comparison.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The error `queryPlanToPrisma` raises when a plan holds a shape this adapter cannot translate
3
+ * without returning rows the PDP would deny: a CEL operator with no faithful Prisma filter, a
4
+ * literal it cannot bind exactly, a construct CEL itself rejects, or a plan that is malformed.
5
+ *
6
+ * It extends `Error`, so existing `catch` blocks keep working. Mapper misconfiguration — a
7
+ * missing `model` option or `relation.model`, an empty field path — is not a refusal and stays a
8
+ * plain `Error`: that is a bug in the caller's mapping, not a limitation of the adapter.
9
+ */
10
+ export declare class UnsupportedQueryPlanError extends Error {
11
+ readonly name = "UnsupportedQueryPlanError";
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,+BAA+B;CACtD"}
package/lib/errors.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnsupportedQueryPlanError = void 0;
4
+ /**
5
+ * The error `queryPlanToPrisma` raises when a plan holds a shape this adapter cannot translate
6
+ * without returning rows the PDP would deny: a CEL operator with no faithful Prisma filter, a
7
+ * literal it cannot bind exactly, a construct CEL itself rejects, or a plan that is malformed.
8
+ *
9
+ * It extends `Error`, so existing `catch` blocks keep working. Mapper misconfiguration — a
10
+ * missing `model` option or `relation.model`, an empty field path — is not a refusal and stays a
11
+ * plain `Error`: that is a bug in the caller's mapping, not a limitation of the adapter.
12
+ */
13
+ class UnsupportedQueryPlanError extends Error {
14
+ name = "UnsupportedQueryPlanError";
15
+ }
16
+ exports.UnsupportedQueryPlanError = UnsupportedQueryPlanError;
17
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,MAAa,yBAA0B,SAAQ,KAAK;IAChC,IAAI,GAAG,2BAA2B,CAAC;CACtD;AAFD,8DAEC"}
@@ -0,0 +1,5 @@
1
+ import type { Value } from "@cerbos/core";
2
+ export declare const ARITHMETIC_OPERATORS: Set<string>;
3
+ export declare function evaluateConstantComparison(operator: string, left: Value, right: Value): boolean;
4
+ export declare function foldArithmetic(operator: string, left: Value, right: Value): Value;
5
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAI1C,eAAO,MAAM,oBAAoB,aAAyC,CAAC;AAE3E,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,KAAK,GACX,OAAO,CAmDT;AAyED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,KAAK,GACX,KAAK,CA6BP"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ // Evaluating operators whose operands are all constants, with CEL's semantics.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ARITHMETIC_OPERATORS = void 0;
5
+ exports.evaluateConstantComparison = evaluateConstantComparison;
6
+ exports.foldArithmetic = foldArithmetic;
7
+ const errors_1 = require("./errors");
8
+ const narrowing_1 = require("./narrowing");
9
+ exports.ARITHMETIC_OPERATORS = new Set(["add", "sub", "mult", "div"]);
10
+ function evaluateConstantComparison(operator, left, right) {
11
+ switch (operator) {
12
+ case "in":
13
+ if (!Array.isArray(right)) {
14
+ throw new errors_1.UnsupportedQueryPlanError("in constant comparison requires a list");
15
+ }
16
+ return right.some((element) => areValuesEqual(left, element));
17
+ case "eq":
18
+ return areValuesEqual(left, right);
19
+ case "ne":
20
+ return !areValuesEqual(left, right);
21
+ case "lt":
22
+ case "le":
23
+ case "gt":
24
+ case "ge": {
25
+ if ((0, narrowing_1.isNumber)(left) &&
26
+ (0, narrowing_1.isNumber)(right) &&
27
+ (Number.isNaN(left) || Number.isNaN(right))) {
28
+ return false;
29
+ }
30
+ if (!(((0, narrowing_1.isNumber)(left) && (0, narrowing_1.isNumber)(right)) ||
31
+ ((0, narrowing_1.isString)(left) && (0, narrowing_1.isString)(right)))) {
32
+ throw new errors_1.UnsupportedQueryPlanError(`${operator} constant comparison requires two numbers or two strings`);
33
+ }
34
+ const order = compareConstantValues(left, right);
35
+ switch (operator) {
36
+ case "lt":
37
+ return order < 0;
38
+ case "le":
39
+ return order <= 0;
40
+ case "gt":
41
+ return order > 0;
42
+ case "ge":
43
+ return order >= 0;
44
+ }
45
+ }
46
+ }
47
+ throw new errors_1.UnsupportedQueryPlanError(`Unsupported constant comparison operator: ${operator}`);
48
+ }
49
+ /** Orders numbers numerically and strings by Unicode code point, as CEL does. */
50
+ function compareConstantValues(left, right) {
51
+ if ((0, narrowing_1.isNumber)(left) && (0, narrowing_1.isNumber)(right)) {
52
+ return left === right ? 0 : left < right ? -1 : 1;
53
+ }
54
+ if (!(0, narrowing_1.isString)(left) || !(0, narrowing_1.isString)(right)) {
55
+ throw new errors_1.UnsupportedQueryPlanError("Cannot order constant values of different types");
56
+ }
57
+ const leftCodePoints = Array.from(left, (character) => character.codePointAt(0));
58
+ const rightCodePoints = Array.from(right, (character) => character.codePointAt(0));
59
+ const sharedLength = Math.min(leftCodePoints.length, rightCodePoints.length);
60
+ for (let index = 0; index < sharedLength; index++) {
61
+ const leftCodePoint = leftCodePoints[index];
62
+ const rightCodePoint = rightCodePoints[index];
63
+ if (leftCodePoint !== rightCodePoint) {
64
+ return leftCodePoint < rightCodePoint ? -1 : 1;
65
+ }
66
+ }
67
+ return leftCodePoints.length === rightCodePoints.length
68
+ ? 0
69
+ : leftCodePoints.length < rightCodePoints.length
70
+ ? -1
71
+ : 1;
72
+ }
73
+ function areValuesEqual(left, right) {
74
+ if (Array.isArray(left)) {
75
+ return (Array.isArray(right) &&
76
+ left.length === right.length &&
77
+ left.every((value, index) => areValuesEqual(value, right[index])));
78
+ }
79
+ if (Array.isArray(right)) {
80
+ return false;
81
+ }
82
+ if ((0, narrowing_1.isObject)(left)) {
83
+ if (!(0, narrowing_1.isObject)(right)) {
84
+ return false;
85
+ }
86
+ const leftKeys = Object.keys(left);
87
+ const rightKeys = Object.keys(right);
88
+ return (leftKeys.length === rightKeys.length &&
89
+ leftKeys.every((key) => key in right && areValuesEqual(left[key], right[key])));
90
+ }
91
+ return left === right;
92
+ }
93
+ function foldArithmetic(operator, left, right) {
94
+ if (operator === "add" && Array.isArray(left) && Array.isArray(right)) {
95
+ return [...left, ...right];
96
+ }
97
+ if (operator === "add" &&
98
+ (0, narrowing_1.isString)(left) &&
99
+ (0, narrowing_1.isString)(right)) {
100
+ return left + right;
101
+ }
102
+ if (!(0, narrowing_1.isNumber)(left) || !(0, narrowing_1.isNumber)(right)) {
103
+ throw new errors_1.UnsupportedQueryPlanError(`${operator} operator requires string or number operands`);
104
+ }
105
+ switch (operator) {
106
+ case "add":
107
+ return left + right;
108
+ case "sub":
109
+ return left - right;
110
+ case "mult":
111
+ return left * right;
112
+ case "div":
113
+ return left / right;
114
+ default:
115
+ throw new errors_1.UnsupportedQueryPlanError(`Unsupported operator: ${operator}`);
116
+ }
117
+ }
118
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { Value } from "@cerbos/core";
2
+ import type { PrismaFilter } from "./index";
3
+ import type { ResolvedFieldReference, TranslationContext } from "./mapping";
4
+ /**
5
+ * Prisma has no model-agnostic always-false `where` shape — empty logical arrays are ignored —
6
+ * so a predicate that folds to constant false is refused. Real PDP plans fold it to
7
+ * ALWAYS_DENIED before it reaches the adapter.
8
+ */
9
+ export declare function rejectConstantFalse(): never;
10
+ /** `{ field: { [prismaOp]: value } }`, nested through the field's relations. */
11
+ export declare function buildFieldFilter(fieldRef: ResolvedFieldReference, prismaOp: string, value: Value): PrismaFilter;
12
+ /**
13
+ * `column.startsWith(prefix)`, or, when `strict`, the prefix followed by at least one character.
14
+ *
15
+ * Prisma's `startsWith` is a LIKE with no ESCAPE clause, so a prefix holding `%`, `_` or `\` is
16
+ * spelled as the range of strings it bounds instead: every string with that prefix is at least the
17
+ * prefix and below the prefix with its last code point stepped up, and no other string is, under
18
+ * the code-point order CEL's own string comparisons already require of the collation. A NULL
19
+ * column is UNKNOWN under either spelling, as the missing attribute's error requires.
20
+ */
21
+ export declare function buildPrefixFilter(fieldRef: ResolvedFieldReference, prefix: string, strict?: boolean): PrismaFilter;
22
+ /** A filter no row satisfies, spelled on a column the model is known to have. */
23
+ export declare function buildImpossibleFilter(fieldRef: ResolvedFieldReference): PrismaFilter;
24
+ export declare function assertStringField(fieldRef: ResolvedFieldReference, operator: string): void;
25
+ /** `field IN values`, with CEL's semantics for a null element and for an explicit-null column. */
26
+ export declare function buildMembershipFilter(context: TranslationContext, fieldRef: ResolvedFieldReference, listed: Value[]): PrismaFilter;
27
+ /**
28
+ * Builds a field-vs-constant comparison. Fractional constants are emitted as a two-clause
29
+ * bracket (see fractionalBracket).
30
+ */
31
+ export declare function buildComparisonFilter(context: TranslationContext, fieldRef: ResolvedFieldReference, operator: string, value: Value): PrismaFilter;
32
+ /** OR of `field IS NULL` checks for every nullable element column the lambda touched. */
33
+ export declare function buildNullWitnessFilter(nullableFields: Set<string>): PrismaFilter;
34
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAM5E;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,KAAK,CAI3C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GACX,YAAY,CAMd;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,MAAM,EACd,MAAM,UAAQ,GACb,YAAY,CAad;AAuBD,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,sBAAsB,GAC/B,YAAY,CAEd;AA2DD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,MAAM,GACf,IAAI,CAMN;AAED,kGAAkG;AAClG,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,KAAK,EAAE,GACd,YAAY,CAsCd;AA4FD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GACX,YAAY,CAqDd;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,YAAY,CAId"}
package/lib/fields.js ADDED
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ // Predicates on one resolved column: the leaves every operator handler bottoms out in.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.rejectConstantFalse = rejectConstantFalse;
5
+ exports.buildFieldFilter = buildFieldFilter;
6
+ exports.buildPrefixFilter = buildPrefixFilter;
7
+ exports.buildImpossibleFilter = buildImpossibleFilter;
8
+ exports.assertStringField = assertStringField;
9
+ exports.buildMembershipFilter = buildMembershipFilter;
10
+ exports.buildComparisonFilter = buildComparisonFilter;
11
+ exports.buildNullWitnessFilter = buildNullWitnessFilter;
12
+ const mapping_1 = require("./mapping");
13
+ const plan_1 = require("./plan");
14
+ const relations_1 = require("./relations");
15
+ const errors_1 = require("./errors");
16
+ const narrowing_1 = require("./narrowing");
17
+ /**
18
+ * Prisma has no model-agnostic always-false `where` shape — empty logical arrays are ignored —
19
+ * so a predicate that folds to constant false is refused. Real PDP plans fold it to
20
+ * ALWAYS_DENIED before it reaches the adapter.
21
+ */
22
+ function rejectConstantFalse() {
23
+ throw new errors_1.UnsupportedQueryPlanError("A constant-false conditional predicate must be folded by the Cerbos planner");
24
+ }
25
+ /** `{ field: { [prismaOp]: value } }`, nested through the field's relations. */
26
+ function buildFieldFilter(fieldRef, prismaOp, value) {
27
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
28
+ return (0, relations_1.wrapInRelations)(fieldRef.relations, {
29
+ [fieldName]: { [prismaOp]: value },
30
+ });
31
+ }
32
+ const LIKE_METACHARACTERS = /[%_\\]/;
33
+ /**
34
+ * `column.startsWith(prefix)`, or, when `strict`, the prefix followed by at least one character.
35
+ *
36
+ * Prisma's `startsWith` is a LIKE with no ESCAPE clause, so a prefix holding `%`, `_` or `\` is
37
+ * spelled as the range of strings it bounds instead: every string with that prefix is at least the
38
+ * prefix and below the prefix with its last code point stepped up, and no other string is, under
39
+ * the code-point order CEL's own string comparisons already require of the collation. A NULL
40
+ * column is UNKNOWN under either spelling, as the missing attribute's error requires.
41
+ */
42
+ function buildPrefixFilter(fieldRef, prefix, strict = false) {
43
+ if (!LIKE_METACHARACTERS.test(prefix)) {
44
+ return buildFieldFilter(fieldRef, "startsWith", strict ? `${prefix}_` : prefix);
45
+ }
46
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
47
+ const lower = { [fieldName]: { [strict ? "gt" : "gte"]: prefix } };
48
+ const bound = firstStringPastPrefix(prefix);
49
+ return (0, relations_1.wrapInRelations)(fieldRef.relations, bound === undefined ? lower : { AND: [lower, { [fieldName]: { lt: bound } }] });
50
+ }
51
+ /**
52
+ * The least string, in code-point order, above every string that starts with `prefix`: the prefix
53
+ * with its last code point stepped up, skipping the surrogate range no string holds. A trailing
54
+ * U+10FFFF has no successor, so it is dropped and the step applied before it; undefined when
55
+ * nothing is left, where no string is above the prefix.
56
+ */
57
+ function firstStringPastPrefix(prefix) {
58
+ const codePoints = Array.from(prefix, (character) => character.codePointAt(0));
59
+ while (codePoints.length > 0) {
60
+ const last = codePoints.pop();
61
+ if (last >= 0x10ffff)
62
+ continue;
63
+ const next = last + 1 === 0xd800 ? 0xe000 : last + 1;
64
+ return String.fromCodePoint(...codePoints, next);
65
+ }
66
+ return undefined;
67
+ }
68
+ /** A filter no row satisfies, spelled on a column the model is known to have. */
69
+ function buildImpossibleFilter(fieldRef) {
70
+ return buildFieldFilter(fieldRef, "in", []);
71
+ }
72
+ function buildDirectOrInLeaf(fieldRef, values) {
73
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
74
+ return values.length === 1
75
+ ? { [fieldName]: values[0] }
76
+ : { [fieldName]: { in: values } };
77
+ }
78
+ /**
79
+ * `field IS NOT NULL AND <leaf>`, so a NULL column makes the whole thing definitely FALSE rather
80
+ * than merely unmatched — which is what lets an enclosing `NOT` include the row.
81
+ *
82
+ * Prisma has no three-valued logic to expose: a record either matches a `where` or it does not.
83
+ * That is exactly why the guard has to be explicit — `{ NOT: { field: { equals: "x" } } }` leans on
84
+ * the generated SQL's UNKNOWN, which excludes the record under both polarities, and an
85
+ * explicit-null attribute needs the negation to include it.
86
+ *
87
+ * The guard is ANDed with the leaf BEFORE the relation wrapping, so both halves are evaluated
88
+ * against the same element rather than against two independently-matched ones.
89
+ */
90
+ function guardedFieldFilter(fieldRef, leaf) {
91
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
92
+ return (0, relations_1.wrapInRelations)(fieldRef.relations, {
93
+ AND: [{ [fieldName]: { not: null } }, leaf],
94
+ });
95
+ }
96
+ function assertScalarValue(fieldRef, value, operator) {
97
+ if ((0, narrowing_1.isObject)(value)) {
98
+ throw new errors_1.UnsupportedQueryPlanError(`${operator} requires scalar values: Prisma cannot compare list or map elements`);
99
+ }
100
+ if (value !== null &&
101
+ fieldRef.valueType !== undefined &&
102
+ fieldRef.valueType !== "dateTime" &&
103
+ (0, narrowing_1.typeofValue)(value) !== fieldRef.valueType) {
104
+ throw new errors_1.UnsupportedQueryPlanError(`${operator} value type does not match mapped ${fieldRef.valueType} field`);
105
+ }
106
+ }
107
+ function assertStringField(fieldRef, operator) {
108
+ if (fieldRef.valueType !== undefined && fieldRef.valueType !== "string") {
109
+ throw new errors_1.UnsupportedQueryPlanError(`${operator} requires a string field, got ${fieldRef.valueType}`);
110
+ }
111
+ }
112
+ /** `field IN values`, with CEL's semantics for a null element and for an explicit-null column. */
113
+ function buildMembershipFilter(context, fieldRef, listed) {
114
+ // A column declared NOT NULL never equals a null element, and Prisma rejects `{ field: null }` on one.
115
+ const values = fieldRef.nullable === false ? listed.filter((value) => value !== null) : listed;
116
+ for (const value of values)
117
+ assertScalarValue(fieldRef, value, "in");
118
+ const nonNullValues = values.filter((value) => value !== null);
119
+ const carriesNull = nonNullValues.length !== values.length;
120
+ if (carriesNull) {
121
+ (0, mapping_1.assertNullOperandTranslatable)(context, "a null element in an `in` list", fieldRef.nullAttributeRepresentation);
122
+ }
123
+ const filters = [];
124
+ if (nonNullValues.length > 0 || values.length === 0) {
125
+ // Without a null element nothing has made the membership definite yet: a NULL column is
126
+ // dropped by `{ in: [...] }` under BOTH polarities, while CEL compares a null VALUE against
127
+ // each element and gets a definite false, so its negation is TRUE. With a null element the
128
+ // `[null]` disjunct below already settles it.
129
+ const leaf = buildDirectOrInLeaf(fieldRef, nonNullValues);
130
+ filters.push(carriesNull || !(0, mapping_1.isExplicitNullReference)(fieldRef)
131
+ ? (0, relations_1.wrapInRelations)(fieldRef.relations, leaf)
132
+ : guardedFieldFilter(fieldRef, leaf));
133
+ }
134
+ if (carriesNull) {
135
+ filters.push((0, relations_1.wrapInRelations)(fieldRef.relations, buildDirectOrInLeaf(fieldRef, [null])));
136
+ }
137
+ return filters.length === 1 ? filters[0] : { OR: filters };
138
+ }
139
+ /**
140
+ * The two-clause bracket a fractional constant needs, or undefined for an operator that has
141
+ * none. Prisma coerces filter values to the column's type: on an Int column, `gte: 1.5` is
142
+ * silently bound as `gte: 1`, inverting rows like aNumber == 1. Each bracket pairs the exact
143
+ * constant with its integer neighbor so the combination is correct BOTH for Float columns (the
144
+ * extra clause is redundant) and Int columns (whichever way Prisma truncates or floors the
145
+ * fraction).
146
+ */
147
+ function fractionalBracket(fieldName, operator, value) {
148
+ const lower = Math.floor(value);
149
+ const upper = Math.ceil(value);
150
+ const equalsBracket = {
151
+ AND: [
152
+ { [fieldName]: { equals: value } },
153
+ { [fieldName]: { gt: lower } },
154
+ { [fieldName]: { lt: upper } },
155
+ ],
156
+ };
157
+ switch (operator) {
158
+ case "gt":
159
+ return {
160
+ OR: [{ [fieldName]: { gt: value } }, { [fieldName]: { gte: upper } }],
161
+ };
162
+ case "ge":
163
+ return {
164
+ AND: [{ [fieldName]: { gte: value } }, { [fieldName]: { gt: lower } }],
165
+ };
166
+ case "lt":
167
+ return {
168
+ OR: [{ [fieldName]: { lt: value } }, { [fieldName]: { lte: lower } }],
169
+ };
170
+ case "le":
171
+ return {
172
+ AND: [{ [fieldName]: { lte: value } }, { [fieldName]: { lt: upper } }],
173
+ };
174
+ case "eq":
175
+ return equalsBracket;
176
+ case "ne":
177
+ return { NOT: equalsBracket };
178
+ default:
179
+ return undefined;
180
+ }
181
+ }
182
+ /**
183
+ * An ordering against a boolean constant. CEL orders bools, `false < true`, but Prisma's Boolean
184
+ * filter has only `equals` and `not`, so the ordering becomes the set of bools that satisfy it,
185
+ * spelled with `equals` alone. Every spelling reads the column, so a NULL stays UNKNOWN under both
186
+ * polarities, as the missing-attribute error requires: an empty set is a contradiction on the
187
+ * column and the full set a tautology on it. Plain `equals` rather than the explicit-null guard,
188
+ * because ordering a null VALUE is a no-overload error in CEL, not a definite answer.
189
+ */
190
+ function buildBooleanOrderingFilter(fieldRef, operator, value) {
191
+ const satisfied = [false, true].filter((candidate) => {
192
+ const [a, b] = [Number(candidate), Number(value)];
193
+ switch (operator) {
194
+ case "lt":
195
+ return a < b;
196
+ case "le":
197
+ return a <= b;
198
+ case "gt":
199
+ return a > b;
200
+ case "ge":
201
+ return a >= b;
202
+ default:
203
+ throw new errors_1.UnsupportedQueryPlanError(`Unsupported operator: ${operator}`);
204
+ }
205
+ });
206
+ if (satisfied.length === 1)
207
+ return buildFieldFilter(fieldRef, "equals", satisfied[0]);
208
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
209
+ const both = [{ [fieldName]: { equals: false } }, { [fieldName]: { equals: true } }];
210
+ return (0, relations_1.wrapInRelations)(fieldRef.relations, satisfied.length === 0 ? { AND: both } : { OR: both });
211
+ }
212
+ /**
213
+ * Builds a field-vs-constant comparison. Fractional constants are emitted as a two-clause
214
+ * bracket (see fractionalBracket).
215
+ */
216
+ function buildComparisonFilter(context, fieldRef, operator, value) {
217
+ const prismaOperator = (0, plan_1.assertDefined)((0, narrowing_1.lookup)(plan_1.CERBOS_TO_PRISMA_OPERATOR, operator), `Unsupported operator: ${operator}`);
218
+ assertScalarValue(fieldRef, value, operator);
219
+ if ((0, narrowing_1.isBoolean)(value) && operator !== "eq" && operator !== "ne") {
220
+ return buildBooleanOrderingFilter(fieldRef, operator, value);
221
+ }
222
+ if (value === null) {
223
+ (0, mapping_1.assertNullOperandTranslatable)(context, `\`${operator}\` against a null operand`, fieldRef.nullAttributeRepresentation);
224
+ }
225
+ // An attribute the caller sends as an explicit null holds a null VALUE in CEL, so equality
226
+ // against a non-null operand is a definite FALSE and inequality a definite TRUE. Prisma leans
227
+ // on SQL's UNKNOWN for both, which drops the row under either polarity, so the presence of the
228
+ // column has to become part of the predicate. Confined to the equality family: an ordering
229
+ // comparison against a null receiver is a no-overload error in CEL, which denies exactly as the
230
+ // dropped row does.
231
+ if (value !== null &&
232
+ (0, mapping_1.isExplicitNullReference)(fieldRef) &&
233
+ (operator === "eq" || operator === "ne")) {
234
+ const fieldName = (0, mapping_1.getLeafField)(fieldRef.path);
235
+ const equality = guardedFieldFilter(fieldRef, {
236
+ [fieldName]: { equals: value },
237
+ });
238
+ return operator === "eq" ? equality : { NOT: equality };
239
+ }
240
+ if ((0, narrowing_1.isNumber)(value) && !Number.isInteger(value)) {
241
+ const bracket = fractionalBracket((0, mapping_1.getLeafField)(fieldRef.path), operator, value);
242
+ if (bracket) {
243
+ return (0, relations_1.wrapInRelations)(fieldRef.relations, bracket);
244
+ }
245
+ }
246
+ return buildFieldFilter(fieldRef, prismaOperator, value);
247
+ }
248
+ /** OR of `field IS NULL` checks for every nullable element column the lambda touched. */
249
+ function buildNullWitnessFilter(nullableFields) {
250
+ const checks = [...nullableFields].map((field) => ({ [field]: null }));
251
+ return checks.length === 1 ? checks[0] : { OR: checks };
252
+ }
253
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PlanExpressionOperand } from "@cerbos/core";
2
+ import type { TranslationContext } from "./mapping";
3
+ /** Rewrites, bottom-up, every shape the functions below recognise. */
4
+ export declare function rewriteFunctionCalls(expr: PlanExpressionOperand, context: TranslationContext): PlanExpressionOperand;
5
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAWpD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,qBAAqB,CAoBvB"}