pyric 0.1.0-alpha.21 → 0.1.0-alpha.24

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 (1241) hide show
  1. package/README.md +12 -4
  2. package/dist/ai/activity.d.ts +9 -0
  3. package/dist/ai/activity.d.ts.map +1 -0
  4. package/dist/ai/activity.js +45 -0
  5. package/dist/ai/activity.js.map +1 -0
  6. package/dist/ai/broker/broker.d.ts +25 -0
  7. package/dist/ai/broker/broker.d.ts.map +1 -1
  8. package/dist/ai/broker/broker.js +46 -42
  9. package/dist/ai/broker/broker.js.map +1 -1
  10. package/dist/ai/broker/gemini-engine.d.ts +7 -0
  11. package/dist/ai/broker/gemini-engine.d.ts.map +1 -1
  12. package/dist/ai/broker/gemini-engine.js +15 -0
  13. package/dist/ai/broker/gemini-engine.js.map +1 -1
  14. package/dist/ai/broker/index.d.ts +1 -1
  15. package/dist/ai/broker/index.d.ts.map +1 -1
  16. package/dist/ai/broker/index.js.map +1 -1
  17. package/dist/ai/broker/openai-engine.d.ts.map +1 -1
  18. package/dist/ai/broker/openai-engine.js +7 -3
  19. package/dist/ai/broker/openai-engine.js.map +1 -1
  20. package/dist/ai/broker/scripted-engine.d.ts +9 -1
  21. package/dist/ai/broker/scripted-engine.d.ts.map +1 -1
  22. package/dist/ai/broker/scripted-engine.js +14 -5
  23. package/dist/ai/broker/scripted-engine.js.map +1 -1
  24. package/dist/ai/broker/types.d.ts +6 -2
  25. package/dist/ai/broker/types.d.ts.map +1 -1
  26. package/dist/ai/events.d.ts +12 -0
  27. package/dist/ai/events.d.ts.map +1 -0
  28. package/dist/ai/events.js +17 -0
  29. package/dist/ai/events.js.map +1 -0
  30. package/dist/ai/generation-enums.d.ts +43 -0
  31. package/dist/ai/generation-enums.d.ts.map +1 -0
  32. package/dist/ai/generation-enums.js +37 -0
  33. package/dist/ai/generation-enums.js.map +1 -0
  34. package/dist/ai/index.d.ts +1 -0
  35. package/dist/ai/index.d.ts.map +1 -1
  36. package/dist/ai/index.js +1 -0
  37. package/dist/ai/index.js.map +1 -1
  38. package/dist/ai/instances.d.ts +6 -0
  39. package/dist/ai/instances.d.ts.map +1 -1
  40. package/dist/ai/instances.js +20 -2
  41. package/dist/ai/instances.js.map +1 -1
  42. package/dist/ai/internal.d.ts +3 -0
  43. package/dist/ai/internal.d.ts.map +1 -1
  44. package/dist/ai/internal.js +3 -0
  45. package/dist/ai/internal.js.map +1 -1
  46. package/dist/ai/sandbox-plane.d.ts.map +1 -1
  47. package/dist/ai/sandbox-plane.js +23 -8
  48. package/dist/ai/sandbox-plane.js.map +1 -1
  49. package/dist/ai/scripting.d.ts +20 -2
  50. package/dist/ai/scripting.d.ts.map +1 -1
  51. package/dist/ai/scripting.js +30 -3
  52. package/dist/ai/scripting.js.map +1 -1
  53. package/dist/app/internal.d.ts +1 -0
  54. package/dist/app/internal.d.ts.map +1 -1
  55. package/dist/app/internal.js +1 -0
  56. package/dist/app/internal.js.map +1 -1
  57. package/dist/auth/email-link.d.ts +8 -1
  58. package/dist/auth/email-link.d.ts.map +1 -1
  59. package/dist/auth/email-link.js +29 -20
  60. package/dist/auth/email-link.js.map +1 -1
  61. package/dist/auth/events.d.ts +12 -0
  62. package/dist/auth/events.d.ts.map +1 -0
  63. package/dist/auth/events.js +18 -0
  64. package/dist/auth/events.js.map +1 -0
  65. package/dist/auth/factor-id.d.ts +7 -0
  66. package/dist/auth/factor-id.d.ts.map +1 -0
  67. package/dist/auth/factor-id.js +6 -0
  68. package/dist/auth/factor-id.js.map +1 -0
  69. package/dist/auth/index.d.ts +1 -0
  70. package/dist/auth/index.d.ts.map +1 -1
  71. package/dist/auth/index.js +1 -0
  72. package/dist/auth/index.js.map +1 -1
  73. package/dist/auth/instances.d.ts.map +1 -1
  74. package/dist/auth/instances.js +13 -1
  75. package/dist/auth/instances.js.map +1 -1
  76. package/dist/auth/internal.d.ts +20 -0
  77. package/dist/auth/internal.d.ts.map +1 -0
  78. package/dist/auth/internal.js +19 -0
  79. package/dist/auth/internal.js.map +1 -0
  80. package/dist/auth/modular.d.ts +9 -0
  81. package/dist/auth/modular.d.ts.map +1 -1
  82. package/dist/auth/modular.js +20 -0
  83. package/dist/auth/modular.js.map +1 -1
  84. package/dist/auth/reauth.js +3 -2
  85. package/dist/auth/reauth.js.map +1 -1
  86. package/dist/auth/sandbox/default-avatar.d.ts +64 -0
  87. package/dist/auth/sandbox/default-avatar.d.ts.map +1 -0
  88. package/dist/auth/sandbox/default-avatar.js +118 -0
  89. package/dist/auth/sandbox/default-avatar.js.map +1 -0
  90. package/dist/auth/sandbox/driver.d.ts +36 -0
  91. package/dist/auth/sandbox/driver.d.ts.map +1 -1
  92. package/dist/auth/sandbox/driver.js +47 -0
  93. package/dist/auth/sandbox/driver.js.map +1 -1
  94. package/dist/auth/sandbox/project-store.d.ts +0 -1
  95. package/dist/auth/sandbox/project-store.d.ts.map +1 -1
  96. package/dist/auth/sandbox/project-store.js +0 -1
  97. package/dist/auth/sandbox/project-store.js.map +1 -1
  98. package/dist/auth/sandbox-backend-types.d.ts +34 -20
  99. package/dist/auth/sandbox-backend-types.d.ts.map +1 -1
  100. package/dist/auth/sandbox-backend-types.js +2 -3
  101. package/dist/auth/sandbox-backend-types.js.map +1 -1
  102. package/dist/auth/sandbox-backend.d.ts +98 -20
  103. package/dist/auth/sandbox-backend.d.ts.map +1 -1
  104. package/dist/auth/sandbox-backend.js +403 -96
  105. package/dist/auth/sandbox-backend.js.map +1 -1
  106. package/dist/auth/seed-user.d.ts +38 -0
  107. package/dist/auth/seed-user.d.ts.map +1 -0
  108. package/dist/auth/seed-user.js +2 -0
  109. package/dist/auth/seed-user.js.map +1 -0
  110. package/dist/auth/tokens.d.ts +6 -1
  111. package/dist/auth/tokens.d.ts.map +1 -1
  112. package/dist/auth/tokens.js +19 -17
  113. package/dist/auth/tokens.js.map +1 -1
  114. package/dist/auth/types.d.ts +13 -1
  115. package/dist/auth/types.d.ts.map +1 -1
  116. package/dist/auth/types.js.map +1 -1
  117. package/dist/database/activity-coverage.d.ts +9 -0
  118. package/dist/database/activity-coverage.d.ts.map +1 -0
  119. package/dist/database/activity-coverage.js +11 -0
  120. package/dist/database/activity-coverage.js.map +1 -0
  121. package/dist/database/connection-lifecycle.d.ts +3 -0
  122. package/dist/database/connection-lifecycle.d.ts.map +1 -1
  123. package/dist/database/connection-lifecycle.js +54 -23
  124. package/dist/database/connection-lifecycle.js.map +1 -1
  125. package/dist/database/events.d.ts +12 -0
  126. package/dist/database/events.d.ts.map +1 -0
  127. package/dist/database/events.js +10 -0
  128. package/dist/database/events.js.map +1 -0
  129. package/dist/database/instances.d.ts +7 -7
  130. package/dist/database/instances.d.ts.map +1 -1
  131. package/dist/database/instances.js +35 -13
  132. package/dist/database/instances.js.map +1 -1
  133. package/dist/database/internal/query-projection.d.ts +102 -0
  134. package/dist/database/internal/query-projection.d.ts.map +1 -0
  135. package/dist/database/internal/query-projection.js +293 -0
  136. package/dist/database/internal/query-projection.js.map +1 -0
  137. package/dist/database/internal.d.ts +2 -0
  138. package/dist/database/internal.d.ts.map +1 -1
  139. package/dist/database/internal.js +2 -0
  140. package/dist/database/internal.js.map +1 -1
  141. package/dist/database/listeners.d.ts.map +1 -1
  142. package/dist/database/listeners.js +165 -37
  143. package/dist/database/listeners.js.map +1 -1
  144. package/dist/database/operations.d.ts.map +1 -1
  145. package/dist/database/operations.js +77 -50
  146. package/dist/database/operations.js.map +1 -1
  147. package/dist/database/replay.d.ts.map +1 -1
  148. package/dist/database/replay.js +6 -2
  149. package/dist/database/replay.js.map +1 -1
  150. package/dist/database/routing.d.ts +4 -0
  151. package/dist/database/routing.d.ts.map +1 -1
  152. package/dist/database/routing.js.map +1 -1
  153. package/dist/database/sandbox/backend-for.d.ts +4 -3
  154. package/dist/database/sandbox/backend-for.d.ts.map +1 -1
  155. package/dist/database/sandbox/backend-for.js +130 -24
  156. package/dist/database/sandbox/backend-for.js.map +1 -1
  157. package/dist/database/sandbox/backend-state.d.ts +7 -0
  158. package/dist/database/sandbox/backend-state.d.ts.map +1 -1
  159. package/dist/database/sandbox/backend-state.js +15 -1
  160. package/dist/database/sandbox/backend-state.js.map +1 -1
  161. package/dist/database/sandbox/backend.d.ts +2 -1
  162. package/dist/database/sandbox/backend.d.ts.map +1 -1
  163. package/dist/database/sandbox/backend.js +3 -3
  164. package/dist/database/sandbox/backend.js.map +1 -1
  165. package/dist/database/sandbox/child-listeners.d.ts +5 -0
  166. package/dist/database/sandbox/child-listeners.d.ts.map +1 -1
  167. package/dist/database/sandbox/child-listeners.js +34 -14
  168. package/dist/database/sandbox/child-listeners.js.map +1 -1
  169. package/dist/database/sandbox/listener-types.d.ts +5 -0
  170. package/dist/database/sandbox/listener-types.d.ts.map +1 -1
  171. package/dist/database/sandbox/operation-events.d.ts +5 -0
  172. package/dist/database/sandbox/operation-events.d.ts.map +1 -1
  173. package/dist/database/sandbox/operation-events.js +18 -3
  174. package/dist/database/sandbox/operation-events.js.map +1 -1
  175. package/dist/database/sandbox/persistence-state.d.ts.map +1 -1
  176. package/dist/database/sandbox/persistence-state.js +1 -8
  177. package/dist/database/sandbox/persistence-state.js.map +1 -1
  178. package/dist/database/sandbox/priority-writes.js +2 -2
  179. package/dist/database/sandbox/priority-writes.js.map +1 -1
  180. package/dist/database/sandbox/query.d.ts +2 -101
  181. package/dist/database/sandbox/query.d.ts.map +1 -1
  182. package/dist/database/sandbox/query.js +1 -225
  183. package/dist/database/sandbox/query.js.map +1 -1
  184. package/dist/database/sandbox/rules-eval.d.ts +28 -0
  185. package/dist/database/sandbox/rules-eval.d.ts.map +1 -1
  186. package/dist/database/sandbox/rules-eval.js +136 -9
  187. package/dist/database/sandbox/rules-eval.js.map +1 -1
  188. package/dist/database/sandbox/transactions.d.ts.map +1 -1
  189. package/dist/database/sandbox/transactions.js +17 -38
  190. package/dist/database/sandbox/transactions.js.map +1 -1
  191. package/dist/database/sandbox/value-listeners.d.ts +11 -1
  192. package/dist/database/sandbox/value-listeners.d.ts.map +1 -1
  193. package/dist/database/sandbox/value-listeners.js +65 -27
  194. package/dist/database/sandbox/value-listeners.js.map +1 -1
  195. package/dist/database/sandbox/write-plane.d.ts.map +1 -1
  196. package/dist/database/sandbox/write-plane.js +30 -22
  197. package/dist/database/sandbox/write-plane.js.map +1 -1
  198. package/dist/database/sdk-activity.d.ts +5 -0
  199. package/dist/database/sdk-activity.d.ts.map +1 -0
  200. package/dist/database/sdk-activity.js +20 -0
  201. package/dist/database/sdk-activity.js.map +1 -0
  202. package/dist/database/transactions.d.ts.map +1 -1
  203. package/dist/database/transactions.js +7 -3
  204. package/dist/database/transactions.js.map +1 -1
  205. package/dist/database/types.d.ts +9 -1
  206. package/dist/database/types.d.ts.map +1 -1
  207. package/dist/database/types.js.map +1 -1
  208. package/dist/deferred/entry.d.ts +6 -3
  209. package/dist/deferred/entry.d.ts.map +1 -1
  210. package/dist/deferred/entry.js +13 -10
  211. package/dist/deferred/entry.js.map +1 -1
  212. package/dist/firestore/activity-coverage.d.ts +9 -0
  213. package/dist/firestore/activity-coverage.d.ts.map +1 -0
  214. package/dist/firestore/activity-coverage.js +9 -0
  215. package/dist/firestore/activity-coverage.js.map +1 -0
  216. package/dist/firestore/aggregates.d.ts.map +1 -1
  217. package/dist/firestore/aggregates.js +32 -10
  218. package/dist/firestore/aggregates.js.map +1 -1
  219. package/dist/firestore/bytes.d.ts +13 -0
  220. package/dist/firestore/bytes.d.ts.map +1 -0
  221. package/dist/firestore/bytes.js +51 -0
  222. package/dist/firestore/bytes.js.map +1 -0
  223. package/dist/firestore/converter-method.d.ts +11 -0
  224. package/dist/firestore/converter-method.d.ts.map +1 -0
  225. package/dist/firestore/converter-method.js +39 -0
  226. package/dist/firestore/converter-method.js.map +1 -0
  227. package/dist/firestore/errors.d.ts.map +1 -1
  228. package/dist/firestore/errors.js +4 -0
  229. package/dist/firestore/errors.js.map +1 -1
  230. package/dist/firestore/field-values.d.ts +3 -36
  231. package/dist/firestore/field-values.d.ts.map +1 -1
  232. package/dist/firestore/field-values.js +3 -136
  233. package/dist/firestore/field-values.js.map +1 -1
  234. package/dist/firestore/geo-point.d.ts +15 -0
  235. package/dist/firestore/geo-point.d.ts.map +1 -0
  236. package/dist/firestore/geo-point.js +50 -0
  237. package/dist/firestore/geo-point.js.map +1 -0
  238. package/dist/firestore/index.d.ts +1 -1
  239. package/dist/firestore/index.d.ts.map +1 -1
  240. package/dist/firestore/index.js +1 -1
  241. package/dist/firestore/index.js.map +1 -1
  242. package/dist/firestore/instances.d.ts.map +1 -1
  243. package/dist/firestore/instances.js +23 -2
  244. package/dist/firestore/instances.js.map +1 -1
  245. package/dist/firestore/internal/document-data.d.ts +3 -0
  246. package/dist/firestore/internal/document-data.d.ts.map +1 -0
  247. package/dist/firestore/internal/document-data.js +10 -0
  248. package/dist/firestore/internal/document-data.js.map +1 -0
  249. package/dist/firestore/internal/index.d.ts +3 -0
  250. package/dist/firestore/internal/index.d.ts.map +1 -1
  251. package/dist/firestore/internal/index.js +5 -0
  252. package/dist/firestore/internal/index.js.map +1 -1
  253. package/dist/firestore/internal/value-codec.d.ts +16 -61
  254. package/dist/firestore/internal/value-codec.d.ts.map +1 -1
  255. package/dist/firestore/internal/value-codec.js +137 -82
  256. package/dist/firestore/internal/value-codec.js.map +1 -1
  257. package/dist/firestore/internal/value-depth.d.ts +3 -0
  258. package/dist/firestore/internal/value-depth.d.ts.map +1 -0
  259. package/dist/firestore/internal/value-depth.js +19 -0
  260. package/dist/firestore/internal/value-depth.js.map +1 -0
  261. package/dist/firestore/listeners.d.ts +18 -1
  262. package/dist/firestore/listeners.d.ts.map +1 -1
  263. package/dist/firestore/listeners.js +60 -21
  264. package/dist/firestore/listeners.js.map +1 -1
  265. package/dist/firestore/persistence.d.ts +0 -9
  266. package/dist/firestore/persistence.d.ts.map +1 -1
  267. package/dist/firestore/persistence.js +23 -9
  268. package/dist/firestore/persistence.js.map +1 -1
  269. package/dist/firestore/plain-object.d.ts +3 -0
  270. package/dist/firestore/plain-object.d.ts.map +1 -0
  271. package/dist/firestore/plain-object.js +9 -0
  272. package/dist/firestore/plain-object.js.map +1 -0
  273. package/dist/firestore/query-constraints.d.ts.map +1 -1
  274. package/dist/firestore/query-constraints.js +4 -3
  275. package/dist/firestore/query-constraints.js.map +1 -1
  276. package/dist/firestore/reads.d.ts +9 -7
  277. package/dist/firestore/reads.d.ts.map +1 -1
  278. package/dist/firestore/reads.js +74 -36
  279. package/dist/firestore/reads.js.map +1 -1
  280. package/dist/firestore/refs.d.ts +2 -1
  281. package/dist/firestore/refs.d.ts.map +1 -1
  282. package/dist/firestore/refs.js +37 -24
  283. package/dist/firestore/refs.js.map +1 -1
  284. package/dist/firestore/sandbox/activity-query-display.d.ts +67 -0
  285. package/dist/firestore/sandbox/activity-query-display.d.ts.map +1 -0
  286. package/dist/firestore/sandbox/activity-query-display.js +119 -0
  287. package/dist/firestore/sandbox/activity-query-display.js.map +1 -0
  288. package/dist/firestore/sandbox/admin-compat/batch.d.ts +4 -8
  289. package/dist/firestore/sandbox/admin-compat/batch.d.ts.map +1 -1
  290. package/dist/firestore/sandbox/admin-compat/batch.js +27 -19
  291. package/dist/firestore/sandbox/admin-compat/batch.js.map +1 -1
  292. package/dist/firestore/sandbox/admin-compat/query-comparison.d.ts.map +1 -1
  293. package/dist/firestore/sandbox/admin-compat/query-comparison.js +8 -3
  294. package/dist/firestore/sandbox/admin-compat/query-comparison.js.map +1 -1
  295. package/dist/firestore/sandbox/admin-compat/query.d.ts +8 -0
  296. package/dist/firestore/sandbox/admin-compat/query.d.ts.map +1 -1
  297. package/dist/firestore/sandbox/admin-compat/query.js +44 -5
  298. package/dist/firestore/sandbox/admin-compat/query.js.map +1 -1
  299. package/dist/firestore/sandbox/admin-compat/read-translation.d.ts.map +1 -1
  300. package/dist/firestore/sandbox/admin-compat/read-translation.js +18 -9
  301. package/dist/firestore/sandbox/admin-compat/read-translation.js.map +1 -1
  302. package/dist/firestore/sandbox/admin-compat/transaction.d.ts +2 -2
  303. package/dist/firestore/sandbox/admin-compat/transaction.d.ts.map +1 -1
  304. package/dist/firestore/sandbox/admin-compat/transaction.js +13 -4
  305. package/dist/firestore/sandbox/admin-compat/transaction.js.map +1 -1
  306. package/dist/firestore/sandbox/admin-compat/types.d.ts +6 -33
  307. package/dist/firestore/sandbox/admin-compat/types.d.ts.map +1 -1
  308. package/dist/firestore/sandbox/admin-compat/types.js +1 -76
  309. package/dist/firestore/sandbox/admin-compat/types.js.map +1 -1
  310. package/dist/firestore/sandbox/atomic-state.d.ts +4 -0
  311. package/dist/firestore/sandbox/atomic-state.d.ts.map +1 -0
  312. package/dist/firestore/sandbox/atomic-state.js +105 -0
  313. package/dist/firestore/sandbox/atomic-state.js.map +1 -0
  314. package/dist/firestore/sandbox/atomic-write-pipeline.d.ts +3 -2
  315. package/dist/firestore/sandbox/atomic-write-pipeline.d.ts.map +1 -1
  316. package/dist/firestore/sandbox/atomic-write-pipeline.js +128 -58
  317. package/dist/firestore/sandbox/atomic-write-pipeline.js.map +1 -1
  318. package/dist/firestore/sandbox/batch-write-executor.d.ts.map +1 -1
  319. package/dist/firestore/sandbox/batch-write-executor.js +54 -28
  320. package/dist/firestore/sandbox/batch-write-executor.js.map +1 -1
  321. package/dist/firestore/sandbox/converters/user-timestamp.d.ts +6 -40
  322. package/dist/firestore/sandbox/converters/user-timestamp.d.ts.map +1 -1
  323. package/dist/firestore/sandbox/converters/user-timestamp.js +20 -43
  324. package/dist/firestore/sandbox/converters/user-timestamp.js.map +1 -1
  325. package/dist/firestore/sandbox/document-copy.d.ts +4 -0
  326. package/dist/firestore/sandbox/document-copy.d.ts.map +1 -0
  327. package/dist/firestore/sandbox/document-copy.js +28 -0
  328. package/dist/firestore/sandbox/document-copy.js.map +1 -0
  329. package/dist/firestore/sandbox/document-store.d.ts +99 -0
  330. package/dist/firestore/sandbox/document-store.d.ts.map +1 -0
  331. package/dist/firestore/sandbox/document-store.js +2 -0
  332. package/dist/firestore/sandbox/document-store.js.map +1 -0
  333. package/dist/firestore/sandbox/errors.d.ts +4 -1
  334. package/dist/firestore/sandbox/errors.d.ts.map +1 -1
  335. package/dist/firestore/sandbox/errors.js +2 -25
  336. package/dist/firestore/sandbox/errors.js.map +1 -1
  337. package/dist/firestore/sandbox/event-log.d.ts +22 -4
  338. package/dist/firestore/sandbox/event-log.d.ts.map +1 -1
  339. package/dist/firestore/sandbox/event-log.js +66 -6
  340. package/dist/firestore/sandbox/event-log.js.map +1 -1
  341. package/dist/firestore/sandbox/field-merge.d.ts.map +1 -1
  342. package/dist/firestore/sandbox/field-merge.js +10 -20
  343. package/dist/firestore/sandbox/field-merge.js.map +1 -1
  344. package/dist/firestore/sandbox/history-controls.d.ts +1 -1
  345. package/dist/firestore/sandbox/history-controls.d.ts.map +1 -1
  346. package/dist/firestore/sandbox/history-controls.js +1 -1
  347. package/dist/firestore/sandbox/history-controls.js.map +1 -1
  348. package/dist/firestore/sandbox/list-query-proof.d.ts +4 -1
  349. package/dist/firestore/sandbox/list-query-proof.d.ts.map +1 -1
  350. package/dist/firestore/sandbox/list-query-proof.js +32 -96
  351. package/dist/firestore/sandbox/list-query-proof.js.map +1 -1
  352. package/dist/firestore/sandbox/listener-dispatch.d.ts +26 -1
  353. package/dist/firestore/sandbox/listener-dispatch.d.ts.map +1 -1
  354. package/dist/firestore/sandbox/listener-dispatch.js +58 -5
  355. package/dist/firestore/sandbox/listener-dispatch.js.map +1 -1
  356. package/dist/firestore/sandbox/local-environment.d.ts +16 -2
  357. package/dist/firestore/sandbox/local-environment.d.ts.map +1 -1
  358. package/dist/firestore/sandbox/local-environment.js +33 -9
  359. package/dist/firestore/sandbox/local-environment.js.map +1 -1
  360. package/dist/firestore/sandbox/local-state.d.ts +5 -99
  361. package/dist/firestore/sandbox/local-state.d.ts.map +1 -1
  362. package/dist/firestore/sandbox/local-state.js +64 -117
  363. package/dist/firestore/sandbox/local-state.js.map +1 -1
  364. package/dist/firestore/sandbox/query-execution.d.ts +4 -1
  365. package/dist/firestore/sandbox/query-execution.d.ts.map +1 -1
  366. package/dist/firestore/sandbox/query-execution.js +51 -26
  367. package/dist/firestore/sandbox/query-execution.js.map +1 -1
  368. package/dist/firestore/sandbox/query-operand-equality.d.ts.map +1 -1
  369. package/dist/firestore/sandbox/query-operand-equality.js +50 -14
  370. package/dist/firestore/sandbox/query-operand-equality.js.map +1 -1
  371. package/dist/firestore/sandbox/query-operators.d.ts +4 -0
  372. package/dist/firestore/sandbox/query-operators.d.ts.map +1 -0
  373. package/dist/firestore/sandbox/query-operators.js +17 -0
  374. package/dist/firestore/sandbox/query-operators.js.map +1 -0
  375. package/dist/firestore/sandbox/query-value-registry.d.ts +1 -1
  376. package/dist/firestore/sandbox/query-value-registry.d.ts.map +1 -1
  377. package/dist/firestore/sandbox/query-value-registry.js +3 -1
  378. package/dist/firestore/sandbox/query-value-registry.js.map +1 -1
  379. package/dist/firestore/sandbox/request-events.d.ts +3 -0
  380. package/dist/firestore/sandbox/request-events.d.ts.map +1 -1
  381. package/dist/firestore/sandbox/request-events.js +4 -0
  382. package/dist/firestore/sandbox/request-events.js.map +1 -1
  383. package/dist/firestore/sandbox/rules-evidence.d.ts +7 -0
  384. package/dist/firestore/sandbox/rules-evidence.d.ts.map +1 -0
  385. package/dist/firestore/sandbox/rules-evidence.js +87 -0
  386. package/dist/firestore/sandbox/rules-evidence.js.map +1 -0
  387. package/dist/firestore/sandbox/rules-list-authorizer.d.ts +13 -1
  388. package/dist/firestore/sandbox/rules-list-authorizer.d.ts.map +1 -1
  389. package/dist/firestore/sandbox/rules-list-authorizer.js +53 -74
  390. package/dist/firestore/sandbox/rules-list-authorizer.js.map +1 -1
  391. package/dist/firestore/sandbox/rules-operation-reader.d.ts +8 -1
  392. package/dist/firestore/sandbox/rules-operation-reader.d.ts.map +1 -1
  393. package/dist/firestore/sandbox/rules-operation-reader.js +13 -5
  394. package/dist/firestore/sandbox/rules-operation-reader.js.map +1 -1
  395. package/dist/firestore/sandbox/rules-read-engine.d.ts +8 -1
  396. package/dist/firestore/sandbox/rules-read-engine.d.ts.map +1 -1
  397. package/dist/firestore/sandbox/rules-read-engine.js +21 -10
  398. package/dist/firestore/sandbox/rules-read-engine.js.map +1 -1
  399. package/dist/firestore/sandbox/rules-state.d.ts +5 -0
  400. package/dist/firestore/sandbox/rules-state.d.ts.map +1 -1
  401. package/dist/firestore/sandbox/rules-state.js +16 -0
  402. package/dist/firestore/sandbox/rules-state.js.map +1 -1
  403. package/dist/firestore/sandbox/snapshot-listeners.d.ts +9 -1
  404. package/dist/firestore/sandbox/snapshot-listeners.d.ts.map +1 -1
  405. package/dist/firestore/sandbox/snapshot-listeners.js.map +1 -1
  406. package/dist/firestore/sandbox/transaction-merge.d.ts +2 -33
  407. package/dist/firestore/sandbox/transaction-merge.d.ts.map +1 -1
  408. package/dist/firestore/sandbox/transaction-merge.js +19 -7
  409. package/dist/firestore/sandbox/transaction-merge.js.map +1 -1
  410. package/dist/firestore/sandbox/transaction-types.d.ts +11 -21
  411. package/dist/firestore/sandbox/transaction-types.d.ts.map +1 -1
  412. package/dist/firestore/sandbox/transaction-types.js.map +1 -1
  413. package/dist/firestore/sandbox/transaction-write-executor.d.ts +2 -1
  414. package/dist/firestore/sandbox/transaction-write-executor.d.ts.map +1 -1
  415. package/dist/firestore/sandbox/transaction-write-executor.js +110 -69
  416. package/dist/firestore/sandbox/transaction-write-executor.js.map +1 -1
  417. package/dist/firestore/sandbox/transaction.d.ts +3 -2
  418. package/dist/firestore/sandbox/transaction.d.ts.map +1 -1
  419. package/dist/firestore/sandbox/transaction.js +23 -6
  420. package/dist/firestore/sandbox/transaction.js.map +1 -1
  421. package/dist/firestore/sandbox/value-resolver.d.ts +1 -8
  422. package/dist/firestore/sandbox/value-resolver.d.ts.map +1 -1
  423. package/dist/firestore/sandbox/value-resolver.js +2 -13
  424. package/dist/firestore/sandbox/value-resolver.js.map +1 -1
  425. package/dist/firestore/sandbox/write-engine.d.ts +5 -1
  426. package/dist/firestore/sandbox/write-engine.d.ts.map +1 -1
  427. package/dist/firestore/sandbox/write-engine.js +14 -7
  428. package/dist/firestore/sandbox/write-engine.js.map +1 -1
  429. package/dist/firestore/sandbox/write-runtime.d.ts +12 -4
  430. package/dist/firestore/sandbox/write-runtime.d.ts.map +1 -1
  431. package/dist/firestore/sandbox/write-runtime.js +72 -38
  432. package/dist/firestore/sandbox/write-runtime.js.map +1 -1
  433. package/dist/firestore/sandbox/writes.d.ts +3 -1
  434. package/dist/firestore/sandbox/writes.d.ts.map +1 -1
  435. package/dist/firestore/sdk-activity.d.ts +8 -0
  436. package/dist/firestore/sdk-activity.d.ts.map +1 -0
  437. package/dist/firestore/sdk-activity.js +23 -0
  438. package/dist/firestore/sdk-activity.js.map +1 -0
  439. package/dist/firestore/snapshots.d.ts +18 -2
  440. package/dist/firestore/snapshots.d.ts.map +1 -1
  441. package/dist/firestore/snapshots.js +69 -16
  442. package/dist/firestore/snapshots.js.map +1 -1
  443. package/dist/firestore/state.d.ts +8 -3
  444. package/dist/firestore/state.d.ts.map +1 -1
  445. package/dist/firestore/state.js +30 -13
  446. package/dist/firestore/state.js.map +1 -1
  447. package/dist/firestore/timestamp.d.ts +28 -0
  448. package/dist/firestore/timestamp.d.ts.map +1 -0
  449. package/dist/firestore/timestamp.js +80 -0
  450. package/dist/firestore/timestamp.js.map +1 -0
  451. package/dist/firestore/tools.d.ts.map +1 -1
  452. package/dist/firestore/tools.js +2 -4
  453. package/dist/firestore/tools.js.map +1 -1
  454. package/dist/firestore/transactions.d.ts.map +1 -1
  455. package/dist/firestore/transactions.js +76 -3
  456. package/dist/firestore/transactions.js.map +1 -1
  457. package/dist/firestore/types.d.ts +26 -5
  458. package/dist/firestore/types.d.ts.map +1 -1
  459. package/dist/firestore/types.js.map +1 -1
  460. package/dist/firestore/vector-value.d.ts +11 -0
  461. package/dist/firestore/vector-value.d.ts.map +1 -0
  462. package/dist/firestore/vector-value.js +51 -0
  463. package/dist/firestore/vector-value.js.map +1 -0
  464. package/dist/firestore/writes.d.ts +0 -7
  465. package/dist/firestore/writes.d.ts.map +1 -1
  466. package/dist/firestore/writes.js +42 -25
  467. package/dist/firestore/writes.js.map +1 -1
  468. package/dist/functions/events.d.ts +12 -0
  469. package/dist/functions/events.d.ts.map +1 -0
  470. package/dist/functions/events.js +10 -0
  471. package/dist/functions/events.js.map +1 -0
  472. package/dist/messaging/broker/broker.d.ts +43 -30
  473. package/dist/messaging/broker/broker.d.ts.map +1 -1
  474. package/dist/messaging/broker/broker.js +148 -43
  475. package/dist/messaging/broker/broker.js.map +1 -1
  476. package/dist/messaging/broker/delivery-history.d.ts +5 -0
  477. package/dist/messaging/broker/delivery-history.d.ts.map +1 -0
  478. package/dist/messaging/broker/delivery-history.js +46 -0
  479. package/dist/messaging/broker/delivery-history.js.map +1 -0
  480. package/dist/messaging/broker/index.d.ts +2 -1
  481. package/dist/messaging/broker/index.d.ts.map +1 -1
  482. package/dist/messaging/broker/index.js +7 -0
  483. package/dist/messaging/broker/index.js.map +1 -1
  484. package/dist/messaging/broker/persistence.d.ts +12 -0
  485. package/dist/messaging/broker/persistence.d.ts.map +1 -0
  486. package/dist/messaging/broker/persistence.js +42 -0
  487. package/dist/messaging/broker/persistence.js.map +1 -0
  488. package/dist/messaging/broker/types.d.ts +44 -0
  489. package/dist/messaging/broker/types.d.ts.map +1 -1
  490. package/dist/messaging/broker/types.js +10 -1
  491. package/dist/messaging/broker/types.js.map +1 -1
  492. package/dist/messaging/events.d.ts +12 -0
  493. package/dist/messaging/events.d.ts.map +1 -0
  494. package/dist/messaging/events.js +19 -0
  495. package/dist/messaging/events.js.map +1 -0
  496. package/dist/rules/api/case-types.d.ts +7 -0
  497. package/dist/rules/api/case-types.d.ts.map +1 -1
  498. package/dist/rules/api/rtdb.d.ts.map +1 -1
  499. package/dist/rules/api/rtdb.js +20 -7
  500. package/dist/rules/api/rtdb.js.map +1 -1
  501. package/dist/rules/grammar/parse-error-wording.d.ts +31 -0
  502. package/dist/rules/grammar/parse-error-wording.d.ts.map +1 -0
  503. package/dist/rules/grammar/parse-error-wording.js +86 -0
  504. package/dist/rules/grammar/parse-error-wording.js.map +1 -0
  505. package/dist/rules/indexes/query-analysis.d.ts +33 -0
  506. package/dist/rules/indexes/query-analysis.d.ts.map +1 -0
  507. package/dist/rules/indexes/query-analysis.js +153 -0
  508. package/dist/rules/indexes/query-analysis.js.map +1 -0
  509. package/dist/rules/indexes/service-query.d.ts +48 -0
  510. package/dist/rules/indexes/service-query.d.ts.map +1 -0
  511. package/dist/rules/indexes/service-query.js +60 -0
  512. package/dist/rules/indexes/service-query.js.map +1 -0
  513. package/dist/rules/internal/index.d.ts +4 -0
  514. package/dist/rules/internal/index.d.ts.map +1 -1
  515. package/dist/rules/internal/index.js +10 -0
  516. package/dist/rules/internal/index.js.map +1 -1
  517. package/dist/rules/modules/rules-capabilities.generated.d.ts +1 -1
  518. package/dist/rules/modules/rules-capabilities.generated.js +1 -1
  519. package/dist/rules/modules/rules-capabilities.generated.js.map +1 -1
  520. package/dist/rules/rtdb/constraints/atoms.d.ts.map +1 -1
  521. package/dist/rules/rtdb/constraints/atoms.js +7 -7
  522. package/dist/rules/rtdb/constraints/atoms.js.map +1 -1
  523. package/dist/rules/rtdb/constraints/data.d.ts +2 -2
  524. package/dist/rules/rtdb/constraints/data.d.ts.map +1 -1
  525. package/dist/rules/rtdb/constraints/data.js +4 -4
  526. package/dist/rules/rtdb/constraints/data.js.map +1 -1
  527. package/dist/rules/rtdb/constraints/document.d.ts.map +1 -1
  528. package/dist/rules/rtdb/constraints/document.js +6 -2
  529. package/dist/rules/rtdb/constraints/document.js.map +1 -1
  530. package/dist/rules/rtdb/constraints/policies.d.ts +2 -2
  531. package/dist/rules/rtdb/constraints/policies.d.ts.map +1 -1
  532. package/dist/rules/rtdb/constraints/policies.js +3 -3
  533. package/dist/rules/rtdb/constraints/policies.js.map +1 -1
  534. package/dist/rules/rtdb/constraints/schema.js +3 -3
  535. package/dist/rules/rtdb/constraints/schema.js.map +1 -1
  536. package/dist/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
  537. package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts +1 -1
  538. package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.d.ts.map +1 -1
  539. package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js +1 -3
  540. package/dist/rules/rtdb/grammar/RtdbExpr.ohm.generated.js.map +1 -1
  541. package/dist/rules/rtdb/grammar/linter.d.ts.map +1 -1
  542. package/dist/rules/rtdb/grammar/linter.js +28 -30
  543. package/dist/rules/rtdb/grammar/linter.js.map +1 -1
  544. package/dist/rules/rtdb/grammar/simulator.d.ts +15 -1
  545. package/dist/rules/rtdb/grammar/simulator.d.ts.map +1 -1
  546. package/dist/rules/rtdb/grammar/simulator.js +93 -65
  547. package/dist/rules/rtdb/grammar/simulator.js.map +1 -1
  548. package/dist/rules/rtdb/grammar/validator.d.ts.map +1 -1
  549. package/dist/rules/rtdb/grammar/validator.js +25 -26
  550. package/dist/rules/rtdb/grammar/validator.js.map +1 -1
  551. package/dist/rules/rtdb/simulation/handler.d.ts.map +1 -1
  552. package/dist/rules/rtdb/simulation/handler.js +136 -32
  553. package/dist/rules/rtdb/simulation/handler.js.map +1 -1
  554. package/dist/rules/rtdb/simulation/spec.d.ts +95 -5
  555. package/dist/rules/rtdb/simulation/spec.d.ts.map +1 -1
  556. package/dist/rules/rtdb/simulation/spec.js +22 -1
  557. package/dist/rules/rtdb/simulation/spec.js.map +1 -1
  558. package/dist/rules/rtdb/types.d.ts +18 -18
  559. package/dist/rules/simulator/evaluator.js +35 -69
  560. package/dist/rules/simulator/evaluator.js.map +1 -1
  561. package/dist/rules/simulator/handler.d.ts.map +1 -1
  562. package/dist/rules/simulator/handler.js +12 -3
  563. package/dist/rules/simulator/handler.js.map +1 -1
  564. package/dist/rules/simulator/mapdiff.d.ts +2 -0
  565. package/dist/rules/simulator/mapdiff.d.ts.map +1 -1
  566. package/dist/rules/simulator/mapdiff.js +7 -5
  567. package/dist/rules/simulator/mapdiff.js.map +1 -1
  568. package/dist/rules/simulator/query-proof-residual.d.ts +11 -0
  569. package/dist/rules/simulator/query-proof-residual.d.ts.map +1 -0
  570. package/dist/rules/simulator/query-proof-residual.js +177 -0
  571. package/dist/rules/simulator/query-proof-residual.js.map +1 -0
  572. package/dist/rules/simulator/query-proof.d.ts +21 -47
  573. package/dist/rules/simulator/query-proof.d.ts.map +1 -1
  574. package/dist/rules/simulator/query-proof.js +78 -13
  575. package/dist/rules/simulator/query-proof.js.map +1 -1
  576. package/dist/rules/simulator/request-path.d.ts +26 -0
  577. package/dist/rules/simulator/request-path.d.ts.map +1 -0
  578. package/dist/rules/simulator/request-path.js +36 -0
  579. package/dist/rules/simulator/request-path.js.map +1 -0
  580. package/dist/rules/simulator/trace-recorder.d.ts +1 -0
  581. package/dist/rules/simulator/trace-recorder.d.ts.map +1 -1
  582. package/dist/rules/simulator/trace-recorder.js +4 -0
  583. package/dist/rules/simulator/trace-recorder.js.map +1 -1
  584. package/dist/rules/simulator/wrappers/timestamp.d.ts +6 -0
  585. package/dist/rules/simulator/wrappers/timestamp.d.ts.map +1 -1
  586. package/dist/rules/simulator/wrappers/timestamp.js +8 -1
  587. package/dist/rules/simulator/wrappers/timestamp.js.map +1 -1
  588. package/dist/rules/simulator-tools-impl.d.ts.map +1 -1
  589. package/dist/rules/simulator-tools-impl.js +6 -3
  590. package/dist/rules/simulator-tools-impl.js.map +1 -1
  591. package/dist/rules/stdlib-tools.js +4 -4
  592. package/dist/rules/stdlib-tools.js.map +1 -1
  593. package/dist/rules/test/spec.d.ts +4 -4
  594. package/dist/sandbox/active-listeners.d.ts +69 -0
  595. package/dist/sandbox/active-listeners.d.ts.map +1 -0
  596. package/dist/sandbox/active-listeners.js +159 -0
  597. package/dist/sandbox/active-listeners.js.map +1 -0
  598. package/dist/sandbox/admin-firestore/error-translation.d.ts.map +1 -1
  599. package/dist/sandbox/admin-firestore/error-translation.js +15 -2
  600. package/dist/sandbox/admin-firestore/error-translation.js.map +1 -1
  601. package/dist/sandbox/admin-firestore/listeners.d.ts +0 -25
  602. package/dist/sandbox/admin-firestore/listeners.d.ts.map +1 -1
  603. package/dist/sandbox/admin-firestore/listeners.js +26 -2
  604. package/dist/sandbox/admin-firestore/listeners.js.map +1 -1
  605. package/dist/sandbox/admin-firestore/remote/listeners.d.ts.map +1 -1
  606. package/dist/sandbox/admin-firestore/remote/listeners.js +50 -29
  607. package/dist/sandbox/admin-firestore/remote/listeners.js.map +1 -1
  608. package/dist/sandbox/admin-firestore/remote/value-codec.d.ts +5 -12
  609. package/dist/sandbox/admin-firestore/remote/value-codec.d.ts.map +1 -1
  610. package/dist/sandbox/admin-firestore/remote/value-codec.js +7 -14
  611. package/dist/sandbox/admin-firestore/remote/value-codec.js.map +1 -1
  612. package/dist/sandbox/admin-firestore/remote/wire-types.d.ts +2 -0
  613. package/dist/sandbox/admin-firestore/remote/wire-types.d.ts.map +1 -1
  614. package/dist/sandbox/attribution/attribution-mode.d.ts +36 -0
  615. package/dist/sandbox/attribution/attribution-mode.d.ts.map +1 -0
  616. package/dist/sandbox/attribution/attribution-mode.js +68 -0
  617. package/dist/sandbox/attribution/attribution-mode.js.map +1 -0
  618. package/dist/sandbox/attribution/effect-regions.d.ts +37 -0
  619. package/dist/sandbox/attribution/effect-regions.d.ts.map +1 -0
  620. package/dist/sandbox/attribution/effect-regions.js +114 -0
  621. package/dist/sandbox/attribution/effect-regions.js.map +1 -0
  622. package/dist/sandbox/attribution/element-selector.d.ts +42 -0
  623. package/dist/sandbox/attribution/element-selector.d.ts.map +1 -0
  624. package/dist/sandbox/attribution/element-selector.js +109 -0
  625. package/dist/sandbox/attribution/element-selector.js.map +1 -0
  626. package/dist/sandbox/attribution/listener-owners.d.ts +111 -0
  627. package/dist/sandbox/attribution/listener-owners.d.ts.map +1 -0
  628. package/dist/sandbox/attribution/listener-owners.js +215 -0
  629. package/dist/sandbox/attribution/listener-owners.js.map +1 -0
  630. package/dist/sandbox/branches/engine.d.ts +129 -0
  631. package/dist/sandbox/branches/engine.d.ts.map +1 -0
  632. package/dist/sandbox/branches/engine.js +280 -0
  633. package/dist/sandbox/branches/engine.js.map +1 -0
  634. package/dist/sandbox/branches/index.d.ts +12 -139
  635. package/dist/sandbox/branches/index.d.ts.map +1 -1
  636. package/dist/sandbox/branches/index.js +8 -390
  637. package/dist/sandbox/branches/index.js.map +1 -1
  638. package/dist/sandbox/branches/promotion.d.ts +27 -0
  639. package/dist/sandbox/branches/promotion.d.ts.map +1 -0
  640. package/dist/sandbox/branches/promotion.js +160 -0
  641. package/dist/sandbox/branches/promotion.js.map +1 -0
  642. package/dist/sandbox/branches/state-diff.d.ts +66 -0
  643. package/dist/sandbox/branches/state-diff.d.ts.map +1 -0
  644. package/dist/sandbox/branches/state-diff.js +270 -0
  645. package/dist/sandbox/branches/state-diff.js.map +1 -0
  646. package/dist/sandbox/branches/store.d.ts +64 -0
  647. package/dist/sandbox/branches/store.d.ts.map +1 -0
  648. package/dist/sandbox/branches/store.js +264 -0
  649. package/dist/sandbox/branches/store.js.map +1 -0
  650. package/dist/sandbox/checkpoints/capture.d.ts +39 -0
  651. package/dist/sandbox/checkpoints/capture.d.ts.map +1 -0
  652. package/dist/sandbox/checkpoints/capture.js +69 -0
  653. package/dist/sandbox/checkpoints/capture.js.map +1 -0
  654. package/dist/sandbox/checkpoints/directory-backend.d.ts +30 -0
  655. package/dist/sandbox/checkpoints/directory-backend.d.ts.map +1 -0
  656. package/dist/sandbox/checkpoints/directory-backend.js +98 -0
  657. package/dist/sandbox/checkpoints/directory-backend.js.map +1 -0
  658. package/dist/sandbox/checkpoints/index.d.ts +15 -0
  659. package/dist/sandbox/checkpoints/index.d.ts.map +1 -0
  660. package/dist/sandbox/checkpoints/index.js +13 -0
  661. package/dist/sandbox/checkpoints/index.js.map +1 -0
  662. package/dist/sandbox/checkpoints/record-backend.d.ts +25 -0
  663. package/dist/sandbox/checkpoints/record-backend.d.ts.map +1 -0
  664. package/dist/sandbox/checkpoints/record-backend.js +81 -0
  665. package/dist/sandbox/checkpoints/record-backend.js.map +1 -0
  666. package/dist/sandbox/checkpoints/saved-states.d.ts +35 -0
  667. package/dist/sandbox/checkpoints/saved-states.d.ts.map +1 -0
  668. package/dist/sandbox/checkpoints/saved-states.js +47 -0
  669. package/dist/sandbox/checkpoints/saved-states.js.map +1 -0
  670. package/dist/sandbox/checkpoints/types.d.ts +84 -0
  671. package/dist/sandbox/checkpoints/types.d.ts.map +1 -0
  672. package/dist/sandbox/checkpoints/types.js +51 -0
  673. package/dist/sandbox/checkpoints/types.js.map +1 -0
  674. package/dist/sandbox/checkpoints/validation.d.ts +3 -0
  675. package/dist/sandbox/checkpoints/validation.d.ts.map +1 -0
  676. package/dist/sandbox/checkpoints/validation.js +99 -0
  677. package/dist/sandbox/checkpoints/validation.js.map +1 -0
  678. package/dist/sandbox/clock.d.ts +121 -0
  679. package/dist/sandbox/clock.d.ts.map +1 -0
  680. package/dist/sandbox/clock.js +167 -0
  681. package/dist/sandbox/clock.js.map +1 -0
  682. package/dist/sandbox/full-state.d.ts +160 -0
  683. package/dist/sandbox/full-state.d.ts.map +1 -0
  684. package/dist/sandbox/full-state.js +267 -0
  685. package/dist/sandbox/full-state.js.map +1 -0
  686. package/dist/sandbox/index.d.ts +13 -6
  687. package/dist/sandbox/index.d.ts.map +1 -1
  688. package/dist/sandbox/index.js +23 -9
  689. package/dist/sandbox/index.js.map +1 -1
  690. package/dist/sandbox/internal/ai-evidence.d.ts +27 -0
  691. package/dist/sandbox/internal/ai-evidence.d.ts.map +1 -0
  692. package/dist/sandbox/internal/ai-evidence.js +29 -0
  693. package/dist/sandbox/internal/ai-evidence.js.map +1 -0
  694. package/dist/sandbox/internal/event-history.d.ts +32 -0
  695. package/dist/sandbox/internal/event-history.d.ts.map +1 -0
  696. package/dist/sandbox/internal/event-history.js +199 -0
  697. package/dist/sandbox/internal/event-history.js.map +1 -0
  698. package/dist/sandbox/internal/history-integrity.d.ts +3 -0
  699. package/dist/sandbox/internal/history-integrity.d.ts.map +1 -0
  700. package/dist/sandbox/internal/history-integrity.js +12 -0
  701. package/dist/sandbox/internal/history-integrity.js.map +1 -0
  702. package/dist/sandbox/internal/history-retention.d.ts +6 -0
  703. package/dist/sandbox/internal/history-retention.d.ts.map +1 -0
  704. package/dist/sandbox/internal/history-retention.js +12 -0
  705. package/dist/sandbox/internal/history-retention.js.map +1 -0
  706. package/dist/sandbox/internal/index.d.ts +27 -0
  707. package/dist/sandbox/internal/index.d.ts.map +1 -1
  708. package/dist/sandbox/internal/index.js +26 -0
  709. package/dist/sandbox/internal/index.js.map +1 -1
  710. package/dist/sandbox/internal/observation-history.d.ts +6 -0
  711. package/dist/sandbox/internal/observation-history.d.ts.map +1 -0
  712. package/dist/sandbox/internal/observation-history.js +6 -0
  713. package/dist/sandbox/internal/observation-history.js.map +1 -0
  714. package/dist/sandbox/internal/observation-payload.d.ts +6 -0
  715. package/dist/sandbox/internal/observation-payload.d.ts.map +1 -0
  716. package/dist/sandbox/internal/observation-payload.js +24 -0
  717. package/dist/sandbox/internal/observation-payload.js.map +1 -0
  718. package/dist/sandbox/internal/provenance.d.ts +0 -1
  719. package/dist/sandbox/internal/provenance.d.ts.map +1 -1
  720. package/dist/sandbox/internal/provenance.js +6 -0
  721. package/dist/sandbox/internal/provenance.js.map +1 -1
  722. package/dist/sandbox/internal/root.d.ts +2 -1
  723. package/dist/sandbox/internal/root.d.ts.map +1 -1
  724. package/dist/sandbox/internal/root.js +2 -2
  725. package/dist/sandbox/internal/root.js.map +1 -1
  726. package/dist/sandbox/internal/rules-evidence-retention.d.ts +11 -0
  727. package/dist/sandbox/internal/rules-evidence-retention.d.ts.map +1 -0
  728. package/dist/sandbox/internal/rules-evidence-retention.js +27 -0
  729. package/dist/sandbox/internal/rules-evidence-retention.js.map +1 -0
  730. package/dist/sandbox/internal/sandbox-impl.d.ts +40 -33
  731. package/dist/sandbox/internal/sandbox-impl.d.ts.map +1 -1
  732. package/dist/sandbox/internal/sandbox-impl.js +83 -40
  733. package/dist/sandbox/internal/sandbox-impl.js.map +1 -1
  734. package/dist/sandbox/internal/sdk-activity.d.ts +112 -0
  735. package/dist/sandbox/internal/sdk-activity.d.ts.map +1 -0
  736. package/dist/sandbox/internal/sdk-activity.js +240 -0
  737. package/dist/sandbox/internal/sdk-activity.js.map +1 -0
  738. package/dist/sandbox/internal/sdk-coverage.d.ts +10 -0
  739. package/dist/sandbox/internal/sdk-coverage.d.ts.map +1 -0
  740. package/dist/sandbox/internal/sdk-coverage.js +21 -0
  741. package/dist/sandbox/internal/sdk-coverage.js.map +1 -0
  742. package/dist/sandbox/internal/sdk-observation.d.ts +32 -0
  743. package/dist/sandbox/internal/sdk-observation.d.ts.map +1 -0
  744. package/dist/sandbox/internal/sdk-observation.js +29 -0
  745. package/dist/sandbox/internal/sdk-observation.js.map +1 -0
  746. package/dist/sandbox/internal/sdk-rates.d.ts +97 -0
  747. package/dist/sandbox/internal/sdk-rates.d.ts.map +1 -0
  748. package/dist/sandbox/internal/sdk-rates.js +187 -0
  749. package/dist/sandbox/internal/sdk-rates.js.map +1 -0
  750. package/dist/sandbox/internal/sdk-write-activity.d.ts +5 -0
  751. package/dist/sandbox/internal/sdk-write-activity.d.ts.map +1 -0
  752. package/dist/sandbox/internal/sdk-write-activity.js +13 -0
  753. package/dist/sandbox/internal/sdk-write-activity.js.map +1 -0
  754. package/dist/sandbox/internal/state-schemas.d.ts +120 -0
  755. package/dist/sandbox/internal/state-schemas.d.ts.map +1 -0
  756. package/dist/sandbox/internal/state-schemas.js +42 -0
  757. package/dist/sandbox/internal/state-schemas.js.map +1 -0
  758. package/dist/sandbox/internal/state-values.d.ts +6 -0
  759. package/dist/sandbox/internal/state-values.d.ts.map +1 -0
  760. package/dist/sandbox/internal/state-values.js +15 -0
  761. package/dist/sandbox/internal/state-values.js.map +1 -0
  762. package/dist/sandbox/internal/storage-activity.d.ts +13 -0
  763. package/dist/sandbox/internal/storage-activity.d.ts.map +1 -0
  764. package/dist/sandbox/internal/storage-activity.js +48 -0
  765. package/dist/sandbox/internal/storage-activity.js.map +1 -0
  766. package/dist/sandbox/internal/usage-evidence.d.ts +24 -0
  767. package/dist/sandbox/internal/usage-evidence.d.ts.map +1 -0
  768. package/dist/sandbox/internal/usage-evidence.js +56 -0
  769. package/dist/sandbox/internal/usage-evidence.js.map +1 -0
  770. package/dist/sandbox/operation-record.d.ts +20 -1
  771. package/dist/sandbox/operation-record.d.ts.map +1 -1
  772. package/dist/sandbox/operation-record.js +100 -4
  773. package/dist/sandbox/operation-record.js.map +1 -1
  774. package/dist/sandbox/persistence/changed-buckets.d.ts +19 -0
  775. package/dist/sandbox/persistence/changed-buckets.d.ts.map +1 -0
  776. package/dist/sandbox/persistence/changed-buckets.js +72 -0
  777. package/dist/sandbox/persistence/changed-buckets.js.map +1 -0
  778. package/dist/sandbox/persistence/chunk-format.d.ts +27 -1
  779. package/dist/sandbox/persistence/chunk-format.d.ts.map +1 -1
  780. package/dist/sandbox/persistence/chunk-format.js +37 -25
  781. package/dist/sandbox/persistence/chunk-format.js.map +1 -1
  782. package/dist/sandbox/persistence/controller.d.ts.map +1 -1
  783. package/dist/sandbox/persistence/controller.js +91 -36
  784. package/dist/sandbox/persistence/controller.js.map +1 -1
  785. package/dist/sandbox/persistence/import-bundle.d.ts +8 -0
  786. package/dist/sandbox/persistence/import-bundle.d.ts.map +1 -0
  787. package/dist/sandbox/persistence/import-bundle.js +66 -0
  788. package/dist/sandbox/persistence/import-bundle.js.map +1 -0
  789. package/dist/sandbox/persistence/serialize.d.ts +1 -1
  790. package/dist/sandbox/persistence/serialize.d.ts.map +1 -1
  791. package/dist/sandbox/persistence/serialize.js +16 -11
  792. package/dist/sandbox/persistence/serialize.js.map +1 -1
  793. package/dist/sandbox/persistence/types.d.ts +4 -0
  794. package/dist/sandbox/persistence/types.d.ts.map +1 -1
  795. package/dist/sandbox/persistence/validate-services.d.ts +7 -0
  796. package/dist/sandbox/persistence/validate-services.d.ts.map +1 -0
  797. package/dist/sandbox/persistence/validate-services.js +73 -0
  798. package/dist/sandbox/persistence/validate-services.js.map +1 -0
  799. package/dist/sandbox/remote.d.ts +6 -0
  800. package/dist/sandbox/remote.d.ts.map +1 -1
  801. package/dist/sandbox/remote.js.map +1 -1
  802. package/dist/sandbox/replay/index.d.ts +1 -1
  803. package/dist/sandbox/replay/index.d.ts.map +1 -1
  804. package/dist/sandbox/replay/index.js +18 -8
  805. package/dist/sandbox/replay/index.js.map +1 -1
  806. package/dist/sandbox/types/errors.d.ts +3 -1
  807. package/dist/sandbox/types/errors.d.ts.map +1 -1
  808. package/dist/sandbox/types/errors.js +0 -4
  809. package/dist/sandbox/types/errors.js.map +1 -1
  810. package/dist/sandbox/types/events.d.ts +105 -76
  811. package/dist/sandbox/types/events.d.ts.map +1 -1
  812. package/dist/sandbox/types/events.js +0 -5
  813. package/dist/sandbox/types/events.js.map +1 -1
  814. package/dist/sandbox/types/index.d.ts +2 -1
  815. package/dist/sandbox/types/index.d.ts.map +1 -1
  816. package/dist/sandbox/types/index.js +1 -0
  817. package/dist/sandbox/types/index.js.map +1 -1
  818. package/dist/sandbox/types/operation.d.ts +13 -4
  819. package/dist/sandbox/types/operation.d.ts.map +1 -1
  820. package/dist/sandbox/types/persistence.d.ts +2 -2
  821. package/dist/sandbox/types/query-proof.d.ts +25 -0
  822. package/dist/sandbox/types/query-proof.d.ts.map +1 -0
  823. package/dist/sandbox/types/query-proof.js +2 -0
  824. package/dist/sandbox/types/query-proof.js.map +1 -0
  825. package/dist/sandbox/types/request-observation.d.ts +19 -0
  826. package/dist/sandbox/types/request-observation.d.ts.map +1 -0
  827. package/dist/sandbox/types/request-observation.js +13 -0
  828. package/dist/sandbox/types/request-observation.js.map +1 -0
  829. package/dist/sandbox/types/rules-evidence.d.ts +48 -0
  830. package/dist/sandbox/types/rules-evidence.d.ts.map +1 -0
  831. package/dist/sandbox/types/rules-evidence.js +2 -0
  832. package/dist/sandbox/types/rules-evidence.js.map +1 -0
  833. package/dist/sandbox/types/service-event-record.d.ts +30 -0
  834. package/dist/sandbox/types/service-event-record.d.ts.map +1 -0
  835. package/dist/sandbox/types/service-event-record.js +13 -0
  836. package/dist/sandbox/types/service-event-record.js.map +1 -0
  837. package/dist/sandbox/types/service-event-records.d.ts +64 -0
  838. package/dist/sandbox/types/service-event-records.d.ts.map +1 -0
  839. package/dist/sandbox/types/service-event-records.js +31 -0
  840. package/dist/sandbox/types/service-event-records.js.map +1 -0
  841. package/dist/sandbox/types/service-mutation-event.d.ts +88 -0
  842. package/dist/sandbox/types/service-mutation-event.d.ts.map +1 -0
  843. package/dist/sandbox/types/service-mutation-event.js +2 -0
  844. package/dist/sandbox/types/service-mutation-event.js.map +1 -0
  845. package/dist/storage/activity-coverage.d.ts +9 -0
  846. package/dist/storage/activity-coverage.d.ts.map +1 -0
  847. package/dist/storage/activity-coverage.js +9 -0
  848. package/dist/storage/activity-coverage.js.map +1 -0
  849. package/dist/storage/base64.d.ts +14 -0
  850. package/dist/storage/base64.d.ts.map +1 -0
  851. package/dist/storage/base64.js +34 -0
  852. package/dist/storage/base64.js.map +1 -0
  853. package/dist/storage/download.d.ts +12 -4
  854. package/dist/storage/download.d.ts.map +1 -1
  855. package/dist/storage/download.js +19 -6
  856. package/dist/storage/download.js.map +1 -1
  857. package/dist/storage/enforce.d.ts +13 -2
  858. package/dist/storage/enforce.d.ts.map +1 -1
  859. package/dist/storage/enforce.js +21 -3
  860. package/dist/storage/enforce.js.map +1 -1
  861. package/dist/storage/errors.d.ts +29 -5
  862. package/dist/storage/errors.d.ts.map +1 -1
  863. package/dist/storage/errors.js +28 -0
  864. package/dist/storage/errors.js.map +1 -1
  865. package/dist/storage/events.d.ts +12 -0
  866. package/dist/storage/events.d.ts.map +1 -0
  867. package/dist/storage/events.js +10 -0
  868. package/dist/storage/events.js.map +1 -0
  869. package/dist/storage/index.d.ts +7 -7
  870. package/dist/storage/index.d.ts.map +1 -1
  871. package/dist/storage/index.js +7 -5
  872. package/dist/storage/index.js.map +1 -1
  873. package/dist/storage/internal.d.ts +10 -1
  874. package/dist/storage/internal.d.ts.map +1 -1
  875. package/dist/storage/internal.js +9 -1
  876. package/dist/storage/internal.js.map +1 -1
  877. package/dist/storage/metadata.d.ts +19 -0
  878. package/dist/storage/metadata.d.ts.map +1 -1
  879. package/dist/storage/metadata.js +50 -19
  880. package/dist/storage/metadata.js.map +1 -1
  881. package/dist/storage/observed.d.ts +16 -0
  882. package/dist/storage/observed.d.ts.map +1 -0
  883. package/dist/storage/observed.js +17 -0
  884. package/dist/storage/observed.js.map +1 -0
  885. package/dist/storage/persistence.d.ts +157 -20
  886. package/dist/storage/persistence.d.ts.map +1 -1
  887. package/dist/storage/persistence.js +423 -53
  888. package/dist/storage/persistence.js.map +1 -1
  889. package/dist/storage/reference.d.ts +3 -1
  890. package/dist/storage/reference.d.ts.map +1 -1
  891. package/dist/storage/reference.js +3 -2
  892. package/dist/storage/reference.js.map +1 -1
  893. package/dist/storage/remote-bytes.d.ts +44 -0
  894. package/dist/storage/remote-bytes.d.ts.map +1 -0
  895. package/dist/storage/remote-bytes.js +97 -0
  896. package/dist/storage/remote-bytes.js.map +1 -0
  897. package/dist/storage/resumable.d.ts.map +1 -1
  898. package/dist/storage/resumable.js +16 -0
  899. package/dist/storage/resumable.js.map +1 -1
  900. package/dist/storage/rules-resolution.d.ts +13 -1
  901. package/dist/storage/rules-resolution.d.ts.map +1 -1
  902. package/dist/storage/rules-resolution.js +28 -0
  903. package/dist/storage/rules-resolution.js.map +1 -1
  904. package/dist/storage/sandbox/persistence-state.d.ts +25 -0
  905. package/dist/storage/sandbox/persistence-state.d.ts.map +1 -0
  906. package/dist/storage/sandbox/persistence-state.js +53 -0
  907. package/dist/storage/sandbox/persistence-state.js.map +1 -0
  908. package/dist/storage/sandbox/rules-bindings.d.ts +15 -0
  909. package/dist/storage/sandbox/rules-bindings.d.ts.map +1 -0
  910. package/dist/storage/sandbox/rules-bindings.js +69 -0
  911. package/dist/storage/sandbox/rules-bindings.js.map +1 -0
  912. package/dist/storage/sandbox/rules-collection-methods.d.ts +3 -0
  913. package/dist/storage/sandbox/rules-collection-methods.d.ts.map +1 -0
  914. package/dist/storage/sandbox/rules-collection-methods.js +149 -0
  915. package/dist/storage/sandbox/rules-collection-methods.js.map +1 -0
  916. package/dist/storage/sandbox/rules-evaluator.d.ts +2 -2
  917. package/dist/storage/sandbox/rules-evaluator.d.ts.map +1 -1
  918. package/dist/storage/sandbox/rules-evaluator.js +51 -129
  919. package/dist/storage/sandbox/rules-evaluator.js.map +1 -1
  920. package/dist/storage/sandbox/rules-firestore-lookup.d.ts +25 -0
  921. package/dist/storage/sandbox/rules-firestore-lookup.d.ts.map +1 -0
  922. package/dist/storage/sandbox/rules-firestore-lookup.js +94 -0
  923. package/dist/storage/sandbox/rules-firestore-lookup.js.map +1 -0
  924. package/dist/storage/sandbox/rules-hashing-methods.d.ts +16 -0
  925. package/dist/storage/sandbox/rules-hashing-methods.d.ts.map +1 -0
  926. package/dist/storage/sandbox/rules-hashing-methods.js +41 -0
  927. package/dist/storage/sandbox/rules-hashing-methods.js.map +1 -0
  928. package/dist/storage/sandbox/rules-method-calls.d.ts +40 -0
  929. package/dist/storage/sandbox/rules-method-calls.d.ts.map +1 -0
  930. package/dist/storage/sandbox/rules-method-calls.js +47 -0
  931. package/dist/storage/sandbox/rules-method-calls.js.map +1 -0
  932. package/dist/storage/sandbox/rules-methods.d.ts +11 -12
  933. package/dist/storage/sandbox/rules-methods.d.ts.map +1 -1
  934. package/dist/storage/sandbox/rules-methods.js +62 -359
  935. package/dist/storage/sandbox/rules-methods.js.map +1 -1
  936. package/dist/storage/sandbox/rules-operators.d.ts +32 -0
  937. package/dist/storage/sandbox/rules-operators.d.ts.map +1 -0
  938. package/dist/storage/sandbox/rules-operators.js +85 -0
  939. package/dist/storage/sandbox/rules-operators.js.map +1 -0
  940. package/dist/storage/sandbox/rules-string-methods.d.ts +3 -0
  941. package/dist/storage/sandbox/rules-string-methods.d.ts.map +1 -0
  942. package/dist/storage/sandbox/rules-string-methods.js +199 -0
  943. package/dist/storage/sandbox/rules-string-methods.js.map +1 -0
  944. package/dist/storage/sandbox/rules-time-methods.d.ts +25 -0
  945. package/dist/storage/sandbox/rules-time-methods.d.ts.map +1 -0
  946. package/dist/storage/sandbox/rules-time-methods.js +89 -0
  947. package/dist/storage/sandbox/rules-time-methods.js.map +1 -0
  948. package/dist/storage/sandbox/rules-values.d.ts +6 -0
  949. package/dist/storage/sandbox/rules-values.d.ts.map +1 -1
  950. package/dist/storage/sandbox/rules-values.js +29 -2
  951. package/dist/storage/sandbox/rules-values.js.map +1 -1
  952. package/dist/storage/sandbox/rules.d.ts +25 -13
  953. package/dist/storage/sandbox/rules.d.ts.map +1 -1
  954. package/dist/storage/sandbox/rules.js +19 -10
  955. package/dist/storage/sandbox/rules.js.map +1 -1
  956. package/dist/storage/sandbox/running-service.d.ts +65 -0
  957. package/dist/storage/sandbox/running-service.d.ts.map +1 -0
  958. package/dist/storage/sandbox/running-service.js +30 -0
  959. package/dist/storage/sandbox/running-service.js.map +1 -0
  960. package/dist/storage/service.d.ts +46 -28
  961. package/dist/storage/service.d.ts.map +1 -1
  962. package/dist/storage/service.js +169 -57
  963. package/dist/storage/service.js.map +1 -1
  964. package/dist/storage/string-format.d.ts +9 -0
  965. package/dist/storage/string-format.d.ts.map +1 -0
  966. package/dist/storage/string-format.js +8 -0
  967. package/dist/storage/string-format.js.map +1 -0
  968. package/dist/storage/upload.d.ts +2 -1
  969. package/dist/storage/upload.d.ts.map +1 -1
  970. package/dist/storage/upload.js +6 -2
  971. package/dist/storage/upload.js.map +1 -1
  972. package/dist/storage/url.d.ts +18 -0
  973. package/dist/storage/url.d.ts.map +1 -0
  974. package/dist/storage/url.js +84 -0
  975. package/dist/storage/url.js.map +1 -0
  976. package/package.json +17 -1
  977. package/src/ai/activity.ts +43 -0
  978. package/src/ai/broker/broker.ts +59 -6
  979. package/src/ai/broker/gemini-engine.ts +16 -0
  980. package/src/ai/broker/index.ts +1 -1
  981. package/src/ai/broker/openai-engine.ts +6 -3
  982. package/src/ai/broker/scripted-engine.ts +16 -5
  983. package/src/ai/broker/types.ts +6 -2
  984. package/src/ai/events.ts +29 -0
  985. package/src/ai/generation-enums.ts +48 -0
  986. package/src/ai/index.ts +9 -0
  987. package/src/ai/instances.ts +22 -2
  988. package/src/ai/internal.ts +5 -0
  989. package/src/ai/sandbox-plane.ts +23 -8
  990. package/src/ai/scripting.ts +42 -7
  991. package/src/app/internal.ts +1 -0
  992. package/src/auth/email-link.ts +32 -21
  993. package/src/auth/events.ts +29 -0
  994. package/src/auth/factor-id.ts +7 -0
  995. package/src/auth/index.ts +2 -0
  996. package/src/auth/instances.ts +13 -1
  997. package/src/auth/internal.ts +24 -0
  998. package/src/auth/modular.ts +27 -0
  999. package/src/auth/reauth.ts +3 -2
  1000. package/src/auth/sandbox/default-avatar.ts +177 -0
  1001. package/src/auth/sandbox/driver.ts +54 -0
  1002. package/src/auth/sandbox/project-store.ts +0 -2
  1003. package/src/auth/sandbox-backend-types.ts +31 -20
  1004. package/src/auth/sandbox-backend.ts +400 -94
  1005. package/src/auth/seed-user.ts +38 -0
  1006. package/src/auth/tokens.ts +21 -18
  1007. package/src/auth/types.ts +13 -1
  1008. package/src/database/activity-coverage.ts +10 -0
  1009. package/src/database/connection-lifecycle.ts +53 -24
  1010. package/src/database/events.ts +20 -0
  1011. package/src/database/instances.ts +52 -21
  1012. package/src/database/internal/query-projection.ts +333 -0
  1013. package/src/database/internal.ts +2 -0
  1014. package/src/database/listeners.ts +162 -44
  1015. package/src/database/operations.ts +73 -50
  1016. package/src/database/replay.ts +6 -2
  1017. package/src/database/routing.ts +4 -0
  1018. package/src/database/sandbox/backend-for.ts +145 -25
  1019. package/src/database/sandbox/backend-state.ts +15 -1
  1020. package/src/database/sandbox/backend.ts +4 -2
  1021. package/src/database/sandbox/child-listeners.ts +32 -13
  1022. package/src/database/sandbox/listener-types.ts +5 -0
  1023. package/src/database/sandbox/operation-events.ts +23 -9
  1024. package/src/database/sandbox/persistence-state.ts +4 -11
  1025. package/src/database/sandbox/priority-writes.ts +2 -2
  1026. package/src/database/sandbox/query.ts +13 -268
  1027. package/src/database/sandbox/rules-eval.ts +144 -10
  1028. package/src/database/sandbox/transactions.ts +17 -39
  1029. package/src/database/sandbox/value-listeners.ts +66 -23
  1030. package/src/database/sandbox/write-plane.ts +29 -22
  1031. package/src/database/sdk-activity.ts +26 -0
  1032. package/src/database/transactions.ts +15 -11
  1033. package/src/database/types.ts +12 -1
  1034. package/src/deferred/entry.ts +16 -10
  1035. package/src/firestore/activity-coverage.ts +8 -0
  1036. package/src/firestore/aggregates.ts +17 -9
  1037. package/src/firestore/bytes.ts +56 -0
  1038. package/src/firestore/converter-method.ts +49 -0
  1039. package/src/firestore/errors.ts +8 -0
  1040. package/src/firestore/field-values.ts +3 -158
  1041. package/src/firestore/geo-point.ts +56 -0
  1042. package/src/firestore/index.ts +1 -1
  1043. package/src/firestore/instances.ts +23 -2
  1044. package/src/firestore/internal/document-data.ts +9 -0
  1045. package/src/firestore/internal/index.ts +7 -0
  1046. package/src/firestore/internal/value-codec.ts +150 -83
  1047. package/src/firestore/internal/value-depth.ts +19 -0
  1048. package/src/firestore/listeners.ts +60 -18
  1049. package/src/firestore/persistence.ts +14 -9
  1050. package/src/firestore/plain-object.ts +7 -0
  1051. package/src/firestore/query-constraints.ts +4 -8
  1052. package/src/firestore/reads.ts +81 -48
  1053. package/src/firestore/refs.ts +56 -41
  1054. package/src/firestore/sandbox/activity-query-display.ts +138 -0
  1055. package/src/firestore/sandbox/admin-compat/batch.ts +26 -19
  1056. package/src/firestore/sandbox/admin-compat/query-comparison.ts +9 -8
  1057. package/src/firestore/sandbox/admin-compat/query.ts +46 -12
  1058. package/src/firestore/sandbox/admin-compat/read-translation.ts +18 -6
  1059. package/src/firestore/sandbox/admin-compat/transaction.ts +14 -4
  1060. package/src/firestore/sandbox/admin-compat/types.ts +6 -88
  1061. package/src/firestore/sandbox/atomic-state.ts +112 -0
  1062. package/src/firestore/sandbox/atomic-write-pipeline.ts +129 -77
  1063. package/src/firestore/sandbox/batch-write-executor.ts +51 -29
  1064. package/src/firestore/sandbox/converters/user-timestamp.ts +19 -42
  1065. package/src/firestore/sandbox/document-copy.ts +27 -0
  1066. package/src/firestore/sandbox/document-store.ts +108 -0
  1067. package/src/firestore/sandbox/errors.ts +5 -1
  1068. package/src/firestore/sandbox/event-log.ts +72 -7
  1069. package/src/firestore/sandbox/field-merge.ts +10 -19
  1070. package/src/firestore/sandbox/history-controls.ts +1 -1
  1071. package/src/firestore/sandbox/list-query-proof.ts +43 -72
  1072. package/src/firestore/sandbox/listener-dispatch.ts +59 -4
  1073. package/src/firestore/sandbox/local-environment.ts +35 -7
  1074. package/src/firestore/sandbox/local-state.ts +72 -232
  1075. package/src/firestore/sandbox/query-execution.ts +56 -34
  1076. package/src/firestore/sandbox/query-operand-equality.ts +57 -14
  1077. package/src/firestore/sandbox/query-operators.ts +20 -0
  1078. package/src/firestore/sandbox/query-value-registry.ts +3 -2
  1079. package/src/firestore/sandbox/request-events.ts +5 -0
  1080. package/src/firestore/sandbox/rules-evidence.ts +94 -0
  1081. package/src/firestore/sandbox/rules-list-authorizer.ts +62 -107
  1082. package/src/firestore/sandbox/rules-operation-reader.ts +11 -4
  1083. package/src/firestore/sandbox/rules-read-engine.ts +19 -8
  1084. package/src/firestore/sandbox/rules-state.ts +21 -0
  1085. package/src/firestore/sandbox/snapshot-listeners.ts +12 -1
  1086. package/src/firestore/sandbox/transaction-merge.ts +33 -20
  1087. package/src/firestore/sandbox/transaction-types.ts +11 -21
  1088. package/src/firestore/sandbox/transaction-write-executor.ts +103 -69
  1089. package/src/firestore/sandbox/transaction.ts +24 -7
  1090. package/src/firestore/sandbox/value-resolver.ts +2 -13
  1091. package/src/firestore/sandbox/write-engine.ts +13 -5
  1092. package/src/firestore/sandbox/write-runtime.ts +68 -40
  1093. package/src/firestore/sandbox/writes.ts +3 -1
  1094. package/src/firestore/sdk-activity.ts +31 -0
  1095. package/src/firestore/snapshots.ts +84 -18
  1096. package/src/firestore/state.ts +34 -14
  1097. package/src/firestore/timestamp.ts +86 -0
  1098. package/src/firestore/tools.ts +3 -3
  1099. package/src/firestore/transactions.ts +88 -8
  1100. package/src/firestore/types.ts +26 -5
  1101. package/src/firestore/vector-value.ts +54 -0
  1102. package/src/firestore/writes.ts +53 -43
  1103. package/src/functions/events.ts +27 -0
  1104. package/src/messaging/broker/broker.test.ts +114 -0
  1105. package/src/messaging/broker/broker.ts +152 -65
  1106. package/src/messaging/broker/delivery-history.ts +49 -0
  1107. package/src/messaging/broker/index.ts +11 -0
  1108. package/src/messaging/broker/persistence.ts +54 -0
  1109. package/src/messaging/broker/types.ts +50 -0
  1110. package/src/messaging/events.ts +29 -0
  1111. package/src/rules/api/case-types.ts +7 -0
  1112. package/src/rules/api/rtdb.ts +15 -7
  1113. package/src/rules/grammar/parse-error-wording.ts +98 -0
  1114. package/src/rules/indexes/query-analysis.ts +136 -0
  1115. package/src/rules/indexes/service-query.ts +69 -0
  1116. package/src/rules/internal/index.ts +16 -0
  1117. package/src/rules/modules/rules-capabilities.generated.ts +1 -1
  1118. package/src/rules/rtdb/constraints/atoms.spec.ts +7 -7
  1119. package/src/rules/rtdb/constraints/atoms.ts +7 -7
  1120. package/src/rules/rtdb/constraints/data.ts +4 -4
  1121. package/src/rules/rtdb/constraints/document.ts +4 -2
  1122. package/src/rules/rtdb/constraints/game.spec.ts +4 -4
  1123. package/src/rules/rtdb/constraints/policies.spec.ts +5 -5
  1124. package/src/rules/rtdb/constraints/policies.ts +4 -4
  1125. package/src/rules/rtdb/constraints/schema.ts +3 -3
  1126. package/src/rules/rtdb/grammar/RtdbExpr.ohm +1 -3
  1127. package/src/rules/rtdb/grammar/RtdbExpr.ohm.generated.ts +1 -3
  1128. package/src/rules/rtdb/grammar/linter.ts +34 -30
  1129. package/src/rules/rtdb/grammar/simulator.ts +112 -74
  1130. package/src/rules/rtdb/grammar/validator.ts +30 -26
  1131. package/src/rules/rtdb/simulation/handler.ts +139 -36
  1132. package/src/rules/rtdb/simulation/spec.ts +24 -1
  1133. package/src/rules/simulator/evaluator.ts +34 -41
  1134. package/src/rules/simulator/handler.ts +12 -3
  1135. package/src/rules/simulator/mapdiff.ts +7 -5
  1136. package/src/rules/simulator/query-proof-residual.ts +209 -0
  1137. package/src/rules/simulator/query-proof.ts +53 -27
  1138. package/src/rules/simulator/request-path.ts +39 -0
  1139. package/src/rules/simulator/trace-recorder.ts +3 -0
  1140. package/src/rules/simulator/wrappers/timestamp.ts +8 -1
  1141. package/src/rules/simulator-tools-impl.ts +6 -3
  1142. package/src/rules/stdlib-tools.ts +4 -4
  1143. package/src/sandbox/active-listeners.ts +245 -0
  1144. package/src/sandbox/admin-firestore/error-translation.ts +16 -2
  1145. package/src/sandbox/admin-firestore/listeners.ts +26 -1
  1146. package/src/sandbox/admin-firestore/remote/listeners.ts +50 -32
  1147. package/src/sandbox/admin-firestore/remote/value-codec.ts +7 -14
  1148. package/src/sandbox/admin-firestore/remote/wire-types.ts +3 -0
  1149. package/src/sandbox/attribution/attribution-mode.ts +74 -0
  1150. package/src/sandbox/attribution/effect-regions.ts +130 -0
  1151. package/src/sandbox/attribution/element-selector.ts +118 -0
  1152. package/src/sandbox/attribution/listener-owners.ts +277 -0
  1153. package/src/sandbox/branches/engine.ts +362 -0
  1154. package/src/sandbox/branches/index.ts +12 -448
  1155. package/src/sandbox/branches/promotion.ts +207 -0
  1156. package/src/sandbox/branches/state-diff.ts +333 -0
  1157. package/src/sandbox/branches/store.ts +317 -0
  1158. package/src/sandbox/checkpoints/capture.ts +77 -0
  1159. package/src/sandbox/checkpoints/directory-backend.ts +110 -0
  1160. package/src/sandbox/checkpoints/index.ts +32 -0
  1161. package/src/sandbox/checkpoints/record-backend.ts +109 -0
  1162. package/src/sandbox/checkpoints/saved-states.ts +72 -0
  1163. package/src/sandbox/checkpoints/types.ts +115 -0
  1164. package/src/sandbox/checkpoints/validation.ts +102 -0
  1165. package/src/sandbox/clock.ts +205 -0
  1166. package/src/sandbox/full-state.ts +403 -0
  1167. package/src/sandbox/index.ts +53 -10
  1168. package/src/sandbox/internal/ai-evidence.ts +38 -0
  1169. package/src/sandbox/internal/event-history.ts +193 -0
  1170. package/src/sandbox/internal/history-integrity.ts +12 -0
  1171. package/src/sandbox/internal/history-retention.ts +16 -0
  1172. package/src/sandbox/internal/index.ts +65 -0
  1173. package/src/sandbox/internal/observation-history.ts +5 -0
  1174. package/src/sandbox/internal/observation-payload.ts +18 -0
  1175. package/src/sandbox/internal/provenance.ts +5 -0
  1176. package/src/sandbox/internal/root.ts +3 -2
  1177. package/src/sandbox/internal/rules-evidence-retention.ts +28 -0
  1178. package/src/sandbox/internal/sandbox-impl.ts +91 -45
  1179. package/src/sandbox/internal/sdk-activity.ts +291 -0
  1180. package/src/sandbox/internal/sdk-coverage.ts +28 -0
  1181. package/src/sandbox/internal/sdk-observation.ts +62 -0
  1182. package/src/sandbox/internal/sdk-rates.ts +240 -0
  1183. package/src/sandbox/internal/sdk-write-activity.ts +14 -0
  1184. package/src/sandbox/internal/state-schemas.ts +47 -0
  1185. package/src/sandbox/internal/state-values.ts +20 -0
  1186. package/src/sandbox/internal/storage-activity.ts +43 -0
  1187. package/src/sandbox/internal/usage-evidence.ts +77 -0
  1188. package/src/sandbox/operation-record.ts +107 -4
  1189. package/src/sandbox/persistence/changed-buckets.ts +61 -0
  1190. package/src/sandbox/persistence/chunk-format.ts +39 -27
  1191. package/src/sandbox/persistence/controller.ts +85 -33
  1192. package/src/sandbox/persistence/import-bundle.ts +64 -0
  1193. package/src/sandbox/persistence/serialize.ts +16 -10
  1194. package/src/sandbox/persistence/types.ts +4 -0
  1195. package/src/sandbox/persistence/validate-services.ts +70 -0
  1196. package/src/sandbox/remote.ts +7 -0
  1197. package/src/sandbox/replay/index.ts +15 -8
  1198. package/src/sandbox/types/errors.ts +3 -1
  1199. package/src/sandbox/types/events.ts +118 -75
  1200. package/src/sandbox/types/index.ts +12 -0
  1201. package/src/sandbox/types/operation.ts +14 -4
  1202. package/src/sandbox/types/persistence.ts +2 -2
  1203. package/src/sandbox/types/query-proof.ts +26 -0
  1204. package/src/sandbox/types/request-observation.ts +25 -0
  1205. package/src/sandbox/types/rules-evidence.ts +37 -0
  1206. package/src/sandbox/types/service-event-record.ts +34 -0
  1207. package/src/sandbox/types/service-event-records.ts +42 -0
  1208. package/src/sandbox/types/service-mutation-event.ts +93 -0
  1209. package/src/storage/activity-coverage.ts +8 -0
  1210. package/src/storage/base64.ts +35 -0
  1211. package/src/storage/download.ts +19 -6
  1212. package/src/storage/enforce.ts +26 -4
  1213. package/src/storage/errors.ts +29 -14
  1214. package/src/storage/events.ts +21 -0
  1215. package/src/storage/index.ts +7 -7
  1216. package/src/storage/internal.ts +21 -0
  1217. package/src/storage/metadata.ts +68 -19
  1218. package/src/storage/observed.ts +16 -0
  1219. package/src/storage/persistence.ts +574 -66
  1220. package/src/storage/reference.ts +6 -3
  1221. package/src/storage/remote-bytes.ts +122 -0
  1222. package/src/storage/resumable.ts +16 -3
  1223. package/src/storage/rules-resolution.ts +43 -1
  1224. package/src/storage/sandbox/persistence-state.ts +71 -0
  1225. package/src/storage/sandbox/rules-bindings.ts +69 -0
  1226. package/src/storage/sandbox/rules-collection-methods.ts +161 -0
  1227. package/src/storage/sandbox/rules-evaluator.ts +65 -142
  1228. package/src/storage/sandbox/rules-firestore-lookup.ts +112 -0
  1229. package/src/storage/sandbox/rules-hashing-methods.ts +50 -0
  1230. package/src/storage/sandbox/rules-method-calls.ts +67 -0
  1231. package/src/storage/sandbox/rules-methods.ts +63 -404
  1232. package/src/storage/sandbox/rules-operators.ts +93 -0
  1233. package/src/storage/sandbox/rules-string-methods.ts +214 -0
  1234. package/src/storage/sandbox/rules-time-methods.ts +98 -0
  1235. package/src/storage/sandbox/rules-values.ts +20 -1
  1236. package/src/storage/sandbox/rules.ts +27 -14
  1237. package/src/storage/sandbox/running-service.ts +52 -0
  1238. package/src/storage/service.ts +196 -85
  1239. package/src/storage/string-format.ts +8 -0
  1240. package/src/storage/upload.ts +8 -3
  1241. package/src/storage/url.ts +106 -0
@@ -0,0 +1,167 @@
1
+ /**
2
+ * The sandbox's one source of time.
3
+ *
4
+ * Every value the sandbox stamps that claims to be "when this happened" reads
5
+ * this clock: Firestore `serverTimestamp()` and `request.time`, Realtime
6
+ * Database `ServerValue.TIMESTAMP` and rules `now`, Storage `timeCreated` /
7
+ * `updated` and its `request.time`, auth token `iat` / `exp` / `auth_time` and
8
+ * account metadata, listener dispatch stamps, and the event, checkpoint, and
9
+ * persistence stamps that record when a sandbox operation happened. Moving the
10
+ * clock therefore moves every one of those together, which is the whole point:
11
+ * a rule that reads `request.time` and a document that carries a
12
+ * `serverTimestamp()` written in the same operation agree about what time it
13
+ * is.
14
+ *
15
+ * ## The model
16
+ *
17
+ * Three modes, one number each.
18
+ *
19
+ * - `wall` (the default): `now()` is `Date.now()`. Nothing about the sandbox's
20
+ * behaviour differs from a build with no clock at all.
21
+ * - `fixed`: {@link SandboxClock.set} names an instant and **freezes** the
22
+ * clock there. `now()` returns that instant until the clock is moved again.
23
+ * Naming an exact instant is a request for determinism, so time stops.
24
+ * - `offset`: {@link SandboxClock.advance} from `wall` shifts the clock by a
25
+ * delta and lets it **keep flowing**. Jumping forward a day is a request to
26
+ * be a day later, not a request to stop, and monotonic progress is what push
27
+ * ids, listener ordering, and elapsed-time bookkeeping rely on.
28
+ *
29
+ * `advance` is consistent with whichever mode it finds. From `wall` it opens an
30
+ * offset; from `offset` it grows that offset; from `fixed` it moves the frozen
31
+ * instant and stays frozen. {@link SandboxClock.reset} returns to `wall`.
32
+ *
33
+ * The clock is deliberately not monotonic across a `set`: a caller who pins an
34
+ * instant in the past gets an instant in the past, and the sandbox will stamp
35
+ * it. That is the caller's decision to make.
36
+ *
37
+ * Node-safe and browser-safe: it reads `Date.now()` and nothing else.
38
+ */
39
+ import { SandboxError } from './types/errors.js';
40
+ /**
41
+ * The key a sandbox carries its clock under. Registered globally
42
+ * (`Symbol.for`) rather than minted per module, because a workspace can load
43
+ * this module twice (a package specifier resolving to the built output, a
44
+ * relative path resolving to the source) and a per-module symbol would make
45
+ * {@link getClock} fail to recognize a sandbox built by the other copy.
46
+ */
47
+ export const SANDBOX_CLOCK = Symbol.for('pyric.sandbox.clock');
48
+ /**
49
+ * Resolve one sandbox's clock. The clock is the sandbox's whole notion of
50
+ * time: every `serverTimestamp()`, `request.time`, token `iat`, and event stamp
51
+ * on that sandbox reads it, so moving it here moves all of them.
52
+ *
53
+ * The clock survives `sandbox.reset()`, which swaps the Firestore environment
54
+ * but not the sandbox: a pinned instant is a property of the session, not of
55
+ * the data in it.
56
+ *
57
+ * Throws if `sandbox` was not produced by `initializeSandbox()`, the same guard
58
+ * `getInternalEnv` applies.
59
+ */
60
+ export function getClock(sandbox) {
61
+ const carried = sandbox[SANDBOX_CLOCK];
62
+ if (carried === undefined) {
63
+ throw new SandboxError('invalid-argument', 'Sandbox handle was not produced by initializeSandbox(); custom Sandbox implementations are not supported.');
64
+ }
65
+ return carried;
66
+ }
67
+ /** The state a clock that has never been moved reports. */
68
+ export function wallClockState() {
69
+ return { mode: 'wall', fixedAt: 0, offsetMs: 0 };
70
+ }
71
+ function assertFiniteMilliseconds(value, label) {
72
+ if (!Number.isFinite(value)) {
73
+ throw new RangeError(`${label} must be a finite number of milliseconds; received ${String(value)}.`);
74
+ }
75
+ }
76
+ /**
77
+ * One sandbox's clock. Owned by the sandbox and shared by every service on it,
78
+ * so `set` / `advance` / `reset` move all of them at once.
79
+ */
80
+ export class SandboxClock {
81
+ currentMode = 'wall';
82
+ fixedAt = 0;
83
+ offsetMs = 0;
84
+ listeners = new Set();
85
+ /**
86
+ * Watch for a move. A sandbox hosted behind a transport (the SharedWorker
87
+ * host, say) has readers in another realm that cannot call `now()`
88
+ * synchronously, so they mirror this state instead and need to be told when
89
+ * it changes. Returns the function that stops watching.
90
+ */
91
+ onChange(listener) {
92
+ this.listeners.add(listener);
93
+ return () => {
94
+ this.listeners.delete(listener);
95
+ };
96
+ }
97
+ announce() {
98
+ const state = this.capture();
99
+ for (const listener of [...this.listeners]) {
100
+ listener(state);
101
+ }
102
+ }
103
+ /** Which of the three modes the clock is in. */
104
+ get mode() {
105
+ return this.currentMode;
106
+ }
107
+ /** The sandbox's current time, in epoch milliseconds. */
108
+ now() {
109
+ if (this.currentMode === 'fixed') {
110
+ return this.fixedAt;
111
+ }
112
+ if (this.currentMode === 'offset') {
113
+ return Date.now() + this.offsetMs;
114
+ }
115
+ return Date.now();
116
+ }
117
+ /** The sandbox's current time as a `Date`. */
118
+ date() {
119
+ return new Date(this.now());
120
+ }
121
+ /**
122
+ * Pin the clock to `epochMs` and freeze it there. Every subsequent `now()`
123
+ * returns exactly `epochMs` until the clock is advanced, set again, or reset.
124
+ */
125
+ set(epochMs) {
126
+ assertFiniteMilliseconds(epochMs, 'A clock instant');
127
+ this.currentMode = 'fixed';
128
+ this.fixedAt = epochMs;
129
+ this.offsetMs = 0;
130
+ this.announce();
131
+ }
132
+ /**
133
+ * Move the clock forward (or, with a negative delta, back) by `ms`. A frozen
134
+ * clock stays frozen at the new instant; a wall or offset clock keeps
135
+ * flowing, shifted.
136
+ */
137
+ advance(ms) {
138
+ assertFiniteMilliseconds(ms, 'A clock advance');
139
+ if (this.currentMode === 'fixed') {
140
+ this.fixedAt += ms;
141
+ this.announce();
142
+ return;
143
+ }
144
+ this.currentMode = 'offset';
145
+ this.offsetMs += ms;
146
+ this.announce();
147
+ }
148
+ /** Return to the wall clock, discarding any pin or offset. */
149
+ reset() {
150
+ this.currentMode = 'wall';
151
+ this.fixedAt = 0;
152
+ this.offsetMs = 0;
153
+ this.announce();
154
+ }
155
+ /** This clock's whole state, as a value a checkpoint or branch can hold. */
156
+ capture() {
157
+ return { mode: this.currentMode, fixedAt: this.fixedAt, offsetMs: this.offsetMs };
158
+ }
159
+ /** Adopt a captured state wholesale. */
160
+ restore(state) {
161
+ this.currentMode = state.mode;
162
+ this.fixedAt = state.fixedAt;
163
+ this.offsetMs = state.offsetMs;
164
+ this.announce();
165
+ }
166
+ }
167
+ //# sourceMappingURL=clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/sandbox/clock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * The whole sandbox as one value: capture it, apply it.
3
+ *
4
+ * The branch engine forks from a full state and promotes onto one, and a
5
+ * branch that silently carried only Firestore would be worse than no branch at
6
+ * all. So this module owns the single definition of what "everything" means:
7
+ *
8
+ * Firestore documents
9
+ * the Realtime Database tree, with its priorities
10
+ * Storage objects, with their bytes and complete stored metadata
11
+ * auth accounts, with the fields the auth sandbox exports, plus provider config
12
+ * the three rule sources: Firestore, Realtime Database, and Storage
13
+ *
14
+ * {@link captureFullState} is a pure read: it reaches each service's backend
15
+ * through the same seams persistence already uses, and leaves every one of
16
+ * those reads unchanged. {@link applyFullState} is a total replace: after it
17
+ * returns, every read above answers exactly what the captured state holds, and
18
+ * state the target held that the capture did not is gone.
19
+ *
20
+ * The value is plain JSON, so a capture survives a file, a worker message, or
21
+ * a structured clone without losing a byte. Object bytes travel base64 encoded
22
+ * because JSON has no byte type.
23
+ *
24
+ * Placement: this is cross-surface runtime, not a capability, so it lives in
25
+ * central `sandbox/` alongside persistence and replay, which reach across the
26
+ * same services for the same reason.
27
+ */
28
+ import { type SeedUser } from '../auth/index.js';
29
+ import type { JsonValue } from '../database/sandbox/data-tree.js';
30
+ import { type DocValueEncoding } from '../firestore/internal/value-codec.js';
31
+ import { type StorageStateRecord } from '../storage/internal.js';
32
+ import { type SandboxClockState } from './clock.js';
33
+ import type { LocalSandbox } from './types/service.js';
34
+ /** A Realtime Database ruleset, in the `{ rules: ... }` envelope the SDK takes. */
35
+ export interface DatabaseRuleset {
36
+ rules: Record<string, unknown>;
37
+ }
38
+ /**
39
+ * One Storage object, with everything a reader of it can observe. Its bytes are
40
+ * either inline as base64, or named by SHA-256 in the backend that holds them:
41
+ * a capture by reference writes the second form, and only a backend that keeps
42
+ * content-addressed files can apply it.
43
+ */
44
+ export type StorageObjectState = StorageObjectFields & ({
45
+ /** The object's bytes, base64 encoded so the state stays JSON. */
46
+ contentBase64: string;
47
+ } | {
48
+ /** The SHA-256 of the object's bytes, which the backend holds. */
49
+ sha256: string;
50
+ /** The number of bytes. */
51
+ size: number;
52
+ });
53
+ /** Whether a Storage entry carries its bytes inline. */
54
+ export declare function holdsBytesInline(object: StorageObjectState): object is StorageObjectState & {
55
+ contentBase64: string;
56
+ };
57
+ /** How a capture records Storage bytes. */
58
+ export interface FullStateCaptureOptions {
59
+ /** `inline` (the default) carries every object's bytes; `reference` names them by hash. */
60
+ storage?: 'inline' | 'reference';
61
+ }
62
+ interface StorageObjectFields {
63
+ /** Full path within the bucket, for example `docs/hello.txt`. */
64
+ path: string;
65
+ /** Content type the object reports, absent when it carries none. */
66
+ contentType?: string;
67
+ /** The object's custom metadata. Always present, empty when it carries none. */
68
+ customMetadata: Record<string, string>;
69
+ /** Remaining persisted metadata; absent in legacy states that only kept upload fields. */
70
+ metadata?: Omit<StorageStateRecord['metadata'], 'fullPath' | 'contentType' | 'customMetadata'>;
71
+ /** The stored Blob's MIME type, which can differ from its object metadata. */
72
+ blobType?: string;
73
+ }
74
+ /** The auth account store: the users and the provider configuration over them. */
75
+ export interface AuthAccountsState {
76
+ /**
77
+ * Every account the auth sandbox exports, in the `seedUsers` shape: uid,
78
+ * email, password, and the optional displayName, customClaims, photoUrl,
79
+ * phoneNumber, emailVerified, disabled, tenantId, providerId and account
80
+ * timestamps. Anonymous accounts are included in the same export contract.
81
+ */
82
+ users: SeedUser[];
83
+ /** Which sign-in providers are enabled, by provider id. */
84
+ providers: Record<string, boolean>;
85
+ }
86
+ /** The three rule sources a sandbox evaluates against. */
87
+ export interface SandboxRuleSources {
88
+ /** Firestore Security Rules source. The empty source when none is installed. */
89
+ firestore: string;
90
+ /** Realtime Database rules, or null when the sandbox runs without them. */
91
+ database: DatabaseRuleset | null;
92
+ /** Storage Security Rules source, or null when the sandbox runs without them. */
93
+ storage: string | null;
94
+ }
95
+ /**
96
+ * The services a full state carries, in the order every reader walks them.
97
+ *
98
+ * One declaration: {@link SandboxService} is derived from it, the branch diff
99
+ * tags each divergence with one of these names, and the branch store writes one
100
+ * file per entry. A service added to {@link FullSandboxState} is added here, and
101
+ * the type, the diff, and the store follow without a second list to edit.
102
+ */
103
+ export declare const SANDBOX_SERVICES: readonly ["firestore", "database", "storage", "auth", "rules"];
104
+ /** One service a full state carries. */
105
+ export type SandboxService = (typeof SANDBOX_SERVICES)[number];
106
+ /** Everything one sandbox holds, as one plain JSON value. */
107
+ export interface FullSandboxState {
108
+ /** Firestore documents by full path. */
109
+ firestore: Record<string, Record<string, unknown>>;
110
+ /** Declared value encoding; absent in legacy states that carry plain document maps. */
111
+ firestoreEncoding?: DocValueEncoding;
112
+ /**
113
+ * The Realtime Database persistence envelope: the tree and its priorities.
114
+ * The database's rules travel in {@link SandboxRuleSources} instead, so the
115
+ * two can never disagree about which ruleset the state carries.
116
+ */
117
+ database: JsonValue;
118
+ /** Every Storage object in the default bucket, ordered by path. */
119
+ storage: StorageObjectState[];
120
+ /** The auth account store. */
121
+ auth: AuthAccountsState;
122
+ /** The three rule sources. */
123
+ rules: SandboxRuleSources;
124
+ /**
125
+ * The sandbox clock's state at capture. A checkpoint restore and a branch
126
+ * fork both carry it, so a forked branch reaches the same `request.time`
127
+ * verdict its base reached and a restored checkpoint stamps the same
128
+ * `serverTimestamp()` the sandbox was stamping when it was taken.
129
+ *
130
+ * Optional: a state written before the clock existed, or by a producer that
131
+ * does not model time, restores the sandbox to the wall clock.
132
+ */
133
+ clock?: SandboxClockState;
134
+ }
135
+ /**
136
+ * Read one sandbox's entire state.
137
+ *
138
+ * A pure read: every service is reached through its own export seam, nothing
139
+ * is written, and two captures with no intervening write are identical values.
140
+ */
141
+ export declare function captureFullState(sandbox: LocalSandbox, options?: FullStateCaptureOptions): Promise<FullSandboxState>;
142
+ /**
143
+ * Whether a captured Storage ruleset is one a target can be given.
144
+ *
145
+ * A sandbox captured while Storage ran without rules carries null. There is no
146
+ * source to install and no way to un-install one, so a null source means no
147
+ * change. Both writers read this: the total replace below, and the delta a
148
+ * branch promotion writes.
149
+ */
150
+ export declare function installsStorageRules(source: string | null): source is string;
151
+ /**
152
+ * Replace one sandbox's entire state with `state`.
153
+ *
154
+ * A total replace, not a merge: state the target holds and the capture does
155
+ * not is removed. After this returns, every read {@link captureFullState}
156
+ * covers answers exactly what `state` holds.
157
+ */
158
+ export declare function applyFullState(sandbox: LocalSandbox, state: FullSandboxState): Promise<void>;
159
+ export {};
160
+ //# sourceMappingURL=full-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-state.d.ts","sourceRoot":"","sources":["../../src/sandbox/full-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * The whole sandbox as one value: capture it, apply it.
3
+ *
4
+ * The branch engine forks from a full state and promotes onto one, and a
5
+ * branch that silently carried only Firestore would be worse than no branch at
6
+ * all. So this module owns the single definition of what "everything" means:
7
+ *
8
+ * Firestore documents
9
+ * the Realtime Database tree, with its priorities
10
+ * Storage objects, with their bytes and complete stored metadata
11
+ * auth accounts, with the fields the auth sandbox exports, plus provider config
12
+ * the three rule sources: Firestore, Realtime Database, and Storage
13
+ *
14
+ * {@link captureFullState} is a pure read: it reaches each service's backend
15
+ * through the same seams persistence already uses, and leaves every one of
16
+ * those reads unchanged. {@link applyFullState} is a total replace: after it
17
+ * returns, every read above answers exactly what the captured state holds, and
18
+ * state the target held that the capture did not is gone.
19
+ *
20
+ * The value is plain JSON, so a capture survives a file, a worker message, or
21
+ * a structured clone without losing a byte. Object bytes travel base64 encoded
22
+ * because JSON has no byte type.
23
+ *
24
+ * Placement: this is cross-surface runtime, not a capability, so it lives in
25
+ * central `sandbox/` alongside persistence and replay, which reach across the
26
+ * same services for the same reason.
27
+ */
28
+ import { getAuth, sandbox as authSandbox } from '../auth/index.js';
29
+ import { getOrCreateBackend } from '../database/sandbox/backend-for.js';
30
+ import { DOC_VALUE_ENCODING } from '../firestore/internal/value-codec.js';
31
+ import { ref, uploadBytes, } from '../storage/index.js';
32
+ import { base64ToBytes, getAdminStorageSandbox, getStorageRulesResolution, replaceStorageRules, referenceStorageState, resetStorageState, restoreStorageReferences, restoreStorageState, snapshotStorageState, } from '../storage/internal.js';
33
+ import { getInternalEnv } from './internal/sandbox-impl.js';
34
+ import { encodeStateDocument, decodeStateDocument } from './internal/state-values.js';
35
+ import { getClock } from './clock.js';
36
+ /** Whether a Storage entry carries its bytes inline. */
37
+ export function holdsBytesInline(object) {
38
+ return 'contentBase64' in object;
39
+ }
40
+ /**
41
+ * The services a full state carries, in the order every reader walks them.
42
+ *
43
+ * One declaration: {@link SandboxService} is derived from it, the branch diff
44
+ * tags each divergence with one of these names, and the branch store writes one
45
+ * file per entry. A service added to {@link FullSandboxState} is added here, and
46
+ * the type, the diff, and the store follow without a second list to edit.
47
+ */
48
+ export const SANDBOX_SERVICES = ['firestore', 'database', 'storage', 'auth', 'rules'];
49
+ /** The auth handle onto one sandbox, created on first reach the way `getAuth` does. */
50
+ function authFor(sandbox) {
51
+ return getAuth(sandbox);
52
+ }
53
+ /** The default Realtime Database backend behind one sandbox. */
54
+ function databaseBackendFor(sandbox) {
55
+ return getOrCreateBackend(sandbox);
56
+ }
57
+ /** The rules-bypass Storage handle onto one sandbox's default bucket. */
58
+ function storageFor(sandbox) {
59
+ return getAdminStorageSandbox(sandbox);
60
+ }
61
+ /**
62
+ * The database persistence envelope with its rules key removed. The envelope
63
+ * the backend exports carries the active ruleset inline; the full state names
64
+ * rules once, under `rules.database`, so a caller editing one rule source can
65
+ * never leave a second stale copy behind in the tree.
66
+ */
67
+ function databaseStateWithoutRules(backend) {
68
+ const exported = backend.exportPersistenceState();
69
+ const isObject = exported !== null && typeof exported === 'object' && !Array.isArray(exported);
70
+ if (!isObject)
71
+ return exported;
72
+ const envelope = { ...exported };
73
+ delete envelope.rules;
74
+ return envelope;
75
+ }
76
+ /** Read every Storage object out of the bucket, with its bytes or with its hash. */
77
+ async function captureStorage(storage, mode) {
78
+ const byReference = mode === 'reference';
79
+ if (byReference)
80
+ return captureStorageReferences(storage);
81
+ const objects = [];
82
+ const records = await snapshotStorageState(storage);
83
+ records.sort((left, right) => {
84
+ const sortsBefore = left.metadata.fullPath < right.metadata.fullPath;
85
+ if (sortsBefore)
86
+ return -1;
87
+ const sortsAfter = left.metadata.fullPath > right.metadata.fullPath;
88
+ return sortsAfter ? 1 : 0;
89
+ });
90
+ for (const record of records) {
91
+ const { fullPath, contentType, customMetadata, ...metadata } = record.metadata;
92
+ const object = {
93
+ path: fullPath,
94
+ contentBase64: record.dataBase64,
95
+ customMetadata: customMetadata ?? {},
96
+ metadata,
97
+ blobType: record.blobType,
98
+ };
99
+ const hasContentType = contentType !== undefined;
100
+ if (hasContentType)
101
+ object.contentType = contentType;
102
+ objects.push(object);
103
+ }
104
+ return objects;
105
+ }
106
+ /** Read every Storage object as a reference to the bytes its backend holds. */
107
+ async function captureStorageReferences(storage) {
108
+ const records = await referenceStorageState(storage);
109
+ records.sort((left, right) => (left.metadata.fullPath < right.metadata.fullPath ? -1 : left.metadata.fullPath > right.metadata.fullPath ? 1 : 0));
110
+ return records.map((record) => {
111
+ const { fullPath, contentType, customMetadata, ...metadata } = record.metadata;
112
+ const object = {
113
+ path: fullPath,
114
+ sha256: record.sha256,
115
+ size: record.size,
116
+ customMetadata: customMetadata ?? {},
117
+ metadata,
118
+ blobType: record.blobType,
119
+ };
120
+ const hasContentType = contentType !== undefined;
121
+ if (hasContentType)
122
+ object.contentType = contentType;
123
+ return object;
124
+ });
125
+ }
126
+ /**
127
+ * Read one sandbox's entire state.
128
+ *
129
+ * A pure read: every service is reached through its own export seam, nothing
130
+ * is written, and two captures with no intervening write are identical values.
131
+ */
132
+ export async function captureFullState(sandbox, options = {}) {
133
+ const env = getInternalEnv(sandbox);
134
+ const database = databaseBackendFor(sandbox);
135
+ const auth = authFor(sandbox);
136
+ const storage = storageFor(sandbox);
137
+ const rules = {
138
+ firestore: env.getRules(),
139
+ database: database.getActiveRules(),
140
+ storage: getStorageRulesResolution(storage)?.source ?? null,
141
+ };
142
+ return {
143
+ firestore: Object.fromEntries(Object.entries(env.snapshot()).map(([path, data]) => [path, encodeStateDocument(data)])),
144
+ firestoreEncoding: DOC_VALUE_ENCODING,
145
+ database: databaseStateWithoutRules(database),
146
+ storage: await captureStorage(storage, options.storage ?? 'inline'),
147
+ auth: {
148
+ users: authSandbox.exportUsers(auth),
149
+ providers: authSandbox.exportProviderConfig(auth),
150
+ },
151
+ rules: structuredClone(rules),
152
+ clock: getClock(sandbox).capture(),
153
+ };
154
+ }
155
+ /**
156
+ * Adopt the captured clock, or return the sandbox to the wall clock when the
157
+ * state carries none. A total replace, like every other service here: applying
158
+ * a state never leaves the target on a clock the state did not name.
159
+ */
160
+ function applyClock(sandbox, captured) {
161
+ const clock = getClock(sandbox);
162
+ if (captured === undefined) {
163
+ clock.reset();
164
+ return;
165
+ }
166
+ clock.restore(captured);
167
+ }
168
+ /** Replace the target's Firestore documents with exactly the ones the state holds. */
169
+ function applyFirestoreDocuments(sandbox, documents, encoding) {
170
+ const env = getInternalEnv(sandbox);
171
+ for (const path of Object.keys(env.snapshot())) {
172
+ const isRetained = path in documents;
173
+ if (isRetained)
174
+ continue;
175
+ sandbox.admin.deleteDocument(path);
176
+ }
177
+ for (const [path, data] of Object.entries(documents)) {
178
+ sandbox.admin.setDocument(path, decodeStateDocument(data, encoding));
179
+ }
180
+ }
181
+ /** Replace the target's Realtime Database tree and install the state's ruleset. */
182
+ function applyDatabase(sandbox, state) {
183
+ const backend = databaseBackendFor(sandbox);
184
+ backend.restoreTree(structuredClone(state.database));
185
+ backend.setRules(structuredClone(state.rules.database));
186
+ }
187
+ /** Replace the target's auth account store with exactly the accounts the state holds. */
188
+ function applyAuth(sandbox, accounts) {
189
+ const auth = authFor(sandbox);
190
+ authSandbox.clearUsers(auth);
191
+ if (accounts.users.length > 0)
192
+ authSandbox.seedUsers(auth, structuredClone(accounts.users));
193
+ authSandbox.restoreProviderConfig(auth, { ...accounts.providers });
194
+ }
195
+ /** Replace the target's bucket with exactly the objects the state holds. */
196
+ async function applyStorage(sandbox, objects) {
197
+ const storage = storageFor(sandbox);
198
+ await resetStorageState(storage);
199
+ for (const object of objects) {
200
+ const metadata = object.metadata;
201
+ const referenced = !holdsBytesInline(object);
202
+ if (referenced) {
203
+ const missingMetadata = metadata === undefined;
204
+ if (missingMetadata)
205
+ throw new Error(`Storage object '${object.path}' is a reference without its metadata.`);
206
+ await restoreStorageReferences(storage, [{
207
+ sha256: object.sha256,
208
+ size: object.size,
209
+ blobType: object.blobType ?? object.contentType ?? '',
210
+ metadata: { ...metadata, fullPath: object.path, contentType: object.contentType,
211
+ customMetadata: { ...object.customMetadata } },
212
+ }]);
213
+ continue;
214
+ }
215
+ const hasStoredMetadata = metadata !== undefined;
216
+ if (hasStoredMetadata) {
217
+ await restoreStorageState(storage, [{
218
+ dataBase64: object.contentBase64,
219
+ blobType: object.blobType ?? object.contentType ?? '',
220
+ metadata: { ...metadata, fullPath: object.path, contentType: object.contentType,
221
+ customMetadata: { ...object.customMetadata } },
222
+ }]);
223
+ continue;
224
+ }
225
+ const settable = {
226
+ customMetadata: { ...object.customMetadata },
227
+ };
228
+ const hasContentType = object.contentType !== undefined;
229
+ if (hasContentType)
230
+ settable.contentType = object.contentType;
231
+ await uploadBytes(ref(storage, object.path), base64ToBytes(object.contentBase64), settable);
232
+ }
233
+ }
234
+ /**
235
+ * Whether a captured Storage ruleset is one a target can be given.
236
+ *
237
+ * A sandbox captured while Storage ran without rules carries null. There is no
238
+ * source to install and no way to un-install one, so a null source means no
239
+ * change. Both writers read this: the total replace below, and the delta a
240
+ * branch promotion writes.
241
+ */
242
+ export function installsStorageRules(source) {
243
+ return source !== null;
244
+ }
245
+ /** Install the Storage ruleset the state carries, where it carries one. */
246
+ async function applyStorageRules(sandbox, source) {
247
+ if (!installsStorageRules(source))
248
+ return;
249
+ await replaceStorageRules(sandbox, source);
250
+ }
251
+ /**
252
+ * Replace one sandbox's entire state with `state`.
253
+ *
254
+ * A total replace, not a merge: state the target holds and the capture does
255
+ * not is removed. After this returns, every read {@link captureFullState}
256
+ * covers answers exactly what `state` holds.
257
+ */
258
+ export async function applyFullState(sandbox, state) {
259
+ applyClock(sandbox, state.clock);
260
+ applyFirestoreDocuments(sandbox, state.firestore, state.firestoreEncoding);
261
+ getInternalEnv(sandbox).deployRules(state.rules.firestore);
262
+ applyDatabase(sandbox, state);
263
+ applyAuth(sandbox, state.auth);
264
+ await applyStorage(sandbox, state.storage);
265
+ await applyStorageRules(sandbox, state.rules.storage);
266
+ }
267
+ //# sourceMappingURL=full-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-state.js","sourceRoot":"","sources":["../../src/sandbox/full-state.ts"],"names":[],"mappings":"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"}
@@ -15,17 +15,24 @@
15
15
  * the design rationale for the design rationale.
16
16
  */
17
17
  import type { LocalSandbox, SandboxConfig } from './types/service.js';
18
- export type { ActivityEventProvenance, AuthLens, AuthState, DenialContext, DenialEvent, EventActor, EventProvenance, EventService, OperationContext, ListenerLifecycleEvent, LocalSandbox, PersistableService, RequestEvent, RulesDisposition, Sandbox, SandboxConfig, SandboxContext, SandboxCommitEvent, SandboxErrorCode, SandboxEvent, SandboxListenerEvent, SandboxOperationEvent, SandboxRuntimeErrorEvent, SandboxSnapshot, ServiceMutationEvent, SessionBoundaryEvent, SnapshotDeliveryEvent, SnapshotErrorEvent, SnapshotSuppressedEvent, WriteSandboxEvent, } from './types/index.js';
19
- export { SandboxError } from './types/index.js';
18
+ export type { ActivityEventProvenance, AuthLens, AuthState, DenialContext, DenialEvent, EventActor, EventProvenance, EventService, OperationContext, ListenerLifecycleEvent, ListenerOwner, LocalSandbox, MutationEventService, PersistableService, RequestEvent, RulesDisposition, Sandbox, SandboxConfig, SandboxContext, SandboxCommitEvent, SandboxErrorCode, SandboxEvent, SandboxListenerEvent, SandboxOperationEvent, SandboxObservationGapEvent, SandboxRuntimeErrorEvent, SandboxSnapshot, ServiceEventOperation, ServiceEventRecord, ServiceEventTarget, ServiceMutationEvent, ServiceMutationEventFields, SessionBoundaryEvent, SnapshotDeliveryEvent, SnapshotErrorEvent, SnapshotSuppressedEvent, WriteSandboxEvent, } from './types/index.js';
19
+ export { SandboxError, MUTATION_EVENT_SERVICES, SERVICE_EVENT_RECORDS } from './types/index.js';
20
20
  export { SandboxContextImpl, normalizeAuthState, validateAuthState, } from './sandbox-context.js';
21
- export { isOperationEvent, operationContextFor, rulesDispositionFor, toOperationRecord, } from './operation-record.js';
22
- export type { OperationRecord } from './operation-record.js';
21
+ export { SandboxClock, wallClockState } from './clock.js';
22
+ export type { SandboxClockMode, SandboxClockState } from './clock.js';
23
+ export { getClock } from './clock.js';
24
+ export { isOperationEvent, operationContextFor, rulesDispositionFor, toListenerRecord, toOperationRecord, trafficOperationEvent, } from './operation-record.js';
25
+ export type { ListenerPhase, OperationRecord } from './operation-record.js';
26
+ export { activeListeners, activeListenerTargetStartsWith } from './active-listeners.js';
27
+ export type { ActiveListener, ActiveListenerTarget } from './active-listeners.js';
23
28
  export { REMOTE_SANDBOX, REMOTE_SANDBOX_FACTORY, isRemoteSandbox } from './remote.js';
24
29
  export type { RemoteSandbox, RemoteSandboxChannel, RemoteSandboxFactory, RemoteSandboxFactoryOptions, } from './remote.js';
25
30
  export { replay } from './replay/index.js';
26
31
  export type { Divergence, ReplayOptions, ReplayResult } from './replay/index.js';
27
- export { apply, discard, diff, fork, promote } from './branches/index.js';
28
- export type { Branch, DiffTarget } from './branches/index.js';
32
+ export { captureFullState, applyFullState, holdsBytesInline } from './full-state.js';
33
+ export type { AuthAccountsState, DatabaseRuleset, FullSandboxState, FullStateCaptureOptions, SandboxRuleSources, SandboxService, StorageObjectState, } from './full-state.js';
34
+ export { apply, discard, diff, diffFullStates, fork, promote, promoteFullState } from './branches/index.js';
35
+ export type { Branch, BranchCandidateRules, BranchDivergence, DiffTarget, TreeChange, } from './branches/index.js';
29
36
  export type { PersistenceBackend, PersistenceController, SandboxPersistenceOptions, WebStorageLike, } from './persistence/index.js';
30
37
  export { attachPersistence, createIndexedDBBackend, createMemoryBackend, recordBackendOverBlob, serializeToBuckets, deserializeFromBuckets, bundleRecords, parseBundle, PersistenceSchemaError, rehydrateDocValue, } from './persistence/index.js';
31
38
  export type { BroadcastChannelLike, TabSyncOptions } from './tab-sync/index.js';