pyric 0.0.1 → 0.1.0-alpha.8

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 (787) hide show
  1. package/README.md +138 -2
  2. package/README.md.orig +54 -0
  3. package/dist/app/index.d.ts +81 -0
  4. package/dist/app/index.d.ts.map +1 -0
  5. package/dist/app/index.js +78 -0
  6. package/dist/app/index.js.map +1 -0
  7. package/dist/auth/index.d.ts +346 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +701 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/prod-backend.d.ts +39 -0
  12. package/dist/auth/prod-backend.d.ts.map +1 -0
  13. package/dist/auth/prod-backend.js +179 -0
  14. package/dist/auth/prod-backend.js.map +1 -0
  15. package/dist/auth/providers.d.ts +107 -0
  16. package/dist/auth/providers.d.ts.map +1 -0
  17. package/dist/auth/providers.js +138 -0
  18. package/dist/auth/providers.js.map +1 -0
  19. package/dist/auth/sandbox-backend.d.ts +769 -0
  20. package/dist/auth/sandbox-backend.d.ts.map +1 -0
  21. package/dist/auth/sandbox-backend.js +1598 -0
  22. package/dist/auth/sandbox-backend.js.map +1 -0
  23. package/dist/auth/target.d.ts +40 -0
  24. package/dist/auth/target.d.ts.map +1 -0
  25. package/dist/auth/target.js +28 -0
  26. package/dist/auth/target.js.map +1 -0
  27. package/dist/auth/types.d.ts +252 -0
  28. package/dist/auth/types.d.ts.map +1 -0
  29. package/dist/auth/types.js +26 -0
  30. package/dist/auth/types.js.map +1 -0
  31. package/dist/database/constraints/atoms.d.ts +29 -0
  32. package/dist/database/constraints/atoms.d.ts.map +1 -0
  33. package/dist/database/constraints/atoms.js +43 -0
  34. package/dist/database/constraints/atoms.js.map +1 -0
  35. package/dist/database/constraints/compose.d.ts +16 -0
  36. package/dist/database/constraints/compose.d.ts.map +1 -0
  37. package/dist/database/constraints/compose.js +15 -0
  38. package/dist/database/constraints/compose.js.map +1 -0
  39. package/dist/database/constraints/data.d.ts +30 -0
  40. package/dist/database/constraints/data.d.ts.map +1 -0
  41. package/dist/database/constraints/data.js +46 -0
  42. package/dist/database/constraints/data.js.map +1 -0
  43. package/dist/database/constraints/document.d.ts +42 -0
  44. package/dist/database/constraints/document.d.ts.map +1 -0
  45. package/dist/database/constraints/document.js +86 -0
  46. package/dist/database/constraints/document.js.map +1 -0
  47. package/dist/database/constraints/game.d.ts +30 -0
  48. package/dist/database/constraints/game.d.ts.map +1 -0
  49. package/dist/database/constraints/game.js +49 -0
  50. package/dist/database/constraints/game.js.map +1 -0
  51. package/dist/database/constraints/index.d.ts +12 -0
  52. package/dist/database/constraints/index.d.ts.map +1 -0
  53. package/dist/database/constraints/index.js +9 -0
  54. package/dist/database/constraints/index.js.map +1 -0
  55. package/dist/database/constraints/policies.d.ts +16 -0
  56. package/dist/database/constraints/policies.d.ts.map +1 -0
  57. package/dist/database/constraints/policies.js +17 -0
  58. package/dist/database/constraints/policies.js.map +1 -0
  59. package/dist/database/constraints/ruleset.d.ts +5 -0
  60. package/dist/database/constraints/ruleset.d.ts.map +1 -0
  61. package/dist/database/constraints/ruleset.js +132 -0
  62. package/dist/database/constraints/ruleset.js.map +1 -0
  63. package/dist/database/constraints/schema.d.ts +17 -0
  64. package/dist/database/constraints/schema.d.ts.map +1 -0
  65. package/dist/database/constraints/schema.js +74 -0
  66. package/dist/database/constraints/schema.js.map +1 -0
  67. package/dist/database/constraints/types.d.ts +22 -0
  68. package/dist/database/constraints/types.d.ts.map +1 -0
  69. package/dist/database/constraints/types.js +2 -0
  70. package/dist/database/constraints/types.js.map +1 -0
  71. package/dist/database/crawl/handler.d.ts +7 -0
  72. package/dist/database/crawl/handler.d.ts.map +1 -0
  73. package/dist/database/crawl/handler.js +91 -0
  74. package/dist/database/crawl/handler.js.map +1 -0
  75. package/dist/database/crawl/semaphore.d.ts +9 -0
  76. package/dist/database/crawl/semaphore.d.ts.map +1 -0
  77. package/dist/database/crawl/semaphore.js +27 -0
  78. package/dist/database/crawl/semaphore.js.map +1 -0
  79. package/dist/database/crawl/spec.d.ts +33 -0
  80. package/dist/database/crawl/spec.d.ts.map +1 -0
  81. package/dist/database/crawl/spec.js +12 -0
  82. package/dist/database/crawl/spec.js.map +1 -0
  83. package/dist/database/data/handler.d.ts +9 -0
  84. package/dist/database/data/handler.d.ts.map +1 -0
  85. package/dist/database/data/handler.js +96 -0
  86. package/dist/database/data/handler.js.map +1 -0
  87. package/dist/database/data/spec.d.ts +77 -0
  88. package/dist/database/data/spec.d.ts.map +1 -0
  89. package/dist/database/data/spec.js +17 -0
  90. package/dist/database/data/spec.js.map +1 -0
  91. package/dist/database/data/validated.d.ts +8 -0
  92. package/dist/database/data/validated.d.ts.map +1 -0
  93. package/dist/database/data/validated.js +99 -0
  94. package/dist/database/data/validated.js.map +1 -0
  95. package/dist/database/grammar/RtdbExpr.ohm +98 -0
  96. package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts +2 -0
  97. package/dist/database/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -0
  98. package/dist/database/grammar/RtdbExpr.ohm.generated.js +103 -0
  99. package/dist/database/grammar/RtdbExpr.ohm.generated.js.map +1 -0
  100. package/dist/database/grammar/RtdbExprParser.d.ts +5 -0
  101. package/dist/database/grammar/RtdbExprParser.d.ts.map +1 -0
  102. package/dist/database/grammar/RtdbExprParser.js +53 -0
  103. package/dist/database/grammar/RtdbExprParser.js.map +1 -0
  104. package/dist/database/grammar/linter.d.ts +3 -0
  105. package/dist/database/grammar/linter.d.ts.map +1 -0
  106. package/dist/database/grammar/linter.js +66 -0
  107. package/dist/database/grammar/linter.js.map +1 -0
  108. package/dist/database/grammar/simulator.d.ts +31 -0
  109. package/dist/database/grammar/simulator.d.ts.map +1 -0
  110. package/dist/database/grammar/simulator.js +255 -0
  111. package/dist/database/grammar/simulator.js.map +1 -0
  112. package/dist/database/grammar/validator.d.ts +3 -0
  113. package/dist/database/grammar/validator.d.ts.map +1 -0
  114. package/dist/database/grammar/validator.js +84 -0
  115. package/dist/database/grammar/validator.js.map +1 -0
  116. package/dist/database/host.d.ts +50 -0
  117. package/dist/database/host.d.ts.map +1 -0
  118. package/dist/database/host.js +41 -0
  119. package/dist/database/host.js.map +1 -0
  120. package/dist/database/index.d.ts +40 -0
  121. package/dist/database/index.d.ts.map +1 -0
  122. package/dist/database/index.js +47 -0
  123. package/dist/database/index.js.map +1 -0
  124. package/dist/database/initialize-from-app.d.ts +28 -0
  125. package/dist/database/initialize-from-app.d.ts.map +1 -0
  126. package/dist/database/initialize-from-app.js +23 -0
  127. package/dist/database/initialize-from-app.js.map +1 -0
  128. package/dist/database/ir/handler.d.ts +6 -0
  129. package/dist/database/ir/handler.d.ts.map +1 -0
  130. package/dist/database/ir/handler.js +52 -0
  131. package/dist/database/ir/handler.js.map +1 -0
  132. package/dist/database/ir/spec.d.ts +25 -0
  133. package/dist/database/ir/spec.d.ts.map +1 -0
  134. package/dist/database/ir/spec.js +11 -0
  135. package/dist/database/ir/spec.js.map +1 -0
  136. package/dist/database/mapper.d.ts +9 -0
  137. package/dist/database/mapper.d.ts.map +1 -0
  138. package/dist/database/mapper.js +115 -0
  139. package/dist/database/mapper.js.map +1 -0
  140. package/dist/database/modular.d.ts +604 -0
  141. package/dist/database/modular.d.ts.map +1 -0
  142. package/dist/database/modular.js +1226 -0
  143. package/dist/database/modular.js.map +1 -0
  144. package/dist/database/replay.d.ts +33 -0
  145. package/dist/database/replay.d.ts.map +1 -0
  146. package/dist/database/replay.js +124 -0
  147. package/dist/database/replay.js.map +1 -0
  148. package/dist/database/resolver.d.ts +4 -0
  149. package/dist/database/resolver.d.ts.map +1 -0
  150. package/dist/database/resolver.js +66 -0
  151. package/dist/database/resolver.js.map +1 -0
  152. package/dist/database/sandbox/backend.d.ts +403 -0
  153. package/dist/database/sandbox/backend.d.ts.map +1 -0
  154. package/dist/database/sandbox/backend.js +1467 -0
  155. package/dist/database/sandbox/backend.js.map +1 -0
  156. package/dist/database/sandbox/data-tree.d.ts +123 -0
  157. package/dist/database/sandbox/data-tree.d.ts.map +1 -0
  158. package/dist/database/sandbox/data-tree.js +310 -0
  159. package/dist/database/sandbox/data-tree.js.map +1 -0
  160. package/dist/database/sandbox/normalize.d.ts +77 -0
  161. package/dist/database/sandbox/normalize.d.ts.map +1 -0
  162. package/dist/database/sandbox/normalize.js +165 -0
  163. package/dist/database/sandbox/normalize.js.map +1 -0
  164. package/dist/database/sandbox/push-id.d.ts +32 -0
  165. package/dist/database/sandbox/push-id.d.ts.map +1 -0
  166. package/dist/database/sandbox/push-id.js +82 -0
  167. package/dist/database/sandbox/push-id.js.map +1 -0
  168. package/dist/database/sandbox/query.d.ts +175 -0
  169. package/dist/database/sandbox/query.d.ts.map +1 -0
  170. package/dist/database/sandbox/query.js +269 -0
  171. package/dist/database/sandbox/query.js.map +1 -0
  172. package/dist/database/sandbox/rules-eval.d.ts +69 -0
  173. package/dist/database/sandbox/rules-eval.d.ts.map +1 -0
  174. package/dist/database/sandbox/rules-eval.js +124 -0
  175. package/dist/database/sandbox/rules-eval.js.map +1 -0
  176. package/dist/database/sandbox/sentinels.d.ts +71 -0
  177. package/dist/database/sandbox/sentinels.d.ts.map +1 -0
  178. package/dist/database/sandbox/sentinels.js +92 -0
  179. package/dist/database/sandbox/sentinels.js.map +1 -0
  180. package/dist/database/simulation/handler.d.ts +6 -0
  181. package/dist/database/simulation/handler.d.ts.map +1 -0
  182. package/dist/database/simulation/handler.js +236 -0
  183. package/dist/database/simulation/handler.js.map +1 -0
  184. package/dist/database/simulation/spec.d.ts +69 -0
  185. package/dist/database/simulation/spec.d.ts.map +1 -0
  186. package/dist/database/simulation/spec.js +25 -0
  187. package/dist/database/simulation/spec.js.map +1 -0
  188. package/dist/database/tools.d.ts +22 -0
  189. package/dist/database/tools.d.ts.map +1 -0
  190. package/dist/database/tools.js +272 -0
  191. package/dist/database/tools.js.map +1 -0
  192. package/dist/database/types.d.ts +210 -0
  193. package/dist/database/types.d.ts.map +1 -0
  194. package/dist/database/types.js +26 -0
  195. package/dist/database/types.js.map +1 -0
  196. package/dist/database/write/handler.d.ts +7 -0
  197. package/dist/database/write/handler.d.ts.map +1 -0
  198. package/dist/database/write/handler.js +42 -0
  199. package/dist/database/write/handler.js.map +1 -0
  200. package/dist/database/write/spec.d.ts +18 -0
  201. package/dist/database/write/spec.d.ts.map +1 -0
  202. package/dist/database/write/spec.js +7 -0
  203. package/dist/database/write/spec.js.map +1 -0
  204. package/dist/firestore/index.d.ts +533 -0
  205. package/dist/firestore/index.d.ts.map +1 -0
  206. package/dist/firestore/index.js +1536 -0
  207. package/dist/firestore/index.js.map +1 -0
  208. package/dist/firestore/tools.d.ts +67 -0
  209. package/dist/firestore/tools.d.ts.map +1 -0
  210. package/dist/firestore/tools.js +318 -0
  211. package/dist/firestore/tools.js.map +1 -0
  212. package/dist/firestore-values/index.d.ts +63 -0
  213. package/dist/firestore-values/index.d.ts.map +1 -0
  214. package/dist/firestore-values/index.js +148 -0
  215. package/dist/firestore-values/index.js.map +1 -0
  216. package/dist/project-scope.d.ts +5 -0
  217. package/dist/project-scope.d.ts.map +1 -0
  218. package/dist/project-scope.js +2 -0
  219. package/dist/project-scope.js.map +1 -0
  220. package/dist/rules/extract.d.ts +28 -0
  221. package/dist/rules/extract.d.ts.map +1 -0
  222. package/dist/rules/extract.js +25 -0
  223. package/dist/rules/extract.js.map +1 -0
  224. package/dist/rules/generators/assembler.d.ts +19 -0
  225. package/dist/rules/generators/assembler.d.ts.map +1 -0
  226. package/dist/rules/generators/assembler.js +292 -0
  227. package/dist/rules/generators/assembler.js.map +1 -0
  228. package/dist/rules/generators/expressions.d.ts +52 -0
  229. package/dist/rules/generators/expressions.d.ts.map +1 -0
  230. package/dist/rules/generators/expressions.js +117 -0
  231. package/dist/rules/generators/expressions.js.map +1 -0
  232. package/dist/rules/generators/grid.d.ts +22 -0
  233. package/dist/rules/generators/grid.d.ts.map +1 -0
  234. package/dist/rules/generators/grid.js +52 -0
  235. package/dist/rules/generators/grid.js.map +1 -0
  236. package/dist/rules/grammar/FirestoreAST.d.ts +129 -0
  237. package/dist/rules/grammar/FirestoreAST.d.ts.map +1 -0
  238. package/dist/rules/grammar/FirestoreAST.js +3 -0
  239. package/dist/rules/grammar/FirestoreAST.js.map +1 -0
  240. package/dist/rules/grammar/FirestoreAssembler.d.ts +5 -0
  241. package/dist/rules/grammar/FirestoreAssembler.d.ts.map +1 -0
  242. package/dist/rules/grammar/FirestoreAssembler.js +158 -0
  243. package/dist/rules/grammar/FirestoreAssembler.js.map +1 -0
  244. package/dist/rules/grammar/FirestoreParser.d.ts +46 -0
  245. package/dist/rules/grammar/FirestoreParser.d.ts.map +1 -0
  246. package/dist/rules/grammar/FirestoreParser.js +409 -0
  247. package/dist/rules/grammar/FirestoreParser.js.map +1 -0
  248. package/dist/rules/grammar/FirestoreRules.ohm +229 -0
  249. package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts +2 -0
  250. package/dist/rules/grammar/FirestoreRules.ohm.generated.d.ts.map +1 -0
  251. package/dist/rules/grammar/FirestoreRules.ohm.generated.js +234 -0
  252. package/dist/rules/grammar/FirestoreRules.ohm.generated.js.map +1 -0
  253. package/dist/rules/grammar/FirestoreValidator.d.ts +10 -0
  254. package/dist/rules/grammar/FirestoreValidator.d.ts.map +1 -0
  255. package/dist/rules/grammar/FirestoreValidator.js +482 -0
  256. package/dist/rules/grammar/FirestoreValidator.js.map +1 -0
  257. package/dist/rules/index.d.ts +67 -0
  258. package/dist/rules/index.d.ts.map +1 -0
  259. package/dist/rules/index.js +80 -0
  260. package/dist/rules/index.js.map +1 -0
  261. package/dist/rules/indexes/extract/annotation-collect.d.ts +42 -0
  262. package/dist/rules/indexes/extract/annotation-collect.d.ts.map +1 -0
  263. package/dist/rules/indexes/extract/annotation-collect.js +69 -0
  264. package/dist/rules/indexes/extract/annotation-collect.js.map +1 -0
  265. package/dist/rules/indexes/extract/annotations.d.ts +50 -0
  266. package/dist/rules/indexes/extract/annotations.d.ts.map +1 -0
  267. package/dist/rules/indexes/extract/annotations.js +144 -0
  268. package/dist/rules/indexes/extract/annotations.js.map +1 -0
  269. package/dist/rules/indexes/extract/ast.d.ts +54 -0
  270. package/dist/rules/indexes/extract/ast.d.ts.map +1 -0
  271. package/dist/rules/indexes/extract/ast.js +119 -0
  272. package/dist/rules/indexes/extract/ast.js.map +1 -0
  273. package/dist/rules/indexes/extract/classify.d.ts +41 -0
  274. package/dist/rules/indexes/extract/classify.d.ts.map +1 -0
  275. package/dist/rules/indexes/extract/classify.js +138 -0
  276. package/dist/rules/indexes/extract/classify.js.map +1 -0
  277. package/dist/rules/indexes/extract/composite.d.ts +38 -0
  278. package/dist/rules/indexes/extract/composite.d.ts.map +1 -0
  279. package/dist/rules/indexes/extract/composite.js +85 -0
  280. package/dist/rules/indexes/extract/composite.js.map +1 -0
  281. package/dist/rules/indexes/extract/dataflow.d.ts +45 -0
  282. package/dist/rules/indexes/extract/dataflow.d.ts.map +1 -0
  283. package/dist/rules/indexes/extract/dataflow.js +200 -0
  284. package/dist/rules/indexes/extract/dataflow.js.map +1 -0
  285. package/dist/rules/indexes/extract/enumerate.d.ts +41 -0
  286. package/dist/rules/indexes/extract/enumerate.d.ts.map +1 -0
  287. package/dist/rules/indexes/extract/enumerate.js +163 -0
  288. package/dist/rules/indexes/extract/enumerate.js.map +1 -0
  289. package/dist/rules/indexes/extract/extractor.d.ts +3 -0
  290. package/dist/rules/indexes/extract/extractor.d.ts.map +1 -0
  291. package/dist/rules/indexes/extract/extractor.js +274 -0
  292. package/dist/rules/indexes/extract/extractor.js.map +1 -0
  293. package/dist/rules/indexes/extract/types.d.ts +211 -0
  294. package/dist/rules/indexes/extract/types.d.ts.map +1 -0
  295. package/dist/rules/indexes/extract/types.js +14 -0
  296. package/dist/rules/indexes/extract/types.js.map +1 -0
  297. package/dist/rules/indexes/extractHandler.d.ts +16 -0
  298. package/dist/rules/indexes/extractHandler.d.ts.map +1 -0
  299. package/dist/rules/indexes/extractHandler.js +100 -0
  300. package/dist/rules/indexes/extractHandler.js.map +1 -0
  301. package/dist/rules/indexes/extractTool.d.ts +15 -0
  302. package/dist/rules/indexes/extractTool.d.ts.map +1 -0
  303. package/dist/rules/indexes/extractTool.js +55 -0
  304. package/dist/rules/indexes/extractTool.js.map +1 -0
  305. package/dist/rules/indexes/types.d.ts +71 -0
  306. package/dist/rules/indexes/types.d.ts.map +1 -0
  307. package/dist/rules/indexes/types.js +15 -0
  308. package/dist/rules/indexes/types.js.map +1 -0
  309. package/dist/rules/inspect/handler.d.ts +6 -0
  310. package/dist/rules/inspect/handler.d.ts.map +1 -0
  311. package/dist/rules/inspect/handler.js +144 -0
  312. package/dist/rules/inspect/handler.js.map +1 -0
  313. package/dist/rules/inspect/spec.d.ts +37 -0
  314. package/dist/rules/inspect/spec.d.ts.map +1 -0
  315. package/dist/rules/inspect/spec.js +2 -0
  316. package/dist/rules/inspect/spec.js.map +1 -0
  317. package/dist/rules/inspect/tools.d.ts +21 -0
  318. package/dist/rules/inspect/tools.d.ts.map +1 -0
  319. package/dist/rules/inspect/tools.js +21 -0
  320. package/dist/rules/inspect/tools.js.map +1 -0
  321. package/dist/rules/linter/ast-utils.d.ts +97 -0
  322. package/dist/rules/linter/ast-utils.d.ts.map +1 -0
  323. package/dist/rules/linter/ast-utils.js +491 -0
  324. package/dist/rules/linter/ast-utils.js.map +1 -0
  325. package/dist/rules/linter/hallucinations.d.ts +34 -0
  326. package/dist/rules/linter/hallucinations.d.ts.map +1 -0
  327. package/dist/rules/linter/hallucinations.js +334 -0
  328. package/dist/rules/linter/hallucinations.js.map +1 -0
  329. package/dist/rules/linter/linter.d.ts +84 -0
  330. package/dist/rules/linter/linter.d.ts.map +1 -0
  331. package/dist/rules/linter/linter.js +784 -0
  332. package/dist/rules/linter/linter.js.map +1 -0
  333. package/dist/rules/modules/resolver-browser.d.ts +41 -0
  334. package/dist/rules/modules/resolver-browser.d.ts.map +1 -0
  335. package/dist/rules/modules/resolver-browser.js +63 -0
  336. package/dist/rules/modules/resolver-browser.js.map +1 -0
  337. package/dist/rules/modules/resolver-core.d.ts +51 -0
  338. package/dist/rules/modules/resolver-core.d.ts.map +1 -0
  339. package/dist/rules/modules/resolver-core.js +338 -0
  340. package/dist/rules/modules/resolver-core.js.map +1 -0
  341. package/dist/rules/modules/resolver.d.ts +17 -0
  342. package/dist/rules/modules/resolver.d.ts.map +1 -0
  343. package/dist/rules/modules/resolver.js +49 -0
  344. package/dist/rules/modules/resolver.js.map +1 -0
  345. package/dist/rules/modules/stdlib/atomic.rules +52 -0
  346. package/dist/rules/modules/stdlib/atomic.test.json +152 -0
  347. package/dist/rules/modules/stdlib/auth.rules +7 -0
  348. package/dist/rules/modules/stdlib/auth.test.json +53 -0
  349. package/dist/rules/modules/stdlib/content.rules +50 -0
  350. package/dist/rules/modules/stdlib/content.test.json +238 -0
  351. package/dist/rules/modules/stdlib/counters.rules +41 -0
  352. package/dist/rules/modules/stdlib/counters.test.json +254 -0
  353. package/dist/rules/modules/stdlib/geometry.rules +43 -0
  354. package/dist/rules/modules/stdlib/geometry.test.json +200 -0
  355. package/dist/rules/modules/stdlib/joining.rules +49 -0
  356. package/dist/rules/modules/stdlib/joining.test.json +287 -0
  357. package/dist/rules/modules/stdlib/lifecycle.rules +51 -0
  358. package/dist/rules/modules/stdlib/lifecycle.test.json +288 -0
  359. package/dist/rules/modules/stdlib/lobby.rules +44 -0
  360. package/dist/rules/modules/stdlib/lobby.test.json +32 -0
  361. package/dist/rules/modules/stdlib/membership.rules +40 -0
  362. package/dist/rules/modules/stdlib/membership.test.json +107 -0
  363. package/dist/rules/modules/stdlib/spaces.rules +46 -0
  364. package/dist/rules/modules/stdlib/spaces.test.json +392 -0
  365. package/dist/rules/modules/stdlib/state.rules +28 -0
  366. package/dist/rules/modules/stdlib/state.test.json +55 -0
  367. package/dist/rules/modules/stdlib/timing.rules +20 -0
  368. package/dist/rules/modules/stdlib/timing.test.json +106 -0
  369. package/dist/rules/modules/stdlib/transitions.rules +34 -0
  370. package/dist/rules/modules/stdlib/transitions.test.json +86 -0
  371. package/dist/rules/modules/stdlib/turns.rules +27 -0
  372. package/dist/rules/modules/stdlib/turns.test.json +64 -0
  373. package/dist/rules/modules/stdlib/validation.rules +31 -0
  374. package/dist/rules/modules/stdlib/validation.test.json +184 -0
  375. package/dist/rules/modules/stdlib-content.d.ts +11 -0
  376. package/dist/rules/modules/stdlib-content.d.ts.map +1 -0
  377. package/dist/rules/modules/stdlib-content.js +590 -0
  378. package/dist/rules/modules/stdlib-content.js.map +1 -0
  379. package/dist/rules/node.d.ts +17 -0
  380. package/dist/rules/node.d.ts.map +1 -0
  381. package/dist/rules/node.js +21 -0
  382. package/dist/rules/node.js.map +1 -0
  383. package/dist/rules/rtdb.d.ts +28 -0
  384. package/dist/rules/rtdb.d.ts.map +1 -0
  385. package/dist/rules/rtdb.js +15 -0
  386. package/dist/rules/rtdb.js.map +1 -0
  387. package/dist/rules/simulator/evaluator.d.ts +179 -0
  388. package/dist/rules/simulator/evaluator.d.ts.map +1 -0
  389. package/dist/rules/simulator/evaluator.js +1221 -0
  390. package/dist/rules/simulator/evaluator.js.map +1 -0
  391. package/dist/rules/simulator/expression/eval-errors.d.ts +86 -0
  392. package/dist/rules/simulator/expression/eval-errors.d.ts.map +1 -0
  393. package/dist/rules/simulator/expression/eval-errors.js +68 -0
  394. package/dist/rules/simulator/expression/eval-errors.js.map +1 -0
  395. package/dist/rules/simulator/expression/evaluator.d.ts +43 -0
  396. package/dist/rules/simulator/expression/evaluator.d.ts.map +1 -0
  397. package/dist/rules/simulator/expression/evaluator.js +298 -0
  398. package/dist/rules/simulator/expression/evaluator.js.map +1 -0
  399. package/dist/rules/simulator/expression/lexer.d.ts +36 -0
  400. package/dist/rules/simulator/expression/lexer.d.ts.map +1 -0
  401. package/dist/rules/simulator/expression/lexer.js +318 -0
  402. package/dist/rules/simulator/expression/lexer.js.map +1 -0
  403. package/dist/rules/simulator/expression/parser.d.ts +39 -0
  404. package/dist/rules/simulator/expression/parser.d.ts.map +1 -0
  405. package/dist/rules/simulator/expression/parser.js +329 -0
  406. package/dist/rules/simulator/expression/parser.js.map +1 -0
  407. package/dist/rules/simulator/expression/types.d.ts +137 -0
  408. package/dist/rules/simulator/expression/types.d.ts.map +1 -0
  409. package/dist/rules/simulator/expression/types.js +90 -0
  410. package/dist/rules/simulator/expression/types.js.map +1 -0
  411. package/dist/rules/simulator/expression/walk-data.d.ts +52 -0
  412. package/dist/rules/simulator/expression/walk-data.d.ts.map +1 -0
  413. package/dist/rules/simulator/expression/walk-data.js +167 -0
  414. package/dist/rules/simulator/expression/walk-data.js.map +1 -0
  415. package/dist/rules/simulator/firestore-set.d.ts +25 -0
  416. package/dist/rules/simulator/firestore-set.d.ts.map +1 -0
  417. package/dist/rules/simulator/firestore-set.js +89 -0
  418. package/dist/rules/simulator/firestore-set.js.map +1 -0
  419. package/dist/rules/simulator/handler.d.ts +36 -0
  420. package/dist/rules/simulator/handler.d.ts.map +1 -0
  421. package/dist/rules/simulator/handler.js +583 -0
  422. package/dist/rules/simulator/handler.js.map +1 -0
  423. package/dist/rules/simulator/mapdiff.d.ts +29 -0
  424. package/dist/rules/simulator/mapdiff.d.ts.map +1 -0
  425. package/dist/rules/simulator/mapdiff.js +72 -0
  426. package/dist/rules/simulator/mapdiff.js.map +1 -0
  427. package/dist/rules/simulator/project-after-state.d.ts +33 -0
  428. package/dist/rules/simulator/project-after-state.d.ts.map +1 -0
  429. package/dist/rules/simulator/project-after-state.js +88 -0
  430. package/dist/rules/simulator/project-after-state.js.map +1 -0
  431. package/dist/rules/simulator/query-proof.d.ts +80 -0
  432. package/dist/rules/simulator/query-proof.d.ts.map +1 -0
  433. package/dist/rules/simulator/query-proof.js +142 -0
  434. package/dist/rules/simulator/query-proof.js.map +1 -0
  435. package/dist/rules/simulator/value-equality.d.ts +8 -0
  436. package/dist/rules/simulator/value-equality.d.ts.map +1 -0
  437. package/dist/rules/simulator/value-equality.js +40 -0
  438. package/dist/rules/simulator/value-equality.js.map +1 -0
  439. package/dist/rules/simulator/wrappers/base.d.ts +129 -0
  440. package/dist/rules/simulator/wrappers/base.d.ts.map +1 -0
  441. package/dist/rules/simulator/wrappers/base.js +90 -0
  442. package/dist/rules/simulator/wrappers/base.js.map +1 -0
  443. package/dist/rules/simulator/wrappers/bytes.d.ts +45 -0
  444. package/dist/rules/simulator/wrappers/bytes.d.ts.map +1 -0
  445. package/dist/rules/simulator/wrappers/bytes.js +130 -0
  446. package/dist/rules/simulator/wrappers/bytes.js.map +1 -0
  447. package/dist/rules/simulator/wrappers/duration.d.ts +76 -0
  448. package/dist/rules/simulator/wrappers/duration.d.ts.map +1 -0
  449. package/dist/rules/simulator/wrappers/duration.js +176 -0
  450. package/dist/rules/simulator/wrappers/duration.js.map +1 -0
  451. package/dist/rules/simulator/wrappers/float.d.ts +52 -0
  452. package/dist/rules/simulator/wrappers/float.d.ts.map +1 -0
  453. package/dist/rules/simulator/wrappers/float.js +88 -0
  454. package/dist/rules/simulator/wrappers/float.js.map +1 -0
  455. package/dist/rules/simulator/wrappers/latlng.d.ts +40 -0
  456. package/dist/rules/simulator/wrappers/latlng.d.ts.map +1 -0
  457. package/dist/rules/simulator/wrappers/latlng.js +100 -0
  458. package/dist/rules/simulator/wrappers/latlng.js.map +1 -0
  459. package/dist/rules/simulator/wrappers/path.d.ts +75 -0
  460. package/dist/rules/simulator/wrappers/path.d.ts.map +1 -0
  461. package/dist/rules/simulator/wrappers/path.js +158 -0
  462. package/dist/rules/simulator/wrappers/path.js.map +1 -0
  463. package/dist/rules/simulator/wrappers/reference.d.ts +82 -0
  464. package/dist/rules/simulator/wrappers/reference.d.ts.map +1 -0
  465. package/dist/rules/simulator/wrappers/reference.js +145 -0
  466. package/dist/rules/simulator/wrappers/reference.js.map +1 -0
  467. package/dist/rules/simulator/wrappers/timestamp.d.ts +86 -0
  468. package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -0
  469. package/dist/rules/simulator/wrappers/timestamp.js +207 -0
  470. package/dist/rules/simulator/wrappers/timestamp.js.map +1 -0
  471. package/dist/rules/simulator/wrappers/vector.d.ts +43 -0
  472. package/dist/rules/simulator/wrappers/vector.d.ts.map +1 -0
  473. package/dist/rules/simulator/wrappers/vector.js +80 -0
  474. package/dist/rules/simulator/wrappers/vector.js.map +1 -0
  475. package/dist/rules/simulator-tools-impl.d.ts +64 -0
  476. package/dist/rules/simulator-tools-impl.d.ts.map +1 -0
  477. package/dist/rules/simulator-tools-impl.js +462 -0
  478. package/dist/rules/simulator-tools-impl.js.map +1 -0
  479. package/dist/rules/simulator.d.ts +20 -0
  480. package/dist/rules/simulator.d.ts.map +1 -0
  481. package/dist/rules/simulator.js +24 -0
  482. package/dist/rules/simulator.js.map +1 -0
  483. package/dist/rules/stdlib-modules.d.ts +73 -0
  484. package/dist/rules/stdlib-modules.d.ts.map +1 -0
  485. package/dist/rules/stdlib-modules.js +849 -0
  486. package/dist/rules/stdlib-modules.js.map +1 -0
  487. package/dist/rules/stdlib-tools.d.ts +19 -0
  488. package/dist/rules/stdlib-tools.d.ts.map +1 -0
  489. package/dist/rules/stdlib-tools.js +164 -0
  490. package/dist/rules/stdlib-tools.js.map +1 -0
  491. package/dist/rules/test/handler.d.ts +9 -0
  492. package/dist/rules/test/handler.d.ts.map +1 -0
  493. package/dist/rules/test/handler.js +124 -0
  494. package/dist/rules/test/handler.js.map +1 -0
  495. package/dist/rules/test/spec.d.ts +517 -0
  496. package/dist/rules/test/spec.d.ts.map +1 -0
  497. package/dist/rules/test/spec.js +227 -0
  498. package/dist/rules/test/spec.js.map +1 -0
  499. package/dist/rules/tools.d.ts +41 -0
  500. package/dist/rules/tools.d.ts.map +1 -0
  501. package/dist/rules/tools.js +124 -0
  502. package/dist/rules/tools.js.map +1 -0
  503. package/dist/rules/write/handler.d.ts +6 -0
  504. package/dist/rules/write/handler.d.ts.map +1 -0
  505. package/dist/rules/write/handler.js +126 -0
  506. package/dist/rules/write/handler.js.map +1 -0
  507. package/dist/rules/write/spec.d.ts +28 -0
  508. package/dist/rules/write/spec.d.ts.map +1 -0
  509. package/dist/rules/write/spec.js +2 -0
  510. package/dist/rules/write/spec.js.map +1 -0
  511. package/dist/sandbox/admin-compat.d.ts +20 -0
  512. package/dist/sandbox/admin-compat.d.ts.map +1 -0
  513. package/dist/sandbox/admin-compat.js +19 -0
  514. package/dist/sandbox/admin-compat.js.map +1 -0
  515. package/dist/sandbox/admin-firestore/error-translation.d.ts +86 -0
  516. package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -0
  517. package/dist/sandbox/admin-firestore/error-translation.js +204 -0
  518. package/dist/sandbox/admin-firestore/error-translation.js.map +1 -0
  519. package/dist/sandbox/admin-firestore/index.d.ts +169 -0
  520. package/dist/sandbox/admin-firestore/index.d.ts.map +1 -0
  521. package/dist/sandbox/admin-firestore/index.js +456 -0
  522. package/dist/sandbox/admin-firestore/index.js.map +1 -0
  523. package/dist/sandbox/admin-firestore/remote.d.ts +97 -0
  524. package/dist/sandbox/admin-firestore/remote.d.ts.map +1 -0
  525. package/dist/sandbox/admin-firestore/remote.js +735 -0
  526. package/dist/sandbox/admin-firestore/remote.js.map +1 -0
  527. package/dist/sandbox/branches/index.d.ts +141 -0
  528. package/dist/sandbox/branches/index.d.ts.map +1 -0
  529. package/dist/sandbox/branches/index.js +327 -0
  530. package/dist/sandbox/branches/index.js.map +1 -0
  531. package/dist/sandbox/firestore/admin-compat/batch.d.ts +34 -0
  532. package/dist/sandbox/firestore/admin-compat/batch.d.ts.map +1 -0
  533. package/dist/sandbox/firestore/admin-compat/batch.js +73 -0
  534. package/dist/sandbox/firestore/admin-compat/batch.js.map +1 -0
  535. package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts +38 -0
  536. package/dist/sandbox/firestore/admin-compat/doc-ref.d.ts.map +1 -0
  537. package/dist/sandbox/firestore/admin-compat/doc-ref.js +154 -0
  538. package/dist/sandbox/firestore/admin-compat/doc-ref.js.map +1 -0
  539. package/dist/sandbox/firestore/admin-compat/firestore.d.ts +45 -0
  540. package/dist/sandbox/firestore/admin-compat/firestore.d.ts.map +1 -0
  541. package/dist/sandbox/firestore/admin-compat/firestore.js +114 -0
  542. package/dist/sandbox/firestore/admin-compat/firestore.js.map +1 -0
  543. package/dist/sandbox/firestore/admin-compat/index.d.ts +45 -0
  544. package/dist/sandbox/firestore/admin-compat/index.d.ts.map +1 -0
  545. package/dist/sandbox/firestore/admin-compat/index.js +27 -0
  546. package/dist/sandbox/firestore/admin-compat/index.js.map +1 -0
  547. package/dist/sandbox/firestore/admin-compat/paths.d.ts +37 -0
  548. package/dist/sandbox/firestore/admin-compat/paths.d.ts.map +1 -0
  549. package/dist/sandbox/firestore/admin-compat/paths.js +49 -0
  550. package/dist/sandbox/firestore/admin-compat/paths.js.map +1 -0
  551. package/dist/sandbox/firestore/admin-compat/query.d.ts +261 -0
  552. package/dist/sandbox/firestore/admin-compat/query.d.ts.map +1 -0
  553. package/dist/sandbox/firestore/admin-compat/query.js +704 -0
  554. package/dist/sandbox/firestore/admin-compat/query.js.map +1 -0
  555. package/dist/sandbox/firestore/admin-compat/read-translation.d.ts +8 -0
  556. package/dist/sandbox/firestore/admin-compat/read-translation.d.ts.map +1 -0
  557. package/dist/sandbox/firestore/admin-compat/read-translation.js +59 -0
  558. package/dist/sandbox/firestore/admin-compat/read-translation.js.map +1 -0
  559. package/dist/sandbox/firestore/admin-compat/snapshots.d.ts +39 -0
  560. package/dist/sandbox/firestore/admin-compat/snapshots.d.ts.map +1 -0
  561. package/dist/sandbox/firestore/admin-compat/snapshots.js +50 -0
  562. package/dist/sandbox/firestore/admin-compat/snapshots.js.map +1 -0
  563. package/dist/sandbox/firestore/admin-compat/transaction.d.ts +35 -0
  564. package/dist/sandbox/firestore/admin-compat/transaction.d.ts.map +1 -0
  565. package/dist/sandbox/firestore/admin-compat/transaction.js +88 -0
  566. package/dist/sandbox/firestore/admin-compat/transaction.js.map +1 -0
  567. package/dist/sandbox/firestore/admin-compat/types.d.ts +297 -0
  568. package/dist/sandbox/firestore/admin-compat/types.d.ts.map +1 -0
  569. package/dist/sandbox/firestore/admin-compat/types.js +127 -0
  570. package/dist/sandbox/firestore/admin-compat/types.js.map +1 -0
  571. package/dist/sandbox/firestore/admin-compat/value-order.d.ts +49 -0
  572. package/dist/sandbox/firestore/admin-compat/value-order.d.ts.map +1 -0
  573. package/dist/sandbox/firestore/admin-compat/value-order.js +172 -0
  574. package/dist/sandbox/firestore/admin-compat/value-order.js.map +1 -0
  575. package/dist/sandbox/firestore/auto-id.d.ts +26 -0
  576. package/dist/sandbox/firestore/auto-id.d.ts.map +1 -0
  577. package/dist/sandbox/firestore/auto-id.js +36 -0
  578. package/dist/sandbox/firestore/auto-id.js.map +1 -0
  579. package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts +48 -0
  580. package/dist/sandbox/firestore/converters/bytes-geopoint.d.ts.map +1 -0
  581. package/dist/sandbox/firestore/converters/bytes-geopoint.js +85 -0
  582. package/dist/sandbox/firestore/converters/bytes-geopoint.js.map +1 -0
  583. package/dist/sandbox/firestore/converters/fieldvalue.d.ts +69 -0
  584. package/dist/sandbox/firestore/converters/fieldvalue.d.ts.map +1 -0
  585. package/dist/sandbox/firestore/converters/fieldvalue.js +166 -0
  586. package/dist/sandbox/firestore/converters/fieldvalue.js.map +1 -0
  587. package/dist/sandbox/firestore/converters/reference.d.ts +31 -0
  588. package/dist/sandbox/firestore/converters/reference.d.ts.map +1 -0
  589. package/dist/sandbox/firestore/converters/reference.js +51 -0
  590. package/dist/sandbox/firestore/converters/reference.js.map +1 -0
  591. package/dist/sandbox/firestore/converters/timestamp.d.ts +32 -0
  592. package/dist/sandbox/firestore/converters/timestamp.d.ts.map +1 -0
  593. package/dist/sandbox/firestore/converters/timestamp.js +63 -0
  594. package/dist/sandbox/firestore/converters/timestamp.js.map +1 -0
  595. package/dist/sandbox/firestore/converters/user-timestamp.d.ts +46 -0
  596. package/dist/sandbox/firestore/converters/user-timestamp.d.ts.map +1 -0
  597. package/dist/sandbox/firestore/converters/user-timestamp.js +65 -0
  598. package/dist/sandbox/firestore/converters/user-timestamp.js.map +1 -0
  599. package/dist/sandbox/firestore/converters/vector.d.ts +24 -0
  600. package/dist/sandbox/firestore/converters/vector.d.ts.map +1 -0
  601. package/dist/sandbox/firestore/converters/vector.js +53 -0
  602. package/dist/sandbox/firestore/converters/vector.js.map +1 -0
  603. package/dist/sandbox/firestore/errors.d.ts +82 -0
  604. package/dist/sandbox/firestore/errors.d.ts.map +1 -0
  605. package/dist/sandbox/firestore/errors.js +54 -0
  606. package/dist/sandbox/firestore/errors.js.map +1 -0
  607. package/dist/sandbox/firestore/event-log.d.ts +99 -0
  608. package/dist/sandbox/firestore/event-log.d.ts.map +1 -0
  609. package/dist/sandbox/firestore/event-log.js +67 -0
  610. package/dist/sandbox/firestore/event-log.js.map +1 -0
  611. package/dist/sandbox/firestore/field-merge.d.ts +64 -0
  612. package/dist/sandbox/firestore/field-merge.d.ts.map +1 -0
  613. package/dist/sandbox/firestore/field-merge.js +221 -0
  614. package/dist/sandbox/firestore/field-merge.js.map +1 -0
  615. package/dist/sandbox/firestore/list-query-proof.d.ts +77 -0
  616. package/dist/sandbox/firestore/list-query-proof.d.ts.map +1 -0
  617. package/dist/sandbox/firestore/list-query-proof.js +170 -0
  618. package/dist/sandbox/firestore/list-query-proof.js.map +1 -0
  619. package/dist/sandbox/firestore/local-environment.d.ts +806 -0
  620. package/dist/sandbox/firestore/local-environment.d.ts.map +1 -0
  621. package/dist/sandbox/firestore/local-environment.js +3028 -0
  622. package/dist/sandbox/firestore/local-environment.js.map +1 -0
  623. package/dist/sandbox/firestore/local-state.d.ts +196 -0
  624. package/dist/sandbox/firestore/local-state.d.ts.map +1 -0
  625. package/dist/sandbox/firestore/local-state.js +413 -0
  626. package/dist/sandbox/firestore/local-state.js.map +1 -0
  627. package/dist/sandbox/firestore/overlay-backing.d.ts +44 -0
  628. package/dist/sandbox/firestore/overlay-backing.d.ts.map +1 -0
  629. package/dist/sandbox/firestore/overlay-backing.js +82 -0
  630. package/dist/sandbox/firestore/overlay-backing.js.map +1 -0
  631. package/dist/sandbox/firestore/sentinel-capture.d.ts +30 -0
  632. package/dist/sandbox/firestore/sentinel-capture.d.ts.map +1 -0
  633. package/dist/sandbox/firestore/sentinel-capture.js +61 -0
  634. package/dist/sandbox/firestore/sentinel-capture.js.map +1 -0
  635. package/dist/sandbox/firestore/snapshot-listeners.d.ts +284 -0
  636. package/dist/sandbox/firestore/snapshot-listeners.d.ts.map +1 -0
  637. package/dist/sandbox/firestore/snapshot-listeners.js +194 -0
  638. package/dist/sandbox/firestore/snapshot-listeners.js.map +1 -0
  639. package/dist/sandbox/firestore/topk.d.ts +12 -0
  640. package/dist/sandbox/firestore/topk.d.ts.map +1 -0
  641. package/dist/sandbox/firestore/topk.js +42 -0
  642. package/dist/sandbox/firestore/topk.js.map +1 -0
  643. package/dist/sandbox/firestore/transaction-merge.d.ts +55 -0
  644. package/dist/sandbox/firestore/transaction-merge.d.ts.map +1 -0
  645. package/dist/sandbox/firestore/transaction-merge.js +107 -0
  646. package/dist/sandbox/firestore/transaction-merge.js.map +1 -0
  647. package/dist/sandbox/firestore/transaction-types.d.ts +152 -0
  648. package/dist/sandbox/firestore/transaction-types.d.ts.map +1 -0
  649. package/dist/sandbox/firestore/transaction-types.js +10 -0
  650. package/dist/sandbox/firestore/transaction-types.js.map +1 -0
  651. package/dist/sandbox/firestore/transaction.d.ts +79 -0
  652. package/dist/sandbox/firestore/transaction.d.ts.map +1 -0
  653. package/dist/sandbox/firestore/transaction.js +95 -0
  654. package/dist/sandbox/firestore/transaction.js.map +1 -0
  655. package/dist/sandbox/firestore/value-equality.d.ts +2 -0
  656. package/dist/sandbox/firestore/value-equality.d.ts.map +1 -0
  657. package/dist/sandbox/firestore/value-equality.js +35 -0
  658. package/dist/sandbox/firestore/value-equality.js.map +1 -0
  659. package/dist/sandbox/firestore/value-resolver.d.ts +172 -0
  660. package/dist/sandbox/firestore/value-resolver.d.ts.map +1 -0
  661. package/dist/sandbox/firestore/value-resolver.js +221 -0
  662. package/dist/sandbox/firestore/value-resolver.js.map +1 -0
  663. package/dist/sandbox/firestore/wire-encoder.d.ts +14 -0
  664. package/dist/sandbox/firestore/wire-encoder.d.ts.map +1 -0
  665. package/dist/sandbox/firestore/wire-encoder.js +130 -0
  666. package/dist/sandbox/firestore/wire-encoder.js.map +1 -0
  667. package/dist/sandbox/index.d.ts +50 -0
  668. package/dist/sandbox/index.d.ts.map +1 -0
  669. package/dist/sandbox/index.js +63 -0
  670. package/dist/sandbox/index.js.map +1 -0
  671. package/dist/sandbox/internal/index.d.ts +36 -0
  672. package/dist/sandbox/internal/index.d.ts.map +1 -0
  673. package/dist/sandbox/internal/index.js +72 -0
  674. package/dist/sandbox/internal/index.js.map +1 -0
  675. package/dist/sandbox/internal/sandbox-impl.d.ts +343 -0
  676. package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -0
  677. package/dist/sandbox/internal/sandbox-impl.js +718 -0
  678. package/dist/sandbox/internal/sandbox-impl.js.map +1 -0
  679. package/dist/sandbox/persistence/backends.d.ts +37 -0
  680. package/dist/sandbox/persistence/backends.d.ts.map +1 -0
  681. package/dist/sandbox/persistence/backends.js +202 -0
  682. package/dist/sandbox/persistence/backends.js.map +1 -0
  683. package/dist/sandbox/persistence/chunk-format.d.ts +58 -0
  684. package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -0
  685. package/dist/sandbox/persistence/chunk-format.js +163 -0
  686. package/dist/sandbox/persistence/chunk-format.js.map +1 -0
  687. package/dist/sandbox/persistence/controller.d.ts +39 -0
  688. package/dist/sandbox/persistence/controller.d.ts.map +1 -0
  689. package/dist/sandbox/persistence/controller.js +605 -0
  690. package/dist/sandbox/persistence/controller.js.map +1 -0
  691. package/dist/sandbox/persistence/index.d.ts +13 -0
  692. package/dist/sandbox/persistence/index.d.ts.map +1 -0
  693. package/dist/sandbox/persistence/index.js +5 -0
  694. package/dist/sandbox/persistence/index.js.map +1 -0
  695. package/dist/sandbox/persistence/serialize.d.ts +53 -0
  696. package/dist/sandbox/persistence/serialize.d.ts.map +1 -0
  697. package/dist/sandbox/persistence/serialize.js +98 -0
  698. package/dist/sandbox/persistence/serialize.js.map +1 -0
  699. package/dist/sandbox/persistence/types.d.ts +118 -0
  700. package/dist/sandbox/persistence/types.d.ts.map +1 -0
  701. package/dist/sandbox/persistence/types.js +15 -0
  702. package/dist/sandbox/persistence/types.js.map +1 -0
  703. package/dist/sandbox/remote.d.ts +118 -0
  704. package/dist/sandbox/remote.d.ts.map +1 -0
  705. package/dist/sandbox/remote.js +60 -0
  706. package/dist/sandbox/remote.js.map +1 -0
  707. package/dist/sandbox/replay/index.d.ts +106 -0
  708. package/dist/sandbox/replay/index.d.ts.map +1 -0
  709. package/dist/sandbox/replay/index.js +246 -0
  710. package/dist/sandbox/replay/index.js.map +1 -0
  711. package/dist/sandbox/sandbox-context.d.ts +40 -0
  712. package/dist/sandbox/sandbox-context.d.ts.map +1 -0
  713. package/dist/sandbox/sandbox-context.js +72 -0
  714. package/dist/sandbox/sandbox-context.js.map +1 -0
  715. package/dist/sandbox/tab-sync/index.d.ts +120 -0
  716. package/dist/sandbox/tab-sync/index.d.ts.map +1 -0
  717. package/dist/sandbox/tab-sync/index.js +272 -0
  718. package/dist/sandbox/tab-sync/index.js.map +1 -0
  719. package/dist/sandbox/types.d.ts +1235 -0
  720. package/dist/sandbox/types.d.ts.map +1 -0
  721. package/dist/sandbox/types.js +46 -0
  722. package/dist/sandbox/types.js.map +1 -0
  723. package/dist/storage/admin/api.d.ts +206 -0
  724. package/dist/storage/admin/api.d.ts.map +1 -0
  725. package/dist/storage/admin/api.js +349 -0
  726. package/dist/storage/admin/api.js.map +1 -0
  727. package/dist/storage/admin/handler.d.ts +29 -0
  728. package/dist/storage/admin/handler.d.ts.map +1 -0
  729. package/dist/storage/admin/handler.js +82 -0
  730. package/dist/storage/admin/handler.js.map +1 -0
  731. package/dist/storage/admin/spec.d.ts +64 -0
  732. package/dist/storage/admin/spec.d.ts.map +1 -0
  733. package/dist/storage/admin/spec.js +8 -0
  734. package/dist/storage/admin/spec.js.map +1 -0
  735. package/dist/storage/admin/tools.d.ts +23 -0
  736. package/dist/storage/admin/tools.d.ts.map +1 -0
  737. package/dist/storage/admin/tools.js +90 -0
  738. package/dist/storage/admin/tools.js.map +1 -0
  739. package/dist/storage/download.d.ts +27 -0
  740. package/dist/storage/download.d.ts.map +1 -0
  741. package/dist/storage/download.js +136 -0
  742. package/dist/storage/download.js.map +1 -0
  743. package/dist/storage/enforce.d.ts +26 -0
  744. package/dist/storage/enforce.d.ts.map +1 -0
  745. package/dist/storage/enforce.js +16 -0
  746. package/dist/storage/enforce.js.map +1 -0
  747. package/dist/storage/errors.d.ts +46 -0
  748. package/dist/storage/errors.d.ts.map +1 -0
  749. package/dist/storage/errors.js +62 -0
  750. package/dist/storage/errors.js.map +1 -0
  751. package/dist/storage/index.d.ts +49 -0
  752. package/dist/storage/index.d.ts.map +1 -0
  753. package/dist/storage/index.js +60 -0
  754. package/dist/storage/index.js.map +1 -0
  755. package/dist/storage/internal.d.ts +18 -0
  756. package/dist/storage/internal.d.ts.map +1 -0
  757. package/dist/storage/internal.js +18 -0
  758. package/dist/storage/internal.js.map +1 -0
  759. package/dist/storage/list.d.ts +17 -0
  760. package/dist/storage/list.d.ts.map +1 -0
  761. package/dist/storage/list.js +91 -0
  762. package/dist/storage/list.js.map +1 -0
  763. package/dist/storage/metadata.d.ts +86 -0
  764. package/dist/storage/metadata.d.ts.map +1 -0
  765. package/dist/storage/metadata.js +167 -0
  766. package/dist/storage/metadata.js.map +1 -0
  767. package/dist/storage/persistence.d.ts +134 -0
  768. package/dist/storage/persistence.d.ts.map +1 -0
  769. package/dist/storage/persistence.js +132 -0
  770. package/dist/storage/persistence.js.map +1 -0
  771. package/dist/storage/reference.d.ts +63 -0
  772. package/dist/storage/reference.d.ts.map +1 -0
  773. package/dist/storage/reference.js +156 -0
  774. package/dist/storage/reference.js.map +1 -0
  775. package/dist/storage/rules.d.ts +176 -0
  776. package/dist/storage/rules.d.ts.map +1 -0
  777. package/dist/storage/rules.js +621 -0
  778. package/dist/storage/rules.js.map +1 -0
  779. package/dist/storage/service.d.ts +139 -0
  780. package/dist/storage/service.d.ts.map +1 -0
  781. package/dist/storage/service.js +241 -0
  782. package/dist/storage/service.js.map +1 -0
  783. package/dist/storage/upload.d.ts +43 -0
  784. package/dist/storage/upload.d.ts.map +1 -0
  785. package/dist/storage/upload.js +235 -0
  786. package/dist/storage/upload.js.map +1 -0
  787. package/package.json +110 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/firestore/admin-compat/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Public types for the Admin-SDK-compat Firestore wrapper.
3
+ *
4
+ * Mirrors the firebase-admin Firestore surface, scoped to what an agent
5
+ * running code under `LocalEnvironment` actually exercises. Listener
6
+ * semantics, offline persistence, bundles, and named queries are
7
+ * deliberately omitted — methods that touch them throw
8
+ * `FirestoreCompatError { code: 'unimplemented' }` rather than return
9
+ * silent no-ops (see design rationale, the
10
+ * "deliberately incomplete" agreement).
11
+ *
12
+ * Public-API `unknown` policy: every `unknown` here sits at a real
13
+ * Firestore "stores arbitrary data" boundary (`DocumentData` values,
14
+ * where-clause values, FieldValue construction) — matching the Admin
15
+ * SDK's own type-shape decisions. Zero `: any`.
16
+ */
17
+ export class FieldValue {
18
+ static serverTimestamp() {
19
+ return { __type: 'serverTimestamp' };
20
+ }
21
+ static increment(n) {
22
+ return { __type: 'increment', value: n };
23
+ }
24
+ static arrayUnion(...values) {
25
+ return { __type: 'arrayUnion', values };
26
+ }
27
+ static arrayRemove(...values) {
28
+ return { __type: 'arrayRemove', values };
29
+ }
30
+ static delete() {
31
+ return { __type: 'deleteField' };
32
+ }
33
+ }
34
+ // ─────────────────────────────────────────────────────────────────────────
35
+ // Timestamp — Admin SDK shape (`seconds` + `nanoseconds`). Distinct from
36
+ // the rules-internal Timestamp at `simulator/wrappers/timestamp.ts` which
37
+ // uses `nanos` and carries evaluator hooks (binaryOp/callMethod). Both
38
+ // round-trip through the same `__type:'timestamp'` discriminator on the
39
+ // wire; the compat class is the user-facing surface.
40
+ // ─────────────────────────────────────────────────────────────────────────
41
+ export class Timestamp {
42
+ seconds;
43
+ nanoseconds;
44
+ constructor(seconds, nanoseconds) {
45
+ this.seconds = seconds;
46
+ this.nanoseconds = nanoseconds;
47
+ }
48
+ static now() {
49
+ return Timestamp.fromMillis(Date.now());
50
+ }
51
+ static fromDate(d) {
52
+ return Timestamp.fromMillis(d.getTime());
53
+ }
54
+ static fromMillis(ms) {
55
+ // FS-B12 — derive nanoseconds as `floor((ms - seconds*1000) * 1e6)` so
56
+ // the value is ALWAYS non-negative (matching `fb.Timestamp.fromMillis`).
57
+ // The old `(ms % 1000) * 1e6` produced negative nanos for negative
58
+ // millis, so `fromMillis(-500)` round-tripped to -1500 via toMillis().
59
+ const seconds = Math.floor(ms / 1000);
60
+ const nanoseconds = Math.floor((ms - seconds * 1000) * 1_000_000);
61
+ return new Timestamp(seconds, nanoseconds);
62
+ }
63
+ toDate() {
64
+ return new Date(this.toMillis());
65
+ }
66
+ toMillis() {
67
+ // FS-B12 — `nanoseconds / 1e6` (matching `fb.Timestamp.toMillis`), not
68
+ // `floor(nanoseconds / 1e6)`; the floor dropped sub-millisecond nanos
69
+ // and broke the negative-millis round-trip.
70
+ return this.seconds * 1000 + this.nanoseconds / 1_000_000;
71
+ }
72
+ /** FS-B12 — value equality, mirroring `fb.Timestamp.isEqual`. */
73
+ isEqual(other) {
74
+ return other.seconds === this.seconds && other.nanoseconds === this.nanoseconds;
75
+ }
76
+ /** FS-B12 — textual form, mirroring `fb.Timestamp.toString`. */
77
+ toString() {
78
+ return `Timestamp(seconds=${this.seconds}, nanoseconds=${this.nanoseconds})`;
79
+ }
80
+ /** FS-B12 — JSON form, mirroring `fb.Timestamp.toJSON`. */
81
+ toJSON() {
82
+ return {
83
+ type: 'firestore/timestamp/1.0',
84
+ seconds: this.seconds,
85
+ nanoseconds: this.nanoseconds,
86
+ };
87
+ }
88
+ /**
89
+ * FS-B12 — primitive coercion for `<`/`<=`/`>=`/`>` comparisons, mirroring
90
+ * `fb.Timestamp.valueOf`: a zero-padded `<seconds>.<nanoseconds>` string
91
+ * (seconds offset by MIN_SECONDS so it stays non-negative and lexically
92
+ * ordered).
93
+ */
94
+ valueOf() {
95
+ const MIN_SECONDS = -62_135_596_800;
96
+ const adjustedSeconds = this.seconds - MIN_SECONDS;
97
+ const formattedSeconds = String(adjustedSeconds).padStart(12, '0');
98
+ const formattedNanoseconds = String(this.nanoseconds).padStart(9, '0');
99
+ return `${formattedSeconds}.${formattedNanoseconds}`;
100
+ }
101
+ }
102
+ // ─────────────────────────────────────────────────────────────────────────
103
+ // FirestoreCompatError — throwable Error subclass that carries the
104
+ // SDK's typed `FirestoreErrorCode` on `.code`. Real Admin SDK throws a
105
+ // `FirestoreError extends Error` with the same shape, so consumer code
106
+ // patterns like `try {} catch (e) { if (e.code === 'already-exists') }`
107
+ // work unchanged against this wrapper.
108
+ // ─────────────────────────────────────────────────────────────────────────
109
+ export class FirestoreCompatError extends Error {
110
+ code;
111
+ /**
112
+ * The structured `FirestoreSimError` this throw was built from. Kept
113
+ * as a back-channel so downstream wrappers (`pyric/sandbox`) can
114
+ * read the eval-time `request`/`resource` context without re-parsing
115
+ * the message string. Production Admin SDK has no equivalent — this
116
+ * field is sandbox-only and intentionally not surfaced on `Error`'s
117
+ * own enumeration unless a caller reaches for it explicitly.
118
+ */
119
+ simError;
120
+ constructor(err) {
121
+ super(err.message);
122
+ this.name = 'FirestoreError';
123
+ this.code = err.code;
124
+ this.simError = err;
125
+ }
126
+ }
127
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/sandbox/firestore/admin-compat/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Canonical Firestore value comparator (FS-B3).
3
+ *
4
+ * Firestore orders heterogeneous field values by a fixed *type order*
5
+ * first, then within a type. The old query comparator ignored this and
6
+ * fell back to `String(a).localeCompare(String(b))`, which mis-ordered
7
+ * everything that wasn't same-typed scalars and mishandled NaN. This
8
+ * module mirrors `clones/firebase-js-sdk/packages/firestore/src/model/
9
+ * type_order.ts` + `model/values.ts` (`valueCompare`) for the plain-JS
10
+ * value shapes the sandbox stores.
11
+ *
12
+ * Type order (ascending):
13
+ * null < boolean < number < timestamp < string < bytes < reference
14
+ * < geopoint < array < map
15
+ *
16
+ * The sandbox stores values as plain JS rather than the wire `Value`
17
+ * proto, so each type is detected structurally:
18
+ * - number: `typeof === 'number'` or `'bigint'` (NaN sorts smallest
19
+ * among numbers, matching `compareNumbers`).
20
+ * - timestamp: an object with numeric `seconds` + (`nanos` |
21
+ * `nanoseconds`) — covers both the rules `Timestamp` ({seconds,nanos})
22
+ * and the admin-compat `Timestamp` ({seconds,nanoseconds}).
23
+ * - bytes: an object with a `Uint8Array` `data` field (rules `Bytes`).
24
+ * - geopoint: an object with numeric `latitude` + `longitude`.
25
+ * - reference: an object with a string `path` (a doc ref) — but NOT a
26
+ * timestamp/geopoint/bytes (checked first).
27
+ * - array: `Array.isArray`.
28
+ * - map: any other plain object.
29
+ */
30
+ export declare const enum TypeRank {
31
+ Null = 0,
32
+ Boolean = 1,
33
+ Number = 2,
34
+ Timestamp = 3,
35
+ String = 4,
36
+ Bytes = 5,
37
+ Reference = 6,
38
+ GeoPoint = 7,
39
+ Array = 8,
40
+ Map = 9
41
+ }
42
+ /** Rank a value into the canonical Firestore type order. */
43
+ export declare function typeOrderRank(v: unknown): TypeRank;
44
+ /**
45
+ * Compare two Firestore field values by canonical type order, then
46
+ * within-type. Returns <0, 0, >0. Mirrors upstream `valueCompare`.
47
+ */
48
+ export declare function compareValues(a: unknown, b: unknown): number;
49
+ //# sourceMappingURL=value-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-order.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/firestore/admin-compat/value-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,0BAAkB,QAAQ;IACxB,IAAI,IAAI;IACR,OAAO,IAAI;IACX,MAAM,IAAI;IACV,SAAS,IAAI;IACb,MAAM,IAAI;IACV,KAAK,IAAI;IACT,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,KAAK,IAAI;IACT,GAAG,IAAI;CACR;AA2BD,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAkBlD;AA0BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAoE5D"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Canonical Firestore value comparator (FS-B3).
3
+ *
4
+ * Firestore orders heterogeneous field values by a fixed *type order*
5
+ * first, then within a type. The old query comparator ignored this and
6
+ * fell back to `String(a).localeCompare(String(b))`, which mis-ordered
7
+ * everything that wasn't same-typed scalars and mishandled NaN. This
8
+ * module mirrors `clones/firebase-js-sdk/packages/firestore/src/model/
9
+ * type_order.ts` + `model/values.ts` (`valueCompare`) for the plain-JS
10
+ * value shapes the sandbox stores.
11
+ *
12
+ * Type order (ascending):
13
+ * null < boolean < number < timestamp < string < bytes < reference
14
+ * < geopoint < array < map
15
+ *
16
+ * The sandbox stores values as plain JS rather than the wire `Value`
17
+ * proto, so each type is detected structurally:
18
+ * - number: `typeof === 'number'` or `'bigint'` (NaN sorts smallest
19
+ * among numbers, matching `compareNumbers`).
20
+ * - timestamp: an object with numeric `seconds` + (`nanos` |
21
+ * `nanoseconds`) — covers both the rules `Timestamp` ({seconds,nanos})
22
+ * and the admin-compat `Timestamp` ({seconds,nanoseconds}).
23
+ * - bytes: an object with a `Uint8Array` `data` field (rules `Bytes`).
24
+ * - geopoint: an object with numeric `latitude` + `longitude`.
25
+ * - reference: an object with a string `path` (a doc ref) — but NOT a
26
+ * timestamp/geopoint/bytes (checked first).
27
+ * - array: `Array.isArray`.
28
+ * - map: any other plain object.
29
+ */
30
+ function isTimestampLike(v) {
31
+ return (typeof v.seconds === 'number' &&
32
+ (typeof v.nanos === 'number' || typeof v.nanoseconds === 'number'));
33
+ }
34
+ function isGeoPointLike(v) {
35
+ return typeof v.latitude === 'number' && typeof v.longitude === 'number';
36
+ }
37
+ function isBytesLike(v) {
38
+ return v.data instanceof Uint8Array;
39
+ }
40
+ function isReferenceLike(v) {
41
+ return typeof v.path === 'string';
42
+ }
43
+ /** Rank a value into the canonical Firestore type order. */
44
+ export function typeOrderRank(v) {
45
+ if (v === null || v === undefined)
46
+ return 0 /* TypeRank.Null */;
47
+ const t = typeof v;
48
+ if (t === 'boolean')
49
+ return 1 /* TypeRank.Boolean */;
50
+ if (t === 'number' || t === 'bigint')
51
+ return 2 /* TypeRank.Number */;
52
+ if (t === 'string')
53
+ return 4 /* TypeRank.String */;
54
+ if (Array.isArray(v))
55
+ return 8 /* TypeRank.Array */;
56
+ if (t === 'object') {
57
+ const o = v;
58
+ if (isTimestampLike(o))
59
+ return 3 /* TypeRank.Timestamp */;
60
+ if (isBytesLike(o))
61
+ return 5 /* TypeRank.Bytes */;
62
+ if (isGeoPointLike(o))
63
+ return 7 /* TypeRank.GeoPoint */;
64
+ if (isReferenceLike(o))
65
+ return 6 /* TypeRank.Reference */;
66
+ return 9 /* TypeRank.Map */;
67
+ }
68
+ // Unknown (symbol/function) — treat as map-rank so it sorts last and
69
+ // never throws. Should not occur for stored Firestore data.
70
+ return 9 /* TypeRank.Map */;
71
+ }
72
+ function timestampMillisParts(v) {
73
+ const nanos = typeof v.nanos === 'number' ? v.nanos : (v.nanoseconds ?? 0);
74
+ return [v.seconds, nanos];
75
+ }
76
+ function compareNumbers(a, b) {
77
+ // NaN sorts as the smallest number (matches `compareNumbers` in
78
+ // values.ts: NaN < any non-NaN, NaN === NaN).
79
+ const aNaN = Number.isNaN(a);
80
+ const bNaN = Number.isNaN(b);
81
+ if (aNaN && bNaN)
82
+ return 0;
83
+ if (aNaN)
84
+ return -1;
85
+ if (bNaN)
86
+ return 1;
87
+ return a < b ? -1 : a > b ? 1 : 0;
88
+ }
89
+ function compareStrings(a, b) {
90
+ // Firestore compares strings by UTF-8 byte order. For the BMP-only
91
+ // corpus the sandbox exercises, JS's `<`/`>` (UTF-16 code-unit order)
92
+ // agrees with UTF-8 byte order; surrogate-pair edge cases are an
93
+ // accepted approximation (documented divergence).
94
+ return a < b ? -1 : a > b ? 1 : 0;
95
+ }
96
+ /**
97
+ * Compare two Firestore field values by canonical type order, then
98
+ * within-type. Returns <0, 0, >0. Mirrors upstream `valueCompare`.
99
+ */
100
+ export function compareValues(a, b) {
101
+ const ra = typeOrderRank(a);
102
+ const rb = typeOrderRank(b);
103
+ if (ra !== rb)
104
+ return ra < rb ? -1 : 1;
105
+ switch (ra) {
106
+ case 0 /* TypeRank.Null */:
107
+ return 0;
108
+ case 1 /* TypeRank.Boolean */:
109
+ return (a === b) ? 0 : (a ? 1 : -1);
110
+ case 2 /* TypeRank.Number */:
111
+ return compareNumbers(Number(a), Number(b));
112
+ case 3 /* TypeRank.Timestamp */: {
113
+ const [as, an] = timestampMillisParts(a);
114
+ const [bs, bn] = timestampMillisParts(b);
115
+ if (as !== bs)
116
+ return as < bs ? -1 : 1;
117
+ return an < bn ? -1 : an > bn ? 1 : 0;
118
+ }
119
+ case 4 /* TypeRank.String */:
120
+ return compareStrings(a, b);
121
+ case 5 /* TypeRank.Bytes */: {
122
+ const ab = a.data;
123
+ const bb = b.data;
124
+ const n = Math.min(ab.length, bb.length);
125
+ for (let i = 0; i < n; i++) {
126
+ if (ab[i] !== bb[i])
127
+ return ab[i] < bb[i] ? -1 : 1;
128
+ }
129
+ return ab.length < bb.length ? -1 : ab.length > bb.length ? 1 : 0;
130
+ }
131
+ case 6 /* TypeRank.Reference */:
132
+ return compareStrings(a.path, b.path);
133
+ case 7 /* TypeRank.GeoPoint */: {
134
+ const ag = a;
135
+ const bg = b;
136
+ if (ag.latitude !== bg.latitude)
137
+ return ag.latitude < bg.latitude ? -1 : 1;
138
+ return ag.longitude < bg.longitude ? -1 : ag.longitude > bg.longitude ? 1 : 0;
139
+ }
140
+ case 8 /* TypeRank.Array */: {
141
+ const aa = a;
142
+ const ba = b;
143
+ const n = Math.min(aa.length, ba.length);
144
+ for (let i = 0; i < n; i++) {
145
+ const cmp = compareValues(aa[i], ba[i]);
146
+ if (cmp !== 0)
147
+ return cmp;
148
+ }
149
+ return aa.length < ba.length ? -1 : aa.length > ba.length ? 1 : 0;
150
+ }
151
+ case 9 /* TypeRank.Map */: {
152
+ // Maps compare by sorted key, then value, then length — matching
153
+ // upstream `compareMaps`.
154
+ const am = a;
155
+ const bm = b;
156
+ const aKeys = Object.keys(am).sort();
157
+ const bKeys = Object.keys(bm).sort();
158
+ const n = Math.min(aKeys.length, bKeys.length);
159
+ for (let i = 0; i < n; i++) {
160
+ if (aKeys[i] !== bKeys[i])
161
+ return aKeys[i] < bKeys[i] ? -1 : 1;
162
+ const cmp = compareValues(am[aKeys[i]], bm[bKeys[i]]);
163
+ if (cmp !== 0)
164
+ return cmp;
165
+ }
166
+ return aKeys.length < bKeys.length ? -1 : aKeys.length > bKeys.length ? 1 : 0;
167
+ }
168
+ default:
169
+ return 0;
170
+ }
171
+ }
172
+ //# sourceMappingURL=value-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-order.js","sourceRoot":"","sources":["../../../../src/sandbox/firestore/admin-compat/value-order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Item 7 — Firestore-compatible auto document ID generator.
3
+ *
4
+ * Production Firestore mints 20-character document IDs from the
5
+ * alphabet `[A-Za-z0-9]` (62 characters, ~119 bits of entropy). The
6
+ * sim-side generator matches that exact shape so any test that
7
+ * captures an auto-id and asserts on its format gets the same answer
8
+ * a live `addDoc()` call would.
9
+ *
10
+ * Uses the Web Crypto `getRandomValues` surface for entropy — exposed
11
+ * on `globalThis.crypto` in Node 19+ and every browser. Each generated
12
+ * character consumes one random byte, mod 62. The mod-bias is tiny at
13
+ * 62/256 ≈ 24% and matches what the JS Firestore SDK does internally —
14
+ * kept identical so a test's collision probability is comparable
15
+ * across local and prod runs. Web Crypto keeps this module browser-
16
+ * safe (no `node:crypto` import).
17
+ */
18
+ export declare const FIRESTORE_AUTO_ID_LENGTH = 20;
19
+ export declare const FIRESTORE_AUTO_ID_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
20
+ /**
21
+ * Generate a single 20-character Firestore auto ID. Backed by
22
+ * cryptographically-strong randomness so 1000-sample collision tests
23
+ * succeed even under heavy parallelism in the test runner.
24
+ */
25
+ export declare function generateAutoId(): string;
26
+ //# sourceMappingURL=auto-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-id.d.ts","sourceRoot":"","sources":["../../../src/sandbox/firestore/auto-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,eAAO,MAAM,wBAAwB,KAAY,CAAC;AAClD,eAAO,MAAM,0BAA0B,mEAAW,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAQvC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Item 7 — Firestore-compatible auto document ID generator.
3
+ *
4
+ * Production Firestore mints 20-character document IDs from the
5
+ * alphabet `[A-Za-z0-9]` (62 characters, ~119 bits of entropy). The
6
+ * sim-side generator matches that exact shape so any test that
7
+ * captures an auto-id and asserts on its format gets the same answer
8
+ * a live `addDoc()` call would.
9
+ *
10
+ * Uses the Web Crypto `getRandomValues` surface for entropy — exposed
11
+ * on `globalThis.crypto` in Node 19+ and every browser. Each generated
12
+ * character consumes one random byte, mod 62. The mod-bias is tiny at
13
+ * 62/256 ≈ 24% and matches what the JS Firestore SDK does internally —
14
+ * kept identical so a test's collision probability is comparable
15
+ * across local and prod runs. Web Crypto keeps this module browser-
16
+ * safe (no `node:crypto` import).
17
+ */
18
+ const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
19
+ const ID_LENGTH = 20;
20
+ export const FIRESTORE_AUTO_ID_LENGTH = ID_LENGTH;
21
+ export const FIRESTORE_AUTO_ID_ALPHABET = ALPHABET;
22
+ /**
23
+ * Generate a single 20-character Firestore auto ID. Backed by
24
+ * cryptographically-strong randomness so 1000-sample collision tests
25
+ * succeed even under heavy parallelism in the test runner.
26
+ */
27
+ export function generateAutoId() {
28
+ const bytes = new Uint8Array(ID_LENGTH);
29
+ globalThis.crypto.getRandomValues(bytes);
30
+ let out = '';
31
+ for (let i = 0; i < ID_LENGTH; i++) {
32
+ out += ALPHABET[bytes[i] % ALPHABET.length];
33
+ }
34
+ return out;
35
+ }
36
+ //# sourceMappingURL=auto-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-id.js","sourceRoot":"","sources":["../../../src/sandbox/firestore/auto-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,QAAQ,GACZ,gEAAgE,CAAC;AAEnE,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Bytes + GeoPoint write-boundary converters.
3
+ *
4
+ * Wraps `firebase/firestore` `Bytes` and `GeoPoint` instances into our
5
+ * {@link Bytes} / {@link LatLng} wrappers at the write boundary.
6
+ *
7
+ * Without these converters, a `Bytes` / `GeoPoint` instance passed via
8
+ * `setDoc({ b: Bytes.fromBase64String(...), g: new GeoPoint(...) })`
9
+ * would land in `LocalState` as the `firebase/firestore` class instance.
10
+ * Two problems with that:
11
+ *
12
+ * 1. Rules evaluator detects these types via `instanceof
13
+ * `pyric/rules`.Bytes` / `instanceof LatLng` — a
14
+ * `fb.Bytes` instance fails both checks, so `data.b is bytes`
15
+ * returns false.
16
+ * 2. The admin-compat read-path walker in `snapshots.ts` walks any
17
+ * `typeof === 'object'` value via `Object.entries`, which on a
18
+ * `fb.Bytes` instance enumerates private fields like `_byteString`
19
+ * and emits a plain object. Round-trip is lost — consumer code
20
+ * that wrote a `Bytes` reads back `{ _byteString: '...' }` instead
21
+ * of a `Bytes` instance.
22
+ *
23
+ * Detection strategy — duck typing on the firebase/firestore SDK shape:
24
+ *
25
+ * `Bytes`:
26
+ * - method `toBase64()` returning string
27
+ * - method `toUint8Array()` returning Uint8Array
28
+ * - method `isEqual` (function)
29
+ *
30
+ * `GeoPoint`:
31
+ * - `latitude` and `longitude` getters returning number
32
+ * - method `isEqual` (function)
33
+ *
34
+ * We deliberately don't `instanceof fb.Bytes` / `instanceof fb.GeoPoint`
35
+ * because:
36
+ * 1. The simulator package shouldn't take a hard dependency on
37
+ * `firebase/firestore` (it's a consumer concern), and
38
+ * 2. Multiple `firebase` copies in a workspace would defeat
39
+ * `instanceof`.
40
+ *
41
+ * Idempotency: each converter rejects its own output (our
42
+ * `pyric/rules` wrapper) by `instanceof` check, so a second
43
+ * resolver pass is a no-op.
44
+ */
45
+ import { type ValueConverter } from '../value-resolver.js';
46
+ export declare const bytesConverter: ValueConverter;
47
+ export declare const geoPointConverter: ValueConverter;
48
+ //# sourceMappingURL=bytes-geopoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes-geopoint.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/firestore/converters/bytes-geopoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyCjE,eAAO,MAAM,cAAc,EAAE,cAM5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAM/B,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Bytes + GeoPoint write-boundary converters.
3
+ *
4
+ * Wraps `firebase/firestore` `Bytes` and `GeoPoint` instances into our
5
+ * {@link Bytes} / {@link LatLng} wrappers at the write boundary.
6
+ *
7
+ * Without these converters, a `Bytes` / `GeoPoint` instance passed via
8
+ * `setDoc({ b: Bytes.fromBase64String(...), g: new GeoPoint(...) })`
9
+ * would land in `LocalState` as the `firebase/firestore` class instance.
10
+ * Two problems with that:
11
+ *
12
+ * 1. Rules evaluator detects these types via `instanceof
13
+ * `pyric/rules`.Bytes` / `instanceof LatLng` — a
14
+ * `fb.Bytes` instance fails both checks, so `data.b is bytes`
15
+ * returns false.
16
+ * 2. The admin-compat read-path walker in `snapshots.ts` walks any
17
+ * `typeof === 'object'` value via `Object.entries`, which on a
18
+ * `fb.Bytes` instance enumerates private fields like `_byteString`
19
+ * and emits a plain object. Round-trip is lost — consumer code
20
+ * that wrote a `Bytes` reads back `{ _byteString: '...' }` instead
21
+ * of a `Bytes` instance.
22
+ *
23
+ * Detection strategy — duck typing on the firebase/firestore SDK shape:
24
+ *
25
+ * `Bytes`:
26
+ * - method `toBase64()` returning string
27
+ * - method `toUint8Array()` returning Uint8Array
28
+ * - method `isEqual` (function)
29
+ *
30
+ * `GeoPoint`:
31
+ * - `latitude` and `longitude` getters returning number
32
+ * - method `isEqual` (function)
33
+ *
34
+ * We deliberately don't `instanceof fb.Bytes` / `instanceof fb.GeoPoint`
35
+ * because:
36
+ * 1. The simulator package shouldn't take a hard dependency on
37
+ * `firebase/firestore` (it's a consumer concern), and
38
+ * 2. Multiple `firebase` copies in a workspace would defeat
39
+ * `instanceof`.
40
+ *
41
+ * Idempotency: each converter rejects its own output (our
42
+ * `pyric/rules` wrapper) by `instanceof` check, so a second
43
+ * resolver pass is a no-op.
44
+ */
45
+ import { KEEP } from '../value-resolver.js';
46
+ import { Bytes as RulesBytes, LatLng } from 'pyric/rules';
47
+ function isFbBytes(v) {
48
+ if (v === null || typeof v !== 'object')
49
+ return false;
50
+ // Must NOT be our own wrapper — already converted.
51
+ if (v instanceof RulesBytes)
52
+ return false;
53
+ const o = v;
54
+ return (typeof o.toBase64 === 'function' &&
55
+ typeof o.toUint8Array === 'function' &&
56
+ typeof o.isEqual === 'function');
57
+ }
58
+ function isFbGeoPoint(v) {
59
+ if (v === null || typeof v !== 'object')
60
+ return false;
61
+ // Must NOT be our own wrapper — already converted.
62
+ if (v instanceof LatLng)
63
+ return false;
64
+ const o = v;
65
+ return (typeof o.latitude === 'number' &&
66
+ typeof o.longitude === 'number' &&
67
+ typeof o.isEqual === 'function');
68
+ }
69
+ export const bytesConverter = {
70
+ name: 'fb-bytes-to-rules-bytes',
71
+ convert(value) {
72
+ if (!isFbBytes(value))
73
+ return KEEP;
74
+ return new RulesBytes(value.toUint8Array());
75
+ },
76
+ };
77
+ export const geoPointConverter = {
78
+ name: 'fb-geopoint-to-rules-latlng',
79
+ convert(value) {
80
+ if (!isFbGeoPoint(value))
81
+ return KEEP;
82
+ return new LatLng(value.latitude, value.longitude);
83
+ },
84
+ };
85
+ //# sourceMappingURL=bytes-geopoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes-geopoint.js","sourceRoot":"","sources":["../../../../src/sandbox/firestore/converters/bytes-geopoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,OAAO,EAAE,IAAI,EAAuB,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAS1D,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,mDAAmD;IACnD,IAAI,CAAC,YAAY,UAAU;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU;QAChC,OAAO,CAAC,CAAC,YAAY,KAAK,UAAU;QACpC,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAChC,CAAC;AACJ,CAAC;AASD,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,mDAAmD;IACnD,IAAI,CAAC,YAAY,MAAM;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,IAAI,EAAE,6BAA6B;IACnC,OAAO,CAAC,KAAK;QACX,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF,CAAC"}