pyric 0.0.1 → 0.1.0-alpha.7

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 (786) hide show
  1. package/README.md +52 -1
  2. package/dist/app/index.d.ts +81 -0
  3. package/dist/app/index.d.ts.map +1 -0
  4. package/dist/app/index.js +78 -0
  5. package/dist/app/index.js.map +1 -0
  6. package/dist/auth/index.d.ts +346 -0
  7. package/dist/auth/index.d.ts.map +1 -0
  8. package/dist/auth/index.js +701 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/auth/prod-backend.d.ts +39 -0
  11. package/dist/auth/prod-backend.d.ts.map +1 -0
  12. package/dist/auth/prod-backend.js +179 -0
  13. package/dist/auth/prod-backend.js.map +1 -0
  14. package/dist/auth/providers.d.ts +107 -0
  15. package/dist/auth/providers.d.ts.map +1 -0
  16. package/dist/auth/providers.js +138 -0
  17. package/dist/auth/providers.js.map +1 -0
  18. package/dist/auth/sandbox-backend.d.ts +769 -0
  19. package/dist/auth/sandbox-backend.d.ts.map +1 -0
  20. package/dist/auth/sandbox-backend.js +1598 -0
  21. package/dist/auth/sandbox-backend.js.map +1 -0
  22. package/dist/auth/target.d.ts +40 -0
  23. package/dist/auth/target.d.ts.map +1 -0
  24. package/dist/auth/target.js +28 -0
  25. package/dist/auth/target.js.map +1 -0
  26. package/dist/auth/types.d.ts +252 -0
  27. package/dist/auth/types.d.ts.map +1 -0
  28. package/dist/auth/types.js +26 -0
  29. package/dist/auth/types.js.map +1 -0
  30. package/dist/database/constraints/atoms.d.ts +29 -0
  31. package/dist/database/constraints/atoms.d.ts.map +1 -0
  32. package/dist/database/constraints/atoms.js +43 -0
  33. package/dist/database/constraints/atoms.js.map +1 -0
  34. package/dist/database/constraints/compose.d.ts +16 -0
  35. package/dist/database/constraints/compose.d.ts.map +1 -0
  36. package/dist/database/constraints/compose.js +15 -0
  37. package/dist/database/constraints/compose.js.map +1 -0
  38. package/dist/database/constraints/data.d.ts +30 -0
  39. package/dist/database/constraints/data.d.ts.map +1 -0
  40. package/dist/database/constraints/data.js +46 -0
  41. package/dist/database/constraints/data.js.map +1 -0
  42. package/dist/database/constraints/document.d.ts +42 -0
  43. package/dist/database/constraints/document.d.ts.map +1 -0
  44. package/dist/database/constraints/document.js +86 -0
  45. package/dist/database/constraints/document.js.map +1 -0
  46. package/dist/database/constraints/game.d.ts +30 -0
  47. package/dist/database/constraints/game.d.ts.map +1 -0
  48. package/dist/database/constraints/game.js +49 -0
  49. package/dist/database/constraints/game.js.map +1 -0
  50. package/dist/database/constraints/index.d.ts +12 -0
  51. package/dist/database/constraints/index.d.ts.map +1 -0
  52. package/dist/database/constraints/index.js +9 -0
  53. package/dist/database/constraints/index.js.map +1 -0
  54. package/dist/database/constraints/policies.d.ts +16 -0
  55. package/dist/database/constraints/policies.d.ts.map +1 -0
  56. package/dist/database/constraints/policies.js +17 -0
  57. package/dist/database/constraints/policies.js.map +1 -0
  58. package/dist/database/constraints/ruleset.d.ts +5 -0
  59. package/dist/database/constraints/ruleset.d.ts.map +1 -0
  60. package/dist/database/constraints/ruleset.js +132 -0
  61. package/dist/database/constraints/ruleset.js.map +1 -0
  62. package/dist/database/constraints/schema.d.ts +17 -0
  63. package/dist/database/constraints/schema.d.ts.map +1 -0
  64. package/dist/database/constraints/schema.js +74 -0
  65. package/dist/database/constraints/schema.js.map +1 -0
  66. package/dist/database/constraints/types.d.ts +22 -0
  67. package/dist/database/constraints/types.d.ts.map +1 -0
  68. package/dist/database/constraints/types.js +2 -0
  69. package/dist/database/constraints/types.js.map +1 -0
  70. package/dist/database/crawl/handler.d.ts +7 -0
  71. package/dist/database/crawl/handler.d.ts.map +1 -0
  72. package/dist/database/crawl/handler.js +91 -0
  73. package/dist/database/crawl/handler.js.map +1 -0
  74. package/dist/database/crawl/semaphore.d.ts +9 -0
  75. package/dist/database/crawl/semaphore.d.ts.map +1 -0
  76. package/dist/database/crawl/semaphore.js +27 -0
  77. package/dist/database/crawl/semaphore.js.map +1 -0
  78. package/dist/database/crawl/spec.d.ts +33 -0
  79. package/dist/database/crawl/spec.d.ts.map +1 -0
  80. package/dist/database/crawl/spec.js +12 -0
  81. package/dist/database/crawl/spec.js.map +1 -0
  82. package/dist/database/data/handler.d.ts +9 -0
  83. package/dist/database/data/handler.d.ts.map +1 -0
  84. package/dist/database/data/handler.js +96 -0
  85. package/dist/database/data/handler.js.map +1 -0
  86. package/dist/database/data/spec.d.ts +77 -0
  87. package/dist/database/data/spec.d.ts.map +1 -0
  88. package/dist/database/data/spec.js +17 -0
  89. package/dist/database/data/spec.js.map +1 -0
  90. package/dist/database/data/validated.d.ts +8 -0
  91. package/dist/database/data/validated.d.ts.map +1 -0
  92. package/dist/database/data/validated.js +99 -0
  93. package/dist/database/data/validated.js.map +1 -0
  94. package/dist/database/grammar/RtdbExpr.ohm +98 -0
  95. package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts +2 -0
  96. package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -0
  97. package/dist/database/grammar/RtdbExpr.ohm.generated.js +103 -0
  98. package/dist/database/grammar/RtdbExpr.ohm.generated.js.map +1 -0
  99. package/dist/database/grammar/RtdbExprParser.d.ts +5 -0
  100. package/dist/database/grammar/RtdbExprParser.d.ts.map +1 -0
  101. package/dist/database/grammar/RtdbExprParser.js +53 -0
  102. package/dist/database/grammar/RtdbExprParser.js.map +1 -0
  103. package/dist/database/grammar/linter.d.ts +3 -0
  104. package/dist/database/grammar/linter.d.ts.map +1 -0
  105. package/dist/database/grammar/linter.js +66 -0
  106. package/dist/database/grammar/linter.js.map +1 -0
  107. package/dist/database/grammar/simulator.d.ts +31 -0
  108. package/dist/database/grammar/simulator.d.ts.map +1 -0
  109. package/dist/database/grammar/simulator.js +255 -0
  110. package/dist/database/grammar/simulator.js.map +1 -0
  111. package/dist/database/grammar/validator.d.ts +3 -0
  112. package/dist/database/grammar/validator.d.ts.map +1 -0
  113. package/dist/database/grammar/validator.js +84 -0
  114. package/dist/database/grammar/validator.js.map +1 -0
  115. package/dist/database/host.d.ts +50 -0
  116. package/dist/database/host.d.ts.map +1 -0
  117. package/dist/database/host.js +41 -0
  118. package/dist/database/host.js.map +1 -0
  119. package/dist/database/index.d.ts +40 -0
  120. package/dist/database/index.d.ts.map +1 -0
  121. package/dist/database/index.js +47 -0
  122. package/dist/database/index.js.map +1 -0
  123. package/dist/database/initialize-from-app.d.ts +28 -0
  124. package/dist/database/initialize-from-app.d.ts.map +1 -0
  125. package/dist/database/initialize-from-app.js +23 -0
  126. package/dist/database/initialize-from-app.js.map +1 -0
  127. package/dist/database/ir/handler.d.ts +6 -0
  128. package/dist/database/ir/handler.d.ts.map +1 -0
  129. package/dist/database/ir/handler.js +52 -0
  130. package/dist/database/ir/handler.js.map +1 -0
  131. package/dist/database/ir/spec.d.ts +25 -0
  132. package/dist/database/ir/spec.d.ts.map +1 -0
  133. package/dist/database/ir/spec.js +11 -0
  134. package/dist/database/ir/spec.js.map +1 -0
  135. package/dist/database/mapper.d.ts +9 -0
  136. package/dist/database/mapper.d.ts.map +1 -0
  137. package/dist/database/mapper.js +115 -0
  138. package/dist/database/mapper.js.map +1 -0
  139. package/dist/database/modular.d.ts +604 -0
  140. package/dist/database/modular.d.ts.map +1 -0
  141. package/dist/database/modular.js +1226 -0
  142. package/dist/database/modular.js.map +1 -0
  143. package/dist/database/replay.d.ts +33 -0
  144. package/dist/database/replay.d.ts.map +1 -0
  145. package/dist/database/replay.js +124 -0
  146. package/dist/database/replay.js.map +1 -0
  147. package/dist/database/resolver.d.ts +4 -0
  148. package/dist/database/resolver.d.ts.map +1 -0
  149. package/dist/database/resolver.js +66 -0
  150. package/dist/database/resolver.js.map +1 -0
  151. package/dist/database/sandbox/backend.d.ts +403 -0
  152. package/dist/database/sandbox/backend.d.ts.map +1 -0
  153. package/dist/database/sandbox/backend.js +1467 -0
  154. package/dist/database/sandbox/backend.js.map +1 -0
  155. package/dist/database/sandbox/data-tree.d.ts +123 -0
  156. package/dist/database/sandbox/data-tree.d.ts.map +1 -0
  157. package/dist/database/sandbox/data-tree.js +310 -0
  158. package/dist/database/sandbox/data-tree.js.map +1 -0
  159. package/dist/database/sandbox/normalize.d.ts +77 -0
  160. package/dist/database/sandbox/normalize.d.ts.map +1 -0
  161. package/dist/database/sandbox/normalize.js +165 -0
  162. package/dist/database/sandbox/normalize.js.map +1 -0
  163. package/dist/database/sandbox/push-id.d.ts +32 -0
  164. package/dist/database/sandbox/push-id.d.ts.map +1 -0
  165. package/dist/database/sandbox/push-id.js +82 -0
  166. package/dist/database/sandbox/push-id.js.map +1 -0
  167. package/dist/database/sandbox/query.d.ts +175 -0
  168. package/dist/database/sandbox/query.d.ts.map +1 -0
  169. package/dist/database/sandbox/query.js +269 -0
  170. package/dist/database/sandbox/query.js.map +1 -0
  171. package/dist/database/sandbox/rules-eval.d.ts +69 -0
  172. package/dist/database/sandbox/rules-eval.d.ts.map +1 -0
  173. package/dist/database/sandbox/rules-eval.js +124 -0
  174. package/dist/database/sandbox/rules-eval.js.map +1 -0
  175. package/dist/database/sandbox/sentinels.d.ts +71 -0
  176. package/dist/database/sandbox/sentinels.d.ts.map +1 -0
  177. package/dist/database/sandbox/sentinels.js +92 -0
  178. package/dist/database/sandbox/sentinels.js.map +1 -0
  179. package/dist/database/simulation/handler.d.ts +6 -0
  180. package/dist/database/simulation/handler.d.ts.map +1 -0
  181. package/dist/database/simulation/handler.js +236 -0
  182. package/dist/database/simulation/handler.js.map +1 -0
  183. package/dist/database/simulation/spec.d.ts +69 -0
  184. package/dist/database/simulation/spec.d.ts.map +1 -0
  185. package/dist/database/simulation/spec.js +25 -0
  186. package/dist/database/simulation/spec.js.map +1 -0
  187. package/dist/database/tools.d.ts +22 -0
  188. package/dist/database/tools.d.ts.map +1 -0
  189. package/dist/database/tools.js +272 -0
  190. package/dist/database/tools.js.map +1 -0
  191. package/dist/database/types.d.ts +210 -0
  192. package/dist/database/types.d.ts.map +1 -0
  193. package/dist/database/types.js +26 -0
  194. package/dist/database/types.js.map +1 -0
  195. package/dist/database/write/handler.d.ts +7 -0
  196. package/dist/database/write/handler.d.ts.map +1 -0
  197. package/dist/database/write/handler.js +42 -0
  198. package/dist/database/write/handler.js.map +1 -0
  199. package/dist/database/write/spec.d.ts +18 -0
  200. package/dist/database/write/spec.d.ts.map +1 -0
  201. package/dist/database/write/spec.js +7 -0
  202. package/dist/database/write/spec.js.map +1 -0
  203. package/dist/firestore/index.d.ts +533 -0
  204. package/dist/firestore/index.d.ts.map +1 -0
  205. package/dist/firestore/index.js +1536 -0
  206. package/dist/firestore/index.js.map +1 -0
  207. package/dist/firestore/tools.d.ts +67 -0
  208. package/dist/firestore/tools.d.ts.map +1 -0
  209. package/dist/firestore/tools.js +318 -0
  210. package/dist/firestore/tools.js.map +1 -0
  211. package/dist/firestore-values/index.d.ts +63 -0
  212. package/dist/firestore-values/index.d.ts.map +1 -0
  213. package/dist/firestore-values/index.js +148 -0
  214. package/dist/firestore-values/index.js.map +1 -0
  215. package/dist/project-scope.d.ts +5 -0
  216. package/dist/project-scope.d.ts.map +1 -0
  217. package/dist/project-scope.js +2 -0
  218. package/dist/project-scope.js.map +1 -0
  219. package/dist/rules/extract.d.ts +28 -0
  220. package/dist/rules/extract.d.ts.map +1 -0
  221. package/dist/rules/extract.js +25 -0
  222. package/dist/rules/extract.js.map +1 -0
  223. package/dist/rules/generators/assembler.d.ts +19 -0
  224. package/dist/rules/generators/assembler.d.ts.map +1 -0
  225. package/dist/rules/generators/assembler.js +292 -0
  226. package/dist/rules/generators/assembler.js.map +1 -0
  227. package/dist/rules/generators/expressions.d.ts +52 -0
  228. package/dist/rules/generators/expressions.d.ts.map +1 -0
  229. package/dist/rules/generators/expressions.js +117 -0
  230. package/dist/rules/generators/expressions.js.map +1 -0
  231. package/dist/rules/generators/grid.d.ts +22 -0
  232. package/dist/rules/generators/grid.d.ts.map +1 -0
  233. package/dist/rules/generators/grid.js +52 -0
  234. package/dist/rules/generators/grid.js.map +1 -0
  235. package/dist/rules/grammar/FirestoreAST.d.ts +129 -0
  236. package/dist/rules/grammar/FirestoreAST.d.ts.map +1 -0
  237. package/dist/rules/grammar/FirestoreAST.js +3 -0
  238. package/dist/rules/grammar/FirestoreAST.js.map +1 -0
  239. package/dist/rules/grammar/FirestoreAssembler.d.ts +5 -0
  240. package/dist/rules/grammar/FirestoreAssembler.d.ts.map +1 -0
  241. package/dist/rules/grammar/FirestoreAssembler.js +158 -0
  242. package/dist/rules/grammar/FirestoreAssembler.js.map +1 -0
  243. package/dist/rules/grammar/FirestoreParser.d.ts +46 -0
  244. package/dist/rules/grammar/FirestoreParser.d.ts.map +1 -0
  245. package/dist/rules/grammar/FirestoreParser.js +409 -0
  246. package/dist/rules/grammar/FirestoreParser.js.map +1 -0
  247. package/dist/rules/grammar/FirestoreRules.ohm +229 -0
  248. package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts +2 -0
  249. package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts.map +1 -0
  250. package/dist/rules/grammar/FirestoreRules.ohm.generated.js +234 -0
  251. package/dist/rules/grammar/FirestoreRules.ohm.generated.js.map +1 -0
  252. package/dist/rules/grammar/FirestoreValidator.d.ts +10 -0
  253. package/dist/rules/grammar/FirestoreValidator.d.ts.map +1 -0
  254. package/dist/rules/grammar/FirestoreValidator.js +482 -0
  255. package/dist/rules/grammar/FirestoreValidator.js.map +1 -0
  256. package/dist/rules/index.d.ts +67 -0
  257. package/dist/rules/index.d.ts.map +1 -0
  258. package/dist/rules/index.js +80 -0
  259. package/dist/rules/index.js.map +1 -0
  260. package/dist/rules/indexes/extract/annotation-collect.d.ts +42 -0
  261. package/dist/rules/indexes/extract/annotation-collect.d.ts.map +1 -0
  262. package/dist/rules/indexes/extract/annotation-collect.js +69 -0
  263. package/dist/rules/indexes/extract/annotation-collect.js.map +1 -0
  264. package/dist/rules/indexes/extract/annotations.d.ts +50 -0
  265. package/dist/rules/indexes/extract/annotations.d.ts.map +1 -0
  266. package/dist/rules/indexes/extract/annotations.js +144 -0
  267. package/dist/rules/indexes/extract/annotations.js.map +1 -0
  268. package/dist/rules/indexes/extract/ast.d.ts +54 -0
  269. package/dist/rules/indexes/extract/ast.d.ts.map +1 -0
  270. package/dist/rules/indexes/extract/ast.js +119 -0
  271. package/dist/rules/indexes/extract/ast.js.map +1 -0
  272. package/dist/rules/indexes/extract/classify.d.ts +41 -0
  273. package/dist/rules/indexes/extract/classify.d.ts.map +1 -0
  274. package/dist/rules/indexes/extract/classify.js +138 -0
  275. package/dist/rules/indexes/extract/classify.js.map +1 -0
  276. package/dist/rules/indexes/extract/composite.d.ts +38 -0
  277. package/dist/rules/indexes/extract/composite.d.ts.map +1 -0
  278. package/dist/rules/indexes/extract/composite.js +85 -0
  279. package/dist/rules/indexes/extract/composite.js.map +1 -0
  280. package/dist/rules/indexes/extract/dataflow.d.ts +45 -0
  281. package/dist/rules/indexes/extract/dataflow.d.ts.map +1 -0
  282. package/dist/rules/indexes/extract/dataflow.js +200 -0
  283. package/dist/rules/indexes/extract/dataflow.js.map +1 -0
  284. package/dist/rules/indexes/extract/enumerate.d.ts +41 -0
  285. package/dist/rules/indexes/extract/enumerate.d.ts.map +1 -0
  286. package/dist/rules/indexes/extract/enumerate.js +163 -0
  287. package/dist/rules/indexes/extract/enumerate.js.map +1 -0
  288. package/dist/rules/indexes/extract/extractor.d.ts +3 -0
  289. package/dist/rules/indexes/extract/extractor.d.ts.map +1 -0
  290. package/dist/rules/indexes/extract/extractor.js +274 -0
  291. package/dist/rules/indexes/extract/extractor.js.map +1 -0
  292. package/dist/rules/indexes/extract/types.d.ts +211 -0
  293. package/dist/rules/indexes/extract/types.d.ts.map +1 -0
  294. package/dist/rules/indexes/extract/types.js +14 -0
  295. package/dist/rules/indexes/extract/types.js.map +1 -0
  296. package/dist/rules/indexes/extractHandler.d.ts +16 -0
  297. package/dist/rules/indexes/extractHandler.d.ts.map +1 -0
  298. package/dist/rules/indexes/extractHandler.js +100 -0
  299. package/dist/rules/indexes/extractHandler.js.map +1 -0
  300. package/dist/rules/indexes/extractTool.d.ts +15 -0
  301. package/dist/rules/indexes/extractTool.d.ts.map +1 -0
  302. package/dist/rules/indexes/extractTool.js +55 -0
  303. package/dist/rules/indexes/extractTool.js.map +1 -0
  304. package/dist/rules/indexes/types.d.ts +71 -0
  305. package/dist/rules/indexes/types.d.ts.map +1 -0
  306. package/dist/rules/indexes/types.js +15 -0
  307. package/dist/rules/indexes/types.js.map +1 -0
  308. package/dist/rules/inspect/handler.d.ts +6 -0
  309. package/dist/rules/inspect/handler.d.ts.map +1 -0
  310. package/dist/rules/inspect/handler.js +144 -0
  311. package/dist/rules/inspect/handler.js.map +1 -0
  312. package/dist/rules/inspect/spec.d.ts +37 -0
  313. package/dist/rules/inspect/spec.d.ts.map +1 -0
  314. package/dist/rules/inspect/spec.js +2 -0
  315. package/dist/rules/inspect/spec.js.map +1 -0
  316. package/dist/rules/inspect/tools.d.ts +21 -0
  317. package/dist/rules/inspect/tools.d.ts.map +1 -0
  318. package/dist/rules/inspect/tools.js +21 -0
  319. package/dist/rules/inspect/tools.js.map +1 -0
  320. package/dist/rules/linter/ast-utils.d.ts +97 -0
  321. package/dist/rules/linter/ast-utils.d.ts.map +1 -0
  322. package/dist/rules/linter/ast-utils.js +491 -0
  323. package/dist/rules/linter/ast-utils.js.map +1 -0
  324. package/dist/rules/linter/hallucinations.d.ts +34 -0
  325. package/dist/rules/linter/hallucinations.d.ts.map +1 -0
  326. package/dist/rules/linter/hallucinations.js +334 -0
  327. package/dist/rules/linter/hallucinations.js.map +1 -0
  328. package/dist/rules/linter/linter.d.ts +84 -0
  329. package/dist/rules/linter/linter.d.ts.map +1 -0
  330. package/dist/rules/linter/linter.js +784 -0
  331. package/dist/rules/linter/linter.js.map +1 -0
  332. package/dist/rules/modules/resolver-browser.d.ts +41 -0
  333. package/dist/rules/modules/resolver-browser.d.ts.map +1 -0
  334. package/dist/rules/modules/resolver-browser.js +63 -0
  335. package/dist/rules/modules/resolver-browser.js.map +1 -0
  336. package/dist/rules/modules/resolver-core.d.ts +51 -0
  337. package/dist/rules/modules/resolver-core.d.ts.map +1 -0
  338. package/dist/rules/modules/resolver-core.js +338 -0
  339. package/dist/rules/modules/resolver-core.js.map +1 -0
  340. package/dist/rules/modules/resolver.d.ts +17 -0
  341. package/dist/rules/modules/resolver.d.ts.map +1 -0
  342. package/dist/rules/modules/resolver.js +49 -0
  343. package/dist/rules/modules/resolver.js.map +1 -0
  344. package/dist/rules/modules/stdlib/atomic.rules +52 -0
  345. package/dist/rules/modules/stdlib/atomic.test.json +152 -0
  346. package/dist/rules/modules/stdlib/auth.rules +7 -0
  347. package/dist/rules/modules/stdlib/auth.test.json +53 -0
  348. package/dist/rules/modules/stdlib/content.rules +50 -0
  349. package/dist/rules/modules/stdlib/content.test.json +238 -0
  350. package/dist/rules/modules/stdlib/counters.rules +41 -0
  351. package/dist/rules/modules/stdlib/counters.test.json +254 -0
  352. package/dist/rules/modules/stdlib/geometry.rules +43 -0
  353. package/dist/rules/modules/stdlib/geometry.test.json +200 -0
  354. package/dist/rules/modules/stdlib/joining.rules +49 -0
  355. package/dist/rules/modules/stdlib/joining.test.json +287 -0
  356. package/dist/rules/modules/stdlib/lifecycle.rules +51 -0
  357. package/dist/rules/modules/stdlib/lifecycle.test.json +288 -0
  358. package/dist/rules/modules/stdlib/lobby.rules +44 -0
  359. package/dist/rules/modules/stdlib/lobby.test.json +32 -0
  360. package/dist/rules/modules/stdlib/membership.rules +40 -0
  361. package/dist/rules/modules/stdlib/membership.test.json +107 -0
  362. package/dist/rules/modules/stdlib/spaces.rules +46 -0
  363. package/dist/rules/modules/stdlib/spaces.test.json +392 -0
  364. package/dist/rules/modules/stdlib/state.rules +28 -0
  365. package/dist/rules/modules/stdlib/state.test.json +55 -0
  366. package/dist/rules/modules/stdlib/timing.rules +20 -0
  367. package/dist/rules/modules/stdlib/timing.test.json +106 -0
  368. package/dist/rules/modules/stdlib/transitions.rules +34 -0
  369. package/dist/rules/modules/stdlib/transitions.test.json +86 -0
  370. package/dist/rules/modules/stdlib/turns.rules +27 -0
  371. package/dist/rules/modules/stdlib/turns.test.json +64 -0
  372. package/dist/rules/modules/stdlib/validation.rules +31 -0
  373. package/dist/rules/modules/stdlib/validation.test.json +184 -0
  374. package/dist/rules/modules/stdlib-content.d.ts +11 -0
  375. package/dist/rules/modules/stdlib-content.d.ts.map +1 -0
  376. package/dist/rules/modules/stdlib-content.js +590 -0
  377. package/dist/rules/modules/stdlib-content.js.map +1 -0
  378. package/dist/rules/node.d.ts +17 -0
  379. package/dist/rules/node.d.ts.map +1 -0
  380. package/dist/rules/node.js +21 -0
  381. package/dist/rules/node.js.map +1 -0
  382. package/dist/rules/rtdb.d.ts +28 -0
  383. package/dist/rules/rtdb.d.ts.map +1 -0
  384. package/dist/rules/rtdb.js +15 -0
  385. package/dist/rules/rtdb.js.map +1 -0
  386. package/dist/rules/simulator/evaluator.d.ts +179 -0
  387. package/dist/rules/simulator/evaluator.d.ts.map +1 -0
  388. package/dist/rules/simulator/evaluator.js +1221 -0
  389. package/dist/rules/simulator/evaluator.js.map +1 -0
  390. package/dist/rules/simulator/expression/eval-errors.d.ts +86 -0
  391. package/dist/rules/simulator/expression/eval-errors.d.ts.map +1 -0
  392. package/dist/rules/simulator/expression/eval-errors.js +68 -0
  393. package/dist/rules/simulator/expression/eval-errors.js.map +1 -0
  394. package/dist/rules/simulator/expression/evaluator.d.ts +43 -0
  395. package/dist/rules/simulator/expression/evaluator.d.ts.map +1 -0
  396. package/dist/rules/simulator/expression/evaluator.js +298 -0
  397. package/dist/rules/simulator/expression/evaluator.js.map +1 -0
  398. package/dist/rules/simulator/expression/lexer.d.ts +36 -0
  399. package/dist/rules/simulator/expression/lexer.d.ts.map +1 -0
  400. package/dist/rules/simulator/expression/lexer.js +318 -0
  401. package/dist/rules/simulator/expression/lexer.js.map +1 -0
  402. package/dist/rules/simulator/expression/parser.d.ts +39 -0
  403. package/dist/rules/simulator/expression/parser.d.ts.map +1 -0
  404. package/dist/rules/simulator/expression/parser.js +329 -0
  405. package/dist/rules/simulator/expression/parser.js.map +1 -0
  406. package/dist/rules/simulator/expression/types.d.ts +137 -0
  407. package/dist/rules/simulator/expression/types.d.ts.map +1 -0
  408. package/dist/rules/simulator/expression/types.js +90 -0
  409. package/dist/rules/simulator/expression/types.js.map +1 -0
  410. package/dist/rules/simulator/expression/walk-data.d.ts +52 -0
  411. package/dist/rules/simulator/expression/walk-data.d.ts.map +1 -0
  412. package/dist/rules/simulator/expression/walk-data.js +167 -0
  413. package/dist/rules/simulator/expression/walk-data.js.map +1 -0
  414. package/dist/rules/simulator/firestore-set.d.ts +25 -0
  415. package/dist/rules/simulator/firestore-set.d.ts.map +1 -0
  416. package/dist/rules/simulator/firestore-set.js +89 -0
  417. package/dist/rules/simulator/firestore-set.js.map +1 -0
  418. package/dist/rules/simulator/handler.d.ts +36 -0
  419. package/dist/rules/simulator/handler.d.ts.map +1 -0
  420. package/dist/rules/simulator/handler.js +583 -0
  421. package/dist/rules/simulator/handler.js.map +1 -0
  422. package/dist/rules/simulator/mapdiff.d.ts +29 -0
  423. package/dist/rules/simulator/mapdiff.d.ts.map +1 -0
  424. package/dist/rules/simulator/mapdiff.js +72 -0
  425. package/dist/rules/simulator/mapdiff.js.map +1 -0
  426. package/dist/rules/simulator/project-after-state.d.ts +33 -0
  427. package/dist/rules/simulator/project-after-state.d.ts.map +1 -0
  428. package/dist/rules/simulator/project-after-state.js +88 -0
  429. package/dist/rules/simulator/project-after-state.js.map +1 -0
  430. package/dist/rules/simulator/query-proof.d.ts +80 -0
  431. package/dist/rules/simulator/query-proof.d.ts.map +1 -0
  432. package/dist/rules/simulator/query-proof.js +142 -0
  433. package/dist/rules/simulator/query-proof.js.map +1 -0
  434. package/dist/rules/simulator/value-equality.d.ts +8 -0
  435. package/dist/rules/simulator/value-equality.d.ts.map +1 -0
  436. package/dist/rules/simulator/value-equality.js +40 -0
  437. package/dist/rules/simulator/value-equality.js.map +1 -0
  438. package/dist/rules/simulator/wrappers/base.d.ts +129 -0
  439. package/dist/rules/simulator/wrappers/base.d.ts.map +1 -0
  440. package/dist/rules/simulator/wrappers/base.js +90 -0
  441. package/dist/rules/simulator/wrappers/base.js.map +1 -0
  442. package/dist/rules/simulator/wrappers/bytes.d.ts +45 -0
  443. package/dist/rules/simulator/wrappers/bytes.d.ts.map +1 -0
  444. package/dist/rules/simulator/wrappers/bytes.js +130 -0
  445. package/dist/rules/simulator/wrappers/bytes.js.map +1 -0
  446. package/dist/rules/simulator/wrappers/duration.d.ts +76 -0
  447. package/dist/rules/simulator/wrappers/duration.d.ts.map +1 -0
  448. package/dist/rules/simulator/wrappers/duration.js +176 -0
  449. package/dist/rules/simulator/wrappers/duration.js.map +1 -0
  450. package/dist/rules/simulator/wrappers/float.d.ts +52 -0
  451. package/dist/rules/simulator/wrappers/float.d.ts.map +1 -0
  452. package/dist/rules/simulator/wrappers/float.js +88 -0
  453. package/dist/rules/simulator/wrappers/float.js.map +1 -0
  454. package/dist/rules/simulator/wrappers/latlng.d.ts +40 -0
  455. package/dist/rules/simulator/wrappers/latlng.d.ts.map +1 -0
  456. package/dist/rules/simulator/wrappers/latlng.js +100 -0
  457. package/dist/rules/simulator/wrappers/latlng.js.map +1 -0
  458. package/dist/rules/simulator/wrappers/path.d.ts +75 -0
  459. package/dist/rules/simulator/wrappers/path.d.ts.map +1 -0
  460. package/dist/rules/simulator/wrappers/path.js +158 -0
  461. package/dist/rules/simulator/wrappers/path.js.map +1 -0
  462. package/dist/rules/simulator/wrappers/reference.d.ts +82 -0
  463. package/dist/rules/simulator/wrappers/reference.d.ts.map +1 -0
  464. package/dist/rules/simulator/wrappers/reference.js +145 -0
  465. package/dist/rules/simulator/wrappers/reference.js.map +1 -0
  466. package/dist/rules/simulator/wrappers/timestamp.d.ts +86 -0
  467. package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -0
  468. package/dist/rules/simulator/wrappers/timestamp.js +207 -0
  469. package/dist/rules/simulator/wrappers/timestamp.js.map +1 -0
  470. package/dist/rules/simulator/wrappers/vector.d.ts +43 -0
  471. package/dist/rules/simulator/wrappers/vector.d.ts.map +1 -0
  472. package/dist/rules/simulator/wrappers/vector.js +80 -0
  473. package/dist/rules/simulator/wrappers/vector.js.map +1 -0
  474. package/dist/rules/simulator-tools-impl.d.ts +64 -0
  475. package/dist/rules/simulator-tools-impl.d.ts.map +1 -0
  476. package/dist/rules/simulator-tools-impl.js +462 -0
  477. package/dist/rules/simulator-tools-impl.js.map +1 -0
  478. package/dist/rules/simulator.d.ts +20 -0
  479. package/dist/rules/simulator.d.ts.map +1 -0
  480. package/dist/rules/simulator.js +24 -0
  481. package/dist/rules/simulator.js.map +1 -0
  482. package/dist/rules/stdlib-modules.d.ts +73 -0
  483. package/dist/rules/stdlib-modules.d.ts.map +1 -0
  484. package/dist/rules/stdlib-modules.js +849 -0
  485. package/dist/rules/stdlib-modules.js.map +1 -0
  486. package/dist/rules/stdlib-tools.d.ts +19 -0
  487. package/dist/rules/stdlib-tools.d.ts.map +1 -0
  488. package/dist/rules/stdlib-tools.js +164 -0
  489. package/dist/rules/stdlib-tools.js.map +1 -0
  490. package/dist/rules/test/handler.d.ts +9 -0
  491. package/dist/rules/test/handler.d.ts.map +1 -0
  492. package/dist/rules/test/handler.js +124 -0
  493. package/dist/rules/test/handler.js.map +1 -0
  494. package/dist/rules/test/spec.d.ts +517 -0
  495. package/dist/rules/test/spec.d.ts.map +1 -0
  496. package/dist/rules/test/spec.js +227 -0
  497. package/dist/rules/test/spec.js.map +1 -0
  498. package/dist/rules/tools.d.ts +41 -0
  499. package/dist/rules/tools.d.ts.map +1 -0
  500. package/dist/rules/tools.js +124 -0
  501. package/dist/rules/tools.js.map +1 -0
  502. package/dist/rules/write/handler.d.ts +6 -0
  503. package/dist/rules/write/handler.d.ts.map +1 -0
  504. package/dist/rules/write/handler.js +126 -0
  505. package/dist/rules/write/handler.js.map +1 -0
  506. package/dist/rules/write/spec.d.ts +28 -0
  507. package/dist/rules/write/spec.d.ts.map +1 -0
  508. package/dist/rules/write/spec.js +2 -0
  509. package/dist/rules/write/spec.js.map +1 -0
  510. package/dist/sandbox/admin-compat.d.ts +20 -0
  511. package/dist/sandbox/admin-compat.d.ts.map +1 -0
  512. package/dist/sandbox/admin-compat.js +19 -0
  513. package/dist/sandbox/admin-compat.js.map +1 -0
  514. package/dist/sandbox/admin-firestore/error-translation.d.ts +86 -0
  515. package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -0
  516. package/dist/sandbox/admin-firestore/error-translation.js +204 -0
  517. package/dist/sandbox/admin-firestore/error-translation.js.map +1 -0
  518. package/dist/sandbox/admin-firestore/index.d.ts +169 -0
  519. package/dist/sandbox/admin-firestore/index.d.ts.map +1 -0
  520. package/dist/sandbox/admin-firestore/index.js +456 -0
  521. package/dist/sandbox/admin-firestore/index.js.map +1 -0
  522. package/dist/sandbox/admin-firestore/remote.d.ts +97 -0
  523. package/dist/sandbox/admin-firestore/remote.d.ts.map +1 -0
  524. package/dist/sandbox/admin-firestore/remote.js +735 -0
  525. package/dist/sandbox/admin-firestore/remote.js.map +1 -0
  526. package/dist/sandbox/branches/index.d.ts +141 -0
  527. package/dist/sandbox/branches/index.d.ts.map +1 -0
  528. package/dist/sandbox/branches/index.js +327 -0
  529. package/dist/sandbox/branches/index.js.map +1 -0
  530. package/dist/sandbox/firestore/admin-compat/batch.d.ts +34 -0
  531. package/dist/sandbox/firestore/admin-compat/batch.d.ts.map +1 -0
  532. package/dist/sandbox/firestore/admin-compat/batch.js +73 -0
  533. package/dist/sandbox/firestore/admin-compat/batch.js.map +1 -0
  534. package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts +38 -0
  535. package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts.map +1 -0
  536. package/dist/sandbox/firestore/admin-compat/doc-ref.js +154 -0
  537. package/dist/sandbox/firestore/admin-compat/doc-ref.js.map +1 -0
  538. package/dist/sandbox/firestore/admin-compat/firestore.d.ts +45 -0
  539. package/dist/sandbox/firestore/admin-compat/firestore.d.ts.map +1 -0
  540. package/dist/sandbox/firestore/admin-compat/firestore.js +114 -0
  541. package/dist/sandbox/firestore/admin-compat/firestore.js.map +1 -0
  542. package/dist/sandbox/firestore/admin-compat/index.d.ts +45 -0
  543. package/dist/sandbox/firestore/admin-compat/index.d.ts.map +1 -0
  544. package/dist/sandbox/firestore/admin-compat/index.js +27 -0
  545. package/dist/sandbox/firestore/admin-compat/index.js.map +1 -0
  546. package/dist/sandbox/firestore/admin-compat/paths.d.ts +37 -0
  547. package/dist/sandbox/firestore/admin-compat/paths.d.ts.map +1 -0
  548. package/dist/sandbox/firestore/admin-compat/paths.js +49 -0
  549. package/dist/sandbox/firestore/admin-compat/paths.js.map +1 -0
  550. package/dist/sandbox/firestore/admin-compat/query.d.ts +261 -0
  551. package/dist/sandbox/firestore/admin-compat/query.d.ts.map +1 -0
  552. package/dist/sandbox/firestore/admin-compat/query.js +704 -0
  553. package/dist/sandbox/firestore/admin-compat/query.js.map +1 -0
  554. package/dist/sandbox/firestore/admin-compat/read-translation.d.ts +8 -0
  555. package/dist/sandbox/firestore/admin-compat/read-translation.d.ts.map +1 -0
  556. package/dist/sandbox/firestore/admin-compat/read-translation.js +59 -0
  557. package/dist/sandbox/firestore/admin-compat/read-translation.js.map +1 -0
  558. package/dist/sandbox/firestore/admin-compat/snapshots.d.ts +39 -0
  559. package/dist/sandbox/firestore/admin-compat/snapshots.d.ts.map +1 -0
  560. package/dist/sandbox/firestore/admin-compat/snapshots.js +50 -0
  561. package/dist/sandbox/firestore/admin-compat/snapshots.js.map +1 -0
  562. package/dist/sandbox/firestore/admin-compat/transaction.d.ts +35 -0
  563. package/dist/sandbox/firestore/admin-compat/transaction.d.ts.map +1 -0
  564. package/dist/sandbox/firestore/admin-compat/transaction.js +88 -0
  565. package/dist/sandbox/firestore/admin-compat/transaction.js.map +1 -0
  566. package/dist/sandbox/firestore/admin-compat/types.d.ts +297 -0
  567. package/dist/sandbox/firestore/admin-compat/types.d.ts.map +1 -0
  568. package/dist/sandbox/firestore/admin-compat/types.js +127 -0
  569. package/dist/sandbox/firestore/admin-compat/types.js.map +1 -0
  570. package/dist/sandbox/firestore/admin-compat/value-order.d.ts +49 -0
  571. package/dist/sandbox/firestore/admin-compat/value-order.d.ts.map +1 -0
  572. package/dist/sandbox/firestore/admin-compat/value-order.js +172 -0
  573. package/dist/sandbox/firestore/admin-compat/value-order.js.map +1 -0
  574. package/dist/sandbox/firestore/auto-id.d.ts +26 -0
  575. package/dist/sandbox/firestore/auto-id.d.ts.map +1 -0
  576. package/dist/sandbox/firestore/auto-id.js +36 -0
  577. package/dist/sandbox/firestore/auto-id.js.map +1 -0
  578. package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts +48 -0
  579. package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts.map +1 -0
  580. package/dist/sandbox/firestore/converters/bytes-geopoint.js +85 -0
  581. package/dist/sandbox/firestore/converters/bytes-geopoint.js.map +1 -0
  582. package/dist/sandbox/firestore/converters/fieldvalue.d.ts +69 -0
  583. package/dist/sandbox/firestore/converters/fieldvalue.d.ts.map +1 -0
  584. package/dist/sandbox/firestore/converters/fieldvalue.js +166 -0
  585. package/dist/sandbox/firestore/converters/fieldvalue.js.map +1 -0
  586. package/dist/sandbox/firestore/converters/reference.d.ts +31 -0
  587. package/dist/sandbox/firestore/converters/reference.d.ts.map +1 -0
  588. package/dist/sandbox/firestore/converters/reference.js +51 -0
  589. package/dist/sandbox/firestore/converters/reference.js.map +1 -0
  590. package/dist/sandbox/firestore/converters/timestamp.d.ts +32 -0
  591. package/dist/sandbox/firestore/converters/timestamp.d.ts.map +1 -0
  592. package/dist/sandbox/firestore/converters/timestamp.js +63 -0
  593. package/dist/sandbox/firestore/converters/timestamp.js.map +1 -0
  594. package/dist/sandbox/firestore/converters/user-timestamp.d.ts +46 -0
  595. package/dist/sandbox/firestore/converters/user-timestamp.d.ts.map +1 -0
  596. package/dist/sandbox/firestore/converters/user-timestamp.js +65 -0
  597. package/dist/sandbox/firestore/converters/user-timestamp.js.map +1 -0
  598. package/dist/sandbox/firestore/converters/vector.d.ts +24 -0
  599. package/dist/sandbox/firestore/converters/vector.d.ts.map +1 -0
  600. package/dist/sandbox/firestore/converters/vector.js +53 -0
  601. package/dist/sandbox/firestore/converters/vector.js.map +1 -0
  602. package/dist/sandbox/firestore/errors.d.ts +82 -0
  603. package/dist/sandbox/firestore/errors.d.ts.map +1 -0
  604. package/dist/sandbox/firestore/errors.js +54 -0
  605. package/dist/sandbox/firestore/errors.js.map +1 -0
  606. package/dist/sandbox/firestore/event-log.d.ts +99 -0
  607. package/dist/sandbox/firestore/event-log.d.ts.map +1 -0
  608. package/dist/sandbox/firestore/event-log.js +67 -0
  609. package/dist/sandbox/firestore/event-log.js.map +1 -0
  610. package/dist/sandbox/firestore/field-merge.d.ts +64 -0
  611. package/dist/sandbox/firestore/field-merge.d.ts.map +1 -0
  612. package/dist/sandbox/firestore/field-merge.js +221 -0
  613. package/dist/sandbox/firestore/field-merge.js.map +1 -0
  614. package/dist/sandbox/firestore/list-query-proof.d.ts +77 -0
  615. package/dist/sandbox/firestore/list-query-proof.d.ts.map +1 -0
  616. package/dist/sandbox/firestore/list-query-proof.js +170 -0
  617. package/dist/sandbox/firestore/list-query-proof.js.map +1 -0
  618. package/dist/sandbox/firestore/local-environment.d.ts +806 -0
  619. package/dist/sandbox/firestore/local-environment.d.ts.map +1 -0
  620. package/dist/sandbox/firestore/local-environment.js +3028 -0
  621. package/dist/sandbox/firestore/local-environment.js.map +1 -0
  622. package/dist/sandbox/firestore/local-state.d.ts +196 -0
  623. package/dist/sandbox/firestore/local-state.d.ts.map +1 -0
  624. package/dist/sandbox/firestore/local-state.js +413 -0
  625. package/dist/sandbox/firestore/local-state.js.map +1 -0
  626. package/dist/sandbox/firestore/overlay-backing.d.ts +44 -0
  627. package/dist/sandbox/firestore/overlay-backing.d.ts.map +1 -0
  628. package/dist/sandbox/firestore/overlay-backing.js +82 -0
  629. package/dist/sandbox/firestore/overlay-backing.js.map +1 -0
  630. package/dist/sandbox/firestore/sentinel-capture.d.ts +30 -0
  631. package/dist/sandbox/firestore/sentinel-capture.d.ts.map +1 -0
  632. package/dist/sandbox/firestore/sentinel-capture.js +61 -0
  633. package/dist/sandbox/firestore/sentinel-capture.js.map +1 -0
  634. package/dist/sandbox/firestore/snapshot-listeners.d.ts +284 -0
  635. package/dist/sandbox/firestore/snapshot-listeners.d.ts.map +1 -0
  636. package/dist/sandbox/firestore/snapshot-listeners.js +194 -0
  637. package/dist/sandbox/firestore/snapshot-listeners.js.map +1 -0
  638. package/dist/sandbox/firestore/topk.d.ts +12 -0
  639. package/dist/sandbox/firestore/topk.d.ts.map +1 -0
  640. package/dist/sandbox/firestore/topk.js +42 -0
  641. package/dist/sandbox/firestore/topk.js.map +1 -0
  642. package/dist/sandbox/firestore/transaction-merge.d.ts +55 -0
  643. package/dist/sandbox/firestore/transaction-merge.d.ts.map +1 -0
  644. package/dist/sandbox/firestore/transaction-merge.js +107 -0
  645. package/dist/sandbox/firestore/transaction-merge.js.map +1 -0
  646. package/dist/sandbox/firestore/transaction-types.d.ts +152 -0
  647. package/dist/sandbox/firestore/transaction-types.d.ts.map +1 -0
  648. package/dist/sandbox/firestore/transaction-types.js +10 -0
  649. package/dist/sandbox/firestore/transaction-types.js.map +1 -0
  650. package/dist/sandbox/firestore/transaction.d.ts +79 -0
  651. package/dist/sandbox/firestore/transaction.d.ts.map +1 -0
  652. package/dist/sandbox/firestore/transaction.js +95 -0
  653. package/dist/sandbox/firestore/transaction.js.map +1 -0
  654. package/dist/sandbox/firestore/value-equality.d.ts +2 -0
  655. package/dist/sandbox/firestore/value-equality.d.ts.map +1 -0
  656. package/dist/sandbox/firestore/value-equality.js +35 -0
  657. package/dist/sandbox/firestore/value-equality.js.map +1 -0
  658. package/dist/sandbox/firestore/value-resolver.d.ts +172 -0
  659. package/dist/sandbox/firestore/value-resolver.d.ts.map +1 -0
  660. package/dist/sandbox/firestore/value-resolver.js +221 -0
  661. package/dist/sandbox/firestore/value-resolver.js.map +1 -0
  662. package/dist/sandbox/firestore/wire-encoder.d.ts +14 -0
  663. package/dist/sandbox/firestore/wire-encoder.d.ts.map +1 -0
  664. package/dist/sandbox/firestore/wire-encoder.js +130 -0
  665. package/dist/sandbox/firestore/wire-encoder.js.map +1 -0
  666. package/dist/sandbox/index.d.ts +50 -0
  667. package/dist/sandbox/index.d.ts.map +1 -0
  668. package/dist/sandbox/index.js +63 -0
  669. package/dist/sandbox/index.js.map +1 -0
  670. package/dist/sandbox/internal/index.d.ts +36 -0
  671. package/dist/sandbox/internal/index.d.ts.map +1 -0
  672. package/dist/sandbox/internal/index.js +72 -0
  673. package/dist/sandbox/internal/index.js.map +1 -0
  674. package/dist/sandbox/internal/sandbox-impl.d.ts +343 -0
  675. package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -0
  676. package/dist/sandbox/internal/sandbox-impl.js +718 -0
  677. package/dist/sandbox/internal/sandbox-impl.js.map +1 -0
  678. package/dist/sandbox/persistence/backends.d.ts +37 -0
  679. package/dist/sandbox/persistence/backends.d.ts.map +1 -0
  680. package/dist/sandbox/persistence/backends.js +202 -0
  681. package/dist/sandbox/persistence/backends.js.map +1 -0
  682. package/dist/sandbox/persistence/chunk-format.d.ts +58 -0
  683. package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -0
  684. package/dist/sandbox/persistence/chunk-format.js +163 -0
  685. package/dist/sandbox/persistence/chunk-format.js.map +1 -0
  686. package/dist/sandbox/persistence/controller.d.ts +39 -0
  687. package/dist/sandbox/persistence/controller.d.ts.map +1 -0
  688. package/dist/sandbox/persistence/controller.js +605 -0
  689. package/dist/sandbox/persistence/controller.js.map +1 -0
  690. package/dist/sandbox/persistence/index.d.ts +13 -0
  691. package/dist/sandbox/persistence/index.d.ts.map +1 -0
  692. package/dist/sandbox/persistence/index.js +5 -0
  693. package/dist/sandbox/persistence/index.js.map +1 -0
  694. package/dist/sandbox/persistence/serialize.d.ts +53 -0
  695. package/dist/sandbox/persistence/serialize.d.ts.map +1 -0
  696. package/dist/sandbox/persistence/serialize.js +98 -0
  697. package/dist/sandbox/persistence/serialize.js.map +1 -0
  698. package/dist/sandbox/persistence/types.d.ts +118 -0
  699. package/dist/sandbox/persistence/types.d.ts.map +1 -0
  700. package/dist/sandbox/persistence/types.js +15 -0
  701. package/dist/sandbox/persistence/types.js.map +1 -0
  702. package/dist/sandbox/remote.d.ts +118 -0
  703. package/dist/sandbox/remote.d.ts.map +1 -0
  704. package/dist/sandbox/remote.js +60 -0
  705. package/dist/sandbox/remote.js.map +1 -0
  706. package/dist/sandbox/replay/index.d.ts +106 -0
  707. package/dist/sandbox/replay/index.d.ts.map +1 -0
  708. package/dist/sandbox/replay/index.js +246 -0
  709. package/dist/sandbox/replay/index.js.map +1 -0
  710. package/dist/sandbox/sandbox-context.d.ts +40 -0
  711. package/dist/sandbox/sandbox-context.d.ts.map +1 -0
  712. package/dist/sandbox/sandbox-context.js +72 -0
  713. package/dist/sandbox/sandbox-context.js.map +1 -0
  714. package/dist/sandbox/tab-sync/index.d.ts +120 -0
  715. package/dist/sandbox/tab-sync/index.d.ts.map +1 -0
  716. package/dist/sandbox/tab-sync/index.js +272 -0
  717. package/dist/sandbox/tab-sync/index.js.map +1 -0
  718. package/dist/sandbox/types.d.ts +1235 -0
  719. package/dist/sandbox/types.d.ts.map +1 -0
  720. package/dist/sandbox/types.js +46 -0
  721. package/dist/sandbox/types.js.map +1 -0
  722. package/dist/storage/admin/api.d.ts +206 -0
  723. package/dist/storage/admin/api.d.ts.map +1 -0
  724. package/dist/storage/admin/api.js +349 -0
  725. package/dist/storage/admin/api.js.map +1 -0
  726. package/dist/storage/admin/handler.d.ts +29 -0
  727. package/dist/storage/admin/handler.d.ts.map +1 -0
  728. package/dist/storage/admin/handler.js +82 -0
  729. package/dist/storage/admin/handler.js.map +1 -0
  730. package/dist/storage/admin/spec.d.ts +64 -0
  731. package/dist/storage/admin/spec.d.ts.map +1 -0
  732. package/dist/storage/admin/spec.js +8 -0
  733. package/dist/storage/admin/spec.js.map +1 -0
  734. package/dist/storage/admin/tools.d.ts +23 -0
  735. package/dist/storage/admin/tools.d.ts.map +1 -0
  736. package/dist/storage/admin/tools.js +90 -0
  737. package/dist/storage/admin/tools.js.map +1 -0
  738. package/dist/storage/download.d.ts +27 -0
  739. package/dist/storage/download.d.ts.map +1 -0
  740. package/dist/storage/download.js +136 -0
  741. package/dist/storage/download.js.map +1 -0
  742. package/dist/storage/enforce.d.ts +26 -0
  743. package/dist/storage/enforce.d.ts.map +1 -0
  744. package/dist/storage/enforce.js +16 -0
  745. package/dist/storage/enforce.js.map +1 -0
  746. package/dist/storage/errors.d.ts +46 -0
  747. package/dist/storage/errors.d.ts.map +1 -0
  748. package/dist/storage/errors.js +62 -0
  749. package/dist/storage/errors.js.map +1 -0
  750. package/dist/storage/index.d.ts +49 -0
  751. package/dist/storage/index.d.ts.map +1 -0
  752. package/dist/storage/index.js +60 -0
  753. package/dist/storage/index.js.map +1 -0
  754. package/dist/storage/internal.d.ts +18 -0
  755. package/dist/storage/internal.d.ts.map +1 -0
  756. package/dist/storage/internal.js +18 -0
  757. package/dist/storage/internal.js.map +1 -0
  758. package/dist/storage/list.d.ts +17 -0
  759. package/dist/storage/list.d.ts.map +1 -0
  760. package/dist/storage/list.js +91 -0
  761. package/dist/storage/list.js.map +1 -0
  762. package/dist/storage/metadata.d.ts +86 -0
  763. package/dist/storage/metadata.d.ts.map +1 -0
  764. package/dist/storage/metadata.js +167 -0
  765. package/dist/storage/metadata.js.map +1 -0
  766. package/dist/storage/persistence.d.ts +134 -0
  767. package/dist/storage/persistence.d.ts.map +1 -0
  768. package/dist/storage/persistence.js +132 -0
  769. package/dist/storage/persistence.js.map +1 -0
  770. package/dist/storage/reference.d.ts +63 -0
  771. package/dist/storage/reference.d.ts.map +1 -0
  772. package/dist/storage/reference.js +156 -0
  773. package/dist/storage/reference.js.map +1 -0
  774. package/dist/storage/rules.d.ts +176 -0
  775. package/dist/storage/rules.d.ts.map +1 -0
  776. package/dist/storage/rules.js +621 -0
  777. package/dist/storage/rules.js.map +1 -0
  778. package/dist/storage/service.d.ts +139 -0
  779. package/dist/storage/service.d.ts.map +1 -0
  780. package/dist/storage/service.js +241 -0
  781. package/dist/storage/service.js.map +1 -0
  782. package/dist/storage/upload.d.ts +43 -0
  783. package/dist/storage/upload.d.ts.map +1 -0
  784. package/dist/storage/upload.js +235 -0
  785. package/dist/storage/upload.js.map +1 -0
  786. package/package.json +109 -3
@@ -0,0 +1,604 @@
1
+ /**
2
+ * `@pyric/rtdb` modular SDK surface — Phase 3 implementation.
3
+ *
4
+ * Mirrors `firebase/database`'s tree-shakable free-function shape:
5
+ * `getDatabase`, `ref`, `child`, `get`, `set`, `update`, `remove`,
6
+ * `push`, `onValue`, `serverTimestamp`, `connectDatabaseEmulator`.
7
+ *
8
+ * Three backends picked by what's passed to `getDatabase`:
9
+ *
10
+ * - **Sandbox target** — wraps `RtdbBackend` (in-memory JSON tree
11
+ * plus the existing `@pyric/rtdb` rule simulator). Identity is the
12
+ * `SandboxContext`'s frozen `auth`.
13
+ * - **Sandbox-live target** — same backend, but identity is read
14
+ * per-op from `sandbox.currentUser` so a `pyric/auth`-driven
15
+ * sign-in flips the next op's `request.auth` without re-binding.
16
+ * - **Prod target** — wraps `firebase/database` against a real
17
+ * Firebase project.
18
+ *
19
+ * Dispatch machinery mirrors `pyric/firestore`:
20
+ * - {@link TARGET_SYMBOL} brand on every {@link Database} handle.
21
+ * - {@link refToTarget} WeakMap from refs to their owning target so
22
+ * chained calls (`child(ref, 'sub')`, `get(ref)`) recover routing.
23
+ *
24
+ * Every public function has a `target.kind` switch with explicit
25
+ * branches — structure is parallel and grep-friendly.
26
+ *
27
+ * **Critical contract — error shape (locked by oracle observation
28
+ * `scripts/oracle/observations/rtdb-rules-denied-error-code.json`):**
29
+ *
30
+ * - Throws a **plain `Error`** (NOT a `FirebaseError`).
31
+ * - `.code === 'PERMISSION_DENIED'` (uppercase snake-case — distinct
32
+ * from Firestore's `'permission-denied'`).
33
+ * - `.message === 'PERMISSION_DENIED: Permission denied'`.
34
+ *
35
+ * The sandbox backend matches this shape exactly. Tests assert against
36
+ * `.constructor.name === 'Error'` to catch any future "improvement" to
37
+ * a custom subclass.
38
+ */
39
+ import type { FirebaseApp } from 'firebase/app';
40
+ import * as fb from 'firebase/database';
41
+ import type { AuthState, Sandbox, SandboxContext } from 'pyric/sandbox';
42
+ import { type PyricApp } from 'pyric/app';
43
+ import { RtdbBackend } from './sandbox/backend.js';
44
+ import { type ServerTimestampSentinel, type IncrementSentinel } from './sandbox/sentinels.js';
45
+ import { type JsonValue } from './sandbox/data-tree.js';
46
+ import { type Constraint, type QuerySpec } from './sandbox/query.js';
47
+ /** Hidden brand on every {@link Database} handle. */
48
+ export declare const TARGET_SYMBOL: unique symbol;
49
+ type SandboxTarget = {
50
+ kind: 'sandbox';
51
+ backend: RtdbBackend;
52
+ auth: AuthState;
53
+ admin?: boolean;
54
+ };
55
+ type SandboxLiveTarget = {
56
+ kind: 'sandbox-live';
57
+ backend: RtdbBackend;
58
+ sandbox: Sandbox;
59
+ admin?: boolean;
60
+ };
61
+ type ProdTarget = {
62
+ kind: 'prod';
63
+ db: fb.Database;
64
+ };
65
+ type Target = SandboxTarget | SandboxLiveTarget | ProdTarget;
66
+ /** Opaque RTDB handle. Routes via {@link TARGET_SYMBOL}. */
67
+ export interface Database {
68
+ readonly [TARGET_SYMBOL]: Target;
69
+ }
70
+ /**
71
+ * RTDB-shaped reference. Backend-opaque to consumers; mirrors
72
+ * `firebase/database`'s `DatabaseReference` for the subset of methods
73
+ * the modular SDK uses idiomatically as plain free-function args.
74
+ *
75
+ * `key` is the last path segment (matches `DatabaseReference.key`).
76
+ * `null` for the root ref. `parent` is the ref one segment up
77
+ * (`null` at root). `root` is always the root ref.
78
+ *
79
+ * `toString()` returns the absolute URL — for sandbox refs we
80
+ * stub a `sandbox://` URL; for prod refs `firebase/database`
81
+ * provides the real URL.
82
+ */
83
+ export interface DatabaseReference {
84
+ readonly key: string | null;
85
+ readonly parent: DatabaseReference | null;
86
+ readonly root: DatabaseReference;
87
+ toString(): string;
88
+ /** Internal — the canonical path (`'/users/alice'`). */
89
+ readonly _path: string;
90
+ }
91
+ /**
92
+ * Lightweight `DataSnapshot` — matches the subset of
93
+ * `firebase/database`'s `DataSnapshot` we surface synchronously on a
94
+ * `get()`. Methods are the load-bearing ones (`val`, `exists`, `key`,
95
+ * `child`) plus a few utilities consumer code routinely reads.
96
+ */
97
+ export interface DataSnapshot {
98
+ readonly key: string | null;
99
+ /**
100
+ * Number of child properties of this snapshot. A getter (NOT a
101
+ * `numChildren()` method — that was the legacy namespaced API). Locked
102
+ * by oracle `rtdb-modular-get-snapshot-shape.json`
103
+ * (`hasSize: true, hasNumChildren: false`) + upstream
104
+ * `api/Reference_impl.ts:331-333`.
105
+ */
106
+ readonly size: number;
107
+ /**
108
+ * The node's priority, or `null`. The sandbox does not model RTDB's
109
+ * priority (deny-listed — see COMPAT) so this is always `null`, matching
110
+ * the common case (no `.priority` set). Mirrors `api/Reference_impl.ts:312`.
111
+ */
112
+ readonly priority: string | number | null;
113
+ exists(): boolean;
114
+ val(): JsonValue;
115
+ child(path: string): DataSnapshot;
116
+ hasChild(path: string): boolean;
117
+ hasChildren(): boolean;
118
+ /**
119
+ * Like `val()` but includes priority info (for backups). With no
120
+ * priority modeled, this equals `val()`. Mirrors
121
+ * `api/Reference_impl.ts:374-376`.
122
+ */
123
+ exportVal(): JsonValue;
124
+ toJSON(): JsonValue;
125
+ /**
126
+ * Iterate the snapshot's immediate children. The callback is invoked
127
+ * with a child `DataSnapshot` for each child; return `true` to stop
128
+ * iteration early (matches the `firebase/database` contract).
129
+ *
130
+ * For a snapshot built from a {@link Query}, children are visited in
131
+ * the order the query's `orderBy*` constraint computed — the windowed
132
+ * + filtered + limited sequence. For a plain ref snapshot, children
133
+ * are visited in key-insertion order (V8 object iteration order; the
134
+ * RTDB SDK does NOT guarantee an order on plain refs either).
135
+ */
136
+ forEach(cb: (child: DataSnapshot) => boolean | void): boolean;
137
+ /** The ref the snap was taken from. */
138
+ readonly ref: DatabaseReference;
139
+ }
140
+ /**
141
+ * The return type of {@link push} — a regular {@link DatabaseReference}
142
+ * with `.then` / `.catch` attached so it can be `await`ed. Mirrors
143
+ * `firebase/database`'s `ThenableReference` (`api/Reference_impl.ts:569`).
144
+ *
145
+ * Critical (DB-B7): the ref + its `.key` are available SYNCHRONOUSLY —
146
+ * the key is minted client-side. The promise covers only the optional
147
+ * value write; a rules-denied write rejects the promise (it does NOT
148
+ * throw synchronously and lose the key). Oracle:
149
+ * `rtdb-push-autoid-format.json`.
150
+ */
151
+ export interface ThenableReference extends DatabaseReference {
152
+ then<TResult1 = DatabaseReference, TResult2 = never>(onfulfilled?: ((value: DatabaseReference) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
153
+ catch<TResult = never>(onrejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null): Promise<DatabaseReference | TResult>;
154
+ }
155
+ export type Unsubscribe = () => void;
156
+ /**
157
+ * Hidden brand on every {@link Query} (and on every QueryConstraint).
158
+ * Distinct from `TARGET_SYMBOL`; this brand is only used to dispatch
159
+ * `get` / `onValue` between plain refs and query-wrapped refs.
160
+ */
161
+ export declare const QUERY_SYMBOL: unique symbol;
162
+ /** Hidden brand on every {@link QueryConstraint}. */
163
+ declare const CONSTRAINT_SYMBOL: unique symbol;
164
+ /**
165
+ * RTDB-shaped Query — a ref + an immutable constraint chain. Mirrors
166
+ * `firebase/database`'s `Query` for the subset of methods the modular
167
+ * SDK uses idiomatically.
168
+ *
169
+ * Construct with {@link query}; pass to {@link get} or {@link onValue}.
170
+ */
171
+ export interface Query {
172
+ /** The Query's location. Used by `query()` chaining + listener fan-out. */
173
+ readonly ref: DatabaseReference;
174
+ /** Resolves to the same URL the ref would. */
175
+ toString(): string;
176
+ /** Internal — the constraint chain that built this query (sandbox path). */
177
+ readonly _spec: QuerySpec;
178
+ /** Internal — the prod-side fb.Query (when this query routes to prod). */
179
+ readonly _fbQuery?: fb.Query;
180
+ readonly [QUERY_SYMBOL]: true;
181
+ }
182
+ /**
183
+ * Opaque constraint produced by `orderByChild` / `equalTo` / `limitToFirst`
184
+ * etc. Pass to {@link query}.
185
+ */
186
+ export interface QueryConstraint {
187
+ /** The constraint's variant — surfaces as the SDK's
188
+ * `QueryConstraintType` strings. */
189
+ readonly type: 'orderByChild' | 'orderByKey' | 'orderByValue' | 'startAt' | 'startAfter' | 'endAt' | 'endBefore' | 'equalTo' | 'limitToFirst' | 'limitToLast';
190
+ readonly [CONSTRAINT_SYMBOL]: Constraint;
191
+ }
192
+ /**
193
+ * Build a Database handle. Three overloads dispatch by input shape:
194
+ *
195
+ * - `SandboxContext` → sandbox-backed, frozen identity.
196
+ * - `Sandbox` → sandbox-backed, live identity (per-op `currentUser`).
197
+ * - `FirebaseApp` → prod-backed (delegates to `firebase/database`).
198
+ *
199
+ * @example
200
+ * ```ts
201
+ * import { initializeSandbox } from 'pyric/sandbox';
202
+ * import { getDatabase, ref, set, get } from 'pyric/database';
203
+ *
204
+ * const sandbox = initializeSandbox();
205
+ * const db = getDatabase(sandbox.withAuth({ uid: 'alice' }));
206
+ * await set(ref(db, 'greetings/hello'), { text: 'hi' });
207
+ * const snap = await get(ref(db, 'greetings/hello'));
208
+ * console.log(snap.val()); // { text: 'hi' }
209
+ * ```
210
+ */
211
+ export declare function getDatabase(ctx: SandboxContext): Database;
212
+ export declare function getDatabase(sandbox: Sandbox): Database;
213
+ export declare function getDatabase(app: FirebaseApp): Database;
214
+ export declare function getDatabase(app: PyricApp): Database;
215
+ /**
216
+ * Sandbox-only rules-bypass RTDB handle. Mirrors Firestore's
217
+ * `getAdminFirestore(sandbox)` for Studio/Playground data browsers and
218
+ * controlled admin tools. A prod-backed app has no client-side rules-bypass
219
+ * equivalent and is rejected loudly.
220
+ */
221
+ export declare function getAdminDatabase(sandbox: Sandbox): Database;
222
+ export declare function getAdminDatabase(ctx: SandboxContext): Database;
223
+ export declare function getAdminDatabase(app: PyricApp): Database;
224
+ /**
225
+ * Build a {@link DatabaseReference} at `path` (default root).
226
+ *
227
+ * Sandbox: returns a lightweight ref object owning its absolute path.
228
+ * Prod: delegates to `firebase/database`'s `ref(db, path)` and tags
229
+ * the returned ref so chained ops route correctly.
230
+ *
231
+ * Path normalisation: leading + trailing slashes are stripped;
232
+ * empty path / `'/'` becomes the root.
233
+ */
234
+ export declare function ref(db: Database, path?: string): DatabaseReference;
235
+ /**
236
+ * Sub-path constructor. `child(ref, 'sub/path')` returns a ref at
237
+ * `<ref>/sub/path`.
238
+ *
239
+ * Mirrors `firebase/database`'s `child(parent, path)` — leading +
240
+ * empty segments stripped; the result inherits the parent's target.
241
+ */
242
+ export declare function child(parent: DatabaseReference, path: string): DatabaseReference;
243
+ /**
244
+ * `get(ref)` — one-shot read at the ref's path. Resolves to a
245
+ * `DataSnapshot`-shaped object.
246
+ *
247
+ * Sandbox: runs through the rule engine; denial throws the plain-`Error`
248
+ * shape locked by the oracle. Prod: delegates to `firebase/database`'s
249
+ * `get(ref)` and wraps the returned snapshot in our minimal shape.
250
+ *
251
+ * Absent path → `snap.val() === null && snap.exists() === false`.
252
+ * Matches the SDK's `DataSnapshot.val()` contract.
253
+ */
254
+ export declare function get(r: DatabaseReference | Query): Promise<DataSnapshot>;
255
+ /**
256
+ * `set(ref, value)` — replace the value at `ref`'s path. `null`
257
+ * deletes (matches the RTDB invariant — locked by oracle observation
258
+ * `rtdb-remove-vs-set-null.json`).
259
+ *
260
+ * `serverTimestamp()` sentinels are resolved at write time on the
261
+ * sandbox side; the prod side relies on `firebase/database`'s wire
262
+ * encoder.
263
+ */
264
+ export declare function set(r: DatabaseReference, value: unknown): Promise<void>;
265
+ /**
266
+ * `update(ref, values)` — partial update.
267
+ *
268
+ * - When `values` keys contain `/`, the call is a **multi-path atomic
269
+ * update**: every listed path is written as one transaction (any
270
+ * denial fails the whole batch).
271
+ * - Otherwise it's a **shallow merge** at the ref's path: each
272
+ * top-level key replaces the corresponding child. `null` values
273
+ * delete.
274
+ *
275
+ * Both behaviors are sandbox-implemented per the RtdbBackend's
276
+ * `update` method (`rtdb-modular`-spec atomic claim, matrix row #23).
277
+ */
278
+ export declare function update(r: DatabaseReference, values: Record<string, unknown>): Promise<void>;
279
+ /**
280
+ * `remove(ref)` — delete the subtree at the ref's path.
281
+ *
282
+ * RTDB invariant (oracle: `rtdb-remove-vs-set-null.json`): equivalent
283
+ * to `set(ref, null)`. The sandbox backend dispatches `remove` through
284
+ * the same code path as `set(_, null)`.
285
+ */
286
+ export declare function remove(r: DatabaseReference): Promise<void>;
287
+ /**
288
+ * `push(ref, value?)` — mint an auto-id child key under `ref`'s path,
289
+ * optionally writing `value` at the new child.
290
+ *
291
+ * Returns a ref at the new child path. The ref's `key` is the minted
292
+ * id (locked by oracle observation `rtdb-push-autoid-format.json`:
293
+ * 20 chars, leading `-`, lex-sortable).
294
+ *
295
+ * Production note: the key is minted **client-side** (no server
296
+ * round-trip required); it's available synchronously on the returned
297
+ * ref even when the optional write is denied by rules. The oracle
298
+ * observation confirms this — the sandbox matches.
299
+ */
300
+ export declare function push(r: DatabaseReference, value?: unknown): ThenableReference;
301
+ /**
302
+ * Pre-mint a push key without writing. Used by callers that need the
303
+ * key for a multi-path update (`update(rootRef, { [\`/users/${key}\`]: ... })`).
304
+ * Sandbox-side: returns a freshly-minted key. Prod-side: same — the
305
+ * `push(ref).key` pattern is the documented way.
306
+ */
307
+ export declare function pushKey(): string;
308
+ /**
309
+ * `onValue(ref, cb)` — subscribe to value changes at the ref's path.
310
+ *
311
+ * Fires immediately on subscribe with the current value (or
312
+ * `null` + `exists: false` for an absent path), then on every
313
+ * subsequent write that touches the path or any descendant.
314
+ *
315
+ * Returns an unsubscribe function. The unsubscribe is idempotent;
316
+ * calling it twice is a no-op.
317
+ *
318
+ * `options.onlyOnce` (DB-B12): when `true`, the listener auto-unsubscribes
319
+ * after its first fire (mirrors `api/Reference_impl.ts:975-980`).
320
+ *
321
+ * Errors path: subscribing under rules that deny the read throws the
322
+ * plain-`Error` `PERMISSION_DENIED` shape synchronously (matching the
323
+ * production behavior where the subscribe path immediately errors).
324
+ */
325
+ export declare function onValue(r: DatabaseReference | Query, cb: (snap: DataSnapshot) => void, options?: {
326
+ onlyOnce?: boolean;
327
+ }): Unsubscribe;
328
+ /**
329
+ * `onChildAdded(ref, cb)` — subscribe to child-added events at the
330
+ * ref's path.
331
+ *
332
+ * Semantics (locked by oracle observations under
333
+ * `scripts/oracle/observations/rtdb-modular-onchildadded-*.json`):
334
+ *
335
+ * - On subscribe, replays every existing direct child of `ref`'s path
336
+ * (one fire per existing key, in `orderByKey`-default order).
337
+ * - After subscribe, fires exactly once per new direct child write.
338
+ *
339
+ * Also accepts a {@link Query} (a `query(ref, ...)` with `orderBy*` /
340
+ * `limitTo*` constraints): child events are then computed against the
341
+ * ordered, windowed result — a child ENTERING the window fires
342
+ * `child_added`; on subscribe the current window is replayed in window
343
+ * order.
344
+ *
345
+ * Returns an unsubscribe; calling it twice is a no-op.
346
+ */
347
+ export declare function onChildAdded(r: DatabaseReference | Query, cb: (snap: DataSnapshot) => void): Unsubscribe;
348
+ /**
349
+ * `onChildChanged(ref, cb)` — subscribe to child-changed events.
350
+ *
351
+ * Semantics (oracle: `rtdb-modular-onchildchanged-fires-on-update`):
352
+ *
353
+ * - No initial replay.
354
+ * - Fires when an existing direct child's value transitions to a
355
+ * NEW non-null value. Snapshot carries the NEW value.
356
+ * - Does NOT fire for added or removed children.
357
+ *
358
+ * Also accepts a {@link Query}: fires when a child that is IN the query
359
+ * window changes value (an in-window update).
360
+ */
361
+ export declare function onChildChanged(r: DatabaseReference | Query, cb: (snap: DataSnapshot) => void): Unsubscribe;
362
+ /**
363
+ * `onChildRemoved(ref, cb)` — subscribe to child-removed events.
364
+ *
365
+ * Semantics (oracle: `rtdb-modular-onchildremoved-fires-on-delete`):
366
+ *
367
+ * - No initial replay.
368
+ * - Fires when a direct child is deleted (via `remove(child)` or
369
+ * `set(child, null)`).
370
+ * - Snapshot carries the PRIOR (now-removed) value — the listener
371
+ * sees what was there before deletion.
372
+ *
373
+ * Also accepts a {@link Query}: a child LEAVING the query window (e.g.
374
+ * displaced past a `limitTo*` boundary or filtered out) fires
375
+ * `child_removed` carrying its prior value.
376
+ */
377
+ export declare function onChildRemoved(r: DatabaseReference | Query, cb: (snap: DataSnapshot) => void): Unsubscribe;
378
+ /**
379
+ * `onChildMoved(ref, cb)` — subscribe to child-moved events.
380
+ *
381
+ * Semantics (oracle: `rtdb-modular-onchildmoved-with-orderby`):
382
+ *
383
+ * - Only fires under an ordered query (`query(ref, orderByChild(...))`).
384
+ * - Under a plain ref, this listener is effectively a no-op — the
385
+ * upstream SDK accepts the subscription but never fires it
386
+ * (matches RTDB docs).
387
+ *
388
+ * Accepts a {@link Query} WITHOUT throwing, but the sandbox deliberately
389
+ * does NOT fire `child_moved` on reorder yet: prod fires here (matrix row
390
+ * `rtdb-modular#137`) while the sandbox holds — the reorder /
391
+ * `previousChildName` ordering semantics are pending two new oracle
392
+ * captures. This is a documented, pinned divergence (both sides asserted
393
+ * in `test/database/modular/sandbox-child-events.test.ts`).
394
+ */
395
+ export declare function onChildMoved(r: DatabaseReference | Query, cb: (snap: DataSnapshot) => void): Unsubscribe;
396
+ type ChildEvent = 'child_added' | 'child_changed' | 'child_removed' | 'child_moved';
397
+ /**
398
+ * `off(ref, eventType?, callback?)` — unsubscribe variant.
399
+ *
400
+ * Semantics (locked by oracle observation
401
+ * `scripts/oracle/observations/rtdb-modular-off-stops-child-fires.json`):
402
+ *
403
+ * - `off(ref)` (no eventType) removes ALL listeners at that ref —
404
+ * value + every child event variety.
405
+ * - `off(ref, 'value')` removes only `value` listeners.
406
+ * - `off(ref, 'child_added')` (or any child event type) removes only
407
+ * that variety.
408
+ * - `off(ref, eventType, cb)` removes only the matching callback.
409
+ *
410
+ * The returned-unsubscribe pattern from `onValue` / `onChild*` is
411
+ * functionally equivalent to `off(ref, eventType, cb)` for a specific
412
+ * registration — both are supported.
413
+ */
414
+ export declare function off(r: DatabaseReference, eventType?: 'value' | ChildEvent, callback?: (snap: DataSnapshot) => void): void;
415
+ /**
416
+ * `query(ref, ...constraints)` — wrap a ref in an immutable
417
+ * constraint chain. The resulting {@link Query} routes through
418
+ * {@link get}/{@link onValue} and applies the ordering + filtering +
419
+ * limit pipeline on the sandbox backend; on prod it delegates to
420
+ * `firebase/database`'s `query()`.
421
+ *
422
+ * Chaining is supported — `query(query(ref, orderByChild('x')),
423
+ * limitToFirst(2))` folds both constraints into one spec.
424
+ *
425
+ * Locked semantics (oracle):
426
+ * - `orderByChild('p') + startAt(v) + endAt(w)` is BOTH-inclusive
427
+ * (`rtdb-modular-orderbychild-window.json`).
428
+ * - `orderByKey() + startAt('b') + endAt('d')` matches `[b, c, d]`
429
+ * (`rtdb-modular-orderbykey-window.json`).
430
+ * - `orderByValue() + limitToFirst(3)` returns the 3 smallest by
431
+ * value (`rtdb-modular-orderbyvalue-numeric.json` — note: prod
432
+ * requires `.indexOn: ".value"`; sandbox does not enforce indexes).
433
+ * - `orderByChild('group') + equalTo('b')` returns ALL matching
434
+ * children (`rtdb-modular-equalTo-filter.json`).
435
+ * - `limitToFirst(N)` / `limitToLast(N)` take from the start / end of
436
+ * the ordered window (`rtdb-modular-limittofirst-vs-limittolast.json`).
437
+ * - `startAfter` / `endBefore` are EXCLUSIVE
438
+ * (`rtdb-modular-startafter-endbefore-exclusive.json`).
439
+ */
440
+ export declare function query(refOrQuery: DatabaseReference | Query, ...constraints: QueryConstraint[]): Query;
441
+ /** `orderByChild('path')` — order children by the value at the nested
442
+ * child path. Locked by oracle observation
443
+ * `rtdb-modular-orderbychild-window.json`. */
444
+ export declare function orderByChild(path: string): QueryConstraint;
445
+ /** `orderByKey()` — order children lexicographically by key string.
446
+ * Locked by oracle observation `rtdb-modular-orderbykey-window.json`. */
447
+ export declare function orderByKey(): QueryConstraint;
448
+ /** `orderByValue()` — order children by primitive value. Prod requires
449
+ * `.indexOn: ".value"` (oracle: `rtdb-modular-orderbyvalue-numeric.json`
450
+ * threw `Index not defined` against blockingfun); sandbox does NOT
451
+ * enforce indexes (the rules engine here checks read-allow only, not
452
+ * query-index conformance). */
453
+ export declare function orderByValue(): QueryConstraint;
454
+ /** `startAt(value, key?)` — INCLUSIVE lower bound under the active
455
+ * ordering. Optional `key` is the tie-breaker when ordering by
456
+ * child/value and multiple children share the bound's value. */
457
+ export declare function startAt(value: JsonValue, key?: string): QueryConstraint;
458
+ /** `startAfter(value, key?)` — EXCLUSIVE lower bound. Locked by
459
+ * `rtdb-modular-startafter-endbefore-exclusive.json`. */
460
+ export declare function startAfter(value: JsonValue, key?: string): QueryConstraint;
461
+ /** `endAt(value, key?)` — INCLUSIVE upper bound. Adjacent to startAt;
462
+ * same key tie-breaker semantics. */
463
+ export declare function endAt(value: JsonValue, key?: string): QueryConstraint;
464
+ /** `endBefore(value, key?)` — EXCLUSIVE upper bound. Locked by
465
+ * `rtdb-modular-startafter-endbefore-exclusive.json`. */
466
+ export declare function endBefore(value: JsonValue, key?: string): QueryConstraint;
467
+ /** `equalTo(value, key?)` — sugar for `startAt(value, key) +
468
+ * endAt(value, key)`. Returns ALL matching children (no uniqueness).
469
+ * Locked by oracle observation `rtdb-modular-equalTo-filter.json`. */
470
+ export declare function equalTo(value: JsonValue, key?: string): QueryConstraint;
471
+ /** `limitToFirst(n)` — keep the first N children of the ordered window.
472
+ * Locked by oracle observation `rtdb-modular-limittofirst-vs-limittolast.json`. */
473
+ export declare function limitToFirst(n: number): QueryConstraint;
474
+ /** `limitToLast(n)` — keep the last N children of the ordered window.
475
+ * Locked by oracle observation `rtdb-modular-limittofirst-vs-limittolast.json`. */
476
+ export declare function limitToLast(n: number): QueryConstraint;
477
+ /**
478
+ * Result of {@link runTransaction}. Matches `firebase/database`'s
479
+ * `TransactionResult` for the fields agent / playground code reads
480
+ * idiomatically.
481
+ *
482
+ * `committed === false` when the update fn aborted by returning
483
+ * `undefined`. The snapshot still resolves — it reflects the **pre-
484
+ * transaction** value (oracle:
485
+ * `rtdb-modular-runtransaction-abort-undefined.json` →
486
+ * `afterValOnServer: 100` preserved).
487
+ *
488
+ * On rule denial the promise rejects with a plain `Error` whose
489
+ * `message === 'permission_denied'` (lowercase, no `.code`); see
490
+ * `rtdb-modular-runtransaction-on-rules-denied-path.json`.
491
+ */
492
+ export interface TransactionResult {
493
+ readonly committed: boolean;
494
+ readonly snapshot: DataSnapshot;
495
+ }
496
+ /**
497
+ * `runTransaction(ref, transactionUpdate, options?)` — atomic
498
+ * read-modify-write.
499
+ *
500
+ * Contract (oracle-locked):
501
+ *
502
+ * 1. `transactionUpdate` is called with the CURRENT value at `ref`'s
503
+ * path. For an absent path the arg is `null` (NOT `undefined`);
504
+ * oracle:
505
+ * `rtdb-modular-runtransaction-current-value-arg.json` →
506
+ * `missingFirstWasNull: true`.
507
+ * 2. Returning `undefined` from the update fn ABORTS the transaction:
508
+ * resolves `{ committed: false, snapshot }` where the snapshot is
509
+ * the pre-transaction value; oracle:
510
+ * `rtdb-modular-runtransaction-abort-undefined.json` → `committed:
511
+ * false, snapVal: null`.
512
+ * 3. Returning any defined value WRITES that value (rules-checked);
513
+ * resolves `{ committed: true, snapshot }` where `snapshot.val()`
514
+ * is the committed value; oracle:
515
+ * `rtdb-modular-runtransaction-success.json` → `committedNewValue:
516
+ * true` and
517
+ * `rtdb-modular-runtransaction-returns-committed-snapshot.json`.
518
+ * 4. If rules deny the write, the promise REJECTS with a plain
519
+ * `Error` whose `message === 'permission_denied'` and NO `.code`
520
+ * field (distinct from `set`/`get`'s `'PERMISSION_DENIED:
521
+ * Permission denied'`); oracle:
522
+ * `rtdb-modular-runtransaction-on-rules-denied-path.json`.
523
+ *
524
+ * `options.applyLocally` (default `true`): when `false`, the
525
+ * intermediate optimistic value is NOT fanned out to listeners — they
526
+ * see only the committed value. In a single-client harness this is
527
+ * usually invisible; we honor the flag for prod-parity. Oracle
528
+ * observation `rtdb-modular-runtransaction-options-applylocally.json`
529
+ * confirms both branches commit and end at the same value; the
530
+ * intermediate-fire difference isn't observable from a single client.
531
+ *
532
+ * Single-client sandbox doesn't model concurrency conflicts; the
533
+ * documented "retry on conflict" path is degenerate (no other writer
534
+ * exists to conflict with). The fn is invoked once.
535
+ */
536
+ export declare function runTransaction<T>(r: DatabaseReference, transactionUpdate: (current: T | null) => T | undefined, options?: {
537
+ applyLocally?: boolean;
538
+ }): Promise<TransactionResult>;
539
+ /**
540
+ * `serverTimestamp()` — returns the `{ ".sv": "timestamp" }` sentinel
541
+ * the wire encoder recognises. Resolves to `Date.now()` (epoch ms) on
542
+ * write — locked by the prod SDK's resolved-as-number contract
543
+ * (oracle: `rtdb-servertimestamp-resolves.json`).
544
+ *
545
+ * Same shape across targets: the sandbox backend recognises the
546
+ * marker; the prod backend's wire encoder does too. Agent code that
547
+ * imports `serverTimestamp` from `@pyric/rtdb` works identically on
548
+ * either target.
549
+ */
550
+ export declare function serverTimestamp(): ServerTimestampSentinel;
551
+ /**
552
+ * `increment(delta)` — returns the `{ ".sv": { increment: delta } }`
553
+ * sentinel that atomically adds `delta` to the current value at the
554
+ * write's field. Starts from `0` when the field is absent or
555
+ * non-numeric (oracle: `rtdb-modular-increment-from-missing.json`).
556
+ *
557
+ * Same shape across targets: the sandbox backend resolves it against the
558
+ * field's prior value at write time; the prod backend's wire encoder
559
+ * recognises the marker. Mirrors `firebase/database`'s `increment`
560
+ * (`api/ServerValue.ts:38-44`).
561
+ */
562
+ export declare function increment(delta: number): IncrementSentinel;
563
+ /**
564
+ * `connectDatabaseEmulator(db, host, port)` — point a prod handle at
565
+ * a Firebase emulator. No-op on sandbox handles (the sandbox IS a
566
+ * local emulator); the call is still accepted so consumer code that
567
+ * does the wiring unconditionally compiles against both targets.
568
+ */
569
+ export declare function connectDatabaseEmulator(db: Database, host: string, port: number, options?: {
570
+ mockUserToken?: string | fb.EmulatorMockTokenOptions;
571
+ }): void;
572
+ export declare const sandbox: {
573
+ /**
574
+ * Replace deployed rules. Pass `null` to clear (sandbox returns to
575
+ * default-allow). Rules are evaluated through the existing
576
+ * `@pyric/rtdb` simulator — same engine as `simulate()` /
577
+ * `rtdb_simulate_access`.
578
+ *
579
+ * @example
580
+ * ```ts
581
+ * sandbox.setRules(db, {
582
+ * rules: {
583
+ * '.read': 'auth != null',
584
+ * '.write': 'auth != null',
585
+ * },
586
+ * });
587
+ * ```
588
+ */
589
+ setRules(db: Database, rulesJson: {
590
+ rules: Record<string, unknown>;
591
+ } | null): void;
592
+ /**
593
+ * Bulk-load data bypassing rules. The supplied map's keys are
594
+ * absolute paths (`'/users/alice'`) and the values land at those
595
+ * paths. Convenient for test fixtures.
596
+ */
597
+ setData(db: Database, data: Record<string, unknown>): void;
598
+ /** Snapshot the full sandbox tree (rule-bypass read). Usually a keyed
599
+ * object; may be a primitive when the root holds one (DB-B13). */
600
+ snapshotState(db: Database): JsonValue;
601
+ };
602
+ export type { Sandbox, SandboxContext, AuthState, FirebaseApp };
603
+ export type { JsonValue };
604
+ //# sourceMappingURL=modular.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modular.d.ts","sourceRoot":"","sources":["../../src/database/modular.ts"],"names":[],"mappings":"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"}