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,81 @@
1
+ /**
2
+ * Checkpoints kept in a page's own record store, which in a browser is
3
+ * IndexedDB.
4
+ *
5
+ * One record per checkpoint under its own key, plus a registry record holding
6
+ * the ordered names. The registry exists because a
7
+ * {@link PersistenceBackend} lists the records within a key rather than the
8
+ * keys themselves, so without it there would be no way to answer "what
9
+ * checkpoints are there" at all.
10
+ *
11
+ * The keyspace is prefixed, so a checkpoint never collides with the instance
12
+ * id, the session record, or a service's own persisted state in the same
13
+ * store. Nothing here touches the filesystem, so this backend is the one a
14
+ * worker or a page uses.
15
+ */
16
+ import { assertCheckpointName, isCheckpointEnvelope, } from './types.js';
17
+ /** The key one checkpoint's record occupies, keyed by its name. */
18
+ const CHECKPOINT_PREFIX = 'pyric:checkpoint:';
19
+ /** The key holding the ordered checkpoint names, since a store lists records, not keys. */
20
+ const CHECKPOINT_REGISTRY_KEY = 'pyric:checkpoints';
21
+ /** The one record id under each key, so a key holds exactly one value. */
22
+ const RECORD_ID = 'value';
23
+ /** The names the registry record holds, empty when it holds none. */
24
+ async function registeredNames(store) {
25
+ const record = (await store.getRecord(CHECKPOINT_REGISTRY_KEY, RECORD_ID));
26
+ if (!Array.isArray(record?.value))
27
+ return [];
28
+ return record.value.filter((name) => typeof name === 'string');
29
+ }
30
+ /** Replace the registry with `names`, sorted, so every listing reads one order. */
31
+ async function writeRegistry(store, names) {
32
+ const sorted = [...new Set(names)].sort((a, b) => a.localeCompare(b));
33
+ await store.putRecords(CHECKPOINT_REGISTRY_KEY, new Map([[RECORD_ID, { value: sorted }]]));
34
+ }
35
+ /** One checkpoint read back, or null when the key holds nothing this backend wrote. */
36
+ async function readCheckpointRecord(store, name) {
37
+ const record = (await store.getRecord(CHECKPOINT_PREFIX + name, RECORD_ID));
38
+ const held = record?.value;
39
+ if (!isCheckpointEnvelope(held))
40
+ return null;
41
+ return held;
42
+ }
43
+ /**
44
+ * Keep checkpoints as records in `store`.
45
+ *
46
+ * @param store The record store the host already persists into, which in the
47
+ * served worker is the page's own IndexedDB.
48
+ */
49
+ export function recordCheckpointBackend(store) {
50
+ return {
51
+ async write(name, checkpoint) {
52
+ assertCheckpointName(name);
53
+ await store.putRecords(CHECKPOINT_PREFIX + name, new Map([[RECORD_ID, { value: checkpoint }]]));
54
+ await writeRegistry(store, [...(await registeredNames(store)), name]);
55
+ },
56
+ async read(name) {
57
+ assertCheckpointName(name);
58
+ return readCheckpointRecord(store, name);
59
+ },
60
+ async list() {
61
+ const listed = [];
62
+ for (const name of await registeredNames(store)) {
63
+ const checkpoint = await readCheckpointRecord(store, name);
64
+ if (checkpoint === null)
65
+ continue;
66
+ listed.push({ name, at: checkpoint.at, counts: checkpoint.counts });
67
+ }
68
+ return listed;
69
+ },
70
+ async remove(name) {
71
+ assertCheckpointName(name);
72
+ const names = await registeredNames(store);
73
+ if (!names.includes(name))
74
+ return false;
75
+ await store.clear(CHECKPOINT_PREFIX + name);
76
+ await writeRegistry(store, names.filter((held) => held !== name));
77
+ return true;
78
+ },
79
+ };
80
+ }
81
+ //# sourceMappingURL=record-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-backend.js","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/record-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The four operations a host offers over checkpoints, written once.
3
+ *
4
+ * Save, restore, list, delete. Each takes the backend that says where the
5
+ * checkpoints are kept, so the Node process and the page run the same code
6
+ * over a directory of files and over a record store respectively. The
7
+ * host-visible refusals live here too: restoring a name nothing answers to
8
+ * names the ones that do, because a caller who mistyped a checkpoint wants the
9
+ * list rather than an empty sandbox.
10
+ */
11
+ import type { LocalSandbox } from '../types/service.js';
12
+ import type { Checkpoint, CheckpointBackend, CheckpointListing } from './types.js';
13
+ /** What a save reports: the checkpoint written, and whether it replaced one. */
14
+ export interface SavedCheckpoint {
15
+ name: string;
16
+ overwrote: boolean;
17
+ checkpoint: Checkpoint;
18
+ }
19
+ /** Capture the sandbox and keep it under `name`, replacing whatever that name held. */
20
+ export declare function saveCheckpoint(backend: CheckpointBackend, name: string, sandbox: LocalSandbox): Promise<SavedCheckpoint>;
21
+ /** The checkpoint kept under `name`, or null when the backend holds none. */
22
+ export declare function readCheckpoint(backend: CheckpointBackend, name: string): Promise<Checkpoint | null>;
23
+ /** Every checkpoint the backend holds, ordered by name. */
24
+ export declare function listCheckpoints(backend: CheckpointBackend): Promise<CheckpointListing[]>;
25
+ /** The names the backend holds, ordered, for a refusal that has to name them. */
26
+ export declare function checkpointNames(backend: CheckpointBackend): Promise<string[]>;
27
+ /**
28
+ * Put the sandbox back to the checkpoint kept under `name`, and report which
29
+ * one was restored. Resolves null when the backend holds no such checkpoint,
30
+ * and the sandbox is left exactly as it was.
31
+ */
32
+ export declare function restoreNamedCheckpoint(backend: CheckpointBackend, name: string, sandbox: LocalSandbox): Promise<Checkpoint | null>;
33
+ /** Remove one checkpoint. Reports whether there was one to remove. */
34
+ export declare function removeCheckpoint(backend: CheckpointBackend, name: string): Promise<boolean>;
35
+ //# sourceMappingURL=saved-states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-states.d.ts","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/saved-states.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,uFAAuF;AACvF,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,eAAe,CAAC,CAK1B;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAE5B;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAExF;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEnF;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAK5B;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3F"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The four operations a host offers over checkpoints, written once.
3
+ *
4
+ * Save, restore, list, delete. Each takes the backend that says where the
5
+ * checkpoints are kept, so the Node process and the page run the same code
6
+ * over a directory of files and over a record store respectively. The
7
+ * host-visible refusals live here too: restoring a name nothing answers to
8
+ * names the ones that do, because a caller who mistyped a checkpoint wants the
9
+ * list rather than an empty sandbox.
10
+ */
11
+ import { captureCheckpoint, restoreCheckpoint } from './capture.js';
12
+ /** Capture the sandbox and keep it under `name`, replacing whatever that name held. */
13
+ export async function saveCheckpoint(backend, name, sandbox) {
14
+ const overwrote = (await backend.read(name)) !== null;
15
+ const checkpoint = await captureCheckpoint(sandbox, { storage: backend.storage ?? 'inline' });
16
+ await backend.write(name, checkpoint);
17
+ return { name, overwrote, checkpoint };
18
+ }
19
+ /** The checkpoint kept under `name`, or null when the backend holds none. */
20
+ export function readCheckpoint(backend, name) {
21
+ return backend.read(name);
22
+ }
23
+ /** Every checkpoint the backend holds, ordered by name. */
24
+ export function listCheckpoints(backend) {
25
+ return backend.list();
26
+ }
27
+ /** The names the backend holds, ordered, for a refusal that has to name them. */
28
+ export async function checkpointNames(backend) {
29
+ return (await backend.list()).map((entry) => entry.name);
30
+ }
31
+ /**
32
+ * Put the sandbox back to the checkpoint kept under `name`, and report which
33
+ * one was restored. Resolves null when the backend holds no such checkpoint,
34
+ * and the sandbox is left exactly as it was.
35
+ */
36
+ export async function restoreNamedCheckpoint(backend, name, sandbox) {
37
+ const checkpoint = await backend.read(name);
38
+ if (checkpoint === null)
39
+ return null;
40
+ await restoreCheckpoint(sandbox, checkpoint);
41
+ return checkpoint;
42
+ }
43
+ /** Remove one checkpoint. Reports whether there was one to remove. */
44
+ export function removeCheckpoint(backend, name) {
45
+ return backend.remove(name);
46
+ }
47
+ //# sourceMappingURL=saved-states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-states.js","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/saved-states.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUpE,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA0B,EAC1B,IAAY,EACZ,OAAqB;IAErB,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC9F,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAC5B,OAA0B,EAC1B,IAAY;IAEZ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA0B;IAC9D,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA0B,EAC1B,IAAY,EACZ,OAAqB;IAErB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,OAA0B,EAAE,IAAY;IACvE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * What a checkpoint is, and what a place to keep one has to do.
3
+ *
4
+ * A checkpoint is a named {@link FullSandboxState} with the counts a listing
5
+ * reports beside it. The state is the whole sandbox, so restoring a checkpoint
6
+ * puts every service back to the instant it was taken: Firestore documents,
7
+ * the Realtime Database tree, Storage objects with their bytes and metadata,
8
+ * auth accounts, and the three rule sources.
9
+ *
10
+ * {@link CheckpointBackend} is the seam between the checkpoint and where it is
11
+ * kept. The Node process keeps checkpoints as files under the project
12
+ * directory; a page keeps them as records in its own IndexedDB. Both answer
13
+ * the same four questions, so the capture, restore, listing, and naming rules
14
+ * are written once and neither host reimplements them.
15
+ */
16
+ import type { FullSandboxState } from '../full-state.js';
17
+ /** The tag every checkpoint carries, so an unrelated record is not read as one. */
18
+ export declare const CHECKPOINT_FORMAT = "pyric-checkpoint-v1";
19
+ /**
20
+ * The names a checkpoint may take. One filename segment and one record id, so
21
+ * a name can never reach outside the place its backend keeps checkpoints.
22
+ */
23
+ export declare const CHECKPOINT_NAME_PATTERN: RegExp;
24
+ /** A checkpoint name a backend refuses. Thrown rather than returned: it is a caller mistake. */
25
+ export declare class CheckpointNameError extends Error {
26
+ constructor(name: string);
27
+ }
28
+ /** How much each service held when the checkpoint was taken. */
29
+ export interface CheckpointCounts {
30
+ /** Firestore documents. */
31
+ firestore: number;
32
+ /** Top-level keys of the Realtime Database tree. */
33
+ database: number;
34
+ /** Storage objects. */
35
+ storage: number;
36
+ /** Auth accounts. */
37
+ auth: number;
38
+ }
39
+ /** One checkpoint: the whole sandbox at an instant, with the counts over it. */
40
+ export interface Checkpoint {
41
+ format: typeof CHECKPOINT_FORMAT;
42
+ /** When the checkpoint was taken, in milliseconds since the epoch. */
43
+ at: number;
44
+ /** How much each service held. Read by a listing so it needs no state. */
45
+ counts: CheckpointCounts;
46
+ /** The whole sandbox, as one plain JSON value. */
47
+ state: FullSandboxState;
48
+ }
49
+ /** One entry of a checkpoint listing: the name plus what a caller reads without loading state. */
50
+ export interface CheckpointListing {
51
+ name: string;
52
+ at: number;
53
+ counts: CheckpointCounts;
54
+ }
55
+ /**
56
+ * Where checkpoints are kept.
57
+ *
58
+ * A backend stores and returns whole {@link Checkpoint} values and decides
59
+ * nothing about them. It rejects a name that does not match
60
+ * {@link CHECKPOINT_NAME_PATTERN} by throwing {@link CheckpointNameError},
61
+ * because a name that could reach outside its keeping place is a caller
62
+ * mistake rather than a missing checkpoint.
63
+ */
64
+ export interface CheckpointBackend {
65
+ /**
66
+ * How checkpoints kept here record Storage bytes. `reference` names each
67
+ * object by hash and suits a backend that keeps those bytes itself, so a
68
+ * checkpoint copies none of them. Absent means inline.
69
+ */
70
+ readonly storage?: 'inline' | 'reference';
71
+ /** Write one checkpoint under `name`, replacing whatever that name held. */
72
+ write(name: string, checkpoint: Checkpoint): Promise<void>;
73
+ /** The checkpoint stored under `name`, or null when the backend holds none. */
74
+ read(name: string): Promise<Checkpoint | null>;
75
+ /** Every checkpoint the backend holds, ordered by name. */
76
+ list(): Promise<CheckpointListing[]>;
77
+ /** Remove one checkpoint. Reports whether there was one to remove. */
78
+ remove(name: string): Promise<boolean>;
79
+ }
80
+ /** Recognize the envelope; restore validates each service before resetting state. */
81
+ export declare function isCheckpointEnvelope(value: unknown): value is Checkpoint;
82
+ /** Reject a name that is not one segment of a backend's keyspace. */
83
+ export declare function assertCheckpointName(name: string): void;
84
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAA0B,CAAC;AAE/D,gGAAgG;AAChG,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM;CAMzB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,iBAAiB,CAAC;IACjC,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,MAAM,EAAE,gBAAgB,CAAC;IACzB,kDAAkD;IAClD,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,kGAAkG;AAClG,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC1C,4EAA4E;IAC5E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC/C,2DAA2D;IAC3D,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrC,sEAAsE;IACtE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAcD,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAExE;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * What a checkpoint is, and what a place to keep one has to do.
3
+ *
4
+ * A checkpoint is a named {@link FullSandboxState} with the counts a listing
5
+ * reports beside it. The state is the whole sandbox, so restoring a checkpoint
6
+ * puts every service back to the instant it was taken: Firestore documents,
7
+ * the Realtime Database tree, Storage objects with their bytes and metadata,
8
+ * auth accounts, and the three rule sources.
9
+ *
10
+ * {@link CheckpointBackend} is the seam between the checkpoint and where it is
11
+ * kept. The Node process keeps checkpoints as files under the project
12
+ * directory; a page keeps them as records in its own IndexedDB. Both answer
13
+ * the same four questions, so the capture, restore, listing, and naming rules
14
+ * are written once and neither host reimplements them.
15
+ */
16
+ import { z } from 'zod';
17
+ /** The tag every checkpoint carries, so an unrelated record is not read as one. */
18
+ export const CHECKPOINT_FORMAT = 'pyric-checkpoint-v1';
19
+ /**
20
+ * The names a checkpoint may take. One filename segment and one record id, so
21
+ * a name can never reach outside the place its backend keeps checkpoints.
22
+ */
23
+ export const CHECKPOINT_NAME_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
24
+ /** A checkpoint name a backend refuses. Thrown rather than returned: it is a caller mistake. */
25
+ export class CheckpointNameError extends Error {
26
+ constructor(name) {
27
+ super(`'${name}' is not a checkpoint name. A checkpoint name is 1 to 64 characters of letters, digits, dash, or underscore.`);
28
+ this.name = 'CheckpointNameError';
29
+ }
30
+ }
31
+ const checkpointEnvelopeSchema = z.object({
32
+ format: z.literal(CHECKPOINT_FORMAT),
33
+ at: z.number().finite(),
34
+ counts: z.object({
35
+ firestore: z.number().int().nonnegative(),
36
+ database: z.number().int().nonnegative(),
37
+ storage: z.number().int().nonnegative(),
38
+ auth: z.number().int().nonnegative(),
39
+ }),
40
+ state: z.unknown().refine(value => value !== undefined, 'Required'),
41
+ });
42
+ /** Recognize the envelope; restore validates each service before resetting state. */
43
+ export function isCheckpointEnvelope(value) {
44
+ return checkpointEnvelopeSchema.safeParse(value).success;
45
+ }
46
+ /** Reject a name that is not one segment of a backend's keyspace. */
47
+ export function assertCheckpointName(name) {
48
+ if (!CHECKPOINT_NAME_PATTERN.test(name))
49
+ throw new CheckpointNameError(name);
50
+ }
51
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,gGAAgG;AAChG,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,IAAY;QACtB,KAAK,CACH,IAAI,IAAI,8GAA8G,CACvH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AA0DD,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,EAAE,UAAU,CAAC;CACpE,CAAC,CAAC;AAEH,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC3D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Validate serialized state and fallible service inputs before resetting healthy state. */
2
+ export declare function assertCheckpointState(state: unknown): void;
3
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/validation.ts"],"names":[],"mappings":"AAmEA,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAiC1D"}
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import { DOC_VALUE_ENCODING } from '../../firestore/internal/value-codec.js';
3
+ import { base64ToBytes } from '../../storage/base64.js';
4
+ import { normalizePath } from '../../storage/reference.js';
5
+ import { compileStorageRules } from '../../storage/rules-resolution.js';
6
+ import { seedUserSchema, storedMetadataSchema } from '../internal/state-schemas.js';
7
+ import { decodeStateDocument } from '../internal/state-values.js';
8
+ import { SandboxError } from '../types/errors.js';
9
+ const storageFields = {
10
+ path: z.string().min(1).refine(path => normalizePath(path) === path, 'Expected a canonical object path'),
11
+ contentType: z.string().optional(),
12
+ customMetadata: z.record(z.string()),
13
+ metadata: storedMetadataSchema.omit({ fullPath: true, contentType: true, customMetadata: true }).optional(),
14
+ blobType: z.string().optional(),
15
+ };
16
+ /** A Storage entry carries its bytes inline, or names them by SHA-256 with its metadata. */
17
+ const storageObjectSchema = z.union([
18
+ z.object({
19
+ ...storageFields,
20
+ contentBase64: z.string().regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/, 'Expected standard padded base64'),
21
+ }),
22
+ z.object({
23
+ ...storageFields,
24
+ sha256: z.string().regex(/^[0-9a-f]{64}$/, 'Expected a SHA-256 hex digest'),
25
+ size: z.number().int().nonnegative(),
26
+ metadata: storageFields.metadata.unwrap(),
27
+ }),
28
+ ]);
29
+ const databaseEnvelopeSchema = z.object({
30
+ '.pyricRtdbPersistence': z.literal(1),
31
+ data: z.unknown().refine(value => value !== undefined, 'Required'),
32
+ priorities: z.record(z.union([z.string(), z.number().finite()])),
33
+ });
34
+ /** Legacy trees have no marker; a marked record must use the supported envelope. */
35
+ function hasSupportedDatabaseEnvelope(value) {
36
+ const isObject = value !== null && typeof value === 'object' && !Array.isArray(value);
37
+ const isTreeValue = !isObject;
38
+ if (isTreeValue)
39
+ return value !== undefined;
40
+ const hasMarker = '.pyricRtdbPersistence' in value;
41
+ const isLegacyTree = !hasMarker;
42
+ if (isLegacyTree)
43
+ return true;
44
+ return databaseEnvelopeSchema.safeParse(value).success;
45
+ }
46
+ const stateFields = {
47
+ firestore: z.record(z.record(z.unknown())),
48
+ firestoreEncoding: z.literal(DOC_VALUE_ENCODING).optional(),
49
+ database: z.unknown().refine(hasSupportedDatabaseEnvelope, 'Invalid RTDB persistence envelope'),
50
+ storage: z.array(storageObjectSchema),
51
+ auth: z.object({ users: z.array(seedUserSchema), providers: z.record(z.boolean()) }),
52
+ rules: z.object({
53
+ firestore: z.string(),
54
+ database: z.object({ rules: z.record(z.unknown()) }).nullable(),
55
+ storage: z.string().nullable(),
56
+ }),
57
+ clock: z.object({ mode: z.enum(['wall', 'fixed', 'offset']),
58
+ fixedAt: z.number().finite(), offsetMs: z.number().finite() }).optional(),
59
+ };
60
+ const checkpointStateSchema = z.object(stateFields);
61
+ /** Validate serialized state and fallible service inputs before resetting healthy state. */
62
+ export function assertCheckpointState(state) {
63
+ const result = checkpointStateSchema.safeParse(state);
64
+ const isInvalidState = !result.success;
65
+ if (isInvalidState) {
66
+ const details = result.error.issues.map(issue => `${issue.path.join('.')}: ${issue.message}`).join('; ');
67
+ throw new SandboxError('invalid-argument', `Invalid checkpoint state (${details}).`);
68
+ }
69
+ try {
70
+ for (const document of Object.values(result.data.firestore)) {
71
+ decodeStateDocument(document, result.data.firestoreEncoding);
72
+ }
73
+ }
74
+ catch (error) {
75
+ throw new SandboxError('invalid-argument', `Invalid checkpoint Firestore values: ${String(error)}`);
76
+ }
77
+ for (const object of result.data.storage) {
78
+ const declaredSize = object.metadata?.size;
79
+ const isLegacyObject = declaredSize === undefined;
80
+ if (isLegacyObject)
81
+ continue;
82
+ const actualSize = 'contentBase64' in object ? base64ToBytes(object.contentBase64).byteLength : object.size;
83
+ const hasWrongSize = actualSize !== declaredSize;
84
+ if (hasWrongSize) {
85
+ throw new SandboxError('invalid-argument', `Invalid checkpoint Storage size for '${object.path}'.`);
86
+ }
87
+ }
88
+ const storageRules = result.data.rules.storage;
89
+ const hasStorageRules = storageRules !== null;
90
+ if (hasStorageRules) {
91
+ try {
92
+ compileStorageRules(storageRules);
93
+ }
94
+ catch (error) {
95
+ throw new SandboxError('invalid-argument', `Invalid checkpoint Storage rules: ${String(error)}`);
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/sandbox/checkpoints/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
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 type { Sandbox } from './types/service.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 declare const SANDBOX_CLOCK: unique symbol;
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 declare function getClock(sandbox: Sandbox): SandboxClock;
61
+ /**
62
+ * How the clock is currently deriving `now()`. See the module header for what
63
+ * each mode promises.
64
+ */
65
+ export type SandboxClockMode = 'wall' | 'fixed' | 'offset';
66
+ /**
67
+ * A clock's whole state as one plain value. Captured into a checkpoint or a
68
+ * branch's full state so a restore or a fork carries the virtual time it was
69
+ * taken under, and safe to serialize as JSON.
70
+ */
71
+ export interface SandboxClockState {
72
+ mode: SandboxClockMode;
73
+ /** The frozen instant, in epoch milliseconds. Only meaningful when `mode` is `fixed`. */
74
+ fixedAt: number;
75
+ /** Milliseconds added to the wall clock. Only meaningful when `mode` is `offset`. */
76
+ offsetMs: number;
77
+ }
78
+ /** The state a clock that has never been moved reports. */
79
+ export declare function wallClockState(): SandboxClockState;
80
+ /**
81
+ * One sandbox's clock. Owned by the sandbox and shared by every service on it,
82
+ * so `set` / `advance` / `reset` move all of them at once.
83
+ */
84
+ export declare class SandboxClock {
85
+ private currentMode;
86
+ private fixedAt;
87
+ private offsetMs;
88
+ private readonly listeners;
89
+ /**
90
+ * Watch for a move. A sandbox hosted behind a transport (the SharedWorker
91
+ * host, say) has readers in another realm that cannot call `now()`
92
+ * synchronously, so they mirror this state instead and need to be told when
93
+ * it changes. Returns the function that stops watching.
94
+ */
95
+ onChange(listener: (state: SandboxClockState) => void): () => void;
96
+ private announce;
97
+ /** Which of the three modes the clock is in. */
98
+ get mode(): SandboxClockMode;
99
+ /** The sandbox's current time, in epoch milliseconds. */
100
+ now(): number;
101
+ /** The sandbox's current time as a `Date`. */
102
+ date(): Date;
103
+ /**
104
+ * Pin the clock to `epochMs` and freeze it there. Every subsequent `now()`
105
+ * returns exactly `epochMs` until the clock is advanced, set again, or reset.
106
+ */
107
+ set(epochMs: number): void;
108
+ /**
109
+ * Move the clock forward (or, with a negative delta, back) by `ms`. A frozen
110
+ * clock stays frozen at the new instant; a wall or offset clock keeps
111
+ * flowing, shifted.
112
+ */
113
+ advance(ms: number): void;
114
+ /** Return to the wall clock, discarding any pin or offset. */
115
+ reset(): void;
116
+ /** This clock's whole state, as a value a checkpoint or branch can hold. */
117
+ capture(): SandboxClockState;
118
+ /** Adopt a captured state wholesale. */
119
+ restore(state: SandboxClockState): void;
120
+ }
121
+ //# sourceMappingURL=clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/sandbox/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,eAAoC,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CASvD;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,CAAC;IACvB,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,IAAI,iBAAiB,CAElD;AAQD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAE3E;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAOlE,OAAO,CAAC,QAAQ;IAOhB,gDAAgD;IAChD,IAAI,IAAI,IAAI,gBAAgB,CAE3B;IAED,yDAAyD;IACzD,GAAG,IAAI,MAAM;IAUb,8CAA8C;IAC9C,IAAI,IAAI,IAAI;IAIZ;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYzB,8DAA8D;IAC9D,KAAK,IAAI,IAAI;IAOb,4EAA4E;IAC5E,OAAO,IAAI,iBAAiB;IAI5B,wCAAwC;IACxC,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;CAMxC"}