pyric 0.1.0-alpha.20 → 0.1.0-alpha.21

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 (225) hide show
  1. package/README.md +64 -89
  2. package/dist/ai/blocked.d.ts +52 -0
  3. package/dist/ai/blocked.d.ts.map +1 -0
  4. package/dist/ai/blocked.js +83 -0
  5. package/dist/ai/blocked.js.map +1 -0
  6. package/dist/ai/broker/broker.d.ts +49 -0
  7. package/dist/ai/broker/broker.d.ts.map +1 -1
  8. package/dist/ai/broker/broker.js +90 -0
  9. package/dist/ai/broker/broker.js.map +1 -1
  10. package/dist/ai/broker/gemini-engine.d.ts +14 -1
  11. package/dist/ai/broker/gemini-engine.d.ts.map +1 -1
  12. package/dist/ai/broker/gemini-engine.js +30 -9
  13. package/dist/ai/broker/gemini-engine.js.map +1 -1
  14. package/dist/ai/broker/index.d.ts +2 -2
  15. package/dist/ai/broker/index.d.ts.map +1 -1
  16. package/dist/ai/broker/index.js +2 -2
  17. package/dist/ai/broker/index.js.map +1 -1
  18. package/dist/ai/broker/openai-engine.d.ts +10 -1
  19. package/dist/ai/broker/openai-engine.d.ts.map +1 -1
  20. package/dist/ai/broker/openai-engine.js +26 -4
  21. package/dist/ai/broker/openai-engine.js.map +1 -1
  22. package/dist/ai/broker/synthesizer.d.ts +14 -0
  23. package/dist/ai/broker/synthesizer.d.ts.map +1 -1
  24. package/dist/ai/broker/synthesizer.js +31 -0
  25. package/dist/ai/broker/synthesizer.js.map +1 -1
  26. package/dist/ai/broker/types.d.ts +24 -0
  27. package/dist/ai/broker/types.d.ts.map +1 -1
  28. package/dist/ai/internal.d.ts +5 -0
  29. package/dist/ai/internal.d.ts.map +1 -1
  30. package/dist/ai/internal.js +5 -0
  31. package/dist/ai/internal.js.map +1 -1
  32. package/dist/ai/response-helpers.d.ts.map +1 -1
  33. package/dist/ai/response-helpers.js +6 -24
  34. package/dist/ai/response-helpers.js.map +1 -1
  35. package/dist/analytics/index.d.ts +40 -0
  36. package/dist/analytics/index.d.ts.map +1 -0
  37. package/dist/analytics/index.js +25 -0
  38. package/dist/analytics/index.js.map +1 -0
  39. package/dist/app-check/index.d.ts +31 -0
  40. package/dist/app-check/index.d.ts.map +1 -0
  41. package/dist/app-check/index.js +20 -0
  42. package/dist/app-check/index.js.map +1 -0
  43. package/dist/database/controls.d.ts +1 -1
  44. package/dist/database/controls.js +1 -1
  45. package/dist/database/sandbox/rules-eval.d.ts +1 -1
  46. package/dist/database/sandbox/rules-eval.d.ts.map +1 -1
  47. package/dist/database/sandbox/rules-eval.js +2 -2
  48. package/dist/database/sandbox/rules-eval.js.map +1 -1
  49. package/dist/database/sandbox/write-plane.js +2 -2
  50. package/dist/database/sandbox/write-plane.js.map +1 -1
  51. package/dist/database/sandbox-controls.d.ts +12 -5
  52. package/dist/database/sandbox-controls.d.ts.map +1 -1
  53. package/dist/database/sandbox-controls.js +20 -9
  54. package/dist/database/sandbox-controls.js.map +1 -1
  55. package/dist/deferred/entry.d.ts +75 -0
  56. package/dist/deferred/entry.d.ts.map +1 -0
  57. package/dist/deferred/entry.js +143 -0
  58. package/dist/deferred/entry.js.map +1 -0
  59. package/dist/firestore/lite.d.ts +72 -0
  60. package/dist/firestore/lite.d.ts.map +1 -0
  61. package/dist/firestore/lite.js +22 -0
  62. package/dist/firestore/lite.js.map +1 -0
  63. package/dist/firestore/persistence.d.ts +2 -2
  64. package/dist/firestore/persistence.js +1 -1
  65. package/dist/functions/index.d.ts +29 -0
  66. package/dist/functions/index.d.ts.map +1 -0
  67. package/dist/functions/index.js +20 -0
  68. package/dist/functions/index.js.map +1 -0
  69. package/dist/performance/index.d.ts +22 -0
  70. package/dist/performance/index.d.ts.map +1 -0
  71. package/dist/performance/index.js +19 -0
  72. package/dist/performance/index.js.map +1 -0
  73. package/dist/remote-config/index.d.ts +40 -0
  74. package/dist/remote-config/index.d.ts.map +1 -0
  75. package/dist/remote-config/index.js +25 -0
  76. package/dist/remote-config/index.js.map +1 -0
  77. package/dist/rules/grammar/FirestoreValidator.d.ts.map +1 -1
  78. package/dist/rules/grammar/FirestoreValidator.js +43 -27
  79. package/dist/rules/grammar/FirestoreValidator.js.map +1 -1
  80. package/dist/rules/grammar/document-access-count.d.ts +24 -0
  81. package/dist/rules/grammar/document-access-count.d.ts.map +1 -0
  82. package/dist/rules/grammar/document-access-count.js +100 -0
  83. package/dist/rules/grammar/document-access-count.js.map +1 -0
  84. package/dist/rules/linter/ast-utils.d.ts +2 -6
  85. package/dist/rules/linter/ast-utils.d.ts.map +1 -1
  86. package/dist/rules/linter/ast-utils.js +2 -63
  87. package/dist/rules/linter/ast-utils.js.map +1 -1
  88. package/dist/rules/linter/hallucinations.d.ts +8 -0
  89. package/dist/rules/linter/hallucinations.d.ts.map +1 -1
  90. package/dist/rules/linter/hallucinations.js +121 -31
  91. package/dist/rules/linter/hallucinations.js.map +1 -1
  92. package/dist/rules/linter/linter.d.ts +10 -1
  93. package/dist/rules/linter/linter.d.ts.map +1 -1
  94. package/dist/rules/linter/linter.js +23 -9
  95. package/dist/rules/linter/linter.js.map +1 -1
  96. package/dist/rules/rtdb/grammar/simulator.d.ts.map +1 -1
  97. package/dist/rules/rtdb/grammar/simulator.js +13 -13
  98. package/dist/rules/rtdb/grammar/simulator.js.map +1 -1
  99. package/dist/rules/rtdb/simulation/handler.d.ts.map +1 -1
  100. package/dist/rules/rtdb/simulation/handler.js +96 -35
  101. package/dist/rules/rtdb/simulation/handler.js.map +1 -1
  102. package/dist/rules/simulator/document-lookups.d.ts +4 -0
  103. package/dist/rules/simulator/document-lookups.d.ts.map +1 -1
  104. package/dist/rules/simulator/document-lookups.js +42 -3
  105. package/dist/rules/simulator/document-lookups.js.map +1 -1
  106. package/dist/rules/simulator/eval-error.d.ts +11 -0
  107. package/dist/rules/simulator/eval-error.d.ts.map +1 -1
  108. package/dist/rules/simulator/eval-error.js +14 -0
  109. package/dist/rules/simulator/eval-error.js.map +1 -1
  110. package/dist/rules/simulator/evaluation-builtins.d.ts.map +1 -1
  111. package/dist/rules/simulator/evaluation-builtins.js +33 -8
  112. package/dist/rules/simulator/evaluation-builtins.js.map +1 -1
  113. package/dist/rules/simulator/evaluation-context.d.ts +12 -0
  114. package/dist/rules/simulator/evaluation-context.d.ts.map +1 -1
  115. package/dist/rules/simulator/evaluator.d.ts +1 -1
  116. package/dist/rules/simulator/evaluator.d.ts.map +1 -1
  117. package/dist/rules/simulator/evaluator.js +16 -4
  118. package/dist/rules/simulator/evaluator.js.map +1 -1
  119. package/dist/rules/simulator/handler.d.ts.map +1 -1
  120. package/dist/rules/simulator/handler.js +52 -5
  121. package/dist/rules/simulator/handler.js.map +1 -1
  122. package/dist/rules/simulator/lookup-budget.d.ts +37 -0
  123. package/dist/rules/simulator/lookup-budget.d.ts.map +1 -0
  124. package/dist/rules/simulator/lookup-budget.js +96 -0
  125. package/dist/rules/simulator/lookup-budget.js.map +1 -0
  126. package/dist/rules/stdlib-modules.d.ts +7 -0
  127. package/dist/rules/stdlib-modules.d.ts.map +1 -1
  128. package/dist/rules/stdlib-modules.js +11 -11
  129. package/dist/rules/stdlib-modules.js.map +1 -1
  130. package/dist/sandbox/admin-firestore/get-firestore.d.ts +6 -0
  131. package/dist/sandbox/admin-firestore/get-firestore.d.ts.map +1 -1
  132. package/dist/sandbox/admin-firestore/get-firestore.js +22 -3
  133. package/dist/sandbox/admin-firestore/get-firestore.js.map +1 -1
  134. package/dist/sandbox/index.d.ts +1 -1
  135. package/dist/sandbox/index.d.ts.map +1 -1
  136. package/dist/sandbox/index.js +1 -1
  137. package/dist/sandbox/index.js.map +1 -1
  138. package/dist/sandbox/persistence/types.d.ts +1 -1
  139. package/dist/sandbox/remote.d.ts +2 -2
  140. package/dist/sandbox/sandbox-context.d.ts +8 -1
  141. package/dist/sandbox/sandbox-context.d.ts.map +1 -1
  142. package/dist/sandbox/sandbox-context.js +59 -8
  143. package/dist/sandbox/sandbox-context.js.map +1 -1
  144. package/dist/sandbox/types/auth-state.d.ts +1 -0
  145. package/dist/sandbox/types/auth-state.d.ts.map +1 -1
  146. package/dist/sandbox/types/events.d.ts +2 -1
  147. package/dist/sandbox/types/events.d.ts.map +1 -1
  148. package/dist/sandbox/types/operation.d.ts +1 -0
  149. package/dist/sandbox/types/operation.d.ts.map +1 -1
  150. package/dist/storage/enforce.d.ts +20 -1
  151. package/dist/storage/enforce.d.ts.map +1 -1
  152. package/dist/storage/enforce.js +47 -14
  153. package/dist/storage/enforce.js.map +1 -1
  154. package/dist/storage/index.d.ts +1 -1
  155. package/dist/storage/index.d.ts.map +1 -1
  156. package/dist/storage/list.js +1 -1
  157. package/dist/storage/list.js.map +1 -1
  158. package/dist/storage/sandbox/rules-evaluation-error.d.ts +25 -0
  159. package/dist/storage/sandbox/rules-evaluation-error.d.ts.map +1 -1
  160. package/dist/storage/sandbox/rules-evaluation-error.js +29 -0
  161. package/dist/storage/sandbox/rules-evaluation-error.js.map +1 -1
  162. package/dist/storage/sandbox/rules-evaluator.d.ts +10 -5
  163. package/dist/storage/sandbox/rules-evaluator.d.ts.map +1 -1
  164. package/dist/storage/sandbox/rules-evaluator.js +105 -33
  165. package/dist/storage/sandbox/rules-evaluator.js.map +1 -1
  166. package/dist/storage/sandbox/rules-methods.d.ts.map +1 -1
  167. package/dist/storage/sandbox/rules-methods.js +17 -7
  168. package/dist/storage/sandbox/rules-methods.js.map +1 -1
  169. package/dist/storage/service.d.ts +23 -2
  170. package/dist/storage/service.d.ts.map +1 -1
  171. package/dist/storage/service.js +36 -26
  172. package/dist/storage/service.js.map +1 -1
  173. package/package.json +41 -1
  174. package/src/ai/blocked.ts +97 -0
  175. package/src/ai/broker/broker.ts +88 -0
  176. package/src/ai/broker/gemini-engine.ts +36 -9
  177. package/src/ai/broker/index.ts +2 -1
  178. package/src/ai/broker/openai-engine.ts +31 -3
  179. package/src/ai/broker/synthesizer.ts +34 -0
  180. package/src/ai/broker/types.ts +25 -0
  181. package/src/ai/internal.ts +5 -0
  182. package/src/ai/response-helpers.ts +6 -25
  183. package/src/analytics/index.ts +53 -0
  184. package/src/app/dispatch.test.ts +3 -1
  185. package/src/app-check/index.ts +41 -0
  186. package/src/database/controls.ts +1 -1
  187. package/src/database/sandbox/rules-eval.ts +2 -2
  188. package/src/database/sandbox/write-plane.ts +2 -2
  189. package/src/database/sandbox-controls.ts +29 -9
  190. package/src/deferred/entry.ts +167 -0
  191. package/src/firestore/lite.ts +91 -0
  192. package/src/firestore/persistence.ts +2 -2
  193. package/src/functions/index.ts +38 -0
  194. package/src/performance/index.ts +31 -0
  195. package/src/remote-config/index.ts +53 -0
  196. package/src/rules/grammar/FirestoreValidator.ts +44 -28
  197. package/src/rules/grammar/document-access-count.ts +75 -0
  198. package/src/rules/linter/ast-utils.ts +2 -36
  199. package/src/rules/linter/hallucinations.ts +123 -25
  200. package/src/rules/linter/linter.ts +32 -10
  201. package/src/rules/rtdb/grammar/simulator.ts +12 -13
  202. package/src/rules/rtdb/simulation/handler.ts +149 -46
  203. package/src/rules/simulator/document-lookups.ts +46 -3
  204. package/src/rules/simulator/eval-error.ts +16 -0
  205. package/src/rules/simulator/evaluation-builtins.ts +35 -8
  206. package/src/rules/simulator/evaluation-context.ts +12 -0
  207. package/src/rules/simulator/evaluator.ts +14 -3
  208. package/src/rules/simulator/handler.ts +68 -4
  209. package/src/rules/simulator/lookup-budget.ts +101 -0
  210. package/src/rules/stdlib-modules.ts +19 -11
  211. package/src/sandbox/admin-firestore/get-firestore.ts +19 -3
  212. package/src/sandbox/index.ts +5 -1
  213. package/src/sandbox/persistence/types.ts +1 -1
  214. package/src/sandbox/remote.ts +2 -2
  215. package/src/sandbox/sandbox-context.ts +69 -9
  216. package/src/sandbox/types/auth-state.ts +1 -1
  217. package/src/sandbox/types/events.ts +2 -1
  218. package/src/sandbox/types/operation.ts +1 -1
  219. package/src/storage/enforce.ts +53 -14
  220. package/src/storage/index.ts +1 -1
  221. package/src/storage/list.ts +1 -1
  222. package/src/storage/sandbox/rules-evaluation-error.ts +32 -0
  223. package/src/storage/sandbox/rules-evaluator.ts +109 -32
  224. package/src/storage/sandbox/rules-methods.ts +21 -7
  225. package/src/storage/service.ts +92 -27
@@ -1,4 +1,5 @@
1
1
  import type { FunctionDef } from '../grammar/FirestoreAST.js';
2
+ import type { LookupBudget } from './lookup-budget.js';
2
3
  import type { TraceRecorder } from './trace-recorder.js';
3
4
  import { Path } from './wrappers/path.js';
4
5
  import { Timestamp } from './wrappers/timestamp.js';
@@ -75,6 +76,17 @@ export interface SimulationContext {
75
76
  * through to `get()` exactly as before.
76
77
  */
77
78
  batchProjection?: Map<string, Record<string, unknown> | null>;
79
+ /**
80
+ * Per-request document access budget (production: 10 distinct
81
+ * get/exists/getAfter/existsAfter reads per single-document request; the
82
+ * 11th fails the evaluation closed). The handler creates one per test
83
+ * case and shares it across every match block and allow rule evaluated
84
+ * for that request; a fresh budget per test case is the "resets between
85
+ * requests" semantics. Optional so non-handler evaluation paths are
86
+ * unaffected. See LookupBudget in lookup-budget.ts for the counting
87
+ * semantics and the in-repo production evidence.
88
+ */
89
+ lookupBudget?: LookupBudget;
78
90
  /** Optional per-rule expression-trace recorder. When set, the evaluator
79
91
  * wraps every `evaluate()` call and records the sub-expression tree;
80
92
  * when absent (the default), the evaluator is unchanged. The handler
@@ -1 +1 @@
1
- {"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/evaluation-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AACD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,IAAI,CAAC;IAIX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC;CACjB;AAsBD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;oCAEgC;IAChC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD;;uEAEmE;IACnE,yBAAyB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD;;;;;iDAK6C;IAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1D,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,8CAA8C;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IAQjB,cAAc,EAAE,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D;;;;2DAIuD;IACvD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB"}
1
+ {"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/evaluation-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AACD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,IAAI,CAAC;IAIX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC;CACjB;AAsBD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;oCAEgC;IAChC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD;;uEAEmE;IACnE,yBAAyB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD;;;;;iDAK6C;IAC7C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1D,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,8CAA8C;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IAQjB,cAAc,EAAE,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;2DAIuD;IACvD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB"}
@@ -12,7 +12,7 @@
12
12
  * 5. get()/exists() with mock resolution
13
13
  */
14
14
  import type { Expression } from '../grammar/FirestoreAST.js';
15
- export { EvalError } from './eval-error.js';
15
+ export { EvalError, EvalError as RuleEvalError } from './eval-error.js';
16
16
  export { UnsupportedError } from './unsupported-error.js';
17
17
  export type { SimAuth, SimRequest, SimResource, SimulationContext } from './evaluation-context.js';
18
18
  export type { ExprTraceEntry } from './trace-recorder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,4BAA4B,CAAC;AAc1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnG,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAG/G;AAqQD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAuB/G;AAED;;iDAEiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,4BAA4B,CAAC;AAc1E,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnG,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAKjE;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAG/G;AAuQD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAuB/G;AAED;;iDAEiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD"}
@@ -4,8 +4,8 @@ import { rulesValuesEqual } from './value-equality.js';
4
4
  import { RulesValue, NO_OP } from './wrappers/base.js';
5
5
  import { Path } from './wrappers/path.js';
6
6
  import { RulesFloat } from './wrappers/float.js';
7
- import { EvalError } from './eval-error.js';
8
- export { EvalError } from './eval-error.js';
7
+ import { EvalError, ResourceLimitError } from './eval-error.js';
8
+ export { EvalError, EvalError as RuleEvalError } from './eval-error.js';
9
9
  export { UnsupportedError } from './unsupported-error.js';
10
10
  export { TraceRecorder } from './trace-recorder.js';
11
11
  import { evaluateFunctionCall, evaluateMethodCall } from './evaluation-builtins.js';
@@ -39,8 +39,9 @@ function evaluateExpr(expr, ctx, scope) {
39
39
  case 'binaryOp':
40
40
  return evaluateBinaryOp(expr.op, expr.left, expr.right, ctx, scope);
41
41
  case 'unaryOp': {
42
- if (expr.op === '!')
43
- return !evaluate(expr.operand, ctx, scope);
42
+ if (expr.op === '!') {
43
+ return !requireBoolean(evaluate(expr.operand, ctx, scope), expr.operand);
44
+ }
44
45
  if (expr.op === '-') {
45
46
  const v = evaluate(expr.operand, ctx, scope);
46
47
  // RULES-B5: negating a float stays a float (`-1.5 is float`); negating
@@ -320,6 +321,14 @@ function evaluateBinaryOp(op, left, right, ctx, scope) {
320
321
  catch (e) {
321
322
  lErr = e;
322
323
  }
324
+ // A resource-limit failure (the document access budget) fails the WHOLE
325
+ // request, it is not a CEL error value: a determining RHS must not
326
+ // absorb it into an ALLOW. Fail closed immediately.
327
+ // TODO(unverified): confirm against a live production capture that the
328
+ // 11th-access error is not absorbable. The Rules Test API does not
329
+ // enforce the budget, so the capture has to be a deployed ruleset.
330
+ if (lErr instanceof ResourceLimitError)
331
+ throw lErr;
323
332
  if (lErr === undefined && lv === false) {
324
333
  // LHS is false → determines the result; RHS need not be evaluated.
325
334
  ctx.trace?.skip(right);
@@ -350,6 +359,9 @@ function evaluateBinaryOp(op, left, right, ctx, scope) {
350
359
  catch (e) {
351
360
  lErr = e;
352
361
  }
362
+ // See the `&&` branch: a resource-limit failure is not absorbable.
363
+ if (lErr instanceof ResourceLimitError)
364
+ throw lErr;
353
365
  if (lErr === undefined && lv === true) {
354
366
  // LHS is true → determines the result; RHS need not be evaluated.
355
367
  ctx.trace?.skip(right);
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/rules/simulator/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../src/rules/simulator/evaluator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,QAAQ,EAER,wBAAwB,EAIzB,MAAM,iBAAiB,CAAC;AAezB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAqV1G,qBAAa,6BAA6B;IACxC;;;OAGG;IACH,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC1D;;;;;;;;;WASG;QACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;KAC/D,GACA,wBAAwB;CAyN5B"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,QAAQ,EAER,wBAAwB,EAIzB,MAAM,iBAAiB,CAAC;AAiBzB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAgY1G,qBAAa,6BAA6B;IACxC;;;OAGG;IACH,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,QAAQ,EAAE,EACrB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC1D;;;;;;;;;WASG;QACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;KAC/D,GACA,wBAAwB;CA4O5B"}
@@ -4,6 +4,8 @@ import { resolveAuthoredSourceLoc } from '../modules/resolver-core.js';
4
4
  import { evaluate, UnsupportedError, TraceRecorder } from './evaluator.js';
5
5
  import { Timestamp } from './wrappers/timestamp.js';
6
6
  import { Path } from './wrappers/path.js';
7
+ import { LookupBudget } from './lookup-budget.js';
8
+ import { ResourceLimitError } from './eval-error.js';
7
9
  import { projectAfterState } from './project-after-state.js';
8
10
  import { requestQuery, resolveServerTimestamps, reviveFirestoreNumbers, } from './firestore-values.js';
9
11
  export { SERVER_TIMESTAMP, resolveServerTimestamps, reviveFirestoreNumbers } from './firestore-values.js';
@@ -38,13 +40,14 @@ function methodToOperations(method) {
38
40
  default: return [method];
39
41
  }
40
42
  }
41
- // ═══ Rule evaluation ═══
42
43
  /**
43
44
  * Evaluate all allow rules in a match block for a given operation.
44
45
  * Uses OR semantics — if any matching rule allows, access is granted.
45
46
  *
46
47
  * Decision logic:
47
48
  * - any rule ALLOW → ALLOW (short-circuit)
49
+ * - else if any rule hit a per-request resource limit → DENY, and the
50
+ * caller stops: the limit ends the request, not just this block
48
51
  * - else if any rule threw UnsupportedError → UNSUPPORTED (sim abstains)
49
52
  * - else → DENY
50
53
  *
@@ -97,6 +100,25 @@ function evaluateRules(block, operation, ctx, source) {
97
100
  }
98
101
  catch (e) {
99
102
  entry.expressionTrace = recorder.entries;
103
+ // A per-request resource limit (the document access budget) is not a
104
+ // failure of THIS rule: production stops the whole request there, so
105
+ // no sibling allow rule and no other match block gets a chance to
106
+ // grant. Abandon the loop and report the limit up to the caller.
107
+ const isResourceLimit = e instanceof ResourceLimitError;
108
+ if (isResourceLimit) {
109
+ entry.verdict = 'ERROR';
110
+ entry.message = e.message;
111
+ trace.push(entry);
112
+ ctx.trace = priorRecorder;
113
+ notes.push(`Request denied by a rules resource limit: ${e.message}. `
114
+ + 'The limit is per request, so no other allow rule or match block was evaluated.');
115
+ return {
116
+ decision: 'DENY',
117
+ trace,
118
+ notes,
119
+ resourceLimit: e.message,
120
+ };
121
+ }
100
122
  const isUnsupported = e instanceof UnsupportedError;
101
123
  if (isUnsupported) {
102
124
  sawUnsupported = true;
@@ -170,7 +192,7 @@ function newEntry(rule, index, source) {
170
192
  return entry;
171
193
  }
172
194
  // ═══ Build simulation context from TestCase ═══
173
- function buildContext(tc, functions, pathVariables, getDoc, batchProjection) {
195
+ function buildContext(tc, functions, pathVariables, getDoc, batchProjection, lookupBudget) {
174
196
  const fnMap = new Map();
175
197
  for (const fn of functions)
176
198
  fnMap.set(fn.name, fn);
@@ -313,6 +335,12 @@ function buildContext(tc, functions, pathVariables, getDoc, batchProjection) {
313
335
  // getafter-batch fix — shared batch/transaction projection, when the
314
336
  // caller supplied one. Absent for single-op evaluation.
315
337
  ...(batchProjection ? { batchProjection } : {}),
338
+ // Per-request document access budget (10 distinct lookups). The SAME
339
+ // instance is threaded into every match block's context for one test
340
+ // case, because production's budget spans overlapping match blocks and
341
+ // OR'd allow rules within one request evaluation. An absent budget and
342
+ // an `undefined` one mean the same thing here: no budget is enforced.
343
+ lookupBudget,
316
344
  };
317
345
  }
318
346
  // ═══ Main handler ═══
@@ -463,9 +491,18 @@ export class SimulateFirestoreRulesHandler {
463
491
  const notes = [];
464
492
  let sawUnsupported = false;
465
493
  let grantingBlockPath;
494
+ let hitResourceLimit = false;
495
+ // One lookup budget per test case (one request evaluation), shared
496
+ // across every matching block below and reset here between requests.
497
+ // Production's single-request budget is 10 distinct document
498
+ // accesses; transactions and batched writes additionally get a
499
+ // 20-access aggregate that is NOT modeled, because each per-op
500
+ // simulate() call in a batch (see WriteRuntime.buildBatchProjection)
501
+ // gets its own fresh per-op budget of 10.
502
+ const lookupBudget = new LookupBudget();
466
503
  for (const match of matches) {
467
504
  const pathVars = { ...rootBindings, ...match.pathVariables };
468
- const ctx = buildContext(tc, match.functions, pathVars, opts?.getDoc, opts?.batchProjection);
505
+ const ctx = buildContext(tc, match.functions, pathVars, opts?.getDoc, opts?.batchProjection, lookupBudget);
469
506
  const blockPath = renderMatchBlockPath(match.block);
470
507
  const res = evaluateRules(match.block, tc.method, ctx, source);
471
508
  for (const entry of res.trace) {
@@ -473,6 +510,14 @@ export class SimulateFirestoreRulesHandler {
473
510
  }
474
511
  trace.push(...res.trace);
475
512
  notes.push(...res.notes);
513
+ // A per-request resource limit ends the request: production stops
514
+ // the whole evaluation, so a later match block cannot grant.
515
+ const isResourceLimit = res.resourceLimit !== undefined;
516
+ if (isResourceLimit) {
517
+ decision = 'DENY';
518
+ hitResourceLimit = true;
519
+ break;
520
+ }
476
521
  const isResAllow = res.decision === 'ALLOW';
477
522
  if (isResAllow) {
478
523
  decision = 'ALLOW';
@@ -484,8 +529,10 @@ export class SimulateFirestoreRulesHandler {
484
529
  sawUnsupported = true;
485
530
  }
486
531
  }
487
- const isNotAllow = decision !== 'ALLOW';
488
- if (isNotAllow) {
532
+ // A resource limit is a definite production DENY, so it outranks an
533
+ // UNSUPPORTED abstention recorded by an earlier block.
534
+ const isEscalatable = decision !== 'ALLOW' && !hitResourceLimit;
535
+ if (isEscalatable) {
489
536
  if (sawUnsupported) {
490
537
  decision = 'UNSUPPORTED';
491
538
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/rules/simulator/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/rules/simulator/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { SimulationContext } from './evaluation-context.js';
2
+ import { ResourceLimitError } from './eval-error.js';
3
+ /**
4
+ * Budget exhaustion. A {@link ResourceLimitError}, not a plain EvalError,
5
+ * because it fails the WHOLE request closed: CEL error absorption
6
+ * (`error || true`, `error && false`) must not swallow it into an ALLOW,
7
+ * and a sibling allow rule or match block must not evaluate past it.
8
+ */
9
+ export declare class LookupBudgetError extends ResourceLimitError {
10
+ constructor(message: string);
11
+ }
12
+ /**
13
+ * Per-request lookup counter. The handler creates ONE per test case
14
+ * (request evaluation) and every match block and allow rule evaluated for
15
+ * that request shares it: production's budget spans OR'd rules and
16
+ * overlapping match blocks alike (the linter's SHARED_GATE "cross-rule
17
+ * budget exhaustion" hazard).
18
+ */
19
+ export declare class LookupBudget {
20
+ private readonly accessed;
21
+ /**
22
+ * Charge one document access. `kind` is 'doc' for pre-write reads
23
+ * (get/exists) and 'after' for post-write projections (getAfter/
24
+ * existsAfter). A repeat access to the same (kind, path) is cached and
25
+ * free; the 11th DISTINCT access throws {@link LookupBudgetError}, which
26
+ * fails the request closed.
27
+ */
28
+ charge(kind: 'doc' | 'after', normalizedPath: string): void;
29
+ }
30
+ /**
31
+ * The single charging seam for all four document access builtins. Charges
32
+ * the budget for a raw (unnormalized) lookup path. Malformed paths charge
33
+ * nothing: no document read happens, and the caller's own validation
34
+ * produces the error or false result.
35
+ */
36
+ export declare function chargeLookup(ctx: SimulationContext, kind: 'doc' | 'after', rawPath: string): void;
37
+ //# sourceMappingURL=lookup-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-budget.d.ts","sourceRoot":"","sources":["../../../src/rules/simulator/lookup-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AA4CrD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;CAY5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjG"}
@@ -0,0 +1,96 @@
1
+ import { ResourceLimitError } from './eval-error.js';
2
+ import { isDocumentPath, normalizeDocumentPath } from './document-lookups.js';
3
+ // ═══ Per-request document-lookup budget ═══
4
+ //
5
+ // Production hard-limits security-rule document access calls, get(),
6
+ // exists(), getAfter() and existsAfter(), to 10 per single-document request
7
+ // or query evaluation. Multi-document transactions and batched writes get
8
+ // an AGGREGATE budget of 20 on top of a per-operation 10; only the per-
9
+ // operation 10 is modeled here (each batched op's simulate() call gets its
10
+ // own fresh LookupBudget, mirroring how WriteRuntime.buildBatchProjection
11
+ // shares one projection map across per-op simulate() calls but each op is
12
+ // its own rules evaluation).
13
+ //
14
+ // Counting semantics: distinct accesses, not raw calls. In-repo production
15
+ // evidence:
16
+ // - site-docs secure/firestore-rules-limits.md ("More than 10 document
17
+ // access calls"): "Repeated reads of the same path are cached; reads of
18
+ // different paths are not."
19
+ // - rules/stdlib-modules.ts spaces guidance: "get() is cached per request,
20
+ // so all rules on the request share a single read of the 10-get budget."
21
+ // - The Storage sibling limit (storage/sandbox/rules-methods.ts) uses a
22
+ // per-request distinct-path set, verified by real-resource capture.
23
+ //
24
+ // What is implemented, exactly: the budget keys on (kind, path), where kind
25
+ // is 'doc' for pre-write reads (get/exists) and 'after' for post-write
26
+ // projections (getAfter/existsAfter). So get() and exists() on one path
27
+ // share a slot, getAfter() and existsAfter() on one path share a slot, and
28
+ // a path read by BOTH a pre-write and a post-write call charges TWO slots.
29
+ // The two calls read different snapshots, so charging them separately is the
30
+ // fail-closed direction while production's cache granularity is uncaptured.
31
+ //
32
+ // TODO(unverified): a credentialed production capture is needed to pin
33
+ // (a) whether get() and exists() on one path really share one cache slot,
34
+ // (b) whether getAfter() on a path already read by get() charges a second
35
+ // slot or reuses the first, and (c) whether exhausting the budget is
36
+ // absorbable by a determining CEL operand (modeled: not absorbable). The
37
+ // capture is a ruleset whose condition performs 10 lookups and then an
38
+ // 11th, deployed and probed against a live project. The Rules Test API does
39
+ // not enforce the budget, so it cannot produce this evidence.
40
+ /** Production's per-evaluation document access budget (single request). */
41
+ const DOCUMENT_LOOKUP_LIMIT = 10;
42
+ /**
43
+ * Budget exhaustion. A {@link ResourceLimitError}, not a plain EvalError,
44
+ * because it fails the WHOLE request closed: CEL error absorption
45
+ * (`error || true`, `error && false`) must not swallow it into an ALLOW,
46
+ * and a sibling allow rule or match block must not evaluate past it.
47
+ */
48
+ export class LookupBudgetError extends ResourceLimitError {
49
+ constructor(message) {
50
+ super(message);
51
+ this.name = 'LookupBudgetError';
52
+ }
53
+ }
54
+ /**
55
+ * Per-request lookup counter. The handler creates ONE per test case
56
+ * (request evaluation) and every match block and allow rule evaluated for
57
+ * that request shares it: production's budget spans OR'd rules and
58
+ * overlapping match blocks alike (the linter's SHARED_GATE "cross-rule
59
+ * budget exhaustion" hazard).
60
+ */
61
+ export class LookupBudget {
62
+ accessed = new Set();
63
+ /**
64
+ * Charge one document access. `kind` is 'doc' for pre-write reads
65
+ * (get/exists) and 'after' for post-write projections (getAfter/
66
+ * existsAfter). A repeat access to the same (kind, path) is cached and
67
+ * free; the 11th DISTINCT access throws {@link LookupBudgetError}, which
68
+ * fails the request closed.
69
+ */
70
+ charge(kind, normalizedPath) {
71
+ const key = `${kind}:${normalizedPath}`;
72
+ if (this.accessed.has(key))
73
+ return; // cached, does not count against the budget
74
+ if (this.accessed.size >= DOCUMENT_LOOKUP_LIMIT) {
75
+ throw new LookupBudgetError(`document access limit exceeded: this request already read ${DOCUMENT_LOOKUP_LIMIT} distinct documents `
76
+ + `via get()/exists()/getAfter()/existsAfter() (production allows 10 per request; `
77
+ + `the 11th distinct access fails the evaluation)`);
78
+ }
79
+ this.accessed.add(key);
80
+ }
81
+ }
82
+ /**
83
+ * The single charging seam for all four document access builtins. Charges
84
+ * the budget for a raw (unnormalized) lookup path. Malformed paths charge
85
+ * nothing: no document read happens, and the caller's own validation
86
+ * produces the error or false result.
87
+ */
88
+ export function chargeLookup(ctx, kind, rawPath) {
89
+ if (!ctx.lookupBudget)
90
+ return;
91
+ const normalized = normalizeDocumentPath(rawPath);
92
+ if (!isDocumentPath(normalized))
93
+ return;
94
+ ctx.lookupBudget.charge(kind, normalized);
95
+ }
96
+ //# sourceMappingURL=lookup-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup-budget.js","sourceRoot":"","sources":["../../../src/rules/simulator/lookup-budget.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,6CAA6C;AAC7C,EAAE;AACF,qEAAqE;AACrE,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,6BAA6B;AAC7B,EAAE;AACF,2EAA2E;AAC3E,YAAY;AACZ,yEAAyE;AACzE,4EAA4E;AAC5E,gCAAgC;AAChC,6EAA6E;AAC7E,6EAA6E;AAC7E,0EAA0E;AAC1E,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,wEAAwE;AACxE,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,8DAA8D;AAE9D,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C;;;;;;OAMG;IACH,MAAM,CAAC,IAAqB,EAAE,cAAsB;QAClD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,cAAc,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,4CAA4C;QAChF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC;YAChD,MAAM,IAAI,iBAAiB,CACzB,6DAA6D,qBAAqB,sBAAsB;kBACtG,iFAAiF;kBACjF,gDAAgD,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAsB,EAAE,IAAqB,EAAE,OAAe;IACzF,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO;IAC9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAAE,OAAO;IACxC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC"}
@@ -37,6 +37,13 @@ export type RulesService = 'firestore' | 'storage';
37
37
  export interface StdlibEntry {
38
38
  /** Surface signature, e.g. `math.ceil(x: number): int`. */
39
39
  signature: string;
40
+ /**
41
+ * Whether production accepts a ruleset that calls this entry. Omitted
42
+ * means accepted. `'rejected'` documents a name that Firebase reference
43
+ * material lists but production's compiler refuses, so the catalog can
44
+ * carry the correction while the signature field stays a signature.
45
+ */
46
+ acceptance?: 'rejected';
40
47
  /** One-line summary the agent reads first. */
41
48
  description: string;
42
49
  /** ~1–3 lines of real rule fragments. Optional. */
@@ -1 +1 @@
1
- {"version":3,"file":"stdlib-modules.d.ts","sourceRoot":"","sources":["../../src/rules/stdlib-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,MAAM,MAAM,UAAU,GAClB,oBAAoB,GACpB,cAAc,GACd,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;qEACiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;0EACsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;yDACqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAy+BD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,YAAY,CAyCpD,CAAC;AAEJ,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CAEvE;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GACrB,YAAY,GAAG,SAAS,CAO1B;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAI9D;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,GAAG,IAAI,CAUf"}
1
+ {"version":3,"file":"stdlib-modules.d.ts","sourceRoot":"","sources":["../../src/rules/stdlib-modules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,MAAM,MAAM,UAAU,GAClB,oBAAoB,GACpB,cAAc,GACd,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;qEACiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;0EACsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;yDACqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AA0+BD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,YAAY,CAyCpD,CAAC;AAEJ,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CAEvE;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,YAAY,GACrB,YAAY,GAAG,SAAS,CAO1B;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAI9D;AAED,kEAAkE;AAClE,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,GAAG,IAAI,CAUf"}
@@ -37,8 +37,8 @@ import { STDLIB_SERVICE_CONTRACTS } from './modules/stdlib-services.generated.js
37
37
  const BUILTINS_MODULE = {
38
38
  key: 'builtins',
39
39
  kind: 'language-namespace',
40
- description: 'Top-level functions always in scope inside rules — get, exists, getAfter, debug. Called bare, no namespace prefix.',
41
- purpose: 'The four built-in functions Firestore Rules ships with at the top level. They are NOT inside a namespace — call `get(path)`, not `firestore.get(path)`. Used to read other documents (cross-document gates), check existence, peek at post-write state, and print debug values.',
40
+ description: 'Top-level functions always in scope inside rules: get, exists, getAfter. Called bare, no namespace prefix. (debug() is docs-only: production rejects it at compile.)',
41
+ purpose: 'The built-in functions Firestore Rules ships with at the top level. They are NOT inside a namespace: call `get(path)`, not `firestore.get(path)`. Used to read other documents (cross-document gates), check existence, and peek at post-write state.',
42
42
  whenToUse: 'Reach for `builtins` any time a rule needs information that isn\'t already on `request` or `resource`. Most common: `get(path)` to read another document\'s fields inside a predicate.',
43
43
  entries: [
44
44
  {
@@ -63,8 +63,9 @@ const BUILTINS_MODULE = {
63
63
  },
64
64
  {
65
65
  signature: 'debug(value: any): bool',
66
- description: 'Print `value` to the Firestore emulator/test runner log and return true. No-op in production. Useful for narrowing why a rule denies during local development.',
67
- notes: 'Always returns true — wrapping it in a predicate (`if debug(resource.data.x) && otherCondition`) shows the value without changing rule outcome.',
66
+ acceptance: 'rejected',
67
+ description: 'DO NOT USE. Although Firebase reference docs list `debug()`, production Firestore REJECTS rulesets that call it at compile time (`Function not found error: Name: [debug]`). The linter and local simulator reject it for the same reason.',
68
+ notes: 'Remove any debug() wrapper before deploying and evaluate the inner expression directly. There is no deployable logging primitive in rules.',
68
69
  },
69
70
  ],
70
71
  relatedKeys: ['request', 'resource', 'path'],
@@ -73,9 +74,9 @@ const BUILTINS_MODULE = {
73
74
  const MATH = {
74
75
  key: 'math',
75
76
  kind: 'language-namespace',
76
- description: 'Numeric helpers — abs, ceil, floor, round, sqrt, pow, isInfinite, isNaN. Use when rules need to coerce or bound numbers.',
77
+ description: 'Numeric helpers: abs, ceil, floor, round, sqrt, pow, isNaN. Use when rules need to coerce or bound numbers.',
77
78
  purpose: 'The `math` namespace exposes a small set of numeric utilities for use inside rule predicates. Functions are called as `math.<fn>(...)`. Always in scope; no import needed.',
78
- whenToUse: 'Reach for `math` whenever a rule needs to round, bound, or guard against non-finite numbers in a user-supplied field.',
79
+ whenToUse: 'Reach for `math` whenever a rule needs to round, bound, or guard against NaN in a user-supplied field.',
79
80
  entries: [
80
81
  { signature: 'math.abs(n: number): number', description: 'Absolute value of `n`.' },
81
82
  { signature: 'math.ceil(n: number): int', description: 'Smallest integer >= `n`.' },
@@ -84,15 +85,14 @@ const MATH = {
84
85
  { signature: 'math.sqrt(n: number): number', description: 'Square root of `n`. Negative input returns NaN.' },
85
86
  { signature: 'math.pow(base: number, exp: number): number', description: '`base` raised to `exp`.' },
86
87
  {
87
- signature: 'math.isInfinite(n: number): bool',
88
- description: 'True if `n` is +Infinity or -Infinity.',
89
- notes: 'Pairs with `math.isNaN` for safe numeric guards before arithmetic.',
88
+ signature: 'math.isNaN(n: number): bool',
89
+ description: 'True if `n` is NaN.',
90
+ notes: 'There is NO isInfinite function in the math namespace. Production Firestore rejects it at compile time (`Function not found error: Name: [math.isInfinite]`), despite it appearing in some Firebase reference material.',
90
91
  },
91
- { signature: 'math.isNaN(n: number): bool', description: 'True if `n` is NaN.' },
92
92
  ],
93
93
  examples: [
94
94
  `allow update: if math.ceil(request.resource.data.score) <= 100;`,
95
- `allow create: if !math.isNaN(request.resource.data.lat) && !math.isInfinite(request.resource.data.lat);`,
95
+ `allow create: if !math.isNaN(request.resource.data.lat);`,
96
96
  ],
97
97
  relatedKeys: ['hashing'],
98
98
  };