@pyric/cli 0.1.0-alpha.30.2 → 0.1.0-alpha.31

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 (1327) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +107 -40
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +107 -40
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/assurance/capabilities.d.ts.map +1 -1
  6. package/dist/assurance/capabilities.js +12 -14
  7. package/dist/assurance/capabilities.js.map +1 -1
  8. package/dist/bounded-request.d.ts +27 -5
  9. package/dist/bounded-request.d.ts.map +1 -1
  10. package/dist/bounded-request.js +48 -4
  11. package/dist/bounded-request.js.map +1 -1
  12. package/dist/bridge/client/bridge-url.d.ts +5 -1
  13. package/dist/bridge/client/bridge-url.d.ts.map +1 -1
  14. package/dist/bridge/client/bridge-url.js +5 -1
  15. package/dist/bridge/client/bridge-url.js.map +1 -1
  16. package/dist/bridge/client/bridge.d.ts +9 -3
  17. package/dist/bridge/client/bridge.d.ts.map +1 -1
  18. package/dist/bridge/client/bridge.js +17 -3
  19. package/dist/bridge/client/bridge.js.map +1 -1
  20. package/dist/bridge/frame-output.d.ts.map +1 -1
  21. package/dist/bridge/frame-output.js +46 -0
  22. package/dist/bridge/frame-output.js.map +1 -1
  23. package/dist/bridge/protocol.d.ts +10 -0
  24. package/dist/bridge/protocol.d.ts.map +1 -1
  25. package/dist/bridge/protocol.js +10 -0
  26. package/dist/bridge/protocol.js.map +1 -1
  27. package/dist/bridge/server/in-process.d.ts +16 -7
  28. package/dist/bridge/server/in-process.d.ts.map +1 -1
  29. package/dist/bridge/server/in-process.js +51 -17
  30. package/dist/bridge/server/in-process.js.map +1 -1
  31. package/dist/bridge/server/peer.d.ts +8 -0
  32. package/dist/bridge/server/peer.d.ts.map +1 -1
  33. package/dist/bridge/server/peer.js +10 -0
  34. package/dist/bridge/server/peer.js.map +1 -1
  35. package/dist/bridge/server/standalone.d.ts +7 -2
  36. package/dist/bridge/server/standalone.d.ts.map +1 -1
  37. package/dist/bridge/server/standalone.js +27 -99
  38. package/dist/bridge/server/standalone.js.map +1 -1
  39. package/dist/bridge/surface/arguments/firestore.d.ts +6 -6
  40. package/dist/bridge/surface/arguments/sandbox.d.ts +0 -47
  41. package/dist/bridge/surface/arguments/sandbox.d.ts.map +1 -1
  42. package/dist/bridge/surface/arguments/sandbox.js +2 -59
  43. package/dist/bridge/surface/arguments/sandbox.js.map +1 -1
  44. package/dist/bridge/surface/arguments/seed.d.ts +61 -0
  45. package/dist/bridge/surface/arguments/seed.d.ts.map +1 -0
  46. package/dist/bridge/surface/arguments/seed.js +67 -0
  47. package/dist/bridge/surface/arguments/seed.js.map +1 -0
  48. package/dist/bridge/surface/arguments/storage.d.ts +2 -2
  49. package/dist/bridge/surface/context.d.ts +5 -10
  50. package/dist/bridge/surface/context.d.ts.map +1 -1
  51. package/dist/bridge/surface/context.js +11 -23
  52. package/dist/bridge/surface/context.js.map +1 -1
  53. package/dist/bridge/surface/database-instance-catalog.d.ts +0 -3
  54. package/dist/bridge/surface/database-instance-catalog.d.ts.map +1 -1
  55. package/dist/bridge/surface/database-instance-catalog.js +4 -27
  56. package/dist/bridge/surface/database-instance-catalog.js.map +1 -1
  57. package/dist/bridge/surface/database-instance-project.d.ts +5 -0
  58. package/dist/bridge/surface/database-instance-project.d.ts.map +1 -0
  59. package/dist/bridge/surface/database-instance-project.js +32 -0
  60. package/dist/bridge/surface/database-instance-project.js.map +1 -0
  61. package/dist/bridge/surface/database-instance.d.ts +3 -3
  62. package/dist/bridge/surface/database-instance.d.ts.map +1 -1
  63. package/dist/bridge/surface/database-instance.js +1 -2
  64. package/dist/bridge/surface/database-instance.js.map +1 -1
  65. package/dist/bridge/surface/functions-runtime.d.ts +2 -2
  66. package/dist/bridge/surface/functions-runtime.js +5 -5
  67. package/dist/bridge/surface/functions-runtime.js.map +1 -1
  68. package/dist/bridge/surface/held-identity.d.ts +4 -4
  69. package/dist/bridge/surface/held-identity.d.ts.map +1 -1
  70. package/dist/bridge/surface/held-identity.js.map +1 -1
  71. package/dist/bridge/surface/manifest.sandbox.generated.d.ts +3 -0
  72. package/dist/bridge/surface/manifest.sandbox.generated.d.ts.map +1 -0
  73. package/dist/bridge/surface/manifest.sandbox.generated.js +135 -0
  74. package/dist/bridge/surface/manifest.sandbox.generated.js.map +1 -0
  75. package/dist/bridge/surface/method-types.d.ts +48 -7
  76. package/dist/bridge/surface/method-types.d.ts.map +1 -1
  77. package/dist/bridge/surface/method-types.js +15 -0
  78. package/dist/bridge/surface/method-types.js.map +1 -1
  79. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts +2 -1
  80. package/dist/bridge/surface/methods/ai_logic/clearScripts.d.ts.map +1 -1
  81. package/dist/bridge/surface/methods/ai_logic/clearScripts.js +2 -1
  82. package/dist/bridge/surface/methods/ai_logic/clearScripts.js.map +1 -1
  83. package/dist/bridge/surface/methods/ai_logic/script.d.ts +2 -1
  84. package/dist/bridge/surface/methods/ai_logic/script.d.ts.map +1 -1
  85. package/dist/bridge/surface/methods/ai_logic/script.js +2 -1
  86. package/dist/bridge/surface/methods/ai_logic/script.js.map +1 -1
  87. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts +2 -1
  88. package/dist/bridge/surface/methods/ai_logic/scripts.d.ts.map +1 -1
  89. package/dist/bridge/surface/methods/ai_logic/scripts.js +2 -1
  90. package/dist/bridge/surface/methods/ai_logic/scripts.js.map +1 -1
  91. package/dist/bridge/surface/methods/ai_logic/status.d.ts +2 -1
  92. package/dist/bridge/surface/methods/ai_logic/status.d.ts.map +1 -1
  93. package/dist/bridge/surface/methods/ai_logic/status.js +1 -0
  94. package/dist/bridge/surface/methods/ai_logic/status.js.map +1 -1
  95. package/dist/bridge/surface/methods/assurance/attach.d.ts +1 -0
  96. package/dist/bridge/surface/methods/assurance/attach.d.ts.map +1 -1
  97. package/dist/bridge/surface/methods/assurance/attach.js +1 -0
  98. package/dist/bridge/surface/methods/assurance/attach.js.map +1 -1
  99. package/dist/bridge/surface/methods/assurance/canIUse.d.ts +1 -0
  100. package/dist/bridge/surface/methods/assurance/canIUse.d.ts.map +1 -1
  101. package/dist/bridge/surface/methods/assurance/canIUse.js +1 -0
  102. package/dist/bridge/surface/methods/assurance/canIUse.js.map +1 -1
  103. package/dist/bridge/surface/methods/assurance/define.d.ts +1 -0
  104. package/dist/bridge/surface/methods/assurance/define.d.ts.map +1 -1
  105. package/dist/bridge/surface/methods/assurance/define.js +1 -0
  106. package/dist/bridge/surface/methods/assurance/define.js.map +1 -1
  107. package/dist/bridge/surface/methods/assurance/export.d.ts +1 -0
  108. package/dist/bridge/surface/methods/assurance/export.d.ts.map +1 -1
  109. package/dist/bridge/surface/methods/assurance/export.js +1 -0
  110. package/dist/bridge/surface/methods/assurance/export.js.map +1 -1
  111. package/dist/bridge/surface/methods/assurance/inspect.d.ts +1 -0
  112. package/dist/bridge/surface/methods/assurance/inspect.d.ts.map +1 -1
  113. package/dist/bridge/surface/methods/assurance/inspect.js +1 -0
  114. package/dist/bridge/surface/methods/assurance/inspect.js.map +1 -1
  115. package/dist/bridge/surface/methods/assurance/map.d.ts +1 -0
  116. package/dist/bridge/surface/methods/assurance/map.d.ts.map +1 -1
  117. package/dist/bridge/surface/methods/assurance/map.js +1 -0
  118. package/dist/bridge/surface/methods/assurance/map.js.map +1 -1
  119. package/dist/bridge/surface/methods/assurance/minimize.d.ts +1 -0
  120. package/dist/bridge/surface/methods/assurance/minimize.d.ts.map +1 -1
  121. package/dist/bridge/surface/methods/assurance/minimize.js +1 -0
  122. package/dist/bridge/surface/methods/assurance/minimize.js.map +1 -1
  123. package/dist/bridge/surface/methods/assurance/propose.d.ts +1 -0
  124. package/dist/bridge/surface/methods/assurance/propose.d.ts.map +1 -1
  125. package/dist/bridge/surface/methods/assurance/propose.js +1 -0
  126. package/dist/bridge/surface/methods/assurance/propose.js.map +1 -1
  127. package/dist/bridge/surface/methods/assurance/replaySession.d.ts +1 -0
  128. package/dist/bridge/surface/methods/assurance/replaySession.d.ts.map +1 -1
  129. package/dist/bridge/surface/methods/assurance/replaySession.js +1 -0
  130. package/dist/bridge/surface/methods/assurance/replaySession.js.map +1 -1
  131. package/dist/bridge/surface/methods/assurance/run.d.ts +1 -0
  132. package/dist/bridge/surface/methods/assurance/run.d.ts.map +1 -1
  133. package/dist/bridge/surface/methods/assurance/run.js +1 -0
  134. package/dist/bridge/surface/methods/assurance/run.js.map +1 -1
  135. package/dist/bridge/surface/methods/assurance/start.d.ts +1 -0
  136. package/dist/bridge/surface/methods/assurance/start.d.ts.map +1 -1
  137. package/dist/bridge/surface/methods/assurance/start.js +1 -0
  138. package/dist/bridge/surface/methods/assurance/start.js.map +1 -1
  139. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts +1 -0
  140. package/dist/bridge/surface/methods/assurance/testRulesHosted.d.ts.map +1 -1
  141. package/dist/bridge/surface/methods/assurance/testRulesHosted.js +1 -0
  142. package/dist/bridge/surface/methods/assurance/testRulesHosted.js.map +1 -1
  143. package/dist/bridge/surface/methods/assurance/verify.d.ts +1 -0
  144. package/dist/bridge/surface/methods/assurance/verify.d.ts.map +1 -1
  145. package/dist/bridge/surface/methods/assurance/verify.js +1 -0
  146. package/dist/bridge/surface/methods/assurance/verify.js.map +1 -1
  147. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts +1 -0
  148. package/dist/bridge/surface/methods/assurance/verifyCases.d.ts.map +1 -1
  149. package/dist/bridge/surface/methods/assurance/verifyCases.js +1 -0
  150. package/dist/bridge/surface/methods/assurance/verifyCases.js.map +1 -1
  151. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts +2 -1
  152. package/dist/bridge/surface/methods/auth/actAsAdmin.d.ts.map +1 -1
  153. package/dist/bridge/surface/methods/auth/actAsAdmin.js +1 -0
  154. package/dist/bridge/surface/methods/auth/actAsAdmin.js.map +1 -1
  155. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts +2 -1
  156. package/dist/bridge/surface/methods/auth/actAsAnonymous.d.ts.map +1 -1
  157. package/dist/bridge/surface/methods/auth/actAsAnonymous.js +1 -0
  158. package/dist/bridge/surface/methods/auth/actAsAnonymous.js.map +1 -1
  159. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts +1 -0
  160. package/dist/bridge/surface/methods/auth/createCustomToken.d.ts.map +1 -1
  161. package/dist/bridge/surface/methods/auth/createCustomToken.js +1 -0
  162. package/dist/bridge/surface/methods/auth/createCustomToken.js.map +1 -1
  163. package/dist/bridge/surface/methods/auth/createUser.d.ts +2 -1
  164. package/dist/bridge/surface/methods/auth/createUser.d.ts.map +1 -1
  165. package/dist/bridge/surface/methods/auth/createUser.js +2 -1
  166. package/dist/bridge/surface/methods/auth/createUser.js.map +1 -1
  167. package/dist/bridge/surface/methods/auth/deleteUser.d.ts +2 -1
  168. package/dist/bridge/surface/methods/auth/deleteUser.d.ts.map +1 -1
  169. package/dist/bridge/surface/methods/auth/deleteUser.js +2 -1
  170. package/dist/bridge/surface/methods/auth/deleteUser.js.map +1 -1
  171. package/dist/bridge/surface/methods/auth/getUser.d.ts +2 -1
  172. package/dist/bridge/surface/methods/auth/getUser.d.ts.map +1 -1
  173. package/dist/bridge/surface/methods/auth/getUser.js +2 -1
  174. package/dist/bridge/surface/methods/auth/getUser.js.map +1 -1
  175. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts +2 -1
  176. package/dist/bridge/surface/methods/auth/getUserByEmail.d.ts.map +1 -1
  177. package/dist/bridge/surface/methods/auth/getUserByEmail.js +2 -1
  178. package/dist/bridge/surface/methods/auth/getUserByEmail.js.map +1 -1
  179. package/dist/bridge/surface/methods/auth/impersonate.d.ts +2 -1
  180. package/dist/bridge/surface/methods/auth/impersonate.d.ts.map +1 -1
  181. package/dist/bridge/surface/methods/auth/impersonate.js +1 -0
  182. package/dist/bridge/surface/methods/auth/impersonate.js.map +1 -1
  183. package/dist/bridge/surface/methods/auth/importUsers.d.ts +2 -1
  184. package/dist/bridge/surface/methods/auth/importUsers.d.ts.map +1 -1
  185. package/dist/bridge/surface/methods/auth/importUsers.js +3 -2
  186. package/dist/bridge/surface/methods/auth/importUsers.js.map +1 -1
  187. package/dist/bridge/surface/methods/auth/listUsers.d.ts +2 -1
  188. package/dist/bridge/surface/methods/auth/listUsers.d.ts.map +1 -1
  189. package/dist/bridge/surface/methods/auth/listUsers.js +2 -1
  190. package/dist/bridge/surface/methods/auth/listUsers.js.map +1 -1
  191. package/dist/bridge/surface/methods/auth/sessions.d.ts +2 -1
  192. package/dist/bridge/surface/methods/auth/sessions.d.ts.map +1 -1
  193. package/dist/bridge/surface/methods/auth/sessions.js +1 -0
  194. package/dist/bridge/surface/methods/auth/sessions.js.map +1 -1
  195. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts +2 -1
  196. package/dist/bridge/surface/methods/auth/setCustomUserClaims.d.ts.map +1 -1
  197. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js +2 -1
  198. package/dist/bridge/surface/methods/auth/setCustomUserClaims.js.map +1 -1
  199. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts +2 -1
  200. package/dist/bridge/surface/methods/auth/signInAnonymously.d.ts.map +1 -1
  201. package/dist/bridge/surface/methods/auth/signInAnonymously.js +1 -0
  202. package/dist/bridge/surface/methods/auth/signInAnonymously.js.map +1 -1
  203. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts +2 -1
  204. package/dist/bridge/surface/methods/auth/signInWithCredential.d.ts.map +1 -1
  205. package/dist/bridge/surface/methods/auth/signInWithCredential.js +1 -0
  206. package/dist/bridge/surface/methods/auth/signInWithCredential.js.map +1 -1
  207. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts +2 -1
  208. package/dist/bridge/surface/methods/auth/signInWithCustomToken.d.ts.map +1 -1
  209. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js +1 -0
  210. package/dist/bridge/surface/methods/auth/signInWithCustomToken.js.map +1 -1
  211. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts +2 -1
  212. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.d.ts.map +1 -1
  213. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js +1 -0
  214. package/dist/bridge/surface/methods/auth/signInWithEmailAndPassword.js.map +1 -1
  215. package/dist/bridge/surface/methods/auth/signOut.d.ts +2 -1
  216. package/dist/bridge/surface/methods/auth/signOut.d.ts.map +1 -1
  217. package/dist/bridge/surface/methods/auth/signOut.js +1 -0
  218. package/dist/bridge/surface/methods/auth/signOut.js.map +1 -1
  219. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts +2 -1
  220. package/dist/bridge/surface/methods/auth/takeAuthMail.d.ts.map +1 -1
  221. package/dist/bridge/surface/methods/auth/takeAuthMail.js +1 -0
  222. package/dist/bridge/surface/methods/auth/takeAuthMail.js.map +1 -1
  223. package/dist/bridge/surface/methods/auth/updateUser.d.ts +2 -1
  224. package/dist/bridge/surface/methods/auth/updateUser.d.ts.map +1 -1
  225. package/dist/bridge/surface/methods/auth/updateUser.js +2 -1
  226. package/dist/bridge/surface/methods/auth/updateUser.js.map +1 -1
  227. package/dist/bridge/surface/methods/auth/useAppSession.d.ts +2 -1
  228. package/dist/bridge/surface/methods/auth/useAppSession.d.ts.map +1 -1
  229. package/dist/bridge/surface/methods/auth/useAppSession.js +1 -0
  230. package/dist/bridge/surface/methods/auth/useAppSession.js.map +1 -1
  231. package/dist/bridge/surface/methods/auth/whoami.d.ts +2 -1
  232. package/dist/bridge/surface/methods/auth/whoami.d.ts.map +1 -1
  233. package/dist/bridge/surface/methods/auth/whoami.js +1 -0
  234. package/dist/bridge/surface/methods/auth/whoami.js.map +1 -1
  235. package/dist/bridge/surface/methods/database/crawl.d.ts +2 -1
  236. package/dist/bridge/surface/methods/database/crawl.d.ts.map +1 -1
  237. package/dist/bridge/surface/methods/database/crawl.js +1 -0
  238. package/dist/bridge/surface/methods/database/crawl.js.map +1 -1
  239. package/dist/bridge/surface/methods/database/get.d.ts +2 -1
  240. package/dist/bridge/surface/methods/database/get.d.ts.map +1 -1
  241. package/dist/bridge/surface/methods/database/get.js +1 -0
  242. package/dist/bridge/surface/methods/database/get.js.map +1 -1
  243. package/dist/bridge/surface/methods/database/push.d.ts +2 -1
  244. package/dist/bridge/surface/methods/database/push.d.ts.map +1 -1
  245. package/dist/bridge/surface/methods/database/push.js +1 -0
  246. package/dist/bridge/surface/methods/database/push.js.map +1 -1
  247. package/dist/bridge/surface/methods/database/query.d.ts +2 -1
  248. package/dist/bridge/surface/methods/database/query.d.ts.map +1 -1
  249. package/dist/bridge/surface/methods/database/query.js +1 -0
  250. package/dist/bridge/surface/methods/database/query.js.map +1 -1
  251. package/dist/bridge/surface/methods/database/remove.d.ts +2 -1
  252. package/dist/bridge/surface/methods/database/remove.d.ts.map +1 -1
  253. package/dist/bridge/surface/methods/database/remove.js +1 -0
  254. package/dist/bridge/surface/methods/database/remove.js.map +1 -1
  255. package/dist/bridge/surface/methods/database/set.d.ts +2 -1
  256. package/dist/bridge/surface/methods/database/set.d.ts.map +1 -1
  257. package/dist/bridge/surface/methods/database/set.js +1 -0
  258. package/dist/bridge/surface/methods/database/set.js.map +1 -1
  259. package/dist/bridge/surface/methods/database/update.d.ts +2 -1
  260. package/dist/bridge/surface/methods/database/update.d.ts.map +1 -1
  261. package/dist/bridge/surface/methods/database/update.js +1 -0
  262. package/dist/bridge/surface/methods/database/update.js.map +1 -1
  263. package/dist/bridge/surface/methods/firestore/addDoc.d.ts +2 -1
  264. package/dist/bridge/surface/methods/firestore/addDoc.d.ts.map +1 -1
  265. package/dist/bridge/surface/methods/firestore/addDoc.js +2 -1
  266. package/dist/bridge/surface/methods/firestore/addDoc.js.map +1 -1
  267. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts +2 -1
  268. package/dist/bridge/surface/methods/firestore/deleteDoc.d.ts.map +1 -1
  269. package/dist/bridge/surface/methods/firestore/deleteDoc.js +2 -1
  270. package/dist/bridge/surface/methods/firestore/deleteDoc.js.map +1 -1
  271. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts +2 -1
  272. package/dist/bridge/surface/methods/firestore/discoverPaths.d.ts.map +1 -1
  273. package/dist/bridge/surface/methods/firestore/discoverPaths.js +1 -0
  274. package/dist/bridge/surface/methods/firestore/discoverPaths.js.map +1 -1
  275. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts +7 -6
  276. package/dist/bridge/surface/methods/firestore/extractIndexes.d.ts.map +1 -1
  277. package/dist/bridge/surface/methods/firestore/extractIndexes.js +1 -0
  278. package/dist/bridge/surface/methods/firestore/extractIndexes.js.map +1 -1
  279. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts +2 -1
  280. package/dist/bridge/surface/methods/firestore/findCollectionGroup.d.ts.map +1 -1
  281. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js +1 -0
  282. package/dist/bridge/surface/methods/firestore/findCollectionGroup.js.map +1 -1
  283. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts +6 -5
  284. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.d.ts.map +1 -1
  285. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js +1 -0
  286. package/dist/bridge/surface/methods/firestore/getAggregateFromServer.js.map +1 -1
  287. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts +6 -5
  288. package/dist/bridge/surface/methods/firestore/getCountFromServer.d.ts.map +1 -1
  289. package/dist/bridge/surface/methods/firestore/getCountFromServer.js +1 -0
  290. package/dist/bridge/surface/methods/firestore/getCountFromServer.js.map +1 -1
  291. package/dist/bridge/surface/methods/firestore/getDoc.d.ts +2 -1
  292. package/dist/bridge/surface/methods/firestore/getDoc.d.ts.map +1 -1
  293. package/dist/bridge/surface/methods/firestore/getDoc.js +2 -1
  294. package/dist/bridge/surface/methods/firestore/getDoc.js.map +1 -1
  295. package/dist/bridge/surface/methods/firestore/getDocs.d.ts +6 -5
  296. package/dist/bridge/surface/methods/firestore/getDocs.d.ts.map +1 -1
  297. package/dist/bridge/surface/methods/firestore/getDocs.js +2 -1
  298. package/dist/bridge/surface/methods/firestore/getDocs.js.map +1 -1
  299. package/dist/bridge/surface/methods/firestore/setDoc.d.ts +2 -1
  300. package/dist/bridge/surface/methods/firestore/setDoc.d.ts.map +1 -1
  301. package/dist/bridge/surface/methods/firestore/setDoc.js +2 -1
  302. package/dist/bridge/surface/methods/firestore/setDoc.js.map +1 -1
  303. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts +2 -1
  304. package/dist/bridge/surface/methods/firestore/updateDoc.d.ts.map +1 -1
  305. package/dist/bridge/surface/methods/firestore/updateDoc.js +2 -1
  306. package/dist/bridge/surface/methods/firestore/updateDoc.js.map +1 -1
  307. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts +2 -1
  308. package/dist/bridge/surface/methods/firestore/writeBatch.d.ts.map +1 -1
  309. package/dist/bridge/surface/methods/firestore/writeBatch.js +2 -1
  310. package/dist/bridge/surface/methods/firestore/writeBatch.js.map +1 -1
  311. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts +1 -0
  312. package/dist/bridge/surface/methods/firestore/writeIndexes.d.ts.map +1 -1
  313. package/dist/bridge/surface/methods/firestore/writeIndexes.js +1 -0
  314. package/dist/bridge/surface/methods/firestore/writeIndexes.js.map +1 -1
  315. package/dist/bridge/surface/methods/functions/executions.d.ts +3 -2
  316. package/dist/bridge/surface/methods/functions/executions.d.ts.map +1 -1
  317. package/dist/bridge/surface/methods/functions/executions.js +2 -1
  318. package/dist/bridge/surface/methods/functions/executions.js.map +1 -1
  319. package/dist/bridge/surface/methods/functions/fire.d.ts +1 -0
  320. package/dist/bridge/surface/methods/functions/fire.d.ts.map +1 -1
  321. package/dist/bridge/surface/methods/functions/fire.js +6 -5
  322. package/dist/bridge/surface/methods/functions/fire.js.map +1 -1
  323. package/dist/bridge/surface/methods/functions/listTriggers.d.ts +2 -1
  324. package/dist/bridge/surface/methods/functions/listTriggers.d.ts.map +1 -1
  325. package/dist/bridge/surface/methods/functions/listTriggers.js +1 -0
  326. package/dist/bridge/surface/methods/functions/listTriggers.js.map +1 -1
  327. package/dist/bridge/surface/methods/messaging/deliveries.d.ts +2 -1
  328. package/dist/bridge/surface/methods/messaging/deliveries.d.ts.map +1 -1
  329. package/dist/bridge/surface/methods/messaging/deliveries.js +1 -0
  330. package/dist/bridge/surface/methods/messaging/deliveries.js.map +1 -1
  331. package/dist/bridge/surface/methods/messaging/send.d.ts +2 -1
  332. package/dist/bridge/surface/methods/messaging/send.d.ts.map +1 -1
  333. package/dist/bridge/surface/methods/messaging/send.js +2 -1
  334. package/dist/bridge/surface/methods/messaging/send.js.map +1 -1
  335. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts +2 -1
  336. package/dist/bridge/surface/methods/messaging/subscribeToTopic.d.ts.map +1 -1
  337. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js +1 -0
  338. package/dist/bridge/surface/methods/messaging/subscribeToTopic.js.map +1 -1
  339. package/dist/bridge/surface/methods/messaging/tokens.d.ts +2 -1
  340. package/dist/bridge/surface/methods/messaging/tokens.d.ts.map +1 -1
  341. package/dist/bridge/surface/methods/messaging/tokens.js +1 -0
  342. package/dist/bridge/surface/methods/messaging/tokens.js.map +1 -1
  343. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts +2 -1
  344. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.d.ts.map +1 -1
  345. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js +1 -0
  346. package/dist/bridge/surface/methods/messaging/unsubscribeFromTopic.js.map +1 -1
  347. package/dist/bridge/surface/methods/registry.d.ts.map +1 -1
  348. package/dist/bridge/surface/methods/registry.js +2 -8
  349. package/dist/bridge/surface/methods/registry.js.map +1 -1
  350. package/dist/bridge/surface/methods/rules/explainDenial.d.ts +1 -0
  351. package/dist/bridge/surface/methods/rules/explainDenial.d.ts.map +1 -1
  352. package/dist/bridge/surface/methods/rules/explainDenial.js +1 -0
  353. package/dist/bridge/surface/methods/rules/explainDenial.js.map +1 -1
  354. package/dist/bridge/surface/methods/rules/getStdlib.d.ts +1 -0
  355. package/dist/bridge/surface/methods/rules/getStdlib.d.ts.map +1 -1
  356. package/dist/bridge/surface/methods/rules/getStdlib.js +1 -0
  357. package/dist/bridge/surface/methods/rules/getStdlib.js.map +1 -1
  358. package/dist/bridge/surface/methods/rules/lint.d.ts +1 -0
  359. package/dist/bridge/surface/methods/rules/lint.d.ts.map +1 -1
  360. package/dist/bridge/surface/methods/rules/lint.js +1 -0
  361. package/dist/bridge/surface/methods/rules/lint.js.map +1 -1
  362. package/dist/bridge/surface/methods/rules/listStdlib.d.ts +1 -0
  363. package/dist/bridge/surface/methods/rules/listStdlib.d.ts.map +1 -1
  364. package/dist/bridge/surface/methods/rules/listStdlib.js +1 -0
  365. package/dist/bridge/surface/methods/rules/listStdlib.js.map +1 -1
  366. package/dist/bridge/surface/methods/rules/set.d.ts +1 -0
  367. package/dist/bridge/surface/methods/rules/set.d.ts.map +1 -1
  368. package/dist/bridge/surface/methods/rules/set.js +1 -0
  369. package/dist/bridge/surface/methods/rules/set.js.map +1 -1
  370. package/dist/bridge/surface/methods/rules/simulate.d.ts +1 -0
  371. package/dist/bridge/surface/methods/rules/simulate.d.ts.map +1 -1
  372. package/dist/bridge/surface/methods/rules/simulate.js +1 -0
  373. package/dist/bridge/surface/methods/rules/simulate.js.map +1 -1
  374. package/dist/bridge/surface/methods/sandbox/activity.d.ts +2 -1
  375. package/dist/bridge/surface/methods/sandbox/activity.d.ts.map +1 -1
  376. package/dist/bridge/surface/methods/sandbox/activity.js +2 -1
  377. package/dist/bridge/surface/methods/sandbox/activity.js.map +1 -1
  378. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts +2 -1
  379. package/dist/bridge/surface/methods/sandbox/advanceClock.d.ts.map +1 -1
  380. package/dist/bridge/surface/methods/sandbox/advanceClock.js +1 -0
  381. package/dist/bridge/surface/methods/sandbox/advanceClock.js.map +1 -1
  382. package/dist/bridge/surface/methods/sandbox/apply.d.ts +1 -0
  383. package/dist/bridge/surface/methods/sandbox/apply.d.ts.map +1 -1
  384. package/dist/bridge/surface/methods/sandbox/apply.js +1 -0
  385. package/dist/bridge/surface/methods/sandbox/apply.js.map +1 -1
  386. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts +1 -0
  387. package/dist/bridge/surface/methods/sandbox/checkpoint.d.ts.map +1 -1
  388. package/dist/bridge/surface/methods/sandbox/checkpoint.js +1 -0
  389. package/dist/bridge/surface/methods/sandbox/checkpoint.js.map +1 -1
  390. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts +1 -0
  391. package/dist/bridge/surface/methods/sandbox/deleteCapture.d.ts.map +1 -1
  392. package/dist/bridge/surface/methods/sandbox/deleteCapture.js +1 -1
  393. package/dist/bridge/surface/methods/sandbox/deleteCapture.js.map +1 -1
  394. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts +1 -0
  395. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.d.ts.map +1 -1
  396. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js +1 -0
  397. package/dist/bridge/surface/methods/sandbox/deleteCheckpoint.js.map +1 -1
  398. package/dist/bridge/surface/methods/sandbox/diff.d.ts +1 -0
  399. package/dist/bridge/surface/methods/sandbox/diff.d.ts.map +1 -1
  400. package/dist/bridge/surface/methods/sandbox/diff.js +1 -0
  401. package/dist/bridge/surface/methods/sandbox/diff.js.map +1 -1
  402. package/dist/bridge/surface/methods/sandbox/discard.d.ts +1 -0
  403. package/dist/bridge/surface/methods/sandbox/discard.d.ts.map +1 -1
  404. package/dist/bridge/surface/methods/sandbox/discard.js +1 -0
  405. package/dist/bridge/surface/methods/sandbox/discard.js.map +1 -1
  406. package/dist/bridge/surface/methods/sandbox/events.d.ts +2 -1
  407. package/dist/bridge/surface/methods/sandbox/events.d.ts.map +1 -1
  408. package/dist/bridge/surface/methods/sandbox/events.js +2 -1
  409. package/dist/bridge/surface/methods/sandbox/events.js.map +1 -1
  410. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts +1 -0
  411. package/dist/bridge/surface/methods/sandbox/exportFixture.d.ts.map +1 -1
  412. package/dist/bridge/surface/methods/sandbox/exportFixture.js +1 -0
  413. package/dist/bridge/surface/methods/sandbox/exportFixture.js.map +1 -1
  414. package/dist/bridge/surface/methods/sandbox/fork.d.ts +1 -0
  415. package/dist/bridge/surface/methods/sandbox/fork.d.ts.map +1 -1
  416. package/dist/bridge/surface/methods/sandbox/fork.js +1 -0
  417. package/dist/bridge/surface/methods/sandbox/fork.js.map +1 -1
  418. package/dist/bridge/surface/methods/sandbox/inspect.d.ts +2 -1
  419. package/dist/bridge/surface/methods/sandbox/inspect.d.ts.map +1 -1
  420. package/dist/bridge/surface/methods/sandbox/inspect.js +2 -1
  421. package/dist/bridge/surface/methods/sandbox/inspect.js.map +1 -1
  422. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts +1 -0
  423. package/dist/bridge/surface/methods/sandbox/listBranches.d.ts.map +1 -1
  424. package/dist/bridge/surface/methods/sandbox/listBranches.js +1 -0
  425. package/dist/bridge/surface/methods/sandbox/listBranches.js.map +1 -1
  426. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts +1 -0
  427. package/dist/bridge/surface/methods/sandbox/listCaptures.d.ts.map +1 -1
  428. package/dist/bridge/surface/methods/sandbox/listCaptures.js +1 -1
  429. package/dist/bridge/surface/methods/sandbox/listCaptures.js.map +1 -1
  430. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts +1 -0
  431. package/dist/bridge/surface/methods/sandbox/listCheckpoints.d.ts.map +1 -1
  432. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js +1 -0
  433. package/dist/bridge/surface/methods/sandbox/listCheckpoints.js.map +1 -1
  434. package/dist/bridge/surface/methods/sandbox/listeners.d.ts +2 -1
  435. package/dist/bridge/surface/methods/sandbox/listeners.d.ts.map +1 -1
  436. package/dist/bridge/surface/methods/sandbox/listeners.js +1 -0
  437. package/dist/bridge/surface/methods/sandbox/listeners.js.map +1 -1
  438. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts +1 -0
  439. package/dist/bridge/surface/methods/sandbox/openCapture.d.ts.map +1 -1
  440. package/dist/bridge/surface/methods/sandbox/openCapture.js +1 -1
  441. package/dist/bridge/surface/methods/sandbox/openCapture.js.map +1 -1
  442. package/dist/bridge/surface/methods/sandbox/promote.d.ts +1 -0
  443. package/dist/bridge/surface/methods/sandbox/promote.d.ts.map +1 -1
  444. package/dist/bridge/surface/methods/sandbox/promote.js +1 -0
  445. package/dist/bridge/surface/methods/sandbox/promote.js.map +1 -1
  446. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts +3 -2
  447. package/dist/bridge/surface/methods/sandbox/renameCapture.d.ts.map +1 -1
  448. package/dist/bridge/surface/methods/sandbox/renameCapture.js +1 -1
  449. package/dist/bridge/surface/methods/sandbox/renameCapture.js.map +1 -1
  450. package/dist/bridge/surface/methods/sandbox/reset.d.ts +3 -2
  451. package/dist/bridge/surface/methods/sandbox/reset.d.ts.map +1 -1
  452. package/dist/bridge/surface/methods/sandbox/reset.js +1 -0
  453. package/dist/bridge/surface/methods/sandbox/reset.js.map +1 -1
  454. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts +2 -1
  455. package/dist/bridge/surface/methods/sandbox/resetClock.d.ts.map +1 -1
  456. package/dist/bridge/surface/methods/sandbox/resetClock.js +1 -0
  457. package/dist/bridge/surface/methods/sandbox/resetClock.js.map +1 -1
  458. package/dist/bridge/surface/methods/sandbox/restore.d.ts +1 -0
  459. package/dist/bridge/surface/methods/sandbox/restore.d.ts.map +1 -1
  460. package/dist/bridge/surface/methods/sandbox/restore.js +1 -0
  461. package/dist/bridge/surface/methods/sandbox/restore.js.map +1 -1
  462. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts +1 -0
  463. package/dist/bridge/surface/methods/sandbox/saveCapture.d.ts.map +1 -1
  464. package/dist/bridge/surface/methods/sandbox/saveCapture.js +1 -1
  465. package/dist/bridge/surface/methods/sandbox/saveCapture.js.map +1 -1
  466. package/dist/bridge/surface/methods/sandbox/seed.d.ts +2 -1
  467. package/dist/bridge/surface/methods/sandbox/seed.d.ts.map +1 -1
  468. package/dist/bridge/surface/methods/sandbox/seed.js +3 -2
  469. package/dist/bridge/surface/methods/sandbox/seed.js.map +1 -1
  470. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts +1 -0
  471. package/dist/bridge/surface/methods/sandbox/seedFromFixture.d.ts.map +1 -1
  472. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js +1 -0
  473. package/dist/bridge/surface/methods/sandbox/seedFromFixture.js.map +1 -1
  474. package/dist/bridge/surface/methods/sandbox/setClock.d.ts +2 -1
  475. package/dist/bridge/surface/methods/sandbox/setClock.d.ts.map +1 -1
  476. package/dist/bridge/surface/methods/sandbox/setClock.js +1 -0
  477. package/dist/bridge/surface/methods/sandbox/setClock.js.map +1 -1
  478. package/dist/bridge/surface/methods/sandbox-registry.d.ts +6 -0
  479. package/dist/bridge/surface/methods/sandbox-registry.d.ts.map +1 -0
  480. package/dist/bridge/surface/methods/sandbox-registry.js +21 -0
  481. package/dist/bridge/surface/methods/sandbox-registry.js.map +1 -0
  482. package/dist/bridge/surface/methods/storage/deleteObject.d.ts +2 -1
  483. package/dist/bridge/surface/methods/storage/deleteObject.d.ts.map +1 -1
  484. package/dist/bridge/surface/methods/storage/deleteObject.js +1 -0
  485. package/dist/bridge/surface/methods/storage/deleteObject.js.map +1 -1
  486. package/dist/bridge/surface/methods/storage/getBytes.d.ts +2 -1
  487. package/dist/bridge/surface/methods/storage/getBytes.d.ts.map +1 -1
  488. package/dist/bridge/surface/methods/storage/getBytes.js +1 -0
  489. package/dist/bridge/surface/methods/storage/getBytes.js.map +1 -1
  490. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts +2 -1
  491. package/dist/bridge/surface/methods/storage/getDownloadURL.d.ts.map +1 -1
  492. package/dist/bridge/surface/methods/storage/getDownloadURL.js +1 -0
  493. package/dist/bridge/surface/methods/storage/getDownloadURL.js.map +1 -1
  494. package/dist/bridge/surface/methods/storage/getMetadata.d.ts +2 -1
  495. package/dist/bridge/surface/methods/storage/getMetadata.d.ts.map +1 -1
  496. package/dist/bridge/surface/methods/storage/getMetadata.js +1 -0
  497. package/dist/bridge/surface/methods/storage/getMetadata.js.map +1 -1
  498. package/dist/bridge/surface/methods/storage/listAll.d.ts +2 -1
  499. package/dist/bridge/surface/methods/storage/listAll.d.ts.map +1 -1
  500. package/dist/bridge/surface/methods/storage/listAll.js +1 -0
  501. package/dist/bridge/surface/methods/storage/listAll.js.map +1 -1
  502. package/dist/bridge/surface/methods/storage/provision.d.ts +1 -0
  503. package/dist/bridge/surface/methods/storage/provision.d.ts.map +1 -1
  504. package/dist/bridge/surface/methods/storage/provision.js +1 -0
  505. package/dist/bridge/surface/methods/storage/provision.js.map +1 -1
  506. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts +2 -1
  507. package/dist/bridge/surface/methods/storage/setCrossServiceIam.d.ts.map +1 -1
  508. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js +1 -0
  509. package/dist/bridge/surface/methods/storage/setCrossServiceIam.js.map +1 -1
  510. package/dist/bridge/surface/methods/storage/status.d.ts +1 -0
  511. package/dist/bridge/surface/methods/storage/status.d.ts.map +1 -1
  512. package/dist/bridge/surface/methods/storage/status.js +1 -0
  513. package/dist/bridge/surface/methods/storage/status.js.map +1 -1
  514. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts +6 -5
  515. package/dist/bridge/surface/methods/storage/updateMetadata.d.ts.map +1 -1
  516. package/dist/bridge/surface/methods/storage/updateMetadata.js +1 -0
  517. package/dist/bridge/surface/methods/storage/updateMetadata.js.map +1 -1
  518. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts +1 -0
  519. package/dist/bridge/surface/methods/storage/uploadBytes.d.ts.map +1 -1
  520. package/dist/bridge/surface/methods/storage/uploadBytes.js +1 -0
  521. package/dist/bridge/surface/methods/storage/uploadBytes.js.map +1 -1
  522. package/dist/bridge/surface/render/discriminator-schemas.d.ts +2 -2
  523. package/dist/bridge/surface/request-instant.d.ts +2 -2
  524. package/dist/bridge/surface/request-instant.d.ts.map +1 -1
  525. package/dist/bridge/surface/request-instant.js.map +1 -1
  526. package/dist/bridge/surface/rules-engines/database.d.ts.map +1 -1
  527. package/dist/bridge/surface/rules-engines/database.js +1 -2
  528. package/dist/bridge/surface/rules-engines/database.js.map +1 -1
  529. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts +38 -0
  530. package/dist/bridge/surface/rules-engines/storage-request-resource.d.ts.map +1 -0
  531. package/dist/bridge/surface/rules-engines/storage-request-resource.js +246 -0
  532. package/dist/bridge/surface/rules-engines/storage-request-resource.js.map +1 -0
  533. package/dist/bridge/surface/rules-engines/storage.d.ts.map +1 -1
  534. package/dist/bridge/surface/rules-engines/storage.js +44 -65
  535. package/dist/bridge/surface/rules-engines/storage.js.map +1 -1
  536. package/dist/bridge/surface/sandbox-context.d.ts +25 -0
  537. package/dist/bridge/surface/sandbox-context.d.ts.map +1 -0
  538. package/dist/bridge/surface/sandbox-context.js +29 -0
  539. package/dist/bridge/surface/sandbox-context.js.map +1 -0
  540. package/dist/bridge/surface/service-handles.d.ts +6 -6
  541. package/dist/bridge/surface/service-handles.d.ts.map +1 -1
  542. package/dist/bridge/surface/service-handles.js +7 -4
  543. package/dist/bridge/surface/service-handles.js.map +1 -1
  544. package/dist/bridge/surface/sign-in.d.ts +2 -2
  545. package/dist/bridge/surface/sign-in.d.ts.map +1 -1
  546. package/dist/bridge/surface/sign-in.js +1 -1
  547. package/dist/bridge/surface/sign-in.js.map +1 -1
  548. package/dist/bridge/surface/storage-rules.d.ts +2 -9
  549. package/dist/bridge/surface/storage-rules.d.ts.map +1 -1
  550. package/dist/bridge/surface/storage-rules.js +0 -10
  551. package/dist/bridge/surface/storage-rules.js.map +1 -1
  552. package/dist/bridge/surface/stored-identity.d.ts +3 -3
  553. package/dist/bridge/surface/stored-identity.d.ts.map +1 -1
  554. package/dist/bridge/surface/stored-identity.js.map +1 -1
  555. package/dist/bridge/surface/types.d.ts +29 -8
  556. package/dist/bridge/surface/types.d.ts.map +1 -1
  557. package/dist/cli/firebase-json.d.ts +35 -7
  558. package/dist/cli/firebase-json.d.ts.map +1 -1
  559. package/dist/cli/firebase-json.js +13 -0
  560. package/dist/cli/firebase-json.js.map +1 -1
  561. package/dist/cli/firestore-indexes.d.ts.map +1 -1
  562. package/dist/cli/firestore-indexes.js +2 -1
  563. package/dist/cli/firestore-indexes.js.map +1 -1
  564. package/dist/cli/index.d.ts +6 -0
  565. package/dist/cli/index.d.ts.map +1 -1
  566. package/dist/cli/index.js +44 -11
  567. package/dist/cli/index.js.map +1 -1
  568. package/dist/cli/public-dir-hint.d.ts +8 -0
  569. package/dist/cli/public-dir-hint.d.ts.map +1 -0
  570. package/dist/cli/public-dir-hint.js +30 -0
  571. package/dist/cli/public-dir-hint.js.map +1 -0
  572. package/dist/cli/run.d.ts +8 -2
  573. package/dist/cli/run.d.ts.map +1 -1
  574. package/dist/cli/run.js +28 -5
  575. package/dist/cli/run.js.map +1 -1
  576. package/dist/cli/sandbox-runner.d.ts.map +1 -1
  577. package/dist/cli/sandbox-runner.js +11 -2
  578. package/dist/cli/sandbox-runner.js.map +1 -1
  579. package/dist/cli/serve-diagnostics.d.ts.map +1 -1
  580. package/dist/cli/serve-diagnostics.js +11 -1
  581. package/dist/cli/serve-diagnostics.js.map +1 -1
  582. package/dist/cli/serve.d.ts.map +1 -1
  583. package/dist/cli/serve.js +25 -24
  584. package/dist/cli/serve.js.map +1 -1
  585. package/dist/cli/snapshot.d.ts.map +1 -1
  586. package/dist/cli/snapshot.js +13 -5
  587. package/dist/cli/snapshot.js.map +1 -1
  588. package/dist/cli/surface-method-runner.js +1 -1
  589. package/dist/cli/surface-method-runner.js.map +1 -1
  590. package/dist/cli/verify.d.ts.map +1 -1
  591. package/dist/cli/verify.js +10 -1
  592. package/dist/cli/verify.js.map +1 -1
  593. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  594. package/dist/conformance/.generated/can-i-use-browser.js +19 -3
  595. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  596. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  597. package/dist/conformance/.generated/can-i-use.js +1 -1
  598. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  599. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  600. package/dist/conformance/.generated/conformance-docs.js +1 -1
  601. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  602. package/dist/conformance/.generated/served-availability.d.ts.map +1 -1
  603. package/dist/conformance/.generated/served-availability.js +1 -1
  604. package/dist/conformance/.generated/served-availability.js.map +1 -1
  605. package/dist/discover/merge.d.ts.map +1 -1
  606. package/dist/discover/merge.js +11 -3
  607. package/dist/discover/merge.js.map +1 -1
  608. package/dist/functions/child-protocol.d.ts +43 -0
  609. package/dist/functions/child-protocol.d.ts.map +1 -0
  610. package/dist/functions/child-protocol.js +14 -0
  611. package/dist/functions/child-protocol.js.map +1 -0
  612. package/dist/functions/child.d.ts +2 -0
  613. package/dist/functions/child.d.ts.map +1 -0
  614. package/dist/functions/child.js +92 -0
  615. package/dist/functions/child.js.map +1 -0
  616. package/dist/{functions-rtdb → functions}/development-runtime.d.ts +5 -4
  617. package/dist/functions/development-runtime.d.ts.map +1 -0
  618. package/dist/{functions-rtdb → functions}/development-runtime.js +2 -2
  619. package/dist/functions/development-runtime.js.map +1 -0
  620. package/dist/functions/endpoints.d.ts +39 -0
  621. package/dist/functions/endpoints.d.ts.map +1 -0
  622. package/dist/functions/endpoints.js +48 -0
  623. package/dist/functions/endpoints.js.map +1 -0
  624. package/dist/functions/events.d.ts.map +1 -0
  625. package/dist/functions/events.js.map +1 -0
  626. package/dist/functions/execution-log.d.ts.map +1 -0
  627. package/dist/functions/execution-log.js.map +1 -0
  628. package/dist/functions/module-loader.d.ts.map +1 -0
  629. package/dist/functions/module-loader.js.map +1 -0
  630. package/dist/functions/project.d.ts +7 -0
  631. package/dist/functions/project.d.ts.map +1 -0
  632. package/dist/{functions-rtdb → functions}/project.js +1 -1
  633. package/dist/functions/project.js.map +1 -0
  634. package/dist/functions/rtdb/child-runtime.d.ts +23 -0
  635. package/dist/functions/rtdb/child-runtime.d.ts.map +1 -0
  636. package/dist/functions/rtdb/child-runtime.js +102 -0
  637. package/dist/functions/rtdb/child-runtime.js.map +1 -0
  638. package/dist/functions/rtdb/delivery.d.ts.map +1 -0
  639. package/dist/functions/rtdb/delivery.js.map +1 -0
  640. package/dist/{functions-rtdb → functions/rtdb}/discovery.d.ts +3 -20
  641. package/dist/functions/rtdb/discovery.d.ts.map +1 -0
  642. package/dist/{functions-rtdb → functions/rtdb}/discovery.js +6 -21
  643. package/dist/functions/rtdb/discovery.js.map +1 -0
  644. package/dist/functions/rtdb/event.d.ts.map +1 -0
  645. package/dist/functions/rtdb/event.js.map +1 -0
  646. package/dist/functions/rtdb/execution.d.ts.map +1 -0
  647. package/dist/functions/rtdb/execution.js.map +1 -0
  648. package/dist/functions/rtdb/in-memory-delivery.d.ts.map +1 -0
  649. package/dist/functions/rtdb/in-memory-delivery.js.map +1 -0
  650. package/dist/functions/rtdb/projection.d.ts.map +1 -0
  651. package/dist/functions/rtdb/projection.js.map +1 -0
  652. package/dist/functions/rtdb/reference-pattern.d.ts.map +1 -0
  653. package/dist/functions/rtdb/reference-pattern.js.map +1 -0
  654. package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.d.ts +1 -1
  655. package/dist/functions/rtdb/remote-delivery.d.ts.map +1 -0
  656. package/dist/functions/rtdb/remote-delivery.js.map +1 -0
  657. package/dist/{functions-rtdb/child.d.ts → functions/spawn.d.ts} +16 -38
  658. package/dist/functions/spawn.d.ts.map +1 -0
  659. package/dist/functions/spawn.js +166 -0
  660. package/dist/functions/spawn.js.map +1 -0
  661. package/dist/functions/unsupported.d.ts +23 -0
  662. package/dist/functions/unsupported.d.ts.map +1 -0
  663. package/dist/functions/unsupported.js +25 -0
  664. package/dist/functions/unsupported.js.map +1 -0
  665. package/dist/google-endpoints.d.ts +9 -2
  666. package/dist/google-endpoints.d.ts.map +1 -1
  667. package/dist/google-endpoints.js +72 -3
  668. package/dist/google-endpoints.js.map +1 -1
  669. package/dist/next/bridge-import-loader.d.ts +9 -0
  670. package/dist/next/bridge-import-loader.d.ts.map +1 -0
  671. package/dist/next/bridge-import-loader.js +45 -0
  672. package/dist/next/bridge-import-loader.js.map +1 -0
  673. package/dist/next/bridge-imports.d.ts +26 -0
  674. package/dist/next/bridge-imports.d.ts.map +1 -0
  675. package/dist/next/bridge-imports.js +90 -0
  676. package/dist/next/bridge-imports.js.map +1 -0
  677. package/dist/next/client-aliases.d.ts +13 -5
  678. package/dist/next/client-aliases.d.ts.map +1 -1
  679. package/dist/next/client-aliases.js +14 -27
  680. package/dist/next/client-aliases.js.map +1 -1
  681. package/dist/next/guard.d.ts +3 -2
  682. package/dist/next/guard.d.ts.map +1 -1
  683. package/dist/next/guard.js +28 -10
  684. package/dist/next/guard.js.map +1 -1
  685. package/dist/next/turbopack-config.d.ts +9 -0
  686. package/dist/next/turbopack-config.d.ts.map +1 -1
  687. package/dist/next/turbopack-config.js +21 -0
  688. package/dist/next/turbopack-config.js.map +1 -1
  689. package/dist/next/webpack-config.d.ts +9 -0
  690. package/dist/next/webpack-config.d.ts.map +1 -1
  691. package/dist/next/webpack-config.js +18 -0
  692. package/dist/next/webpack-config.js.map +1 -1
  693. package/dist/next/with-pyric.d.ts +1 -0
  694. package/dist/next/with-pyric.d.ts.map +1 -1
  695. package/dist/next/with-pyric.js +25 -0
  696. package/dist/next/with-pyric.js.map +1 -1
  697. package/dist/register/activation.d.ts +16 -0
  698. package/dist/register/activation.d.ts.map +1 -0
  699. package/dist/register/activation.js +22 -0
  700. package/dist/register/activation.js.map +1 -0
  701. package/dist/register/app-bridge-admin-app-check.d.ts.map +1 -1
  702. package/dist/register/app-bridge-admin-app-check.js +3 -1
  703. package/dist/register/app-bridge-admin-app-check.js.map +1 -1
  704. package/dist/register/child-process-guard.d.ts +43 -0
  705. package/dist/register/child-process-guard.d.ts.map +1 -0
  706. package/dist/register/child-process-guard.js +165 -0
  707. package/dist/register/child-process-guard.js.map +1 -0
  708. package/dist/register/client/bootstrap.js +6 -1
  709. package/dist/register/client/bootstrap.js.map +1 -1
  710. package/dist/register/connect-prototypes.d.ts +9 -0
  711. package/dist/register/connect-prototypes.d.ts.map +1 -1
  712. package/dist/register/connect-prototypes.js +11 -0
  713. package/dist/register/connect-prototypes.js.map +1 -1
  714. package/dist/register/hooks.d.ts +7 -1
  715. package/dist/register/hooks.d.ts.map +1 -1
  716. package/dist/register/hooks.js +44 -2
  717. package/dist/register/hooks.js.map +1 -1
  718. package/dist/register/index.d.ts.map +1 -1
  719. package/dist/register/index.js +93 -23
  720. package/dist/register/index.js.map +1 -1
  721. package/dist/register/mapping.d.ts +33 -0
  722. package/dist/register/mapping.d.ts.map +1 -1
  723. package/dist/register/mapping.js +45 -3
  724. package/dist/register/mapping.js.map +1 -1
  725. package/dist/register/net-guard.d.ts +17 -0
  726. package/dist/register/net-guard.d.ts.map +1 -1
  727. package/dist/register/net-guard.js +118 -41
  728. package/dist/register/net-guard.js.map +1 -1
  729. package/dist/register/package-identity.d.ts +16 -0
  730. package/dist/register/package-identity.d.ts.map +1 -0
  731. package/dist/register/package-identity.js +97 -0
  732. package/dist/register/package-identity.js.map +1 -0
  733. package/dist/register/swap-or-stop.d.ts +27 -0
  734. package/dist/register/swap-or-stop.d.ts.map +1 -0
  735. package/dist/register/swap-or-stop.js +170 -0
  736. package/dist/register/swap-or-stop.js.map +1 -0
  737. package/dist/register/worker-guard.d.ts +20 -0
  738. package/dist/register/worker-guard.d.ts.map +1 -0
  739. package/dist/register/worker-guard.js +77 -0
  740. package/dist/register/worker-guard.js.map +1 -0
  741. package/dist/remote/resolve-host.d.ts +9 -0
  742. package/dist/remote/resolve-host.d.ts.map +1 -1
  743. package/dist/remote/resolve-host.js +13 -2
  744. package/dist/remote/resolve-host.js.map +1 -1
  745. package/dist/serve/ai-proxy.d.ts +2 -0
  746. package/dist/serve/ai-proxy.d.ts.map +1 -1
  747. package/dist/serve/ai-proxy.js +33 -8
  748. package/dist/serve/ai-proxy.js.map +1 -1
  749. package/dist/serve/app-ports.d.ts +48 -0
  750. package/dist/serve/app-ports.d.ts.map +1 -0
  751. package/dist/serve/app-ports.js +82 -0
  752. package/dist/serve/app-ports.js.map +1 -0
  753. package/dist/serve/bridge-mount.d.ts +13 -0
  754. package/dist/serve/bridge-mount.d.ts.map +1 -1
  755. package/dist/serve/bridge-mount.js +28 -8
  756. package/dist/serve/bridge-mount.js.map +1 -1
  757. package/dist/serve/bundler.d.ts +6 -0
  758. package/dist/serve/bundler.d.ts.map +1 -1
  759. package/dist/serve/bundler.js +78 -26
  760. package/dist/serve/bundler.js.map +1 -1
  761. package/dist/serve/discovery.d.ts +17 -3
  762. package/dist/serve/discovery.d.ts.map +1 -1
  763. package/dist/serve/discovery.js +199 -63
  764. package/dist/serve/discovery.js.map +1 -1
  765. package/dist/serve/entries/auth.d.ts.map +1 -1
  766. package/dist/serve/entries/auth.js +19 -1
  767. package/dist/serve/entries/auth.js.map +1 -1
  768. package/dist/serve/entries/firestore-surface.d.ts +1 -0
  769. package/dist/serve/entries/firestore-surface.d.ts.map +1 -1
  770. package/dist/serve/entries/firestore-surface.js +1 -0
  771. package/dist/serve/entries/firestore-surface.js.map +1 -1
  772. package/dist/serve/entries/init-payload.d.ts +9 -2
  773. package/dist/serve/entries/init-payload.d.ts.map +1 -1
  774. package/dist/serve/entries/init-payload.js +25 -5
  775. package/dist/serve/entries/init-payload.js.map +1 -1
  776. package/dist/serve/entries/moved-host.d.ts +18 -0
  777. package/dist/serve/entries/moved-host.d.ts.map +1 -0
  778. package/dist/serve/entries/moved-host.js +14 -0
  779. package/dist/serve/entries/moved-host.js.map +1 -0
  780. package/dist/serve/entries/runtime-origin.d.ts +6 -0
  781. package/dist/serve/entries/runtime-origin.d.ts.map +1 -1
  782. package/dist/serve/entries/runtime-origin.js.map +1 -1
  783. package/dist/serve/entries/unsupported/firestore.d.ts +0 -1
  784. package/dist/serve/entries/unsupported/firestore.d.ts.map +1 -1
  785. package/dist/serve/entries/unsupported/firestore.js +0 -1
  786. package/dist/serve/entries/unsupported/firestore.js.map +1 -1
  787. package/dist/serve/entries/worker-runtime.d.ts.map +1 -1
  788. package/dist/serve/entries/worker-runtime.js +19 -7
  789. package/dist/serve/entries/worker-runtime.js.map +1 -1
  790. package/dist/serve/firebase-module-swap.d.ts +19 -2
  791. package/dist/serve/firebase-module-swap.d.ts.map +1 -1
  792. package/dist/serve/firebase-module-swap.js +92 -16
  793. package/dist/serve/firebase-module-swap.js.map +1 -1
  794. package/dist/serve/gemini-proxy.js +2 -2
  795. package/dist/serve/gemini-proxy.js.map +1 -1
  796. package/dist/serve/hosted/runtime.d.ts.map +1 -1
  797. package/dist/serve/hosted/runtime.js +10 -3
  798. package/dist/serve/hosted/runtime.js.map +1 -1
  799. package/dist/serve/namespace.d.ts +7 -0
  800. package/dist/serve/namespace.d.ts.map +1 -1
  801. package/dist/serve/namespace.js +32 -24
  802. package/dist/serve/namespace.js.map +1 -1
  803. package/dist/serve/repro/compare.d.ts +2 -1
  804. package/dist/serve/repro/compare.d.ts.map +1 -1
  805. package/dist/serve/repro/compare.js +9 -1
  806. package/dist/serve/repro/compare.js.map +1 -1
  807. package/dist/serve/rules-fixture-check.d.ts.map +1 -1
  808. package/dist/serve/rules-fixture-check.js +22 -10
  809. package/dist/serve/rules-fixture-check.js.map +1 -1
  810. package/dist/serve/rules.d.ts +35 -9
  811. package/dist/serve/rules.d.ts.map +1 -1
  812. package/dist/serve/rules.js +72 -21
  813. package/dist/serve/rules.js.map +1 -1
  814. package/dist/serve/sandbox-session.d.ts +3 -0
  815. package/dist/serve/sandbox-session.d.ts.map +1 -1
  816. package/dist/serve/sandbox-session.js +10 -3
  817. package/dist/serve/sandbox-session.js.map +1 -1
  818. package/dist/serve/server.d.ts +10 -2
  819. package/dist/serve/server.d.ts.map +1 -1
  820. package/dist/serve/server.js +24 -4
  821. package/dist/serve/server.js.map +1 -1
  822. package/dist/serve/site-ui/_astro/{RulesCodeEditor.Cp_-FK3b.js → RulesCodeEditor.D-eQLCvu.js} +1 -1
  823. package/dist/serve/site-ui/_astro/app.BjQiEBOY.js +1 -0
  824. package/dist/serve/site-ui/_astro/app.C84Qr10v.js +151 -0
  825. package/dist/serve/site-ui/_astro/{chess-showcase.CVhCNUi_.js → chess-showcase.CsH1s4g7.js} +1 -1
  826. package/dist/serve/site-ui/_astro/{example-runtime.zC1l-Yka.js → example-runtime.CTp8mh7I.js} +1 -1
  827. package/dist/serve/site-ui/_astro/sandbox-controls.DI8MTU3L.js +1725 -0
  828. package/dist/serve/site-ui/_astro/{seed.B4vza_Bv.js → seed.BvtbLu-q.js} +1 -1
  829. package/dist/serve/site-ui/_astro/writes.D8gcuovU.js +1 -0
  830. package/dist/serve/site-ui/auth/index.html +1 -1
  831. package/dist/serve/site-ui/docs/ai-compat/index.html +48 -9
  832. package/dist/serve/site-ui/docs/ai-compat.md +53 -8
  833. package/dist/serve/site-ui/docs/app-check-compat/index.html +102 -26
  834. package/dist/serve/site-ui/docs/app-check-compat.md +107 -25
  835. package/dist/serve/site-ui/docs/auth-compat/index.html +33 -21
  836. package/dist/serve/site-ui/docs/auth-compat.md +35 -20
  837. package/dist/serve/site-ui/docs/build/ai-logic/index.html +13 -4
  838. package/dist/serve/site-ui/docs/build/ai-logic.md +14 -4
  839. package/dist/serve/site-ui/docs/conformance-scores/index.html +2 -2
  840. package/dist/serve/site-ui/docs/conformance-scores.md +2 -2
  841. package/dist/serve/site-ui/docs/database-compat/index.html +113 -49
  842. package/dist/serve/site-ui/docs/database-compat.md +118 -48
  843. package/dist/serve/site-ui/docs/firestore-compat/index.html +144 -37
  844. package/dist/serve/site-ui/docs/firestore-compat.md +149 -36
  845. package/dist/serve/site-ui/docs/firestore-swift-compat/index.html +1 -1
  846. package/dist/serve/site-ui/docs/firestore-swift-compat.md +1 -1
  847. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +12 -12
  848. package/dist/serve/site-ui/docs/functions-rtdb-compat.md +12 -12
  849. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +1 -1
  850. package/dist/serve/site-ui/docs/get-started/how-the-swap-works.md +1 -1
  851. package/dist/serve/site-ui/docs/get-started/node-host/index.html +1 -0
  852. package/dist/serve/site-ui/docs/get-started/node-host.md +2 -0
  853. package/dist/serve/site-ui/docs/index.json +45 -5
  854. package/dist/serve/site-ui/docs/messaging-compat/index.html +2 -2
  855. package/dist/serve/site-ui/docs/messaging-compat.md +2 -2
  856. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +3 -1
  857. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api.md +2 -0
  858. package/dist/serve/site-ui/docs/pyric-app-check-reference-api/index.html +11 -3
  859. package/dist/serve/site-ui/docs/pyric-app-check-reference-api.md +13 -3
  860. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api/index.html +1 -1
  861. package/dist/serve/site-ui/docs/pyric-cli-bridge-client-reference-api.md +1 -1
  862. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api/index.html +1 -0
  863. package/dist/serve/site-ui/docs/pyric-cli-next-reference-api.md +1 -0
  864. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api/index.html +1 -1
  865. package/dist/serve/site-ui/docs/pyric-cli-register-client-firestore-reference-api.md +1 -1
  866. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api/index.html +17 -9
  867. package/dist/serve/site-ui/docs/pyric-cli-serve-worker-reference-api.md +13 -11
  868. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +8 -4
  869. package/dist/serve/site-ui/docs/pyric-database-reference-api.md +9 -4
  870. package/dist/serve/site-ui/docs/pyric-rules-reference-api/index.html +15 -4
  871. package/dist/serve/site-ui/docs/pyric-rules-reference-api.md +21 -4
  872. package/dist/serve/site-ui/docs/pyric-storage-reference-api/index.html +7 -1
  873. package/dist/serve/site-ui/docs/pyric-storage-reference-api.md +1 -0
  874. package/dist/serve/site-ui/docs/reference/cli/index.html +4 -3
  875. package/dist/serve/site-ui/docs/reference/cli.md +5 -3
  876. package/dist/serve/site-ui/docs/rules-compat/index.html +150 -49
  877. package/dist/serve/site-ui/docs/rules-compat.md +149 -51
  878. package/dist/serve/site-ui/docs/storage-compat/index.html +20 -20
  879. package/dist/serve/site-ui/docs/storage-compat.md +20 -20
  880. package/dist/serve/site-ui/docs/tutorial/index.html +2 -1
  881. package/dist/serve/site-ui/docs/tutorial.md +2 -1
  882. package/dist/serve/site-ui/examples/chess/index.html +1 -1
  883. package/dist/serve/site-ui/firestore/index.html +1 -1
  884. package/dist/serve/site-ui/rtdb/index.html +1 -1
  885. package/dist/serve/site-ui/settings/index.html +1 -1
  886. package/dist/serve/site-ui/storage/index.html +1 -1
  887. package/dist/serve/site-ui/studio/index.html +1 -1
  888. package/dist/serve/site-ui/traffic/index.html +1 -1
  889. package/dist/serve/vite-ai-config.d.ts +8 -0
  890. package/dist/serve/vite-ai-config.d.ts.map +1 -1
  891. package/dist/serve/vite-ai-config.js +16 -1
  892. package/dist/serve/vite-ai-config.js.map +1 -1
  893. package/dist/serve/vite-functions-development.d.ts +3 -3
  894. package/dist/serve/vite-functions-development.d.ts.map +1 -1
  895. package/dist/serve/vite-functions-development.js +1 -1
  896. package/dist/serve/vite-functions-development.js.map +1 -1
  897. package/dist/serve/vite-generation-bridge.d.ts +2 -2
  898. package/dist/serve/vite-generation-bridge.d.ts.map +1 -1
  899. package/dist/serve/vite-generation-functions.d.ts +3 -3
  900. package/dist/serve/vite-generation-functions.d.ts.map +1 -1
  901. package/dist/serve/vite-generation-functions.js +1 -1
  902. package/dist/serve/vite-generation-functions.js.map +1 -1
  903. package/dist/serve/vite-generation-middleware.d.ts +1 -1
  904. package/dist/serve/vite-generation-middleware.d.ts.map +1 -1
  905. package/dist/serve/vite-generation-middleware.js +36 -1
  906. package/dist/serve/vite-generation-middleware.js.map +1 -1
  907. package/dist/serve/vite-module-swap.d.ts.map +1 -1
  908. package/dist/serve/vite-module-swap.js +8 -0
  909. package/dist/serve/vite-module-swap.js.map +1 -1
  910. package/dist/serve/vite-page-runtime.d.ts.map +1 -1
  911. package/dist/serve/vite-page-runtime.js +7 -1
  912. package/dist/serve/vite-page-runtime.js.map +1 -1
  913. package/dist/serve/vite-rules-source.d.ts +1 -1
  914. package/dist/serve/vite-rules-source.d.ts.map +1 -1
  915. package/dist/serve/vite-rules-source.js +2 -4
  916. package/dist/serve/vite-rules-source.js.map +1 -1
  917. package/dist/serve/vite-sandbox-generation.d.ts +2 -2
  918. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -1
  919. package/dist/serve/vite-sandbox-generation.js +2 -2
  920. package/dist/serve/vite-sandbox-generation.js.map +1 -1
  921. package/dist/serve/worker/client/auth.d.ts +29 -5
  922. package/dist/serve/worker/client/auth.d.ts.map +1 -1
  923. package/dist/serve/worker/client/auth.js +61 -11
  924. package/dist/serve/worker/client/auth.js.map +1 -1
  925. package/dist/serve/worker/client/clock.d.ts +0 -16
  926. package/dist/serve/worker/client/clock.d.ts.map +1 -1
  927. package/dist/serve/worker/client/clock.js +23 -10
  928. package/dist/serve/worker/client/clock.js.map +1 -1
  929. package/dist/serve/worker/client/firestore-reads.d.ts +12 -5
  930. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -1
  931. package/dist/serve/worker/client/firestore-reads.js +47 -16
  932. package/dist/serve/worker/client/firestore-reads.js.map +1 -1
  933. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -1
  934. package/dist/serve/worker/client/firestore-refs.js +4 -14
  935. package/dist/serve/worker/client/firestore-refs.js.map +1 -1
  936. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -1
  937. package/dist/serve/worker/client/rtdb-connection-lifecycle.js +5 -0
  938. package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -1
  939. package/dist/serve/worker/client/rtdb-snapshots.d.ts +7 -0
  940. package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -1
  941. package/dist/serve/worker/client/rtdb-snapshots.js +25 -1
  942. package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -1
  943. package/dist/serve/worker/client/rtdb-value-validation.d.ts +21 -0
  944. package/dist/serve/worker/client/rtdb-value-validation.d.ts.map +1 -0
  945. package/dist/serve/worker/client/rtdb-value-validation.js +183 -0
  946. package/dist/serve/worker/client/rtdb-value-validation.js.map +1 -0
  947. package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -1
  948. package/dist/serve/worker/client/rtdb-writes.js +7 -0
  949. package/dist/serve/worker/client/rtdb-writes.js.map +1 -1
  950. package/dist/serve/worker/client/snapshots.d.ts +2 -0
  951. package/dist/serve/worker/client/snapshots.d.ts.map +1 -1
  952. package/dist/serve/worker/client/snapshots.js +13 -7
  953. package/dist/serve/worker/client/snapshots.js.map +1 -1
  954. package/dist/serve/worker/client/websocket-connection.d.ts +6 -0
  955. package/dist/serve/worker/client/websocket-connection.d.ts.map +1 -1
  956. package/dist/serve/worker/client/websocket-connection.js +32 -3
  957. package/dist/serve/worker/client/websocket-connection.js.map +1 -1
  958. package/dist/serve/worker/host/auth-credential-sign-in.d.ts +33 -0
  959. package/dist/serve/worker/host/auth-credential-sign-in.d.ts.map +1 -0
  960. package/dist/serve/worker/host/auth-credential-sign-in.js +70 -0
  961. package/dist/serve/worker/host/auth-credential-sign-in.js.map +1 -0
  962. package/dist/serve/worker/host/auth-reauthentication.js +3 -3
  963. package/dist/serve/worker/host/auth-reauthentication.js.map +1 -1
  964. package/dist/serve/worker/host/rules.d.ts +15 -1
  965. package/dist/serve/worker/host/rules.d.ts.map +1 -1
  966. package/dist/serve/worker/host/rules.js +43 -34
  967. package/dist/serve/worker/host/rules.js.map +1 -1
  968. package/dist/serve/worker/host/staged-sign-in-results.d.ts +24 -0
  969. package/dist/serve/worker/host/staged-sign-in-results.d.ts.map +1 -0
  970. package/dist/serve/worker/host/staged-sign-in-results.js +40 -0
  971. package/dist/serve/worker/host/staged-sign-in-results.js.map +1 -0
  972. package/dist/serve/worker/host/storage.d.ts.map +1 -1
  973. package/dist/serve/worker/host/storage.js +20 -12
  974. package/dist/serve/worker/host/storage.js.map +1 -1
  975. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  976. package/dist/serve/worker/host/subscriptions.js +6 -2
  977. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  978. package/dist/serve/worker/host-auth.d.ts +3 -0
  979. package/dist/serve/worker/host-auth.d.ts.map +1 -1
  980. package/dist/serve/worker/host-auth.js +32 -13
  981. package/dist/serve/worker/host-auth.js.map +1 -1
  982. package/dist/serve/worker/inbound-validation/operation-arguments.d.ts.map +1 -1
  983. package/dist/serve/worker/inbound-validation/operation-arguments.js +27 -14
  984. package/dist/serve/worker/inbound-validation/operation-arguments.js.map +1 -1
  985. package/dist/serve/worker/operation-persistence.d.ts +1 -0
  986. package/dist/serve/worker/operation-persistence.d.ts.map +1 -1
  987. package/dist/serve/worker/operation-persistence.js +1 -0
  988. package/dist/serve/worker/operation-persistence.js.map +1 -1
  989. package/dist/serve/worker/protocol.d.ts +9 -1
  990. package/dist/serve/worker/protocol.d.ts.map +1 -1
  991. package/dist/serve/worker/protocol.js.map +1 -1
  992. package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -1
  993. package/dist/serve/worker/rtdb-value-equality.js +3 -1
  994. package/dist/serve/worker/rtdb-value-equality.js.map +1 -1
  995. package/dist/serve/worker/serve-init.d.ts.map +1 -1
  996. package/dist/serve/worker/serve-init.js +3 -9
  997. package/dist/serve/worker/serve-init.js.map +1 -1
  998. package/dist/serve/worker-build-lock.d.ts +23 -0
  999. package/dist/serve/worker-build-lock.d.ts.map +1 -0
  1000. package/dist/serve/worker-build-lock.js +179 -0
  1001. package/dist/serve/worker-build-lock.js.map +1 -0
  1002. package/dist/serve/worker-bundle-cache.d.ts +17 -0
  1003. package/dist/serve/worker-bundle-cache.d.ts.map +1 -0
  1004. package/dist/serve/worker-bundle-cache.js +89 -0
  1005. package/dist/serve/worker-bundle-cache.js.map +1 -0
  1006. package/dist/verify/cases.js +7 -3
  1007. package/dist/verify/cases.js.map +1 -1
  1008. package/dist/verify/index.d.ts.map +1 -1
  1009. package/dist/verify/index.js +11 -5
  1010. package/dist/verify/index.js.map +1 -1
  1011. package/package.json +10 -4
  1012. package/src/assurance/.generated/conformance-verdicts.ts +107 -40
  1013. package/src/assurance/capabilities.ts +11 -15
  1014. package/src/bounded-request.ts +66 -7
  1015. package/src/bridge/client/bridge-url.ts +5 -1
  1016. package/src/bridge/client/bridge.ts +19 -3
  1017. package/src/bridge/frame-output.ts +45 -0
  1018. package/src/bridge/protocol.ts +13 -0
  1019. package/src/bridge/server/in-process.ts +57 -17
  1020. package/src/bridge/server/peer.ts +11 -0
  1021. package/src/bridge/server/standalone.ts +29 -107
  1022. package/src/bridge/surface/arguments/sandbox.ts +2 -69
  1023. package/src/bridge/surface/arguments/seed.ts +78 -0
  1024. package/src/bridge/surface/context.ts +26 -37
  1025. package/src/bridge/surface/database-instance-catalog.ts +4 -32
  1026. package/src/bridge/surface/database-instance-project.ts +40 -0
  1027. package/src/bridge/surface/database-instance.ts +4 -4
  1028. package/src/bridge/surface/functions-runtime.ts +5 -5
  1029. package/src/bridge/surface/held-identity.ts +4 -4
  1030. package/src/bridge/surface/manifest.sandbox.generated.ts +137 -0
  1031. package/src/bridge/surface/method-types.ts +61 -7
  1032. package/src/bridge/surface/methods/ai_logic/clearScripts.ts +2 -1
  1033. package/src/bridge/surface/methods/ai_logic/script.ts +2 -1
  1034. package/src/bridge/surface/methods/ai_logic/scripts.ts +2 -1
  1035. package/src/bridge/surface/methods/ai_logic/status.ts +1 -0
  1036. package/src/bridge/surface/methods/assurance/attach.ts +1 -0
  1037. package/src/bridge/surface/methods/assurance/canIUse.ts +1 -0
  1038. package/src/bridge/surface/methods/assurance/define.ts +1 -0
  1039. package/src/bridge/surface/methods/assurance/export.ts +1 -0
  1040. package/src/bridge/surface/methods/assurance/inspect.ts +1 -0
  1041. package/src/bridge/surface/methods/assurance/map.ts +1 -0
  1042. package/src/bridge/surface/methods/assurance/minimize.ts +1 -0
  1043. package/src/bridge/surface/methods/assurance/propose.ts +1 -0
  1044. package/src/bridge/surface/methods/assurance/replaySession.ts +1 -0
  1045. package/src/bridge/surface/methods/assurance/run.ts +1 -0
  1046. package/src/bridge/surface/methods/assurance/start.ts +1 -0
  1047. package/src/bridge/surface/methods/assurance/testRulesHosted.ts +1 -0
  1048. package/src/bridge/surface/methods/assurance/verify.ts +1 -0
  1049. package/src/bridge/surface/methods/assurance/verifyCases.ts +1 -0
  1050. package/src/bridge/surface/methods/auth/actAsAdmin.ts +1 -0
  1051. package/src/bridge/surface/methods/auth/actAsAnonymous.ts +1 -0
  1052. package/src/bridge/surface/methods/auth/createCustomToken.ts +1 -0
  1053. package/src/bridge/surface/methods/auth/createUser.ts +2 -1
  1054. package/src/bridge/surface/methods/auth/deleteUser.ts +2 -1
  1055. package/src/bridge/surface/methods/auth/getUser.ts +2 -1
  1056. package/src/bridge/surface/methods/auth/getUserByEmail.ts +2 -1
  1057. package/src/bridge/surface/methods/auth/impersonate.ts +1 -0
  1058. package/src/bridge/surface/methods/auth/importUsers.ts +3 -2
  1059. package/src/bridge/surface/methods/auth/listUsers.ts +2 -1
  1060. package/src/bridge/surface/methods/auth/sessions.ts +1 -0
  1061. package/src/bridge/surface/methods/auth/setCustomUserClaims.ts +2 -1
  1062. package/src/bridge/surface/methods/auth/signInAnonymously.ts +1 -0
  1063. package/src/bridge/surface/methods/auth/signInWithCredential.ts +1 -0
  1064. package/src/bridge/surface/methods/auth/signInWithCustomToken.ts +1 -0
  1065. package/src/bridge/surface/methods/auth/signInWithEmailAndPassword.ts +1 -0
  1066. package/src/bridge/surface/methods/auth/signOut.ts +1 -0
  1067. package/src/bridge/surface/methods/auth/takeAuthMail.ts +1 -0
  1068. package/src/bridge/surface/methods/auth/updateUser.ts +2 -1
  1069. package/src/bridge/surface/methods/auth/useAppSession.ts +1 -0
  1070. package/src/bridge/surface/methods/auth/whoami.ts +1 -0
  1071. package/src/bridge/surface/methods/database/crawl.ts +1 -0
  1072. package/src/bridge/surface/methods/database/get.ts +1 -0
  1073. package/src/bridge/surface/methods/database/push.ts +1 -0
  1074. package/src/bridge/surface/methods/database/query.ts +1 -0
  1075. package/src/bridge/surface/methods/database/remove.ts +1 -0
  1076. package/src/bridge/surface/methods/database/set.ts +1 -0
  1077. package/src/bridge/surface/methods/database/update.ts +1 -0
  1078. package/src/bridge/surface/methods/firestore/addDoc.ts +2 -1
  1079. package/src/bridge/surface/methods/firestore/deleteDoc.ts +2 -1
  1080. package/src/bridge/surface/methods/firestore/discoverPaths.ts +1 -0
  1081. package/src/bridge/surface/methods/firestore/extractIndexes.ts +1 -0
  1082. package/src/bridge/surface/methods/firestore/findCollectionGroup.ts +1 -0
  1083. package/src/bridge/surface/methods/firestore/getAggregateFromServer.ts +1 -0
  1084. package/src/bridge/surface/methods/firestore/getCountFromServer.ts +1 -0
  1085. package/src/bridge/surface/methods/firestore/getDoc.ts +2 -1
  1086. package/src/bridge/surface/methods/firestore/getDocs.ts +2 -1
  1087. package/src/bridge/surface/methods/firestore/setDoc.ts +2 -1
  1088. package/src/bridge/surface/methods/firestore/updateDoc.ts +2 -1
  1089. package/src/bridge/surface/methods/firestore/writeBatch.ts +2 -1
  1090. package/src/bridge/surface/methods/firestore/writeIndexes.ts +1 -0
  1091. package/src/bridge/surface/methods/functions/executions.ts +2 -1
  1092. package/src/bridge/surface/methods/functions/fire.ts +7 -6
  1093. package/src/bridge/surface/methods/functions/listTriggers.ts +1 -0
  1094. package/src/bridge/surface/methods/messaging/deliveries.ts +1 -0
  1095. package/src/bridge/surface/methods/messaging/send.ts +2 -1
  1096. package/src/bridge/surface/methods/messaging/subscribeToTopic.ts +1 -0
  1097. package/src/bridge/surface/methods/messaging/tokens.ts +1 -0
  1098. package/src/bridge/surface/methods/messaging/unsubscribeFromTopic.ts +1 -0
  1099. package/src/bridge/surface/methods/registry.ts +2 -12
  1100. package/src/bridge/surface/methods/rules/explainDenial.ts +1 -0
  1101. package/src/bridge/surface/methods/rules/getStdlib.ts +1 -0
  1102. package/src/bridge/surface/methods/rules/lint.ts +1 -0
  1103. package/src/bridge/surface/methods/rules/listStdlib.ts +1 -0
  1104. package/src/bridge/surface/methods/rules/set.ts +1 -0
  1105. package/src/bridge/surface/methods/rules/simulate.ts +1 -0
  1106. package/src/bridge/surface/methods/sandbox/activity.ts +2 -1
  1107. package/src/bridge/surface/methods/sandbox/advanceClock.ts +1 -0
  1108. package/src/bridge/surface/methods/sandbox/apply.ts +1 -0
  1109. package/src/bridge/surface/methods/sandbox/checkpoint.ts +1 -0
  1110. package/src/bridge/surface/methods/sandbox/deleteCapture.ts +1 -1
  1111. package/src/bridge/surface/methods/sandbox/deleteCheckpoint.ts +1 -0
  1112. package/src/bridge/surface/methods/sandbox/diff.ts +1 -0
  1113. package/src/bridge/surface/methods/sandbox/discard.ts +1 -0
  1114. package/src/bridge/surface/methods/sandbox/events.ts +2 -1
  1115. package/src/bridge/surface/methods/sandbox/exportFixture.ts +1 -0
  1116. package/src/bridge/surface/methods/sandbox/fork.ts +1 -0
  1117. package/src/bridge/surface/methods/sandbox/inspect.ts +2 -1
  1118. package/src/bridge/surface/methods/sandbox/listBranches.ts +1 -0
  1119. package/src/bridge/surface/methods/sandbox/listCaptures.ts +1 -1
  1120. package/src/bridge/surface/methods/sandbox/listCheckpoints.ts +1 -0
  1121. package/src/bridge/surface/methods/sandbox/listeners.ts +1 -0
  1122. package/src/bridge/surface/methods/sandbox/openCapture.ts +1 -1
  1123. package/src/bridge/surface/methods/sandbox/promote.ts +1 -0
  1124. package/src/bridge/surface/methods/sandbox/renameCapture.ts +1 -1
  1125. package/src/bridge/surface/methods/sandbox/reset.ts +3 -2
  1126. package/src/bridge/surface/methods/sandbox/resetClock.ts +1 -0
  1127. package/src/bridge/surface/methods/sandbox/restore.ts +1 -0
  1128. package/src/bridge/surface/methods/sandbox/saveCapture.ts +1 -1
  1129. package/src/bridge/surface/methods/sandbox/seed.ts +3 -2
  1130. package/src/bridge/surface/methods/sandbox/seedFromFixture.ts +1 -0
  1131. package/src/bridge/surface/methods/sandbox/setClock.ts +1 -0
  1132. package/src/bridge/surface/methods/sandbox-registry.ts +24 -0
  1133. package/src/bridge/surface/methods/storage/deleteObject.ts +1 -0
  1134. package/src/bridge/surface/methods/storage/getBytes.ts +1 -0
  1135. package/src/bridge/surface/methods/storage/getDownloadURL.ts +1 -0
  1136. package/src/bridge/surface/methods/storage/getMetadata.ts +1 -0
  1137. package/src/bridge/surface/methods/storage/listAll.ts +1 -0
  1138. package/src/bridge/surface/methods/storage/provision.ts +1 -0
  1139. package/src/bridge/surface/methods/storage/setCrossServiceIam.ts +1 -0
  1140. package/src/bridge/surface/methods/storage/status.ts +1 -0
  1141. package/src/bridge/surface/methods/storage/updateMetadata.ts +1 -0
  1142. package/src/bridge/surface/methods/storage/uploadBytes.ts +1 -0
  1143. package/src/bridge/surface/request-instant.ts +2 -2
  1144. package/src/bridge/surface/rules-engines/database.ts +1 -2
  1145. package/src/bridge/surface/rules-engines/storage-request-resource.ts +275 -0
  1146. package/src/bridge/surface/rules-engines/storage.ts +54 -81
  1147. package/src/bridge/surface/sandbox-context.ts +49 -0
  1148. package/src/bridge/surface/service-handles.ts +13 -9
  1149. package/src/bridge/surface/sign-in.ts +3 -3
  1150. package/src/bridge/surface/storage-rules.ts +2 -14
  1151. package/src/bridge/surface/stored-identity.ts +3 -3
  1152. package/src/bridge/surface/types.ts +30 -8
  1153. package/src/cli/firebase-json.ts +45 -7
  1154. package/src/cli/firestore-indexes.ts +2 -1
  1155. package/src/cli/index.ts +46 -11
  1156. package/src/cli/public-dir-hint.ts +35 -0
  1157. package/src/cli/run.ts +35 -7
  1158. package/src/cli/sandbox-runner.ts +10 -2
  1159. package/src/cli/serve-diagnostics.ts +12 -1
  1160. package/src/cli/serve.ts +27 -26
  1161. package/src/cli/service-commands.test.ts +7 -0
  1162. package/src/cli/snapshot.ts +15 -6
  1163. package/src/cli/surface-method-runner.ts +1 -1
  1164. package/src/cli/verify.ts +11 -1
  1165. package/src/conformance/.generated/can-i-use-browser.ts +22 -3
  1166. package/src/conformance/.generated/can-i-use.ts +1 -1
  1167. package/src/conformance/.generated/conformance-docs.ts +1 -1
  1168. package/src/conformance/.generated/served-availability.ts +1 -1
  1169. package/src/discover/merge.ts +12 -3
  1170. package/src/functions/child-protocol.ts +59 -0
  1171. package/src/functions/child.ts +107 -0
  1172. package/src/{functions-rtdb → functions}/development-runtime.ts +13 -14
  1173. package/src/functions/endpoints.ts +80 -0
  1174. package/src/{functions-rtdb → functions}/project.ts +2 -2
  1175. package/src/functions/rtdb/child-runtime.ts +139 -0
  1176. package/src/{functions-rtdb → functions/rtdb}/discovery.ts +9 -43
  1177. package/src/{functions-rtdb → functions/rtdb}/remote-delivery.ts +1 -1
  1178. package/src/functions/spawn.ts +212 -0
  1179. package/src/functions/unsupported.ts +42 -0
  1180. package/src/google-endpoints.ts +74 -3
  1181. package/src/next/bridge-import-loader.ts +56 -0
  1182. package/src/next/bridge-imports.ts +108 -0
  1183. package/src/next/client-aliases.ts +14 -27
  1184. package/src/next/guard.ts +33 -11
  1185. package/src/next/turbopack-config.ts +26 -0
  1186. package/src/next/webpack-config.ts +26 -0
  1187. package/src/next/with-pyric.ts +26 -0
  1188. package/src/register/activation.ts +26 -0
  1189. package/src/register/app-bridge-admin-app-check.ts +3 -1
  1190. package/src/register/child-process-guard.ts +189 -0
  1191. package/src/register/client/bootstrap.ts +7 -1
  1192. package/src/register/connect-prototypes.ts +12 -0
  1193. package/src/register/hooks.ts +56 -3
  1194. package/src/register/index.ts +92 -20
  1195. package/src/register/mapping.ts +57 -3
  1196. package/src/register/net-guard.ts +149 -39
  1197. package/src/register/package-identity.ts +98 -0
  1198. package/src/register/swap-or-stop.ts +194 -0
  1199. package/src/register/worker-guard.ts +90 -0
  1200. package/src/remote/resolve-host.ts +14 -2
  1201. package/src/serve/ai-proxy.ts +36 -8
  1202. package/src/serve/app-ports.ts +119 -0
  1203. package/src/serve/bridge-mount.ts +36 -8
  1204. package/src/serve/bundler.ts +87 -29
  1205. package/src/serve/discovery.ts +244 -67
  1206. package/src/serve/entries/auth.ts +22 -1
  1207. package/src/serve/entries/firestore-surface.ts +1 -0
  1208. package/src/serve/entries/init-payload.ts +28 -5
  1209. package/src/serve/entries/moved-host.ts +28 -0
  1210. package/src/serve/entries/runtime-origin.ts +6 -0
  1211. package/src/serve/entries/unsupported/firestore.ts +0 -1
  1212. package/src/serve/entries/worker-runtime.ts +19 -6
  1213. package/src/serve/firebase-module-swap.ts +98 -15
  1214. package/src/serve/gemini-proxy.ts +2 -2
  1215. package/src/serve/hosted/runtime.ts +10 -2
  1216. package/src/serve/namespace.ts +41 -29
  1217. package/src/serve/repro/compare.ts +9 -1
  1218. package/src/serve/rules-fixture-check.ts +34 -9
  1219. package/src/serve/rules.ts +104 -20
  1220. package/src/serve/sandbox-session.ts +11 -3
  1221. package/src/serve/server.ts +29 -2
  1222. package/src/serve/vite-ai-config.ts +19 -1
  1223. package/src/serve/vite-functions-development.ts +3 -3
  1224. package/src/serve/vite-generation-bridge.ts +2 -2
  1225. package/src/serve/vite-generation-functions.ts +5 -5
  1226. package/src/serve/vite-generation-middleware.ts +38 -2
  1227. package/src/serve/vite-module-swap.ts +8 -0
  1228. package/src/serve/vite-page-runtime.ts +6 -0
  1229. package/src/serve/vite-rules-source.ts +2 -5
  1230. package/src/serve/vite-sandbox-generation.ts +5 -5
  1231. package/src/serve/worker/__tests__/auth-credential-sign-in.test.ts +343 -0
  1232. package/src/serve/worker/__tests__/auth-m2-parity.test.ts +45 -1
  1233. package/src/serve/worker/__tests__/staged-sign-in-results.test.ts +139 -0
  1234. package/src/serve/worker/client/auth.ts +97 -21
  1235. package/src/serve/worker/client/clock.ts +10 -12
  1236. package/src/serve/worker/client/firestore-reads.ts +70 -21
  1237. package/src/serve/worker/client/firestore-refs.ts +4 -14
  1238. package/src/serve/worker/client/rtdb-connection-lifecycle.ts +5 -0
  1239. package/src/serve/worker/client/rtdb-snapshots.ts +24 -2
  1240. package/src/serve/worker/client/rtdb-value-validation.ts +198 -0
  1241. package/src/serve/worker/client/rtdb-writes.ts +7 -0
  1242. package/src/serve/worker/client/snapshots.ts +15 -6
  1243. package/src/serve/worker/client/websocket-connection.ts +39 -3
  1244. package/src/serve/worker/host/auth-credential-sign-in.ts +97 -0
  1245. package/src/serve/worker/host/auth-reauthentication.ts +3 -3
  1246. package/src/serve/worker/host/rules.ts +53 -34
  1247. package/src/serve/worker/host/staged-sign-in-results.ts +53 -0
  1248. package/src/serve/worker/host/storage.ts +26 -11
  1249. package/src/serve/worker/host/subscriptions.ts +7 -4
  1250. package/src/serve/worker/host-auth.ts +33 -15
  1251. package/src/serve/worker/inbound-validation/operation-arguments.ts +27 -14
  1252. package/src/serve/worker/operation-persistence.ts +1 -0
  1253. package/src/serve/worker/protocol.ts +7 -1
  1254. package/src/serve/worker/rtdb-value-equality.ts +3 -1
  1255. package/src/serve/worker/serve-init.ts +3 -9
  1256. package/src/serve/worker-build-lock.ts +207 -0
  1257. package/src/serve/worker-bundle-cache.ts +90 -0
  1258. package/src/verify/cases.ts +6 -3
  1259. package/src/verify/index.ts +16 -4
  1260. package/dist/functions-rtdb/child.d.ts.map +0 -1
  1261. package/dist/functions-rtdb/child.js +0 -386
  1262. package/dist/functions-rtdb/child.js.map +0 -1
  1263. package/dist/functions-rtdb/delivery.d.ts.map +0 -1
  1264. package/dist/functions-rtdb/delivery.js.map +0 -1
  1265. package/dist/functions-rtdb/development-runtime.d.ts.map +0 -1
  1266. package/dist/functions-rtdb/development-runtime.js.map +0 -1
  1267. package/dist/functions-rtdb/discovery.d.ts.map +0 -1
  1268. package/dist/functions-rtdb/discovery.js.map +0 -1
  1269. package/dist/functions-rtdb/event.d.ts.map +0 -1
  1270. package/dist/functions-rtdb/event.js.map +0 -1
  1271. package/dist/functions-rtdb/events.d.ts.map +0 -1
  1272. package/dist/functions-rtdb/events.js.map +0 -1
  1273. package/dist/functions-rtdb/execution-log.d.ts.map +0 -1
  1274. package/dist/functions-rtdb/execution-log.js.map +0 -1
  1275. package/dist/functions-rtdb/execution.d.ts.map +0 -1
  1276. package/dist/functions-rtdb/execution.js.map +0 -1
  1277. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +0 -1
  1278. package/dist/functions-rtdb/in-memory-delivery.js.map +0 -1
  1279. package/dist/functions-rtdb/module-loader.d.ts.map +0 -1
  1280. package/dist/functions-rtdb/module-loader.js.map +0 -1
  1281. package/dist/functions-rtdb/project.d.ts +0 -7
  1282. package/dist/functions-rtdb/project.d.ts.map +0 -1
  1283. package/dist/functions-rtdb/project.js.map +0 -1
  1284. package/dist/functions-rtdb/projection.d.ts.map +0 -1
  1285. package/dist/functions-rtdb/projection.js.map +0 -1
  1286. package/dist/functions-rtdb/reference-pattern.d.ts.map +0 -1
  1287. package/dist/functions-rtdb/reference-pattern.js.map +0 -1
  1288. package/dist/functions-rtdb/remote-delivery.d.ts.map +0 -1
  1289. package/dist/functions-rtdb/remote-delivery.js.map +0 -1
  1290. package/dist/serve/gemini-error-redaction.d.ts +0 -6
  1291. package/dist/serve/gemini-error-redaction.d.ts.map +0 -1
  1292. package/dist/serve/gemini-error-redaction.js +0 -61
  1293. package/dist/serve/gemini-error-redaction.js.map +0 -1
  1294. package/dist/serve/site-ui/_astro/app.C--T2qDK.js +0 -151
  1295. package/dist/serve/site-ui/_astro/app.DqyhRyrU.js +0 -1
  1296. package/dist/serve/site-ui/_astro/sandbox-controls.Bv6lfpIe.js +0 -1725
  1297. package/dist/serve/site-ui/_astro/writes.Bg0YEEA7.js +0 -1
  1298. package/src/functions-rtdb/child.ts +0 -512
  1299. package/src/serve/gemini-error-redaction.ts +0 -60
  1300. /package/dist/{functions-rtdb → functions}/events.d.ts +0 -0
  1301. /package/dist/{functions-rtdb → functions}/events.js +0 -0
  1302. /package/dist/{functions-rtdb → functions}/execution-log.d.ts +0 -0
  1303. /package/dist/{functions-rtdb → functions}/execution-log.js +0 -0
  1304. /package/dist/{functions-rtdb → functions}/module-loader.d.ts +0 -0
  1305. /package/dist/{functions-rtdb → functions}/module-loader.js +0 -0
  1306. /package/dist/{functions-rtdb → functions/rtdb}/delivery.d.ts +0 -0
  1307. /package/dist/{functions-rtdb → functions/rtdb}/delivery.js +0 -0
  1308. /package/dist/{functions-rtdb → functions/rtdb}/event.d.ts +0 -0
  1309. /package/dist/{functions-rtdb → functions/rtdb}/event.js +0 -0
  1310. /package/dist/{functions-rtdb → functions/rtdb}/execution.d.ts +0 -0
  1311. /package/dist/{functions-rtdb → functions/rtdb}/execution.js +0 -0
  1312. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.d.ts +0 -0
  1313. /package/dist/{functions-rtdb → functions/rtdb}/in-memory-delivery.js +0 -0
  1314. /package/dist/{functions-rtdb → functions/rtdb}/projection.d.ts +0 -0
  1315. /package/dist/{functions-rtdb → functions/rtdb}/projection.js +0 -0
  1316. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.d.ts +0 -0
  1317. /package/dist/{functions-rtdb → functions/rtdb}/reference-pattern.js +0 -0
  1318. /package/dist/{functions-rtdb → functions/rtdb}/remote-delivery.js +0 -0
  1319. /package/src/{functions-rtdb → functions}/events.ts +0 -0
  1320. /package/src/{functions-rtdb → functions}/execution-log.ts +0 -0
  1321. /package/src/{functions-rtdb → functions}/module-loader.ts +0 -0
  1322. /package/src/{functions-rtdb → functions/rtdb}/delivery.ts +0 -0
  1323. /package/src/{functions-rtdb → functions/rtdb}/event.ts +0 -0
  1324. /package/src/{functions-rtdb → functions/rtdb}/execution.ts +0 -0
  1325. /package/src/{functions-rtdb → functions/rtdb}/in-memory-delivery.ts +0 -0
  1326. /package/src/{functions-rtdb → functions/rtdb}/projection.ts +0 -0
  1327. /package/src/{functions-rtdb → functions/rtdb}/reference-pattern.ts +0 -0
@@ -1 +0,0 @@
1
- import{c as jt,ba as ve,aP as ne,aC as f,bb as _t,bc as Tt,b8 as le,bd as Pt,be as qt,bf as M,aK as K,bg as Vt,bh as Mt,az as et,bi as Re,ay as Oe,bj as P,bk as ke,bl as j,aQ as tt,bm as ce,bn as It,bo as zt,V as nt,H as w,aB as T,aM as $t,bp as Lt,bq as Qt,br as Wt,Q as Ee,F as I,bs as Fe,D as Ut,E as Nt,b7 as Bt,b9 as Gt,bt as Ht,bu as Yt,O as Jt,ac as Xt,bv as Kt,T as Zt,bw as en,bx as tn}from"./sandbox-controls.Bv6lfpIe.js";const nn=Symbol.for("pyric.remote.sandbox");function Ce(e){return e!=null&&e[nn]===!0}let Z;function ts(e){Z=e}function st(e){return Z?.resolve(e,!1)}function sn(){if(!Z)throw new TypeError("No default sandbox app registry is installed - import and initialize pyric/app before calling a service factory without an app.");return Z.defaultApp()}function Me(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function rn(e,t,n,s){const r={collectionGroup:e.split("/").filter(Boolean).at(-1)??"",queryScope:t?"COLLECTION_GROUP":"COLLECTION",filters:[],orders:[]},i=(o,a)=>{const c=Me(o);if(!c||a>12||r.filters.length>=64){r.unsupported="This query exceeds the index checker’s supported limits.";return}if(c.kind==="and"&&Array.isArray(c.filters)){c.filters.forEach(u=>i(u,a+1));return}if(c.kind!=="where"||typeof c.field!="string"||typeof c.op!="string"){r.unsupported="This query uses a filter the index checker does not support yet.";return}r.filters.push({field:c.field,op:c.op})};n.forEach(o=>i(o,0));for(const o of s.slice(0,64)){const a=Me(o);if(!a||typeof a.field!="string"||a.direction!=="asc"&&a.direction!=="desc"){r.unsupported="This sort order cannot be checked yet.";continue}r.orders.push({field:a.field,direction:a.direction})}return s.length>64&&(r.unsupported="This query exceeds the index checker’s supported limits."),r}async function se(e,t,n){try{const s=await t();return e.complete(n?.()),s}catch(s){throw e.fail(),s}}const Ie=new Set;function on(e){return Ie.add(e),()=>{Ie.delete(e)}}function ns(e={}){return jt()}function z(e){return e.replace(/^\/+|\/+$/g,"").split("/")}function rt(e){return z(e).length%2===0&&z(e).length>0}function Ae(e){return z(e).length%2===1}function re(e){const t=z(e);return t[t.length-1]??""}function it(e){return z(e).slice(0,-1).join("/")}function ot(e,t){const n=t!==void 0,s=n?ve(t):void 0;return{id:e.id,ref:e,exists:n,data:()=>n?s:void 0,get:r=>ne(s,r)}}const ze=200,B=10,an=4;function cn(e){return e.length<=ze?{type:"string",value:e}:{type:"string",value:e.slice(0,ze),truncated:!0}}function at(e,t){const n=e*1e3+Math.floor(t/1e6);if(!Number.isFinite(n))return{type:"opaque"};try{return{type:"timestamp",iso:new Date(n).toISOString()}}catch{return{type:"opaque"}}}function un(e){if(typeof e!="object"||e===null)return{type:"opaque"};const t=e;return typeof t.path=="string"?{type:"reference",path:t.path}:t.type==="timestamp"&&typeof t.seconds=="number"&&typeof t.nanoseconds=="number"?at(t.seconds,t.nanoseconds):t.type==="geo-point"&&typeof t.latitude=="number"&&typeof t.longitude=="number"?{type:"geoPoint",latitude:t.latitude,longitude:t.longitude}:t.type==="bytes"&&Array.isArray(t.values)?{type:"bytes",length:t.values.length}:t.type==="vector"&&Array.isArray(t.values)?{type:"vector",length:t.values.length}:{type:"opaque"}}function he(e,t){if(e===null)return{type:"null"};if(typeof e=="string")return cn(e);if(typeof e=="number")return{type:"number",value:e};if(typeof e=="boolean")return{type:"boolean",value:e};if(typeof e!="object")return{type:"opaque"};if(t>=an)return{type:"opaque"};const n=e;if(n.type==="registered-firestore-value")return un(n.value);if(n.type==="timestamp"&&typeof n.seconds=="number"&&typeof n.nanoseconds=="number")return at(n.seconds,n.nanoseconds);if(n.type==="bytes"&&Array.isArray(n.values))return{type:"bytes",length:n.values.length};if(n.type==="array"&&Array.isArray(n.values)){const s=n.values.slice(0,B).map(r=>he(r,t+1));return n.values.length>B?{type:"array",values:s,truncated:!0}:{type:"array",values:s}}if(n.type==="map"&&Array.isArray(n.entries)){const s=n.entries.slice(0,B).filter(r=>Array.isArray(r)&&typeof r[0]=="string").map(([r,i])=>[r,he(i,t+1)]);return n.entries.length>B?{type:"map",entries:s,truncated:!0}:{type:"map",entries:s}}return{type:"opaque"}}function $e(e){return he(e,0)}function fe(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(n=>fe(n)).join(",")}]`;const t=e;return`{${Object.keys(t).sort().map(n=>`${JSON.stringify(n)}:${fe(t[n])}`).join(",")}}`}function dn(e){if(e!==null&&typeof e=="object"){const n="type"in e&&e.type==="timestamp",s="seconds"in e&&typeof e.seconds=="number",r="nanoseconds"in e&&typeof e.nanoseconds=="number";return n&&s&&r}return!1}function E(e){return new f({code:"invalid-argument",message:e})}function pe(e,t,n,s=!1,r=!1){if(e===null||typeof e=="string"||typeof e=="boolean")return{comparison:e,execution:e};if(typeof e=="number")return{comparison:e,execution:e};if(typeof e>"u"||typeof e=="bigint"||typeof e=="function"||typeof e=="symbol")throw E(`Unsupported Firestore query value: ${typeof e}.`);if(typeof e!="object")throw E("Unsupported Firestore query value.");const u=_t(e);if(u!==void 0){const m=Tt(e);if(m!==void 0&&n!==void 0&&m!==n)throw E("Document reference belongs to a different Firestore database.");if(dn(u)){const p=Math.floor(u.nanoseconds/1e3)*1e3,g=new le(u.seconds,p);return{comparison:{type:"registered-firestore-value",value:Object.freeze({type:"timestamp",seconds:g.seconds,nanoseconds:p})},execution:g}}return{comparison:{type:"registered-firestore-value",value:u},execution:Pt(e)}}if(e instanceof Date){const m=e.getTime();if(!Number.isFinite(m))throw E("Invalid Date query value.");const S=Math.floor(m/1e3),p=Object.freeze({seconds:S,nanoseconds:Math.floor((m-S*1e3)*1e6)}),g={type:"timestamp",...p};return qt(p,g,()=>Object.freeze({...p})),{comparison:{type:"registered-firestore-value",value:g},execution:p}}if(e instanceof Uint8Array){const m=e.slice();return{comparison:{type:"bytes",values:Array.from(m)},execution:m}}if(t.has(e))throw E("Cyclic query operands are not Firestore values.");const b=Object.getPrototypeOf(e);if(b!==Object.prototype&&b!==null&&!Array.isArray(e))throw E("Firestore query maps must be plain objects.");t.add(e);try{if(Array.isArray(e)){if(r&&!s)throw E("Nested arrays are not supported.");const g=e.map(q=>pe(q,t,n,s,!0)),N=g.map(q=>q.execution);return M(N,K(e)),{comparison:{type:"array",values:g.map(q=>q.comparison)},execution:N}}const O=Object.keys(e).sort().map(p=>({key:p,captured:pe(e[p],t,n,s,!1)})),S=Object.fromEntries(O.map(({key:p,captured:g})=>[p,g.execution]));return M(S,K(e)),{comparison:{type:"map",entries:O.map(({key:p,captured:g})=>[p,g.comparison])},execution:S}}finally{t.delete(e)}}function ct(e,t,n=!1){try{const s=pe(e,new Set,t,n);return Object.freeze({kind:"canonical",value:s.comparison,executionValue:s.execution})}catch(s){if(s instanceof f)throw s;const r=s instanceof Error?s.message:String(s);throw E(`Invalid Firestore query value: ${r}`)}}function ut(e,t){return Vt(e.value,t.value)}const ln=["<","<=","==","!=",">=",">","in","not-in","array-contains","array-contains-any"],hn=new Set(ln);function fn(e,t){if(!hn.has(e))throw new f({code:"invalid-argument",message:"Unsupported Firestore filter operator."});if((e==="in"||e==="not-in"||e==="array-contains-any")&&!Array.isArray(t))throw new f({code:"invalid-argument",message:`Firestore ${e} filter requires an array operand.`})}function H(e,t){if(e.kind==="where"){fn(e.op,e.value);const s="comparisonValue"in e,r=e.op==="in"||e.op==="not-in",i=s?e.comparisonValue:ct(e.value,t,r);return Object.freeze({kind:"where",field:e.field,op:e.op,value:i.executionValue,comparisonValue:i})}return Object.freeze({kind:e.kind,filters:Object.freeze(e.filters.map(s=>H(s,t)))})}function G(e,t,n,s){const r=e.map(i=>ct(i,s));return Object.freeze({values:Object.freeze(r.map(i=>i.executionValue)),comparisonValues:Object.freeze(r),inclusive:t,fromSnapshot:n})}function dt(e,t){return e.length!==t.length?!1:e.every((n,s)=>{const r=t[s];return n.kind!==r.kind?!1:n.kind==="where"&&r.kind==="where"?n.field===r.field&&n.op===r.op&&ut(n.comparisonValue,r.comparisonValue):n.kind!=="where"&&r.kind!=="where"&&dt(n.filters,r.filters)})}function Le(e,t){return e===void 0||t===void 0?e===t:e.inclusive===t.inclusive&&e.comparisonValues.length===t.comparisonValues.length&&e.comparisonValues.every((n,s)=>ut(n,t.comparisonValues[s]))}function pn(e,t){return e.kind!==t.kind?!1:e.kind==="collection"&&t.kind==="collection"?e.path===t.path:e.kind==="collection-group"&&t.kind==="collection-group"&&e.collectionId===t.collectionId}function lt(e){return e.kind==="where"?Object.freeze({kind:e.kind,field:e.field,op:e.op,value:e.value}):Object.freeze({kind:e.kind,filters:Object.freeze(e.filters.map(lt))})}function Qe(e){if(e!==void 0)return Object.freeze({values:e.values,inclusive:e.inclusive,fromSnapshot:e.fromSnapshot})}function mn(e,t){return dt(e.filters,t.filters)&&e.orders.length===t.orders.length&&e.orders.every((n,s)=>{const r=t.orders[s];return n.field===r.field&&n.direction===r.direction})&&e.limitCount===t.limitCount&&e.limitFromEnd===t.limitFromEnd&&Le(e.start,t.start)&&Le(e.end,t.end)}const ht="__name__";function We(e,t){const n=e.data();if(n===void 0)throw new f({code:"not-found",message:`Snapshot-based cursors require an existing document — got an empty snapshot for ${e.id??"<unknown>"}.`});return t.map(s=>s.field===ht?e.ref:n[s.field])}class ${env;auth;collectionPath;clauses;orders;limitCount;limitFromEnd;start;end;bypassRules;documentRef;constructor(t){this.env=t.env,this.auth=t.auth,this.collectionPath=t.collectionPath,this.documentRef=t.documentRef,this.clauses=Object.freeze((t.clauses??[]).map(n=>H(n))),this.orders=Object.freeze((t.orders??[]).map(n=>Object.freeze({...n}))),this.limitCount=t.limitCount,this.limitFromEnd=t.limitFromEnd??!1,this.start=t.start===void 0?void 0:Object.freeze({...t.start,values:Object.freeze(t.start.comparisonValues.map(n=>n.executionValue)),comparisonValues:t.start.comparisonValues}),this.end=t.end===void 0?void 0:Object.freeze({...t.end,values:Object.freeze(t.end.comparisonValues.map(n=>n.executionValue)),comparisonValues:t.end.comparisonValues}),this.bypassRules=t.bypassRules??!1}where(t,n,s){return this.clone({clauses:[...this.clauses,H({kind:"where",field:t,op:n,value:s})]})}applyFilter(t){return this.clone({clauses:[...this.clauses,H(t)]})}orderBy(t,n="asc"){if(n!=="asc"&&n!=="desc")throw new f({code:"invalid-argument",message:"orderBy() direction must be 'asc' or 'desc'."});return this.clone({orders:[...this.orders,{field:t,direction:n}]})}limit(t){return Ue(t),this.clone({limitCount:t,limitFromEnd:!1})}limitToLast(t){return Ue(t),this.clone({limitCount:t,limitFromEnd:!0})}startCursor(t,n){return this.clone({start:G(this.normalizeExplicitCursorValues(t),n,!1)})}endCursor(t,n){return this.clone({end:G(this.normalizeExplicitCursorValues(t),n,!1)})}startCursorFromSnapshot(t,n){return this.clone({start:G(We(t,this.normalizedOrders()),n,!0)})}endCursorFromSnapshot(t,n){return this.clone({end:G(We(t,this.normalizedOrders()),n,!0)})}isStructurallyEqual(t){return t instanceof $?this.env===t.env&&this.bypassRules===t.bypassRules&&pn(this.queryScope(),t.queryScope())&&mn(this.comparableExecutionSpec(),t.comparableExecutionSpec()):!1}clone(t){return new $({env:this.env,auth:this.auth,collectionPath:this.collectionPath,documentRef:this.documentRef,clauses:t.clauses??this.clauses,orders:t.orders??this.orders,limitCount:"limitCount"in t?t.limitCount:this.limitCount,limitFromEnd:t.limitFromEnd??this.limitFromEnd,start:"start"in t?t.start:this.start,end:"end"in t?t.end:this.end,bypassRules:this.bypassRules})}queryScope(){return{kind:"collection",path:this.collectionPath}}sdkActivitySource(){const t=this.queryScope();return{service:"firestore",target:t.kind==="collection"?t.path:t.collectionId,key:fe({scope:t,query:this.activityQuery()}),isQuery:!0,indexQuery:rn(t.kind==="collection"?t.path:t.collectionId,t.kind==="collection-group",this.clauses,this.orders)}}readQueryRows(t){const n=t?.auth!==void 0?t.auth:this.auth;let s;try{s=this.env.runQuery({scope:this.queryScope(),auth:n,execution:this.executionSpec(),bypassRules:this.bypassRules,activityQuery:this.activityQuery()})}catch(r){const i=r?.simError;throw i?new f(i):r}if(!s.allowed)throw new f(s.error);return s.docs}activityQuery(){const t=s=>s.kind==="where"?{kind:"where",field:s.field,op:s.op,value:K(s.value),display:$e(s.comparisonValue.value)}:{kind:s.kind,filters:s.filters.map(t)},n=s=>s===void 0?null:{values:s.values.map(r=>K(r)),display:s.comparisonValues.map(r=>$e(r.value)),inclusive:s.inclusive,fromSnapshot:s.fromSnapshot};return{scope:this.activityScope(),filters:this.clauses.map(t),orderBy:this.orders.map(s=>({...s})),limit:this.limitCount??null,limitFromEnd:this.limitFromEnd,start:n(this.start),end:n(this.end)}}activityScope(){return{kind:"collection"}}normalizedOrders(){return Mt(this.executionSpec())}normalizeExplicitCursorValues(t){const n=this.orders;return t.map((s,r)=>{if(n[r]?.field!==ht)return s;if(typeof s!="string")throw new f({code:"invalid-argument",message:"Expected a string for a document ID cursor value."});const i=s.includes("/")?s:`${this.collectionPath}/${s}`;return this.documentRef(i)})}executionSpec(){const t={filters:Object.freeze(this.clauses.map(lt)),orders:this.orders,limitCount:this.limitCount,limitFromEnd:this.limitFromEnd,start:Qe(this.start),end:Qe(this.end)};return Object.freeze(t)}comparableExecutionSpec(){return{filters:this.clauses,orders:this.orders,limitCount:this.limitCount,limitFromEnd:this.limitFromEnd,start:this.start,end:this.end}}snapshotScope(){return this.queryScope()}snapshotConstraints(){return Object.freeze({execution:this.executionSpec(),activityQuery:this.activityQuery()})}async get(t){const s=this.readQueryRows(t).map(r=>{const i=this.documentRef(r.path),o=ve(r.data);return{id:i.id,ref:i,exists:!0,data:()=>o,get:a=>ne(o,a)}});return{size:s.length,empty:s.length===0,docs:s,forEach:et(s)}}async aggregate(t,n){const s=this.readQueryRows(n),r={};for(const i of Object.keys(t))r[i]=bn(t[i],s);return{data:()=>r}}}function yn(e,t){if(!t.includes("."))return e[t];let n=e;for(const s of t.split(".")){if(typeof n!="object"||n===null||Array.isArray(n))return;n=n[s]}return n}function bn(e,t){if(e.kind==="count")return t.length;let n=0,s=0;for(const r of t){const i=yn(r.data,e.field);typeof i=="number"&&Number.isFinite(i)&&(n+=i,s++)}return e.kind==="sum"?n:s===0?null:n/s}function Ue(e){if(!Number.isFinite(e))throw new f({code:"invalid-argument",message:"Query limit must be a finite number."})}function D(e,t){if(e.error)throw new f(e.error);const n=e.debugMessages.length>0?e.debugMessages.join("; "):"(no debug message)";throw new f(j("permission-denied",`${t}: ${n}`))}class gn{env;auth;bypassRules;collectionRef;id;path;constructor(t,n,s,r=!1,i){this.env=t,this.auth=n,this.bypassRules=r,this.collectionRef=i,this.path=s,this.id=re(s),M(this,Re("reference",s)),Oe(this,s,t)}get parent(){return this.collectionRef(it(this.path))}collection(t){return this.collectionRef(`${this.path}/${t}`)}async get(t){const n=this.env.execute({method:"get",path:this.path,auth:t?.auth!==void 0?t.auth:this.auth,bypassRules:this.bypassRules});n.allowed||D(n,"get denied");const s=n.data===void 0||n.data===null?void 0:n.data;return ot(this,s)}async create(t,n){const s=this.env.execute({method:"create",path:this.path,data:t,auth:n?.auth!==void 0?n.auth:this.auth,bypassRules:this.bypassRules});s.allowed||D(s,"create denied")}async set(t,n){const s=n?.auth!==void 0?n.auth:this.auth;if(n?.mergeFields!==void 0){const i=n.mergeFields.map(u=>String(u)),a=this.env.getDocument(this.path)===null?"create":"update",c=this.env.execute({method:a,path:this.path,data:t,auth:s,merge:{mergeFields:i},bypassRules:this.bypassRules});c.allowed||D(c,`set denied (as ${a})`);return}if(n?.merge===!0){const o=this.env.getDocument(this.path)===null?"create":"update",a=this.env.execute({method:o,path:this.path,data:t,auth:s,merge:!0,bypassRules:this.bypassRules});a.allowed||D(a,`set denied (as ${o})`);return}const r=this.env.execute({method:"set",path:this.path,data:t,auth:s,bypassRules:this.bypassRules});r.allowed||D(r,"set denied")}update(t,...n){const{fields:s,options:r}=P(t,n);return this.commitUpdate(s,r)}async commitUpdate(t,n){const s=this.env.execute({method:"update",path:this.path,data:ke(t),auth:n?.auth!==void 0?n.auth:this.auth,bypassRules:this.bypassRules});s.allowed||D(s,"update denied")}async delete(t){const n=this.env.execute({method:"delete",path:this.path,auth:t?.auth!==void 0?t.auth:this.auth,bypassRules:this.bypassRules});n.allowed||D(n,"delete denied")}}function V(e,t,n,s){return new gn(e,t,n,s,r=>new ft(e,t,r,s))}class ft extends ${id;path;constructor(t,n,s,r=!1){super({env:t,auth:n,collectionPath:s,bypassRules:r,documentRef:i=>V(t,n,i,r)}),this.path=s,this.id=re(s)}doc(t){const n=t??tt();return V(this.env,this.auth,`${this.path}/${n}`,this.bypassRules)}async add(t,n){const s=n?.auth!==void 0?n.auth:this.auth,{path:r,result:i}=this.env.createWithAutoId(this.path,t,s,this.bypassRules);if(!i.allowed){if(i.error)throw new f(i.error);let o="(no debug message)";throw i.debugMessages.length>0&&(o=i.debugMessages.join("; ")),new f(j("permission-denied",`set denied: ${o}`))}return V(this.env,this.auth,r,this.bypassRules)}}class De extends ${collectionId;constructor(t){super({...t,collectionPath:"",documentRef:n=>V(t.env,t.auth,n,t.bypassRules??!1)}),this.collectionId=t.collectionId}clone(t){return new De({env:this.env,auth:this.auth,collectionId:this.collectionId,clauses:t.clauses??this.clauses,orders:t.orders??this.orders,limitCount:"limitCount"in t?t.limitCount:this.limitCount,limitFromEnd:t.limitFromEnd??this.limitFromEnd,start:"start"in t?t.start:this.start,end:"end"in t?t.end:this.end,bypassRules:this.bypassRules})}queryScope(){return{kind:"collection-group",collectionId:this.collectionId}}activityScope(){return{kind:"collection-group"}}}class wn{env;auth;bypassRules;ops=[];constructor(t,n,s=!1){this.env=t,this.auth=n,this.bypassRules=s}create(t,n){return this.ops.push({method:"create",path:t.path,data:ce(n)}),this}set(t,n,s){const r={method:"set",path:t.path,data:ce(n)},i=s?.mergeFields;return i!==void 0?r.merge={mergeFields:[...i]}:s?.merge===!0&&(r.merge=!0),this.ops.push(r),this}update(t,n,...s){const{fields:r}=P(n,s);return this.ops.push({method:"update",path:t.path,data:ce(ke(r))}),this}delete(t){return this.ops.push({method:"delete",path:t.path}),this}async commit(t){if(this.ops.length===0)return;const s=t?.auth,r=s!==void 0,i=this.env.batch(this.ops,r?s:this.auth,this.bypassRules),{allowed:o,error:a}=i;if(o)return;if(a!==void 0)throw new f(a);const y=i.results.find(d=>!d.allowed)?.debugMessages.join("; ")??"batch denied";throw new f(j("permission-denied",`batch failed: ${y}`))}}function xn(e){return typeof e.where=="function"}class Sn{simTx;constructor(t){this.simTx=t}async get(t){if(xn(t)){const i=await t.get();return i.size>0&&this.simTx.getAll(...i.docs.map(a=>a.ref.path)),i}const r=this.simTx.get(t.path).data();return ot(t,r)}create(t,n){return this.simTx.create(t.path,n),this}set(t,n,s){const r=s?.mergeFields;if(r!==void 0)return this.simTx.set(t.path,n,{mergeFields:r}),this;const o=s?.merge===!0;return this.simTx.set(t.path,n,o?!0:void 0),this}update(t,n,...s){const{fields:r}=P(n,s);return this.simTx.update(t.path,ke(r)),this}delete(t){return this.simTx.delete(t.path),this}}class vn{env;auth;bypassRules;provenance;constructor(t,n,s=!1,r){this.env=t,this.auth=n,this.bypassRules=s,this.provenance=r}collection(t){if(!Ae(t))throw new f(j("invalid-argument",`collection path must have an odd number of segments: ${t}`));return new ft(this.env,this.auth,t,this.bypassRules)}doc(t){if(!rt(t))throw new f(j("invalid-argument",`document path must have an even number of segments: ${t}`));return V(this.env,this.auth,t,this.bypassRules)}collectionGroup(t){if(t.length===0||t.includes("/"))throw new f(j("invalid-argument",`collection group id must be a single non-empty segment with no '/': ${t}`));return new De({env:this.env,auth:this.auth,collectionId:t,bypassRules:this.bypassRules})}batch(){return new wn(this.env,this.auth,this.bypassRules)}async runTransaction(t,n){let s;try{s=await this.env.transaction(r=>{const i=new Sn(r);return t(i)},{auth:n?.auth!==void 0?n.auth:this.auth,bypassRules:this.bypassRules,provenance:this.provenance,maxAttempts:n?.maxAttempts})}catch(r){throw r instanceof It?new f(r.simError):r instanceof zt?new f(r.simError):r}if(!s.allowed){if(s.error)throw new f(s.error);const i=s.writes.find(o=>!o.allowed)?.debugMessages.join("; ")??"transaction denied at commit";throw new f(j("permission-denied",`transaction failed: ${i}`))}return s.returnValue}}function Rn(e,t){return new vn(e,t?.auth??null,t?.bypassRules??!1,t?.provenance)}const On=Symbol("pyric/sandbox/context"),kn=Symbol("pyric/sandbox/bypassRules");let me=null;function ss(e){me=e}const En=Symbol.for("pyric.firestore.modular-value");function Ne(e){return En in e}function Fn(e){const t=e;return typeof t.path=="string"&&t.path.length>0||typeof t.collectionPath=="string"&&t.collectionPath.length>0||typeof t.snapshotScope=="function"}function Cn(e){const t=e.trim();if(!t)return[];const n=t.indexOf(": ");if(n!==-1){const r=t.slice(n+2).trim().split("; ").map(i=>i.trim()).filter(i=>i.length>0);if(r.length>0)return r}return[t]}function Be(e,t){if(e instanceof f===!1)return e;const s=e.code;if(s==="permission-denied"===!1)return new w(s,e.message);const i={engine:"firestore",auth:t.auth,reasons:Cn(e.message)},o=e.simError;if(o!==void 0){if(o.queryProof!==void 0&&(i.queryProof=o.queryProof),o.request!==void 0){const l=o.request;i.request={method:l.method,path:l.path},l.resourceData!==void 0&&(i.request.resourceData=l.resourceData),l.updateMask!==void 0&&(i.request.updateMask=l.updateMask)}if(o.resource!==void 0&&(i.resource={data:o.resource.data,exists:o.resource.exists}),o.query!==void 0&&(i.query=o.query),o.rule!==void 0&&(i.rule=o.rule),o.repro!==void 0&&(i.repro=o.repro),o.remediation!==void 0)return new w({code:s,message:e.message,denialContext:i,remediation:o.remediation})}return new w(s,e.message,i)}function ee(e,t,n=!1){return new Proxy(e,{get(s,r,i){if(r===On)return t;if(r===kn)return n;if(r==="onSnapshot"&&me!==null&&!(r in s)&&Fn(s))return(...a)=>me(i,...a);const o=Reflect.get(s,r,i);return typeof o!="function"?o:function(...a){let c;try{const u=()=>o.apply(s,a);c=typeof t.sandbox.runWithProvenance=="function"?t.sandbox.runWithProvenance(nt(t.operationContext),u):u()}catch(u){throw Be(u,t)}return c instanceof Promise?c.then(u=>u&&typeof u=="object"&&!Ne(u)?ee(u,t,n):u).catch(u=>{throw Be(u,t)}):c&&typeof c=="object"&&!Ne(c)?ee(c,t,n):c}}})}function pt(e,t=!1){if(Ce(e.sandbox))throw new Error("pyric/sandbox/admin-firestore: internal — a remote sandbox context reached the local engine builder; remote dispatch should have handled it. Please report this.");const n=()=>Rn(T(e.sandbox),{auth:e.auth,bypassRules:t,provenance:nt(e.operationContext)});return{collection(s){return n().collection(s)},doc(s){return n().doc(s)},collectionGroup(s){return n().collectionGroup(s)},batch(){return n().batch()},runTransaction(s,r){return n().runTransaction(s,r)},setRules(s){return T(e.sandbox).deployRules(s)},seed(s){const r=T(e.sandbox);return r.seed({rules:r.getRules(),documents:s?.documents??{}})},snapshot(){return T(e.sandbox).snapshot()}}}function ye(e){if(e instanceof w)return e;if(e!==null&&typeof e=="object"){const t=e;if(typeof t.code=="string"&&typeof t.message=="string"){const n=t.denialContext!==null&&typeof t.denialContext=="object"?t.denialContext:void 0;return new w(t.code,t.message,n)}}return e}function k(e){return new w("invalid-argument",e)}async function x(e,t){try{return await e.sandbox.channel.op({...t,actAs:e.lens})}catch(n){throw ye(n)}}const An=new Set(["serverTimestamp","increment","arrayUnion","arrayRemove","deleteField"]);function Dn(e){return e!==null&&typeof e=="object"&&typeof e.__type=="string"&&An.has(e.__type)}function jn(e){switch(e.__type){case"serverTimestamp":return{__sentinel:"serverTimestamp"};case"increment":return{__sentinel:"increment",n:e.value};case"arrayUnion":return{__sentinel:"arrayUnion",values:e.values.map(v)};case"arrayRemove":return{__sentinel:"arrayRemove",values:e.values.map(v)};case"deleteField":return{__sentinel:"deleteField"}}}function v(e){if(e===null||typeof e!="object")return e;if(Dn(e))return jn(e);if(e instanceof le)return e.toJSON();if(e instanceof Date)return le.fromDate(e).toJSON();if(Array.isArray(e))return e.map(v);const t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null){const s=e.toJSON;if(typeof s=="function")return s.call(e);throw k(`remote Firestore: cannot serialize a ${t.constructor?.name??"class"} instance for the wire — use plain data, Timestamp, Date, or FieldValue sentinels.`)}const n={};for(const[s,r]of Object.entries(e))n[s]=v(r);return n}function _(e){return v(e)}function je(e){return e.map(t=>({path:[...t.path],value:v(t.value)}))}function be(e){return $t(JSON.parse(e.json),e.valueEncoding)}function mt(e){return ve(be(e))}function yt(e,t){const n=t.exists&&t.data?mt(t.data):void 0;return{id:e.id,ref:e,exists:t.exists,data:()=>n,get:s=>ne(n,s)}}function bt(e,t){const n=t.docs.map(s=>{const r=s.path??s.id,i=te(e,r),o=s.data?mt(s.data):{};return{id:i.id,ref:i,exists:!0,data:()=>o,get:a=>ne(o,a)}});return{size:n.length,empty:n.length===0,docs:n,forEach:et(n)}}const _e=Symbol("pyric/sandbox/admin-firestore/remoteSnapshotRegistrar");function rs(e){if(e===null||typeof e!="object")return;const t=e[_e];return typeof t=="function"?t:void 0}let ge=null;function is(e){ge=e}function gt(...e){if(ge===null)throw new w("failed-precondition","remote Firestore: onSnapshot is not wired yet — import pyric-admin/firestore (or pyric/sandbox/admin-firestore) before subscribing.");return ge(this,...e)}function wt(e,t,n,s,r){const i=n.includeMetadataChanges!==!0;let o;function a(u){const y=ye(u);r!==void 0?r(y):console.error("pyric remote Firestore: uncaught onSnapshot error:",y)}let c;try{c=e.sandbox.channel.subscribe({target:t,actAs:e.lens},u=>{if(s===void 0)return;let d;try{const l=u,b=l.docs;if(Array.isArray(b)){const m=b.map(O=>{const S=O.data,p=S!==void 0;return{path:O.path??O.id,data:p?be(S):{}}});d=Lt({path:xt(t)},m,{excludesMetadataChanges:i},o),o=m}else{const m=l.id;if(typeof m=="string"){const S=l.path??m,p=l.data,N=l.exists===!0&&p!==void 0?be(p):null;d=Qt(S,N)}}}catch(l){c(),a(l);return}d!==void 0&&s(d)},a)}catch(u){throw ye(u)}return c}function xt(e){switch(e.__ref){case"query":return xt(e.source);case"group":return e.collectionId;default:return e.path}}const St=Symbol("pyric/sandbox/admin-firestore/remoteQueryState");function _n(e){if(!(e===null||typeof e!="object"))return e[St]}function vt(e){return e.kind==="where"?(Rt(e.op),{kind:"where",field:e.field,op:e.op,value:v(e.value)}):{kind:e.kind,filters:e.filters.map(vt)}}const Tn=new Set(["<","<=","==","!=",">=",">","in","not-in","array-contains","array-contains-any"]);function Rt(e){if(!Tn.has(e))throw k(`invalid where operator: ${String(e)}`)}function Y(e){const t=[...e.filters];for(const n of e.orders)t.push({kind:"orderBy",field:n.field,direction:n.direction});return e.start&&t.push({kind:e.start.inclusive?"startAt":"startAfter",values:e.start.values.map(v)}),e.end&&t.push({kind:e.end.inclusive?"endAt":"endBefore",values:e.end.values.map(v)}),e.limitCount!==void 0&&t.push(e.limitFromEnd?{kind:"limitToLast",n:e.limitCount}:{kind:"limit",n:e.limitCount}),t.length===0?e.source:{__ref:"query",source:e.source,constraints:t}}function Ge(e,t,n){if(t.length===0)throw k(`${n}(snapshot) on a remote sandbox requires at least one explicit orderBy() clause — the relay protocol has no document-key cursor.`);if(t.some(r=>r.field==="__name__"))throw k(`${n}(snapshot) on a remote sandbox does not support orderBy('__name__') — the relay protocol has no document-key cursor, and __name__ is not a data field a value cursor can carry. Order by a real document field instead.`);const s=e.data();if(s===void 0)throw new w("not-found",`Snapshot-based cursors require an existing document — got an empty snapshot for ${e.id??"<unknown>"}.`);return t.map(r=>s[r.field])}function Te(e,t){const n=r=>Te(e,{...t,...r});return{[St]:t,where(r,i,o){return Rt(i),n({filters:[...t.filters,{kind:"where",field:r,op:i,value:v(o)}]})},applyFilter(r){return n({filters:[...t.filters,vt(r)]})},orderBy(r,i="asc"){return n({orders:[...t.orders,{field:r,direction:i}]})},limit(r){return n({limitCount:r,limitFromEnd:!1})},limitToLast(r){return n({limitCount:r,limitFromEnd:!0})},startCursor(r,i){return n({start:{values:[...r],inclusive:i}})},endCursor(r,i){return n({end:{values:[...r],inclusive:i}})},startCursorFromSnapshot(r,i){return n({start:{values:Ge(r,t.orders,i?"startAt":"startAfter"),inclusive:i}})},endCursorFromSnapshot(r,i){return n({end:{values:Ge(r,t.orders,i?"endAt":"endBefore"),inclusive:i}})},async get(r){J(t);const i=await x(e,{method:"getDocs",source:Y(t)});return bt(e,i)},async aggregate(r){J(t);const i=await x(e,{method:"aggregate",source:Y(t),spec:r});return{data:()=>i.data}},[_e]:(r,i,o)=>(J(t),wt(e,Y(t),r,i,o)),onSnapshot:gt}}function J(e){if(e.limitFromEnd&&e.orders.length===0)throw k("limitToLast() queries require at least one orderBy clause.")}function we(e,t){const n=Te(e,{source:{__ref:"collection",path:t},filters:[],orders:[],limitFromEnd:!1});return Object.assign(Object.create(Object.getPrototypeOf(n)),n,{id:re(t),path:t,doc(r){const i=r??tt();return te(e,`${t}/${i}`)},async add(r,i){const o=await x(e,{method:"addDoc",collectionPath:t,data:_(r)});return te(e,o.path)}})}function te(e,t){const n={id:re(t),path:t,get parent(){return we(e,it(t))},collection(s){const r=`${t}/${s}`;if(!Ae(r))throw k(`collection path must have an odd number of segments: ${r}`);return we(e,r)},async get(s){const r=await x(e,{method:"getDoc",path:t});return yt(n,r)},async create(s,r){await x(e,{method:"batchCommit",writes:[{method:"create",path:t,data:_(s)}]})},async set(s,r){await x(e,{method:"setDoc",path:t,data:_(s),...He(r)?{options:He(r)}:{}})},update(s,...r){const{fields:i}=P(s,r),o=je(i);return x(e,{method:"updateDoc",path:t,fields:o}).then(()=>{})},async delete(s){await x(e,{method:"deleteDoc",path:t})},[_e]:(s,r,i)=>wt(e,{__ref:"doc",path:t},s,r,i),onSnapshot:gt};return n}function He(e){if(!e)return;const t={};return e.merge!==void 0&&(t.merge=e.merge),e.mergeFields!==void 0&&(t.mergeFields=[...e.mergeFields]),t.merge!==void 0||t.mergeFields!==void 0?t:void 0}function Ot(e){if(e===void 0)return;const t={};return"merge"in e&&e.merge!==void 0&&(t.merge=e.merge),"mergeFields"in e&&e.mergeFields!==void 0&&(t.mergeFields=e.mergeFields.map(n=>String(n))),t}function Pn(e){const t=[];let n=!1;const s={create(i,o){return r(),t.push({method:"create",path:i.path,data:_(o)}),s},set(i,o,a){r();const c={method:"set",path:i.path,data:_(o)},u=Ot(a);return u!==void 0&&(c.options=u),t.push(c),s},update(i,o,...a){r();const{fields:c}=P(o,a);return t.push({method:"update",path:i.path,fields:je(c)}),s},delete(i){return r(),t.push({method:"delete",path:i.path}),s},async commit(i){r(),n=!0,await x(e,{method:"batchCommit",writes:t})}};function r(){if(n)throw new w("failed-precondition","WriteBatch has already been committed.")}return s}const qn=5;async function Vn(e,t,n=qn){for(let s=0;s<n;s++){const r=[],i=[],o=()=>{if(i.length>0)throw new w("failed-precondition",Wt)},a={get(d){o();const h=_n(d);return h!==void 0?u(h):c(d)},create(d,h){return i.push({method:"create",path:d.path,data:_(h)}),a},set(d,h,l){const b={method:"set",path:d.path,data:_(h)},A=Ot(l);return A!==void 0&&(b.options=A),i.push(b),a},update(d,h,...l){const{fields:b}=P(h,l);return i.push({method:"update",path:d.path,fields:je(b)}),a},delete(d){return i.push({method:"delete",path:d.path}),a}};async function c(d){const h=await x(e,{method:"getDoc",path:d.path});return r.push({path:h.path??d.path,data:h.exists&&h.data?h.data:null}),yt(d,h)}async function u(d){J(d);const h=await x(e,{method:"getDocs",source:Y(d)});for(const l of h.docs)r.push({path:l.path??l.id,data:l.data??null});return bt(e,h)}const y=await t(a);try{return await x(e,{method:"txnCommit",reads:r,writes:i}),y}catch(d){if(d instanceof w&&d.code==="aborted")continue;throw d}}throw new w("aborted",`Transaction failed after ${n} attempts due to repeated conflicts. Another writer is concurrently updating the same documents.`)}function ue(e,t){return new w("unimplemented",`SandboxFirestore.${e} is not available on a remote sandbox — its return value is synchronous and the data lives in the browser worker. ${t}`)}function kt(e,t){const n={sandbox:e,lens:t};return{collection(s){if(!Ae(s))throw k(`collection path must have an odd number of segments: ${s}`);return we(n,s)},doc(s){if(!rt(s))throw k(`document path must have an even number of segments: ${s}`);return te(n,s)},collectionGroup(s){if(s.length===0||s.includes("/"))throw k(`collection group id must be a single non-empty segment with no '/': ${s}`);return Te(n,{source:{__ref:"group",collectionId:s},filters:[],orders:[],limitFromEnd:!1})},batch(){return Pn(n)},runTransaction(s,r){return Vn(n,s,r?.maxAttempts)},setRules(){throw ue("setRules","Deploy rules asynchronously through the relay instead: `await sandbox.channel.op({ method: 'setFirestoreRules', source })`.")},seed(){throw ue("seed","The relay has no atomic seed op; write seed docs through this handle (`db.doc(path).set(data)` / `db.batch()`), or drive `sandbox.channel.op({ method: 'admin.setDocument', path, data })` per document.")},snapshot(){throw ue("snapshot","Read the worker state asynchronously instead: `await sandbox.channel.op({ method: 'admin.readState' })`.")}}}const Ye=new WeakMap;function Et(e){const t=Ye.get(e);if(t)return t;const n=Ce(e.sandbox)?kt(e.sandbox,Mn(e.auth)):ee(pt(e),e);return Ye.set(e,n),n}function Mn(e){if(e==null)return{mode:"anon"};const t={mode:"as",uid:e.uid};return e.token!==void 0&&(t.token=e.token),e.tenant!==void 0&&(t.tenant=e.tenant),t}const Je=new WeakMap;function In(e){const t=zn(e)?e:e.withAuth(null),n=Je.get(t);if(n)return n;const s=t.operationContext.authLens.mode==="admin"?t:Ee(t,{source:t.operationContext.source,authLens:{mode:"admin"},...t.operationContext.planId===void 0?{}:{planId:t.operationContext.planId}}),r=Ce(s.sandbox)?kt(s.sandbox,{mode:"admin"}):ee(pt(s,!0),s,!0);return Je.set(t,r),r}function zn(e){return e!==null&&typeof e=="object"&&"sandbox"in e&&typeof e.withAuth=="function"}function $n(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"}function Ln(e){if(e instanceof I||!$n(e))return e;const t={};e.denialContext!==void 0&&(t.denialContext=e.denialContext),e.remediation!==void 0&&(t.remediation=e.remediation);const n=new I(e.code,e.message,Object.keys(t).length===0?void 0:t);e.denialContext!==void 0&&Object.assign(n,{denialContext:e.denialContext}),e.remediation!==void 0&&Object.assign(n,{remediation:e.remediation});for(const s of["request","resource","query","rule","queryProof"])e[s]!==void 0&&Object.assign(n,{[s]:e[s]});return n}async function ie(e){try{return await e()}catch(t){throw Ln(t)}}class Qn{static[Symbol.hasInstance](t){return!!(t&&typeof t=="object"&&"id"in t&&"path"in t&&typeof t.path=="string"&&!("docs"in t)&&!("exists"in t)&&!("doc"in t)&&!("add"in t))}}function Ft(e,t){const n=R(e);if(t===null)return n;const r=C(e),i=Ve(n,r,t);return Fe(n,i),xe(i)}function xe(e){function t(n){return Ft(e,n)}return Object.assign(e,{withConverter:t})}function X(e,t,n,s=null){function r(c){return c===null?Xe(a,null):Xe(a,c)}const i=R(e),o=Ve(i,n,s),a=Object.assign(o,{withConverter:r});return M(a,Re("reference",t)),Oe(i,t,n),Fe(i,a),a}function os(e,...t){const n=C(e),s=F in e,r=s?void 0:qe(e),i=W(n);if(s){if(t.length===0)throw new TypeError("doc(db, path) requires at least one path segment.");const l=t.join("/"),b=i.doc(l),A=Q(b,n,m=>m.doc(l));return X(A,l,n)}const o=R(e),a=t.length===0;let c;a?c=o.doc():c=o.doc(t.join("/"));const u=c.path,y=Q(c,n,h=>h.doc(u));return r!=null?X(y,u,n,r):X(y,u,n)}function as(e,...t){const n=C(e),s=F in e;if(t.length===0)throw new TypeError("collection() requires at least one path segment.");if(s){const c=t.join("/"),u=xe(W(n).collection(c));return Q(u,n,y=>y.collection(c))}const r=R(e),i=t.join("/"),o=xe(r.collection(i)),a=o.path;return Q(o,n,c=>c.collection(a))}function Xe(e,t){const n=C(e),s=R(e);return s instanceof Qn?X(s,s.path,n,t):Ft(e,t)}class Wn{started=!1;networkEnabled=!0;persistenceMode;pending=new Set;cachedPaths=new Set;cachedQueries=new WeakSet;syncObservers=new Set;syncScheduled=!1;markStarted(){this.started=!0}enablePersistence(t){if(this.started||this.persistenceMode!==void 0)throw new I("failed-precondition","Firestore has already been started and persistence can no longer be enabled.");this.persistenceMode=t,this.started=!0}disableNetwork(){this.started=!0,this.networkEnabled=!1}async enableNetwork(){this.started=!0,this.networkEnabled=!0;for(const t of this.pending)t.localDone&&t.resolve(t.value);await Promise.all([...this.pending].map(t=>t.promise))}runWrite(t,n){if(this.started=!0,n&&this.cachedPaths.add(n),this.networkEnabled)return t();let s,r;const i=new Promise((a,c)=>{s=a,r=c}),o={path:n,promise:i,localDone:!1,resolve:s,reject:r};return this.pending.add(o),t().then(a=>{o.localDone=!0,o.value=a,this.networkEnabled&&o.resolve(a)},a=>o.reject(a)),i.then(()=>this.pending.delete(o),()=>this.pending.delete(o)),i}waitForPendingWrites(){this.started=!0;const t=[...this.pending].map(n=>n.promise);return Promise.all(t).then(()=>{})}cachePath(t){this.started=!0,this.cachedPaths.add(t)}assertPathCached(t){if(this.started=!0,!this.cachedPaths.has(t))throw new I("unavailable","Failed to get document from cache. (However, this document may exist on the server.)")}cacheQuery(t){this.started=!0,this.cachedQueries.add(t)}hasCachedQuery(t){return this.started=!0,this.cachedQueries.has(t)||this.cachedPaths.size>0}snapshotMetadata(t){return Object.freeze({fromCache:!this.networkEnabled,hasPendingWrites:[...this.pending].some(n=>n.path===t)})}querySnapshotMetadata(){return Object.freeze({fromCache:!this.networkEnabled,hasPendingWrites:this.pending.size>0})}addSnapshotsInSyncObserver(t){return this.syncObservers.add(t),t(),()=>this.syncObservers.delete(t)}notifySnapshotDelivered(){this.syncScheduled||this.syncObservers.size===0||(this.syncScheduled=!0,queueMicrotask(()=>{this.syncScheduled=!1;for(const t of[...this.syncObservers])t()}))}}const Ke=new WeakMap;function L(e){let t=Ke.get(e);return t||(t=new Wn,Ke.set(e,t)),t}function oe(e,t,n,s,r){const i=R(t),o=typeof i.sdkActivitySource=="function"?i.sdkActivitySource():{service:"firestore",target:i.path,key:`doc:${i.path}`};return Ut.begin({app:e.activityApp??e,source:o,method:n,kind:s,owners:Nt(r?.owner,r?.owners)})}const F=Symbol("pyric/firestore/target");function W(e){return e.kind==="sandbox"?e.db:e.getDb()}const ae=new WeakMap;function Un(e,t){return ae.set(e,t),e}const U=new WeakMap;function Nn(e,t,n){return ae.set(e,t),U.set(e,n),e}function Pe(e,t){const n=R(t);if(e.kind==="sandbox")return n;const s=U.get(n);if(!s)throw new TypeError("pyric/firestore: live ref missing rebuild closure — was it produced by a factory in this package?");return s(W(e))}function Bn(e,t){const n=R(t);if(e.kind==="sandbox")return n;const s=U.get(n);if(!s)throw new TypeError("pyric/firestore: live collection ref missing rebuild closure.");return s(W(e))}function cs(e,t){const n=R(t);if(e.kind==="sandbox")return n;const s=U.get(n);if(!s)throw new TypeError("pyric/firestore: live query missing rebuild closure.");return s(W(e))}function Q(e,t,n){return t.kind==="sandbox-live"?Nn(e,t,n):Un(e,t)}function us(e){const t=R(e),n=U.get(t);return n||(()=>t)}function C(e){const t=Gn(e);return t.assertUsable?.(),t}function Gn(e){let t;if(F in e?t=e[F]:t=ae.get(e),!t)throw new TypeError("pyric/firestore: unrecognized reference — was it produced by a factory in this package?");return t}const Hn=Symbol.for("pyric.firestore.modular-value"),Ct=new WeakMap,At=new WeakMap;function qe(e){return Ct.get(e)}function R(e){return At.get(e)??e}function Ve(e,t,n){const s={id:e.id??"",path:e.path??""};return Object.defineProperty(s,Hn,{value:!0}),Ct.set(s,n),At.set(s,e),ae.set(s,t),s}function Yn(e){return e instanceof Kt?Array.from(e.value):null}function Se(e,t){if(e instanceof Yt)return t?.create(e.path)??e;if(e instanceof Jt)return Bt.fromUint8Array(e.data);if(e instanceof Xt)return new Gt(e.lat,e.lng);const i=Yn(e);if(i!==null)return Ht(i);if(Array.isArray(e))return e.map(u=>Se(u,t));if(e!==null&&typeof e=="object"){const u=Object.getPrototypeOf(e);if(u===Object.prototype||u===null){const d={};for(const[h,l]of Object.entries(e))d[h]=Se(l,t);return d}}return e}function ds(e,t){if(e!==void 0)return Se(e,t)}function Jn(e){if(e===void 0)return Jn(sn());const t=st(e);if(t)return t.service("firestore/default",()=>{const{sandbox:n,session:s}=t,r=de();t.onDelete(r.terminate);const i=t.authScope;i&&(r.own(s.onCurrentUserChanged(a=>{T(n).reevaluateLiveListeners(a,i)})),r.own(on(a=>{const c=a?.mode==="anon"?null:a?.mode==="as"?{uid:a.uid,...a.tenant?{tenant:a.tenant}:{}}:s.currentUser;T(n).reevaluateLiveListeners(c,i)})));const o={kind:"sandbox-live",activityApp:e,sandbox:n,getDb:Ze(n,()=>s.currentUser),authScope:i,...r};return{[F]:o,app:e}});if(Dt(e)){const n=Et(e),s={kind:"sandbox",activityApp:e,db:n,sandbox:e.sandbox,...de()};return{[F]:s}}if(Kn(e)){const n={kind:"sandbox-live",activityApp:e,sandbox:e,getDb:Ze(e),...de()};return{[F]:n}}throw new TypeError("pyric/firestore is a sandbox-only mirror. Package resolution must leave firebase/firestore unchanged for production; activate pyric sandbox or @pyric/cli/register before importing to select the sandbox.")}function de(){let e=!1;const t=new Set;return{own(n){return e?(n(),()=>{}):(t.add(n),()=>t.delete(n))},assertUsable(){if(e)throw new I("failed-precondition","The client has already been terminated.")},terminate(){if(!e){e=!0;for(const n of t)n();t.clear()}}}}function Xn(e){const t=st(e);if(t){t.assertAlive();const o=t.sandbox;return Xn(Ee(o.withAuth(null),{source:{kind:"app"},authLens:{mode:"admin"}}))}const n=Dt(e)?e:e.withAuth(null),s=n.sandbox,i={kind:"sandbox",db:In(n),sandbox:s};return{[F]:i}}function Dt(e){return e instanceof Zt}function Kn(e){if(e===null||typeof e!="object")return!1;const t=e;return typeof t.withAuth=="function"&&typeof t.onCurrentUserChanged=="function"&&"currentUser"in t&&"admin"in t}function Ze(e,t=()=>e.currentUser){return()=>{const n=t(),s=Ee(e.withAuth(n),{source:{kind:"app"},authLens:{mode:"app-session"}});return Et(s)}}function Zn(e,t,n,s){const r=en(e,t,n,s);if(r.length===0)return[{}];const i=[];for(const o of r)i.push(new tn(...o.path),o.value);return i}async function ls(e,t,n){const s=C(e);return se(oe(s,e,"setDoc","operation"),async()=>{const r=qe(e),i=r?r.toFirestore(t):t;return L(s).runWrite(()=>ie(()=>Pe(s,e).set(i,n)),e.path)})}function hs(e,t,...n){const s=C(e),r=Zn("updateDoc",e.path,t,n);return se(oe(s,e,"updateDoc","operation"),async()=>L(s).runWrite(()=>ie(()=>Pe(s,e).update(...r)),e.path))}async function fs(e){const t=C(e);return se(oe(t,e,"deleteDoc","operation"),async()=>L(t).runWrite(()=>ie(()=>Pe(t,e).delete()),e.path))}async function ps(e,t){const n=C(e);return se(oe(n,e,"addDoc","operation"),async()=>{const s=qe(e),r=s?s.toFirestore(t):t,i=await L(n).runWrite(async()=>{const c=await ie(()=>Bn(n,e).add(r));return L(n).cachePath(c.path),c}),o=i.path,a=Q(i,n,c=>c.doc(o));if(M(a,Re("reference",o)),Oe(a,o,n,a),s){const c=Ve(a,n,s);return Fe(a,c),c}return a})}export{us as A,kn as B,On as C,Ln as D,xe as E,Q as F,Ft as G,as as H,ps as I,hs as J,fs as K,ts as L,rn as M,se as N,Xn as O,ln as Q,F as T,sn as a,fe as b,L as c,os as d,qe as e,ds as f,Jn as g,At as h,ns as i,W as j,U as k,ct as l,ut as m,oe as n,C as o,cs as p,Pe as q,st as r,ls as s,Un as t,R as u,ss as v,ie as w,is as x,rs as y,Be as z};
@@ -1,512 +0,0 @@
1
- import { spawn, type ChildProcess } from 'node:child_process';
2
- import { randomUUID } from 'node:crypto';
3
- import { existsSync, readFileSync } from 'node:fs';
4
- import { createRequire } from 'node:module';
5
- import { dirname, extname, join, resolve } from 'node:path';
6
- import { fileURLToPath, pathToFileURL } from 'node:url';
7
- import type { WorkerOpPayload, WorkerSubPayload } from '../bridge/protocol.js';
8
- import {
9
- createRemoteSandboxHandle,
10
- type RemoteSandbox,
11
- type RemoteSandboxChannel,
12
- } from '../remote/index.js';
13
- import {
14
- startOnValueCreatedExecution,
15
- type OnValueCreatedExecutionHost,
16
- } from './execution.js';
17
- import {
18
- inspectOnValueCreated,
19
- listFirebaseEndpoints,
20
- } from './discovery.js';
21
- import type { CreatedExecutionResult } from './event.js';
22
- import { RemoteRtdbTriggerDelivery } from './remote-delivery.js';
23
-
24
- export interface SerializedFunctionsRtdbError {
25
- name: string;
26
- message: string;
27
- stack?: string;
28
- }
29
-
30
- export type FunctionsRtdbChildEvent =
31
- | {
32
- type: 'execution';
33
- exportName: string;
34
- ref: string;
35
- params: Record<string, string>;
36
- status: 'fulfilled';
37
- }
38
- | {
39
- type: 'execution';
40
- exportName: string;
41
- ref: string;
42
- params: Record<string, string>;
43
- status: 'rejected';
44
- error: SerializedFunctionsRtdbError;
45
- }
46
- | {
47
- type: 'delivery-error';
48
- exportName: string;
49
- error: SerializedFunctionsRtdbError;
50
- };
51
-
52
- export interface FunctionsRtdbChildReady {
53
- triggerCount: number;
54
- unsupportedTriggers: UnsupportedFunctionsTrigger[];
55
- }
56
-
57
- export interface UnsupportedFunctionsTrigger {
58
- exportName: string;
59
- eventType: string;
60
- }
61
-
62
- export interface SpawnFunctionsRtdbChildOptions {
63
- cwd: string;
64
- entry: string;
65
- env: NodeJS.ProcessEnv;
66
- instance: string;
67
- location: string;
68
- databaseHost?: string;
69
- /** The project the child runs as, from `resolveFirebaseProject`. */
70
- projectId: string;
71
- childModuleUrl?: string | URL;
72
- nodeExecutable?: string;
73
- onEvent?(event: FunctionsRtdbChildEvent): void;
74
- }
75
-
76
- export interface FunctionsRtdbChildHandle {
77
- child: ChildProcess;
78
- ready: Promise<FunctionsRtdbChildReady>;
79
- exited: Promise<number>;
80
- stop(): Promise<number>;
81
- }
82
-
83
- type FunctionsRtdbChildMessage =
84
- | ({ type: 'ready' } & FunctionsRtdbChildReady)
85
- | FunctionsRtdbChildEvent
86
- | { type: 'fatal'; error: SerializedFunctionsRtdbError }
87
- | { type: 'stopped' };
88
-
89
- const FORCE_KILL_AFTER_MS = 2_000;
90
-
91
- function serializeError(error: unknown): SerializedFunctionsRtdbError {
92
- if (error instanceof Error) {
93
- return {
94
- name: error.name,
95
- message: error.message,
96
- ...(error.stack === undefined ? {} : { stack: error.stack }),
97
- };
98
- }
99
- return { name: 'Error', message: String(error) };
100
- }
101
-
102
- function isChildMessage(value: unknown): value is FunctionsRtdbChildMessage {
103
- return typeof value === 'object' && value !== null && 'type' in value;
104
- }
105
-
106
- export interface FunctionsChildEnvOptions {
107
- baseEnv: NodeJS.ProcessEnv;
108
- entry: string;
109
- instance: string;
110
- location: string;
111
- databaseHost: string;
112
- projectId: string;
113
- }
114
-
115
- /**
116
- * Resolve the database host, defaulting to 'firebasedatabase.app'.
117
- */
118
- export function resolveChildDatabaseHost(databaseHost?: string): string {
119
- if (typeof databaseHost === 'string' && databaseHost.length > 0) {
120
- return databaseHost;
121
- }
122
- return 'firebasedatabase.app';
123
- }
124
-
125
- /**
126
- * Resolve the filesystem path to the child entrypoint module.
127
- */
128
- export function resolveChildModulePath(childModuleUrl?: string | URL): string {
129
- if (!childModuleUrl) {
130
- return fileURLToPath(new URL('./child.js', import.meta.url));
131
- }
132
- if (typeof childModuleUrl === 'string' && !childModuleUrl.startsWith('file:')) {
133
- return resolve(childModuleUrl);
134
- }
135
- return fileURLToPath(childModuleUrl);
136
- }
137
-
138
- /**
139
- * Assemble the child process environment variables.
140
- *
141
- * Guaranteed child-only synthetic sandbox metadata:
142
- * - GCLOUD_PROJECT is set to the resolved sandbox project ID
143
- * - FIREBASE_CONFIG is set to synthetic JSON with projectId, databaseURL, and storageBucket
144
- *
145
- * Explicit control flow ensures that host environment cannot pollute or route
146
- * sandbox functions execution to a production Firebase/GCP project.
147
- */
148
- export function buildFunctionsChildEnv(options: FunctionsChildEnvOptions): NodeJS.ProcessEnv {
149
- const { baseEnv, entry, instance, location, databaseHost, projectId } = options;
150
-
151
- const resolvedEntry = resolve(entry);
152
- const databaseURL = `https://${instance}.${databaseHost}`;
153
- const storageBucket = `${projectId}.appspot.com`;
154
-
155
- const syntheticFirebaseConfig = JSON.stringify({
156
- projectId,
157
- databaseURL,
158
- storageBucket,
159
- });
160
-
161
- const childEnv: NodeJS.ProcessEnv = {
162
- ...baseEnv,
163
- PYRIC_FUNCTIONS_RTDB_CHILD: '1',
164
- PYRIC_FUNCTIONS_ENTRY: resolvedEntry,
165
- PYRIC_FUNCTIONS_INSTANCE: instance,
166
- PYRIC_FUNCTIONS_LOCATION: location,
167
- PYRIC_FUNCTIONS_DATABASE_HOST: databaseHost,
168
- GCLOUD_PROJECT: projectId,
169
- FIREBASE_CONFIG: syntheticFirebaseConfig,
170
- };
171
-
172
- return childEnv;
173
- }
174
-
175
- /** Spawn the real Firebase Functions SDK in an isolated Node process. */
176
- export function spawnFunctionsRtdbChild(
177
- options: SpawnFunctionsRtdbChildOptions,
178
- ): FunctionsRtdbChildHandle {
179
- const childModulePath = resolveChildModulePath(options.childModuleUrl);
180
- const { projectId } = options;
181
- const databaseHost = resolveChildDatabaseHost(options.databaseHost);
182
- const childEnv = buildFunctionsChildEnv({
183
- baseEnv: options.env,
184
- entry: options.entry,
185
- instance: options.instance,
186
- location: options.location,
187
- databaseHost,
188
- projectId,
189
- });
190
-
191
- const nodeExecutable = options.nodeExecutable ?? 'node';
192
- const child = spawn(nodeExecutable, [childModulePath], {
193
- cwd: options.cwd,
194
- env: childEnv,
195
- stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
196
- });
197
-
198
- let readySettled = false;
199
- let stopping = false;
200
- let stderr = '';
201
- child.stderr?.setEncoding('utf8');
202
- child.stderr?.on('data', (chunk: string) => {
203
- stderr = `${stderr}${chunk}`.slice(-8_192);
204
- });
205
-
206
- let resolveReady!: (ready: FunctionsRtdbChildReady) => void;
207
- let rejectReady!: (error: Error) => void;
208
- const ready = new Promise<FunctionsRtdbChildReady>((resolvePromise, rejectPromise) => {
209
- resolveReady = resolvePromise;
210
- rejectReady = rejectPromise;
211
- });
212
-
213
- child.on('message', (raw: unknown) => {
214
- if (!isChildMessage(raw)) return;
215
- if (raw.type === 'ready') {
216
- readySettled = true;
217
- resolveReady({
218
- triggerCount: raw.triggerCount,
219
- unsupportedTriggers: raw.unsupportedTriggers,
220
- });
221
- } else if (raw.type === 'fatal') {
222
- if (!readySettled) {
223
- readySettled = true;
224
- rejectReady(new Error(
225
- `Functions RTDB child failed: ${raw.error.stack ?? raw.error.message}`,
226
- ));
227
- }
228
- } else if (raw.type === 'execution' || raw.type === 'delivery-error') {
229
- options.onEvent?.(raw);
230
- }
231
- });
232
-
233
- let forceTimer: ReturnType<typeof setTimeout> | undefined;
234
- const exited = new Promise<number>((resolveExited) => {
235
- child.once('error', (error) => {
236
- if (!readySettled) {
237
- readySettled = true;
238
- rejectReady(error);
239
- }
240
- });
241
- child.once('close', (code, signal) => {
242
- if (forceTimer !== undefined) clearTimeout(forceTimer);
243
- const exitCode = typeof code === 'number' ? code : signal ? 1 : 0;
244
- if (!readySettled) {
245
- readySettled = true;
246
- const diagnostic = stderr.trim();
247
- rejectReady(new Error(
248
- `Functions RTDB child exited before ready (code ${exitCode})` +
249
- (diagnostic ? `\n${diagnostic}` : ''),
250
- ));
251
- }
252
- resolveExited(exitCode);
253
- });
254
- });
255
-
256
- return {
257
- child,
258
- ready,
259
- exited,
260
- async stop(): Promise<number> {
261
- if (child.exitCode !== null || child.signalCode !== null) return exited;
262
- if (!stopping) {
263
- stopping = true;
264
- if (child.connected) child.send({ type: 'stop' });
265
- else child.kill('SIGTERM');
266
- forceTimer = setTimeout(() => {
267
- if (child.exitCode === null && child.signalCode === null) child.kill('SIGKILL');
268
- }, FORCE_KILL_AFTER_MS);
269
- forceTimer.unref();
270
- }
271
- return exited;
272
- },
273
- };
274
- }
275
-
276
- interface AdminAppModule {
277
- initializeApp(): { sandbox: RemoteSandbox };
278
- deleteApp(app: unknown): Promise<void>;
279
- }
280
-
281
- function send(message: FunctionsRtdbChildMessage): void {
282
- process.send?.(message);
283
- }
284
-
285
- /** The current instant of the sandbox this child is attached to. */
286
- async function sandboxNow(sandbox: RemoteSandbox): Promise<number> {
287
- const read = (await sandbox.channel.op({ method: 'sandbox.clock' })) as { now: number };
288
- return read.now;
289
- }
290
-
291
- function usesCommonJs(entry: string): boolean {
292
- const extension = extname(entry);
293
- if (extension === '.cjs') return true;
294
- if (extension === '.mjs') return false;
295
-
296
- let directory = dirname(entry);
297
- while (true) {
298
- const packageJsonPath = join(directory, 'package.json');
299
- if (existsSync(packageJsonPath)) {
300
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as {
301
- type?: unknown;
302
- };
303
- return packageJson.type !== 'module';
304
- }
305
- const parent = dirname(directory);
306
- if (parent === directory) return true;
307
- directory = parent;
308
- }
309
- }
310
-
311
- /** Load the entry with the semantics selected by its extension and package scope. */
312
- async function loadFunctionsExports(entry: string): Promise<Record<string, unknown>> {
313
- if (usesCommonJs(entry)) {
314
- return createRequire(entry)(entry) as Record<string, unknown>;
315
- }
316
- return await import(pathToFileURL(entry).href) as Record<string, unknown>;
317
- }
318
-
319
- /**
320
- * The configured instance name is the name of the default instance: the
321
- * `functions.instance` option renames `<projectId>-default-rtdb`, and the host
322
- * serves that instance without a name. Wrap the remote sandbox factory that
323
- * `@pyric/cli/register` installs so every RTDB op and value subscription this
324
- * child sends for `name`, from firebase-admin or from trigger delivery,
325
- * reaches the default instance.
326
- */
327
- function serveInstanceAsDefault(name: string): void {
328
- const key = Symbol.for('pyric.remote.sandboxFactory');
329
- const global = globalThis as Record<symbol, unknown>;
330
- const factory = global[key] as ((options?: { url?: string }) => RemoteSandbox) | undefined;
331
- if (typeof factory !== 'function') return;
332
- global[key] = (options?: { url?: string }): RemoteSandbox => {
333
- const inner = factory(options);
334
- return createRemoteSandboxHandle({
335
- channel: aliasDefaultInstance(inner.channel, name),
336
- serveUrl: inner.serveUrl,
337
- close: () => inner.close(),
338
- });
339
- };
340
- }
341
-
342
- /** A channel that sends `instance: name` as the default instance. */
343
- function aliasDefaultInstance(channel: RemoteSandboxChannel, name: string): RemoteSandboxChannel {
344
- const alias = (instance: unknown): unknown => (instance === name ? undefined : instance);
345
- return {
346
- op: (payload) => channel.op(
347
- 'instance' in payload ? { ...payload, instance: alias(payload.instance) } as WorkerOpPayload : payload,
348
- ),
349
- subscribe: (sub, onSnap, onError) => {
350
- const target = sub.target;
351
- const isRtdb = typeof target === 'object' && target !== null && 'service' in target && target.service === 'rtdb';
352
- const aliased = isRtdb ? { ...sub, target: { ...target, instance: alias(target.instance) } } as WorkerSubPayload : sub;
353
- return channel.subscribe(aliased, onSnap, onError);
354
- },
355
- byteRoute: () => channel.byteRoute?.() ?? Promise.resolve(undefined),
356
- };
357
- }
358
-
359
- async function runFunctionsRtdbChild(): Promise<void> {
360
- const entry = process.env.PYRIC_FUNCTIONS_ENTRY;
361
- const instance = process.env.PYRIC_FUNCTIONS_INSTANCE;
362
- const location = process.env.PYRIC_FUNCTIONS_LOCATION;
363
- const databaseHost = process.env.PYRIC_FUNCTIONS_DATABASE_HOST;
364
- if (!entry || !instance || !location || !databaseHost) {
365
- throw new Error('Functions RTDB child is missing its required environment');
366
- }
367
-
368
- const requireFromEntry = createRequire(entry);
369
- const adminApp = requireFromEntry('firebase-admin/app') as AdminAppModule;
370
- serveInstanceAsDefault(instance);
371
- const app = adminApp.initializeApp();
372
- let host: OnValueCreatedExecutionHost | undefined;
373
- let closing: Promise<void> | undefined;
374
-
375
- const close = (): Promise<void> => {
376
- if (closing) return closing;
377
- closing = (async () => {
378
- host?.close();
379
- await host?.idle();
380
- app.sandbox.close();
381
- await adminApp.deleteApp(app);
382
- })();
383
- return closing;
384
- };
385
-
386
- const shutdown = async (): Promise<void> => {
387
- await close();
388
- send({ type: 'stopped' });
389
- process.disconnect?.();
390
- };
391
-
392
- process.once('message', (raw: unknown) => {
393
- if (isChildMessage(raw) && raw.type === 'stopped') return;
394
- if (typeof raw === 'object' && raw !== null && 'type' in raw && raw.type === 'stop') {
395
- void shutdown().catch((error) => {
396
- send({ type: 'fatal', error: serializeError(error) });
397
- process.exitCode = 1;
398
- process.disconnect?.();
399
- });
400
- }
401
- });
402
- process.once('SIGINT', () => void shutdown());
403
- process.once('SIGTERM', () => void shutdown());
404
-
405
- try {
406
- // The real database provider asks firebase-admin/app for its default app
407
- // when it wraps a raw CloudEvent. Initializing that app before loading the
408
- // user's module avoids importing the broad firebase-functions/v2 barrel.
409
- const exported = await loadFunctionsExports(entry);
410
- const effectiveInstances = [...new Set(
411
- inspectOnValueCreated(exported).triggers.map((trigger) =>
412
- trigger.instance === '*' ? instance : trigger.instance,
413
- ),
414
- )].sort();
415
- if (effectiveInstances.length > 1) {
416
- throw new Error(
417
- 'Functions RTDB first slice supports one database instance; found ' +
418
- effectiveInstances.join(', '),
419
- );
420
- }
421
- // Deliver from the instance the triggers name.
422
- const rtdb = app.sandbox.rtdb.forInstance(effectiveInstances[0] ?? instance);
423
- host = startOnValueCreatedExecution({
424
- exported,
425
- delivery: new RemoteRtdbTriggerDelivery(rtdb),
426
- eventOptions: async (_projection, sequence, trigger) => ({
427
- id: `${randomUUID()}-${sequence}`,
428
- // The delivery's instant is the sandbox's, not this process's: the
429
- // write that triggered it was stamped by that clock, and a CloudEvent
430
- // claiming a different `time` would contradict the data it carries.
431
- time: new Date(await sandboxNow(app.sandbox)).toISOString(),
432
- instance: trigger.instance === '*' ? instance : trigger.instance,
433
- location: trigger.location ?? location,
434
- databaseHost,
435
- }),
436
- onExecution(result, trigger, projection) {
437
- sendExecution(result, trigger.exportName, projection.ref, projection.params);
438
- },
439
- onDeliveryError(error, trigger) {
440
- send({
441
- type: 'delivery-error',
442
- exportName: trigger.exportName,
443
- error: serializeError(error),
444
- });
445
- },
446
- });
447
- await host.ready;
448
- send({
449
- type: 'ready',
450
- triggerCount: host.triggerCount,
451
- unsupportedTriggers: findUnsupportedTriggers(exported),
452
- });
453
- } catch (error) {
454
- await close();
455
- throw error;
456
- }
457
- }
458
-
459
- function findUnsupportedTriggers(exported: Record<string, unknown>): UnsupportedFunctionsTrigger[] {
460
- const unsupported: UnsupportedFunctionsTrigger[] = [
461
- ...inspectOnValueCreated(exported).unsupported,
462
- ];
463
- for (const { exportName, callable } of listFirebaseEndpoints(exported)) {
464
- const endpoint = callable.__endpoint;
465
- if (!endpoint) continue;
466
- const eventType = endpoint.eventTrigger?.eventType;
467
- if (eventType === 'google.firebase.database.ref.v1.created') continue;
468
- const label = typeof eventType === 'string'
469
- ? eventType
470
- : endpoint.callableTrigger !== undefined
471
- ? 'callable'
472
- : endpoint.httpsTrigger !== undefined
473
- ? 'https'
474
- : endpoint.scheduleTrigger !== undefined
475
- ? 'schedule'
476
- : endpoint.taskQueueTrigger !== undefined
477
- ? 'task-queue'
478
- : 'unknown';
479
- unsupported.push({ exportName, eventType: label });
480
- }
481
- return unsupported;
482
- }
483
-
484
- function sendExecution(
485
- result: CreatedExecutionResult,
486
- exportName: string,
487
- ref: string,
488
- params: Record<string, string>,
489
- ): void {
490
- if (result.status === 'fulfilled') {
491
- send({ type: 'execution', exportName, ref, params, status: 'fulfilled' });
492
- } else {
493
- send({
494
- type: 'execution',
495
- exportName,
496
- ref,
497
- params,
498
- status: 'rejected',
499
- error: serializeError(result.error),
500
- });
501
- }
502
- }
503
-
504
- if (process.env.PYRIC_FUNCTIONS_RTDB_CHILD === '1') {
505
- void runFunctionsRtdbChild().catch((error) => {
506
- const serialized = serializeError(error);
507
- send({ type: 'fatal', error: serialized });
508
- process.stderr.write(`${serialized.stack ?? `${serialized.name}: ${serialized.message}`}\n`);
509
- process.exitCode = 1;
510
- process.disconnect?.();
511
- });
512
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * Masking an upstream Gemini error before the gemini proxy relays it to the
3
- * browser (#1584). An upstream or a gateway can quote the credential it was
4
- * sent in any form: in the URL (`?key=`, `&key=`, JSON-escaped or
5
- * percent-encoded), in plain text, or in an echoed header such as
6
- * `x-goog-api-key` or `Authorization: Bearer`. So the proxy removes the exact
7
- * credentials the request carried, raw and percent-encoded, then runs
8
- * `redactUrl` as a second pass for any other credential parameter.
9
- *
10
- * A JSON body is masked value by value and serialized again, so the
11
- * browser engine still reads Gemini's own status and message. Text
12
- * redaction over the raw JSON could eat a closing quote and leave the
13
- * envelope unparseable.
14
- */
15
- import { redactUrl } from 'pyric/ai/internal';
16
-
17
- const MASK = '***';
18
-
19
- /** The forms a credential can appear in, longest first. */
20
- function quotedForms(credential: string): string[] {
21
- const forms = new Set([encodeURIComponent(credential), credential]);
22
- return [...forms].sort((a, b) => b.length - a.length);
23
- }
24
-
25
- function redactText(text: string, credentials: readonly string[]): string {
26
- let masked = text;
27
- for (const credential of credentials) {
28
- for (const form of quotedForms(credential)) masked = masked.split(form).join(MASK);
29
- }
30
- return redactUrl(masked);
31
- }
32
-
33
- function redactValue(value: unknown, credentials: readonly string[]): unknown {
34
- if (typeof value === 'string') return redactText(value, credentials);
35
- if (Array.isArray(value)) return value.map((item) => redactValue(item, credentials));
36
- const isObject = value !== null && typeof value === 'object';
37
- if (!isObject) return value;
38
- const entries = Object.entries(value as Record<string, unknown>)
39
- .map(([key, item]) => [redactText(key, credentials), redactValue(item, credentials)]);
40
- return Object.fromEntries(entries);
41
- }
42
-
43
- /** The JSON value `text` holds, or undefined when it is not JSON. */
44
- function parseJson(text: string): { value: unknown } | undefined {
45
- try {
46
- return { value: JSON.parse(text) as unknown };
47
- } catch {
48
- return undefined;
49
- }
50
- }
51
-
52
- /**
53
- * `text` with every credential in `credentials` removed, and every
54
- * credential URL parameter masked. A JSON body stays JSON.
55
- */
56
- export function redactUpstreamError(text: string, credentials: readonly string[]): string {
57
- const json = parseJson(text);
58
- if (json === undefined) return redactText(text, credentials);
59
- return JSON.stringify(redactValue(json.value, credentials));
60
- }