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":"sandbox-impl.js","sourceRoot":"","sources":["../../../src/sandbox/internal/sandbox-impl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Backends that satisfy {@link PersistenceBackend} (record-shaped, v3).
3
+ *
4
+ * memory = in-process Map<key, Map<recordId, record>>. Fallback in
5
+ * non-browser hosts and a deterministic store in tests. Clones
6
+ * records in/out so stored values are decoupled from callers,
7
+ * mirroring IndexedDB's structured-clone value semantics.
8
+ * indexedDB = one IndexedDB database per `key`, one object store
9
+ * (`snapshots`) holding many records keyed by bucket id. Records
10
+ * are stored natively (structured clone), so vectors and other
11
+ * binary-ish values persist without a keyspace-sized string.
12
+ *
13
+ * Each operation opens, transacts, and closes, no connection pooling. The
14
+ * volume is "a handful of dirty buckets every few hundred ms", so open-cost is
15
+ * irrelevant and not managing a long-lived connection across resets is simpler.
16
+ */
17
+ import type { PersistenceBackend } from './types.js';
18
+ /**
19
+ * A record-shaped backend over a single-blob store (read/write/clear ONE blob).
20
+ * The whole record set is bundled into that blob, for serve's committable export
21
+ * file / HTTP state endpoint and any single-key store. It loses chunking's scale
22
+ * benefit by design (the blob IS the single artifact). The blob is loaded once and
23
+ * cached, so a restore (list + per-record get) costs one read, not one per record.
24
+ */
25
+ export declare function recordBackendOverBlob(io: {
26
+ read(): Promise<string | null>;
27
+ write(blob: string): Promise<void>;
28
+ clear(): Promise<void>;
29
+ }): PersistenceBackend;
30
+ export declare function createMemoryBackend(): PersistenceBackend;
31
+ /**
32
+ * Build an IndexedDB-backed `PersistenceBackend`. Throws synchronously when
33
+ * called outside a browser (no `indexedDB` global) so callers can detect the
34
+ * absence and fall back to memory.
35
+ */
36
+ export declare function createIndexedDBBackend(): PersistenceBackend;
37
+ //# sourceMappingURL=backends.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backends.d.ts","sourceRoot":"","sources":["../../../src/sandbox/persistence/backends.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKrD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE;IACxC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,GAAG,kBAAkB,CA8BrB;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CA8BxD;AAqFD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,CA2C3D"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Backends that satisfy {@link PersistenceBackend} (record-shaped, v3).
3
+ *
4
+ * memory = in-process Map<key, Map<recordId, record>>. Fallback in
5
+ * non-browser hosts and a deterministic store in tests. Clones
6
+ * records in/out so stored values are decoupled from callers,
7
+ * mirroring IndexedDB's structured-clone value semantics.
8
+ * indexedDB = one IndexedDB database per `key`, one object store
9
+ * (`snapshots`) holding many records keyed by bucket id. Records
10
+ * are stored natively (structured clone), so vectors and other
11
+ * binary-ish values persist without a keyspace-sized string.
12
+ *
13
+ * Each operation opens, transacts, and closes, no connection pooling. The
14
+ * volume is "a handful of dirty buckets every few hundred ms", so open-cost is
15
+ * irrelevant and not managing a long-lived connection across resets is simpler.
16
+ */
17
+ import { bundleRecords, parseBundle } from './chunk-format.js';
18
+ const OBJECT_STORE = 'snapshots';
19
+ /**
20
+ * A record-shaped backend over a single-blob store (read/write/clear ONE blob).
21
+ * The whole record set is bundled into that blob, for serve's committable export
22
+ * file / HTTP state endpoint and any single-key store. It loses chunking's scale
23
+ * benefit by design (the blob IS the single artifact). The blob is loaded once and
24
+ * cached, so a restore (list + per-record get) costs one read, not one per record.
25
+ */
26
+ export function recordBackendOverBlob(io) {
27
+ let cache = null;
28
+ const load = async () => {
29
+ if (cache)
30
+ return cache;
31
+ const blob = await io.read();
32
+ cache = blob ? parseBundle(blob) : new Map();
33
+ return cache;
34
+ };
35
+ return {
36
+ async getRecord(_key, recordId) {
37
+ return (await load()).get(recordId) ?? null;
38
+ },
39
+ async listRecords() {
40
+ return [...(await load()).keys()];
41
+ },
42
+ async putRecords(_key, records) {
43
+ const all = await load();
44
+ for (const [id, rec] of records)
45
+ all.set(id, rec);
46
+ await io.write(bundleRecords(all));
47
+ },
48
+ async deleteRecords(_key, recordIds) {
49
+ const all = await load();
50
+ for (const id of recordIds)
51
+ all.delete(id);
52
+ await io.write(bundleRecords(all));
53
+ },
54
+ async clear() {
55
+ cache = new Map();
56
+ await io.clear();
57
+ },
58
+ };
59
+ }
60
+ export function createMemoryBackend() {
61
+ const store = new Map();
62
+ const bucketsFor = (key) => {
63
+ let m = store.get(key);
64
+ if (!m) {
65
+ m = new Map();
66
+ store.set(key, m);
67
+ }
68
+ return m;
69
+ };
70
+ return {
71
+ async getRecord(key, recordId) {
72
+ const rec = store.get(key)?.get(recordId);
73
+ return rec === undefined ? null : structuredClone(rec);
74
+ },
75
+ async listRecords(key) {
76
+ return [...(store.get(key)?.keys() ?? [])];
77
+ },
78
+ async putRecords(key, records) {
79
+ const m = bucketsFor(key);
80
+ for (const [id, rec] of records)
81
+ m.set(id, structuredClone(rec));
82
+ },
83
+ async deleteRecords(key, recordIds) {
84
+ const m = store.get(key);
85
+ if (m)
86
+ for (const id of recordIds)
87
+ m.delete(id);
88
+ },
89
+ async clear(key) {
90
+ store.delete(key);
91
+ },
92
+ };
93
+ }
94
+ /**
95
+ * Open (or create) the IndexedDB database for `key`. Each backend operation
96
+ * calls this fresh and closes the connection when done, which keeps the API simple
97
+ * and avoids stale-connection bugs across sandbox resets.
98
+ */
99
+ function openDb(key) {
100
+ return new Promise((resolve, reject) => {
101
+ const req = indexedDB.open(key, 1);
102
+ req.onupgradeneeded = () => {
103
+ const db = req.result;
104
+ if (!db.objectStoreNames.contains(OBJECT_STORE)) {
105
+ db.createObjectStore(OBJECT_STORE);
106
+ }
107
+ };
108
+ req.onsuccess = () => resolve(req.result);
109
+ req.onerror = () => reject(req.error ?? new Error(`Failed to open IndexedDB '${key}'`));
110
+ req.onblocked = () => reject(new Error(`IndexedDB open blocked for '${key}'`));
111
+ });
112
+ }
113
+ /** Run a single store request and resolve with its result on tx complete. */
114
+ function runOp(key, mode, run) {
115
+ return openDb(key).then((db) => new Promise((resolve, reject) => {
116
+ const tx = db.transaction(OBJECT_STORE, mode);
117
+ const store = tx.objectStore(OBJECT_STORE);
118
+ const req = run(store);
119
+ let result = null;
120
+ if (req) {
121
+ req.onsuccess = () => {
122
+ result = req.result ?? null;
123
+ };
124
+ req.onerror = () => reject(req.error);
125
+ }
126
+ tx.oncomplete = () => {
127
+ db.close();
128
+ resolve(result);
129
+ };
130
+ tx.onerror = () => {
131
+ db.close();
132
+ reject(tx.error);
133
+ };
134
+ tx.onabort = () => {
135
+ db.close();
136
+ reject(tx.error ?? new Error('IndexedDB transaction aborted'));
137
+ };
138
+ }));
139
+ }
140
+ /** Run many store mutations in ONE transaction; resolve on tx complete. */
141
+ function runBatch(key, fill) {
142
+ return openDb(key).then((db) => new Promise((resolve, reject) => {
143
+ const tx = db.transaction(OBJECT_STORE, 'readwrite');
144
+ fill(tx.objectStore(OBJECT_STORE));
145
+ tx.oncomplete = () => {
146
+ db.close();
147
+ resolve();
148
+ };
149
+ tx.onerror = () => {
150
+ db.close();
151
+ reject(tx.error);
152
+ };
153
+ tx.onabort = () => {
154
+ db.close();
155
+ reject(tx.error ?? new Error('IndexedDB transaction aborted'));
156
+ };
157
+ }));
158
+ }
159
+ /**
160
+ * Build an IndexedDB-backed `PersistenceBackend`. Throws synchronously when
161
+ * called outside a browser (no `indexedDB` global) so callers can detect the
162
+ * absence and fall back to memory.
163
+ */
164
+ export function createIndexedDBBackend() {
165
+ if (typeof indexedDB === 'undefined') {
166
+ throw new Error('IndexedDB is not available in this environment. ' +
167
+ 'Use { backend: "memory" } or supply an injectedBackend.');
168
+ }
169
+ return {
170
+ async getRecord(key, recordId) {
171
+ const v = await runOp(key, 'readonly', (store) => store.get(recordId));
172
+ return v ?? null;
173
+ },
174
+ async listRecords(key) {
175
+ const keys = await runOp(key, 'readonly', (store) => store.getAllKeys());
176
+ return (keys ?? []).map((k) => String(k));
177
+ },
178
+ async putRecords(key, records) {
179
+ await runBatch(key, (store) => {
180
+ for (const [id, rec] of records)
181
+ store.put(rec, id);
182
+ });
183
+ },
184
+ async deleteRecords(key, recordIds) {
185
+ await runBatch(key, (store) => {
186
+ for (const id of recordIds)
187
+ store.delete(id);
188
+ });
189
+ },
190
+ async clear(key) {
191
+ await runOp(key, 'readwrite', (store) => store.clear());
192
+ },
193
+ async estimate() {
194
+ if (typeof navigator === 'undefined' || !navigator.storage?.estimate) {
195
+ return null;
196
+ }
197
+ const e = await navigator.storage.estimate();
198
+ return { usage: e.usage ?? 0, quota: e.quota ?? 0 };
199
+ },
200
+ };
201
+ }
202
+ //# sourceMappingURL=backends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backends.js","sourceRoot":"","sources":["../../../src/sandbox/persistence/backends.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,YAAY,GAAG,WAAW,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAIrC;IACC,IAAI,KAAK,GAAgC,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,IAAmC,EAAE;QACrD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;YAC5B,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,WAAW;YACf,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,OAAO;gBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS;YACjC,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM,EAAE,IAAI,SAAS;gBAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,KAAK;YACT,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAwB,EAAE;QACvD,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ;YAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,GAAG;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO;YAC3B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,OAAO;gBAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS;YAChC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC;gBAAE,KAAK,MAAM,EAAE,IAAI,SAAS;oBAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG;YACb,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,GAAW;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,eAAe,GAAG,GAAG,EAAE;YACzB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;QACF,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,6BAA6B,GAAG,GAAG,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CACnB,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,SAAS,KAAK,CACZ,GAAW,EACX,IAAwB,EACxB,GAAoD;IAEpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACrB,CAAC,EAAE,EAAE,EAAE,CACL,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,MAAM,GAAa,IAAI,CAAC;QAC5B,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE;gBACnB,MAAM,GAAI,GAAG,CAAC,MAAY,IAAI,IAAI,CAAC;YACrC,CAAC,CAAC;YACF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,EAAE,CAAC,UAAU,GAAG,GAAG,EAAE;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC;QACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,QAAQ,CACf,GAAW,EACX,IAAqC;IAErC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACrB,CAAC,EAAE,EAAE,EAAE,CACL,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QACnC,EAAE,CAAC,UAAU,GAAG,GAAG,EAAE;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC;QACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,kDAAkD;YAChD,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ;YAC3B,MAAM,CAAC,GAAG,MAAM,KAAK,CAAU,GAAG,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CACxD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAwB,CAC3C,CAAC;YACF,OAAO,CAAC,IAAI,IAAI,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,GAAG;YACnB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAgB,GAAG,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CACjE,KAAK,CAAC,UAAU,EAA+B,CAChD,CAAC;YACF,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO;YAC3B,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,OAAO;oBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS;YAChC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,KAAK,MAAM,EAAE,IAAI,SAAS;oBAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG;YACb,MAAM,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CACtC,KAAK,CAAC,KAAK,EAA2B,CACvC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ export declare const CHUNK_FORMAT_VERSION: 3;
2
+ export declare const BUCKET_COUNT = 256;
3
+ export declare const META_RECORD_ID = "meta";
4
+ /**
5
+ * Stable FNV-1a hash of a doc path to a bucket id ('00'..'ff'). Deterministic and
6
+ * environment-independent (no engine hash-iteration-order dependence), so the same
7
+ * path always lands in the same bucket across hosts and reloads.
8
+ */
9
+ export declare function pathToBucketId(path: string): string;
10
+ /** A firestore bucket record: marker-encoded docs keyed by full path. */
11
+ export interface BucketRecord {
12
+ docs: Record<string, Record<string, unknown>>;
13
+ /** FNV checksum of `docs`, set on write and verified on read so a corrupt
14
+ * bucket is quarantined (skipped) rather than restored as garbage. */
15
+ checksum?: number;
16
+ }
17
+ /** The single meta record: format version + persisted service state. */
18
+ export interface MetaRecord {
19
+ version: typeof CHUNK_FORMAT_VERSION;
20
+ savedAt: number;
21
+ services: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Partition a firestore doc map into v3 records: one bucket record per occupied
25
+ * bucket plus the `meta` record. The returned map's keys are record ids; values
26
+ * are structured-clone-safe.
27
+ */
28
+ export declare function serializeToBuckets(firestore: Record<string, Record<string, unknown>>, services: Record<string, unknown>, savedAt: number): Map<string, BucketRecord | MetaRecord>;
29
+ /** Tag for a v3 record bundle (a single committable JSON of all records). */
30
+ export declare const V3_BUNDLE_FORMAT = "pyric-v3-records";
31
+ /**
32
+ * Bundle v3 records into one committable JSON string, for single-blob stores
33
+ * (serve's exportable `.pyric/state` file, an HTTP state endpoint). Inverse of
34
+ * {@link parseBundle}. This deliberately collapses the chunking into one blob:
35
+ * it is the single-artifact EXPORT shape, not the scale path (that is the
36
+ * record-shaped backend).
37
+ */
38
+ export declare function bundleRecords(records: ReadonlyMap<string, unknown>): string;
39
+ /**
40
+ * Parse a v3 bundle blob back into records. Returns an empty map for an
41
+ * unrecognized blob (e.g. a legacy v2 single-blob snapshot); migrate-on-open (a
42
+ * later commit) handles converting a v2 blob to v3 records.
43
+ */
44
+ export declare function parseBundle(blob: string): Map<string, unknown>;
45
+ /**
46
+ * Migrate a legacy v2 single-snapshot blob (the pre-chunking format: one
47
+ * `JSON.stringify` of the whole keyspace) to v3 records. Returns null when
48
+ * `blob` is not a recognizable v1/v2 snapshot. Used on read so existing
49
+ * persisted state survives the format change (migrate-on-open).
50
+ */
51
+ export declare function migrateV2ToRecords(blob: string): Map<string, BucketRecord | MetaRecord> | null;
52
+ /** Reassemble a firestore snapshot + services from v3 records (any iterable of
53
+ * [recordId, record] pairs). Rehydrates wrapper types from their markers. */
54
+ export declare function deserializeFromBuckets(records: Iterable<[string, unknown]>): {
55
+ firestore: Record<string, Record<string, unknown>>;
56
+ services: Record<string, unknown>;
57
+ };
58
+ //# sourceMappingURL=chunk-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-format.d.ts","sourceRoot":"","sources":["../../../src/sandbox/persistence/chunk-format.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AAC/C,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9C;2EACuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,oBAAoB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAoBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAClD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,CAkBxC;AAED,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAoB9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GACX,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG,IAAI,CAQ/C;AAED;8EAC8E;AAC9E,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CA4B3F"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * v3 chunked persistence format (pure functions).
3
+ *
4
+ * The v1/v2 format serialized the ENTIRE keyspace into one JSON string blob
5
+ * (serialize.ts). At scale that blob exceeds V8's max string length (a 50k-vector
6
+ * dataset is ~1.5GB of JSON), so it is structurally impossible, not just slow.
7
+ *
8
+ * v3 partitions the firestore doc map into BUCKET_COUNT records by a stable hash
9
+ * of the doc path, plus one `meta` record (version + services). Each record is a
10
+ * STRUCTURED-CLONE-SAFE object (marker-encoded docs, the same markers the v2 codec
11
+ * emits via `toJSON`), so a backend can store it natively (IndexedDB) without ever
12
+ * building a single keyspace-sized string. Write-behind flushes touch only the
13
+ * buckets a write changed.
14
+ *
15
+ * FORMAT CONTRACT: BUCKET_COUNT and {@link pathToBucketId} are part of the v3
16
+ * on-disk contract. Changing either is a format migration once real data exists.
17
+ * (Float32Array vector encoding is a later, backward-compatible refinement on the
18
+ * per-bucket record shape.)
19
+ */
20
+ import { rehydrateDocValue } from '../../firestore-values/index.js';
21
+ import { deserializeSnapshot } from './serialize.js';
22
+ export const CHUNK_FORMAT_VERSION = 3;
23
+ export const BUCKET_COUNT = 256;
24
+ export const META_RECORD_ID = 'meta';
25
+ /**
26
+ * Stable FNV-1a hash of a doc path to a bucket id ('00'..'ff'). Deterministic and
27
+ * environment-independent (no engine hash-iteration-order dependence), so the same
28
+ * path always lands in the same bucket across hosts and reloads.
29
+ */
30
+ export function pathToBucketId(path) {
31
+ let h = 0x811c9dc5;
32
+ for (let i = 0; i < path.length; i++) {
33
+ h ^= path.charCodeAt(i);
34
+ // h *= 16777619 (FNV prime), kept in uint32 via shift-sum.
35
+ h = (h + ((h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24))) >>> 0;
36
+ }
37
+ return (h % BUCKET_COUNT).toString(16).padStart(2, '0');
38
+ }
39
+ /** Marker-encode a doc to a structured-clone-safe plain tree (reuses the wrapper
40
+ * `toJSON` markers via a per-doc round-trip; small per-doc strings, never one
41
+ * keyspace blob). */
42
+ function encodeDoc(data) {
43
+ return JSON.parse(JSON.stringify(data));
44
+ }
45
+ /** FNV-1a checksum of a bucket's docs, for corruption detection on read. */
46
+ function checksumDocs(docs) {
47
+ const s = JSON.stringify(docs);
48
+ let h = 0x811c9dc5;
49
+ for (let i = 0; i < s.length; i++) {
50
+ h ^= s.charCodeAt(i);
51
+ h = Math.imul(h, 16777619) >>> 0;
52
+ }
53
+ return h;
54
+ }
55
+ /**
56
+ * Partition a firestore doc map into v3 records: one bucket record per occupied
57
+ * bucket plus the `meta` record. The returned map's keys are record ids; values
58
+ * are structured-clone-safe.
59
+ */
60
+ export function serializeToBuckets(firestore, services, savedAt) {
61
+ const records = new Map();
62
+ records.set(META_RECORD_ID, { version: CHUNK_FORMAT_VERSION, savedAt, services });
63
+ for (const [path, data] of Object.entries(firestore)) {
64
+ const id = pathToBucketId(path);
65
+ let bucket = records.get(id);
66
+ if (!bucket) {
67
+ bucket = { docs: {} };
68
+ records.set(id, bucket);
69
+ }
70
+ bucket.docs[path] = encodeDoc(data);
71
+ }
72
+ // Checksum each bucket so a corrupt record is detected + quarantined on read.
73
+ for (const [id, rec] of records) {
74
+ if (id === META_RECORD_ID)
75
+ continue;
76
+ rec.checksum = checksumDocs(rec.docs);
77
+ }
78
+ return records;
79
+ }
80
+ /** Tag for a v3 record bundle (a single committable JSON of all records). */
81
+ export const V3_BUNDLE_FORMAT = 'pyric-v3-records';
82
+ /**
83
+ * Bundle v3 records into one committable JSON string, for single-blob stores
84
+ * (serve's exportable `.pyric/state` file, an HTTP state endpoint). Inverse of
85
+ * {@link parseBundle}. This deliberately collapses the chunking into one blob:
86
+ * it is the single-artifact EXPORT shape, not the scale path (that is the
87
+ * record-shaped backend).
88
+ */
89
+ export function bundleRecords(records) {
90
+ return JSON.stringify({ format: V3_BUNDLE_FORMAT, records: Object.fromEntries(records) });
91
+ }
92
+ /**
93
+ * Parse a v3 bundle blob back into records. Returns an empty map for an
94
+ * unrecognized blob (e.g. a legacy v2 single-blob snapshot); migrate-on-open (a
95
+ * later commit) handles converting a v2 blob to v3 records.
96
+ */
97
+ export function parseBundle(blob) {
98
+ let parsed;
99
+ try {
100
+ parsed = JSON.parse(blob);
101
+ }
102
+ catch {
103
+ return new Map();
104
+ }
105
+ const obj = parsed;
106
+ if (obj &&
107
+ typeof obj === 'object' &&
108
+ obj.format === V3_BUNDLE_FORMAT &&
109
+ typeof obj.records === 'object' &&
110
+ obj.records !== null) {
111
+ return new Map(Object.entries(obj.records));
112
+ }
113
+ // Not a v3 bundle: maybe a legacy v2 single-snapshot blob (a committable file
114
+ // or IDB record from before chunking). Migrate it to v3 records on read.
115
+ return migrateV2ToRecords(blob) ?? new Map();
116
+ }
117
+ /**
118
+ * Migrate a legacy v2 single-snapshot blob (the pre-chunking format: one
119
+ * `JSON.stringify` of the whole keyspace) to v3 records. Returns null when
120
+ * `blob` is not a recognizable v1/v2 snapshot. Used on read so existing
121
+ * persisted state survives the format change (migrate-on-open).
122
+ */
123
+ export function migrateV2ToRecords(blob) {
124
+ let snap;
125
+ try {
126
+ snap = deserializeSnapshot(blob);
127
+ }
128
+ catch {
129
+ return null;
130
+ }
131
+ return serializeToBuckets(snap.firestore, snap.services, 0);
132
+ }
133
+ /** Reassemble a firestore snapshot + services from v3 records (any iterable of
134
+ * [recordId, record] pairs). Rehydrates wrapper types from their markers. */
135
+ export function deserializeFromBuckets(records) {
136
+ const firestore = {};
137
+ let services = {};
138
+ for (const [id, rec] of records) {
139
+ if (id === META_RECORD_ID) {
140
+ const meta = rec;
141
+ if (meta && typeof meta.services === 'object' && meta.services !== null) {
142
+ services = meta.services;
143
+ }
144
+ continue;
145
+ }
146
+ const bucket = rec;
147
+ if (!bucket || typeof bucket.docs !== 'object' || bucket.docs === null)
148
+ continue;
149
+ // C5: verify the bucket's checksum (when present). A mismatch means the
150
+ // record was corrupted in storage; quarantine it (skip + warn) rather than
151
+ // restore garbage. Records without a checksum (pre-checksum v3) are accepted.
152
+ if (typeof bucket.checksum === 'number' &&
153
+ checksumDocs(bucket.docs) !== bucket.checksum) {
154
+ console.warn(`[sandbox/persistence] checksum mismatch for bucket '${id}'; skipping corrupt bucket`);
155
+ continue;
156
+ }
157
+ for (const [path, data] of Object.entries(bucket.docs)) {
158
+ firestore[path] = rehydrateDocValue(data);
159
+ }
160
+ }
161
+ return { firestore, services };
162
+ }
163
+ //# sourceMappingURL=chunk-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-format.js","sourceRoot":"","sources":["../../../src/sandbox/persistence/chunk-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Persistence controller — wires a `PersistenceBackend` into a
3
+ * `SandboxImpl`. Owns the debounced auto-flush, the `beforeunload`
4
+ * safety flush, and the restore-on-attach pass.
5
+ *
6
+ * Conceptually orthogonal to the sandbox: the sandbox doesn't know
7
+ * persistence exists until `enablePersistence` constructs a controller
8
+ * and hands it the live sandbox. Disposing the controller detaches
9
+ * every side effect and leaves the sandbox unchanged.
10
+ */
11
+ import type { Sandbox } from '../types.js';
12
+ import type { SandboxPersistenceOptions } from './types.js';
13
+ export interface PersistenceController {
14
+ readonly options: Readonly<SandboxPersistenceOptions>;
15
+ /** Force a flush of the current sandbox state to the backend. */
16
+ flush(): Promise<void>;
17
+ /** Wipe persisted state. In-memory state is untouched. */
18
+ clear(): Promise<void>;
19
+ /** Detach event subscription + beforeunload listener. */
20
+ dispose(): void;
21
+ }
22
+ /**
23
+ * Construct a controller, restore any prior snapshot, and wire the
24
+ * auto-flush subscription. Returns once restore has completed (callers
25
+ * can `await sandbox.enablePersistence(...)` and be sure the in-memory
26
+ * state reflects the persisted blob).
27
+ *
28
+ * Late service registration: services (e.g. auth) may register with the
29
+ * sandbox AFTER this call returns (the user calls `enablePersistence`
30
+ * then later `getAuth(sandbox)` which triggers `registerPersistableService`).
31
+ * We handle this in two parts:
32
+ * 1. `restore()` returns the raw `services` blob map so the controller
33
+ * can apply it to late-arriving services.
34
+ * 2. `setServiceRegistrationHook` fires on each registration — we
35
+ * immediately apply the saved blob data (if any) AND subscribe the
36
+ * service's change notifier for future flushes.
37
+ */
38
+ export declare function attachPersistence(sandbox: Sandbox, rawOptions: SandboxPersistenceOptions): Promise<PersistenceController>;
39
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/sandbox/persistence/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAsB,OAAO,EAAgB,MAAM,aAAa,CAAC;AAQ7E,OAAO,KAAK,EAAsB,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAwDhF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACtD,iEAAiE;IACjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,yDAAyD;IACzD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,qBAAqB,CAAC,CA4YhC"}