pyric-tools 0.1.0-alpha.7

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 (1052) hide show
  1. package/README.md +125 -0
  2. package/dist/auth/domains/handler.d.ts +6 -0
  3. package/dist/auth/domains/handler.d.ts.map +1 -0
  4. package/dist/auth/domains/handler.js +75 -0
  5. package/dist/auth/domains/handler.js.map +1 -0
  6. package/dist/auth/domains/spec.d.ts +25 -0
  7. package/dist/auth/domains/spec.d.ts.map +1 -0
  8. package/dist/auth/domains/spec.js +6 -0
  9. package/dist/auth/domains/spec.js.map +1 -0
  10. package/dist/auth/index.d.ts +34 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +30 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/auth/mapper.d.ts +5 -0
  15. package/dist/auth/mapper.d.ts.map +1 -0
  16. package/dist/auth/mapper.js +49 -0
  17. package/dist/auth/mapper.js.map +1 -0
  18. package/dist/auth/provider/handler.d.ts +9 -0
  19. package/dist/auth/provider/handler.d.ts.map +1 -0
  20. package/dist/auth/provider/handler.js +128 -0
  21. package/dist/auth/provider/handler.js.map +1 -0
  22. package/dist/auth/provider/spec.d.ts +29 -0
  23. package/dist/auth/provider/spec.d.ts.map +1 -0
  24. package/dist/auth/provider/spec.js +12 -0
  25. package/dist/auth/provider/spec.js.map +1 -0
  26. package/dist/auth/resolver.d.ts +16 -0
  27. package/dist/auth/resolver.d.ts.map +1 -0
  28. package/dist/auth/resolver.js +32 -0
  29. package/dist/auth/resolver.js.map +1 -0
  30. package/dist/auth/tools.d.ts +23 -0
  31. package/dist/auth/tools.d.ts.map +1 -0
  32. package/dist/auth/tools.js +71 -0
  33. package/dist/auth/tools.js.map +1 -0
  34. package/dist/auth/types.d.ts +37 -0
  35. package/dist/auth/types.d.ts.map +1 -0
  36. package/dist/auth/types.js +17 -0
  37. package/dist/auth/types.js.map +1 -0
  38. package/dist/bridge/client/bridge.d.ts +133 -0
  39. package/dist/bridge/client/bridge.d.ts.map +1 -0
  40. package/dist/bridge/client/bridge.js +430 -0
  41. package/dist/bridge/client/bridge.js.map +1 -0
  42. package/dist/bridge/client/dispatch.d.ts +49 -0
  43. package/dist/bridge/client/dispatch.d.ts.map +1 -0
  44. package/dist/bridge/client/dispatch.js +103 -0
  45. package/dist/bridge/client/dispatch.js.map +1 -0
  46. package/dist/bridge/client.d.ts +24 -0
  47. package/dist/bridge/client.d.ts.map +1 -0
  48. package/dist/bridge/client.js +26 -0
  49. package/dist/bridge/client.js.map +1 -0
  50. package/dist/bridge/protocol.d.ts +228 -0
  51. package/dist/bridge/protocol.d.ts.map +1 -0
  52. package/dist/bridge/protocol.js +131 -0
  53. package/dist/bridge/protocol.js.map +1 -0
  54. package/dist/bridge/server/audit.d.ts +19 -0
  55. package/dist/bridge/server/audit.d.ts.map +1 -0
  56. package/dist/bridge/server/audit.js +46 -0
  57. package/dist/bridge/server/audit.js.map +1 -0
  58. package/dist/bridge/server/bridge.d.ts +165 -0
  59. package/dist/bridge/server/bridge.d.ts.map +1 -0
  60. package/dist/bridge/server/bridge.js +410 -0
  61. package/dist/bridge/server/bridge.js.map +1 -0
  62. package/dist/bridge/server/confirm-policy.d.ts +56 -0
  63. package/dist/bridge/server/confirm-policy.d.ts.map +1 -0
  64. package/dist/bridge/server/confirm-policy.js +107 -0
  65. package/dist/bridge/server/confirm-policy.js.map +1 -0
  66. package/dist/bridge/server/confirm-prompt.d.ts +73 -0
  67. package/dist/bridge/server/confirm-prompt.d.ts.map +1 -0
  68. package/dist/bridge/server/confirm-prompt.js +199 -0
  69. package/dist/bridge/server/confirm-prompt.js.map +1 -0
  70. package/dist/bridge/server/confirm.d.ts +92 -0
  71. package/dist/bridge/server/confirm.d.ts.map +1 -0
  72. package/dist/bridge/server/confirm.js +210 -0
  73. package/dist/bridge/server/confirm.js.map +1 -0
  74. package/dist/bridge/server/headless.d.ts +36 -0
  75. package/dist/bridge/server/headless.d.ts.map +1 -0
  76. package/dist/bridge/server/headless.js +132 -0
  77. package/dist/bridge/server/headless.js.map +1 -0
  78. package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
  79. package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
  80. package/dist/bridge/server/json-schema-to-zod.js +93 -0
  81. package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
  82. package/dist/bridge/server/local-bridge.d.ts +33 -0
  83. package/dist/bridge/server/local-bridge.d.ts.map +1 -0
  84. package/dist/bridge/server/local-bridge.js +42 -0
  85. package/dist/bridge/server/local-bridge.js.map +1 -0
  86. package/dist/bridge/server/logger.d.ts +28 -0
  87. package/dist/bridge/server/logger.d.ts.map +1 -0
  88. package/dist/bridge/server/logger.js +42 -0
  89. package/dist/bridge/server/logger.js.map +1 -0
  90. package/dist/bridge/server/mcp.d.ts +33 -0
  91. package/dist/bridge/server/mcp.d.ts.map +1 -0
  92. package/dist/bridge/server/mcp.js +159 -0
  93. package/dist/bridge/server/mcp.js.map +1 -0
  94. package/dist/bridge/server/peer.d.ts +39 -0
  95. package/dist/bridge/server/peer.d.ts.map +1 -0
  96. package/dist/bridge/server/peer.js +189 -0
  97. package/dist/bridge/server/peer.js.map +1 -0
  98. package/dist/bridge/server/standalone.d.ts +102 -0
  99. package/dist/bridge/server/standalone.d.ts.map +1 -0
  100. package/dist/bridge/server/standalone.js +352 -0
  101. package/dist/bridge/server/standalone.js.map +1 -0
  102. package/dist/bridge/server/tool-metadata.d.ts +38 -0
  103. package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
  104. package/dist/bridge/server/tool-metadata.js +79 -0
  105. package/dist/bridge/server/tool-metadata.js.map +1 -0
  106. package/dist/bridge/server.d.ts +25 -0
  107. package/dist/bridge/server.d.ts.map +1 -0
  108. package/dist/bridge/server.js +23 -0
  109. package/dist/bridge/server.js.map +1 -0
  110. package/dist/cli/auth.d.ts +37 -0
  111. package/dist/cli/auth.d.ts.map +1 -0
  112. package/dist/cli/auth.js +119 -0
  113. package/dist/cli/auth.js.map +1 -0
  114. package/dist/cli/database-rules.d.ts +25 -0
  115. package/dist/cli/database-rules.d.ts.map +1 -0
  116. package/dist/cli/database-rules.js +215 -0
  117. package/dist/cli/database-rules.js.map +1 -0
  118. package/dist/cli/deploy-progress.d.ts +35 -0
  119. package/dist/cli/deploy-progress.d.ts.map +1 -0
  120. package/dist/cli/deploy-progress.js +69 -0
  121. package/dist/cli/deploy-progress.js.map +1 -0
  122. package/dist/cli/deploy.d.ts +81 -0
  123. package/dist/cli/deploy.d.ts.map +1 -0
  124. package/dist/cli/deploy.js +413 -0
  125. package/dist/cli/deploy.js.map +1 -0
  126. package/dist/cli/dev-runner.d.ts +112 -0
  127. package/dist/cli/dev-runner.d.ts.map +1 -0
  128. package/dist/cli/dev-runner.js +227 -0
  129. package/dist/cli/dev-runner.js.map +1 -0
  130. package/dist/cli/discover.d.ts +47 -0
  131. package/dist/cli/discover.d.ts.map +1 -0
  132. package/dist/cli/discover.js +77 -0
  133. package/dist/cli/discover.js.map +1 -0
  134. package/dist/cli/firebase-json.d.ts +66 -0
  135. package/dist/cli/firebase-json.d.ts.map +1 -0
  136. package/dist/cli/firebase-json.js +60 -0
  137. package/dist/cli/firebase-json.js.map +1 -0
  138. package/dist/cli/index.d.ts +55 -0
  139. package/dist/cli/index.d.ts.map +1 -0
  140. package/dist/cli/index.js +500 -0
  141. package/dist/cli/index.js.map +1 -0
  142. package/dist/cli/init-templates.d.ts +37 -0
  143. package/dist/cli/init-templates.d.ts.map +1 -0
  144. package/dist/cli/init-templates.js +638 -0
  145. package/dist/cli/init-templates.js.map +1 -0
  146. package/dist/cli/init.d.ts +124 -0
  147. package/dist/cli/init.d.ts.map +1 -0
  148. package/dist/cli/init.js +423 -0
  149. package/dist/cli/init.js.map +1 -0
  150. package/dist/cli/login.d.ts +18 -0
  151. package/dist/cli/login.d.ts.map +1 -0
  152. package/dist/cli/login.js +59 -0
  153. package/dist/cli/login.js.map +1 -0
  154. package/dist/cli/mcp-proxy.d.ts +10 -0
  155. package/dist/cli/mcp-proxy.d.ts.map +1 -0
  156. package/dist/cli/mcp-proxy.js +126 -0
  157. package/dist/cli/mcp-proxy.js.map +1 -0
  158. package/dist/cli/parse-args.d.ts +20 -0
  159. package/dist/cli/parse-args.d.ts.map +1 -0
  160. package/dist/cli/parse-args.js +69 -0
  161. package/dist/cli/parse-args.js.map +1 -0
  162. package/dist/cli/rules.d.ts +40 -0
  163. package/dist/cli/rules.d.ts.map +1 -0
  164. package/dist/cli/rules.js +162 -0
  165. package/dist/cli/rules.js.map +1 -0
  166. package/dist/cli/scope.d.ts +38 -0
  167. package/dist/cli/scope.d.ts.map +1 -0
  168. package/dist/cli/scope.js +63 -0
  169. package/dist/cli/scope.js.map +1 -0
  170. package/dist/cli/serve.d.ts +122 -0
  171. package/dist/cli/serve.d.ts.map +1 -0
  172. package/dist/cli/serve.js +685 -0
  173. package/dist/cli/serve.js.map +1 -0
  174. package/dist/cli/snapshot.d.ts +22 -0
  175. package/dist/cli/snapshot.d.ts.map +1 -0
  176. package/dist/cli/snapshot.js +139 -0
  177. package/dist/cli/snapshot.js.map +1 -0
  178. package/dist/cli/verify.d.ts +23 -0
  179. package/dist/cli/verify.d.ts.map +1 -0
  180. package/dist/cli/verify.js +349 -0
  181. package/dist/cli/verify.js.map +1 -0
  182. package/dist/credentials/core/authorize.d.ts +22 -0
  183. package/dist/credentials/core/authorize.d.ts.map +1 -0
  184. package/dist/credentials/core/authorize.js +39 -0
  185. package/dist/credentials/core/authorize.js.map +1 -0
  186. package/dist/credentials/core/client.d.ts +14 -0
  187. package/dist/credentials/core/client.d.ts.map +1 -0
  188. package/dist/credentials/core/client.js +13 -0
  189. package/dist/credentials/core/client.js.map +1 -0
  190. package/dist/credentials/core/exchange.d.ts +24 -0
  191. package/dist/credentials/core/exchange.d.ts.map +1 -0
  192. package/dist/credentials/core/exchange.js +46 -0
  193. package/dist/credentials/core/exchange.js.map +1 -0
  194. package/dist/credentials/core/flow.d.ts +15 -0
  195. package/dist/credentials/core/flow.d.ts.map +1 -0
  196. package/dist/credentials/core/flow.js +40 -0
  197. package/dist/credentials/core/flow.js.map +1 -0
  198. package/dist/credentials/core/from-user-credential.d.ts +3 -0
  199. package/dist/credentials/core/from-user-credential.d.ts.map +1 -0
  200. package/dist/credentials/core/from-user-credential.js +19 -0
  201. package/dist/credentials/core/from-user-credential.js.map +1 -0
  202. package/dist/credentials/core/scopes.d.ts +26 -0
  203. package/dist/credentials/core/scopes.d.ts.map +1 -0
  204. package/dist/credentials/core/scopes.js +32 -0
  205. package/dist/credentials/core/scopes.js.map +1 -0
  206. package/dist/credentials/core/types.d.ts +72 -0
  207. package/dist/credentials/core/types.d.ts.map +1 -0
  208. package/dist/credentials/core/types.js +2 -0
  209. package/dist/credentials/core/types.js.map +1 -0
  210. package/dist/credentials/index.d.ts +14 -0
  211. package/dist/credentials/index.d.ts.map +1 -0
  212. package/dist/credentials/index.js +13 -0
  213. package/dist/credentials/index.js.map +1 -0
  214. package/dist/credentials/node/ensure-scope.d.ts +29 -0
  215. package/dist/credentials/node/ensure-scope.d.ts.map +1 -0
  216. package/dist/credentials/node/ensure-scope.js +42 -0
  217. package/dist/credentials/node/ensure-scope.js.map +1 -0
  218. package/dist/credentials/node/file-store.d.ts +4 -0
  219. package/dist/credentials/node/file-store.d.ts.map +1 -0
  220. package/dist/credentials/node/file-store.js +52 -0
  221. package/dist/credentials/node/file-store.js.map +1 -0
  222. package/dist/credentials/node/from-adc.d.ts +10 -0
  223. package/dist/credentials/node/from-adc.d.ts.map +1 -0
  224. package/dist/credentials/node/from-adc.js +60 -0
  225. package/dist/credentials/node/from-adc.js.map +1 -0
  226. package/dist/credentials/node/index.d.ts +10 -0
  227. package/dist/credentials/node/index.d.ts.map +1 -0
  228. package/dist/credentials/node/index.js +10 -0
  229. package/dist/credentials/node/index.js.map +1 -0
  230. package/dist/credentials/node/loopback-authorizer.d.ts +12 -0
  231. package/dist/credentials/node/loopback-authorizer.d.ts.map +1 -0
  232. package/dist/credentials/node/loopback-authorizer.js +61 -0
  233. package/dist/credentials/node/loopback-authorizer.js.map +1 -0
  234. package/dist/credentials/node/resolve-local-token.d.ts +20 -0
  235. package/dist/credentials/node/resolve-local-token.d.ts.map +1 -0
  236. package/dist/credentials/node/resolve-local-token.js +97 -0
  237. package/dist/credentials/node/resolve-local-token.js.map +1 -0
  238. package/dist/credentials/server/bff.d.ts +44 -0
  239. package/dist/credentials/server/bff.d.ts.map +1 -0
  240. package/dist/credentials/server/bff.js +43 -0
  241. package/dist/credentials/server/bff.js.map +1 -0
  242. package/dist/deploy/api-enablement.d.ts +45 -0
  243. package/dist/deploy/api-enablement.d.ts.map +1 -0
  244. package/dist/deploy/api-enablement.js +125 -0
  245. package/dist/deploy/api-enablement.js.map +1 -0
  246. package/dist/deploy/firestore/databases.d.ts +41 -0
  247. package/dist/deploy/firestore/databases.d.ts.map +1 -0
  248. package/dist/deploy/firestore/databases.js +63 -0
  249. package/dist/deploy/firestore/databases.js.map +1 -0
  250. package/dist/deploy/firestore/indexes.d.ts +120 -0
  251. package/dist/deploy/firestore/indexes.d.ts.map +1 -0
  252. package/dist/deploy/firestore/indexes.js +243 -0
  253. package/dist/deploy/firestore/indexes.js.map +1 -0
  254. package/dist/deploy/firestore/recipes.d.ts +21 -0
  255. package/dist/deploy/firestore/recipes.d.ts.map +1 -0
  256. package/dist/deploy/firestore/recipes.js +34 -0
  257. package/dist/deploy/firestore/recipes.js.map +1 -0
  258. package/dist/deploy/firestore/rules.d.ts +76 -0
  259. package/dist/deploy/firestore/rules.d.ts.map +1 -0
  260. package/dist/deploy/firestore/rules.js +180 -0
  261. package/dist/deploy/firestore/rules.js.map +1 -0
  262. package/dist/deploy/from-admin-app.d.ts +20 -0
  263. package/dist/deploy/from-admin-app.d.ts.map +1 -0
  264. package/dist/deploy/from-admin-app.js +18 -0
  265. package/dist/deploy/from-admin-app.js.map +1 -0
  266. package/dist/deploy/from-service-account.d.ts +29 -0
  267. package/dist/deploy/from-service-account.d.ts.map +1 -0
  268. package/dist/deploy/from-service-account.js +115 -0
  269. package/dist/deploy/from-service-account.js.map +1 -0
  270. package/dist/deploy/functions/bundle.d.ts +37 -0
  271. package/dist/deploy/functions/bundle.d.ts.map +1 -0
  272. package/dist/deploy/functions/bundle.js +181 -0
  273. package/dist/deploy/functions/bundle.js.map +1 -0
  274. package/dist/deploy/functions/core.d.ts +18 -0
  275. package/dist/deploy/functions/core.d.ts.map +1 -0
  276. package/dist/deploy/functions/core.js +211 -0
  277. package/dist/deploy/functions/core.js.map +1 -0
  278. package/dist/deploy/functions/iam.d.ts +17 -0
  279. package/dist/deploy/functions/iam.d.ts.map +1 -0
  280. package/dist/deploy/functions/iam.js +40 -0
  281. package/dist/deploy/functions/iam.js.map +1 -0
  282. package/dist/deploy/functions/operation.d.ts +39 -0
  283. package/dist/deploy/functions/operation.d.ts.map +1 -0
  284. package/dist/deploy/functions/operation.js +37 -0
  285. package/dist/deploy/functions/operation.js.map +1 -0
  286. package/dist/deploy/functions/spec.d.ts +69 -0
  287. package/dist/deploy/functions/spec.d.ts.map +1 -0
  288. package/dist/deploy/functions/spec.js +7 -0
  289. package/dist/deploy/functions/spec.js.map +1 -0
  290. package/dist/deploy/functions/types.d.ts +50 -0
  291. package/dist/deploy/functions/types.d.ts.map +1 -0
  292. package/dist/deploy/functions/types.js +3 -0
  293. package/dist/deploy/functions/types.js.map +1 -0
  294. package/dist/deploy/hosting/channels.d.ts +93 -0
  295. package/dist/deploy/hosting/channels.d.ts.map +1 -0
  296. package/dist/deploy/hosting/channels.js +134 -0
  297. package/dist/deploy/hosting/channels.js.map +1 -0
  298. package/dist/deploy/hosting/config.d.ts +28 -0
  299. package/dist/deploy/hosting/config.d.ts.map +1 -0
  300. package/dist/deploy/hosting/config.js +261 -0
  301. package/dist/deploy/hosting/config.js.map +1 -0
  302. package/dist/deploy/hosting/core.d.ts +38 -0
  303. package/dist/deploy/hosting/core.d.ts.map +1 -0
  304. package/dist/deploy/hosting/core.js +311 -0
  305. package/dist/deploy/hosting/core.js.map +1 -0
  306. package/dist/deploy/hosting/gzip.d.ts +11 -0
  307. package/dist/deploy/hosting/gzip.d.ts.map +1 -0
  308. package/dist/deploy/hosting/gzip.js +20 -0
  309. package/dist/deploy/hosting/gzip.js.map +1 -0
  310. package/dist/deploy/hosting/hash.d.ts +6 -0
  311. package/dist/deploy/hosting/hash.d.ts.map +1 -0
  312. package/dist/deploy/hosting/hash.js +17 -0
  313. package/dist/deploy/hosting/hash.js.map +1 -0
  314. package/dist/deploy/hosting/sites.d.ts +77 -0
  315. package/dist/deploy/hosting/sites.d.ts.map +1 -0
  316. package/dist/deploy/hosting/sites.js +73 -0
  317. package/dist/deploy/hosting/sites.js.map +1 -0
  318. package/dist/deploy/hosting/spec.d.ts +140 -0
  319. package/dist/deploy/hosting/spec.d.ts.map +1 -0
  320. package/dist/deploy/hosting/spec.js +8 -0
  321. package/dist/deploy/hosting/spec.js.map +1 -0
  322. package/dist/deploy/hosting/types.d.ts +71 -0
  323. package/dist/deploy/hosting/types.d.ts.map +1 -0
  324. package/dist/deploy/hosting/types.js +3 -0
  325. package/dist/deploy/hosting/types.js.map +1 -0
  326. package/dist/deploy/hosting/walk.d.ts +31 -0
  327. package/dist/deploy/hosting/walk.d.ts.map +1 -0
  328. package/dist/deploy/hosting/walk.js +167 -0
  329. package/dist/deploy/hosting/walk.js.map +1 -0
  330. package/dist/deploy/index.d.ts +51 -0
  331. package/dist/deploy/index.d.ts.map +1 -0
  332. package/dist/deploy/index.js +50 -0
  333. package/dist/deploy/index.js.map +1 -0
  334. package/dist/deploy/memoize-ttl.d.ts +58 -0
  335. package/dist/deploy/memoize-ttl.d.ts.map +1 -0
  336. package/dist/deploy/memoize-ttl.js +88 -0
  337. package/dist/deploy/memoize-ttl.js.map +1 -0
  338. package/dist/deploy/namespaces.d.ts +119 -0
  339. package/dist/deploy/namespaces.d.ts.map +1 -0
  340. package/dist/deploy/namespaces.js +192 -0
  341. package/dist/deploy/namespaces.js.map +1 -0
  342. package/dist/deploy/preflight.d.ts +119 -0
  343. package/dist/deploy/preflight.d.ts.map +1 -0
  344. package/dist/deploy/preflight.js +440 -0
  345. package/dist/deploy/preflight.js.map +1 -0
  346. package/dist/deploy/provider.d.ts +130 -0
  347. package/dist/deploy/provider.d.ts.map +1 -0
  348. package/dist/deploy/provider.js +21 -0
  349. package/dist/deploy/provider.js.map +1 -0
  350. package/dist/deploy/providers/database.d.ts +8 -0
  351. package/dist/deploy/providers/database.d.ts.map +1 -0
  352. package/dist/deploy/providers/database.js +37 -0
  353. package/dist/deploy/providers/database.js.map +1 -0
  354. package/dist/deploy/providers/firestore.d.ts +11 -0
  355. package/dist/deploy/providers/firestore.d.ts.map +1 -0
  356. package/dist/deploy/providers/firestore.js +43 -0
  357. package/dist/deploy/providers/firestore.js.map +1 -0
  358. package/dist/deploy/providers/functions.d.ts +9 -0
  359. package/dist/deploy/providers/functions.d.ts.map +1 -0
  360. package/dist/deploy/providers/functions.js +49 -0
  361. package/dist/deploy/providers/functions.js.map +1 -0
  362. package/dist/deploy/providers/hosting.d.ts +13 -0
  363. package/dist/deploy/providers/hosting.d.ts.map +1 -0
  364. package/dist/deploy/providers/hosting.js +149 -0
  365. package/dist/deploy/providers/hosting.js.map +1 -0
  366. package/dist/deploy/providers/storage.d.ts +9 -0
  367. package/dist/deploy/providers/storage.d.ts.map +1 -0
  368. package/dist/deploy/providers/storage.js +46 -0
  369. package/dist/deploy/providers/storage.js.map +1 -0
  370. package/dist/deploy/registry.d.ts +17 -0
  371. package/dist/deploy/registry.d.ts.map +1 -0
  372. package/dist/deploy/registry.js +15 -0
  373. package/dist/deploy/registry.js.map +1 -0
  374. package/dist/deploy/rtdb/rules.d.ts +21 -0
  375. package/dist/deploy/rtdb/rules.d.ts.map +1 -0
  376. package/dist/deploy/rtdb/rules.js +104 -0
  377. package/dist/deploy/rtdb/rules.js.map +1 -0
  378. package/dist/deploy/scope.d.ts +81 -0
  379. package/dist/deploy/scope.d.ts.map +1 -0
  380. package/dist/deploy/scope.js +44 -0
  381. package/dist/deploy/scope.js.map +1 -0
  382. package/dist/deploy/tools.d.ts +55 -0
  383. package/dist/deploy/tools.d.ts.map +1 -0
  384. package/dist/deploy/tools.js +329 -0
  385. package/dist/deploy/tools.js.map +1 -0
  386. package/dist/deploy/with-resolved-scope.d.ts +31 -0
  387. package/dist/deploy/with-resolved-scope.d.ts.map +1 -0
  388. package/dist/deploy/with-resolved-scope.js +73 -0
  389. package/dist/deploy/with-resolved-scope.js.map +1 -0
  390. package/dist/discover/concurrency.d.ts +42 -0
  391. package/dist/discover/concurrency.d.ts.map +1 -0
  392. package/dist/discover/concurrency.js +113 -0
  393. package/dist/discover/concurrency.js.map +1 -0
  394. package/dist/discover/crawler-adapter.d.ts +49 -0
  395. package/dist/discover/crawler-adapter.d.ts.map +1 -0
  396. package/dist/discover/crawler-adapter.js +92 -0
  397. package/dist/discover/crawler-adapter.js.map +1 -0
  398. package/dist/discover/crawler.d.ts +333 -0
  399. package/dist/discover/crawler.d.ts.map +1 -0
  400. package/dist/discover/crawler.js +764 -0
  401. package/dist/discover/crawler.js.map +1 -0
  402. package/dist/discover/findCollectionGroup.d.ts +80 -0
  403. package/dist/discover/findCollectionGroup.d.ts.map +1 -0
  404. package/dist/discover/findCollectionGroup.js +81 -0
  405. package/dist/discover/findCollectionGroup.js.map +1 -0
  406. package/dist/discover/index.d.ts +15 -0
  407. package/dist/discover/index.d.ts.map +1 -0
  408. package/dist/discover/index.js +24 -0
  409. package/dist/discover/index.js.map +1 -0
  410. package/dist/discover/merge.d.ts +108 -0
  411. package/dist/discover/merge.d.ts.map +1 -0
  412. package/dist/discover/merge.js +394 -0
  413. package/dist/discover/merge.js.map +1 -0
  414. package/dist/discover/rest-crawler-firestore.d.ts +51 -0
  415. package/dist/discover/rest-crawler-firestore.d.ts.map +1 -0
  416. package/dist/discover/rest-crawler-firestore.js +154 -0
  417. package/dist/discover/rest-crawler-firestore.js.map +1 -0
  418. package/dist/discover/session.d.ts +116 -0
  419. package/dist/discover/session.d.ts.map +1 -0
  420. package/dist/discover/session.js +331 -0
  421. package/dist/discover/session.js.map +1 -0
  422. package/dist/discover/tools.d.ts +59 -0
  423. package/dist/discover/tools.d.ts.map +1 -0
  424. package/dist/discover/tools.js +115 -0
  425. package/dist/discover/tools.js.map +1 -0
  426. package/dist/discover/types.d.ts +191 -0
  427. package/dist/discover/types.d.ts.map +1 -0
  428. package/dist/discover/types.js +12 -0
  429. package/dist/discover/types.js.map +1 -0
  430. package/dist/discover/wire.d.ts +81 -0
  431. package/dist/discover/wire.d.ts.map +1 -0
  432. package/dist/discover/wire.js +308 -0
  433. package/dist/discover/wire.js.map +1 -0
  434. package/dist/pkg-version.d.ts +2 -0
  435. package/dist/pkg-version.d.ts.map +1 -0
  436. package/dist/pkg-version.js +47 -0
  437. package/dist/pkg-version.js.map +1 -0
  438. package/dist/register/esm-exports.d.ts +26 -0
  439. package/dist/register/esm-exports.d.ts.map +1 -0
  440. package/dist/register/esm-exports.js +61 -0
  441. package/dist/register/esm-exports.js.map +1 -0
  442. package/dist/register/exempt.d.ts +11 -0
  443. package/dist/register/exempt.d.ts.map +1 -0
  444. package/dist/register/exempt.js +74 -0
  445. package/dist/register/exempt.js.map +1 -0
  446. package/dist/register/hooks.d.ts +13 -0
  447. package/dist/register/hooks.d.ts.map +1 -0
  448. package/dist/register/hooks.js +15 -0
  449. package/dist/register/hooks.js.map +1 -0
  450. package/dist/register/index.d.ts +5 -0
  451. package/dist/register/index.d.ts.map +1 -0
  452. package/dist/register/index.js +126 -0
  453. package/dist/register/index.js.map +1 -0
  454. package/dist/register/mapping.d.ts +17 -0
  455. package/dist/register/mapping.d.ts.map +1 -0
  456. package/dist/register/mapping.js +31 -0
  457. package/dist/register/mapping.js.map +1 -0
  458. package/dist/registry/admin-deps.d.ts +17 -0
  459. package/dist/registry/admin-deps.d.ts.map +1 -0
  460. package/dist/registry/admin-deps.js +68 -0
  461. package/dist/registry/admin-deps.js.map +1 -0
  462. package/dist/registry/compose.d.ts +68 -0
  463. package/dist/registry/compose.d.ts.map +1 -0
  464. package/dist/registry/compose.js +113 -0
  465. package/dist/registry/compose.js.map +1 -0
  466. package/dist/registry/index.d.ts +11 -0
  467. package/dist/registry/index.d.ts.map +1 -0
  468. package/dist/registry/index.js +11 -0
  469. package/dist/registry/index.js.map +1 -0
  470. package/dist/remote/index.d.ts +232 -0
  471. package/dist/remote/index.d.ts.map +1 -0
  472. package/dist/remote/index.js +719 -0
  473. package/dist/remote/index.js.map +1 -0
  474. package/dist/rtdb/rules-json.d.ts +8 -0
  475. package/dist/rtdb/rules-json.d.ts.map +1 -0
  476. package/dist/rtdb/rules-json.js +17 -0
  477. package/dist/rtdb/rules-json.js.map +1 -0
  478. package/dist/serve/bridge-mount.d.ts +38 -0
  479. package/dist/serve/bridge-mount.d.ts.map +1 -0
  480. package/dist/serve/bridge-mount.js +162 -0
  481. package/dist/serve/bridge-mount.js.map +1 -0
  482. package/dist/serve/bundler.d.ts +134 -0
  483. package/dist/serve/bundler.d.ts.map +1 -0
  484. package/dist/serve/bundler.js +452 -0
  485. package/dist/serve/bundler.js.map +1 -0
  486. package/dist/serve/capture-store.d.ts +27 -0
  487. package/dist/serve/capture-store.d.ts.map +1 -0
  488. package/dist/serve/capture-store.js +47 -0
  489. package/dist/serve/capture-store.js.map +1 -0
  490. package/dist/serve/discovery.d.ts +71 -0
  491. package/dist/serve/discovery.d.ts.map +1 -0
  492. package/dist/serve/discovery.js +158 -0
  493. package/dist/serve/discovery.js.map +1 -0
  494. package/dist/serve/docs-ui/_astro/_slug_.BsN3bPok.css +1 -0
  495. package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
  496. package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
  497. package/dist/serve/docs-ui/docs/index.html +1 -0
  498. package/dist/serve/docs-ui/docs/index.json +9914 -0
  499. package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
  500. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
  501. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +87 -0
  502. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
  503. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +86 -0
  504. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
  505. package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +82 -0
  506. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
  507. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +70 -0
  508. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
  509. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +86 -0
  510. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
  511. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +92 -0
  512. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
  513. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +78 -0
  514. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
  515. package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +67 -0
  516. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +53 -0
  517. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +73 -0
  518. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
  519. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +75 -0
  520. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
  521. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +95 -0
  522. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
  523. package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +73 -0
  524. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
  525. package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +146 -0
  526. package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +49 -0
  527. package/dist/serve/docs-ui/docs/pyric-auth/index.html +64 -0
  528. package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +874 -0
  529. package/dist/serve/docs-ui/docs/pyric-auth-compat.md +265 -0
  530. package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +112 -0
  531. package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +129 -0
  532. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
  533. package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
  534. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +80 -0
  535. package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +107 -0
  536. package/dist/serve/docs-ui/docs/pyric-auth.md +84 -0
  537. package/dist/serve/docs-ui/docs/pyric-database/index.html +36 -0
  538. package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +2428 -0
  539. package/dist/serve/docs-ui/docs/pyric-database-compat.md +850 -0
  540. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +23 -0
  541. package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +29 -0
  542. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +263 -0
  543. package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +288 -0
  544. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +116 -0
  545. package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +142 -0
  546. package/dist/serve/docs-ui/docs/pyric-database.md +18 -0
  547. package/dist/serve/docs-ui/docs/pyric-firestore/index.html +54 -0
  548. package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +1345 -0
  549. package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +366 -0
  550. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +79 -0
  551. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +62 -0
  552. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
  553. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +85 -0
  554. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +61 -0
  555. package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +87 -0
  556. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries/index.html +105 -0
  557. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-build-queries.md +138 -0
  558. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +65 -0
  559. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +93 -0
  560. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +112 -0
  561. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +100 -0
  562. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
  563. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +55 -0
  564. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +61 -0
  565. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +83 -0
  566. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +52 -0
  567. package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +73 -0
  568. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +132 -0
  569. package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +160 -0
  570. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +793 -0
  571. package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +239 -0
  572. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +55 -0
  573. package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +76 -0
  574. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +78 -0
  575. package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +115 -0
  576. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +53 -0
  577. package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +76 -0
  578. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
  579. package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +65 -0
  580. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +127 -0
  581. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +157 -0
  582. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +85 -0
  583. package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +122 -0
  584. package/dist/serve/docs-ui/docs/pyric-firestore.md +69 -0
  585. package/dist/serve/docs-ui/docs/pyric-rules/index.html +93 -0
  586. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
  587. package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +74 -0
  588. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
  589. package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
  590. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
  591. package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +71 -0
  592. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
  593. package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +70 -0
  594. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +96 -0
  595. package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +76 -0
  596. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
  597. package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +75 -0
  598. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +62 -0
  599. package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +80 -0
  600. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
  601. package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
  602. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +54 -0
  603. package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +69 -0
  604. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +89 -0
  605. package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +113 -0
  606. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +50 -0
  607. package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +73 -0
  608. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +47 -0
  609. package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +58 -0
  610. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
  611. package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +78 -0
  612. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +92 -0
  613. package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +93 -0
  614. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
  615. package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +117 -0
  616. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +70 -0
  617. package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +93 -0
  618. package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +129 -0
  619. package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +176 -0
  620. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
  621. package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +105 -0
  622. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +63 -0
  623. package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +89 -0
  624. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
  625. package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
  626. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
  627. package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +98 -0
  628. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +239 -0
  629. package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +135 -0
  630. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +93 -0
  631. package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +109 -0
  632. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +86 -0
  633. package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +113 -0
  634. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +101 -0
  635. package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +134 -0
  636. package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file/index.html +107 -0
  637. package/dist/serve/docs-ui/docs/pyric-rules-tutorials-01-lint-your-first-rules-file.md +142 -0
  638. package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules/index.html +151 -0
  639. package/dist/serve/docs-ui/docs/pyric-rules-tutorials-02-write-a-test-suite-for-your-rules.md +194 -0
  640. package/dist/serve/docs-ui/docs/pyric-rules.md +88 -0
  641. package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
  642. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
  643. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +157 -0
  644. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
  645. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +98 -0
  646. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
  647. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +105 -0
  648. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
  649. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +80 -0
  650. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
  651. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
  652. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +88 -0
  653. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +87 -0
  654. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
  655. package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
  656. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
  657. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +83 -0
  658. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
  659. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +154 -0
  660. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
  661. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +69 -0
  662. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +89 -0
  663. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +87 -0
  664. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
  665. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +86 -0
  666. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
  667. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +112 -0
  668. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
  669. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +70 -0
  670. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
  671. package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +73 -0
  672. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +77 -0
  673. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +117 -0
  674. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
  675. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +137 -0
  676. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
  677. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +114 -0
  678. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
  679. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +99 -0
  680. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
  681. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +128 -0
  682. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
  683. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +188 -0
  684. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
  685. package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +77 -0
  686. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
  687. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +154 -0
  688. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness/index.html +191 -0
  689. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-02-use-the-sandbox-in-a-test-harness.md +222 -0
  690. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor/index.html +163 -0
  691. package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-03-build-a-traffic-monitor.md +192 -0
  692. package/dist/serve/docs-ui/docs/pyric-sandbox.md +63 -0
  693. package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
  694. package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +1076 -0
  695. package/dist/serve/docs-ui/docs/pyric-storage-compat.md +337 -0
  696. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +63 -0
  697. package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +104 -0
  698. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
  699. package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +80 -0
  700. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
  701. package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
  702. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +104 -0
  703. package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +111 -0
  704. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
  705. package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +76 -0
  706. package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata/index.html +77 -0
  707. package/dist/serve/docs-ui/docs/pyric-storage-how-to-round-trip-metadata.md +100 -0
  708. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +65 -0
  709. package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +82 -0
  710. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
  711. package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +82 -0
  712. package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +92 -0
  713. package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +152 -0
  714. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +46 -0
  715. package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +66 -0
  716. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +73 -0
  717. package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +90 -0
  718. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +45 -0
  719. package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +65 -0
  720. package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download/index.html +114 -0
  721. package/dist/serve/docs-ui/docs/pyric-storage-tutorials-01-upload-and-download.md +141 -0
  722. package/dist/serve/docs-ui/docs/pyric-storage.md +63 -0
  723. package/dist/serve/docs-ui/docs/pyric-tools/index.html +45 -0
  724. package/dist/serve/docs-ui/docs/pyric-tools-bridge/index.html +71 -0
  725. package/dist/serve/docs-ui/docs/pyric-tools-bridge.md +90 -0
  726. package/dist/serve/docs-ui/docs/pyric-tools-deploy/index.html +59 -0
  727. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators/index.html +63 -0
  728. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-primitives-vs-orchestrators.md +83 -0
  729. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching/index.html +47 -0
  730. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-token-caching.md +70 -0
  731. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli/index.html +36 -0
  732. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-no-firebase-cli.md +50 -0
  733. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists/index.html +47 -0
  734. package/dist/serve/docs-ui/docs/pyric-tools-deploy-explanation-why-this-package-exists.md +60 -0
  735. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth/index.html +55 -0
  736. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-firebase-auth.md +68 -0
  737. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account/index.html +35 -0
  738. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-build-projectscope-from-service-account.md +52 -0
  739. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function/index.html +81 -0
  740. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-bundle-and-deploy-a-function.md +98 -0
  741. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes/index.html +71 -0
  742. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-indexes.md +91 -0
  743. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules/index.html +100 -0
  744. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-firestore-rules.md +105 -0
  745. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites/index.html +86 -0
  746. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-hosting-rewrites.md +92 -0
  747. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules/index.html +132 -0
  748. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-realtime-database-rules.md +165 -0
  749. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel/index.html +46 -0
  750. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-deploy-to-a-preview-channel.md +62 -0
  751. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes/index.html +75 -0
  752. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-handle-errors-and-outcomes.md +94 -0
  753. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database/index.html +48 -0
  754. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-provision-a-firestore-database.md +65 -0
  755. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent/index.html +65 -0
  756. package/dist/serve/docs-ui/docs/pyric-tools-deploy-how-to-register-tools-with-an-agent.md +82 -0
  757. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api/index.html +155 -0
  758. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-api.md +190 -0
  759. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io/index.html +84 -0
  760. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-cli-agent-io.md +66 -0
  761. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes/index.html +71 -0
  762. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-error-codes.md +102 -0
  763. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace/index.html +138 -0
  764. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-firestore-namespace.md +175 -0
  765. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace/index.html +105 -0
  766. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-functions-namespace.md +133 -0
  767. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config/index.html +194 -0
  768. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-config.md +95 -0
  769. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace/index.html +99 -0
  770. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-hosting-namespace.md +126 -0
  771. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace/index.html +110 -0
  772. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-rtdb-namespace.md +133 -0
  773. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome/index.html +68 -0
  774. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-scope-and-outcome.md +88 -0
  775. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories/index.html +160 -0
  776. package/dist/serve/docs-ui/docs/pyric-tools-deploy-reference-tool-factories.md +104 -0
  777. package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function/index.html +88 -0
  778. package/dist/serve/docs-ui/docs/pyric-tools-deploy-tutorials-01-deploy-a-cloud-function.md +119 -0
  779. package/dist/serve/docs-ui/docs/pyric-tools-deploy.md +52 -0
  780. package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary/index.html +92 -0
  781. package/dist/serve/docs-ui/docs/pyric-tools-how-to-build-a-standalone-binary.md +95 -0
  782. package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains/index.html +101 -0
  783. package/dist/serve/docs-ui/docs/pyric-tools-how-to-configure-auth-providers-and-domains.md +126 -0
  784. package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore/index.html +95 -0
  785. package/dist/serve/docs-ui/docs/pyric-tools-how-to-discover-a-schema-from-firestore.md +119 -0
  786. package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
  787. package/dist/serve/docs-ui/docs/pyric-tools-how-to-promote-sandbox-state-to-a-fixture.md +83 -0
  788. package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab/index.html +232 -0
  789. package/dist/serve/docs-ui/docs/pyric-tools-how-to-serve-persistence-and-multi-tab.md +178 -0
  790. package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin/index.html +340 -0
  791. package/dist/serve/docs-ui/docs/pyric-tools-how-to-use-the-vite-plugin.md +288 -0
  792. package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session/index.html +128 -0
  793. package/dist/serve/docs-ui/docs/pyric-tools-how-to-verify-against-a-captured-session.md +173 -0
  794. package/dist/serve/docs-ui/docs/pyric-tools-reference-cli/index.html +433 -0
  795. package/dist/serve/docs-ui/docs/pyric-tools-reference-cli.md +252 -0
  796. package/dist/serve/docs-ui/docs/pyric-tools-reference-verify/index.html +81 -0
  797. package/dist/serve/docs-ui/docs/pyric-tools-reference-verify.md +98 -0
  798. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started/index.html +92 -0
  799. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-getting-started.md +117 -0
  800. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption/index.html +221 -0
  801. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-server-adoption.md +239 -0
  802. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code/index.html +205 -0
  803. package/dist/serve/docs-ui/docs/pyric-tools-tutorials-wire-claude-code.md +250 -0
  804. package/dist/serve/docs-ui/docs/pyric-tools.md +47 -0
  805. package/dist/serve/docs-ui/docs/ui/index.html +76 -0
  806. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
  807. package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +108 -0
  808. package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +258 -0
  809. package/dist/serve/docs-ui/docs/ui-auth-authusers.md +174 -0
  810. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
  811. package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +71 -0
  812. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
  813. package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +94 -0
  814. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
  815. package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +107 -0
  816. package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
  817. package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +86 -0
  818. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
  819. package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +78 -0
  820. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
  821. package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +95 -0
  822. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
  823. package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +85 -0
  824. package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
  825. package/dist/serve/docs-ui/docs/ui-primitives-badge.md +34 -0
  826. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
  827. package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +98 -0
  828. package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
  829. package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +31 -0
  830. package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
  831. package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +41 -0
  832. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
  833. package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +44 -0
  834. package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
  835. package/dist/serve/docs-ui/docs/ui-primitives-toast.md +74 -0
  836. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
  837. package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +48 -0
  838. package/dist/serve/docs-ui/docs/ui-storage/index.html +154 -0
  839. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +127 -0
  840. package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +83 -0
  841. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
  842. package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +84 -0
  843. package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
  844. package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +87 -0
  845. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
  846. package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +51 -0
  847. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +65 -0
  848. package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +53 -0
  849. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
  850. package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +72 -0
  851. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +153 -0
  852. package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +105 -0
  853. package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
  854. package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
  855. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
  856. package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +54 -0
  857. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
  858. package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +53 -0
  859. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
  860. package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +63 -0
  861. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
  862. package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +40 -0
  863. package/dist/serve/docs-ui/docs/ui-traffic.md +96 -0
  864. package/dist/serve/docs-ui/docs/ui.md +88 -0
  865. package/dist/serve/docs-ui/index.html +1 -0
  866. package/dist/serve/docs-ui/llms.txt +221 -0
  867. package/dist/serve/entries/app.d.ts +26 -0
  868. package/dist/serve/entries/app.d.ts.map +1 -0
  869. package/dist/serve/entries/app.js +51 -0
  870. package/dist/serve/entries/app.js.map +1 -0
  871. package/dist/serve/entries/auth-helper-core.d.ts +47 -0
  872. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
  873. package/dist/serve/entries/auth-helper-core.js +121 -0
  874. package/dist/serve/entries/auth-helper-core.js.map +1 -0
  875. package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
  876. package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
  877. package/dist/serve/entries/auth-helper-dom.js +116 -0
  878. package/dist/serve/entries/auth-helper-dom.js.map +1 -0
  879. package/dist/serve/entries/auth.d.ts +62 -0
  880. package/dist/serve/entries/auth.d.ts.map +1 -0
  881. package/dist/serve/entries/auth.js +128 -0
  882. package/dist/serve/entries/auth.js.map +1 -0
  883. package/dist/serve/entries/bridge-url.d.ts +25 -0
  884. package/dist/serve/entries/bridge-url.d.ts.map +1 -0
  885. package/dist/serve/entries/bridge-url.js +30 -0
  886. package/dist/serve/entries/bridge-url.js.map +1 -0
  887. package/dist/serve/entries/database.d.ts +34 -0
  888. package/dist/serve/entries/database.d.ts.map +1 -0
  889. package/dist/serve/entries/database.js +42 -0
  890. package/dist/serve/entries/database.js.map +1 -0
  891. package/dist/serve/entries/firestore.d.ts +68 -0
  892. package/dist/serve/entries/firestore.d.ts.map +1 -0
  893. package/dist/serve/entries/firestore.js +115 -0
  894. package/dist/serve/entries/firestore.js.map +1 -0
  895. package/dist/serve/entries/init.d.ts +2 -0
  896. package/dist/serve/entries/init.d.ts.map +1 -0
  897. package/dist/serve/entries/init.js +14 -0
  898. package/dist/serve/entries/init.js.map +1 -0
  899. package/dist/serve/entries/keepalive.d.ts +20 -0
  900. package/dist/serve/entries/keepalive.d.ts.map +1 -0
  901. package/dist/serve/entries/keepalive.js +38 -0
  902. package/dist/serve/entries/keepalive.js.map +1 -0
  903. package/dist/serve/entries/runtime.d.ts +60 -0
  904. package/dist/serve/entries/runtime.d.ts.map +1 -0
  905. package/dist/serve/entries/runtime.js +555 -0
  906. package/dist/serve/entries/runtime.js.map +1 -0
  907. package/dist/serve/entries/session-store.d.ts +45 -0
  908. package/dist/serve/entries/session-store.d.ts.map +1 -0
  909. package/dist/serve/entries/session-store.js +71 -0
  910. package/dist/serve/entries/session-store.js.map +1 -0
  911. package/dist/serve/entries/storage.d.ts +23 -0
  912. package/dist/serve/entries/storage.d.ts.map +1 -0
  913. package/dist/serve/entries/storage.js +49 -0
  914. package/dist/serve/entries/storage.js.map +1 -0
  915. package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
  916. package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
  917. package/dist/serve/entries/tab-sync-wiring.js +217 -0
  918. package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
  919. package/dist/serve/namespace.d.ts +93 -0
  920. package/dist/serve/namespace.d.ts.map +1 -0
  921. package/dist/serve/namespace.js +367 -0
  922. package/dist/serve/namespace.js.map +1 -0
  923. package/dist/serve/open-browser.d.ts +23 -0
  924. package/dist/serve/open-browser.d.ts.map +1 -0
  925. package/dist/serve/open-browser.js +58 -0
  926. package/dist/serve/open-browser.js.map +1 -0
  927. package/dist/serve/playground-ui/_astro/HomePage.BFOjZGZp.js +2 -0
  928. package/dist/serve/playground-ui/_astro/PlaygroundPage.3jki8il0.js +3300 -0
  929. package/dist/serve/playground-ui/_astro/PlaygroundPage.MhP_vFvK.css +32 -0
  930. package/dist/serve/playground-ui/_astro/TopBar.ChifCjLD.js +5025 -0
  931. package/dist/serve/playground-ui/_astro/client.D61DpmEZ.js +274 -0
  932. package/dist/serve/playground-ui/_astro/client.GCK88uRs.js +1 -0
  933. package/dist/serve/playground-ui/_astro/esbuild.BHljloGq.wasm +0 -0
  934. package/dist/serve/playground-ui/_astro/index.B9aLOeXL.js +29 -0
  935. package/dist/serve/playground-ui/_astro/index.BTKE7uRF.js +1227 -0
  936. package/dist/serve/playground-ui/_astro/index.BfCthstx.css +1 -0
  937. package/dist/serve/playground-ui/_astro/index.Mr0Dtjih.js +342 -0
  938. package/dist/serve/playground-ui/_astro/ort-wasm-simd-threaded.asyncify.DMmc6YqF.wasm +0 -0
  939. package/dist/serve/playground-ui/favicon.svg +4 -0
  940. package/dist/serve/playground-ui/index.html +2 -0
  941. package/dist/serve/playground-ui/playground/index.html +2 -0
  942. package/dist/serve/rules.d.ts +45 -0
  943. package/dist/serve/rules.d.ts.map +1 -0
  944. package/dist/serve/rules.js +139 -0
  945. package/dist/serve/rules.js.map +1 -0
  946. package/dist/serve/sandbox-marker.d.ts +9 -0
  947. package/dist/serve/sandbox-marker.d.ts.map +1 -0
  948. package/dist/serve/sandbox-marker.js +32 -0
  949. package/dist/serve/sandbox-marker.js.map +1 -0
  950. package/dist/serve/server.d.ts +135 -0
  951. package/dist/serve/server.d.ts.map +1 -0
  952. package/dist/serve/server.js +328 -0
  953. package/dist/serve/server.js.map +1 -0
  954. package/dist/serve/standalone-assets.d.ts +66 -0
  955. package/dist/serve/standalone-assets.d.ts.map +1 -0
  956. package/dist/serve/standalone-assets.js +144 -0
  957. package/dist/serve/standalone-assets.js.map +1 -0
  958. package/dist/serve/state-store.d.ts +45 -0
  959. package/dist/serve/state-store.d.ts.map +1 -0
  960. package/dist/serve/state-store.js +120 -0
  961. package/dist/serve/state-store.js.map +1 -0
  962. package/dist/serve/studio/disk-project-store.d.ts +9 -0
  963. package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
  964. package/dist/serve/studio/disk-project-store.js +173 -0
  965. package/dist/serve/studio/disk-project-store.js.map +1 -0
  966. package/dist/serve/studio/disk-workspace.d.ts +14 -0
  967. package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
  968. package/dist/serve/studio/disk-workspace.js +152 -0
  969. package/dist/serve/studio/disk-workspace.js.map +1 -0
  970. package/dist/serve/studio/index.d.ts +10 -0
  971. package/dist/serve/studio/index.d.ts.map +1 -0
  972. package/dist/serve/studio/index.js +9 -0
  973. package/dist/serve/studio/index.js.map +1 -0
  974. package/dist/serve/studio/routes.d.ts +40 -0
  975. package/dist/serve/studio/routes.d.ts.map +1 -0
  976. package/dist/serve/studio/routes.js +182 -0
  977. package/dist/serve/studio/routes.js.map +1 -0
  978. package/dist/serve/studio/store-types.d.ts +45 -0
  979. package/dist/serve/studio/store-types.d.ts.map +1 -0
  980. package/dist/serve/studio/store-types.js +11 -0
  981. package/dist/serve/studio/store-types.js.map +1 -0
  982. package/dist/serve/studio-ui/assets/RulesCodeEditor-Bncteb8z.js +23 -0
  983. package/dist/serve/studio-ui/assets/index-CmkJxFcG.js +4577 -0
  984. package/dist/serve/studio-ui/assets/index-DNK39P6C.css +1 -0
  985. package/dist/serve/studio-ui/assets/seed-Bab4ArXQ.js +2 -0
  986. package/dist/serve/studio-ui/index.html +32 -0
  987. package/dist/serve/studio-ui/pyric-logo.svg +76 -0
  988. package/dist/serve/vite-plugin.d.ts +57 -0
  989. package/dist/serve/vite-plugin.d.ts.map +1 -0
  990. package/dist/serve/vite-plugin.js +687 -0
  991. package/dist/serve/vite-plugin.js.map +1 -0
  992. package/dist/serve/worker/client.d.ts +668 -0
  993. package/dist/serve/worker/client.d.ts.map +1 -0
  994. package/dist/serve/worker/client.js +1635 -0
  995. package/dist/serve/worker/client.js.map +1 -0
  996. package/dist/serve/worker/entry.d.ts +40 -0
  997. package/dist/serve/worker/entry.d.ts.map +1 -0
  998. package/dist/serve/worker/entry.js +122 -0
  999. package/dist/serve/worker/entry.js.map +1 -0
  1000. package/dist/serve/worker/host-auth.d.ts +47 -0
  1001. package/dist/serve/worker/host-auth.d.ts.map +1 -0
  1002. package/dist/serve/worker/host-auth.js +434 -0
  1003. package/dist/serve/worker/host-auth.js.map +1 -0
  1004. package/dist/serve/worker/host-context.d.ts +180 -0
  1005. package/dist/serve/worker/host-context.d.ts.map +1 -0
  1006. package/dist/serve/worker/host-context.js +45 -0
  1007. package/dist/serve/worker/host-context.js.map +1 -0
  1008. package/dist/serve/worker/host-events.d.ts +21 -0
  1009. package/dist/serve/worker/host-events.d.ts.map +1 -0
  1010. package/dist/serve/worker/host-events.js +87 -0
  1011. package/dist/serve/worker/host-events.js.map +1 -0
  1012. package/dist/serve/worker/host.d.ts +81 -0
  1013. package/dist/serve/worker/host.d.ts.map +1 -0
  1014. package/dist/serve/worker/host.js +1605 -0
  1015. package/dist/serve/worker/host.js.map +1 -0
  1016. package/dist/serve/worker/index.d.ts +22 -0
  1017. package/dist/serve/worker/index.d.ts.map +1 -0
  1018. package/dist/serve/worker/index.js +61 -0
  1019. package/dist/serve/worker/index.js.map +1 -0
  1020. package/dist/serve/worker/protocol.d.ts +955 -0
  1021. package/dist/serve/worker/protocol.d.ts.map +1 -0
  1022. package/dist/serve/worker/protocol.js +197 -0
  1023. package/dist/serve/worker/protocol.js.map +1 -0
  1024. package/dist/serve/worker/serve-init.d.ts +192 -0
  1025. package/dist/serve/worker/serve-init.d.ts.map +1 -0
  1026. package/dist/serve/worker/serve-init.js +555 -0
  1027. package/dist/serve/worker/serve-init.js.map +1 -0
  1028. package/dist/serve/writer-lock.d.ts +32 -0
  1029. package/dist/serve/writer-lock.d.ts.map +1 -0
  1030. package/dist/serve/writer-lock.js +43 -0
  1031. package/dist/serve/writer-lock.js.map +1 -0
  1032. package/dist/verify/cases.d.ts +37 -0
  1033. package/dist/verify/cases.d.ts.map +1 -0
  1034. package/dist/verify/cases.js +173 -0
  1035. package/dist/verify/cases.js.map +1 -0
  1036. package/dist/verify/fixture.d.ts +79 -0
  1037. package/dist/verify/fixture.d.ts.map +1 -0
  1038. package/dist/verify/fixture.js +114 -0
  1039. package/dist/verify/fixture.js.map +1 -0
  1040. package/dist/verify/index.d.ts +102 -0
  1041. package/dist/verify/index.d.ts.map +1 -0
  1042. package/dist/verify/index.js +318 -0
  1043. package/dist/verify/index.js.map +1 -0
  1044. package/dist/verify/tools.d.ts +7 -0
  1045. package/dist/verify/tools.d.ts.map +1 -0
  1046. package/dist/verify/tools.js +83 -0
  1047. package/dist/verify/tools.js.map +1 -0
  1048. package/dist/vite.d.ts +12 -0
  1049. package/dist/vite.d.ts.map +1 -0
  1050. package/dist/vite.js +16 -0
  1051. package/dist/vite.js.map +1 -0
  1052. package/package.json +127 -0
@@ -0,0 +1,342 @@
1
+ import{L as $,_ as Et,N as Pt,O as Rt,Q as Ve,U as xt,V as St,X as Tt,Y as vt,Z as It,$ as At,a0 as Ae,a1 as Ot,a2 as $t,a3 as be,a4 as we,a5 as Ct}from"./TopBar.ChifCjLD.js";import"./index.B9aLOeXL.js";/**
2
+ * @license
3
+ * Copyright 2017 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */const ze="firebasestorage.googleapis.com",We="storageBucket",Nt=120*1e3,Ut=600*1e3;/**
17
+ * @license
18
+ * Copyright 2017 Google LLC
19
+ *
20
+ * Licensed under the Apache License, Version 2.0 (the "License");
21
+ * you may not use this file except in compliance with the License.
22
+ * You may obtain a copy of the License at
23
+ *
24
+ * http://www.apache.org/licenses/LICENSE-2.0
25
+ *
26
+ * Unless required by applicable law or agreed to in writing, software
27
+ * distributed under the License is distributed on an "AS IS" BASIS,
28
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
+ * See the License for the specific language governing permissions and
30
+ * limitations under the License.
31
+ */let p=class Ge extends vt{constructor(t,n,s=0){super(ce(t),`Firebase Storage: ${n} (${ce(t)})`),this.status_=s,this.customData={serverResponse:null},this._baseMessage=this.message,Object.setPrototypeOf(this,Ge.prototype)}get status(){return this.status_}set status(t){this.status_=t}_codeEquals(t){return ce(t)===this.code}get serverResponse(){return this.customData.serverResponse}set serverResponse(t){this.customData.serverResponse=t,this.customData.serverResponse?this.message=`${this._baseMessage}
32
+ ${this.customData.serverResponse}`:this.message=this._baseMessage}};var f;(function(e){e.UNKNOWN="unknown",e.OBJECT_NOT_FOUND="object-not-found",e.BUCKET_NOT_FOUND="bucket-not-found",e.PROJECT_NOT_FOUND="project-not-found",e.QUOTA_EXCEEDED="quota-exceeded",e.UNAUTHENTICATED="unauthenticated",e.UNAUTHORIZED="unauthorized",e.UNAUTHORIZED_APP="unauthorized-app",e.RETRY_LIMIT_EXCEEDED="retry-limit-exceeded",e.INVALID_CHECKSUM="invalid-checksum",e.CANCELED="canceled",e.INVALID_EVENT_NAME="invalid-event-name",e.INVALID_URL="invalid-url",e.INVALID_DEFAULT_BUCKET="invalid-default-bucket",e.NO_DEFAULT_BUCKET="no-default-bucket",e.CANNOT_SLICE_BLOB="cannot-slice-blob",e.SERVER_FILE_WRONG_SIZE="server-file-wrong-size",e.NO_DOWNLOAD_URL="no-download-url",e.INVALID_ARGUMENT="invalid-argument",e.INVALID_ARGUMENT_COUNT="invalid-argument-count",e.APP_DELETED="app-deleted",e.INVALID_ROOT_OPERATION="invalid-root-operation",e.INVALID_FORMAT="invalid-format",e.INTERNAL_ERROR="internal-error",e.UNSUPPORTED_ENVIRONMENT="unsupported-environment"})(f||(f={}));function ce(e){return"storage/"+e}function ye(){const e="An unknown error occurred, please check the error payload for server response.";return new p(f.UNKNOWN,e)}function Dt(e){return new p(f.OBJECT_NOT_FOUND,"Object '"+e+"' does not exist.")}function Bt(e){return new p(f.QUOTA_EXCEEDED,"Quota for bucket '"+e+"' exceeded, please view quota on https://firebase.google.com/pricing/.")}function Lt(){const e="User is not authenticated, please authenticate using Firebase Authentication and try again.";return new p(f.UNAUTHENTICATED,e)}function Mt(){return new p(f.UNAUTHORIZED_APP,"This app does not have permission to access Firebase Storage on this project.")}function jt(e){return new p(f.UNAUTHORIZED,"User does not have permission to access '"+e+"'.")}function Ft(){return new p(f.RETRY_LIMIT_EXCEEDED,"Max retry time for operation exceeded, please try again.")}function qt(){return new p(f.CANCELED,"User canceled the upload/download.")}function Ht(e){return new p(f.INVALID_URL,"Invalid URL '"+e+"'.")}function Vt(e){return new p(f.INVALID_DEFAULT_BUCKET,"Invalid default bucket '"+e+"'.")}function zt(){return new p(f.NO_DEFAULT_BUCKET,"No default bucket found. Did you set the '"+We+"' property when initializing the app?")}function Wt(){return new p(f.CANNOT_SLICE_BLOB,"Cannot slice blob for upload. Please retry the upload.")}function Gt(e){return new p(f.UNSUPPORTED_ENVIRONMENT,`${e} is missing. Make sure to install the required polyfills. See https://firebase.google.com/docs/web/environments-js-sdk#polyfills for more information.`)}function pe(e){return new p(f.INVALID_ARGUMENT,e)}function Ke(){return new p(f.APP_DELETED,"The Firebase app was deleted.")}function Kt(e){return new p(f.INVALID_ROOT_OPERATION,"The operation '"+e+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').")}function V(e,t){return new p(f.INVALID_FORMAT,"String does not match format '"+e+"': "+t)}function H(e){throw new p(f.INTERNAL_ERROR,"Internal error: "+e)}/**
33
+ * @license
34
+ * Copyright 2017 Google LLC
35
+ *
36
+ * Licensed under the Apache License, Version 2.0 (the "License");
37
+ * you may not use this file except in compliance with the License.
38
+ * You may obtain a copy of the License at
39
+ *
40
+ * http://www.apache.org/licenses/LICENSE-2.0
41
+ *
42
+ * Unless required by applicable law or agreed to in writing, software
43
+ * distributed under the License is distributed on an "AS IS" BASIS,
44
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
+ * See the License for the specific language governing permissions and
46
+ * limitations under the License.
47
+ */class w{constructor(t,n){this.bucket=t,this.path_=n}get path(){return this.path_}get isRoot(){return this.path.length===0}fullServerUrl(){const t=encodeURIComponent;return"/b/"+t(this.bucket)+"/o/"+t(this.path)}bucketOnlyServerUrl(){return"/b/"+encodeURIComponent(this.bucket)+"/o"}static makeFromBucketSpec(t,n){let s;try{s=w.makeFromUrl(t,n)}catch{return new w(t,"")}if(s.path==="")return s;throw Vt(t)}static makeFromUrl(t,n){let s=null;const r="([A-Za-z0-9.\\-_]+)";function o(y){y.path.charAt(y.path.length-1)==="/"&&(y.path_=y.path_.slice(0,-1))}const a="(/(.*))?$",i=new RegExp("^gs://"+r+a,"i"),c={bucket:1,path:3};function u(y){y.path_=decodeURIComponent(y.path)}const l="v[A-Za-z0-9_]+",h=n.replace(/[.]/g,"\\."),d="(/([^?#]*).*)?$",g=new RegExp(`^https?://${h}/${l}/b/${r}/o${d}`,"i"),P={bucket:1,path:3},R=n===ze?"(?:storage.googleapis.com|storage.cloud.google.com)":n,m="([^?#]*)",k=new RegExp(`^https?://${R}/${r}/${m}`,"i"),v=[{regex:i,indices:c,postModify:o},{regex:g,indices:P,postModify:u},{regex:k,indices:{bucket:1,path:2},postModify:u}];for(let y=0;y<v.length;y++){const K=v[y],ae=K.regex.exec(t);if(ae){const kt=ae[K.indices.bucket];let ie=ae[K.indices.path];ie||(ie=""),s=new w(kt,ie),K.postModify(s);break}}if(s==null)throw Ht(t);return s}}class Xt{constructor(t){this.promise_=Promise.reject(t)}getPromise(){return this.promise_}cancel(t=!1){}}/**
48
+ * @license
49
+ * Copyright 2017 Google LLC
50
+ *
51
+ * Licensed under the Apache License, Version 2.0 (the "License");
52
+ * you may not use this file except in compliance with the License.
53
+ * You may obtain a copy of the License at
54
+ *
55
+ * http://www.apache.org/licenses/LICENSE-2.0
56
+ *
57
+ * Unless required by applicable law or agreed to in writing, software
58
+ * distributed under the License is distributed on an "AS IS" BASIS,
59
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
60
+ * See the License for the specific language governing permissions and
61
+ * limitations under the License.
62
+ */function Jt(e,t,n){let s=1,r=null,o=null,a=!1,i=0;function c(){return i===2}let u=!1;function l(...m){u||(u=!0,t.apply(null,m))}function h(m){r=setTimeout(()=>{r=null,e(g,c())},m)}function d(){o&&clearTimeout(o)}function g(m,...k){if(u){d();return}if(m){d(),l.call(null,m,...k);return}if(c()||a){d(),l.call(null,m,...k);return}s<64&&(s*=2);let v;i===1?(i=2,v=0):v=(s+Math.random())*1e3,h(v)}let P=!1;function R(m){P||(P=!0,d(),!u&&(r!==null?(m||(i=2),clearTimeout(r),h(0)):m||(i=1)))}return h(0),o=setTimeout(()=>{a=!0,R(!0)},n),R}function Yt(e){e(!1)}/**
63
+ * @license
64
+ * Copyright 2017 Google LLC
65
+ *
66
+ * Licensed under the Apache License, Version 2.0 (the "License");
67
+ * you may not use this file except in compliance with the License.
68
+ * You may obtain a copy of the License at
69
+ *
70
+ * http://www.apache.org/licenses/LICENSE-2.0
71
+ *
72
+ * Unless required by applicable law or agreed to in writing, software
73
+ * distributed under the License is distributed on an "AS IS" BASIS,
74
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
75
+ * See the License for the specific language governing permissions and
76
+ * limitations under the License.
77
+ */function Zt(e){return e!==void 0}function Qt(e){return typeof e=="object"&&!Array.isArray(e)}function Xe(e){return typeof e=="string"||e instanceof String}function Oe(e){return _e()&&e instanceof Blob}function _e(){return typeof Blob<"u"}function ge(e,t,n,s){if(s<t)throw pe(`Invalid value for '${e}'. Expected ${t} or greater.`);if(s>n)throw pe(`Invalid value for '${e}'. Expected ${n} or less.`)}/**
78
+ * @license
79
+ * Copyright 2017 Google LLC
80
+ *
81
+ * Licensed under the Apache License, Version 2.0 (the "License");
82
+ * you may not use this file except in compliance with the License.
83
+ * You may obtain a copy of the License at
84
+ *
85
+ * http://www.apache.org/licenses/LICENSE-2.0
86
+ *
87
+ * Unless required by applicable law or agreed to in writing, software
88
+ * distributed under the License is distributed on an "AS IS" BASIS,
89
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
90
+ * See the License for the specific language governing permissions and
91
+ * limitations under the License.
92
+ */function M(e,t,n){let s=t;return n==null&&(s=`https://${t}`),`${n}://${s}/v0${e}`}function en(e){const t=encodeURIComponent;let n="?";for(const s in e)if(e.hasOwnProperty(s)){const r=t(s)+"="+t(e[s]);n=n+r+"&"}return n=n.slice(0,-1),n}var D;(function(e){e[e.NO_ERROR=0]="NO_ERROR",e[e.NETWORK_ERROR=1]="NETWORK_ERROR",e[e.ABORT=2]="ABORT"})(D||(D={}));/**
93
+ * @license
94
+ * Copyright 2022 Google LLC
95
+ *
96
+ * Licensed under the Apache License, Version 2.0 (the "License");
97
+ * you may not use this file except in compliance with the License.
98
+ * You may obtain a copy of the License at
99
+ *
100
+ * http://www.apache.org/licenses/LICENSE-2.0
101
+ *
102
+ * Unless required by applicable law or agreed to in writing, software
103
+ * distributed under the License is distributed on an "AS IS" BASIS,
104
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
105
+ * See the License for the specific language governing permissions and
106
+ * limitations under the License.
107
+ */function tn(e,t){const n=e>=500&&e<600,r=[408,429].indexOf(e)!==-1,o=t.indexOf(e)!==-1;return n||r||o}/**
108
+ * @license
109
+ * Copyright 2017 Google LLC
110
+ *
111
+ * Licensed under the Apache License, Version 2.0 (the "License");
112
+ * you may not use this file except in compliance with the License.
113
+ * You may obtain a copy of the License at
114
+ *
115
+ * http://www.apache.org/licenses/LICENSE-2.0
116
+ *
117
+ * Unless required by applicable law or agreed to in writing, software
118
+ * distributed under the License is distributed on an "AS IS" BASIS,
119
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120
+ * See the License for the specific language governing permissions and
121
+ * limitations under the License.
122
+ */class nn{constructor(t,n,s,r,o,a,i,c,u,l,h,d=!0,g=!1){this.url_=t,this.method_=n,this.headers_=s,this.body_=r,this.successCodes_=o,this.additionalRetryCodes_=a,this.callback_=i,this.errorCallback_=c,this.timeout_=u,this.progressCallback_=l,this.connectionFactory_=h,this.retry=d,this.isUsingEmulator=g,this.pendingConnection_=null,this.backoffId_=null,this.canceled_=!1,this.appDelete_=!1,this.promise_=new Promise((P,R)=>{this.resolve_=P,this.reject_=R,this.start_()})}start_(){const t=(s,r)=>{if(r){s(!1,new X(!1,null,!0));return}const o=this.connectionFactory_();this.pendingConnection_=o;const a=i=>{const c=i.loaded,u=i.lengthComputable?i.total:-1;this.progressCallback_!==null&&this.progressCallback_(c,u)};this.progressCallback_!==null&&o.addUploadProgressListener(a),o.send(this.url_,this.method_,this.isUsingEmulator,this.body_,this.headers_).then(()=>{this.progressCallback_!==null&&o.removeUploadProgressListener(a),this.pendingConnection_=null;const i=o.getErrorCode()===D.NO_ERROR,c=o.getStatus();if(!i||tn(c,this.additionalRetryCodes_)&&this.retry){const l=o.getErrorCode()===D.ABORT;s(!1,new X(!1,null,l));return}const u=this.successCodes_.indexOf(c)!==-1;s(!0,new X(u,o))})},n=(s,r)=>{const o=this.resolve_,a=this.reject_,i=r.connection;if(r.wasSuccessCode)try{const c=this.callback_(i,i.getResponse());Zt(c)?o(c):o()}catch(c){a(c)}else if(i!==null){const c=ye();c.serverResponse=i.getErrorText(),this.errorCallback_?a(this.errorCallback_(i,c)):a(c)}else if(r.canceled){const c=this.appDelete_?Ke():qt();a(c)}else{const c=Ft();a(c)}};this.canceled_?n(!1,new X(!1,null,!0)):this.backoffId_=Jt(t,n,this.timeout_)}getPromise(){return this.promise_}cancel(t){this.canceled_=!0,this.appDelete_=t||!1,this.backoffId_!==null&&Yt(this.backoffId_),this.pendingConnection_!==null&&this.pendingConnection_.abort()}}class X{constructor(t,n,s){this.wasSuccessCode=t,this.connection=n,this.canceled=!!s}}function sn(e,t){t!==null&&t.length>0&&(e.Authorization="Firebase "+t)}function rn(e,t){e["X-Firebase-Storage-Version"]="webjs/"+(t??"AppManager")}function on(e,t){t&&(e["X-Firebase-GMPID"]=t)}function an(e,t){t!==null&&(e["X-Firebase-AppCheck"]=t)}function cn(e,t,n,s,r,o,a=!0,i=!1){const c=en(e.urlParams),u=e.url+c,l=Object.assign({},e.headers);return on(l,t),sn(l,n),rn(l,o),an(l,s),new nn(u,e.method,l,e.body,e.successCodes,e.additionalRetryCodes,e.handler,e.errorHandler,e.timeout,e.progressCallback,r,a,i)}/**
123
+ * @license
124
+ * Copyright 2017 Google LLC
125
+ *
126
+ * Licensed under the Apache License, Version 2.0 (the "License");
127
+ * you may not use this file except in compliance with the License.
128
+ * You may obtain a copy of the License at
129
+ *
130
+ * http://www.apache.org/licenses/LICENSE-2.0
131
+ *
132
+ * Unless required by applicable law or agreed to in writing, software
133
+ * distributed under the License is distributed on an "AS IS" BASIS,
134
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135
+ * See the License for the specific language governing permissions and
136
+ * limitations under the License.
137
+ */function un(){return typeof BlobBuilder<"u"?BlobBuilder:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:void 0}function ln(...e){const t=un();if(t!==void 0){const n=new t;for(let s=0;s<e.length;s++)n.append(e[s]);return n.getBlob()}else{if(_e())return new Blob(e);throw new p(f.UNSUPPORTED_ENVIRONMENT,"This browser doesn't seem to support creating Blobs")}}function dn(e,t,n){return e.webkitSlice?e.webkitSlice(t,n):e.mozSlice?e.mozSlice(t,n):e.slice?e.slice(t,n):null}/**
138
+ * @license
139
+ * Copyright 2021 Google LLC
140
+ *
141
+ * Licensed under the Apache License, Version 2.0 (the "License");
142
+ * you may not use this file except in compliance with the License.
143
+ * You may obtain a copy of the License at
144
+ *
145
+ * http://www.apache.org/licenses/LICENSE-2.0
146
+ *
147
+ * Unless required by applicable law or agreed to in writing, software
148
+ * distributed under the License is distributed on an "AS IS" BASIS,
149
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
150
+ * See the License for the specific language governing permissions and
151
+ * limitations under the License.
152
+ */function hn(e){if(typeof atob>"u")throw Gt("base-64");return atob(e)}/**
153
+ * @license
154
+ * Copyright 2017 Google LLC
155
+ *
156
+ * Licensed under the Apache License, Version 2.0 (the "License");
157
+ * you may not use this file except in compliance with the License.
158
+ * You may obtain a copy of the License at
159
+ *
160
+ * http://www.apache.org/licenses/LICENSE-2.0
161
+ *
162
+ * Unless required by applicable law or agreed to in writing, software
163
+ * distributed under the License is distributed on an "AS IS" BASIS,
164
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
165
+ * See the License for the specific language governing permissions and
166
+ * limitations under the License.
167
+ */const A={RAW:"raw",BASE64:"base64",BASE64URL:"base64url",DATA_URL:"data_url"};class ue{constructor(t,n){this.data=t,this.contentType=n||null}}function fn(e,t){switch(e){case A.RAW:return new ue(Je(t));case A.BASE64:case A.BASE64URL:return new ue(Ye(e,t));case A.DATA_URL:return new ue(gn(t),mn(t))}throw ye()}function Je(e){const t=[];for(let n=0;n<e.length;n++){let s=e.charCodeAt(n);if(s<=127)t.push(s);else if(s<=2047)t.push(192|s>>6,128|s&63);else if((s&64512)===55296)if(!(n<e.length-1&&(e.charCodeAt(n+1)&64512)===56320))t.push(239,191,189);else{const o=s,a=e.charCodeAt(++n);s=65536|(o&1023)<<10|a&1023,t.push(240|s>>18,128|s>>12&63,128|s>>6&63,128|s&63)}else(s&64512)===56320?t.push(239,191,189):t.push(224|s>>12,128|s>>6&63,128|s&63)}return new Uint8Array(t)}function pn(e){let t;try{t=decodeURIComponent(e)}catch{throw V(A.DATA_URL,"Malformed data URL.")}return Je(t)}function Ye(e,t){switch(e){case A.BASE64:{const r=t.indexOf("-")!==-1,o=t.indexOf("_")!==-1;if(r||o)throw V(e,"Invalid character '"+(r?"-":"_")+"' found: is it base64url encoded?");break}case A.BASE64URL:{const r=t.indexOf("+")!==-1,o=t.indexOf("/")!==-1;if(r||o)throw V(e,"Invalid character '"+(r?"+":"/")+"' found: is it base64 encoded?");t=t.replace(/-/g,"+").replace(/_/g,"/");break}}let n;try{n=hn(t)}catch(r){throw r.message.includes("polyfill")?r:V(e,"Invalid character found")}const s=new Uint8Array(n.length);for(let r=0;r<n.length;r++)s[r]=n.charCodeAt(r);return s}class Ze{constructor(t){this.base64=!1,this.contentType=null;const n=t.match(/^data:([^,]+)?,/);if(n===null)throw V(A.DATA_URL,"Must be formatted 'data:[<mediatype>][;base64],<data>");const s=n[1]||null;s!=null&&(this.base64=bn(s,";base64"),this.contentType=this.base64?s.substring(0,s.length-7):s),this.rest=t.substring(t.indexOf(",")+1)}}function gn(e){const t=new Ze(e);return t.base64?Ye(A.BASE64,t.rest):pn(t.rest)}function mn(e){return new Ze(e).contentType}function bn(e,t){return e.length>=t.length?e.substring(e.length-t.length)===t:!1}/**
168
+ * @license
169
+ * Copyright 2017 Google LLC
170
+ *
171
+ * Licensed under the Apache License, Version 2.0 (the "License");
172
+ * you may not use this file except in compliance with the License.
173
+ * You may obtain a copy of the License at
174
+ *
175
+ * http://www.apache.org/licenses/LICENSE-2.0
176
+ *
177
+ * Unless required by applicable law or agreed to in writing, software
178
+ * distributed under the License is distributed on an "AS IS" BASIS,
179
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
180
+ * See the License for the specific language governing permissions and
181
+ * limitations under the License.
182
+ */class C{constructor(t,n){let s=0,r="";Oe(t)?(this.data_=t,s=t.size,r=t.type):t instanceof ArrayBuffer?(n?this.data_=new Uint8Array(t):(this.data_=new Uint8Array(t.byteLength),this.data_.set(new Uint8Array(t))),s=this.data_.length):t instanceof Uint8Array&&(n?this.data_=t:(this.data_=new Uint8Array(t.length),this.data_.set(t)),s=t.length),this.size_=s,this.type_=r}size(){return this.size_}type(){return this.type_}slice(t,n){if(Oe(this.data_)){const s=this.data_,r=dn(s,t,n);return r===null?null:new C(r)}else{const s=new Uint8Array(this.data_.buffer,t,n-t);return new C(s,!0)}}static getBlob(...t){if(_e()){const n=t.map(s=>s instanceof C?s.data_:s);return new C(ln.apply(null,n))}else{const n=t.map(a=>Xe(a)?fn(A.RAW,a).data:a.data_);let s=0;n.forEach(a=>{s+=a.byteLength});const r=new Uint8Array(s);let o=0;return n.forEach(a=>{for(let i=0;i<a.length;i++)r[o++]=a[i]}),new C(r,!0)}}uploadData(){return this.data_}}/**
183
+ * @license
184
+ * Copyright 2017 Google LLC
185
+ *
186
+ * Licensed under the Apache License, Version 2.0 (the "License");
187
+ * you may not use this file except in compliance with the License.
188
+ * You may obtain a copy of the License at
189
+ *
190
+ * http://www.apache.org/licenses/LICENSE-2.0
191
+ *
192
+ * Unless required by applicable law or agreed to in writing, software
193
+ * distributed under the License is distributed on an "AS IS" BASIS,
194
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
195
+ * See the License for the specific language governing permissions and
196
+ * limitations under the License.
197
+ */function Qe(e){let t;try{t=JSON.parse(e)}catch{return null}return Qt(t)?t:null}/**
198
+ * @license
199
+ * Copyright 2017 Google LLC
200
+ *
201
+ * Licensed under the Apache License, Version 2.0 (the "License");
202
+ * you may not use this file except in compliance with the License.
203
+ * You may obtain a copy of the License at
204
+ *
205
+ * http://www.apache.org/licenses/LICENSE-2.0
206
+ *
207
+ * Unless required by applicable law or agreed to in writing, software
208
+ * distributed under the License is distributed on an "AS IS" BASIS,
209
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
210
+ * See the License for the specific language governing permissions and
211
+ * limitations under the License.
212
+ */function wn(e){if(e.length===0)return null;const t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}function yn(e,t){const n=t.split("/").filter(s=>s.length>0).join("/");return e.length===0?n:e+"/"+n}function et(e){const t=e.lastIndexOf("/",e.length-2);return t===-1?e:e.slice(t+1)}/**
213
+ * @license
214
+ * Copyright 2017 Google LLC
215
+ *
216
+ * Licensed under the Apache License, Version 2.0 (the "License");
217
+ * you may not use this file except in compliance with the License.
218
+ * You may obtain a copy of the License at
219
+ *
220
+ * http://www.apache.org/licenses/LICENSE-2.0
221
+ *
222
+ * Unless required by applicable law or agreed to in writing, software
223
+ * distributed under the License is distributed on an "AS IS" BASIS,
224
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
225
+ * See the License for the specific language governing permissions and
226
+ * limitations under the License.
227
+ */function _n(e,t){return t}class b{constructor(t,n,s,r){this.server=t,this.local=n||t,this.writable=!!s,this.xform=r||_n}}let J=null;function kn(e){return!Xe(e)||e.length<2?e:et(e)}function ke(){if(J)return J;const e=[];e.push(new b("bucket")),e.push(new b("generation")),e.push(new b("metageneration")),e.push(new b("name","fullPath",!0));function t(o,a){return kn(a)}const n=new b("name");n.xform=t,e.push(n);function s(o,a){return a!==void 0?Number(a):a}const r=new b("size");return r.xform=s,e.push(r),e.push(new b("timeCreated")),e.push(new b("updated")),e.push(new b("md5Hash",null,!0)),e.push(new b("cacheControl",null,!0)),e.push(new b("contentDisposition",null,!0)),e.push(new b("contentEncoding",null,!0)),e.push(new b("contentLanguage",null,!0)),e.push(new b("contentType",null,!0)),e.push(new b("metadata","customMetadata",!0)),J=e,J}function En(e,t){function n(){const s=e.bucket,r=e.fullPath,o=new w(s,r);return t._makeStorageReference(o)}Object.defineProperty(e,"ref",{get:n})}function Pn(e,t,n){const s={};s.type="file";const r=n.length;for(let o=0;o<r;o++){const a=n[o];s[a.local]=a.xform(s,t[a.server])}return En(s,e),s}function Rn(e,t,n){const s=Qe(t);return s===null?null:Pn(e,s,n)}function tt(e,t){const n={},s=t.length;for(let r=0;r<s;r++){const o=t[r];o.writable&&(n[o.server]=e[o.local])}return JSON.stringify(n)}/**
228
+ * @license
229
+ * Copyright 2019 Google LLC
230
+ *
231
+ * Licensed under the Apache License, Version 2.0 (the "License");
232
+ * you may not use this file except in compliance with the License.
233
+ * You may obtain a copy of the License at
234
+ *
235
+ * http://www.apache.org/licenses/LICENSE-2.0
236
+ *
237
+ * Unless required by applicable law or agreed to in writing, software
238
+ * distributed under the License is distributed on an "AS IS" BASIS,
239
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
240
+ * See the License for the specific language governing permissions and
241
+ * limitations under the License.
242
+ */const $e="prefixes",Ce="items";function xn(e,t,n){const s={prefixes:[],items:[],nextPageToken:n.nextPageToken};if(n[$e])for(const r of n[$e]){const o=r.replace(/\/$/,""),a=e._makeStorageReference(new w(t,o));s.prefixes.push(a)}if(n[Ce])for(const r of n[Ce]){const o=e._makeStorageReference(new w(t,r.name));s.items.push(o)}return s}function Sn(e,t,n){const s=Qe(n);return s===null?null:xn(e,t,s)}class j{constructor(t,n,s,r){this.url=t,this.method=n,this.handler=s,this.timeout=r,this.urlParams={},this.headers={},this.body=null,this.errorHandler=null,this.progressCallback=null,this.successCodes=[200],this.additionalRetryCodes=[]}}/**
243
+ * @license
244
+ * Copyright 2017 Google LLC
245
+ *
246
+ * Licensed under the Apache License, Version 2.0 (the "License");
247
+ * you may not use this file except in compliance with the License.
248
+ * You may obtain a copy of the License at
249
+ *
250
+ * http://www.apache.org/licenses/LICENSE-2.0
251
+ *
252
+ * Unless required by applicable law or agreed to in writing, software
253
+ * distributed under the License is distributed on an "AS IS" BASIS,
254
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
255
+ * See the License for the specific language governing permissions and
256
+ * limitations under the License.
257
+ */function nt(e){if(!e)throw ye()}function Ee(e,t){function n(s,r){const o=Rn(e,r,t);return nt(o!==null),o}return n}function Tn(e,t){function n(s,r){const o=Sn(e,t,r);return nt(o!==null),o}return n}function Pe(e){function t(n,s){let r;return n.getStatus()===401?n.getErrorText().includes("Firebase App Check token is invalid")?r=Mt():r=Lt():n.getStatus()===402?r=Bt(e.bucket):n.getStatus()===403?r=jt(e.path):r=s,r.status=n.getStatus(),r.serverResponse=s.serverResponse,r}return t}function re(e){const t=Pe(e);function n(s,r){let o=t(s,r);return s.getStatus()===404&&(o=Dt(e.path)),o.serverResponse=r.serverResponse,o}return n}function vn(e,t,n){const s=t.fullServerUrl(),r=M(s,e.host,e._protocol),o="GET",a=e.maxOperationRetryTime,i=new j(r,o,Ee(e,n),a);return i.errorHandler=re(t),i}function In(e,t,n,s,r){const o={};t.isRoot?o.prefix="":o.prefix=t.path+"/",n.length>0&&(o.delimiter=n),s&&(o.pageToken=s),r&&(o.maxResults=r);const a=t.bucketOnlyServerUrl(),i=M(a,e.host,e._protocol),c="GET",u=e.maxOperationRetryTime,l=new j(i,c,Tn(e,t.bucket),u);return l.urlParams=o,l.errorHandler=Pe(t),l}function st(e,t,n){const s=t.fullServerUrl(),r=M(s,e.host,e._protocol)+"?alt=media",o="GET",a=e.maxOperationRetryTime,i=new j(r,o,(c,u)=>u,a);return i.errorHandler=re(t),n!==void 0&&(i.headers.Range=`bytes=0-${n}`,i.successCodes=[200,206]),i}function An(e,t,n,s){const r=t.fullServerUrl(),o=M(r,e.host,e._protocol),a="PATCH",i=tt(n,s),c={"Content-Type":"application/json; charset=utf-8"},u=e.maxOperationRetryTime,l=new j(o,a,Ee(e,s),u);return l.headers=c,l.body=i,l.errorHandler=re(t),l}function On(e,t){const n=t.fullServerUrl(),s=M(n,e.host,e._protocol),r="DELETE",o=e.maxOperationRetryTime;function a(c,u){}const i=new j(s,r,a,o);return i.successCodes=[200,204],i.errorHandler=re(t),i}function $n(e,t){return e&&e.contentType||t&&t.type()||"application/octet-stream"}function Cn(e,t,n){const s=Object.assign({},n);return s.fullPath=e.path,s.size=t.size(),s.contentType||(s.contentType=$n(null,t)),s}function Nn(e,t,n,s,r){const o=t.bucketOnlyServerUrl(),a={"X-Goog-Upload-Protocol":"multipart"};function i(){let v="";for(let y=0;y<2;y++)v=v+Math.random().toString().slice(2);return v}const c=i();a["Content-Type"]="multipart/related; boundary="+c;const u=Cn(t,s,r),l=tt(u,n),h="--"+c+`\r
258
+ Content-Type: application/json; charset=utf-8\r
259
+ \r
260
+ `+l+`\r
261
+ --`+c+`\r
262
+ Content-Type: `+u.contentType+`\r
263
+ \r
264
+ `,d=`\r
265
+ --`+c+"--",g=C.getBlob(h,s,d);if(g===null)throw Wt();const P={name:u.fullPath},R=M(o,e.host,e._protocol),m="POST",k=e.maxUploadRetryTime,U=new j(R,m,Ee(e,n),k);return U.urlParams=P,U.headers=a,U.body=g.uploadData(),U.errorHandler=Pe(t),U}class Re{constructor(){this.sent_=!1,this.xhr_=new XMLHttpRequest,this.initXhr(),this.errorCode_=D.NO_ERROR,this.sendPromise_=new Promise(t=>{this.xhr_.addEventListener("abort",()=>{this.errorCode_=D.ABORT,t()}),this.xhr_.addEventListener("error",()=>{this.errorCode_=D.NETWORK_ERROR,t()}),this.xhr_.addEventListener("load",()=>{t()})})}send(t,n,s,r,o){if(this.sent_)throw H("cannot .send() more than once");if(Ve(t)&&s&&(this.xhr_.withCredentials=!0),this.sent_=!0,this.xhr_.open(n,t,!0),o!==void 0)for(const a in o)o.hasOwnProperty(a)&&this.xhr_.setRequestHeader(a,o[a].toString());return r!==void 0?this.xhr_.send(r):this.xhr_.send(),this.sendPromise_}getErrorCode(){if(!this.sent_)throw H("cannot .getErrorCode() before sending");return this.errorCode_}getStatus(){if(!this.sent_)throw H("cannot .getStatus() before sending");try{return this.xhr_.status}catch{return-1}}getResponse(){if(!this.sent_)throw H("cannot .getResponse() before sending");return this.xhr_.response}getErrorText(){if(!this.sent_)throw H("cannot .getErrorText() before sending");return this.xhr_.statusText}abort(){this.xhr_.abort()}getResponseHeader(t){return this.xhr_.getResponseHeader(t)}addUploadProgressListener(t){this.xhr_.upload!=null&&this.xhr_.upload.addEventListener("progress",t)}removeUploadProgressListener(t){this.xhr_.upload!=null&&this.xhr_.upload.removeEventListener("progress",t)}}class Un extends Re{initXhr(){this.xhr_.responseType="text"}}function W(){return new Un}class Dn extends Re{initXhr(){this.xhr_.responseType="arraybuffer"}}function Bn(){return new Dn}class Ln extends Re{initXhr(){this.xhr_.responseType="blob"}}function Mn(){return new Ln}/**
266
+ * @license
267
+ * Copyright 2019 Google LLC
268
+ *
269
+ * Licensed under the Apache License, Version 2.0 (the "License");
270
+ * you may not use this file except in compliance with the License.
271
+ * You may obtain a copy of the License at
272
+ *
273
+ * http://www.apache.org/licenses/LICENSE-2.0
274
+ *
275
+ * Unless required by applicable law or agreed to in writing, software
276
+ * distributed under the License is distributed on an "AS IS" BASIS,
277
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
278
+ * See the License for the specific language governing permissions and
279
+ * limitations under the License.
280
+ */class B{constructor(t,n){this._service=t,n instanceof w?this._location=n:this._location=w.makeFromUrl(n,t.host)}toString(){return"gs://"+this._location.bucket+"/"+this._location.path}_newRef(t,n){return new B(t,n)}get root(){const t=new w(this._location.bucket,"");return this._newRef(this._service,t)}get bucket(){return this._location.bucket}get fullPath(){return this._location.path}get name(){return et(this._location.path)}get storage(){return this._service}get parent(){const t=wn(this._location.path);if(t===null)return null;const n=new w(this._location.bucket,t);return new B(this._service,n)}_throwIfRoot(t){if(this._location.path==="")throw Kt(t)}}function jn(e,t){e._throwIfRoot("getBytes");const n=st(e.storage,e._location,t);return e.storage.makeRequestWithTokens(n,Bn).then(s=>t!==void 0?s.slice(0,t):s)}function Fn(e,t){e._throwIfRoot("getBlob");const n=st(e.storage,e._location,t);return e.storage.makeRequestWithTokens(n,Mn).then(s=>t!==void 0?s.slice(0,t):s)}function qn(e,t,n){e._throwIfRoot("uploadBytes");const s=Nn(e.storage,e._location,ke(),new C(t,!0),n);return e.storage.makeRequestWithTokens(s,W).then(r=>({metadata:r,ref:e}))}function Hn(e){const t={prefixes:[],items:[]};return rt(e,t).then(()=>t)}async function rt(e,t,n){const r=await Vn(e,{pageToken:n});t.prefixes.push(...r.prefixes),t.items.push(...r.items),r.nextPageToken!=null&&await rt(e,t,r.nextPageToken)}function Vn(e,t){t!=null&&typeof t.maxResults=="number"&&ge("options.maxResults",1,1e3,t.maxResults);const n=t||{},s=In(e.storage,e._location,"/",n.pageToken,n.maxResults);return e.storage.makeRequestWithTokens(s,W)}function zn(e){e._throwIfRoot("getMetadata");const t=vn(e.storage,e._location,ke());return e.storage.makeRequestWithTokens(t,W)}function Wn(e,t){e._throwIfRoot("updateMetadata");const n=An(e.storage,e._location,t,ke());return e.storage.makeRequestWithTokens(n,W)}function Gn(e){e._throwIfRoot("deleteObject");const t=On(e.storage,e._location);return e.storage.makeRequestWithTokens(t,W)}function Kn(e,t){const n=yn(e._location.path,t),s=new w(e._location.bucket,n);return new B(e.storage,s)}/**
281
+ * @license
282
+ * Copyright 2017 Google LLC
283
+ *
284
+ * Licensed under the Apache License, Version 2.0 (the "License");
285
+ * you may not use this file except in compliance with the License.
286
+ * You may obtain a copy of the License at
287
+ *
288
+ * http://www.apache.org/licenses/LICENSE-2.0
289
+ *
290
+ * Unless required by applicable law or agreed to in writing, software
291
+ * distributed under the License is distributed on an "AS IS" BASIS,
292
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
293
+ * See the License for the specific language governing permissions and
294
+ * limitations under the License.
295
+ */function Xn(e){return/^[A-Za-z]+:\/\//.test(e)}function Jn(e,t){return new B(e,t)}function ot(e,t){if(e instanceof xe){const n=e;if(n._bucket==null)throw zt();const s=new B(n,n._bucket);return t!=null?ot(s,t):s}else return t!==void 0?Kn(e,t):e}function Yn(e,t){if(t&&Xn(t)){if(e instanceof xe)return Jn(e,t);throw pe("To use ref(service, url), the first argument must be a Storage instance.")}else return ot(e,t)}function Ne(e,t){const n=t?.[We];return n==null?null:w.makeFromBucketSpec(n,e)}function Zn(e,t,n,s={}){e.host=`${t}:${n}`;const r=Ve(t);r&&xt(`https://${e.host}/b`),e._isUsingEmulator=!0,e._protocol=r?"https":"http";const{mockUserToken:o}=s;o&&(e._overrideAuthToken=typeof o=="string"?o:St(o,e.app.options.projectId))}class xe{constructor(t,n,s,r,o,a=!1){this.app=t,this._authProvider=n,this._appCheckProvider=s,this._url=r,this._firebaseVersion=o,this._isUsingEmulator=a,this._bucket=null,this._host=ze,this._protocol="https",this._appId=null,this._deleted=!1,this._maxOperationRetryTime=Nt,this._maxUploadRetryTime=Ut,this._requests=new Set,r!=null?this._bucket=w.makeFromBucketSpec(r,this._host):this._bucket=Ne(this._host,this.app.options)}get host(){return this._host}set host(t){this._host=t,this._url!=null?this._bucket=w.makeFromBucketSpec(this._url,t):this._bucket=Ne(t,this.app.options)}get maxUploadRetryTime(){return this._maxUploadRetryTime}set maxUploadRetryTime(t){ge("time",0,Number.POSITIVE_INFINITY,t),this._maxUploadRetryTime=t}get maxOperationRetryTime(){return this._maxOperationRetryTime}set maxOperationRetryTime(t){ge("time",0,Number.POSITIVE_INFINITY,t),this._maxOperationRetryTime=t}async _getAuthToken(){if(this._overrideAuthToken)return this._overrideAuthToken;const t=this._authProvider.getImmediate({optional:!0});if(t){const n=await t.getToken();if(n!==null)return n.accessToken}return null}async _getAppCheckToken(){if(Tt(this.app)&&this.app.settings.appCheckToken)return this.app.settings.appCheckToken;const t=this._appCheckProvider.getImmediate({optional:!0});return t?(await t.getToken()).token:null}_delete(){return this._deleted||(this._deleted=!0,this._requests.forEach(t=>t.cancel()),this._requests.clear()),Promise.resolve()}_makeStorageReference(t){return new B(this,t)}_makeRequest(t,n,s,r,o=!0){if(this._deleted)return new Xt(Ke());{const a=cn(t,this._appId,s,r,n,this._firebaseVersion,o,this._isUsingEmulator);return this._requests.add(a),a.getPromise().then(()=>this._requests.delete(a),()=>this._requests.delete(a)),a}}async makeRequestWithTokens(t,n){const[s,r]=await Promise.all([this._getAuthToken(),this._getAppCheckToken()]);return this._makeRequest(t,n,s,r).getPromise()}}const Ue="@firebase/storage",De="0.14.3";/**
296
+ * @license
297
+ * Copyright 2020 Google LLC
298
+ *
299
+ * Licensed under the Apache License, Version 2.0 (the "License");
300
+ * you may not use this file except in compliance with the License.
301
+ * You may obtain a copy of the License at
302
+ *
303
+ * http://www.apache.org/licenses/LICENSE-2.0
304
+ *
305
+ * Unless required by applicable law or agreed to in writing, software
306
+ * distributed under the License is distributed on an "AS IS" BASIS,
307
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
308
+ * See the License for the specific language governing permissions and
309
+ * limitations under the License.
310
+ */const at="storage";/**
311
+ * @license
312
+ * Copyright 2020 Google LLC
313
+ *
314
+ * Licensed under the Apache License, Version 2.0 (the "License");
315
+ * you may not use this file except in compliance with the License.
316
+ * You may obtain a copy of the License at
317
+ *
318
+ * http://www.apache.org/licenses/LICENSE-2.0
319
+ *
320
+ * Unless required by applicable law or agreed to in writing, software
321
+ * distributed under the License is distributed on an "AS IS" BASIS,
322
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
323
+ * See the License for the specific language governing permissions and
324
+ * limitations under the License.
325
+ */function Qn(e,t){return e=$(e),jn(e,t)}function es(e,t,n){return e=$(e),qn(e,t,n)}function ts(e){return e=$(e),zn(e)}function ns(e,t){return e=$(e),Wn(e,t)}function ss(e){return e=$(e),Hn(e)}function rs(e){return e=$(e),Gn(e)}function te(e,t){return e=$(e),Yn(e,t)}function Be(e=Rt(),t){e=$(e);const s=Et(e,at).getImmediate({identifier:t}),r=Pt("storage");return r&&os(s,...r),s}function os(e,t,n,s={}){Zn(e,t,n,s)}/**
326
+ * @license
327
+ * Copyright 2021 Google LLC
328
+ *
329
+ * Licensed under the Apache License, Version 2.0 (the "License");
330
+ * you may not use this file except in compliance with the License.
331
+ * You may obtain a copy of the License at
332
+ *
333
+ * http://www.apache.org/licenses/LICENSE-2.0
334
+ *
335
+ * Unless required by applicable law or agreed to in writing, software
336
+ * distributed under the License is distributed on an "AS IS" BASIS,
337
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
338
+ * See the License for the specific language governing permissions and
339
+ * limitations under the License.
340
+ */function as(e,t){return e=$(e),Fn(e,t)}function is(e,{instanceIdentifier:t}){const n=e.getProvider("app").getImmediate(),s=e.getProvider("auth-internal"),r=e.getProvider("app-check-internal");return new xe(n,s,r,t,Ot)}function cs(){It(new At(at,is,"PUBLIC").setMultipleInstances(!0)),Ae(Ue,De,""),Ae(Ue,De,"esm2020")}cs();const us="pyric-storage",ls=1,I="blobs",_="metadata";function ds(e=us){return fs(e).then(t=>new hs(t))}class hs{db;constructor(t){this.db=t}async put(t,n,s){const r=this.db.transaction([I,_],"readwrite");r.objectStore(I).put(n,t),r.objectStore(_).put(s,t),await Y(r)}async getBlob(t){const n=this.db.transaction(I,"readonly");return le(n.objectStore(I).get(t))}async getMetadata(t){const n=this.db.transaction(_,"readonly");return le(n.objectStore(_).get(t))}async putMetadata(t,n){const s=this.db.transaction(_,"readwrite");s.objectStore(_).put(n,t),await Y(s)}async delete(t){const n=this.db.transaction([I,_],"readwrite");n.objectStore(I).delete(t),n.objectStore(_).delete(t),await Y(n)}async listByPrefix(t){const n=this.db.transaction(_,"readonly"),s=IDBKeyRange.bound(t,t+"￿",!1,!1);return le(n.objectStore(_).getAll(s))}async reset(){const t=this.db.transaction([I,_],"readwrite");t.objectStore(I).clear(),t.objectStore(_).clear(),await Y(t)}close(){this.db.close()}}function fs(e){return new Promise((t,n)=>{const s=indexedDB.open(e,ls);s.addEventListener("upgradeneeded",()=>{const r=s.result;r.objectStoreNames.contains(I)||r.createObjectStore(I),r.objectStoreNames.contains(_)||r.createObjectStore(_)}),s.addEventListener("success",()=>t(s.result)),s.addEventListener("error",()=>n(s.error)),s.addEventListener("blocked",()=>n(new Error(`IndexedDB open blocked for db "${e}"`)))})}function le(e){return new Promise((t,n)=>{e.addEventListener("success",()=>t(e.result)),e.addEventListener("error",()=>n(e.error))})}function Y(e){return new Promise((t,n)=>{e.addEventListener("complete",()=>t()),e.addEventListener("error",()=>n(e.error)),e.addEventListener("abort",()=>n(e.error??new Error("IndexedDB transaction aborted")))})}const ps=["==","!=","<=",">=","&&","||"];function gs(e){const t=[];let n=0;for(;n<e.length;){const s=e[n];if(s===" "||s===" "||s===`
341
+ `||s==="\r"){n++;continue}if(s==="/"&&e[n+1]==="/"){for(;n<e.length&&e[n]!==`
342
+ `;)n++;continue}if(s==="'"||s==='"'){const o=s,a=n;n++;let i="";for(;n<e.length&&e[n]!==o;)i+=e[n],n++;if(n>=e.length)throw new SyntaxError(`Unterminated string literal starting at offset ${a}.`);n++,t.push({kind:"string",value:i,pos:a});continue}if(s>="0"&&s<="9"){const o=n;let a="";for(;n<e.length&&e[n]>="0"&&e[n]<="9";)a+=e[n],n++;t.push({kind:"number",value:Number(a),pos:o});continue}if(it(s)){const o=n;let a="";for(;n<e.length&&ms(e[n]);)a+=e[n],n++;t.push({kind:"ident",value:a,pos:o});continue}const r=e.slice(n,n+2);if(ps.includes(r)){t.push({kind:"punct",value:r,pos:n}),n+=2;continue}if("{}()[].,;:=*+-/<>!|&".includes(s)){t.push({kind:"punct",value:s,pos:n}),n++;continue}throw new SyntaxError(`Unexpected character "${s}" at offset ${n}.`)}return t.push({kind:"eof",pos:e.length}),t}function it(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_"}function ms(e){return it(e)||e>="0"&&e<="9"}class bs{tokens;pos=0;constructor(t){this.tokens=t}parseService(){this.expectIdent("service"),this.expectIdent("firebase"),this.expectPunct("."),this.expectIdent("storage"),this.expectPunct("{");const t={segments:[],children:[],allows:[]};for(;!this.atPunct("}");)this.parseMatchInto(t);return this.expectPunct("}"),t}parseMatchInto(t){this.expectIdent("match");const n=this.parsePath();this.expectPunct("{");const s={segments:n,children:[],allows:[]};for(;!this.atPunct("}");)if(this.atIdent("match"))this.parseMatchInto(s);else if(this.atIdent("allow"))s.allows.push(this.parseAllow());else{const r=this.peek();throw new SyntaxError(`Expected 'match' or 'allow' inside match block at offset ${r.pos}, got "${de(r)}".`)}this.expectPunct("}"),t.children.push(s)}parsePath(){const t=[];for(;this.atPunct("/");){this.expectPunct("/");const n=this.peek();if(n.kind==="punct"&&n.value==="{"){this.expectPunct("{");const s=this.expectIdentValue();this.atPunct("=")?(this.expectPunct("="),this.expectPunct("*"),this.expectPunct("*"),this.expectPunct("}"),t.push({kind:"wildcard",name:s})):(this.expectPunct("}"),t.push({kind:"param",name:s}))}else if(n.kind==="ident")t.push({kind:"literal",value:n.value}),this.pos++;else throw new SyntaxError(`Expected path segment after '/' at offset ${n.pos}.`)}if(t.length===0)throw new SyntaxError(`Empty match path at offset ${this.peek().pos}.`);return t}parseAllow(){this.expectIdent("allow");const t=[];for(t.push(this.parseVerb());this.atPunct(",");)this.expectPunct(","),t.push(this.parseVerb());this.expectPunct(":");let n=null;return this.atIdent("if")&&(this.expectIdent("if"),n=this.parseExpression()),this.expectPunct(";"),{verbs:t,condition:n}}parseVerb(){const t=this.expect("ident");if(t.value==="read"||t.value==="write")return t.value;throw new SyntaxError(`Unsupported verb "${t.value}" at offset ${t.pos}. V1 scope supports only 'read' and 'write'; the granular forms (get/list/create/update/delete) defer to follow-up work.`)}parseExpression(){return this.parseOr()}parseOr(){let t=this.parseAnd();for(;this.atPunct("||");)this.expectPunct("||"),t={kind:"binary",op:"||",left:t,right:this.parseAnd()};return t}parseAnd(){let t=this.parseEq();for(;this.atPunct("&&");)this.expectPunct("&&"),t={kind:"binary",op:"&&",left:t,right:this.parseEq()};return t}parseEq(){let t=this.parseRel();for(;this.atPunct("==")||this.atPunct("!=");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseRel()};return t}parseRel(){let t=this.parseAdd();for(;this.atPunct("<")||this.atPunct(">")||this.atPunct("<=")||this.atPunct(">=");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseAdd()};return t}parseAdd(){let t=this.parseMul();for(;this.atPunct("+")||this.atPunct("-");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseMul()};return t}parseMul(){let t=this.parseUnary();for(;this.atPunct("*")||this.atPunct("/");)t={kind:"binary",op:this.expect("punct").value,left:t,right:this.parseUnary()};return t}parseUnary(){return this.atPunct("!")?(this.expectPunct("!"),{kind:"unary",op:"!",arg:this.parseUnary()}):this.parsePostfix()}parsePostfix(){let t=this.parsePrimary();for(;;)if(this.atPunct(".")){this.expectPunct(".");const n=this.expectIdentValue();t={kind:"member",target:t,name:n}}else if(this.atPunct("[")){this.expectPunct("[");const n=this.parseExpression();this.expectPunct("]"),t={kind:"index",target:t,index:n}}else return t}parsePrimary(){const t=this.peek();if(t.kind==="punct"&&t.value==="("){this.expectPunct("(");const n=this.parseExpression();return this.expectPunct(")"),n}if(t.kind==="number")return this.pos++,{kind:"literal",value:t.value};if(t.kind==="string")return this.pos++,{kind:"literal",value:t.value};if(t.kind==="ident")return this.pos++,t.value==="true"?{kind:"literal",value:!0}:t.value==="false"?{kind:"literal",value:!1}:t.value==="null"?{kind:"literal",value:null}:{kind:"ident",name:t.value};throw new SyntaxError(`Unexpected token "${de(t)}" at offset ${t.pos}.`)}peek(){return this.tokens[this.pos]}atPunct(t){const n=this.tokens[this.pos];return n.kind==="punct"&&n.value===t}atIdent(t){const n=this.tokens[this.pos];return n.kind==="ident"&&n.value===t}expect(t){const n=this.tokens[this.pos];if(n.kind!==t)throw new SyntaxError(`Expected ${t} at offset ${n.pos}, got "${de(n)}".`);return this.pos++,n}expectIdent(t){const n=this.expect("ident");if(n.value!==t)throw new SyntaxError(`Expected keyword "${t}" at offset ${n.pos}, got "${n.value}".`)}expectIdentValue(){return this.expect("ident").value}expectPunct(t){const n=this.expect("punct");if(n.value!==t)throw new SyntaxError(`Expected "${t}" at offset ${n.pos}, got "${n.value}".`)}}function de(e){return e.kind==="eof"?"<eof>":e.kind==="string"?JSON.stringify(e.value):String(e.value)}function ws(e){const t=gs(e);return{_root:new bs(t).parseService()}}function G(e){return e?{size:e.size,contentType:e.contentType,metadata:e.customMetadata}:null}function ct(e){return{size:e.size,contentType:e.contentType,metadata:e.customMetadata}}function ys(e,t){const n=_s(t.request.path),s=[];function r(a,i,c){const u=Es(a.segments,i,c);if(!u)return!1;const l=u.params,h=u.left;if(h.length===0)for(const d of a.allows){if(!d.verbs.includes(t.request.method))continue;if(d.condition?ne(x(d.condition,t,l)):!0)return!0;s.push(`match ${ks(a.segments)} ${d.verbs.join(", ")}: condition false`)}for(const d of a.children)if(r(d,h,l))return!0;return!1}const o=r(e._root,n,{});return!o&&s.length===0&&s.push(`no rule matches ${t.request.method} /${n.join("/")}`),{allowed:o,reasons:s}}function _s(e){return e.split("/").filter(t=>t.length>0)}function ks(e){return"/"+e.map(t=>t.kind==="literal"?t.value:t.kind==="param"?`{${t.name}}`:`{${t.name}=**}`).join("/")}function Es(e,t,n){let s=0;const r={...n};for(let o=0;o<e.length;o++){const a=e[o];if(a.kind==="wildcard")return r[a.name]=t.slice(s),{left:[],params:r};if(s>=t.length)return null;if(a.kind==="literal"){if(t[s]!==a.value)return null;s++}else r[a.name]=t[s],s++}return{left:t.slice(s),params:r}}function ne(e){return e!==!1&&e!==null&&e!==void 0&&!(typeof e=="number"&&Number.isNaN(e))}function x(e,t,n){switch(e.kind){case"literal":return e.value;case"ident":return e.name==="request"?Ps(t):e.name==="resource"?t.resource:e.name in n?n[e.name]:void 0;case"member":{const s=x(e.target,t,n);return s?.[e.name]}case"index":{const s=x(e.target,t,n);if(s==null)return;const r=x(e.index,t,n);return s[r]}case"unary":return!ne(x(e.arg,t,n));case"binary":{if(e.op==="&&"){const o=x(e.left,t,n);return ne(o)?x(e.right,t,n):o}if(e.op==="||"){const o=x(e.left,t,n);return ne(o)?o:x(e.right,t,n)}const s=x(e.left,t,n),r=x(e.right,t,n);switch(e.op){case"==":return s===r||s==null&&r==null;case"!=":return!(s===r||s==null&&r==null);case"<":return Z(s,r)<0;case">":return Z(s,r)>0;case"<=":return Z(s,r)<=0;case">=":return Z(s,r)>=0;case"+":return Q(s,r,(o,a)=>o+a);case"-":return Q(s,r,(o,a)=>o-a);case"*":return Q(s,r,(o,a)=>o*a);case"/":return Q(s,r,(o,a)=>o/a)}}}}function Z(e,t){return typeof e=="number"&&typeof t=="number"?e-t:typeof e=="string"&&typeof t=="string"?e<t?-1:e>t?1:0:Number.NaN}function Q(e,t,n){if(!(typeof e!="number"||typeof t!="number"))return n(e,t)}function Ps(e){return{auth:e.request.auth,resource:e.request.resource,method:e.request.method,path:e.request.path}}const Rs="pyric-default",oe=Symbol("pyric/storage/target");class xs{backend;rules;constructor(t,n=null){this.backend=t,this.rules=n}}const Le=new WeakMap,Me=new WeakMap,je=new WeakMap,Fe=new WeakMap;function Ss(e,t,n){const s=Le.get(e);if(s){const a=Fe.get(e)??null;if(t.rules!==void 0&&t.rules!==a)throw new Error(`pyric/storage: ${n} received a rules source, but this sandbox's storage service is already open ${a===null?"without rules":"with a different rules source"} — rules are honored only on the FIRST storage call per Sandbox, so these rules would be silently discarded. Configure rules on the first storage call for this sandbox.`);return s}const r=t.rules?ws(t.rules):null,o=ds(t.dbName).then(a=>new xs(a,r));return Le.set(e,o),Fe.set(e,t.rules??null),o}function he(e){return e instanceof $t}function Ts(e,t={}){const n=!he(e),s=he(e)?e.sandbox:e,r=Ss(s,t,"getStorageSandbox");if(n){const l=je.get(s);if(l)return l}const o=he(e)?e:e.withAuth(null),a=t.bucket??Rs,i=Me.get(o);if(i)return i;const c={kind:"sandbox",sandbox:s,context:o,bucket:a,servicePromise:r},u=Object.freeze({[oe]:c});return Me.set(o,u),n&&je.set(s,u),u}function vs(e,t={}){const n=t.bucket?Be(e,t.bucket):Be(e),s=Is(n),r={kind:"prod",app:e,fbStorage:n,bucket:s};return Object.freeze({[oe]:r})}function Is(e){return te(e).bucket}function E(e){const t=e[oe];if(!t)throw new TypeError("pyric/storage: not a FirebaseStorage handle — was it produced by getStorageSandbox or getStorageProd?");return t}function F(e){const t=E(e);if(t.kind!=="sandbox")throw new Error("getStorageService called on a prod-target handle — sandbox-only API");return t.servicePromise}function As(e){return`storage/${e}`}class L extends Error{code;constructor(t,n){const s=As(t);super(`${s}: ${n}`),this.name="StorageError",this.code=s,Object.setPrototypeOf(this,L.prototype)}}function Se(e){return new L("object-not-found",`no object at "${e}".`)}function Os(e,t,n){return new L("unauthorized",`${e} "${t}" denied by rules${n}.`)}function $s(e,t,n){return new L("quota-exceeded",`object at "${e}" is ${t} bytes, exceeds maxDownloadSizeBytes ${n}.`)}function Te(e){return new L("invalid-root-operation",`${e} cannot operate on the root reference.`)}function qe(e,t){return new L("invalid-format",`string does not match format "${e}": ${t}`)}const ut=new WeakMap;function N(e){const t=ut.get(e);if(!t)throw new Error("pyric/storage: expected a prod-target reference but the WeakMap had no entry. Mixing sandbox + prod refs in the same call?");return t}function ee(e,t){if(Ns(e)){if(E(e.storage).kind==="prod"){const r=te(N(e),t??"");return se(e.storage,r)}return new z(e.storage,Cs(e.fullPath,t??""))}const n=E(e);if(n.kind==="prod"){const s=t===void 0?te(n.fbStorage):te(n.fbStorage,t);return se(e,s)}return new z(e,lt(t??""))}class z{storage;bucket;fullPath;constructor(t,n){this.storage=t;const s=E(t);this.bucket=s.bucket,this.fullPath=n}get name(){if(this.fullPath==="")return"";const t=this.fullPath.lastIndexOf("/");return t===-1?this.fullPath:this.fullPath.slice(t+1)}get parent(){if(this.fullPath==="")return null;const t=this.fullPath.lastIndexOf("/"),n=t===-1?"":this.fullPath.slice(0,t);return new z(this.storage,n)}get root(){return this.fullPath===""?this:new z(this.storage,"")}toString(){return`gs://${this.bucket}/${this.fullPath}`}}function se(e,t){const n={storage:e,get bucket(){return t.bucket},get fullPath(){return t.fullPath},get name(){return t.name},get parent(){const s=t.parent;return s?se(e,s):null},get root(){return se(e,t.root)},toString(){return t.toString()}};return ut.set(n,t),n}function lt(e){return e===""?"":e.split("/").filter(t=>t.length>0).join("/")}function Cs(e,t){const n=lt(t);return e===""?n:n===""?e:`${e}/${n}`}function Ns(e){if(e===null||typeof e!="object"||oe in e)return!1;const t=e;return typeof t.fullPath=="string"&&t.storage!==void 0}function q(e,t,n){if(n?.kind==="sandbox"&&n.admin===!0||!e.rules)return;const s=ys(e.rules,t);if(s.allowed)return;const r=s.reasons.length>0?` — ${s.reasons.join("; ")}`:"";throw Os(t.request.method,t.request.path,r)}function ve(e){return{...e}}function Us(e,t,n=new Date){return{...e,contentType:t.contentType??e.contentType,cacheControl:t.cacheControl??e.cacheControl,contentDisposition:t.contentDisposition??e.contentDisposition,contentEncoding:t.contentEncoding??e.contentEncoding,contentLanguage:t.contentLanguage??e.contentLanguage,customMetadata:t.customMetadata??e.customMetadata,metageneration:Ds(e.metageneration),updated:n.toISOString()}}function Ds(e){const t=Number.parseInt(e,10);return Number.isFinite(t)?String(t+1):"1"}async function tr(e){dt(e,"getMetadata");const t=E(e.storage);if(t.kind==="prod")return await ts(N(e));const n=await F(e.storage),s=await n.backend.getMetadata(e.fullPath);if(q(n,{request:{auth:t.context.auth,method:"read",path:e.fullPath},resource:G(s)},t),!s)throw Se(e.fullPath);return ve(s)}async function nr(e,t){dt(e,"updateMetadata");const n=E(e.storage);if(n.kind==="prod")return await ns(N(e),t);const s=await F(e.storage),r=await s.backend.getMetadata(e.fullPath);if(q(s,{request:{auth:n.context.auth,method:"write",path:e.fullPath,resource:r?ct({size:r.size,contentType:t.contentType??r.contentType,customMetadata:t.customMetadata??r.customMetadata}):void 0},resource:G(r)},n),!r)throw Se(e.fullPath);const o=Us(r,t);if(await s.backend.putMetadata(e.fullPath,o),n.kind==="sandbox")try{be(n.sandbox,we({service:"storage",op:"metadata_update",path:e.fullPath,auth:n.context.auth,before:r,after:o,detail:{bucket:e.bucket}}),{service:"storage"})}catch{}return ve(o)}function dt(e,t){if(e.fullPath==="")throw Te(t)}const ht="application/octet-stream";async function Bs(e,t,n){Hs(e,"uploadBytes");const s=E(e.storage);if(s.kind==="prod"){const c=await es(N(e),t,n);return{ref:e,metadata:c.metadata}}const r=Ms(t,n?.contentType),o=Ls({ref:e,blob:r,settable:n}),a=await F(e.storage),i=await a.backend.getMetadata(e.fullPath);q(a,{request:{auth:s.context.auth,method:"write",path:e.fullPath,resource:ct({size:o.size,contentType:o.contentType,customMetadata:o.customMetadata})},resource:G(i)},s),await a.backend.put(e.fullPath,r,o);try{be(s.sandbox,we({service:"storage",op:"object_put",path:e.fullPath,auth:s.context.auth,before:i??void 0,after:o,detail:{bucket:e.bucket,size:o.size,contentType:o.contentType,overwrite:i!=null}}),{service:"storage"})}catch{}return{ref:e,metadata:ve(o)}}async function sr(e,t,n="raw",s){const{bytes:r,inferredType:o}=js(t,n),a={...s,contentType:s?.contentType??o??Fs(n)};return Bs(e,r,a)}function Ls(e){const{ref:t,blob:n,settable:s}=e,r=(e.now??new Date).toISOString(),o=qs(e.now??new Date),a=t.name;return{fullPath:t.fullPath,name:a,bucket:t.bucket,generation:o,metageneration:"1",timeCreated:r,updated:r,size:n.size,contentType:s?.contentType||n.type||ht,cacheControl:s?.cacheControl,contentDisposition:s?.contentDisposition,contentEncoding:s?.contentEncoding,contentLanguage:s?.contentLanguage,customMetadata:s?.customMetadata}}function Ms(e,t){return e instanceof Blob?t&&t!==e.type?new Blob([e],{type:t}):e:new Blob([e],{type:t??""})}function js(e,t){if(t==="raw")return{bytes:new TextEncoder().encode(e),inferredType:void 0};if(t==="base64")return{bytes:He(e),inferredType:void 0};if(t!=="data_url")throw qe(String(t),'unknown uploadString format — expected "raw", "base64", or "data_url".');const n=e.indexOf(",");if(!e.startsWith("data:")||n===-1)throw qe("data_url",'data_url requires a string starting with "data:" and containing a comma.');const s=e.slice(5,n),r=e.slice(n+1),o=s.endsWith(";base64"),a=(o?s.slice(0,-7):s)||"application/octet-stream";return{bytes:o?He(r):new TextEncoder().encode(decodeURIComponent(r)),inferredType:a}}function He(e){const t=atob(e),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n}function Fs(e){return e==="raw"?"text/plain;charset=utf-8":ht}function qs(e){return String(e.getTime())}function Hs(e,t){if(e.fullPath==="")throw Te(t)}async function rr(e,t){return Ie(e,"getBytes"),E(e.storage).kind==="prod"?Qn(N(e),t):(await ft(e,t)).arrayBuffer()}async function or(e,t){return Ie(e,"getBlob"),E(e.storage).kind==="prod"?as(N(e),t):ft(e,t)}async function ar(e){Ie(e,"deleteObject");const t=E(e.storage);if(t.kind==="prod"){await rs(N(e));return}const n=await F(e.storage),s=await n.backend.getMetadata(e.fullPath);q(n,{request:{auth:t.context.auth,method:"write",path:e.fullPath},resource:G(s)},t),await n.backend.delete(e.fullPath);try{be(t.sandbox,we({service:"storage",op:"object_delete",path:e.fullPath,auth:t.context.auth,before:s??void 0,detail:{bucket:e.bucket}}),{service:"storage"})}catch{}}async function ft(e,t){const n=E(e.storage);if(n.kind!=="sandbox")throw new Error("fetchBlob: sandbox-only helper called with prod target");const s=await F(e.storage),r=await s.backend.getMetadata(e.fullPath);q(s,{request:{auth:n.context.auth,method:"read",path:e.fullPath},resource:G(r)},n);const o=await s.backend.getBlob(e.fullPath);if(!o)throw Se(e.fullPath);if(typeof t=="number"&&o.size>t)throw $s(e.fullPath,o.size,t);return o}function Ie(e,t){if(e.fullPath==="")throw Te(t)}async function ir(e){const t=e.storage,n=E(t);if(n.kind==="prod"){const u=await ss(N(e));return{items:u.items.map(l=>ee(t,l.fullPath)),prefixes:u.prefixes.map(l=>ee(t,l.fullPath))}}const s=await F(t);q(s,{request:{auth:n.context.auth,method:"read",path:e.fullPath},resource:null},n);const r=e.fullPath===""?"":`${e.fullPath}/`,o=await s.backend.listByPrefix(r),a=[],i=new Set,c=[];for(const u of o){if(!u.fullPath.startsWith(r))continue;const l=u.fullPath.slice(r.length);if(l==="")continue;const h=l.indexOf("/");if(h===-1)a.push(ee(t,u.fullPath));else{const d=l.slice(0,h),g=`${r}${d}`;i.has(g)||(i.add(g),c.push(ee(t,g)))}}return c.sort((u,l)=>u.fullPath<l.fullPath?-1:u.fullPath>l.fullPath?1:0),{items:a,prefixes:c}}const pt="https://serviceusage.googleapis.com/v1",gt="https://firebase.googleapis.com/v1beta1",mt="https://firebasestorage.googleapis.com/v1beta",fe="https://firebaserules.googleapis.com/v1",bt="https://storage.googleapis.com/storage/v1",me="firebasestorage.googleapis.com";class S extends Error{status;body;reason;constructor(t,n,s,r){super(r),this.status=t,this.body=n,this.reason=s,this.name="StorageProvisioningError"}}function O(e){try{const t=JSON.parse(e);return{reason:t.error?.details?.find(s=>s.reason)?.reason,message:t.error?.message??e.slice(0,400)}}catch{return{reason:void 0,message:e.slice(0,400)}}}async function T(e,t,n){const s=await fetch(t,{...n,headers:{Authorization:`Bearer ${e}`,...n?.body?{"Content-Type":"application/json"}:{},...n?.headers??{}}}),r=s.ok?"":await s.text().catch(()=>"");return{status:s.status,ok:s.ok,body:r,response:s}}async function wt(e,t){const n=await T(e,`${pt}/projects/${encodeURIComponent(t)}/services/${me}`);if(!n.ok)return"unknown";const s=await n.response.json();return s.state==="ENABLED"?"enabled":s.state==="DISABLED"?"disabled":"unknown"}async function Vs(e,t){const n=await T(e,`${pt}/projects/${encodeURIComponent(t)}/services/${me}:enable`,{method:"POST",body:JSON.stringify({})});if(!n.ok){const{reason:s,message:r}=O(n.body);throw new S(n.status,n.body,s,`Failed to enable ${me}: ${n.status} ${r}`)}}async function yt(e,t){const n=await T(e,`${gt}/projects/${encodeURIComponent(t)}`);if(!n.ok){const{message:r}=O(n.body);throw new S(n.status,n.body,void 0,`getProject: ${n.status} ${r}`)}return(await n.response.json()).resources?.locationId??null}async function zs(e,t,n){const s=await T(e,`${gt}/projects/${encodeURIComponent(t)}/defaultLocation:finalize`,{method:"POST",body:JSON.stringify({locationId:n})});if(!s.ok){const{reason:r,message:o}=O(s.body);throw new S(s.status,s.body,r,`defaultLocation:finalize ${n}: ${s.status} ${o}`)}}async function _t(e,t){const n=await T(e,`${mt}/projects/${encodeURIComponent(t)}/buckets`);if(!n.ok){const{reason:r,message:o}=O(n.body);throw new S(n.status,n.body,r,`listBuckets: ${n.status} ${o}`)}return((await n.response.json()).buckets??[]).map(r=>({name:r.name,bucketId:r.name.split("/").pop()??r.name}))}async function Ws(e,t,n){const s=await T(e,`${mt}/projects/${encodeURIComponent(t)}/buckets/${encodeURIComponent(n)}:addFirebase`,{method:"POST",body:JSON.stringify({})});if(!s.ok){const{reason:o,message:a}=O(s.body);throw new S(s.status,s.body,o,`addFirebase ${n}: ${s.status} ${a}`)}return{name:(await s.response.json()).name??`projects/${t}/buckets/${n}`,bucketId:n}}async function Gs(e,t,n,s=`${t}.firebasestorage.app`){const r={"Content-Type":"application/json"},o=await T(e,`${fe}/projects/${encodeURIComponent(t)}/rulesets`,{method:"POST",headers:r,body:JSON.stringify({source:{files:[{name:"storage.rules",content:n}]}})});if(!o.ok){const{reason:h,message:d}=O(o.body);throw new S(o.status,o.body,h,`createRuleset: ${o.status} ${d}`)}const a=await o.response.json(),i=`projects/${t}/releases/firebase.storage/${s}`,c=await T(e,`${fe}/${i}`,{method:"PATCH",headers:r,body:JSON.stringify({release:{name:i,rulesetName:a.name}})});if(c.ok)return{rulesetName:a.name};if(c.status===404){const h=await T(e,`${fe}/projects/${encodeURIComponent(t)}/releases`,{method:"POST",headers:r,body:JSON.stringify({name:i,rulesetName:a.name})});if(!h.ok){const{reason:d,message:g}=O(h.body);throw new S(h.status,h.body,d,`createRelease firebase.storage/${s}: ${h.status} ${g}`)}return{rulesetName:a.name}}const{reason:u,message:l}=O(c.body);throw new S(c.status,c.body,u,`updateRelease firebase.storage/${s}: ${c.status} ${l}`)}function cr(e){return[{origin:[e,"http://localhost:5173","http://localhost:3000","http://localhost:4173"],method:["GET","POST","PUT","DELETE","HEAD","OPTIONS"],responseHeader:["Content-Type","Authorization","x-goog-meta-*","x-firebase-storage-version","x-goog-upload-*"],maxAgeSeconds:3600}]}async function ur(e,t){const n=await T(e,`${bt}/b/${encodeURIComponent(t)}?fields=cors`);if(!n.ok){const{reason:r,message:o}=O(n.body);throw new S(n.status,n.body,r,`getBucketCors ${t}: ${n.status} ${o}`)}return(await n.response.json()).cors??[]}async function Ks(e,t,n){const s=await T(e,`${bt}/b/${encodeURIComponent(t)}?fields=cors`,{method:"PATCH",body:JSON.stringify({cors:n})});if(!s.ok){const{reason:r,message:o}=O(s.body);throw new S(s.status,s.body,r,`setBucketCors ${t}: ${s.status} ${o}`)}}async function Xs(e,t,n={}){const s=n.locationId??"us-central",r=n.bucketId??`${t}.firebasestorage.app`,o=n.onProgress;let a=!1;await wt(e,t)!=="enabled"?(o?.({step:"enable-service",status:"start",message:"enabling Storage API"}),await Vs(e,t),a=!0,o?.({step:"settle",status:"start",message:"waiting for service propagation"}),await new Promise(k=>setTimeout(k,5e3))):o?.({step:"enable-service",status:"skip",message:"Storage API already enabled"});const c=await yt(e,t);let u=!1,l=c;c||(await zs(e,t,s),u=!0,l=s);const d=(await _t(e,t)).some(k=>k.bucketId===r);let g=!1;d||(o?.({step:"bucket",status:"start",message:`creating bucket ${r}`}),await Ws(e,t,r),g=!0);let P=!1,R;if(n.rules){o?.({step:"rules",status:"start",message:"deploying Storage rules"});const k=await Gs(e,t,n.rules,r);P=!0,R=k.rulesetName}let m=!1;return n.cors&&(await Ks(e,r,n.cors),m=!0),{ok:!0,serviceEnabled:a,locationFinalized:u,locationId:l,bucketCreated:g,bucketId:r,rulesDeployed:P,rulesetName:R,corsApplied:m}}class Js{async execute(t){const n=await t.resolveToken(),[s,r]=await Promise.all([wt(n,t.projectId),yt(n,t.projectId)]);let o=[];if(s==="enabled")try{o=(await _t(n,t.projectId)).map(i=>({name:i.name,bucketId:i.bucketId}))}catch{o=[]}return{serviceState:s,defaultLocation:r,buckets:o}}}class Ys{async execute(t,n,s){const r=await t.resolveToken();try{return{success:!0,...await Xs(r,t.projectId,{...n,onProgress:s})}}catch(o){return o instanceof S?{success:!1,error:Zs(o)}:{success:!1,error:{code:"UNKNOWN",message:o instanceof Error?o.message:String(o),recoverable:!1}}}}}function Zs(e){const t=e.reason??"",n=e.message;return t==="AUTH_PERMISSION_DENIED"||/serviceusage\.services\.enable/.test(n)?{code:"PERMISSION_DENIED",message:`${n} — the caller's identity needs roles/serviceusage.serviceUsageAdmin (or roles/owner). The default Firebase Admin SDK service account does NOT have this.`,recoverable:!1}:t==="SERVICE_DISABLED"||/SERVICE_DISABLED/.test(n)||/has not been used in project .* before or it is disabled/.test(n)?{code:"SERVICE_DISABLED",message:n,recoverable:!0}:/defaultLocation:finalize/.test(n)?{code:"LOCATION_FINALIZE_FAILED",message:n,recoverable:!1}:/addFirebase/.test(n)?{code:"BUCKET_CREATE_FAILED",message:n,recoverable:!1}:/createRuleset|updateRelease/.test(n)?{code:"RULES_DEPLOY_FAILED",message:n,recoverable:!0}:/setBucketCors|getBucketCors/.test(n)?{code:"CORS_UPDATE_FAILED",message:n,recoverable:!1}:{code:"UNKNOWN",message:n,recoverable:!1}}function lr(e){const{scope:t}=e,n=new Js,s=new Ys;return[{name:"storage_get_status",description:"Probe whether Firebase Storage is enabled on the project. Returns the underlying service state (enabled/disabled/unknown), the default GCP resources location, and the list of Firebase-linked Storage buckets. Use this before `storage_provision` to see what work is actually needed.",parameters:{type:"object",properties:{}},async execute(){const r=await n.execute(t);return{ok:!0,summary:`Storage service is ${r.serviceState}; ${r.buckets.length} linked bucket(s)`,data:r}}},{name:"storage_provision",description:"Enable Firebase Storage on the project end-to-end: enable the underlying `firebasestorage.googleapis.com` service, set the default GCP resources location (one-time, irreversible), and create + link the default Firebase Storage bucket. Optionally deploys a Storage rules source as the final step. Idempotent — each sub-step probes state before mutating. **Caller identity requirements**: enabling the service requires `roles/serviceusage.serviceUsageAdmin` or `roles/owner`. The default Firebase Admin SDK service account does NOT have this — returns `PERMISSION_DENIED` in that case. Grant the role manually via IAM Console once if you want this tool to work server-side, or call the underlying `provisionStorage(token, projectId)` function directly from a browser context using a `cloud-platform`-scoped user OAuth token.",parameters:{type:"object",properties:{locationId:{type:"string",description:'Default GCP resources location to use when the project has not been finalized yet. IRREVERSIBLE once set. Common values: "us-central", "nam5", "eur3". Default: "us-central".'},bucketId:{type:"string",description:'Override the default Firebase Storage bucket ID. Defaults to "{projectId}.firebasestorage.app".'},rules:{type:"string",description:"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."},cors:{type:"array",description:"CORS rules to apply to the bucket. Required for browser-side reads/writes from a non-Firebase origin. Omit to leave existing CORS untouched.",items:{type:"object",properties:{origin:{type:"array",items:{type:"string"}},method:{type:"array",items:{type:"string"}},responseHeader:{type:"array",items:{type:"string"}},maxAgeSeconds:{type:"number"}},required:["origin","method"]}}}},async execute(r,o){const a=o.report,i=await s.execute(t,r??{},a);return{ok:i.success,summary:i.success?`Provisioned Storage bucket ${i.bucketId}`:`Storage provisioning failed (${i.error.code}): ${i.error.message}`,data:i}}}]}function dr(e){return e[Ct]==="sandbox"?Ts(e.sandbox):vs(e.firebaseApp)}export{Js as InspectStorageHandler,Ys as ProvisionStorageHandler,L as StorageError,S as StorageProvisioningError,oe as TARGET_SYMBOL,Ws as addFirebaseToBucket,lr as createStorageAdminTools,cr as defaultPlaygroundCors,ar as deleteObject,Gs as deployStorageRules,Vs as enableStorageService,ys as evaluateStorageRules,zs as finalizeDefaultLocation,or as getBlob,ur as getBucketCors,rr as getBytes,yt as getDefaultLocation,tr as getMetadata,dr as getStorage,vs as getStorageProd,Ts as getStorageSandbox,wt as getStorageServiceState,ir as listAll,_t as listFirebaseBuckets,ws as parseStorageRules,Xs as provisionStorage,ee as ref,Ks as setBucketCors,nr as updateMetadata,Bs as uploadBytes,sr as uploadString};
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
2
+ <rect width="32" height="32" rx="7" fill="#16161a"/>
3
+ <path d="M9 22 16 6l7 16h-4l-1.2-3.2h-3.6L13 22H9Zm6.1-6.4h1.8L16 13l-.9 2.6Z" fill="#19cc61"/>
4
+ </svg>
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="icon" type="image/svg+xml" href="/__pyric/playground/favicon.svg"><title>Playground — Home</title><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 href="https://fonts.googleapis.com/icon?family=Material+Symbols+Outlined" rel="stylesheet"><link rel="stylesheet" href="/__pyric/playground/_astro/index.BfCthstx.css">
2
+ <link rel="stylesheet" href="/__pyric/playground/_astro/PlaygroundPage.MhP_vFvK.css"></head> <body> <div id="root"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="Z1RKo38" component-url="/__pyric/playground/_astro/HomePage.BFOjZGZp.js" component-export="HomePage" renderer-url="/__pyric/playground/_astro/client.GCK88uRs.js" props="{}" ssr client="only" opts="{&quot;name&quot;:&quot;HomePage&quot;,&quot;value&quot;:&quot;react&quot;}"></astro-island> </div> </body></html>
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="icon" type="image/svg+xml" href="/__pyric/playground/favicon.svg"><title>Playground</title><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 href="https://fonts.googleapis.com/icon?family=Material+Symbols+Outlined" rel="stylesheet"><link rel="stylesheet" href="/__pyric/playground/_astro/index.BfCthstx.css">
2
+ <link rel="stylesheet" href="/__pyric/playground/_astro/PlaygroundPage.MhP_vFvK.css"></head> <body> <div id="root"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).only=e;window.dispatchEvent(new Event("astro:only"));})();</script><script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script><astro-island uid="1r9Njk" component-url="/__pyric/playground/_astro/PlaygroundPage.3jki8il0.js" component-export="PlaygroundPage" renderer-url="/__pyric/playground/_astro/client.GCK88uRs.js" props="{}" ssr client="only" opts="{&quot;name&quot;:&quot;PlaygroundPage&quot;,&quot;value&quot;:&quot;react&quot;}"></astro-island> </div> </body></html>
@@ -0,0 +1,45 @@
1
+ import { type FSWatcher } from 'node:fs';
2
+ import type { FirebaseJson } from '../cli/firebase-json.js';
3
+ export interface LoadedRules {
4
+ /** Plain-v2 source ready for the sandbox, or null when the project has no
5
+ * rules file configured/present. */
6
+ rules: string | null;
7
+ rulesHash: string | null;
8
+ /** Where it came from (diagnostics + the P3 watcher target). */
9
+ sourcePath: string | null;
10
+ }
11
+ export interface LoadedDatabaseRules {
12
+ rules: {
13
+ rules: Record<string, unknown>;
14
+ } | null;
15
+ rulesHash: string | null;
16
+ sourcePath: string | null;
17
+ databaseUrl: string | null;
18
+ }
19
+ export declare function rulesHashOf(source: string): string;
20
+ /**
21
+ * Resolve + lint a raw rules source into sandbox-ready plain v2.
22
+ * Throws with an actionable message on unresolvable imports or lint errors.
23
+ */
24
+ export declare function prepareRulesSource(raw: string, sourcePath: string): string;
25
+ /**
26
+ * Load the project rules per `firebase.json` (`firestore.rules` path,
27
+ * defaulting to `firestore.rules` in cwd when the key is absent but the file
28
+ * exists). Missing file with no explicit config → `{ rules: null }` (serving
29
+ * without rules is fine; the runtime logs it). Missing file that IS
30
+ * explicitly configured → throw (the project says it should exist).
31
+ */
32
+ export declare function loadProjectRules(cwd: string, config: FirebaseJson | null): Promise<LoadedRules>;
33
+ export declare function loadProjectDatabaseRules(cwd: string, config: FirebaseJson | null): Promise<LoadedDatabaseRules>;
34
+ /**
35
+ * Watch the rules file and invoke `onChange` with freshly prepared
36
+ * (resolved + linted) source. Broken intermediate saves are LOGGED and
37
+ * skipped — the last-good ruleset stays live (the write_file lesson:
38
+ * never replace a working ruleset with un-evaluatable source).
39
+ * Debounced; returns the watcher for shutdown.
40
+ */
41
+ export declare function watchProjectRules(sourcePath: string, onChange: (next: {
42
+ rules: string;
43
+ rulesHash: string;
44
+ }) => void, onError: (message: string) => void, debounceMs?: number): FSWatcher;
45
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/serve/rules.ts"],"names":[],"mappings":"AAYA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAIhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,MAAM,WAAW,WAAW;IAC1B;yCACqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA0B1E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,OAAO,CAAC,WAAW,CAAC,CAkBtB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAuC9B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,EAC9D,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAClC,UAAU,SAAM,GACf,SAAS,CAyBX"}