@pyric/cli 0.1.0-alpha.9

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 (1169) hide show
  1. package/LICENSE +216 -0
  2. package/README.md +156 -0
  3. package/README.md.orig +138 -0
  4. package/dist/assurance/attachment.d.ts +24 -0
  5. package/dist/assurance/attachment.d.ts.map +1 -0
  6. package/dist/assurance/attachment.js +138 -0
  7. package/dist/assurance/attachment.js.map +1 -0
  8. package/dist/assurance/browser.d.ts +7 -0
  9. package/dist/assurance/browser.d.ts.map +1 -0
  10. package/dist/assurance/browser.js +68 -0
  11. package/dist/assurance/browser.js.map +1 -0
  12. package/dist/assurance/campaign.d.ts +41 -0
  13. package/dist/assurance/campaign.d.ts.map +1 -0
  14. package/dist/assurance/campaign.js +364 -0
  15. package/dist/assurance/campaign.js.map +1 -0
  16. package/dist/assurance/capabilities.d.ts +7 -0
  17. package/dist/assurance/capabilities.d.ts.map +1 -0
  18. package/dist/assurance/capabilities.js +295 -0
  19. package/dist/assurance/capabilities.js.map +1 -0
  20. package/dist/assurance/cases.d.ts +14 -0
  21. package/dist/assurance/cases.d.ts.map +1 -0
  22. package/dist/assurance/cases.js +27 -0
  23. package/dist/assurance/cases.js.map +1 -0
  24. package/dist/assurance/generated-capabilities.d.ts +52 -0
  25. package/dist/assurance/generated-capabilities.d.ts.map +1 -0
  26. package/dist/assurance/generated-capabilities.js +329 -0
  27. package/dist/assurance/generated-capabilities.js.map +1 -0
  28. package/dist/assurance/index.d.ts +11 -0
  29. package/dist/assurance/index.d.ts.map +1 -0
  30. package/dist/assurance/index.js +9 -0
  31. package/dist/assurance/index.js.map +1 -0
  32. package/dist/assurance/runner.d.ts +3 -0
  33. package/dist/assurance/runner.d.ts.map +1 -0
  34. package/dist/assurance/runner.js +633 -0
  35. package/dist/assurance/runner.js.map +1 -0
  36. package/dist/assurance/tool-names.d.ts +4 -0
  37. package/dist/assurance/tool-names.d.ts.map +1 -0
  38. package/dist/assurance/tool-names.js +14 -0
  39. package/dist/assurance/tool-names.js.map +1 -0
  40. package/dist/assurance/tools.d.ts +19 -0
  41. package/dist/assurance/tools.d.ts.map +1 -0
  42. package/dist/assurance/tools.js +740 -0
  43. package/dist/assurance/tools.js.map +1 -0
  44. package/dist/assurance/types.d.ts +348 -0
  45. package/dist/assurance/types.d.ts.map +1 -0
  46. package/dist/assurance/types.js +7 -0
  47. package/dist/assurance/types.js.map +1 -0
  48. package/dist/assurance/validation.d.ts +8 -0
  49. package/dist/assurance/validation.d.ts.map +1 -0
  50. package/dist/assurance/validation.js +269 -0
  51. package/dist/assurance/validation.js.map +1 -0
  52. package/dist/bridge/client/bridge.d.ts +133 -0
  53. package/dist/bridge/client/bridge.d.ts.map +1 -0
  54. package/dist/bridge/client/bridge.js +429 -0
  55. package/dist/bridge/client/bridge.js.map +1 -0
  56. package/dist/bridge/client/dispatch.d.ts +41 -0
  57. package/dist/bridge/client/dispatch.d.ts.map +1 -0
  58. package/dist/bridge/client/dispatch.js +111 -0
  59. package/dist/bridge/client/dispatch.js.map +1 -0
  60. package/dist/bridge/client.d.ts +24 -0
  61. package/dist/bridge/client.d.ts.map +1 -0
  62. package/dist/bridge/client.js +26 -0
  63. package/dist/bridge/client.js.map +1 -0
  64. package/dist/bridge/protocol.d.ts +227 -0
  65. package/dist/bridge/protocol.d.ts.map +1 -0
  66. package/dist/bridge/protocol.js +131 -0
  67. package/dist/bridge/protocol.js.map +1 -0
  68. package/dist/bridge/server/audit.d.ts +19 -0
  69. package/dist/bridge/server/audit.d.ts.map +1 -0
  70. package/dist/bridge/server/audit.js +46 -0
  71. package/dist/bridge/server/audit.js.map +1 -0
  72. package/dist/bridge/server/bridge.d.ts +126 -0
  73. package/dist/bridge/server/bridge.d.ts.map +1 -0
  74. package/dist/bridge/server/bridge.js +383 -0
  75. package/dist/bridge/server/bridge.js.map +1 -0
  76. package/dist/bridge/server/headless.d.ts +36 -0
  77. package/dist/bridge/server/headless.d.ts.map +1 -0
  78. package/dist/bridge/server/headless.js +142 -0
  79. package/dist/bridge/server/headless.js.map +1 -0
  80. package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
  81. package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
  82. package/dist/bridge/server/json-schema-to-zod.js +93 -0
  83. package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
  84. package/dist/bridge/server/local-bridge.d.ts +33 -0
  85. package/dist/bridge/server/local-bridge.d.ts.map +1 -0
  86. package/dist/bridge/server/local-bridge.js +41 -0
  87. package/dist/bridge/server/local-bridge.js.map +1 -0
  88. package/dist/bridge/server/logger.d.ts +28 -0
  89. package/dist/bridge/server/logger.d.ts.map +1 -0
  90. package/dist/bridge/server/logger.js +42 -0
  91. package/dist/bridge/server/logger.js.map +1 -0
  92. package/dist/bridge/server/mcp-contract.d.ts +21 -0
  93. package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
  94. package/dist/bridge/server/mcp-contract.js +62 -0
  95. package/dist/bridge/server/mcp-contract.js.map +1 -0
  96. package/dist/bridge/server/mcp.d.ts +26 -0
  97. package/dist/bridge/server/mcp.d.ts.map +1 -0
  98. package/dist/bridge/server/mcp.js +102 -0
  99. package/dist/bridge/server/mcp.js.map +1 -0
  100. package/dist/bridge/server/peer.d.ts +39 -0
  101. package/dist/bridge/server/peer.d.ts.map +1 -0
  102. package/dist/bridge/server/peer.js +189 -0
  103. package/dist/bridge/server/peer.js.map +1 -0
  104. package/dist/bridge/server/standalone.d.ts +49 -0
  105. package/dist/bridge/server/standalone.d.ts.map +1 -0
  106. package/dist/bridge/server/standalone.js +267 -0
  107. package/dist/bridge/server/standalone.js.map +1 -0
  108. package/dist/bridge/server/tool-metadata.d.ts +38 -0
  109. package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
  110. package/dist/bridge/server/tool-metadata.js +81 -0
  111. package/dist/bridge/server/tool-metadata.js.map +1 -0
  112. package/dist/bridge/server.d.ts +21 -0
  113. package/dist/bridge/server.d.ts.map +1 -0
  114. package/dist/bridge/server.js +18 -0
  115. package/dist/bridge/server.js.map +1 -0
  116. package/dist/cli/database-rules.d.ts +43 -0
  117. package/dist/cli/database-rules.d.ts.map +1 -0
  118. package/dist/cli/database-rules.js +261 -0
  119. package/dist/cli/database-rules.js.map +1 -0
  120. package/dist/cli/dev-runner.d.ts +112 -0
  121. package/dist/cli/dev-runner.d.ts.map +1 -0
  122. package/dist/cli/dev-runner.js +239 -0
  123. package/dist/cli/dev-runner.js.map +1 -0
  124. package/dist/cli/firebase-json.d.ts +66 -0
  125. package/dist/cli/firebase-json.d.ts.map +1 -0
  126. package/dist/cli/firebase-json.js +60 -0
  127. package/dist/cli/firebase-json.js.map +1 -0
  128. package/dist/cli/firestore-indexes.d.ts +21 -0
  129. package/dist/cli/firestore-indexes.d.ts.map +1 -0
  130. package/dist/cli/firestore-indexes.js +39 -0
  131. package/dist/cli/firestore-indexes.js.map +1 -0
  132. package/dist/cli/index.d.ts +56 -0
  133. package/dist/cli/index.d.ts.map +1 -0
  134. package/dist/cli/index.js +379 -0
  135. package/dist/cli/index.js.map +1 -0
  136. package/dist/cli/init.d.ts +50 -0
  137. package/dist/cli/init.d.ts.map +1 -0
  138. package/dist/cli/init.js +182 -0
  139. package/dist/cli/init.js.map +1 -0
  140. package/dist/cli/mcp-proxy.d.ts +10 -0
  141. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  142. package/dist/cli/mcp-proxy.js +129 -0
  143. package/dist/cli/mcp-proxy.js.map +1 -0
  144. package/dist/cli/parse-args.d.ts +20 -0
  145. package/dist/cli/parse-args.d.ts.map +1 -0
  146. package/dist/cli/parse-args.js +69 -0
  147. package/dist/cli/parse-args.js.map +1 -0
  148. package/dist/cli/rules.d.ts +55 -0
  149. package/dist/cli/rules.d.ts.map +1 -0
  150. package/dist/cli/rules.js +199 -0
  151. package/dist/cli/rules.js.map +1 -0
  152. package/dist/cli/scope.d.ts +12 -0
  153. package/dist/cli/scope.d.ts.map +1 -0
  154. package/dist/cli/scope.js +44 -0
  155. package/dist/cli/scope.js.map +1 -0
  156. package/dist/cli/serve.d.ts +122 -0
  157. package/dist/cli/serve.d.ts.map +1 -0
  158. package/dist/cli/serve.js +844 -0
  159. package/dist/cli/serve.js.map +1 -0
  160. package/dist/cli/service-commands.d.ts +8 -0
  161. package/dist/cli/service-commands.d.ts.map +1 -0
  162. package/dist/cli/service-commands.js +58 -0
  163. package/dist/cli/service-commands.js.map +1 -0
  164. package/dist/cli/snapshot.d.ts +22 -0
  165. package/dist/cli/snapshot.d.ts.map +1 -0
  166. package/dist/cli/snapshot.js +139 -0
  167. package/dist/cli/snapshot.js.map +1 -0
  168. package/dist/cli/storage-rules.d.ts +21 -0
  169. package/dist/cli/storage-rules.d.ts.map +1 -0
  170. package/dist/cli/storage-rules.js +121 -0
  171. package/dist/cli/storage-rules.js.map +1 -0
  172. package/dist/cli/verify.d.ts +23 -0
  173. package/dist/cli/verify.d.ts.map +1 -0
  174. package/dist/cli/verify.js +349 -0
  175. package/dist/cli/verify.js.map +1 -0
  176. package/dist/credentials/core/memoize-ttl.d.ts +58 -0
  177. package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
  178. package/dist/credentials/core/memoize-ttl.js +88 -0
  179. package/dist/credentials/core/memoize-ttl.js.map +1 -0
  180. package/dist/credentials/core/types.d.ts +11 -0
  181. package/dist/credentials/core/types.d.ts.map +1 -0
  182. package/dist/credentials/core/types.js +2 -0
  183. package/dist/credentials/core/types.js.map +1 -0
  184. package/dist/credentials/node/from-adc.d.ts +10 -0
  185. package/dist/credentials/node/from-adc.d.ts.map +1 -0
  186. package/dist/credentials/node/from-adc.js +76 -0
  187. package/dist/credentials/node/from-adc.js.map +1 -0
  188. package/dist/credentials/node/from-service-account.d.ts +24 -0
  189. package/dist/credentials/node/from-service-account.d.ts.map +1 -0
  190. package/dist/credentials/node/from-service-account.js +108 -0
  191. package/dist/credentials/node/from-service-account.js.map +1 -0
  192. package/dist/credentials/node/index.d.ts +7 -0
  193. package/dist/credentials/node/index.d.ts.map +1 -0
  194. package/dist/credentials/node/index.js +7 -0
  195. package/dist/credentials/node/index.js.map +1 -0
  196. package/dist/discover/concurrency.d.ts +42 -0
  197. package/dist/discover/concurrency.d.ts.map +1 -0
  198. package/dist/discover/concurrency.js +113 -0
  199. package/dist/discover/concurrency.js.map +1 -0
  200. package/dist/discover/crawler-adapter.d.ts +48 -0
  201. package/dist/discover/crawler-adapter.d.ts.map +1 -0
  202. package/dist/discover/crawler-adapter.js +92 -0
  203. package/dist/discover/crawler-adapter.js.map +1 -0
  204. package/dist/discover/crawler.d.ts +294 -0
  205. package/dist/discover/crawler.d.ts.map +1 -0
  206. package/dist/discover/crawler.js +764 -0
  207. package/dist/discover/crawler.js.map +1 -0
  208. package/dist/discover/credential-free.d.ts +19 -0
  209. package/dist/discover/credential-free.d.ts.map +1 -0
  210. package/dist/discover/credential-free.js +18 -0
  211. package/dist/discover/credential-free.js.map +1 -0
  212. package/dist/discover/findCollectionGroup.d.ts +44 -0
  213. package/dist/discover/findCollectionGroup.d.ts.map +1 -0
  214. package/dist/discover/findCollectionGroup.js +81 -0
  215. package/dist/discover/findCollectionGroup.js.map +1 -0
  216. package/dist/discover/firestore-source.d.ts +60 -0
  217. package/dist/discover/firestore-source.d.ts.map +1 -0
  218. package/dist/discover/firestore-source.js +11 -0
  219. package/dist/discover/firestore-source.js.map +1 -0
  220. package/dist/discover/index.d.ts +3 -0
  221. package/dist/discover/index.d.ts.map +1 -0
  222. package/dist/discover/index.js +5 -0
  223. package/dist/discover/index.js.map +1 -0
  224. package/dist/discover/merge.d.ts +108 -0
  225. package/dist/discover/merge.d.ts.map +1 -0
  226. package/dist/discover/merge.js +394 -0
  227. package/dist/discover/merge.js.map +1 -0
  228. package/dist/discover/session.d.ts +116 -0
  229. package/dist/discover/session.d.ts.map +1 -0
  230. package/dist/discover/session.js +331 -0
  231. package/dist/discover/session.js.map +1 -0
  232. package/dist/discover/tools.d.ts +58 -0
  233. package/dist/discover/tools.d.ts.map +1 -0
  234. package/dist/discover/tools.js +115 -0
  235. package/dist/discover/tools.js.map +1 -0
  236. package/dist/discover/types.d.ts +190 -0
  237. package/dist/discover/types.d.ts.map +1 -0
  238. package/dist/discover/types.js +12 -0
  239. package/dist/discover/types.js.map +1 -0
  240. package/dist/discover/wire.d.ts +70 -0
  241. package/dist/discover/wire.d.ts.map +1 -0
  242. package/dist/discover/wire.js +309 -0
  243. package/dist/discover/wire.js.map +1 -0
  244. package/dist/functions-rtdb/child.d.ts +52 -0
  245. package/dist/functions-rtdb/child.d.ts.map +1 -0
  246. package/dist/functions-rtdb/child.js +283 -0
  247. package/dist/functions-rtdb/child.js.map +1 -0
  248. package/dist/functions-rtdb/delivery.d.ts +4 -0
  249. package/dist/functions-rtdb/delivery.d.ts.map +1 -0
  250. package/dist/functions-rtdb/delivery.js +2 -0
  251. package/dist/functions-rtdb/delivery.js.map +1 -0
  252. package/dist/functions-rtdb/discovery.d.ts +41 -0
  253. package/dist/functions-rtdb/discovery.d.ts.map +1 -0
  254. package/dist/functions-rtdb/discovery.js +86 -0
  255. package/dist/functions-rtdb/discovery.js.map +1 -0
  256. package/dist/functions-rtdb/event.d.ts +20 -0
  257. package/dist/functions-rtdb/event.d.ts.map +1 -0
  258. package/dist/functions-rtdb/event.js +45 -0
  259. package/dist/functions-rtdb/event.js.map +1 -0
  260. package/dist/functions-rtdb/execution.d.ts +20 -0
  261. package/dist/functions-rtdb/execution.d.ts.map +1 -0
  262. package/dist/functions-rtdb/execution.js +70 -0
  263. package/dist/functions-rtdb/execution.js.map +1 -0
  264. package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
  265. package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
  266. package/dist/functions-rtdb/in-memory-delivery.js +36 -0
  267. package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
  268. package/dist/functions-rtdb/project.d.ts +7 -0
  269. package/dist/functions-rtdb/project.d.ts.map +1 -0
  270. package/dist/functions-rtdb/project.js +54 -0
  271. package/dist/functions-rtdb/project.js.map +1 -0
  272. package/dist/functions-rtdb/projection.d.ts +14 -0
  273. package/dist/functions-rtdb/projection.d.ts.map +1 -0
  274. package/dist/functions-rtdb/projection.js +65 -0
  275. package/dist/functions-rtdb/projection.js.map +1 -0
  276. package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
  277. package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
  278. package/dist/functions-rtdb/reference-pattern.js +14 -0
  279. package/dist/functions-rtdb/reference-pattern.js.map +1 -0
  280. package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
  281. package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
  282. package/dist/functions-rtdb/remote-delivery.js +11 -0
  283. package/dist/functions-rtdb/remote-delivery.js.map +1 -0
  284. package/dist/pkg-version.d.ts +2 -0
  285. package/dist/pkg-version.d.ts.map +1 -0
  286. package/dist/pkg-version.js +47 -0
  287. package/dist/pkg-version.js.map +1 -0
  288. package/dist/register/esm-exports.d.ts +26 -0
  289. package/dist/register/esm-exports.d.ts.map +1 -0
  290. package/dist/register/esm-exports.js +61 -0
  291. package/dist/register/esm-exports.js.map +1 -0
  292. package/dist/register/hooks.d.ts +13 -0
  293. package/dist/register/hooks.d.ts.map +1 -0
  294. package/dist/register/hooks.js +15 -0
  295. package/dist/register/hooks.js.map +1 -0
  296. package/dist/register/index.d.ts +5 -0
  297. package/dist/register/index.d.ts.map +1 -0
  298. package/dist/register/index.js +124 -0
  299. package/dist/register/index.js.map +1 -0
  300. package/dist/register/mapping.d.ts +19 -0
  301. package/dist/register/mapping.d.ts.map +1 -0
  302. package/dist/register/mapping.js +35 -0
  303. package/dist/register/mapping.js.map +1 -0
  304. package/dist/remote/index.d.ts +232 -0
  305. package/dist/remote/index.d.ts.map +1 -0
  306. package/dist/remote/index.js +720 -0
  307. package/dist/remote/index.js.map +1 -0
  308. package/dist/rtdb/crawl-snapshot.d.ts +17 -0
  309. package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
  310. package/dist/rtdb/crawl-snapshot.js +72 -0
  311. package/dist/rtdb/crawl-snapshot.js.map +1 -0
  312. package/dist/rtdb/inspection.d.ts +8 -0
  313. package/dist/rtdb/inspection.d.ts.map +1 -0
  314. package/dist/rtdb/inspection.js +111 -0
  315. package/dist/rtdb/inspection.js.map +1 -0
  316. package/dist/rtdb/load-rules-document.d.ts +25 -0
  317. package/dist/rtdb/load-rules-document.d.ts.map +1 -0
  318. package/dist/rtdb/load-rules-document.js +38 -0
  319. package/dist/rtdb/load-rules-document.js.map +1 -0
  320. package/dist/rtdb/rules-generation-tool.d.ts +4 -0
  321. package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
  322. package/dist/rtdb/rules-generation-tool.js +35 -0
  323. package/dist/rtdb/rules-generation-tool.js.map +1 -0
  324. package/dist/rtdb/rules-json.d.ts +8 -0
  325. package/dist/rtdb/rules-json.d.ts.map +1 -0
  326. package/dist/rtdb/rules-json.js +17 -0
  327. package/dist/rtdb/rules-json.js.map +1 -0
  328. package/dist/serve/bridge-mount.d.ts +36 -0
  329. package/dist/serve/bridge-mount.d.ts.map +1 -0
  330. package/dist/serve/bridge-mount.js +162 -0
  331. package/dist/serve/bridge-mount.js.map +1 -0
  332. package/dist/serve/bundler.d.ts +110 -0
  333. package/dist/serve/bundler.d.ts.map +1 -0
  334. package/dist/serve/bundler.js +432 -0
  335. package/dist/serve/bundler.js.map +1 -0
  336. package/dist/serve/capture-store.d.ts +27 -0
  337. package/dist/serve/capture-store.d.ts.map +1 -0
  338. package/dist/serve/capture-store.js +47 -0
  339. package/dist/serve/capture-store.js.map +1 -0
  340. package/dist/serve/discovery.d.ts +71 -0
  341. package/dist/serve/discovery.d.ts.map +1 -0
  342. package/dist/serve/discovery.js +158 -0
  343. package/dist/serve/discovery.js.map +1 -0
  344. package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
  345. package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
  346. package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
  347. package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
  348. package/dist/serve/docs-ui/docs/api-reference.md +67 -0
  349. package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
  350. package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
  351. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
  352. package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
  353. package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
  354. package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
  355. package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
  356. package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
  357. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
  358. package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
  359. package/dist/serve/docs-ui/docs/index.html +2 -0
  360. package/dist/serve/docs-ui/docs/index.json +18637 -0
  361. package/dist/serve/docs-ui/docs/overview/index.html +23 -0
  362. package/dist/serve/docs-ui/docs/overview.md +40 -0
  363. package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
  364. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
  365. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
  366. package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
  367. package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
  368. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
  369. package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
  370. package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
  371. package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
  372. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
  373. package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
  374. package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
  375. package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
  376. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
  377. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
  378. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
  379. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
  380. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
  381. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
  382. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
  383. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
  384. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
  385. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
  386. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
  387. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
  388. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
  389. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
  390. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
  391. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
  392. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
  393. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
  394. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
  395. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
  396. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
  397. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
  398. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
  399. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
  400. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
  401. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
  402. package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
  403. package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
  404. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
  405. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
  406. package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
  407. package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
  408. package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
  409. package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
  410. package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
  411. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
  412. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
  413. package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
  414. package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
  415. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
  416. package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
  417. package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
  418. package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
  419. package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
  420. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
  421. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
  422. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
  423. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
  424. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
  425. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
  426. package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
  427. package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
  428. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
  429. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
  430. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
  431. package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
  432. package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
  433. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
  434. package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
  435. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
  436. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
  437. package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
  438. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
  439. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
  440. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
  441. package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
  442. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
  443. package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
  444. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
  445. package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
  446. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
  447. package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
  448. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
  449. package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
  450. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
  451. package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
  452. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
  453. package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
  454. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
  455. package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
  456. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
  457. package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
  458. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
  459. package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
  460. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
  461. package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
  462. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
  463. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
  464. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
  465. package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
  466. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
  467. package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
  468. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
  469. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
  470. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
  471. package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
  472. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
  473. package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
  474. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
  475. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
  476. package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
  477. package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
  478. package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
  479. package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
  480. package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
  481. package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
  482. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
  483. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
  484. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
  485. package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
  486. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
  487. package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
  488. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
  489. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
  490. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
  491. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
  492. package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
  493. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
  494. package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
  495. package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
  496. package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
  497. package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
  498. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
  499. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
  500. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
  501. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
  502. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
  503. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
  504. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
  505. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
  506. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
  507. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
  508. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
  509. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
  510. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
  511. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
  512. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
  513. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
  514. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
  515. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
  516. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
  517. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
  518. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
  519. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
  520. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
  521. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
  522. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
  523. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
  524. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
  525. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
  526. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
  527. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
  528. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
  529. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
  530. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
  531. package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
  532. package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
  533. package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
  534. package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
  535. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
  536. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
  537. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
  538. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
  539. package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
  540. package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
  541. package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
  542. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
  543. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
  544. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
  545. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
  546. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
  547. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
  548. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
  549. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
  550. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
  551. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
  552. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
  553. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
  554. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
  555. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
  556. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
  557. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
  558. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
  559. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
  560. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
  561. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
  562. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
  563. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
  564. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
  565. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
  566. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
  567. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
  568. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
  569. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
  570. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
  571. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
  572. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
  573. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
  574. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
  575. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
  576. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
  577. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
  578. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
  579. package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
  580. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
  581. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
  582. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
  583. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
  584. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
  585. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
  586. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
  587. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
  588. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
  589. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
  590. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
  591. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
  592. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
  593. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
  594. package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
  595. package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
  596. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
  597. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
  598. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
  599. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
  600. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
  601. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
  602. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
  603. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
  604. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
  605. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
  606. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
  607. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
  608. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
  609. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
  610. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
  611. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
  612. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
  613. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
  614. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
  615. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
  616. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
  617. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
  618. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
  619. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
  620. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
  621. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
  622. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
  623. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
  624. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
  625. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
  626. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
  627. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
  628. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
  629. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
  630. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
  631. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
  632. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
  633. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
  634. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
  635. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
  636. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
  637. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
  638. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
  639. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
  640. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
  641. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
  642. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
  643. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
  644. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
  645. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
  646. package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
  647. package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
  648. package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
  649. package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
  650. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
  651. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
  652. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
  653. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
  654. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
  655. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
  656. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
  657. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
  658. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
  659. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
  660. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
  661. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
  662. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
  663. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
  664. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
  665. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
  666. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
  667. package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
  668. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
  669. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
  670. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
  671. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
  672. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
  673. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
  674. package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
  675. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
  676. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
  677. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
  678. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
  679. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
  680. package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
  681. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
  682. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
  683. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
  684. package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
  685. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
  686. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
  687. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
  688. package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
  689. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
  690. package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
  691. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
  692. package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
  693. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
  694. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
  695. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
  696. package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
  697. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
  698. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
  699. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
  700. package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
  701. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
  702. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
  703. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
  704. package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
  705. package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
  706. package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
  707. package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
  708. package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
  709. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
  710. package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
  711. package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
  712. package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
  713. package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
  714. package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
  715. package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
  716. package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
  717. package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
  718. package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
  719. package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
  720. package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
  721. package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
  722. package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
  723. package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
  724. package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
  725. package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
  726. package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
  727. package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
  728. package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
  729. package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
  730. package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
  731. package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
  732. package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
  733. package/dist/serve/docs-ui/docs/skills/index.html +20 -0
  734. package/dist/serve/docs-ui/docs/skills.md +34 -0
  735. package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
  736. package/dist/serve/docs-ui/docs/start-building.md +64 -0
  737. package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
  738. package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
  739. package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
  740. package/dist/serve/docs-ui/docs/store-files.md +25 -0
  741. package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
  742. package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
  743. package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
  744. package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
  745. package/dist/serve/docs-ui/docs/ui/index.html +76 -0
  746. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
  747. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
  748. package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
  749. package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
  750. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
  751. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
  752. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
  753. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
  754. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
  755. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
  756. package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
  757. package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
  758. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
  759. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
  760. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
  761. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
  762. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
  763. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
  764. package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
  765. package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
  766. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
  767. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
  768. package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
  769. package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
  770. package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
  771. package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
  772. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
  773. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
  774. package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
  775. package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
  776. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
  777. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
  778. package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
  779. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
  780. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
  781. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
  782. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
  783. package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
  784. package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
  785. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
  786. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
  787. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
  788. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
  789. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
  790. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
  791. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
  792. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
  793. package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
  794. package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
  795. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
  796. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
  797. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
  798. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
  799. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
  800. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
  801. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
  802. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
  803. package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
  804. package/dist/serve/docs-ui/docs/ui.md +90 -0
  805. package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
  806. package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
  807. package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
  808. package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
  809. package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
  810. package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
  811. package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
  812. package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
  813. package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
  814. package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
  815. package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
  816. package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
  817. package/dist/serve/docs-ui/index.html +1 -0
  818. package/dist/serve/docs-ui/llms.txt +308 -0
  819. package/dist/serve/entries/ai.d.ts +4 -0
  820. package/dist/serve/entries/ai.d.ts.map +1 -0
  821. package/dist/serve/entries/ai.js +184 -0
  822. package/dist/serve/entries/ai.js.map +1 -0
  823. package/dist/serve/entries/app-backend.d.ts +2 -0
  824. package/dist/serve/entries/app-backend.d.ts.map +1 -0
  825. package/dist/serve/entries/app-backend.js +4 -0
  826. package/dist/serve/entries/app-backend.js.map +1 -0
  827. package/dist/serve/entries/app-client.d.ts +5 -0
  828. package/dist/serve/entries/app-client.d.ts.map +1 -0
  829. package/dist/serve/entries/app-client.js +23 -0
  830. package/dist/serve/entries/app-client.js.map +1 -0
  831. package/dist/serve/entries/app-session-store.d.ts +14 -0
  832. package/dist/serve/entries/app-session-store.d.ts.map +1 -0
  833. package/dist/serve/entries/app-session-store.js +37 -0
  834. package/dist/serve/entries/app-session-store.js.map +1 -0
  835. package/dist/serve/entries/app.d.ts +2 -0
  836. package/dist/serve/entries/app.d.ts.map +1 -0
  837. package/dist/serve/entries/app.js +10 -0
  838. package/dist/serve/entries/app.js.map +1 -0
  839. package/dist/serve/entries/auth-helper-core.d.ts +52 -0
  840. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
  841. package/dist/serve/entries/auth-helper-core.js +118 -0
  842. package/dist/serve/entries/auth-helper-core.js.map +1 -0
  843. package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
  844. package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
  845. package/dist/serve/entries/auth-helper-dom.js +116 -0
  846. package/dist/serve/entries/auth-helper-dom.js.map +1 -0
  847. package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
  848. package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
  849. package/dist/serve/entries/auth-helper-runtime.js +11 -0
  850. package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
  851. package/dist/serve/entries/auth.d.ts +77 -0
  852. package/dist/serve/entries/auth.d.ts.map +1 -0
  853. package/dist/serve/entries/auth.js +201 -0
  854. package/dist/serve/entries/auth.js.map +1 -0
  855. package/dist/serve/entries/bridge-url.d.ts +25 -0
  856. package/dist/serve/entries/bridge-url.d.ts.map +1 -0
  857. package/dist/serve/entries/bridge-url.js +30 -0
  858. package/dist/serve/entries/bridge-url.js.map +1 -0
  859. package/dist/serve/entries/database.d.ts +46 -0
  860. package/dist/serve/entries/database.d.ts.map +1 -0
  861. package/dist/serve/entries/database.js +80 -0
  862. package/dist/serve/entries/database.js.map +1 -0
  863. package/dist/serve/entries/firestore.d.ts +104 -0
  864. package/dist/serve/entries/firestore.d.ts.map +1 -0
  865. package/dist/serve/entries/firestore.js +202 -0
  866. package/dist/serve/entries/firestore.js.map +1 -0
  867. package/dist/serve/entries/init.d.ts +2 -0
  868. package/dist/serve/entries/init.d.ts.map +1 -0
  869. package/dist/serve/entries/init.js +40 -0
  870. package/dist/serve/entries/init.js.map +1 -0
  871. package/dist/serve/entries/keepalive.d.ts +20 -0
  872. package/dist/serve/entries/keepalive.d.ts.map +1 -0
  873. package/dist/serve/entries/keepalive.js +38 -0
  874. package/dist/serve/entries/keepalive.js.map +1 -0
  875. package/dist/serve/entries/messaging-sw.d.ts +10 -0
  876. package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
  877. package/dist/serve/entries/messaging-sw.js +36 -0
  878. package/dist/serve/entries/messaging-sw.js.map +1 -0
  879. package/dist/serve/entries/messaging.d.ts +11 -0
  880. package/dist/serve/entries/messaging.d.ts.map +1 -0
  881. package/dist/serve/entries/messaging.js +53 -0
  882. package/dist/serve/entries/messaging.js.map +1 -0
  883. package/dist/serve/entries/runtime.d.ts +46 -0
  884. package/dist/serve/entries/runtime.d.ts.map +1 -0
  885. package/dist/serve/entries/runtime.js +435 -0
  886. package/dist/serve/entries/runtime.js.map +1 -0
  887. package/dist/serve/entries/session-store.d.ts +48 -0
  888. package/dist/serve/entries/session-store.d.ts.map +1 -0
  889. package/dist/serve/entries/session-store.js +82 -0
  890. package/dist/serve/entries/session-store.js.map +1 -0
  891. package/dist/serve/entries/storage.d.ts +25 -0
  892. package/dist/serve/entries/storage.d.ts.map +1 -0
  893. package/dist/serve/entries/storage.js +61 -0
  894. package/dist/serve/entries/storage.js.map +1 -0
  895. package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
  896. package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
  897. package/dist/serve/entries/tab-sync-wiring.js +217 -0
  898. package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
  899. package/dist/serve/entries/worker-runtime.d.ts +10 -0
  900. package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
  901. package/dist/serve/entries/worker-runtime.js +59 -0
  902. package/dist/serve/entries/worker-runtime.js.map +1 -0
  903. package/dist/serve/init-payload.d.ts +21 -0
  904. package/dist/serve/init-payload.d.ts.map +1 -0
  905. package/dist/serve/init-payload.js +2 -0
  906. package/dist/serve/init-payload.js.map +1 -0
  907. package/dist/serve/namespace.d.ts +73 -0
  908. package/dist/serve/namespace.d.ts.map +1 -0
  909. package/dist/serve/namespace.js +470 -0
  910. package/dist/serve/namespace.js.map +1 -0
  911. package/dist/serve/open-browser.d.ts +23 -0
  912. package/dist/serve/open-browser.d.ts.map +1 -0
  913. package/dist/serve/open-browser.js +58 -0
  914. package/dist/serve/open-browser.js.map +1 -0
  915. package/dist/serve/rules.d.ts +77 -0
  916. package/dist/serve/rules.d.ts.map +1 -0
  917. package/dist/serve/rules.js +202 -0
  918. package/dist/serve/rules.js.map +1 -0
  919. package/dist/serve/sandbox-marker.d.ts +9 -0
  920. package/dist/serve/sandbox-marker.d.ts.map +1 -0
  921. package/dist/serve/sandbox-marker.js +31 -0
  922. package/dist/serve/sandbox-marker.js.map +1 -0
  923. package/dist/serve/server.d.ts +135 -0
  924. package/dist/serve/server.d.ts.map +1 -0
  925. package/dist/serve/server.js +328 -0
  926. package/dist/serve/server.js.map +1 -0
  927. package/dist/serve/standalone-assets.d.ts +67 -0
  928. package/dist/serve/standalone-assets.d.ts.map +1 -0
  929. package/dist/serve/standalone-assets.js +134 -0
  930. package/dist/serve/standalone-assets.js.map +1 -0
  931. package/dist/serve/state-store.d.ts +45 -0
  932. package/dist/serve/state-store.d.ts.map +1 -0
  933. package/dist/serve/state-store.js +120 -0
  934. package/dist/serve/state-store.js.map +1 -0
  935. package/dist/serve/studio/disk-project-store.d.ts +9 -0
  936. package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
  937. package/dist/serve/studio/disk-project-store.js +173 -0
  938. package/dist/serve/studio/disk-project-store.js.map +1 -0
  939. package/dist/serve/studio/disk-workspace.d.ts +14 -0
  940. package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
  941. package/dist/serve/studio/disk-workspace.js +152 -0
  942. package/dist/serve/studio/disk-workspace.js.map +1 -0
  943. package/dist/serve/studio/index.d.ts +10 -0
  944. package/dist/serve/studio/index.d.ts.map +1 -0
  945. package/dist/serve/studio/index.js +9 -0
  946. package/dist/serve/studio/index.js.map +1 -0
  947. package/dist/serve/studio/routes.d.ts +40 -0
  948. package/dist/serve/studio/routes.d.ts.map +1 -0
  949. package/dist/serve/studio/routes.js +182 -0
  950. package/dist/serve/studio/routes.js.map +1 -0
  951. package/dist/serve/studio/store-types.d.ts +45 -0
  952. package/dist/serve/studio/store-types.d.ts.map +1 -0
  953. package/dist/serve/studio/store-types.js +11 -0
  954. package/dist/serve/studio/store-types.js.map +1 -0
  955. package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
  956. package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
  957. package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
  958. package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
  959. package/dist/serve/studio-ui/index.html +32 -0
  960. package/dist/serve/studio-ui/pyric-logo.svg +76 -0
  961. package/dist/serve/vite-plugin.d.ts +57 -0
  962. package/dist/serve/vite-plugin.d.ts.map +1 -0
  963. package/dist/serve/vite-plugin.js +658 -0
  964. package/dist/serve/vite-plugin.js.map +1 -0
  965. package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
  966. package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
  967. package/dist/serve/worker/client/admin-firestore.js +26 -0
  968. package/dist/serve/worker/client/admin-firestore.js.map +1 -0
  969. package/dist/serve/worker/client/ai.d.ts +31 -0
  970. package/dist/serve/worker/client/ai.d.ts.map +1 -0
  971. package/dist/serve/worker/client/ai.js +89 -0
  972. package/dist/serve/worker/client/ai.js.map +1 -0
  973. package/dist/serve/worker/client/auth.d.ts +168 -0
  974. package/dist/serve/worker/client/auth.d.ts.map +1 -0
  975. package/dist/serve/worker/client/auth.js +322 -0
  976. package/dist/serve/worker/client/auth.js.map +1 -0
  977. package/dist/serve/worker/client/connection.d.ts +80 -0
  978. package/dist/serve/worker/client/connection.d.ts.map +1 -0
  979. package/dist/serve/worker/client/connection.js +148 -0
  980. package/dist/serve/worker/client/connection.js.map +1 -0
  981. package/dist/serve/worker/client/core.d.ts +109 -0
  982. package/dist/serve/worker/client/core.d.ts.map +1 -0
  983. package/dist/serve/worker/client/core.js +248 -0
  984. package/dist/serve/worker/client/core.js.map +1 -0
  985. package/dist/serve/worker/client/disconnect.d.ts +7 -0
  986. package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
  987. package/dist/serve/worker/client/disconnect.js +26 -0
  988. package/dist/serve/worker/client/disconnect.js.map +1 -0
  989. package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
  990. package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
  991. package/dist/serve/worker/client/firestore-reads.js +139 -0
  992. package/dist/serve/worker/client/firestore-reads.js.map +1 -0
  993. package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
  994. package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
  995. package/dist/serve/worker/client/firestore-refs.js +167 -0
  996. package/dist/serve/worker/client/firestore-refs.js.map +1 -0
  997. package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
  998. package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
  999. package/dist/serve/worker/client/firestore-writes.js +169 -0
  1000. package/dist/serve/worker/client/firestore-writes.js.map +1 -0
  1001. package/dist/serve/worker/client/handles.d.ts +73 -0
  1002. package/dist/serve/worker/client/handles.d.ts.map +1 -0
  1003. package/dist/serve/worker/client/handles.js +4 -0
  1004. package/dist/serve/worker/client/handles.js.map +1 -0
  1005. package/dist/serve/worker/client/messaging.d.ts +16 -0
  1006. package/dist/serve/worker/client/messaging.d.ts.map +1 -0
  1007. package/dist/serve/worker/client/messaging.js +60 -0
  1008. package/dist/serve/worker/client/messaging.js.map +1 -0
  1009. package/dist/serve/worker/client/presence.d.ts +43 -0
  1010. package/dist/serve/worker/client/presence.d.ts.map +1 -0
  1011. package/dist/serve/worker/client/presence.js +132 -0
  1012. package/dist/serve/worker/client/presence.js.map +1 -0
  1013. package/dist/serve/worker/client/rtdb.d.ts +36 -0
  1014. package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
  1015. package/dist/serve/worker/client/rtdb.js +241 -0
  1016. package/dist/serve/worker/client/rtdb.js.map +1 -0
  1017. package/dist/serve/worker/client/rules.d.ts +24 -0
  1018. package/dist/serve/worker/client/rules.d.ts.map +1 -0
  1019. package/dist/serve/worker/client/rules.js +44 -0
  1020. package/dist/serve/worker/client/rules.js.map +1 -0
  1021. package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
  1022. package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
  1023. package/dist/serve/worker/client/service-worker-connection.js +53 -0
  1024. package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
  1025. package/dist/serve/worker/client/snapshots.d.ts +32 -0
  1026. package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
  1027. package/dist/serve/worker/client/snapshots.js +46 -0
  1028. package/dist/serve/worker/client/snapshots.js.map +1 -0
  1029. package/dist/serve/worker/client/storage.d.ts +64 -0
  1030. package/dist/serve/worker/client/storage.d.ts.map +1 -0
  1031. package/dist/serve/worker/client/storage.js +125 -0
  1032. package/dist/serve/worker/client/storage.js.map +1 -0
  1033. package/dist/serve/worker/client/studio.d.ts +32 -0
  1034. package/dist/serve/worker/client/studio.d.ts.map +1 -0
  1035. package/dist/serve/worker/client/studio.js +61 -0
  1036. package/dist/serve/worker/client/studio.js.map +1 -0
  1037. package/dist/serve/worker/client.d.ts +43 -0
  1038. package/dist/serve/worker/client.d.ts.map +1 -0
  1039. package/dist/serve/worker/client.js +44 -0
  1040. package/dist/serve/worker/client.js.map +1 -0
  1041. package/dist/serve/worker/entry.d.ts +40 -0
  1042. package/dist/serve/worker/entry.d.ts.map +1 -0
  1043. package/dist/serve/worker/entry.js +144 -0
  1044. package/dist/serve/worker/entry.js.map +1 -0
  1045. package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
  1046. package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
  1047. package/dist/serve/worker/host/admin-firestore.js +92 -0
  1048. package/dist/serve/worker/host/admin-firestore.js.map +1 -0
  1049. package/dist/serve/worker/host/connection.d.ts +40 -0
  1050. package/dist/serve/worker/host/connection.d.ts.map +1 -0
  1051. package/dist/serve/worker/host/connection.js +153 -0
  1052. package/dist/serve/worker/host/connection.js.map +1 -0
  1053. package/dist/serve/worker/host/core.d.ts +159 -0
  1054. package/dist/serve/worker/host/core.d.ts.map +1 -0
  1055. package/dist/serve/worker/host/core.js +296 -0
  1056. package/dist/serve/worker/host/core.js.map +1 -0
  1057. package/dist/serve/worker/host/dispatch.d.ts +34 -0
  1058. package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
  1059. package/dist/serve/worker/host/dispatch.js +267 -0
  1060. package/dist/serve/worker/host/dispatch.js.map +1 -0
  1061. package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
  1062. package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
  1063. package/dist/serve/worker/host/firestore-reads.js +108 -0
  1064. package/dist/serve/worker/host/firestore-reads.js.map +1 -0
  1065. package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
  1066. package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
  1067. package/dist/serve/worker/host/firestore-writes.js +409 -0
  1068. package/dist/serve/worker/host/firestore-writes.js.map +1 -0
  1069. package/dist/serve/worker/host/presence.d.ts +38 -0
  1070. package/dist/serve/worker/host/presence.d.ts.map +1 -0
  1071. package/dist/serve/worker/host/presence.js +280 -0
  1072. package/dist/serve/worker/host/presence.js.map +1 -0
  1073. package/dist/serve/worker/host/rtdb.d.ts +18 -0
  1074. package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
  1075. package/dist/serve/worker/host/rtdb.js +128 -0
  1076. package/dist/serve/worker/host/rtdb.js.map +1 -0
  1077. package/dist/serve/worker/host/rules.d.ts +17 -0
  1078. package/dist/serve/worker/host/rules.d.ts.map +1 -0
  1079. package/dist/serve/worker/host/rules.js +118 -0
  1080. package/dist/serve/worker/host/rules.js.map +1 -0
  1081. package/dist/serve/worker/host/storage.d.ts +19 -0
  1082. package/dist/serve/worker/host/storage.d.ts.map +1 -0
  1083. package/dist/serve/worker/host/storage.js +260 -0
  1084. package/dist/serve/worker/host/storage.js.map +1 -0
  1085. package/dist/serve/worker/host/studio.d.ts +13 -0
  1086. package/dist/serve/worker/host/studio.d.ts.map +1 -0
  1087. package/dist/serve/worker/host/studio.js +30 -0
  1088. package/dist/serve/worker/host/studio.js.map +1 -0
  1089. package/dist/serve/worker/host/subscriptions.d.ts +21 -0
  1090. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
  1091. package/dist/serve/worker/host/subscriptions.js +162 -0
  1092. package/dist/serve/worker/host/subscriptions.js.map +1 -0
  1093. package/dist/serve/worker/host-ai.d.ts +59 -0
  1094. package/dist/serve/worker/host-ai.d.ts.map +1 -0
  1095. package/dist/serve/worker/host-ai.js +158 -0
  1096. package/dist/serve/worker/host-ai.js.map +1 -0
  1097. package/dist/serve/worker/host-auth.d.ts +47 -0
  1098. package/dist/serve/worker/host-auth.d.ts.map +1 -0
  1099. package/dist/serve/worker/host-auth.js +464 -0
  1100. package/dist/serve/worker/host-auth.js.map +1 -0
  1101. package/dist/serve/worker/host-context.d.ts +220 -0
  1102. package/dist/serve/worker/host-context.d.ts.map +1 -0
  1103. package/dist/serve/worker/host-context.js +45 -0
  1104. package/dist/serve/worker/host-context.js.map +1 -0
  1105. package/dist/serve/worker/host-events.d.ts +21 -0
  1106. package/dist/serve/worker/host-events.d.ts.map +1 -0
  1107. package/dist/serve/worker/host-events.js +87 -0
  1108. package/dist/serve/worker/host-events.js.map +1 -0
  1109. package/dist/serve/worker/host-messaging.d.ts +60 -0
  1110. package/dist/serve/worker/host-messaging.d.ts.map +1 -0
  1111. package/dist/serve/worker/host-messaging.js +226 -0
  1112. package/dist/serve/worker/host-messaging.js.map +1 -0
  1113. package/dist/serve/worker/host.d.ts +36 -0
  1114. package/dist/serve/worker/host.d.ts.map +1 -0
  1115. package/dist/serve/worker/host.js +39 -0
  1116. package/dist/serve/worker/host.js.map +1 -0
  1117. package/dist/serve/worker/index.d.ts +22 -0
  1118. package/dist/serve/worker/index.d.ts.map +1 -0
  1119. package/dist/serve/worker/index.js +61 -0
  1120. package/dist/serve/worker/index.js.map +1 -0
  1121. package/dist/serve/worker/presence-timing.d.ts +14 -0
  1122. package/dist/serve/worker/presence-timing.d.ts.map +1 -0
  1123. package/dist/serve/worker/presence-timing.js +14 -0
  1124. package/dist/serve/worker/presence-timing.js.map +1 -0
  1125. package/dist/serve/worker/protocol.d.ts +1150 -0
  1126. package/dist/serve/worker/protocol.d.ts.map +1 -0
  1127. package/dist/serve/worker/protocol.js +228 -0
  1128. package/dist/serve/worker/protocol.js.map +1 -0
  1129. package/dist/serve/worker/serve-init.d.ts +201 -0
  1130. package/dist/serve/worker/serve-init.d.ts.map +1 -0
  1131. package/dist/serve/worker/serve-init.js +579 -0
  1132. package/dist/serve/worker/serve-init.js.map +1 -0
  1133. package/dist/serve/worker/service-worker-channel.d.ts +23 -0
  1134. package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
  1135. package/dist/serve/worker/service-worker-channel.js +9 -0
  1136. package/dist/serve/worker/service-worker-channel.js.map +1 -0
  1137. package/dist/serve/worker/service-worker-relay.d.ts +22 -0
  1138. package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
  1139. package/dist/serve/worker/service-worker-relay.js +63 -0
  1140. package/dist/serve/worker/service-worker-relay.js.map +1 -0
  1141. package/dist/serve/writer-lock.d.ts +32 -0
  1142. package/dist/serve/writer-lock.d.ts.map +1 -0
  1143. package/dist/serve/writer-lock.js +43 -0
  1144. package/dist/serve/writer-lock.js.map +1 -0
  1145. package/dist/verify/cases.d.ts +37 -0
  1146. package/dist/verify/cases.d.ts.map +1 -0
  1147. package/dist/verify/cases.js +173 -0
  1148. package/dist/verify/cases.js.map +1 -0
  1149. package/dist/verify/fixture.d.ts +100 -0
  1150. package/dist/verify/fixture.d.ts.map +1 -0
  1151. package/dist/verify/fixture.js +156 -0
  1152. package/dist/verify/fixture.js.map +1 -0
  1153. package/dist/verify/index.d.ts +102 -0
  1154. package/dist/verify/index.d.ts.map +1 -0
  1155. package/dist/verify/index.js +318 -0
  1156. package/dist/verify/index.js.map +1 -0
  1157. package/dist/verify/tools.d.ts +7 -0
  1158. package/dist/verify/tools.d.ts.map +1 -0
  1159. package/dist/verify/tools.js +83 -0
  1160. package/dist/verify/tools.js.map +1 -0
  1161. package/dist/version/compat-target.d.ts +18 -0
  1162. package/dist/version/compat-target.d.ts.map +1 -0
  1163. package/dist/version/compat-target.js +18 -0
  1164. package/dist/version/compat-target.js.map +1 -0
  1165. package/dist/vite.d.ts +12 -0
  1166. package/dist/vite.d.ts.map +1 -0
  1167. package/dist/vite.js +16 -0
  1168. package/dist/vite.js.map +1 -0
  1169. package/package.json +133 -0
@@ -0,0 +1,2120 @@
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>API reference: pyric/storage · Pyric Studio</title><meta name="description" content="Published declarations for pyric/storage."><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><link rel="stylesheet" href="/__pyric/ui/_astro/_slug_.CQYSemvw.css"></head> <body> <header class="studio__bar"> <div class="studio__bar-inner"> <a class="studio__brand" href="/__pyric/ui/" aria-label="Pyric Studio">Pyric</a> <nav class="studio__nav" aria-label="Studio tabs"> <a class="studio__nav-tab" href="/__pyric/ui/"> Home </a><a class="studio__nav-tab" href="/__pyric/ui/firestore"> Firestore </a><a class="studio__nav-tab" href="/__pyric/ui/auth"> Auth </a><a class="studio__nav-tab" href="/__pyric/ui/rtdb"> RTDB </a><a class="studio__nav-tab" href="/__pyric/ui/storage"> Storage </a><a class="studio__nav-tab" href="/__pyric/ui/traffic"> Traffic </a><a class="studio__nav-tab" href="/__pyric/ui/settings"> Settings </a><a class="studio__nav-tab" href="/__pyric/ui/docs" aria-current="page"> Docs </a> </nav> </div> </header> <div class="docs-shell"> <details class="docs-nav-drawer"> <summary>Navigate</summary> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <script type="module">let i=null;function d(t){return i||(i=fetch(t).then(e=>e.json())),i}function l(t,e){return t.title.toLowerCase().includes(e)||t.excerpt.toLowerCase().includes(e)?!0:t.headings.some(r=>r.text.toLowerCase().includes(e))}function u(t,e,r){if(e.innerHTML="",t.length===0){e.hidden=!1;{const n=document.createElement("li");n.className="docs-search-empty",n.textContent="No matches",e.appendChild(n)}return}e.hidden=!1;for(const n of t.slice(0,8)){const s=document.createElement("li"),c=document.createElement("a");c.href=n.path;const o=document.createElement("span");o.className="docs-search-result-title",o.textContent=n.title;const a=document.createElement("span");a.className="docs-search-result-meta",a.textContent=[n.group,n.section].filter(Boolean).join(" / "),c.append(o,a),s.appendChild(c),e.appendChild(s)}}document.querySelectorAll(".docs-search").forEach(t=>{const e=t.dataset.indexUrl,r=t.querySelector(".docs-search-input"),n=t.querySelector(".docs-search-results");r.addEventListener("input",async()=>{const s=r.value.trim().toLowerCase();if(!s){n.hidden=!0,n.innerHTML="";return}const{pages:c}=await d(e);r.value.trim().toLowerCase()===s&&u(c.filter(o=>l(o,s)),n)}),r.addEventListener("focus",()=>{d(e),n.childElementCount>0&&(n.hidden=!1)}),r.addEventListener("keydown",s=>{s.key==="Escape"&&(r.value="",n.hidden=!0,n.innerHTML="",r.blur())}),r.addEventListener("blur",()=>{window.setTimeout(()=>{n.hidden=!0},150)})});document.addEventListener("keydown",t=>{if(!(t.metaKey||t.ctrlKey)||t.key.toLowerCase()!=="k")return;const e=[...document.querySelectorAll(".docs-search-input")].find(r=>r.offsetParent!==null);e&&(t.preventDefault(),e.focus(),e.select())});</script> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/"> Overview </a><details class="docs-nav-group"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What&#39;s experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> </details> <nav class="docs-nav" aria-label="Documentation"> <div class="docs-search" data-index-url="/__pyric/ui/docs/index.json"> <div class="docs-search-field"> <svg class="docs-search-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"> <path d="M11.5 11.5 15 15M13 7A6 6 0 1 1 1 7a6 6 0 0 1 12 0Z" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"></path> </svg> <input type="text" class="docs-search-input" placeholder="Search docs" aria-label="Search docs" autocomplete="off" spellcheck="false"> <kbd class="docs-search-kbd">⌘K</kbd> </div> <ul class="docs-search-results" hidden></ul> </div> <a class="docs-nav-toplink" href="/__pyric/ui/docs/overview/" id="nav-group-overview"> Overview </a><details class="docs-nav-group" id="nav-group-run-locally"> <summary>Run locally</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/start-building/"> Quickstart </a> </li><li> <a href="/__pyric/ui/docs/how-the-swap-works/"> How the swap works </a> </li><li> <a href="/__pyric/ui/docs/set-up-your-agent/"> Connect an agent </a> </li><li> <a href="/__pyric/ui/docs/test-in-node/"> Test in Node </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-develop-with-firebase-apis"> <summary>Develop with Firebase APIs</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/sign-in-and-manage-users/"> Sign in and manage users </a> </li><li> <a href="/__pyric/ui/docs/store-and-query-data/"> Store and query data </a> </li><li> <a href="/__pyric/ui/docs/sync-realtime-data/"> Sync realtime data </a> </li><li> <a href="/__pyric/ui/docs/store-files/"> Store files </a> </li><li> <a href="/__pyric/ui/docs/receive-messages/"> Receive messages </a> </li><li> <a href="/__pyric/ui/docs/run-ai-logic-locally/"> Run AI Logic locally </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/"> Run an RTDB function locally </a> </li><li> <a href="/__pyric/ui/docs/which-data-service/"> Which data service? </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-inspect-and-correct"> <summary>Inspect and correct</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-inspect-the-sandbox"> Inspect the sandbox </h2> <ul> <li> <a href="/__pyric/ui/docs/see-whats-happening/"> Traffic &amp; rule verdicts </a> </li><li> <a href="/__pyric/ui/docs/read-a-denial/"> Read a denial and understand it </a> </li><li> <a href="/__pyric/ui/docs/shape-your-data/"> Seed, snapshot, replay </a> </li><li> <a href="/__pyric/ui/docs/watch-and-review/"> Review agent activity </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-correct-security-rules"> Correct Security Rules </h2> <ul> <li> <a href="/__pyric/ui/docs/secure-it-with-rules/"> Security Rules </a> </li><li> <a href="/__pyric/ui/docs/simulate-and-lint/"> Simulate and lint before you deploy </a> </li><li> <a href="/__pyric/ui/docs/rules-patterns/"> Rules patterns </a> </li><li> <a href="/__pyric/ui/docs/rules-standard-library/"> The rules standard library </a> </li><li> <a href="/__pyric/ui/docs/rtdb-rules-in-typescript/"> RTDB rules in TypeScript </a> </li><li> <a href="/__pyric/ui/docs/firestore-rules-limits/"> Rules limits </a> </li><li> <a href="/__pyric/ui/docs/whats-possible/"> Case studies </a> </li> </ul> </div><div class="docs-nav-section"> <h2 class="docs-nav-heading" id="nav-section-inspect-and-correct-work-with-an-agent"> Work with an agent </h2> <ul> <li> <a href="/__pyric/ui/docs/what-your-agent-can-do/"> Work through an agent </a> </li><li> <a href="/__pyric/ui/docs/skills/"> Agent skills </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-verify-the-boundary"> <summary>Verify the boundary</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli-how-to-verify-against-a-captured-session/"> Verify a captured session </a> </li><li> <a href="/__pyric/ui/docs/write-a-rules-test-suite/"> Write a rules test suite </a> </li><li> <a href="/__pyric/ui/docs/audit-your-rules/"> Audit rules and data </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-ship-unchanged"> <summary>Ship unchanged</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/ship-to-production/"> Ship to production </a> </li><li> <a href="/__pyric/ui/docs/set-up-the-project/"> Set up the Firebase project </a> </li> </ul> </div> </div> </details><details class="docs-nav-group" id="nav-group-conformance"> <summary>Conformance</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/how-we-know-it-matches-firebase/"> Conformance </a> </li><li> <a href="/__pyric/ui/docs/whats-experimental/"> What&#39;s experimental </a> </li><li> <a href="/__pyric/ui/docs/pyric-conformance-scores/"> Conformance scores </a> </li><li> <a href="/__pyric/ui/docs/pyric-app-compat/"> App </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore-compat/"> Firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth-compat/"> Auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database-compat/"> Realtime Database </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage-compat/"> Storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules-compat/"> Rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-messaging-compat/"> Messaging </a> </li><li> <a href="/__pyric/ui/docs/pyric-ai-compat/"> AI Logic </a> </li><li> <a href="/__pyric/ui/docs/pyric-cli-functions-rtdb-compat/"> Functions · RTDB </a> </li> </ul> </div> </div> </details> <details class="docs-nav-group" id="nav-group-reference" open> <summary>Reference</summary> <div class="docs-nav-group-body"> <div class="docs-nav-section"> <ul> <li> <a href="/__pyric/ui/docs/pyric-cli/"> @pyric/cli </a> </li><li> <a href="/__pyric/ui/docs/pyric-explanation-versioning-and-compatibility/"> pyric </a> </li><li> <a href="/__pyric/ui/docs/pyric-firestore/"> pyric / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-rules/"> pyric / rules </a> </li><li> <a href="/__pyric/ui/docs/pyric-sandbox/"> pyric / sandbox </a> </li><li> <a href="/__pyric/ui/docs/pyric-storage/"> pyric / storage </a> </li><li> <a href="/__pyric/ui/docs/pyric-auth/"> pyric / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-database/"> pyric / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-app/"> pyric-admin / app </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-firestore/"> pyric-admin / firestore </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-auth/"> pyric-admin / auth </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-database/"> pyric-admin / database </a> </li><li> <a href="/__pyric/ui/docs/pyric-admin-storage/"> pyric-admin / storage </a> </li><li> <a href="/__pyric/ui/docs/ui/"> @pyric/ui </a> </li><li> <a href="/__pyric/ui/docs/api-reference/" aria-current="true"> API reference </a> </li> </ul> </div> </div> </details> </nav> <main class="doc-main"> <nav class="docs-breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/__pyric/ui/docs/api-reference/">API reference</a> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span>pyric</span> </li><li> <span class="docs-breadcrumbs-sep" aria-hidden="true">/</span> <span aria-current="page">pyric/storage</span> </li> </ol> </nav> <header class="api-reference-header"> <p class="api-reference-kicker">API reference</p> <h1><code>pyric/storage</code></h1> <p class="api-reference-meta"> 64 published symbols from <code>pyric</code> </p> <p class="api-reference-source">
2
+ Generated from the TypeScript declarations shipped at this import path.
3
+ </p> <a class="api-reference-evidence" href="/__pyric/ui/docs/pyric-storage-compat/">
4
+ Check behavioral conformance
5
+ </a> </header> <article class="prose api-reference-body"> <!-- Generated from published package declarations via TypeDoc. Do not edit by hand; run bun run docs:api:generate. -->
6
+ <h2 id="classes">Classes</h2>
7
+ <p><a id="inspectstoragehandler"></a></p>
8
+ <h3 id="inspectstoragehandler">InspectStorageHandler</h3>
9
+ <h4 id="constructors">Constructors</h4>
10
+ <p><a id="constructor"></a></p>
11
+ <h5 id="constructor">Constructor</h5>
12
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> InspectStorageHandler</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">InspectStorageHandler</span><span style="color:#ABB2BF">;</span></span></code></pre>
13
+ <h6 id="returns">Returns</h6>
14
+ <p><a href="#inspectstoragehandler"><code>InspectStorageHandler</code></a></p>
15
+ <h4 id="methods">Methods</h4>
16
+ <p><a id="execute"></a></p>
17
+ <h5 id="execute">execute()</h5>
18
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">execute</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">scope</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProjectScope</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">InspectStorageResult</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
19
+ <h6 id="parameters">Parameters</h6>
20
+ <div class="table-scroll">
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>scope</code></td><td align="left"><code>ProjectScope</code></td></tr></tbody></table></div>
34
+ <h6 id="returns-1">Returns</h6>
35
+ <p><code>Promise</code>&#x3C;<a href="#inspectstorageresult"><code>InspectStorageResult</code></a>></p>
36
+ <hr>
37
+ <p><a id="provisionstoragehandler"></a></p>
38
+ <h3 id="provisionstoragehandler">ProvisionStorageHandler</h3>
39
+ <h4 id="constructors-1">Constructors</h4>
40
+ <p><a id="constructor-1"></a></p>
41
+ <h5 id="constructor-1">Constructor</h5>
42
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> ProvisionStorageHandler</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">ProvisionStorageHandler</span><span style="color:#ABB2BF">;</span></span></code></pre>
43
+ <h6 id="returns-2">Returns</h6>
44
+ <p><a href="#provisionstoragehandler"><code>ProvisionStorageHandler</code></a></p>
45
+ <h4 id="methods-1">Methods</h4>
46
+ <p><a id="execute-2"></a></p>
47
+ <h5 id="execute-1">execute()</h5>
48
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">execute</span><span style="color:#ABB2BF">(</span></span>
49
+ <span class="line"><span style="color:#E06C75"> scope</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProjectScope</span><span style="color:#ABB2BF">,</span></span>
50
+ <span class="line"><span style="color:#E06C75"> input</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">ProvisionStorageInput</span><span style="color:#ABB2BF">,</span></span>
51
+ <span class="line"><span style="color:#E06C75">onProgress</span><span style="color:#C678DD">?:</span><span style="color:#E06C75"> ProvisionProgress</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">ProvisionStorageOutcome</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
52
+ <h6 id="parameters-1">Parameters</h6>
53
+ <div class="table-scroll">
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>scope</code></td><td align="left"><code>ProjectScope</code></td></tr><tr><td align="left"><code>input</code></td><td align="left"><a href="#provisionstorageinput"><code>ProvisionStorageInput</code></a></td></tr><tr><td align="left"><code>onProgress?</code></td><td align="left"><code>ProvisionProgress</code></td></tr></tbody></table></div>
75
+ <h6 id="returns-3">Returns</h6>
76
+ <p><code>Promise</code>&#x3C;<a href="#provisionstorageoutcome"><code>ProvisionStorageOutcome</code></a>></p>
77
+ <hr>
78
+ <p><a id="storageerror"></a></p>
79
+ <h3 id="storageerror">StorageError</h3>
80
+ <p>Storage error carrying a prefixed <code>storage/&#x3C;code></code> on <code>.code</code>.
81
+ Drop-in for <code>err.code === 'storage/object-not-found'</code> branching.</p>
82
+ <h4 id="extends">Extends</h4>
83
+ <ul>
84
+ <li><code>Error</code></li>
85
+ </ul>
86
+ <h4 id="constructors-2">Constructors</h4>
87
+ <p><a id="constructor-2"></a></p>
88
+ <h5 id="constructor-2">Constructor</h5>
89
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> StorageError</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">code</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">StorageErrorCode</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">message</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">StorageError</span><span style="color:#ABB2BF">;</span></span></code></pre>
90
+ <h6 id="parameters-2">Parameters</h6>
91
+ <div class="table-scroll">
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>code</code></td><td align="left"><a href="#storageerrorcode-1"><code>StorageErrorCode</code></a></td></tr><tr><td align="left"><code>message</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
109
+ <h6 id="returns-4">Returns</h6>
110
+ <p><a href="#storageerror"><code>StorageError</code></a></p>
111
+ <h6 id="overrides">Overrides</h6>
112
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E5C07B">Error</span><span style="color:#ABB2BF">.</span><span style="color:#E06C75">constructor</span></span></code></pre>
113
+ <h4 id="properties">Properties</h4>
114
+ <div class="table-scroll">
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="code"></a> <code>code</code></td><td align="left"><code>readonly</code></td><td align="left">| <code>"storage/unknown"</code> | <code>"storage/object-not-found"</code> | <code>"storage/quota-exceeded"</code> | <code>"storage/unauthenticated"</code> | <code>"storage/unauthorized"</code> | <code>"storage/invalid-root-operation"</code> | <code>"storage/invalid-format"</code> | <code>"storage/invalid-argument"</code></td><td align="left">Prefixed code, e.g. <code>storage/object-not-found</code>.</td></tr></tbody></table></div>
132
+ <hr>
133
+ <p><a id="storageprovisioningerror"></a></p>
134
+ <h3 id="storageprovisioningerror">StorageProvisioningError</h3>
135
+ <p>Pure-fetch client for the Firebase Storage provisioning APIs.
136
+ Takes an OAuth access token directly — works equally from a Node
137
+ agent runtime or a browser. Used by:</p>
138
+ <ul>
139
+ <li><code>ProvisionStorageHandler</code> server-side via the agent SDK</li>
140
+ <li>Consumers like the multi-tenant playground via direct import</li>
141
+ </ul>
142
+ <p>The caller is responsible for token scope. <code>firebase</code> scope is
143
+ enough for the <code>:addFirebase</code> + <code>defaultLocation:finalize</code> calls,
144
+ but <strong>NOT</strong> for enabling the underlying <code>firebasestorage.googleapis.com</code>
145
+ service (which is the first-time gate). Service-enable requires
146
+ <code>cloud-platform</code> scope OR a service account with
147
+ <code>roles/serviceusage.serviceUsageAdmin</code>. Each function below
148
+ documents which scope it needs.</p>
149
+ <p>Endpoints under play:</p>
150
+ <ul>
151
+ <li>serviceusage.googleapis.com/v1/projects/{p}/services/{s}:enable</li>
152
+ <li>firebase.googleapis.com/v1beta1/projects/{p}/defaultLocation:finalize</li>
153
+ <li>firebasestorage.googleapis.com/v1beta/projects/{p}/buckets</li>
154
+ <li>firebasestorage.googleapis.com/v1beta/projects/{p}/buckets/{b}:addFirebase</li>
155
+ <li>firebaserules.googleapis.com/v1/projects/{p}/releases/firebase.storage</li>
156
+ </ul>
157
+ <h4 id="extends-1">Extends</h4>
158
+ <ul>
159
+ <li><code>Error</code></li>
160
+ </ul>
161
+ <h4 id="constructors-3">Constructors</h4>
162
+ <p><a id="constructor-3"></a></p>
163
+ <h5 id="constructor-3">Constructor</h5>
164
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">new</span><span style="color:#61AFEF"> StorageProvisioningError</span><span style="color:#ABB2BF">(</span></span>
165
+ <span class="line"><span style="color:#E06C75"> status</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">number</span><span style="color:#ABB2BF">,</span></span>
166
+ <span class="line"><span style="color:#E06C75"> body</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
167
+ <span class="line"><span style="color:#E06C75"> reason</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">,</span></span>
168
+ <span class="line"><span style="color:#E06C75"> message</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">StorageProvisioningError</span><span style="color:#ABB2BF">;</span></span></code></pre>
169
+ <h6 id="parameters-3">Parameters</h6>
170
+ <div class="table-scroll">
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>status</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>body</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>reason</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>message</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
196
+ <h6 id="returns-5">Returns</h6>
197
+ <p><a href="#storageprovisioningerror"><code>StorageProvisioningError</code></a></p>
198
+ <h6 id="overrides-1">Overrides</h6>
199
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#E5C07B">Error</span><span style="color:#ABB2BF">.</span><span style="color:#E06C75">constructor</span></span></code></pre>
200
+ <h4 id="properties-1">Properties</h4>
201
+ <div class="table-scroll">
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+
226
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="body"></a> <code>body</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="reason"></a> <code>reason</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="status"></a> <code>status</code></td><td align="left"><code>readonly</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
227
+ <h2 id="interfaces">Interfaces</h2>
228
+ <p><a id="corsrule"></a></p>
229
+ <h3 id="corsrule">CorsRule</h3>
230
+ <p>A single CORS rule entry, mirroring the GCS bucket CORS schema.
231
+ See <a href="https://cloud.google.com/storage/docs/cross-origin#cors-elements" target="_blank" rel="noopener noreferrer" class="external-link">https://cloud.google.com/storage/docs/cross-origin#cors-elements</a>.</p>
232
+ <h4 id="properties-2">Properties</h4>
233
+ <div class="table-scroll">
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="maxageseconds"></a> <code>maxAgeSeconds?</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="method"></a> <code>method</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="origin"></a> <code>origin</code></td><td align="left"><code>string</code>[]</td></tr><tr><td align="left"><a id="responseheader"></a> <code>responseHeader?</code></td><td align="left"><code>string</code>[]</td></tr></tbody></table></div>
259
+ <hr>
260
+ <p><a id="evaluationinput"></a></p>
261
+ <h3 id="evaluationinput">EvaluationInput</h3>
262
+ <h4 id="properties-3">Properties</h4>
263
+ <div class="table-scroll">
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="request"></a> <code>request</code></td><td align="left"><a href="#storagerequest"><code>StorageRequest</code></a></td></tr><tr><td align="left"><a id="resource"></a> <code>resource</code></td><td align="left"><a href="#storageresource"><code>StorageResource</code></a></td></tr></tbody></table></div>
281
+ <hr>
282
+ <p><a id="evaluationresult"></a></p>
283
+ <h3 id="evaluationresult">EvaluationResult</h3>
284
+ <h4 id="properties-4">Properties</h4>
285
+ <div class="table-scroll">
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="allowed"></a> <code>allowed</code></td><td align="left"><code>boolean</code></td><td align="left">-</td></tr><tr><td align="left"><a id="reasons"></a> <code>reasons</code></td><td align="left"><code>string</code>[]</td><td align="left">Human-readable explanation of why — used by Slice 8’s integration to populate <code>storage/unauthorized</code> error messages.</td></tr></tbody></table></div>
306
+ <hr>
307
+ <p><a id="firebasestorage"></a></p>
308
+ <h3 id="firebasestorage">FirebaseStorage</h3>
309
+ <p>Public opaque handle. Carries a <a href="#target">Target</a> via
310
+ <a href="#target_symbol-1">TARGET_SYMBOL</a>; never inspected by consumer code, which
311
+ interacts with storage only through <a href="#ref-1">ref</a> and the operation
312
+ free functions.</p>
313
+ <h4 id="properties-5">Properties</h4>
314
+ <div class="table-scroll">
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="target_symbol"></a> <code>[TARGET_SYMBOL]</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#sandboxtarget"><code>SandboxTarget</code></a></td></tr><tr><td align="left"><a id="app"></a> <code>app?</code></td><td align="left"><code>readonly</code></td><td align="left"><code>FirebaseApp</code></td></tr></tbody></table></div>
335
+ <hr>
336
+ <p><a id="firebasestoragebucket"></a></p>
337
+ <h3 id="firebasestoragebucket">FirebaseStorageBucket</h3>
338
+ <h4 id="properties-6">Properties</h4>
339
+ <div class="table-scroll">
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucketid"></a> <code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name"></a> <code>name</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="reconciling"></a> <code>reconciling?</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
361
+ <hr>
362
+ <p><a id="firestorelookup"></a></p>
363
+ <h3 id="firestorelookup">FirestoreLookup</h3>
364
+ <p>Injected capability that lets a Storage rule read Firestore documents
365
+ (<code>firestore.get(path)</code> / <code>firestore.exists(path)</code>), WITHOUT the pure
366
+ evaluator importing the Firestore sandbox. The enforcement layer builds
367
+ one from the sandbox’s admin Firestore accessor (a synchronous in-memory
368
+ read) and passes it into <a href="#evaluatestoragerules">evaluateStorageRules</a>; pure/test callers
369
+ that omit it get the deny-with-reason “unsupported” behavior instead.</p>
370
+ <p>Paths are the document path RELATIVE to the database — the
371
+ <code>collection/doc</code> form <code>sandbox.admin.getDocument</code> expects — after the
372
+ evaluator has stripped the <code>/databases/&#x3C;db>/documents/</code> prefix from the
373
+ rule’s path literal.</p>
374
+ <h4 id="methods-2">Methods</h4>
375
+ <p><a id="exists"></a></p>
376
+ <h5 id="exists">exists()</h5>
377
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">exists</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">boolean</span><span style="color:#ABB2BF">;</span></span></code></pre>
378
+ <p>Whether a document exists at <code>path</code>.</p>
379
+ <h6 id="parameters-4">Parameters</h6>
380
+ <div class="table-scroll">
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
394
+ <h6 id="returns-6">Returns</h6>
395
+ <p><code>boolean</code></p>
396
+ <p><a id="get"></a></p>
397
+ <h5 id="get">get()</h5>
398
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">get</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75">path</span><span style="color:#ABB2BF">: </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">): </span><span style="color:#E06C75">Record</span><span style="color:#56B6C2">&#x3C;</span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75">unknown</span><span style="color:#56B6C2">></span><span style="color:#ABB2BF">;</span></span></code></pre>
399
+ <p>The document’s fields, or <code>null</code> when the document does not exist.</p>
400
+ <h6 id="parameters-5">Parameters</h6>
401
+ <div class="table-scroll">
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
415
+ <h6 id="returns-7">Returns</h6>
416
+ <p><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></p>
417
+ <hr>
418
+ <p><a id="fullmetadata"></a></p>
419
+ <h3 id="fullmetadata">FullMetadata</h3>
420
+ <p>Server-set + client-settable fields read back from
421
+ <code>uploadBytes</code> / <code>getMetadata</code> / <code>updateMetadata</code>. Server-set
422
+ fields (<code>bucket</code>, <code>fullPath</code>, <code>name</code>, <code>generation</code>,
423
+ <code>metageneration</code>, <code>timeCreated</code>, <code>updated</code>, <code>size</code>) are populated
424
+ by the upload pipeline; client-settable fields round-trip from
425
+ <code>SettableMetadata</code>.</p>
426
+ <h4 id="extends-2">Extends</h4>
427
+ <ul>
428
+ <li><a href="#settablemetadata"><code>SettableMetadata</code></a></li>
429
+ </ul>
430
+ <h4 id="properties-7">Properties</h4>
431
+ <div class="table-scroll">
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucket"></a> <code>bucket</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="cachecontrol"></a> <code>cacheControl?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentdisposition"></a> <code>contentDisposition?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentencoding"></a> <code>contentEncoding?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentlanguage"></a> <code>contentLanguage?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contenttype"></a> <code>contentType?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="custommetadata"></a> <code>customMetadata?</code></td><td align="left">{ [<code>key</code>: <code>string</code>]: <code>string</code>; }</td></tr><tr><td align="left"><a id="fullpath"></a> <code>fullPath</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="generation"></a> <code>generation</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="md5hash"></a> <code>md5Hash?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="metageneration"></a> <code>metageneration</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name-1"></a> <code>name</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="size"></a> <code>size</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><a id="timecreated"></a> <code>timeCreated</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="updated"></a> <code>updated</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
501
+ <hr>
502
+ <p><a id="inspectstorageresult"></a></p>
503
+ <h3 id="inspectstorageresult">InspectStorageResult</h3>
504
+ <h4 id="properties-8">Properties</h4>
505
+ <div class="table-scroll">
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="buckets"></a> <code>buckets</code></td><td align="left">{ <code>bucketId</code>: <code>string</code>; <code>name</code>: <code>string</code>; }[]</td></tr><tr><td align="left"><a id="defaultlocation"></a> <code>defaultLocation</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="servicestate"></a> <code>serviceState</code></td><td align="left"><code>"unknown"</code> | <code>"enabled"</code> | <code>"disabled"</code></td></tr></tbody></table></div>
527
+ <hr>
528
+ <p><a id="listresult"></a></p>
529
+ <h3 id="listresult">ListResult</h3>
530
+ <p>Mirrors <code>firebase/storage</code>’s <code>ListResult</code>. <code>nextPageToken</code> is
531
+ <code>undefined</code> for <code>listAll</code>; pagination via <code>list()</code> is deferred.</p>
532
+ <h4 id="properties-9">Properties</h4>
533
+ <div class="table-scroll">
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="items"></a> <code>items</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a>[]</td></tr><tr><td align="left"><a id="nextpagetoken"></a> <code>nextPageToken?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="prefixes"></a> <code>prefixes</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a>[]</td></tr></tbody></table></div>
555
+ <hr>
556
+ <p><a id="provisionstorageinput"></a></p>
557
+ <h3 id="provisionstorageinput">ProvisionStorageInput</h3>
558
+ <p>Shapes for the Storage provisioning + status tools.</p>
559
+ <p>Types only — the agent-tool parameter schemas live inline in
560
+ <code>tools.ts</code> as JSON Schema (the <code>ToolHandler</code> contract).</p>
561
+ <h4 id="properties-10">Properties</h4>
562
+ <div class="table-scroll">
563
+
564
+
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucketid-1"></a> <code>bucketId?</code></td><td align="left"><code>string</code></td><td align="left">Override the default Firebase Storage bucket ID. Defaults to <code>{projectId}.firebasestorage.app</code>.</td></tr><tr><td align="left"><a id="cors"></a> <code>cors?</code></td><td align="left">{ <code>maxAgeSeconds?</code>: <code>number</code>; <code>method</code>: <code>string</code>[]; <code>origin</code>: <code>string</code>[]; <code>responseHeader?</code>: <code>string</code>[]; }[]</td><td align="left">CORS rules to apply to the bucket. Required for browser-side reads/writes from a non-Firebase origin. Omit to leave existing CORS untouched.</td></tr><tr><td align="left"><a id="locationid"></a> <code>locationId?</code></td><td align="left"><code>string</code></td><td align="left">Default GCP resources location to use when the project has not been finalized yet. IRREVERSIBLE once set. Common values: <code>us-central</code>, <code>nam5</code>, <code>eur3</code>. Default: <code>us-central</code>.</td></tr><tr><td align="left"><a id="rules"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source to deploy after the bucket is linked. Optional; when omitted, whatever rules are currently released (possibly the deny-all default) stay in place.</td></tr></tbody></table></div>
593
+ <hr>
594
+ <p><a id="provisionstorageoptions"></a></p>
595
+ <h3 id="provisionstorageoptions">ProvisionStorageOptions</h3>
596
+ <h4 id="properties-11">Properties</h4>
597
+ <div class="table-scroll">
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucketid-2"></a> <code>bucketId?</code></td><td align="left"><code>string</code></td><td align="left">Override the default Firebase Storage bucket ID. Defaults to <code>{projectId}.firebasestorage.app</code> — the bucket Firebase Console creates automatically.</td></tr><tr><td align="left"><a id="cors-1"></a> <code>cors?</code></td><td align="left"><a href="#corsrule"><code>CorsRule</code></a>[]</td><td align="left">CORS rules to apply to the bucket after it’s linked. Required for browser-side reads/writes from a non-Firebase origin — buckets created via the Cloud Console (vs Firebase Console) often ship with no CORS configuration, which manifests as <code>No 'Access-Control-Allow-Origin' header</code> on the first <code>XMLHttpRequest</code> from a hosted page. Pass <code>defaultPlaygroundCors(origin)</code> for a sensible starter config, or a custom array. Omit to leave the bucket’s CORS alone.</td></tr><tr><td align="left"><a id="locationid-1"></a> <code>locationId?</code></td><td align="left"><code>string</code></td><td align="left">Default GCP resources location to use if the project hasn’t been finalized yet. Ignored when the location is already set. Default: <code>'us-central'</code>.</td></tr><tr><td align="left"><a id="onprogress"></a> <code>onProgress?</code></td><td align="left"><code>ProvisionProgress</code></td><td align="left">Optional progress callback, invoked at each provisioning step boundary.</td></tr><tr><td align="left"><a id="rules-1"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source to deploy after the bucket is linked. When omitted, no rules are deployed (the project keeps whatever rules were last released — possibly the default deny-all).</td></tr></tbody></table></div>
633
+ <hr>
634
+ <p><a id="provisionstorageresult"></a></p>
635
+ <h3 id="provisionstorageresult">ProvisionStorageResult</h3>
636
+ <h4 id="properties-12">Properties</h4>
637
+ <div class="table-scroll">
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucketcreated"></a> <code>bucketCreated</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="bucketid-3"></a> <code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="corsapplied"></a> <code>corsApplied</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="locationfinalized"></a> <code>locationFinalized</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="locationid-2"></a> <code>locationId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="ok"></a> <code>ok</code></td><td align="left"><code>true</code></td></tr><tr><td align="left"><a id="rulesdeployed"></a> <code>rulesDeployed</code></td><td align="left"><code>boolean</code></td></tr><tr><td align="left"><a id="rulesetname"></a> <code>rulesetName?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="serviceenabled"></a> <code>serviceEnabled</code></td><td align="left"><code>boolean</code></td></tr></tbody></table></div>
683
+ <hr>
684
+ <p><a id="sandboxtarget"></a></p>
685
+ <h3 id="sandboxtarget">SandboxTarget</h3>
686
+ <p>Sandbox target — IDB-backed, identity from <code>SandboxContext</code>, rules
687
+ enforced in-process via <code>enforce.ts</code>.</p>
688
+ <h4 id="properties-13">Properties</h4>
689
+ <div class="table-scroll">
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
742
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="admin"></a> <code>admin?</code></td><td align="left"><code>readonly</code></td><td align="left"><code>boolean</code></td><td align="left">Rules-bypass admin plane. <code>true</code> only on handles minted by the INTERNAL getAdminStorageSandbox factory (exported via <code>pyric/storage/internal</code>, never the public surface): operations on an admin handle skip rule evaluation entirely — the storage mirror of <code>getAdminFirestore</code> / <code>getAdminDatabase</code>. The public modular surface stays rules-honest; this exists so hosts (the SharedWorker’s <code>actAs: { mode: 'admin' }</code> lens) can serve firebase-admin semantics against the same shared store.</td></tr><tr><td align="left"><a id="bucket-1"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="context"></a> <code>context</code></td><td align="left"><code>readonly</code></td><td align="left"><code>SandboxContext</code></td><td align="left">-</td></tr><tr><td align="left"><a id="currentauth"></a> <code>currentAuth?</code></td><td align="left"><code>readonly</code></td><td align="left">() => <code>AuthState</code></td><td align="left">App handles resolve auth at operation time; explicit contexts stay frozen.</td></tr><tr><td align="left"><a id="kind"></a> <code>kind</code></td><td align="left"><code>readonly</code></td><td align="left"><code>"sandbox"</code></td><td align="left">-</td></tr><tr><td align="left"><a id="sandbox"></a> <code>sandbox</code></td><td align="left"><code>readonly</code></td><td align="left"><code>Sandbox</code></td><td align="left">-</td></tr><tr><td align="left"><a id="servicepromise"></a> <code>servicePromise</code></td><td align="left"><code>readonly</code></td><td align="left"><code>Promise</code>&#x3C;<code>StorageService</code>></td><td align="left">-</td></tr></tbody></table></div>
743
+ <hr>
744
+ <p><a id="settablemetadata"></a></p>
745
+ <h3 id="settablemetadata">SettableMetadata</h3>
746
+ <p>Client-settable fields. Passed to <code>uploadBytes</code> /
747
+ <code>uploadString</code> / <code>updateMetadata</code>. Every field is optional — the
748
+ upload pipeline fills any unsupplied client fields with sane
749
+ defaults (e.g. <code>contentType</code> falls back to <code>application/octet-stream</code>).</p>
750
+ <h4 id="extended-by">Extended by</h4>
751
+ <ul>
752
+ <li><a href="#fullmetadata"><code>FullMetadata</code></a></li>
753
+ </ul>
754
+ <h4 id="properties-14">Properties</h4>
755
+ <div class="table-scroll">
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="cachecontrol-1"></a> <code>cacheControl?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentdisposition-1"></a> <code>contentDisposition?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentencoding-1"></a> <code>contentEncoding?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contentlanguage-1"></a> <code>contentLanguage?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="contenttype-1"></a> <code>contentType?</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="custommetadata-1"></a> <code>customMetadata?</code></td><td align="left">{ [<code>key</code>: <code>string</code>]: <code>string</code>; }</td></tr></tbody></table></div>
789
+ <hr>
790
+ <p><a id="storageadmintooldeps"></a></p>
791
+ <h3 id="storageadmintooldeps">StorageAdminToolDeps</h3>
792
+ <h4 id="properties-15">Properties</h4>
793
+ <div class="table-scroll">
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="scope"></a> <code>scope</code></td><td align="left"><code>ProjectScope</code></td><td align="left">Project identity + token resolver.</td></tr></tbody></table></div>
809
+ <hr>
810
+ <p><a id="storageauth"></a></p>
811
+ <h3 id="storageauth">StorageAuth</h3>
812
+ <p>Identity passed in with the request. <code>null</code> is anonymous.</p>
813
+ <h4 id="properties-16">Properties</h4>
814
+ <div class="table-scroll">
815
+
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+
829
+
830
+
831
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="token"></a> <code>token?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr><tr><td align="left"><a id="uid"></a> <code>uid</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
832
+ <hr>
833
+ <p><a id="storageoptions"></a></p>
834
+ <h3 id="storageoptions">StorageOptions</h3>
835
+ <p>Options for <a href="#getstoragesandbox">getStorageSandbox</a>.</p>
836
+ <h4 id="properties-17">Properties</h4>
837
+ <div class="table-scroll">
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucket-2"></a> <code>bucket?</code></td><td align="left"><code>string</code></td><td align="left">Bucket identifier recorded on uploaded metadata. v1 has a single implicit bucket and does not enforce cross-bucket isolation — passing different values per call is accepted and round-trips in metadata, but the data store is shared.</td></tr><tr><td align="left"><a id="dbname"></a> <code>dbName?</code></td><td align="left"><code>string</code></td><td align="left">Override the IndexedDB database name. Tests pass per-case unique names so state doesn’t leak between runs. Only takes effect on the FIRST call per <code>Sandbox</code>.</td></tr><tr><td align="left"><a id="rules-2"></a> <code>rules?</code></td><td align="left"><code>string</code></td><td align="left">Storage rules source. Parsed eagerly so a malformed string throws at config time. Only honored on the FIRST call per <code>Sandbox</code>.</td></tr></tbody></table></div>
863
+ <hr>
864
+ <p><a id="storagereference"></a></p>
865
+ <h3 id="storagereference">StorageReference</h3>
866
+ <p>Public reference shape. Methods are inherited from the impl
867
+ classes below; the interface is exported so consumer code can
868
+ name the type without depending on the impls.</p>
869
+ <h4 id="properties-18">Properties</h4>
870
+ <div class="table-scroll">
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+ <table><thead><tr><th align="left">Property</th><th align="left">Modifier</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="bucket-3"></a> <code>bucket</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="fullpath-1"></a> <code>fullPath</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="name-2"></a> <code>name</code></td><td align="left"><code>readonly</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><a id="parent"></a> <code>parent</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><a id="root"></a> <code>root</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><a id="storage"></a> <code>storage</code></td><td align="left"><code>readonly</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr></tbody></table></div>
911
+ <h4 id="methods-3">Methods</h4>
912
+ <p><a id="tostring"></a></p>
913
+ <h5 id="tostring">toString()</h5>
914
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#61AFEF">toString</span><span style="color:#ABB2BF">(): </span><span style="color:#E06C75">string</span><span style="color:#ABB2BF">;</span></span></code></pre>
915
+ <h6 id="returns-8">Returns</h6>
916
+ <p><code>string</code></p>
917
+ <hr>
918
+ <p><a id="storagerequest"></a></p>
919
+ <h3 id="storagerequest">StorageRequest</h3>
920
+ <p>Inbound request bindings the rules see.</p>
921
+ <h4 id="properties-19">Properties</h4>
922
+ <div class="table-scroll">
923
+
924
+
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+
963
+
964
+
965
+
966
+
967
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="auth"></a> <code>auth</code></td><td align="left"><a href="#storageauth"><code>StorageAuth</code></a></td><td align="left">-</td></tr><tr><td align="left"><a id="method-1"></a> <code>method</code></td><td align="left"><a href="#storagerequestmethod-1"><code>StorageRequestMethod</code></a></td><td align="left">-</td></tr><tr><td align="left"><a id="path"></a> <code>path</code></td><td align="left"><code>string</code></td><td align="left">Path of the object the request targets.</td></tr><tr><td align="left"><a id="resource-1"></a> <code>resource?</code></td><td align="left">{ <code>contentType?</code>: <code>string</code>; <code>metadata?</code>: <code>Record</code>&#x3C;<code>string</code>, <code>string</code>>; <code>size</code>: <code>number</code>; }</td><td align="left">Per-Firebase: on writes, <code>request.resource</code> describes the about-to-write object. Omit for reads (the rules language treats <code>request.resource</code> as unset there).</td></tr><tr><td align="left"><code>resource.contentType?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><code>resource.metadata?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>string</code>></td><td align="left">-</td></tr><tr><td align="left"><code>resource.size</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr></tbody></table></div>
968
+ <hr>
969
+ <p><a id="storageresource"></a></p>
970
+ <h3 id="storageresource">StorageResource</h3>
971
+ <p>Existing-object bindings (for <code>resource.*</code>). <code>null</code> when no object exists
972
+ yet (creates).</p>
973
+ <p>The object-identity/time fields carry GOOGLE CLOUD STORAGE semantics, not
974
+ the client SDK’s <code>FullMetadata</code> semantics — the two disagree on <code>name</code>:</p>
975
+ <ul>
976
+ <li>rules <code>resource.name</code> is the object’s FULL path within the bucket
977
+ (<code>uploads/pic.png</code>), the GCS object-name convention. The client SDK’s
978
+ <code>FullMetadata.name</code> is the LAST path segment (<code>pic.png</code>). The adapter
979
+ (<code>resourceFromStored</code>) therefore sources <code>name</code> from the persisted
980
+ record’s <code>fullPath</code>, NOT its <code>name</code>.</li>
981
+ <li><code>timeCreated</code> / <code>updated</code> are ISO-8601 strings here (the persisted
982
+ shape); the evaluator converts them to epoch millis when it builds the
983
+ binding, so they compare numerically against <code>request.time</code> and against
984
+ each other. Production types them as <code>timestamp</code> and rejects an int in
985
+ their place (“Received: int &#x3C; timestamp”).</li>
986
+ <li>The update-time field is <code>updated</code>. There is NO <code>resource.timeUpdated</code>
987
+ in the Storage rules language.</li>
988
+ </ul>
989
+ <p>A field left <code>undefined</code> reads as ABSENT, which production treats as an
990
+ evaluation error that denies (see RuleError).</p>
991
+ <h4 id="properties-20">Properties</h4>
992
+ <div class="table-scroll">
993
+
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><a id="bucket-4"></a> <code>bucket?</code></td><td align="left"><code>string</code></td><td align="left">Bucket the object lives in.</td></tr><tr><td align="left"><a id="contenttype-2"></a> <code>contentType?</code></td><td align="left"><code>string</code></td><td align="left">-</td></tr><tr><td align="left"><a id="generation-1"></a> <code>generation?</code></td><td align="left"><code>number</code></td><td align="left">Content generation (production types it <code>int</code>).</td></tr><tr><td align="left"><a id="metadata"></a> <code>metadata?</code></td><td align="left"><code>Record</code>&#x3C;<code>string</code>, <code>string</code>></td><td align="left">-</td></tr><tr><td align="left"><a id="metageneration-1"></a> <code>metageneration?</code></td><td align="left"><code>number</code></td><td align="left">Metadata generation (production types it <code>int</code>).</td></tr><tr><td align="left"><a id="name-3"></a> <code>name?</code></td><td align="left"><code>string</code></td><td align="left">Full object path within the bucket, e.g. <code>uploads/pic.png</code>.</td></tr><tr><td align="left"><a id="size-1"></a> <code>size</code></td><td align="left"><code>number</code></td><td align="left">-</td></tr><tr><td align="left"><a id="timecreated-1"></a> <code>timeCreated?</code></td><td align="left"><code>string</code></td><td align="left">ISO-8601 creation time.</td></tr><tr><td align="left"><a id="updated-1"></a> <code>updated?</code></td><td align="left"><code>string</code></td><td align="left">ISO-8601 time of the most recent content/metadata update.</td></tr></tbody></table></div>
1048
+ <hr>
1049
+ <p><a id="storagerules"></a></p>
1050
+ <h3 id="storagerules">StorageRules</h3>
1051
+ <p>Opaque parsed-rules handle returned by <code>parseStorageRules</code>.</p>
1052
+ <hr>
1053
+ <p><a id="uploadresult"></a></p>
1054
+ <h3 id="uploadresult">UploadResult</h3>
1055
+ <p>Return shape of <code>uploadBytes</code> / <code>uploadString</code>.</p>
1056
+ <h4 id="properties-21">Properties</h4>
1057
+ <div class="table-scroll">
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+ <table><thead><tr><th align="left">Property</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><a id="metadata-1"></a> <code>metadata</code></td><td align="left"><a href="#fullmetadata"><code>FullMetadata</code></a></td></tr><tr><td align="left"><a id="ref"></a> <code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
1075
+ <h2 id="type-aliases">Type Aliases</h2>
1076
+ <p><a id="provisionstorageerrorcode"></a></p>
1077
+ <h3 id="provisionstorageerrorcode">ProvisionStorageErrorCode</h3>
1078
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ProvisionStorageErrorCode</span><span style="color:#56B6C2"> =</span></span>
1079
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"PERMISSION_DENIED"</span></span>
1080
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"SERVICE_DISABLED"</span></span>
1081
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"LOCATION_FINALIZE_FAILED"</span></span>
1082
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"BUCKET_CREATE_FAILED"</span></span>
1083
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"RULES_DEPLOY_FAILED"</span></span>
1084
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"CORS_UPDATE_FAILED"</span></span>
1085
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"UNKNOWN"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1086
+ <hr>
1087
+ <p><a id="provisionstorageoutcome"></a></p>
1088
+ <h3 id="provisionstorageoutcome">ProvisionStorageOutcome</h3>
1089
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ProvisionStorageOutcome</span><span style="color:#56B6C2"> =</span></span>
1090
+ <span class="line"><span style="color:#ABB2BF"> | {</span></span>
1091
+ <span class="line"><span style="color:#E06C75"> bucketCreated</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1092
+ <span class="line"><span style="color:#E06C75"> bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1093
+ <span class="line"><span style="color:#E06C75"> corsApplied</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1094
+ <span class="line"><span style="color:#E06C75"> locationFinalized</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1095
+ <span class="line"><span style="color:#E06C75"> locationId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">null</span><span style="color:#ABB2BF">;</span></span>
1096
+ <span class="line"><span style="color:#E06C75"> rulesDeployed</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1097
+ <span class="line"><span style="color:#E06C75"> rulesetName</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1098
+ <span class="line"><span style="color:#E06C75"> serviceEnabled</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1099
+ <span class="line"><span style="color:#E06C75"> success</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">true</span><span style="color:#ABB2BF">;</span></span>
1100
+ <span class="line"><span style="color:#ABB2BF">}</span></span>
1101
+ <span class="line"><span style="color:#ABB2BF"> | {</span></span>
1102
+ <span class="line"><span style="color:#E06C75"> error</span><span style="color:#ABB2BF">: {</span></span>
1103
+ <span class="line"><span style="color:#E06C75"> code</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ProvisionStorageErrorCode</span><span style="color:#ABB2BF">;</span></span>
1104
+ <span class="line"><span style="color:#E06C75"> message</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1105
+ <span class="line"><span style="color:#E06C75"> recoverable</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">boolean</span><span style="color:#ABB2BF">;</span></span>
1106
+ <span class="line"><span style="color:#ABB2BF"> };</span></span>
1107
+ <span class="line"><span style="color:#E06C75"> success</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">false</span><span style="color:#ABB2BF">;</span></span>
1108
+ <span class="line"><span style="color:#ABB2BF">};</span></span></code></pre>
1109
+ <hr>
1110
+ <p><a id="serviceenablestate"></a></p>
1111
+ <h3 id="serviceenablestate">ServiceEnableState</h3>
1112
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> ServiceEnableState</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "enabled"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"disabled"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unknown"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1113
+ <hr>
1114
+ <p><a id="storageerrorcode-1"></a></p>
1115
+ <h3 id="storageerrorcode">StorageErrorCode</h3>
1116
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageErrorCode</span><span style="color:#56B6C2"> =</span></span>
1117
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unknown"</span></span>
1118
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"object-not-found"</span></span>
1119
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"quota-exceeded"</span></span>
1120
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unauthenticated"</span></span>
1121
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"unauthorized"</span></span>
1122
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-root-operation"</span></span>
1123
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-format"</span></span>
1124
+ <span class="line"><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"invalid-argument"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1125
+ <p>The unprefixed storage error codes the sandbox can raise. Mirrors
1126
+ the subset of <code>StorageErrorCode</code> the implemented operations use;
1127
+ resumable uploads and checksums remain out of scope.</p>
1128
+ <hr>
1129
+ <p><a id="storagegrantverb"></a></p>
1130
+ <h3 id="storagegrantverb">StorageGrantVerb</h3>
1131
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageGrantVerb</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">StorageVerb</span><span style="color:#ABB2BF">;</span></span></code></pre>
1132
+ <p>A verb token that may appear in an <code>allow</code> clause.</p>
1133
+ <hr>
1134
+ <p><a id="storagemethod"></a></p>
1135
+ <h3 id="storagemethod">StorageMethod</h3>
1136
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "read"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"write"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1137
+ <p>Coarse permission umbrellas. <code>read</code> covers get + list; <code>write</code>
1138
+ covers create + update + delete.</p>
1139
+ <hr>
1140
+ <p><a id="storagerequestmethod-1"></a></p>
1141
+ <h3 id="storagerequestmethod">StorageRequestMethod</h3>
1142
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageRequestMethod</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> StorageMethod</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">StorageVerb</span><span style="color:#ABB2BF">;</span></span></code></pre>
1143
+ <p>What a caller records as the request’s operation. Callers pass the
1144
+ precise granular verb; the coarse forms remain accepted so the
1145
+ umbrella semantics are symmetric.</p>
1146
+ <hr>
1147
+ <p><a id="storageverb"></a></p>
1148
+ <h3 id="storageverb">StorageVerb</h3>
1149
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StorageVerb</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "get"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"list"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"create"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"update"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"delete"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1150
+ <p>Granular operation verbs. Production Storage maps each operation to
1151
+ exactly one of these:
1152
+ download / getMetadata → get
1153
+ list → list
1154
+ upload to NONEXISTENT path → create
1155
+ upload / updateMetadata over
1156
+ an EXISTING object → update
1157
+ delete → delete</p>
1158
+ <hr>
1159
+ <p><a id="stringformat"></a></p>
1160
+ <h3 id="stringformat">StringFormat</h3>
1161
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> StringFormat</span><span style="color:#56B6C2"> =</span><span style="color:#98C379"> "raw"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"base64"</span><span style="color:#ABB2BF"> | </span><span style="color:#98C379">"data_url"</span><span style="color:#ABB2BF">;</span></span></code></pre>
1162
+ <p><code>uploadString</code> format selector.</p>
1163
+ <hr>
1164
+ <p><a id="target"></a></p>
1165
+ <h3 id="target">Target</h3>
1166
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">type</span><span style="color:#E5C07B"> Target</span><span style="color:#56B6C2"> =</span><span style="color:#E5C07B"> SandboxTarget</span><span style="color:#ABB2BF">;</span></span></code></pre>
1167
+ <h2 id="variables">Variables</h2>
1168
+ <p><a id="target_symbol-1"></a></p>
1169
+ <h3 id="target_symbol">TARGET_SYMBOL</h3>
1170
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">const</span><span style="color:#E5C07B"> TARGET_SYMBOL</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">unique</span><span style="color:#E5C07B"> symbol</span><span style="color:#ABB2BF">;</span></span></code></pre>
1171
+ <p>Hidden property on every <a href="#firebasestorage">FirebaseStorage</a> handle. Carries
1172
+ the sandbox state free functions share without exposing it publicly.</p>
1173
+ <h2 id="functions">Functions</h2>
1174
+ <p><a id="addfirebasetobucket"></a></p>
1175
+ <h3 id="addfirebasetobucket">addFirebaseToBucket()</h3>
1176
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> addFirebaseToBucket</span><span style="color:#ABB2BF">(</span></span>
1177
+ <span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1178
+ <span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1179
+ <span class="line"><span style="color:#E06C75;font-style:italic">bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">FirebaseStorageBucket</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1180
+ <p>Link a Cloud Storage bucket to Firebase Storage. Idempotent — if
1181
+ the bucket is already Firebase-linked, the API returns 200 with
1182
+ the existing record. The bucket must already exist as a GCS
1183
+ resource; for the default Firebase bucket name
1184
+ (<code>{projectId}.firebasestorage.app</code>), Firebase auto-creates it on
1185
+ first <code>:addFirebase</code> call.</p>
1186
+ <h4 id="parameters-6">Parameters</h4>
1187
+ <div class="table-scroll">
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+
1199
+
1200
+
1201
+
1202
+
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1209
+ <h4 id="returns-9">Returns</h4>
1210
+ <p><code>Promise</code>&#x3C;<a href="#firebasestoragebucket"><code>FirebaseStorageBucket</code></a>></p>
1211
+ <hr>
1212
+ <p><a id="connectstorageemulator"></a></p>
1213
+ <h3 id="connectstorageemulator">connectStorageEmulator()</h3>
1214
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> connectStorageEmulator</span><span style="color:#ABB2BF">(</span></span>
1215
+ <span class="line"><span style="color:#E06C75;font-style:italic"> _storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">,</span></span>
1216
+ <span class="line"><span style="color:#E06C75;font-style:italic"> _host</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1217
+ <span class="line"><span style="color:#E06C75;font-style:italic"> _port</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">,</span></span>
1218
+ <span class="line"><span style="color:#E06C75;font-style:italic"> _options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: {</span></span>
1219
+ <span class="line"><span style="color:#E06C75"> mockUserToken</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Record</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>;</span></span>
1220
+ <span class="line"><span style="color:#ABB2BF">}): </span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">;</span></span></code></pre>
1221
+ <p>Accepted no-op because the selected Storage backend already is local.</p>
1222
+ <h4 id="parameters-7">Parameters</h4>
1223
+ <div class="table-scroll">
1224
+
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>_storage</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr><tr><td align="left"><code>_host</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>_port</code></td><td align="left"><code>number</code></td></tr><tr><td align="left"><code>_options?</code></td><td align="left">{ <code>mockUserToken?</code>: <code>string</code> | <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>>; }</td></tr><tr><td align="left"><code>_options.mockUserToken?</code></td><td align="left"><code>string</code> | <code>Record</code>&#x3C;<code>string</code>, <code>unknown</code>></td></tr></tbody></table></div>
1253
+ <h4 id="returns-10">Returns</h4>
1254
+ <p><code>void</code></p>
1255
+ <hr>
1256
+ <p><a id="createstorageadmintools"></a></p>
1257
+ <h3 id="createstorageadmintools">createStorageAdminTools()</h3>
1258
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> createStorageAdminTools</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">deps</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageAdminToolDeps</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">ToolHandler</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">, </span><span style="color:#E5C07B">unknown</span><span style="color:#ABB2BF">>[];</span></span></code></pre>
1259
+ <p>Bundles:</p>
1260
+ <ul>
1261
+ <li><code>storage_get_status</code></li>
1262
+ <li><code>storage_provision</code></li>
1263
+ </ul>
1264
+ <h4 id="parameters-8">Parameters</h4>
1265
+ <div class="table-scroll">
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>deps</code></td><td align="left"><a href="#storageadmintooldeps"><code>StorageAdminToolDeps</code></a></td></tr></tbody></table></div>
1279
+ <h4 id="returns-11">Returns</h4>
1280
+ <p><code>ToolHandler</code>&#x3C;<code>unknown</code>, <code>unknown</code>>[]</p>
1281
+ <hr>
1282
+ <p><a id="defaultplaygroundcors"></a></p>
1283
+ <h3 id="defaultplaygroundcors">defaultPlaygroundCors()</h3>
1284
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> defaultPlaygroundCors</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">hostingOrigin</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">CorsRule</span><span style="color:#ABB2BF">[];</span></span></code></pre>
1285
+ <p>Default rule for a browser playground hosted on Firebase Hosting.
1286
+ Allows GET/POST/PUT/DELETE/HEAD/OPTIONS from the Hosting origin</p>
1287
+ <ul>
1288
+ <li>common localhost dev ports, with response headers needed by the
1289
+ Firebase Storage Web SDK.</li>
1290
+ </ul>
1291
+ <h4 id="parameters-9">Parameters</h4>
1292
+ <div class="table-scroll">
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+
1305
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>hostingOrigin</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1306
+ <h4 id="returns-12">Returns</h4>
1307
+ <p><a href="#corsrule"><code>CorsRule</code></a>[]</p>
1308
+ <hr>
1309
+ <p><a id="deleteobject"></a></p>
1310
+ <h3 id="deleteobject">deleteObject()</h3>
1311
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> deleteObject</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1312
+ <p>Delete the object at <code>ref</code> — removes both the blob and the
1313
+ metadata atomically. No-op when the path doesn’t exist (the
1314
+ persistence layer’s <code>delete</code> is no-op on missing keys).</p>
1315
+ <p>NOTE: the JS SDK’s <code>deleteObject</code> throws
1316
+ <code>storage/object-not-found</code> when the path is missing. The v1 scope
1317
+ keeps the persistence-layer no-op behavior for now; Slice 8 will
1318
+ reconsider whether to mirror the strict throw.</p>
1319
+ <p><code>provenance</code> (host-only): op EventProvenance bound at ISSUE time,
1320
+ threaded EXPLICITLY onto the emitted <code>object_delete</code> event. The delete
1321
+ awaits the backend before emitting, so it escapes the sandbox’s
1322
+ synchronous ambient-provenance window — see the note on <code>uploadBytes</code>.</p>
1323
+ <h4 id="parameters-10">Parameters</h4>
1324
+ <div class="table-scroll">
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+
1331
+
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
1342
+ <h4 id="returns-13">Returns</h4>
1343
+ <p><code>Promise</code>&#x3C;<code>void</code>></p>
1344
+ <hr>
1345
+ <p><a id="deploystoragerules"></a></p>
1346
+ <h3 id="deploystoragerules">deployStorageRules()</h3>
1347
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> deployStorageRules</span><span style="color:#ABB2BF">(</span></span>
1348
+ <span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1349
+ <span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1350
+ <span class="line"><span style="color:#E06C75;font-style:italic"> source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1351
+ <span class="line"><span style="color:#E06C75;font-style:italic"> bucketId</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;{</span></span>
1352
+ <span class="line"><span style="color:#E06C75"> rulesetName</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">;</span></span>
1353
+ <span class="line"><span style="color:#ABB2BF">}>;</span></span></code></pre>
1354
+ <p>Deploy a Storage rules source for a specific bucket. Firebase
1355
+ Storage uses <strong>per-bucket</strong> release names —
1356
+ <code>projects/{p}/releases/firebase.storage/{bucketId}</code> — for actual
1357
+ rule application. The project-wide <code>firebase.storage</code> release
1358
+ exists as a legacy alias but isn’t bound to any bucket in modern
1359
+ projects; deploying to it leaves the bucket’s deny-all rule
1360
+ unchanged.</p>
1361
+ <p>Defaults <code>bucketId</code> to <code>{projectId}.firebasestorage.app</code> (the
1362
+ Firebase default bucket name). Pass an override when targeting a
1363
+ non-default bucket.</p>
1364
+ <h4 id="parameters-11">Parameters</h4>
1365
+ <div class="table-scroll">
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+
1373
+
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+
1387
+
1388
+
1389
+
1390
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1391
+ <h4 id="returns-14">Returns</h4>
1392
+ <p><code>Promise</code>&#x3C;{
1393
+ <code>rulesetName</code>: <code>string</code>;
1394
+ }></p>
1395
+ <hr>
1396
+ <p><a id="enablestorageservice"></a></p>
1397
+ <h3 id="enablestorageservice">enableStorageService()</h3>
1398
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> enableStorageService</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1399
+ <p>Enable <code>firebasestorage.googleapis.com</code> on the project. Requires
1400
+ <code>serviceusage.services.enable</code> IAM permission — included in
1401
+ <code>roles/owner</code>, <code>roles/editor</code> (deprecated), or
1402
+ <code>roles/serviceusage.serviceUsageAdmin</code>. The default Firebase Admin
1403
+ SDK service account does NOT have this; the caller’s token must
1404
+ either be a user-OAuth with <code>cloud-platform</code> scope or a SA with
1405
+ the elevated role.</p>
1406
+ <p>Long-running operation under the hood; the response carries an
1407
+ operation name. We don’t poll — the response 200 is enough signal
1408
+ for our purposes, and a brief settle delay handles propagation.</p>
1409
+ <h4 id="parameters-12">Parameters</h4>
1410
+ <div class="table-scroll">
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1428
+ <h4 id="returns-15">Returns</h4>
1429
+ <p><code>Promise</code>&#x3C;<code>void</code>></p>
1430
+ <hr>
1431
+ <p><a id="evaluatestoragerules"></a></p>
1432
+ <h3 id="evaluatestoragerules">evaluateStorageRules()</h3>
1433
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> evaluateStorageRules</span><span style="color:#ABB2BF">(</span></span>
1434
+ <span class="line"><span style="color:#E06C75;font-style:italic"> rules</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageRules</span><span style="color:#ABB2BF">,</span></span>
1435
+ <span class="line"><span style="color:#E06C75;font-style:italic"> input</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EvaluationInput</span><span style="color:#ABB2BF">,</span></span>
1436
+ <span class="line"><span style="color:#E06C75;font-style:italic"> now</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Date</span><span style="color:#ABB2BF">,</span></span>
1437
+ <span class="line"><span style="color:#E06C75;font-style:italic"> firestoreLookup</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirestoreLookup</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">EvaluationResult</span><span style="color:#ABB2BF">;</span></span></code></pre>
1438
+ <p>Evaluate the rules against a request + resource binding. Returns
1439
+ <code>{ allowed, reasons }</code>. <code>allowed</code> is true iff any <code>allow</code> clause
1440
+ at any matching match block evaluates to a truthy condition.</p>
1441
+ <p>Path-matching strategy: the request’s path is segmented and
1442
+ walked against the AST’s match tree. Wildcards (<code>{p=**}</code>) match
1443
+ zero or more remaining segments; named params bind one segment.</p>
1444
+ <p>Multi-clause failure mode: when no clause matches, <code>reasons</code>
1445
+ contains a short trace (“no match found for path X” or “rule at
1446
+ match /sessions/{id} denied: condition false”). Helpful for the
1447
+ playground’s error surface.</p>
1448
+ <h4 id="parameters-13">Parameters</h4>
1449
+ <div class="table-scroll">
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+
1457
+
1458
+
1459
+
1460
+
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>rules</code></td><td align="left"><a href="#storagerules"><code>StorageRules</code></a></td></tr><tr><td align="left"><code>input</code></td><td align="left"><a href="#evaluationinput"><code>EvaluationInput</code></a></td></tr><tr><td align="left"><code>now?</code></td><td align="left"><code>Date</code></td></tr><tr><td align="left"><code>firestoreLookup?</code></td><td align="left"><a href="#firestorelookup"><code>FirestoreLookup</code></a></td></tr></tbody></table></div>
1475
+ <h4 id="returns-16">Returns</h4>
1476
+ <p><a href="#evaluationresult"><code>EvaluationResult</code></a></p>
1477
+ <hr>
1478
+ <p><a id="finalizedefaultlocation"></a></p>
1479
+ <h3 id="finalizedefaultlocation">finalizeDefaultLocation()</h3>
1480
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> finalizeDefaultLocation</span><span style="color:#ABB2BF">(</span></span>
1481
+ <span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1482
+ <span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1483
+ <span class="line"><span style="color:#E06C75;font-style:italic">locationId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1484
+ <p>Set the project’s default GCP resources location. IRREVERSIBLE —
1485
+ once set, the location cannot be changed. Skip-if-set is the
1486
+ caller’s job; this function unconditionally calls <code>:finalize</code>.</p>
1487
+ <p>Per observed behavior, <code>:finalize</code> 404s on projects that already
1488
+ have resources provisioned (RTDB, Hosting) without a default
1489
+ location. The error path surfaces that to the caller.</p>
1490
+ <h4 id="parameters-14">Parameters</h4>
1491
+ <div class="table-scroll">
1492
+
1493
+
1494
+
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+
1502
+
1503
+
1504
+
1505
+
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>locationId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1513
+ <h4 id="returns-17">Returns</h4>
1514
+ <p><code>Promise</code>&#x3C;<code>void</code>></p>
1515
+ <hr>
1516
+ <p><a id="getblob"></a></p>
1517
+ <h3 id="getblob">getBlob()</h3>
1518
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getBlob</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">maxDownloadSizeBytes</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1519
+ <p>Read the blob at <code>ref</code> and return it as a <code>Blob</code>. Same semantics
1520
+ as <code>getBytes</code> but skips the <code>arrayBuffer()</code> conversion when the
1521
+ caller wants a <code>Blob</code> directly (e.g. for streaming or
1522
+ <code>URL.createObjectURL</code>). Note: this is the browser-side
1523
+ counterpart of the JS SDK’s <code>getBlob</code> — the v1 scope doesn’t ship
1524
+ a Node-stream variant.</p>
1525
+ <h4 id="parameters-15">Parameters</h4>
1526
+ <div class="table-scroll">
1527
+
1528
+
1529
+
1530
+
1531
+
1532
+
1533
+
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>maxDownloadSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1544
+ <h4 id="returns-18">Returns</h4>
1545
+ <p><code>Promise</code>&#x3C;<code>Blob</code>></p>
1546
+ <hr>
1547
+ <p><a id="getbucketcors"></a></p>
1548
+ <h3 id="getbucketcors">getBucketCors()</h3>
1549
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getBucketCors</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">CorsRule</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
1550
+ <p>Read the current CORS configuration for a bucket.</p>
1551
+ <h4 id="parameters-16">Parameters</h4>
1552
+ <div class="table-scroll">
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1570
+ <h4 id="returns-19">Returns</h4>
1571
+ <p><code>Promise</code>&#x3C;<a href="#corsrule"><code>CorsRule</code></a>[]></p>
1572
+ <hr>
1573
+ <p><a id="getbytes"></a></p>
1574
+ <h3 id="getbytes">getBytes()</h3>
1575
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getBytes</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">maxDownloadSizeBytes</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">number</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1576
+ <p>Read the blob at <code>ref</code> and return its contents as an
1577
+ <code>ArrayBuffer</code>. Honors the optional <code>maxDownloadSizeBytes</code> cap by
1578
+ truncating to that length.</p>
1579
+ <h4 id="parameters-17">Parameters</h4>
1580
+ <div class="table-scroll">
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>maxDownloadSizeBytes?</code></td><td align="left"><code>number</code></td></tr></tbody></table></div>
1598
+ <h4 id="returns-20">Returns</h4>
1599
+ <p><code>Promise</code>&#x3C;<code>ArrayBuffer</code>></p>
1600
+ <hr>
1601
+ <p><a id="getdefaultlocation"></a></p>
1602
+ <h3 id="getdefaultlocation">getDefaultLocation()</h3>
1603
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getDefaultLocation</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1604
+ <p>Read the project’s current default GCP resources location. Returns
1605
+ null when the project hasn’t been finalized yet — e.g. brand-new
1606
+ Firebase projects with no resources. <code>firebase</code> scope is sufficient.</p>
1607
+ <h4 id="parameters-18">Parameters</h4>
1608
+ <div class="table-scroll">
1609
+
1610
+
1611
+
1612
+
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1626
+ <h4 id="returns-21">Returns</h4>
1627
+ <p><code>Promise</code>&#x3C;<code>string</code>></p>
1628
+ <hr>
1629
+ <p><a id="getdownloadurl"></a></p>
1630
+ <h3 id="getdownloadurl">getDownloadURL()</h3>
1631
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getDownloadURL</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1632
+ <p>Return a URL the current page can use to read the sandbox object. The URL is
1633
+ created from the same rules-checked blob as <a href="#getblob">getBlob</a>. It is a
1634
+ snapshot, cannot be shared outside the page, and stays
1635
+ alive until the caller revokes it or the page unloads.</p>
1636
+ <h4 id="parameters-19">Parameters</h4>
1637
+ <div class="table-scroll">
1638
+
1639
+
1640
+
1641
+
1642
+
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
1651
+ <h4 id="returns-22">Returns</h4>
1652
+ <p><code>Promise</code>&#x3C;<code>string</code>></p>
1653
+ <hr>
1654
+ <p><a id="getmetadata"></a></p>
1655
+ <h3 id="getmetadata">getMetadata()</h3>
1656
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getMetadata</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1657
+ <p>Read the full metadata record at <code>ref</code>. Throws when no object
1658
+ exists at the path (<code>storage/object-not-found</code>).</p>
1659
+ <p>Mirrors <code>firebase/storage</code>’s <code>getMetadata</code>. Returns the same
1660
+ <code>FullMetadata</code> shape <code>uploadBytes</code> produced — server-set fields
1661
+ pinned at upload time, client-settable fields whatever the latest
1662
+ write left them as.</p>
1663
+ <h4 id="parameters-20">Parameters</h4>
1664
+ <div class="table-scroll">
1665
+
1666
+
1667
+
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
1678
+ <h4 id="returns-23">Returns</h4>
1679
+ <p><code>Promise</code>&#x3C;<a href="#fullmetadata"><code>FullMetadata</code></a>></p>
1680
+ <hr>
1681
+ <p><a id="getstorage"></a></p>
1682
+ <h3 id="getstorage">getStorage()</h3>
1683
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getStorage</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">app</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseApp</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">bucketUrl</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">AppFirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
1684
+ <p>Resolve the Firebase-shaped Storage service associated with an app.</p>
1685
+ <h4 id="parameters-21">Parameters</h4>
1686
+ <div class="table-scroll">
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+
1695
+
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>app?</code></td><td align="left"><code>FirebaseApp</code></td></tr><tr><td align="left"><code>bucketUrl?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1704
+ <h4 id="returns-24">Returns</h4>
1705
+ <p><code>AppFirebaseStorage</code></p>
1706
+ <hr>
1707
+ <p><a id="getstoragesandbox"></a></p>
1708
+ <h3 id="getstoragesandbox">getStorageSandbox()</h3>
1709
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getStorageSandbox</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">target</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">any</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">;</span></span></code></pre>
1710
+ <p>Construct (or return cached) a sandbox-backed <code>FirebaseStorage</code>
1711
+ handle. Accepts either a bare <code>Sandbox</code> (anonymous identity wired
1712
+ up via <code>sandbox.withAuth(null)</code>) or an explicit <code>SandboxContext</code>.
1713
+ Idempotent on <code>SandboxContext</code> identity.</p>
1714
+ <h4 id="parameters-22">Parameters</h4>
1715
+ <div class="table-scroll">
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>target</code></td><td align="left"><code>any</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#storageoptions"><code>StorageOptions</code></a></td></tr></tbody></table></div>
1733
+ <h4 id="returns-25">Returns</h4>
1734
+ <p><a href="#firebasestorage"><code>FirebaseStorage</code></a></p>
1735
+ <hr>
1736
+ <p><a id="getstorageservicestate"></a></p>
1737
+ <h3 id="getstorageservicestate">getStorageServiceState()</h3>
1738
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> getStorageServiceState</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ServiceEnableState</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1739
+ <p>Probe whether the <code>firebasestorage.googleapis.com</code> service is
1740
+ enabled on the project. Cheap, uses Service Usage <code>GET</code>. Requires
1741
+ <code>serviceusage.services.get</code> permission (the default Firebase Admin
1742
+ SDK SA has this; user OAuth tokens with <code>firebase</code> scope do not).</p>
1743
+ <p>Returns <code>'unknown'</code> on permission failures so callers can downgrade
1744
+ to “try the operation; observe SERVICE_DISABLED” rather than block.</p>
1745
+ <h4 id="parameters-23">Parameters</h4>
1746
+ <div class="table-scroll">
1747
+
1748
+
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+
1762
+
1763
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1764
+ <h4 id="returns-26">Returns</h4>
1765
+ <p><code>Promise</code>&#x3C;<a href="#serviceenablestate"><code>ServiceEnableState</code></a>></p>
1766
+ <hr>
1767
+ <p><a id="listall"></a></p>
1768
+ <h3 id="listall">listAll()</h3>
1769
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> listAll</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">refIn</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ListResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1770
+ <p>Enumerate every immediate child item + sub-prefix under <code>refIn</code>.
1771
+ Works on the root reference too — pass <code>ref(storage)</code> to scan the
1772
+ whole bucket.</p>
1773
+ <h4 id="parameters-24">Parameters</h4>
1774
+ <div class="table-scroll">
1775
+
1776
+
1777
+
1778
+
1779
+
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>refIn</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr></tbody></table></div>
1788
+ <h4 id="returns-27">Returns</h4>
1789
+ <p><code>Promise</code>&#x3C;<a href="#listresult"><code>ListResult</code></a>></p>
1790
+ <hr>
1791
+ <p><a id="listfirebasebuckets"></a></p>
1792
+ <h3 id="listfirebasebuckets">listFirebaseBuckets()</h3>
1793
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> listFirebaseBuckets</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">FirebaseStorageBucket</span><span style="color:#ABB2BF">[]>;</span></span></code></pre>
1794
+ <p>List Firebase-linked Storage buckets on the project. Returns an
1795
+ empty list when none exist yet. Throws when the underlying service
1796
+ is disabled — callers should check <code>getStorageServiceState</code> first
1797
+ if they want to distinguish.</p>
1798
+ <h4 id="parameters-25">Parameters</h4>
1799
+ <div class="table-scroll">
1800
+
1801
+
1802
+
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1817
+ <h4 id="returns-28">Returns</h4>
1818
+ <p><code>Promise</code>&#x3C;<a href="#firebasestoragebucket"><code>FirebaseStorageBucket</code></a>[]></p>
1819
+ <hr>
1820
+ <p><a id="parsestoragerules"></a></p>
1821
+ <h3 id="parsestoragerules">parseStorageRules()</h3>
1822
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> parseStorageRules</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">source</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageRules</span><span style="color:#ABB2BF">;</span></span></code></pre>
1823
+ <p>Parse a Storage rules source into an opaque handle. Throws
1824
+ <code>SyntaxError</code> on malformed input. Used by Slice 8’s
1825
+ <code>getStorage(ctx, { rules })</code> to validate upfront.</p>
1826
+ <h4 id="parameters-26">Parameters</h4>
1827
+ <div class="table-scroll">
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>source</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1841
+ <h4 id="returns-29">Returns</h4>
1842
+ <p><a href="#storagerules"><code>StorageRules</code></a></p>
1843
+ <hr>
1844
+ <p><a id="provisionstorage"></a></p>
1845
+ <h3 id="provisionstorage">provisionStorage()</h3>
1846
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> provisionStorage</span><span style="color:#ABB2BF">(</span></span>
1847
+ <span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1848
+ <span class="line"><span style="color:#E06C75;font-style:italic"> projectId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1849
+ <span class="line"><span style="color:#E06C75;font-style:italic">options</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">ProvisionStorageOptions</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ProvisionStorageResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1850
+ <p>End-to-end Storage enablement + provisioning. Each step is
1851
+ idempotent (probe before mutating); the result reports what was
1852
+ actually done.</p>
1853
+ <p>Permission requirements (caller’s token):</p>
1854
+ <ul>
1855
+ <li><code>roles/serviceusage.serviceUsageAdmin</code> (or Owner) — to enable
1856
+ the service when it’s disabled</li>
1857
+ <li><code>cloud-platform</code> OAuth scope (or <code>firebase</code> if service already
1858
+ enabled)</li>
1859
+ </ul>
1860
+ <p>The handler throws <code>StorageProvisioningError</code> with the
1861
+ underlying <code>reason</code> (e.g. <code>AUTH_PERMISSION_DENIED</code>,
1862
+ <code>SERVICE_DISABLED</code>) so the caller can route to actionable UX.</p>
1863
+ <h4 id="parameters-27">Parameters</h4>
1864
+ <div class="table-scroll">
1865
+
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>projectId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>options?</code></td><td align="left"><a href="#provisionstorageoptions"><code>ProvisionStorageOptions</code></a></td></tr></tbody></table></div>
1886
+ <h4 id="returns-30">Returns</h4>
1887
+ <p><code>Promise</code>&#x3C;<a href="#provisionstorageresult"><code>ProvisionStorageResult</code></a>></p>
1888
+ <hr>
1889
+ <p><a id="ref-1"></a></p>
1890
+ <h3 id="ref">ref()</h3>
1891
+ <h4 id="call-signature">Call Signature</h4>
1892
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> ref</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">storage</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">FirebaseStorage</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
1893
+ <p>Construct a reference. Two overloads matching Firebase:</p>
1894
+ <p><code>ref(storage, path?)</code> — <code>path</code> is bucket-rooted. Omit for root.
1895
+ <code>ref(parent, path)</code> — <code>path</code> is relative to <code>parent.fullPath</code>.</p>
1896
+ <h5 id="parameters-28">Parameters</h5>
1897
+ <div class="table-scroll">
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>storage</code></td><td align="left"><a href="#firebasestorage"><code>FirebaseStorage</code></a></td></tr><tr><td align="left"><code>path?</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1915
+ <h5 id="returns-31">Returns</h5>
1916
+ <p><a href="#storagereference"><code>StorageReference</code></a></p>
1917
+ <h4 id="call-signature-1">Call Signature</h4>
1918
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> ref</span><span style="color:#ABB2BF">(</span><span style="color:#E06C75;font-style:italic">parent</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">, </span><span style="color:#E06C75;font-style:italic">path</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">;</span></span></code></pre>
1919
+ <p>Construct a reference. Two overloads matching Firebase:</p>
1920
+ <p><code>ref(storage, path?)</code> — <code>path</code> is bucket-rooted. Omit for root.
1921
+ <code>ref(parent, path)</code> — <code>path</code> is relative to <code>parent.fullPath</code>.</p>
1922
+ <h5 id="parameters-29">Parameters</h5>
1923
+ <div class="table-scroll">
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>parent</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>path</code></td><td align="left"><code>string</code></td></tr></tbody></table></div>
1941
+ <h5 id="returns-32">Returns</h5>
1942
+ <p><a href="#storagereference"><code>StorageReference</code></a></p>
1943
+ <hr>
1944
+ <p><a id="setbucketcors"></a></p>
1945
+ <h3 id="setbucketcors">setBucketCors()</h3>
1946
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> setBucketCors</span><span style="color:#ABB2BF">(</span></span>
1947
+ <span class="line"><span style="color:#E06C75;font-style:italic"> accessToken</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1948
+ <span class="line"><span style="color:#E06C75;font-style:italic"> bucketId</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
1949
+ <span class="line"><span style="color:#E06C75;font-style:italic">cors</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">CorsRule</span><span style="color:#ABB2BF">[]): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">void</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1950
+ <p>Replace the bucket’s CORS configuration. Pass an empty array to
1951
+ clear all rules. The GCS API replaces (not merges) the cors field
1952
+ on PATCH.</p>
1953
+ <h4 id="parameters-30">Parameters</h4>
1954
+ <div class="table-scroll">
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+
1961
+
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+
1975
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>accessToken</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>bucketId</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>cors</code></td><td align="left"><a href="#corsrule"><code>CorsRule</code></a>[]</td></tr></tbody></table></div>
1976
+ <h4 id="returns-33">Returns</h4>
1977
+ <p><code>Promise</code>&#x3C;<code>void</code>></p>
1978
+ <hr>
1979
+ <p><a id="updatemetadata"></a></p>
1980
+ <h3 id="updatemetadata">updateMetadata()</h3>
1981
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> updateMetadata</span><span style="color:#ABB2BF">(</span></span>
1982
+ <span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
1983
+ <span class="line"><span style="color:#E06C75;font-style:italic"> patch</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
1984
+ <span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">FullMetadata</span><span style="color:#ABB2BF">>;</span></span></code></pre>
1985
+ <p>Update the client-settable metadata at <code>ref</code>. Server-set fields
1986
+ (<code>bucket</code>, <code>fullPath</code>, <code>name</code>, <code>generation</code>, <code>timeCreated</code>,
1987
+ <code>size</code>, <code>md5Hash</code>) are preserved; <code>metageneration</code> bumps and
1988
+ <code>updated</code> refreshes. The blob is untouched.</p>
1989
+ <p>Pass <code>undefined</code> for a field to leave the previous value in
1990
+ place. To explicitly clear a field, the JS SDK accepts <code>null</code> —
1991
+ we don’t model that in the v1 scope to keep the patch logic simple.
1992
+ Documented for Slice 9’s deferred-features section.</p>
1993
+ <p><code>provenance</code> (host-only): op EventProvenance bound at ISSUE time,
1994
+ threaded EXPLICITLY onto the emitted <code>metadata_update</code> event. Emit runs
1995
+ after the backend awaits, escaping the sandbox’s synchronous
1996
+ ambient-provenance window — see the note on <code>uploadBytes</code>.</p>
1997
+ <h4 id="parameters-31">Parameters</h4>
1998
+ <div class="table-scroll">
1999
+
2000
+
2001
+
2002
+
2003
+
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+
2017
+
2018
+
2019
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>patch</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
2020
+ <h4 id="returns-34">Returns</h4>
2021
+ <p><code>Promise</code>&#x3C;<a href="#fullmetadata"><code>FullMetadata</code></a>></p>
2022
+ <hr>
2023
+ <p><a id="uploadbytes"></a></p>
2024
+ <h3 id="uploadbytes">uploadBytes()</h3>
2025
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> uploadBytes</span><span style="color:#ABB2BF">(</span></span>
2026
+ <span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
2027
+ <span class="line"><span style="color:#E06C75;font-style:italic"> data</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">Blob</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">ArrayBuffer</span><span style="color:#ABB2BF"> | </span><span style="color:#E5C07B">Uint8Array</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">ArrayBufferLike</span><span style="color:#ABB2BF">>,</span></span>
2028
+ <span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
2029
+ <span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">UploadResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2030
+ <p>Upload bytes to the reference’s <code>fullPath</code>. Replaces any existing
2031
+ object at the path. Returns the populated <code>FullMetadata</code> and the
2032
+ same <code>ref</code> for chaining.</p>
2033
+ <p>Throws when the reference targets the root (<code>fullPath === ''</code>) —
2034
+ uploads need a non-empty path, matching Firebase’s
2035
+ <code>invalid-root-operation</code> precondition.</p>
2036
+ <p>Provenance is captured from the reference’s operation-scoped Storage
2037
+ handle before the first await. The optional <code>provenance</code> argument remains
2038
+ as a compatibility override for internal callers. Either way, concurrent
2039
+ uploads cannot exchange source or auth-lens identity, and
2040
+ <code>service: 'storage'</code> always wins.</p>
2041
+ <h4 id="parameters-32">Parameters</h4>
2042
+ <div class="table-scroll">
2043
+
2044
+
2045
+
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+
2059
+
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>data</code></td><td align="left"><code>Blob</code> | <code>ArrayBuffer</code> | <code>Uint8Array</code>&#x3C;<code>ArrayBufferLike</code>></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
2068
+ <h4 id="returns-35">Returns</h4>
2069
+ <p><code>Promise</code>&#x3C;<a href="#uploadresult"><code>UploadResult</code></a>></p>
2070
+ <hr>
2071
+ <p><a id="uploadstring"></a></p>
2072
+ <h3 id="uploadstring">uploadString()</h3>
2073
+ <pre class="astro-code one-dark-pro" style="background-color:#282c34;color:#abb2bf; overflow-x: auto;" tabindex="0" data-language="ts"><code><span class="line"><span style="color:#C678DD">function</span><span style="color:#61AFEF"> uploadString</span><span style="color:#ABB2BF">(</span></span>
2074
+ <span class="line"><span style="color:#E06C75;font-style:italic"> ref</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StorageReference</span><span style="color:#ABB2BF">,</span></span>
2075
+ <span class="line"><span style="color:#E06C75;font-style:italic"> value</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">string</span><span style="color:#ABB2BF">,</span></span>
2076
+ <span class="line"><span style="color:#E06C75;font-style:italic"> format</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">StringFormat</span><span style="color:#ABB2BF">,</span></span>
2077
+ <span class="line"><span style="color:#E06C75;font-style:italic"> metadata</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">SettableMetadata</span><span style="color:#ABB2BF">,</span></span>
2078
+ <span class="line"><span style="color:#E06C75;font-style:italic">provenance</span><span style="color:#C678DD">?</span><span style="color:#ABB2BF">: </span><span style="color:#E5C07B">EventProvenance</span><span style="color:#ABB2BF">): </span><span style="color:#E5C07B">Promise</span><span style="color:#ABB2BF">&#x3C;</span><span style="color:#E5C07B">UploadResult</span><span style="color:#ABB2BF">>;</span></span></code></pre>
2079
+ <p>Upload a string in one of three formats:</p>
2080
+ <ul>
2081
+ <li><code>raw</code> (default): UTF-8 text. Defaults <code>contentType</code> to
2082
+ <code>text/plain;charset=utf-8</code> if neither metadata nor the data
2083
+ specify one.</li>
2084
+ <li><code>base64</code>: standard base64-encoded bytes.</li>
2085
+ <li><code>data_url</code>: a <code>data:</code> URL — the MIME prefix is honored as
2086
+ <code>contentType</code> unless the caller overrides it explicitly.</li>
2087
+ </ul>
2088
+ <h4 id="parameters-33">Parameters</h4>
2089
+ <div class="table-scroll">
2090
+
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+
2101
+
2102
+
2103
+
2104
+
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+
2118
+ <table><thead><tr><th align="left">Parameter</th><th align="left">Type</th></tr></thead><tbody><tr><td align="left"><code>ref</code></td><td align="left"><a href="#storagereference"><code>StorageReference</code></a></td></tr><tr><td align="left"><code>value</code></td><td align="left"><code>string</code></td></tr><tr><td align="left"><code>format?</code></td><td align="left"><a href="#stringformat"><code>StringFormat</code></a></td></tr><tr><td align="left"><code>metadata?</code></td><td align="left"><a href="#settablemetadata"><code>SettableMetadata</code></a></td></tr><tr><td align="left"><code>provenance?</code></td><td align="left"><code>EventProvenance</code></td></tr></tbody></table></div>
2119
+ <h4 id="returns-36">Returns</h4>
2120
+ <p><code>Promise</code>&#x3C;<a href="#uploadresult"><code>UploadResult</code></a>></p> </article> </main> <aside class="doc-toc api-symbols" aria-label="API symbols"> <h2 class="doc-toc-heading">Symbols</h2> <input class="api-symbol-filter" type="search" placeholder="Filter symbols" aria-label="Filter API symbols" data-api-symbol-filter> <div class="api-symbol-groups" data-api-symbol-groups> <section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#classes"> Classes </a> <ul> <li data-api-symbol="inspectstoragehandler"> <a href="#inspectstoragehandler">InspectStorageHandler</a> </li><li data-api-symbol="provisionstoragehandler"> <a href="#provisionstoragehandler">ProvisionStorageHandler</a> </li><li data-api-symbol="storageerror"> <a href="#storageerror">StorageError</a> </li><li data-api-symbol="storageprovisioningerror"> <a href="#storageprovisioningerror">StorageProvisioningError</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#interfaces"> Interfaces </a> <ul> <li data-api-symbol="corsrule"> <a href="#corsrule">CorsRule</a> </li><li data-api-symbol="evaluationinput"> <a href="#evaluationinput">EvaluationInput</a> </li><li data-api-symbol="evaluationresult"> <a href="#evaluationresult">EvaluationResult</a> </li><li data-api-symbol="firebasestorage"> <a href="#firebasestorage">FirebaseStorage</a> </li><li data-api-symbol="firebasestoragebucket"> <a href="#firebasestoragebucket">FirebaseStorageBucket</a> </li><li data-api-symbol="firestorelookup"> <a href="#firestorelookup">FirestoreLookup</a> </li><li data-api-symbol="fullmetadata"> <a href="#fullmetadata">FullMetadata</a> </li><li data-api-symbol="inspectstorageresult"> <a href="#inspectstorageresult">InspectStorageResult</a> </li><li data-api-symbol="listresult"> <a href="#listresult">ListResult</a> </li><li data-api-symbol="provisionstorageinput"> <a href="#provisionstorageinput">ProvisionStorageInput</a> </li><li data-api-symbol="provisionstorageoptions"> <a href="#provisionstorageoptions">ProvisionStorageOptions</a> </li><li data-api-symbol="provisionstorageresult"> <a href="#provisionstorageresult">ProvisionStorageResult</a> </li><li data-api-symbol="sandboxtarget"> <a href="#sandboxtarget">SandboxTarget</a> </li><li data-api-symbol="settablemetadata"> <a href="#settablemetadata">SettableMetadata</a> </li><li data-api-symbol="storageadmintooldeps"> <a href="#storageadmintooldeps">StorageAdminToolDeps</a> </li><li data-api-symbol="storageauth"> <a href="#storageauth">StorageAuth</a> </li><li data-api-symbol="storageoptions"> <a href="#storageoptions">StorageOptions</a> </li><li data-api-symbol="storagereference"> <a href="#storagereference">StorageReference</a> </li><li data-api-symbol="storagerequest"> <a href="#storagerequest">StorageRequest</a> </li><li data-api-symbol="storageresource"> <a href="#storageresource">StorageResource</a> </li><li data-api-symbol="storagerules"> <a href="#storagerules">StorageRules</a> </li><li data-api-symbol="uploadresult"> <a href="#uploadresult">UploadResult</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#type-aliases"> Type Aliases </a> <ul> <li data-api-symbol="provisionstorageerrorcode"> <a href="#provisionstorageerrorcode">ProvisionStorageErrorCode</a> </li><li data-api-symbol="provisionstorageoutcome"> <a href="#provisionstorageoutcome">ProvisionStorageOutcome</a> </li><li data-api-symbol="serviceenablestate"> <a href="#serviceenablestate">ServiceEnableState</a> </li><li data-api-symbol="storageerrorcode"> <a href="#storageerrorcode">StorageErrorCode</a> </li><li data-api-symbol="storagegrantverb"> <a href="#storagegrantverb">StorageGrantVerb</a> </li><li data-api-symbol="storagemethod"> <a href="#storagemethod">StorageMethod</a> </li><li data-api-symbol="storagerequestmethod"> <a href="#storagerequestmethod">StorageRequestMethod</a> </li><li data-api-symbol="storageverb"> <a href="#storageverb">StorageVerb</a> </li><li data-api-symbol="stringformat"> <a href="#stringformat">StringFormat</a> </li><li data-api-symbol="target"> <a href="#target">Target</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#variables"> Variables </a> <ul> <li data-api-symbol="target_symbol"> <a href="#target_symbol">TARGET_SYMBOL</a> </li> </ul> </section><section class="api-symbol-group" data-api-symbol-group> <a class="api-symbol-kind" href="#functions"> Functions </a> <ul> <li data-api-symbol="addfirebasetobucket()"> <a href="#addfirebasetobucket">addFirebaseToBucket()</a> </li><li data-api-symbol="connectstorageemulator()"> <a href="#connectstorageemulator">connectStorageEmulator()</a> </li><li data-api-symbol="createstorageadmintools()"> <a href="#createstorageadmintools">createStorageAdminTools()</a> </li><li data-api-symbol="defaultplaygroundcors()"> <a href="#defaultplaygroundcors">defaultPlaygroundCors()</a> </li><li data-api-symbol="deleteobject()"> <a href="#deleteobject">deleteObject()</a> </li><li data-api-symbol="deploystoragerules()"> <a href="#deploystoragerules">deployStorageRules()</a> </li><li data-api-symbol="enablestorageservice()"> <a href="#enablestorageservice">enableStorageService()</a> </li><li data-api-symbol="evaluatestoragerules()"> <a href="#evaluatestoragerules">evaluateStorageRules()</a> </li><li data-api-symbol="finalizedefaultlocation()"> <a href="#finalizedefaultlocation">finalizeDefaultLocation()</a> </li><li data-api-symbol="getblob()"> <a href="#getblob">getBlob()</a> </li><li data-api-symbol="getbucketcors()"> <a href="#getbucketcors">getBucketCors()</a> </li><li data-api-symbol="getbytes()"> <a href="#getbytes">getBytes()</a> </li><li data-api-symbol="getdefaultlocation()"> <a href="#getdefaultlocation">getDefaultLocation()</a> </li><li data-api-symbol="getdownloadurl()"> <a href="#getdownloadurl">getDownloadURL()</a> </li><li data-api-symbol="getmetadata()"> <a href="#getmetadata">getMetadata()</a> </li><li data-api-symbol="getstorage()"> <a href="#getstorage">getStorage()</a> </li><li data-api-symbol="getstoragesandbox()"> <a href="#getstoragesandbox">getStorageSandbox()</a> </li><li data-api-symbol="getstorageservicestate()"> <a href="#getstorageservicestate">getStorageServiceState()</a> </li><li data-api-symbol="listall()"> <a href="#listall">listAll()</a> </li><li data-api-symbol="listfirebasebuckets()"> <a href="#listfirebasebuckets">listFirebaseBuckets()</a> </li><li data-api-symbol="parsestoragerules()"> <a href="#parsestoragerules">parseStorageRules()</a> </li><li data-api-symbol="provisionstorage()"> <a href="#provisionstorage">provisionStorage()</a> </li><li data-api-symbol="ref()"> <a href="#ref">ref()</a> </li><li data-api-symbol="setbucketcors()"> <a href="#setbucketcors">setBucketCors()</a> </li><li data-api-symbol="updatemetadata()"> <a href="#updatemetadata">updateMetadata()</a> </li><li data-api-symbol="uploadbytes()"> <a href="#uploadbytes">uploadBytes()</a> </li><li data-api-symbol="uploadstring()"> <a href="#uploadstring">uploadString()</a> </li> </ul> </section> <p class="api-symbol-empty" data-api-symbol-empty hidden>No matching symbols</p> </div> </aside> </div> <script type="module">const a=document.querySelector("[data-api-symbol-filter]"),d=[...document.querySelectorAll("[data-api-symbol-group]")],n=document.querySelector("[data-api-symbol-empty]");a?.addEventListener("input",()=>{const t=a.value.trim().toLowerCase();let o=0;for(const i of d){let e=0;i.querySelectorAll("[data-api-symbol]").forEach(l=>{const r=!t||(l.dataset.apiSymbol??"").includes(t);l.hidden=!r,r&&e++}),i.hidden=e===0,o+=e}n&&(n.hidden=o>0)});</script> <script type="module">const s=new Map;document.querySelectorAll('.doc-toc a[href^="#"]').forEach(t=>s.set(decodeURIComponent(t.hash.slice(1)),t));if(s.size>0){const t=new Set,n=()=>{let o=null;for(const e of s.keys())if(t.has(e)){o=e;break}s.forEach((e,c)=>e.classList.toggle("active",c===o))},r=new IntersectionObserver(o=>{for(const e of o)e.isIntersecting?t.add(e.target.id):t.delete(e.target.id);n()},{rootMargin:"-72px 0px -60% 0px"});s.forEach((o,e)=>{const c=document.getElementById(e);c&&r.observe(c)})}</script> <script type="module">document.querySelector('.studio__nav [aria-current="page"]')?.scrollIntoView({block:"nearest",inline:"center"});</script> </body> </html>