gemi 0.125.0 → 0.127.0

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 (248) hide show
  1. package/dist/ai/index.js +2 -2
  2. package/dist/ai/index.js.map +1 -1
  3. package/dist/app/index.js +1 -1
  4. package/dist/auth/connections/ConnectionsController.d.ts.map +1 -1
  5. package/dist/auth/oauth/GoogleOAuthProvider.d.ts +1 -1
  6. package/dist/auth/oauth/GoogleOAuthProvider.d.ts.map +1 -1
  7. package/dist/auth/oauth/InstagramOAuthProvider.d.ts +1 -1
  8. package/dist/auth/oauth/InstagramOAuthProvider.d.ts.map +1 -1
  9. package/dist/auth/oauth/XOAuthProvider.d.ts.map +1 -1
  10. package/dist/bun/plugin.js +1 -1
  11. package/dist/bun/preload.js +1 -1
  12. package/dist/{chunk-hff9w6rt.js → chunk-094m8mj3.js} +2 -2
  13. package/dist/{chunk-hff9w6rt.js.map → chunk-094m8mj3.js.map} +1 -1
  14. package/dist/chunk-0arss2xy.js +5 -0
  15. package/dist/{chunk-rany5zgk.js.map → chunk-0arss2xy.js.map} +5 -4
  16. package/dist/{chunk-mmqnq1qh.js → chunk-0f0xxqhy.js} +3 -3
  17. package/dist/{chunk-mmqnq1qh.js.map → chunk-0f0xxqhy.js.map} +1 -1
  18. package/dist/chunk-15bmfr7f.js +5 -0
  19. package/dist/{chunk-tabsxzg9.js.map → chunk-15bmfr7f.js.map} +5 -4
  20. package/dist/{chunk-910p6ne6.js → chunk-1dzs05dc.js} +2 -2
  21. package/dist/{chunk-910p6ne6.js.map → chunk-1dzs05dc.js.map} +1 -1
  22. package/dist/{chunk-rmgkc3a2.js → chunk-1eb4p352.js} +2 -2
  23. package/dist/{chunk-rmgkc3a2.js.map → chunk-1eb4p352.js.map} +1 -1
  24. package/dist/{chunk-cwt8e782.js → chunk-1gd1ykgj.js} +3 -3
  25. package/dist/{chunk-cwt8e782.js.map → chunk-1gd1ykgj.js.map} +1 -1
  26. package/dist/{chunk-stn0a56e.js → chunk-1v368y9a.js} +2 -2
  27. package/dist/{chunk-stn0a56e.js.map → chunk-1v368y9a.js.map} +1 -1
  28. package/dist/{chunk-x2j84d06.js → chunk-28bby5pp.js} +2 -2
  29. package/dist/{chunk-x2j84d06.js.map → chunk-28bby5pp.js.map} +1 -1
  30. package/dist/{chunk-gp00enrk.js → chunk-3fyhd641.js} +1 -1
  31. package/dist/{chunk-j5rwv09s.js → chunk-3hndrc5z.js} +2 -2
  32. package/dist/{chunk-j5rwv09s.js.map → chunk-3hndrc5z.js.map} +1 -1
  33. package/dist/chunk-3p9vj0h6.js +10 -0
  34. package/dist/{chunk-b4x1dt3s.js.map → chunk-3p9vj0h6.js.map} +4 -3
  35. package/dist/{chunk-ex41d03h.js → chunk-43faxwf5.js} +2 -2
  36. package/dist/{chunk-ex41d03h.js.map → chunk-43faxwf5.js.map} +1 -1
  37. package/dist/{chunk-ey1xrbaz.js → chunk-56ryda9y.js} +2 -2
  38. package/dist/{chunk-ey1xrbaz.js.map → chunk-56ryda9y.js.map} +1 -1
  39. package/dist/{chunk-t2t63wa0.js → chunk-5vvfcdpk.js} +2 -2
  40. package/dist/{chunk-t2t63wa0.js.map → chunk-5vvfcdpk.js.map} +1 -1
  41. package/dist/{chunk-p5df4pn7.js → chunk-62zn06wb.js} +2 -2
  42. package/dist/{chunk-p5df4pn7.js.map → chunk-62zn06wb.js.map} +1 -1
  43. package/dist/chunk-6c8pn6hj.js +57 -0
  44. package/dist/{chunk-eyptwf54.js.map → chunk-6c8pn6hj.js.map} +11 -6
  45. package/dist/{chunk-3br5zr7a.js → chunk-7dzprr9b.js} +3 -3
  46. package/dist/{chunk-3br5zr7a.js.map → chunk-7dzprr9b.js.map} +1 -1
  47. package/dist/{chunk-erzfs4t2.js → chunk-7eerqsg2.js} +2 -2
  48. package/dist/{chunk-erzfs4t2.js.map → chunk-7eerqsg2.js.map} +1 -1
  49. package/dist/{chunk-z5nfve1k.js → chunk-7nfprr9v.js} +2 -2
  50. package/dist/{chunk-z5nfve1k.js.map → chunk-7nfprr9v.js.map} +1 -1
  51. package/dist/{chunk-1jcngq6w.js → chunk-7x2n788t.js} +3 -3
  52. package/dist/{chunk-1jcngq6w.js.map → chunk-7x2n788t.js.map} +1 -1
  53. package/dist/{chunk-rwmja4zs.js → chunk-84rbdyhe.js} +2 -2
  54. package/dist/{chunk-rwmja4zs.js.map → chunk-84rbdyhe.js.map} +1 -1
  55. package/dist/chunk-87bmhng2.js +5 -0
  56. package/dist/{chunk-1xmh61fg.js.map → chunk-87bmhng2.js.map} +1 -1
  57. package/dist/{chunk-c0qpv8x7.js → chunk-87jj7n9q.js} +2 -2
  58. package/dist/{chunk-c0qpv8x7.js.map → chunk-87jj7n9q.js.map} +1 -1
  59. package/dist/{chunk-hxn0s3zh.js → chunk-89swy5aq.js} +2 -2
  60. package/dist/{chunk-hxn0s3zh.js.map → chunk-89swy5aq.js.map} +1 -1
  61. package/dist/{chunk-y9f2see3.js → chunk-8df7fn7f.js} +3 -3
  62. package/dist/{chunk-y9f2see3.js.map → chunk-8df7fn7f.js.map} +1 -1
  63. package/dist/{chunk-bny9s44t.js → chunk-99z9d0sa.js} +2 -2
  64. package/dist/{chunk-bny9s44t.js.map → chunk-99z9d0sa.js.map} +1 -1
  65. package/dist/{chunk-by5gwr8x.js → chunk-9hhxy88x.js} +2 -2
  66. package/dist/{chunk-by5gwr8x.js.map → chunk-9hhxy88x.js.map} +1 -1
  67. package/dist/{chunk-yhht1j7f.js → chunk-9x0pgkns.js} +2 -2
  68. package/dist/{chunk-yhht1j7f.js.map → chunk-9x0pgkns.js.map} +1 -1
  69. package/dist/{chunk-dy58aztm.js → chunk-avfntxm1.js} +2 -2
  70. package/dist/{chunk-dy58aztm.js.map → chunk-avfntxm1.js.map} +1 -1
  71. package/dist/{chunk-h8w9mzjj.js → chunk-b2pdqxj3.js} +11 -11
  72. package/dist/{chunk-h8w9mzjj.js.map → chunk-b2pdqxj3.js.map} +3 -4
  73. package/dist/{chunk-j12hpdxk.js → chunk-bghxdjqv.js} +1 -1
  74. package/dist/{chunk-6vz75swk.js → chunk-bhbxhk9e.js} +2 -2
  75. package/dist/{chunk-6vz75swk.js.map → chunk-bhbxhk9e.js.map} +1 -1
  76. package/dist/{chunk-6q6bhkyf.js → chunk-c48gag78.js} +1 -1
  77. package/dist/{chunk-5fh4pvyt.js → chunk-c65rh4k8.js} +2 -2
  78. package/dist/{chunk-5fh4pvyt.js.map → chunk-c65rh4k8.js.map} +1 -1
  79. package/dist/{chunk-6wgh7nk6.js → chunk-dm7mada7.js} +3 -3
  80. package/dist/{chunk-6wgh7nk6.js.map → chunk-dm7mada7.js.map} +1 -1
  81. package/dist/{chunk-1mxb44n9.js → chunk-ebdkmzm9.js} +2 -2
  82. package/dist/{chunk-1mxb44n9.js.map → chunk-ebdkmzm9.js.map} +1 -1
  83. package/dist/{chunk-xfvegbxn.js → chunk-ecb8qggy.js} +2 -2
  84. package/dist/{chunk-xfvegbxn.js.map → chunk-ecb8qggy.js.map} +1 -1
  85. package/dist/{chunk-p6jbmcrg.js → chunk-etf6h5m1.js} +2 -2
  86. package/dist/{chunk-p6jbmcrg.js.map → chunk-etf6h5m1.js.map} +1 -1
  87. package/dist/{chunk-zq5375wd.js → chunk-ewv1m1sv.js} +3 -3
  88. package/dist/{chunk-zq5375wd.js.map → chunk-ewv1m1sv.js.map} +1 -1
  89. package/dist/{chunk-dxyxd7b3.js → chunk-gv59djt3.js} +2 -2
  90. package/dist/{chunk-dxyxd7b3.js.map → chunk-gv59djt3.js.map} +1 -1
  91. package/dist/{chunk-8tvfmy1a.js → chunk-gxp48t81.js} +4 -4
  92. package/dist/{chunk-8tvfmy1a.js.map → chunk-gxp48t81.js.map} +1 -1
  93. package/dist/{chunk-r923001x.js → chunk-h4755p9h.js} +2 -2
  94. package/dist/{chunk-r923001x.js.map → chunk-h4755p9h.js.map} +1 -1
  95. package/dist/{chunk-q6ah4yjg.js → chunk-hye22tpt.js} +2 -2
  96. package/dist/{chunk-q6ah4yjg.js.map → chunk-hye22tpt.js.map} +1 -1
  97. package/dist/{chunk-eq5svwca.js → chunk-jg3kg55f.js} +2 -2
  98. package/dist/{chunk-eq5svwca.js.map → chunk-jg3kg55f.js.map} +1 -1
  99. package/dist/{chunk-s4semb89.js → chunk-k6gvbvyw.js} +1 -1
  100. package/dist/{chunk-vhvvjaj3.js → chunk-kzk5r6v4.js} +3 -3
  101. package/dist/{chunk-vhvvjaj3.js.map → chunk-kzk5r6v4.js.map} +1 -1
  102. package/dist/{chunk-ghcvztxn.js → chunk-m63v6aze.js} +2 -2
  103. package/dist/{chunk-ghcvztxn.js.map → chunk-m63v6aze.js.map} +1 -1
  104. package/dist/{chunk-khdkrfxp.js → chunk-mj4n5mar.js} +2 -2
  105. package/dist/{chunk-khdkrfxp.js.map → chunk-mj4n5mar.js.map} +1 -1
  106. package/dist/{chunk-kcsa57km.js → chunk-mj7h1dgh.js} +2 -2
  107. package/dist/{chunk-kcsa57km.js.map → chunk-mj7h1dgh.js.map} +1 -1
  108. package/dist/{chunk-3kxe9geg.js → chunk-n8mxsfc2.js} +3 -3
  109. package/dist/{chunk-3kxe9geg.js.map → chunk-n8mxsfc2.js.map} +1 -1
  110. package/dist/{chunk-n3z83qhq.js → chunk-nrf23yan.js} +2 -2
  111. package/dist/{chunk-n3z83qhq.js.map → chunk-nrf23yan.js.map} +1 -1
  112. package/dist/{chunk-sv125fqq.js → chunk-nv2t87c3.js} +2 -2
  113. package/dist/{chunk-sv125fqq.js.map → chunk-nv2t87c3.js.map} +1 -1
  114. package/dist/{chunk-j10a0m7q.js → chunk-p0ccxfkq.js} +1 -1
  115. package/dist/{chunk-crnfxn9n.js → chunk-p7abyc0b.js} +2 -2
  116. package/dist/{chunk-crnfxn9n.js.map → chunk-p7abyc0b.js.map} +1 -1
  117. package/dist/{chunk-hzen9gh4.js → chunk-psdyfaf1.js} +2 -2
  118. package/dist/{chunk-hzen9gh4.js.map → chunk-psdyfaf1.js.map} +1 -1
  119. package/dist/{chunk-cpem1j1x.js → chunk-pxstrw29.js} +2 -2
  120. package/dist/{chunk-cpem1j1x.js.map → chunk-pxstrw29.js.map} +1 -1
  121. package/dist/{chunk-knq4ack4.js → chunk-q9mxjh10.js} +2 -2
  122. package/dist/{chunk-knq4ack4.js.map → chunk-q9mxjh10.js.map} +1 -1
  123. package/dist/{chunk-7zj6bk9a.js → chunk-qmcjh6de.js} +2 -2
  124. package/dist/{chunk-7zj6bk9a.js.map → chunk-qmcjh6de.js.map} +1 -1
  125. package/dist/{chunk-k1ebt28j.js → chunk-qy3s6pwz.js} +2 -2
  126. package/dist/{chunk-k1ebt28j.js.map → chunk-qy3s6pwz.js.map} +1 -1
  127. package/dist/{chunk-rvspb96n.js → chunk-rtb64x14.js} +3 -3
  128. package/dist/{chunk-rvspb96n.js.map → chunk-rtb64x14.js.map} +1 -1
  129. package/dist/{chunk-ayfjjgv2.js → chunk-rvdsaqdv.js} +1 -1
  130. package/dist/{chunk-7vrrgxwm.js → chunk-s0kns9q1.js} +3 -3
  131. package/dist/{chunk-7vrrgxwm.js.map → chunk-s0kns9q1.js.map} +1 -1
  132. package/dist/{chunk-entpqjyn.js → chunk-s2krqtwj.js} +2 -2
  133. package/dist/{chunk-entpqjyn.js.map → chunk-s2krqtwj.js.map} +1 -1
  134. package/dist/{chunk-xe2pm36q.js → chunk-s2y2b8tz.js} +2 -2
  135. package/dist/{chunk-xe2pm36q.js.map → chunk-s2y2b8tz.js.map} +1 -1
  136. package/dist/{chunk-t6qpm2j7.js → chunk-t8kzaxaa.js} +2 -2
  137. package/dist/{chunk-t6qpm2j7.js.map → chunk-t8kzaxaa.js.map} +1 -1
  138. package/dist/{chunk-0x1s02r1.js → chunk-v1eeh7a7.js} +3 -3
  139. package/dist/{chunk-0x1s02r1.js.map → chunk-v1eeh7a7.js.map} +1 -1
  140. package/dist/{chunk-npbf06c1.js → chunk-v7nw1g2n.js} +2 -2
  141. package/dist/{chunk-npbf06c1.js.map → chunk-v7nw1g2n.js.map} +1 -1
  142. package/dist/{chunk-b7a22evs.js → chunk-v80890xx.js} +3 -3
  143. package/dist/{chunk-b7a22evs.js.map → chunk-v80890xx.js.map} +1 -1
  144. package/dist/{chunk-p7mvp5nf.js → chunk-w4111j5d.js} +2 -2
  145. package/dist/{chunk-p7mvp5nf.js.map → chunk-w4111j5d.js.map} +1 -1
  146. package/dist/{chunk-m7pghdcy.js → chunk-wat33wxh.js} +2 -2
  147. package/dist/{chunk-m7pghdcy.js.map → chunk-wat33wxh.js.map} +1 -1
  148. package/dist/{chunk-1n40bdxf.js → chunk-x5vpjzpp.js} +2 -2
  149. package/dist/{chunk-1n40bdxf.js.map → chunk-x5vpjzpp.js.map} +1 -1
  150. package/dist/{chunk-g52fcwca.js → chunk-xe2cfmyb.js} +2 -2
  151. package/dist/{chunk-g52fcwca.js.map → chunk-xe2cfmyb.js.map} +1 -1
  152. package/dist/{chunk-jykkqwcy.js → chunk-ych1dv5q.js} +3 -3
  153. package/dist/{chunk-jykkqwcy.js.map → chunk-ych1dv5q.js.map} +1 -1
  154. package/dist/{chunk-ap3g6rbw.js → chunk-yffm8nxa.js} +2 -2
  155. package/dist/{chunk-ap3g6rbw.js.map → chunk-yffm8nxa.js.map} +1 -1
  156. package/dist/{chunk-6gwxvmjv.js → chunk-yg8se4vs.js} +3 -3
  157. package/dist/{chunk-6gwxvmjv.js.map → chunk-yg8se4vs.js.map} +1 -1
  158. package/dist/{chunk-s4xg69r9.js → chunk-yhxjhrvp.js} +2 -2
  159. package/dist/{chunk-s4xg69r9.js.map → chunk-yhxjhrvp.js.map} +1 -1
  160. package/dist/chunks/{ThemeProvider-CS2a1snV.js → ThemeProvider-BIrCSrFY.js} +2 -2
  161. package/dist/chunks/{ThemeProvider-CS2a1snV.js.map → ThemeProvider-BIrCSrFY.js.map} +1 -1
  162. package/dist/client/fetchFile.d.ts +66 -0
  163. package/dist/client/fetchFile.d.ts.map +1 -0
  164. package/dist/client/index.d.ts +3 -1
  165. package/dist/client/index.d.ts.map +1 -1
  166. package/dist/client/index.js +121 -23
  167. package/dist/client/index.js.map +1 -1
  168. package/dist/client/rpc.d.ts +11 -0
  169. package/dist/client/rpc.d.ts.map +1 -1
  170. package/dist/client/useQuery.d.ts +9 -0
  171. package/dist/client/useQuery.d.ts.map +1 -1
  172. package/dist/config/index.js +1 -1
  173. package/dist/console/run.js +2 -2
  174. package/dist/console/run.js.map +1 -1
  175. package/dist/container/index.js +2 -2
  176. package/dist/container/index.js.map +1 -1
  177. package/dist/database/index.js +2 -2
  178. package/dist/database/index.js.map +1 -1
  179. package/dist/email/index.js +2 -2
  180. package/dist/email/index.js.map +1 -1
  181. package/dist/facades/Cache.d.ts +36 -0
  182. package/dist/facades/Cache.d.ts.map +1 -0
  183. package/dist/facades/Url.d.ts +12 -1
  184. package/dist/facades/Url.d.ts.map +1 -1
  185. package/dist/facades/index.d.ts +1 -0
  186. package/dist/facades/index.d.ts.map +1 -1
  187. package/dist/facades/index.js +2 -2
  188. package/dist/facades/index.js.map +1 -1
  189. package/dist/foundation/index.js +2 -2
  190. package/dist/foundation/index.js.map +1 -1
  191. package/dist/gemi.d.ts +4 -0
  192. package/dist/http/ApiRouter.d.ts +40 -3
  193. package/dist/http/ApiRouter.d.ts.map +1 -1
  194. package/dist/http/Metadata.d.ts.map +1 -1
  195. package/dist/http/index.d.ts +1 -1
  196. package/dist/http/index.d.ts.map +1 -1
  197. package/dist/http/index.js +2 -2
  198. package/dist/http/index.js.map +1 -1
  199. package/dist/i18n/dictionaryRuntime.js +2 -2
  200. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  201. package/dist/i18n/index.js +2 -2
  202. package/dist/i18n/index.js.map +1 -1
  203. package/dist/kernel/index.js +3 -3
  204. package/dist/kernel/index.js.map +3 -3
  205. package/dist/kernel/providers.d.ts +2 -2
  206. package/dist/kernel/providers.d.ts.map +1 -1
  207. package/dist/orm/index.js +2 -2
  208. package/dist/orm/index.js.map +1 -1
  209. package/dist/server/index.js +2 -2
  210. package/dist/server/index.js.map +1 -1
  211. package/dist/services/cache/CacheManager.d.ts +115 -0
  212. package/dist/services/cache/CacheManager.d.ts.map +1 -0
  213. package/dist/services/cache/CacheServiceProvider.d.ts +5 -0
  214. package/dist/services/cache/CacheServiceProvider.d.ts.map +1 -0
  215. package/dist/services/cache/CacheStore.d.ts +26 -0
  216. package/dist/services/cache/CacheStore.d.ts.map +1 -0
  217. package/dist/services/cache/MemoryCacheStore.d.ts +36 -0
  218. package/dist/services/cache/MemoryCacheStore.d.ts.map +1 -0
  219. package/dist/services/cache/RedisCacheStore.d.ts +54 -0
  220. package/dist/services/cache/RedisCacheStore.d.ts.map +1 -0
  221. package/dist/services/cache/config.d.ts +35 -0
  222. package/dist/services/cache/config.d.ts.map +1 -0
  223. package/dist/services/index.d.ts +6 -0
  224. package/dist/services/index.d.ts.map +1 -1
  225. package/dist/services/index.js +9 -9
  226. package/dist/services/index.js.map +5 -5
  227. package/dist/services/queue/work.js +2 -2
  228. package/dist/services/queue/work.js.map +1 -1
  229. package/dist/stats/route-table.js +1 -1
  230. package/dist/support/index.js +2 -2
  231. package/dist/support/index.js.map +1 -1
  232. package/dist/testing/index.js +1 -1
  233. package/dist/utils/appOrigin.d.ts +19 -0
  234. package/dist/utils/appOrigin.d.ts.map +1 -0
  235. package/dist/vitest/index.js +1 -1
  236. package/package.json +1 -1
  237. package/skills/gemi-react-best-practices/rules/query-no-hand-rolled-fetch.md +14 -0
  238. package/dist/chunk-1xmh61fg.js +0 -5
  239. package/dist/chunk-b4x1dt3s.js +0 -10
  240. package/dist/chunk-eyptwf54.js +0 -57
  241. package/dist/chunk-rany5zgk.js +0 -5
  242. package/dist/chunk-tabsxzg9.js +0 -5
  243. /package/dist/{chunk-gp00enrk.js.map → chunk-3fyhd641.js.map} +0 -0
  244. /package/dist/{chunk-j12hpdxk.js.map → chunk-bghxdjqv.js.map} +0 -0
  245. /package/dist/{chunk-6q6bhkyf.js.map → chunk-c48gag78.js.map} +0 -0
  246. /package/dist/{chunk-s4semb89.js.map → chunk-k6gvbvyw.js.map} +0 -0
  247. /package/dist/{chunk-j10a0m7q.js.map → chunk-p0ccxfkq.js.map} +0 -0
  248. /package/dist/{chunk-ayfjjgv2.js.map → chunk-rvdsaqdv.js.map} +0 -0
@@ -0,0 +1,66 @@
1
+ import type { FileRPC } from "./rpc";
2
+ import type { UrlParser } from "./types";
3
+ /**
4
+ * The paths `fetchBlob` and `fetchText` take: the app's file routes
5
+ * (`this.stream(...)` and `this.file(...)`), or any path while `FileRPC` is
6
+ * empty — an app without file routes, or a program without the app's types.
7
+ */
8
+ export type FilePath = FilePathOf<FileRPC>;
9
+ /** `FilePath` over a given table, for tests. @internal */
10
+ export type FilePathOf<T> = [keyof T] extends [never] ? string : keyof T & string;
11
+ export type FetchFileOptions<P extends string> = {
12
+ /** The path's `:params`, substituted as `useQuery` does. */
13
+ params?: Partial<UrlParser<P>>;
14
+ /** The query string. `null` and `undefined` values are left out. */
15
+ search?: Record<string, string | number | boolean | null | undefined> | URLSearchParams;
16
+ /** Aborts the request; the returned promise then rejects with an `AbortError`. */
17
+ signal?: AbortSignal;
18
+ /** Anything else `fetch` takes (headers, `cache`, `credentials`). Always a `GET`. */
19
+ init?: Omit<RequestInit, "method" | "body" | "signal">;
20
+ };
21
+ /** @internal */
22
+ export type FetchFileArgs<P extends string> = {} extends UrlParser<P> ? [options?: FetchFileOptions<P>] : [options: FetchFileOptions<P> & {
23
+ params: UrlParser<P>;
24
+ }];
25
+ interface Fetched {
26
+ /**
27
+ * The file name the server gave in `Content-Disposition` (`filename*`
28
+ * first, then `filename`), or `null` when it gave none.
29
+ */
30
+ filename: string | null;
31
+ /** The response, for its headers and status. Its body has been read. */
32
+ response: Response;
33
+ }
34
+ export interface FetchedBlob extends Fetched {
35
+ blob: Blob;
36
+ }
37
+ export interface FetchedText extends Fetched {
38
+ text: string;
39
+ }
40
+ /**
41
+ * Downloads a file route's body as a `Blob`.
42
+ *
43
+ * ```ts
44
+ * const { blob, filename } = await fetchBlob("/pages/:pageId/post/image", {
45
+ * params: { pageId },
46
+ * search: { format: "png" },
47
+ * });
48
+ * ```
49
+ *
50
+ * A non-2xx rejects with a `QueryError` (`status`, the JSON `body` or `null`,
51
+ * `retryAfter`), the error `useQuery` throws, so `mutationErrorList(error)`
52
+ * reads its message. A network failure rejects with the browser's `TypeError`,
53
+ * an abort with its `AbortError`.
54
+ */
55
+ export declare function fetchBlob<P extends FilePath>(path: P, ...args: FetchFileArgs<P>): Promise<FetchedBlob>;
56
+ /** `fetchBlob`, with the body read as text. */
57
+ export declare function fetchText<P extends FilePath>(path: P, ...args: FetchFileArgs<P>): Promise<FetchedText>;
58
+ /**
59
+ * The file name in a `Content-Disposition` header: the RFC 5987
60
+ * `filename*=UTF-8''...` form when present and decodable, else `filename`.
61
+ *
62
+ * @internal Exported for tests.
63
+ */
64
+ export declare function filenameOf(response: Response): string | null;
65
+ export {};
66
+ //# sourceMappingURL=fetchFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchFile.d.ts","sourceRoot":"","sources":["../../client/fetchFile.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAE3C,0DAA0D;AAC1D,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAElF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC/C,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,oEAAoE;IACpE,MAAM,CAAC,EACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC5D,eAAe,CAAC;IACpB,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qFAAqF;IACrF,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;CACxD,CAAC;AAGF,gBAAgB;AAChB,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IACxC,EAAE,SAAS,SAAS,CAAC,CAAC,CAAC,GACnB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAC/B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAEhE,UAAU,OAAO;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAChD,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED,+CAA+C;AAC/C,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAChD,IAAI,EAAE,CAAC,EACP,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,WAAW,CAAC,CAGtB;AAuCD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAe5D"}
@@ -9,6 +9,8 @@ export type { QueryFailure, RetryOption, RetryDelayOption, } from "./retryPolicy
9
9
  export { useMutation, useDelete, usePatch, usePost, usePut, useUpload } from "./useMutation";
10
10
  export type { MutationCallConfig, MutationConcurrency } from "./useMutation";
11
11
  export { useMutate } from "./useMutate";
12
+ export { fetchBlob, fetchText } from "./fetchFile";
13
+ export type { FetchedBlob, FetchedText, FetchFileOptions, FilePath } from "./fetchFile";
12
14
  export { useSetQueryData } from "./useSetQueryData";
13
15
  export type { QueryTarget, QueryUpdate } from "./useSetQueryData";
14
16
  export { useSubscription } from "./useSubscription";
@@ -42,7 +44,7 @@ export type { InitOptions } from "./init";
42
44
  export { isChunkLoadError, recoverFromChunkLoadError, CHUNK_RELOAD_MARKER, } from "./chunkLoadRecovery";
43
45
  export type { ChunkLoadErrorContext, ChunkLoadErrorSource, ChunkLoadRecoveryOptions, ChunkReloadBlock, } from "./chunkLoadRecovery";
44
46
  export { createRoot } from "./createRoot";
45
- export type { RPC, ViewRPC, I18nDictionary, BroadcastRPC, Features, FeatureKey, ClientFeatureKey, } from "./rpc";
47
+ export type { RPC, FileRPC, ViewRPC, I18nDictionary, BroadcastRPC, Features, FeatureKey, ClientFeatureKey, } from "./rpc";
46
48
  export type { ViewProps, LayoutProps, ViewPaths } from "./types";
47
49
  export type { CreateI18nDictionary } from "./I18nContext";
48
50
  export { Image } from "./Image";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../client/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { $ as shouldRetryQuery, A as useLocation, B as getRealtimeClient, C as useRoute, D as I18nProvider, E as I18nContext, G as QueryConfigContext, H as SOCKET_ID_HEADER, I as RealtimeContext, J as USER_QUERY_CONFIG_KEYS, K as QueryManagerContext, L as channelKey, M as isAbsoluteUrl, O as ServerDataContext, P as Action, Q as retryDelayFor, R as configureRealtime, S as routeDataUrl, T as useNavigate, U as toVariantKey, V as reconnectRealtime, W as applyParams$1, X as DEFAULT_STALE_TIME, Y as pickDefined, Z as isRetryableQueryError, _ as loadDictionary, a as useRouteTransition, b as setActiveLocale, c as ComponentsContext, d as loadViewModule, et as QueryError, f as subscribeViewModules, g as recoverFromChunkLoadError, h as isChunkLoadError, i as RouteTransitionProvider, j as domainUrl, k as ServerDataProvider, l as ComponentsProvider, m as configureChunkLoadRecovery, n as useTheme, o as ClientRouterContext, p as CHUNK_RELOAD_MARKER, q as QueryManagerProvider, r as m, s as ClientRouterProvider, t as ThemeProvider, tt as Subject, u as initialViewModulesReady, v as loadDictionaryForRender, w as useSearchParams, x as readRoutePayload, y as registerDictionary, z as currentSocketId } from "../chunks/ThemeProvider-CS2a1snV.js";
1
+ import { $ as retryDelayFor, A as useLocation, B as getRealtimeClient, C as useRoute, D as I18nProvider, E as I18nContext, G as QueryConfigContext, H as SOCKET_ID_HEADER, I as RealtimeContext, J as USER_QUERY_CONFIG_KEYS, K as QueryManagerContext, L as channelKey, M as isAbsoluteUrl, O as ServerDataContext, P as Action, Q as parseRetryAfter, R as configureRealtime, S as routeDataUrl, T as useNavigate, U as toVariantKey, V as reconnectRealtime, W as applyParams$1, X as DEFAULT_STALE_TIME, Y as pickDefined, Z as isRetryableQueryError, _ as loadDictionary, a as useRouteTransition, b as setActiveLocale, c as ComponentsContext, d as loadViewModule, et as shouldRetryQuery, f as subscribeViewModules, g as recoverFromChunkLoadError, h as isChunkLoadError, i as RouteTransitionProvider, j as domainUrl, k as ServerDataProvider, l as ComponentsProvider, m as configureChunkLoadRecovery, n as useTheme, nt as Subject, o as ClientRouterContext, p as CHUNK_RELOAD_MARKER, q as QueryManagerProvider, r as m, s as ClientRouterProvider, t as ThemeProvider, tt as QueryError, u as initialViewModulesReady, v as loadDictionaryForRender, w as useSearchParams, x as readRoutePayload, y as registerDictionary, z as currentSocketId } from "../chunks/ThemeProvider-BIrCSrFY.js";
2
2
  import { n as RouteStateContext, r as RouteStateProvider, t as useParams } from "../chunks/useParams-BN3XXfmG.js";
3
3
  import { Fragment, StrictMode, Suspense, createContext, createElement, isValidElement, lazy, memo, use, useCallback, useContext, useDeferredValue, useEffect, useMemo, useRef, useState, useSyncExternalStore, useTransition } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -289,8 +289,14 @@ function useFrameworkQuery(url, ...args) {
289
289
  }, liveChannel !== null).status === "open";
290
290
  const refreshIntervalRef = useRef(null);
291
291
  const fetchedRef = useRef(!lazy);
292
- const refetchUntilTimerRef = useRef(null);
293
- const refetchUntilDurationRef = useRef(0);
292
+ const pollRef = useRef({
293
+ timer: null,
294
+ duration: 0,
295
+ snapshot: void 0,
296
+ resource: null,
297
+ variantKey: null,
298
+ awaiting: false
299
+ });
294
300
  const prefetchedRef = useRef(false);
295
301
  const focusEligibleRef = useRef(!lazy);
296
302
  const wasAwayRef = useRef(false);
@@ -378,26 +384,45 @@ function useFrameworkQuery(url, ...args) {
378
384
  return () => window.removeEventListener("online", onOnline);
379
385
  }, [resource, variantKey]);
380
386
  useEffect(() => {
381
- const cfg = configRef.current;
382
- if (!cfg.refetchUntil || liveOpen) return;
383
- if (snapshot && !snapshot.loading && snapshot.hasData && !snapshot.error) {
384
- const nextDuration = cfg.refetchUntil(snapshot.data, refetchUntilDurationRef.current);
385
- if (nextDuration > 0) {
386
- refetchUntilDurationRef.current = nextDuration;
387
- refetchUntilTimerRef.current = setTimeout(() => {
388
- resource.refetch(variantKey);
389
- }, nextDuration);
390
- } else refetchUntilDurationRef.current = 0;
391
- }
392
- return () => {
393
- if (refetchUntilTimerRef.current) clearTimeout(refetchUntilTimerRef.current);
387
+ const poll = pollRef.current;
388
+ const clear = () => {
389
+ if (poll.timer) clearTimeout(poll.timer);
390
+ poll.timer = null;
394
391
  };
395
- }, [
396
- snapshot,
397
- resource,
398
- variantKey,
399
- liveOpen
400
- ]);
392
+ if (poll.snapshot !== snapshot || poll.resource !== resource || poll.variantKey !== variantKey) {
393
+ clear();
394
+ poll.awaiting = false;
395
+ poll.snapshot = snapshot;
396
+ poll.resource = resource;
397
+ poll.variantKey = variantKey;
398
+ }
399
+ const refetchUntil = configRef.current.refetchUntil;
400
+ if (!refetchUntil || liveOpen || !snapshot || snapshot.loading || !snapshot.hasData || snapshot.error) {
401
+ clear();
402
+ return;
403
+ }
404
+ if (poll.awaiting) return;
405
+ const nextDuration = refetchUntil(snapshot.data, poll.duration);
406
+ if (!(nextDuration > 0)) {
407
+ clear();
408
+ poll.duration = 0;
409
+ return;
410
+ }
411
+ if (poll.timer) return;
412
+ poll.duration = nextDuration;
413
+ poll.timer = setTimeout(() => {
414
+ poll.timer = null;
415
+ poll.awaiting = true;
416
+ resource.refetch(variantKey);
417
+ }, nextDuration);
418
+ });
419
+ useEffect(() => () => {
420
+ const poll = pollRef.current;
421
+ if (poll.timer) clearTimeout(poll.timer);
422
+ poll.timer = null;
423
+ poll.snapshot = void 0;
424
+ poll.awaiting = false;
425
+ }, []);
401
426
  const handleReload = useCallback(() => {
402
427
  if (configRef.current.debug) console.log("Reloading query for", variantKey);
403
428
  const data = resource.getVariant(variantKey, configRef.current.staleTime).data;
@@ -1283,6 +1308,79 @@ function useMutate() {
1283
1308
  };
1284
1309
  }
1285
1310
  //#endregion
1311
+ //#region client/fetchFile.ts
1312
+ /**
1313
+ * Downloads a file route's body as a `Blob`.
1314
+ *
1315
+ * ```ts
1316
+ * const { blob, filename } = await fetchBlob("/pages/:pageId/post/image", {
1317
+ * params: { pageId },
1318
+ * search: { format: "png" },
1319
+ * });
1320
+ * ```
1321
+ *
1322
+ * A non-2xx rejects with a `QueryError` (`status`, the JSON `body` or `null`,
1323
+ * `retryAfter`), the error `useQuery` throws, so `mutationErrorList(error)`
1324
+ * reads its message. A network failure rejects with the browser's `TypeError`,
1325
+ * an abort with its `AbortError`.
1326
+ */
1327
+ async function fetchBlob(path, ...args) {
1328
+ const response = await request(path, args[0]);
1329
+ return {
1330
+ blob: await response.blob(),
1331
+ filename: filenameOf(response),
1332
+ response
1333
+ };
1334
+ }
1335
+ /** `fetchBlob`, with the body read as text. */
1336
+ async function fetchText(path, ...args) {
1337
+ const response = await request(path, args[0]);
1338
+ return {
1339
+ text: await response.text(),
1340
+ filename: filenameOf(response),
1341
+ response
1342
+ };
1343
+ }
1344
+ async function request(path, options = {}) {
1345
+ const { params = {}, search, signal, init } = options;
1346
+ const url = applyParams$1(path, params);
1347
+ const query = searchString(search);
1348
+ const response = await fetch(`/api${url}${query ? `?${query}` : ""}`, {
1349
+ ...init,
1350
+ method: "GET",
1351
+ signal
1352
+ });
1353
+ if (!response.ok) {
1354
+ const body = await response.json().catch(() => null);
1355
+ throw new QueryError(url, query, response.status, body, parseRetryAfter(response.headers.get("retry-after")));
1356
+ }
1357
+ return response;
1358
+ }
1359
+ function searchString(search) {
1360
+ if (!search) return "";
1361
+ if (search instanceof URLSearchParams) return search.toString();
1362
+ const params = new URLSearchParams();
1363
+ for (const [key, value] of Object.entries(search)) if (value !== null && value !== void 0) params.append(key, String(value));
1364
+ return params.toString();
1365
+ }
1366
+ /**
1367
+ * The file name in a `Content-Disposition` header: the RFC 5987
1368
+ * `filename*=UTF-8''...` form when present and decodable, else `filename`.
1369
+ *
1370
+ * @internal Exported for tests.
1371
+ */
1372
+ function filenameOf(response) {
1373
+ const header = response.headers.get("content-disposition");
1374
+ if (!header) return null;
1375
+ const extended = /filename\*\s*=\s*([^']*)'[^']*'([^;]+)/i.exec(header);
1376
+ if (extended) try {
1377
+ return decodeURIComponent(extended[2].trim());
1378
+ } catch {}
1379
+ const plain = /filename\s*=\s*(?:"((?:[^"\\]|\\.)*)"|([^;]+))/i.exec(header);
1380
+ if (!plain) return null;
1381
+ return (plain[1] !== void 0 ? plain[1].replace(/\\(.)/g, "$1") : plain[2].trim()) || null;
1382
+ }
1383
+ //#endregion
1286
1384
  //#region client/useSubscription.ts
1287
1385
  var MIN_RETRY_MS = 1e3;
1288
1386
  var MAX_RETRY_MS = 3e4;
@@ -3487,6 +3585,6 @@ function onStaticNavigate(callback) {
3487
3585
  return () => document.removeEventListener("gemi:page-load", listener);
3488
3586
  }
3489
3587
  //#endregion
3490
- export { CHUNK_RELOAD_MARKER, Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, configureRealtime, create, createRoot, defineDictionary, init, isAuthenticationError, isChunkLoadError, isCsrfError, isFormError, isHttpError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isRetryableQueryError, isServerError, isValidationError, island, mutationErrorField, mutationErrorKind, mutationErrorList, onStaticNavigate, recoverFromChunkLoadError, textDirection, useAppIdMissmatch, useBreadcrumbs, useChannel, useChannelInvalidate, useDelete, useDictionary, useDomain, useEmailCode, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useFormatter, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSetQueryData, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
3588
+ export { CHUNK_RELOAD_MARKER, Form, FormError, FormFieldContainer, Head, Image, Link, OpenGraphImage, QueryError, QueryManagerProvider, Redirect, ValidationErrors, configureRealtime, create, createRoot, defineDictionary, fetchBlob, fetchText, init, isAuthenticationError, isChunkLoadError, isCsrfError, isFormError, isHttpError, isNetworkError, isNotFoundError, isPermissionError, isRateLimitError, isRetryableQueryError, isServerError, isValidationError, island, mutationErrorField, mutationErrorKind, mutationErrorList, onStaticNavigate, recoverFromChunkLoadError, textDirection, useAppIdMissmatch, useBreadcrumbs, useChannel, useChannelInvalidate, useDelete, useDictionary, useDomain, useEmailCode, useFeature, useFeatures, useForgotPassword, useFormData, useFormStatus, useFormatter, useInfiniteQuery, useIntendedUrl, useIsNavigationPending, useLocale, useLocation, useMutate, useMutation, useMutationStatus, useNavigate, useNavigationProgress, useParams, usePatch, usePost, usePrefetch, usePut, useQuery, useResetPassword, useRoute, useRouteTransition, useSearchParams, useSetQueryData, useSignIn, useSignOut, useSignUp, useSubscription, useTheme, useTranslator, useUpload, useUser };
3491
3589
 
3492
3590
  //# sourceMappingURL=index.js.map