@fragno-dev/upload 0.1.1 → 0.1.3

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 (301) hide show
  1. package/README.md +148 -12
  2. package/dist/browser/client/clients.js +17 -9
  3. package/dist/browser/client/clients.js.map +1 -1
  4. package/dist/browser/client/helpers.d.ts +15 -6
  5. package/dist/browser/client/helpers.d.ts.map +1 -1
  6. package/dist/browser/client/helpers.js +176 -30
  7. package/dist/browser/client/helpers.js.map +1 -1
  8. package/dist/browser/client/node_modules/.pnpm/{@nanostores_query@0.3.4_nanostores@1.1.0 → @nanostores_query@0.3.4_nanostores@1.2.0}/node_modules/@nanostores/query/dist/nanoquery.js +6 -6
  9. package/dist/browser/client/node_modules/.pnpm/{@nanostores_query@0.3.4_nanostores@1.1.0 → @nanostores_query@0.3.4_nanostores@1.2.0}/node_modules/@nanostores/query/dist/nanoquery.js.map +1 -1
  10. package/dist/browser/client/node_modules/.pnpm/{@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10 → @nanostores_solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10}/node_modules/@nanostores/solid/dist/index.js +2 -2
  11. package/dist/browser/client/node_modules/.pnpm/{@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10 → @nanostores_solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10}/node_modules/@nanostores/solid/dist/index.js.map +1 -1
  12. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/atom/index.js +2 -1
  13. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/atom/index.js.map +1 -0
  14. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/clean-stores/index.js +6 -0
  15. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/clean-stores/index.js.map +1 -1
  16. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/computed/index.js +8 -5
  17. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/computed/index.js.map +1 -0
  18. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js +1 -1
  19. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js.map +1 -1
  20. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/listen-keys/index.js +1 -1
  21. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/listen-keys/index.js.map +1 -1
  22. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js +1 -1
  23. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js.map +1 -1
  24. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js +1 -1
  25. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js.map +1 -1
  26. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js +16 -0
  27. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js.map +1 -0
  28. package/dist/browser/client/packages/fragment-upload/src/definition.js +1 -42
  29. package/dist/browser/client/packages/fragment-upload/src/definition.js.map +1 -1
  30. package/dist/browser/client/packages/fragment-upload/src/routes/files.js +12 -5
  31. package/dist/browser/client/packages/fragment-upload/src/routes/files.js.map +1 -1
  32. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js +3 -4
  33. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js.map +1 -1
  34. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js +32 -21
  35. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js.map +1 -1
  36. package/dist/browser/client/packages/fragment-upload/src/schema.js +33 -3
  37. package/dist/browser/client/packages/fragment-upload/src/schema.js.map +1 -1
  38. package/dist/browser/client/packages/fragment-upload/src/types.d.ts +1 -2
  39. package/dist/browser/client/packages/fragment-upload/src/types.d.ts.map +1 -1
  40. package/dist/browser/client/packages/fragno/dist/client/client.js +28 -12
  41. package/dist/browser/client/packages/fragno/dist/client/client.js.map +1 -1
  42. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js +11 -3
  43. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js.map +1 -1
  44. package/dist/browser/client/packages/fragno/dist/client/react.js +104 -12
  45. package/dist/browser/client/packages/fragno/dist/client/react.js.map +1 -1
  46. package/dist/browser/client/packages/fragno/dist/client/solid.js +25 -11
  47. package/dist/browser/client/packages/fragno/dist/client/solid.js.map +1 -1
  48. package/dist/browser/client/packages/fragno/dist/client/vanilla.js +21 -1
  49. package/dist/browser/client/packages/fragno/dist/client/vanilla.js.map +1 -1
  50. package/dist/browser/client/packages/fragno/dist/client/vue.js +19 -11
  51. package/dist/browser/client/packages/fragno/dist/client/vue.js.map +1 -1
  52. package/dist/browser/client/react.d.ts +215 -192
  53. package/dist/browser/client/react.d.ts.map +1 -1
  54. package/dist/browser/client/react.js.map +1 -1
  55. package/dist/browser/client/solid.d.ts +218 -196
  56. package/dist/browser/client/solid.d.ts.map +1 -1
  57. package/dist/browser/client/solid.js.map +1 -1
  58. package/dist/browser/client/svelte.d.ts +216 -193
  59. package/dist/browser/client/svelte.d.ts.map +1 -1
  60. package/dist/browser/client/svelte.js.map +1 -1
  61. package/dist/browser/client/vanilla.d.ts +217 -195
  62. package/dist/browser/client/vanilla.d.ts.map +1 -1
  63. package/dist/browser/client/vanilla.js.map +1 -1
  64. package/dist/browser/client/vue.d.ts +217 -194
  65. package/dist/browser/client/vue.d.ts.map +1 -1
  66. package/dist/browser/client/vue.js.map +1 -1
  67. package/dist/cli/commands/files/delete.d.ts +4 -4
  68. package/dist/cli/commands/files/delete.d.ts.map +1 -1
  69. package/dist/cli/commands/files/delete.js +8 -10
  70. package/dist/cli/commands/files/delete.js.map +1 -1
  71. package/dist/cli/commands/files/download-url.d.ts +4 -4
  72. package/dist/cli/commands/files/download-url.d.ts.map +1 -1
  73. package/dist/cli/commands/files/download-url.js +8 -10
  74. package/dist/cli/commands/files/download-url.js.map +1 -1
  75. package/dist/cli/commands/files/download.d.ts +4 -4
  76. package/dist/cli/commands/files/download.d.ts.map +1 -1
  77. package/dist/cli/commands/files/download.js +10 -12
  78. package/dist/cli/commands/files/download.js.map +1 -1
  79. package/dist/cli/commands/files/get.d.ts +4 -4
  80. package/dist/cli/commands/files/get.d.ts.map +1 -1
  81. package/dist/cli/commands/files/get.js +8 -10
  82. package/dist/cli/commands/files/get.js.map +1 -1
  83. package/dist/cli/commands/files/list.d.ts +4 -4
  84. package/dist/cli/commands/files/list.d.ts.map +1 -1
  85. package/dist/cli/commands/files/list.js +6 -8
  86. package/dist/cli/commands/files/list.js.map +1 -1
  87. package/dist/cli/commands/files/update.d.ts +4 -4
  88. package/dist/cli/commands/files/update.d.ts.map +1 -1
  89. package/dist/cli/commands/files/update.js +8 -10
  90. package/dist/cli/commands/files/update.js.map +1 -1
  91. package/dist/cli/commands/files/upload.d.ts +4 -4
  92. package/dist/cli/commands/files/upload.d.ts.map +1 -1
  93. package/dist/cli/commands/files/upload.js +10 -12
  94. package/dist/cli/commands/files/upload.js.map +1 -1
  95. package/dist/cli/commands/uploads/abort.d.ts +2 -2
  96. package/dist/cli/commands/uploads/abort.d.ts.map +1 -1
  97. package/dist/cli/commands/uploads/abort.js.map +1 -1
  98. package/dist/cli/commands/uploads/complete.d.ts +2 -2
  99. package/dist/cli/commands/uploads/complete.d.ts.map +1 -1
  100. package/dist/cli/commands/uploads/complete.js.map +1 -1
  101. package/dist/cli/commands/uploads/content.d.ts +2 -2
  102. package/dist/cli/commands/uploads/content.d.ts.map +1 -1
  103. package/dist/cli/commands/uploads/content.js +1 -1
  104. package/dist/cli/commands/uploads/content.js.map +1 -1
  105. package/dist/cli/commands/uploads/create.d.ts +4 -4
  106. package/dist/cli/commands/uploads/create.d.ts.map +1 -1
  107. package/dist/cli/commands/uploads/create.js +8 -11
  108. package/dist/cli/commands/uploads/create.js.map +1 -1
  109. package/dist/cli/commands/uploads/get.d.ts +2 -2
  110. package/dist/cli/commands/uploads/get.d.ts.map +1 -1
  111. package/dist/cli/commands/uploads/get.js.map +1 -1
  112. package/dist/cli/commands/uploads/parts-complete.d.ts +2 -2
  113. package/dist/cli/commands/uploads/parts-complete.d.ts.map +1 -1
  114. package/dist/cli/commands/uploads/parts-complete.js.map +1 -1
  115. package/dist/cli/commands/uploads/parts-list.d.ts +2 -2
  116. package/dist/cli/commands/uploads/parts-list.d.ts.map +1 -1
  117. package/dist/cli/commands/uploads/parts-list.js.map +1 -1
  118. package/dist/cli/commands/uploads/parts-urls.d.ts +2 -2
  119. package/dist/cli/commands/uploads/parts-urls.d.ts.map +1 -1
  120. package/dist/cli/commands/uploads/parts-urls.js.map +1 -1
  121. package/dist/cli/commands/uploads/progress.d.ts +2 -2
  122. package/dist/cli/commands/uploads/progress.d.ts.map +1 -1
  123. package/dist/cli/commands/uploads/progress.js.map +1 -1
  124. package/dist/cli/commands/uploads/transfer.d.ts +4 -4
  125. package/dist/cli/commands/uploads/transfer.d.ts.map +1 -1
  126. package/dist/cli/commands/uploads/transfer.js +9 -12
  127. package/dist/cli/commands/uploads/transfer.js.map +1 -1
  128. package/dist/cli/index.d.ts +13 -13
  129. package/dist/cli/index.d.ts.map +1 -1
  130. package/dist/cli/index.js +14 -14
  131. package/dist/cli/index.js.map +1 -1
  132. package/dist/cli/utils/client.js +22 -5
  133. package/dist/cli/utils/client.js.map +1 -1
  134. package/dist/cli/utils/options.js +7 -43
  135. package/dist/cli/utils/options.js.map +1 -1
  136. package/dist/node/cli/commands/files/delete.d.ts +4 -4
  137. package/dist/node/cli/commands/files/delete.d.ts.map +1 -1
  138. package/dist/node/cli/commands/files/delete.js +8 -10
  139. package/dist/node/cli/commands/files/delete.js.map +1 -1
  140. package/dist/node/cli/commands/files/download-url.d.ts +4 -4
  141. package/dist/node/cli/commands/files/download-url.d.ts.map +1 -1
  142. package/dist/node/cli/commands/files/download-url.js +8 -10
  143. package/dist/node/cli/commands/files/download-url.js.map +1 -1
  144. package/dist/node/cli/commands/files/download.d.ts +4 -4
  145. package/dist/node/cli/commands/files/download.d.ts.map +1 -1
  146. package/dist/node/cli/commands/files/download.js +9 -11
  147. package/dist/node/cli/commands/files/download.js.map +1 -1
  148. package/dist/node/cli/commands/files/get.d.ts +4 -4
  149. package/dist/node/cli/commands/files/get.d.ts.map +1 -1
  150. package/dist/node/cli/commands/files/get.js +8 -10
  151. package/dist/node/cli/commands/files/get.js.map +1 -1
  152. package/dist/node/cli/commands/files/list.d.ts +4 -4
  153. package/dist/node/cli/commands/files/list.d.ts.map +1 -1
  154. package/dist/node/cli/commands/files/list.js +6 -8
  155. package/dist/node/cli/commands/files/list.js.map +1 -1
  156. package/dist/node/cli/commands/files/update.d.ts +4 -4
  157. package/dist/node/cli/commands/files/update.d.ts.map +1 -1
  158. package/dist/node/cli/commands/files/update.js +8 -10
  159. package/dist/node/cli/commands/files/update.js.map +1 -1
  160. package/dist/node/cli/commands/files/upload.d.ts +4 -4
  161. package/dist/node/cli/commands/files/upload.d.ts.map +1 -1
  162. package/dist/node/cli/commands/files/upload.js +9 -11
  163. package/dist/node/cli/commands/files/upload.js.map +1 -1
  164. package/dist/node/cli/commands/uploads/abort.d.ts +2 -2
  165. package/dist/node/cli/commands/uploads/abort.d.ts.map +1 -1
  166. package/dist/node/cli/commands/uploads/abort.js.map +1 -1
  167. package/dist/node/cli/commands/uploads/complete.d.ts +2 -2
  168. package/dist/node/cli/commands/uploads/complete.d.ts.map +1 -1
  169. package/dist/node/cli/commands/uploads/complete.js.map +1 -1
  170. package/dist/node/cli/commands/uploads/content.d.ts +2 -2
  171. package/dist/node/cli/commands/uploads/content.d.ts.map +1 -1
  172. package/dist/node/cli/commands/uploads/content.js.map +1 -1
  173. package/dist/node/cli/commands/uploads/create.d.ts +4 -4
  174. package/dist/node/cli/commands/uploads/create.d.ts.map +1 -1
  175. package/dist/node/cli/commands/uploads/create.js +8 -11
  176. package/dist/node/cli/commands/uploads/create.js.map +1 -1
  177. package/dist/node/cli/commands/uploads/get.d.ts +2 -2
  178. package/dist/node/cli/commands/uploads/get.d.ts.map +1 -1
  179. package/dist/node/cli/commands/uploads/get.js.map +1 -1
  180. package/dist/node/cli/commands/uploads/parts-complete.d.ts +2 -2
  181. package/dist/node/cli/commands/uploads/parts-complete.d.ts.map +1 -1
  182. package/dist/node/cli/commands/uploads/parts-complete.js.map +1 -1
  183. package/dist/node/cli/commands/uploads/parts-list.d.ts +2 -2
  184. package/dist/node/cli/commands/uploads/parts-list.d.ts.map +1 -1
  185. package/dist/node/cli/commands/uploads/parts-list.js.map +1 -1
  186. package/dist/node/cli/commands/uploads/parts-urls.d.ts +2 -2
  187. package/dist/node/cli/commands/uploads/parts-urls.d.ts.map +1 -1
  188. package/dist/node/cli/commands/uploads/parts-urls.js.map +1 -1
  189. package/dist/node/cli/commands/uploads/progress.d.ts +2 -2
  190. package/dist/node/cli/commands/uploads/progress.d.ts.map +1 -1
  191. package/dist/node/cli/commands/uploads/progress.js.map +1 -1
  192. package/dist/node/cli/commands/uploads/transfer.d.ts +4 -4
  193. package/dist/node/cli/commands/uploads/transfer.d.ts.map +1 -1
  194. package/dist/node/cli/commands/uploads/transfer.js +8 -11
  195. package/dist/node/cli/commands/uploads/transfer.js.map +1 -1
  196. package/dist/node/cli/index.d.ts +13 -13
  197. package/dist/node/cli/index.d.ts.map +1 -1
  198. package/dist/node/cli/index.js +14 -14
  199. package/dist/node/cli/index.js.map +1 -1
  200. package/dist/node/cli/utils/client.js +22 -5
  201. package/dist/node/cli/utils/client.js.map +1 -1
  202. package/dist/node/cli/utils/options.js +7 -43
  203. package/dist/node/cli/utils/options.js.map +1 -1
  204. package/dist/node/client/clients.d.ts +217 -194
  205. package/dist/node/client/clients.d.ts.map +1 -1
  206. package/dist/node/client/clients.js +17 -9
  207. package/dist/node/client/clients.js.map +1 -1
  208. package/dist/node/client/helpers.d.ts +15 -6
  209. package/dist/node/client/helpers.d.ts.map +1 -1
  210. package/dist/node/client/helpers.js +176 -30
  211. package/dist/node/client/helpers.js.map +1 -1
  212. package/dist/node/client/react.d.ts +217 -194
  213. package/dist/node/client/react.d.ts.map +1 -1
  214. package/dist/node/client/react.js.map +1 -1
  215. package/dist/node/client/solid.d.ts +218 -196
  216. package/dist/node/client/solid.d.ts.map +1 -1
  217. package/dist/node/client/solid.js.map +1 -1
  218. package/dist/node/client/svelte.d.ts +216 -193
  219. package/dist/node/client/svelte.d.ts.map +1 -1
  220. package/dist/node/client/svelte.js.map +1 -1
  221. package/dist/node/client/vanilla.d.ts +217 -195
  222. package/dist/node/client/vanilla.d.ts.map +1 -1
  223. package/dist/node/client/vanilla.js.map +1 -1
  224. package/dist/node/client/vue.d.ts +217 -194
  225. package/dist/node/client/vue.d.ts.map +1 -1
  226. package/dist/node/client/vue.js.map +1 -1
  227. package/dist/node/config.d.ts +6 -6
  228. package/dist/node/config.d.ts.map +1 -1
  229. package/dist/node/config.js.map +1 -1
  230. package/dist/node/definition.d.ts +588 -219
  231. package/dist/node/definition.d.ts.map +1 -1
  232. package/dist/node/definition.js +27 -3
  233. package/dist/node/definition.js.map +1 -1
  234. package/dist/node/file-key.d.ts +19 -0
  235. package/dist/node/file-key.d.ts.map +1 -0
  236. package/dist/node/file-key.js +47 -0
  237. package/dist/node/file-key.js.map +1 -0
  238. package/dist/node/index.d.ts +582 -175
  239. package/dist/node/index.d.ts.map +1 -1
  240. package/dist/node/index.js +3 -2
  241. package/dist/node/index.js.map +1 -1
  242. package/dist/node/routes/files.js +99 -64
  243. package/dist/node/routes/files.js.map +1 -1
  244. package/dist/node/routes/index.d.ts +1497 -721
  245. package/dist/node/routes/index.d.ts.map +1 -1
  246. package/dist/node/routes/shared.js +5 -9
  247. package/dist/node/routes/shared.js.map +1 -1
  248. package/dist/node/routes/uploads.js +105 -47
  249. package/dist/node/routes/uploads.js.map +1 -1
  250. package/dist/node/schema.d.ts +6 -6
  251. package/dist/node/schema.d.ts.map +1 -1
  252. package/dist/node/schema.js +12 -3
  253. package/dist/node/schema.js.map +1 -1
  254. package/dist/node/services/files.d.ts +6 -2
  255. package/dist/node/services/files.d.ts.map +1 -1
  256. package/dist/node/services/files.js +22 -20
  257. package/dist/node/services/files.js.map +1 -1
  258. package/dist/node/services/helpers.js +37 -15
  259. package/dist/node/services/helpers.js.map +1 -1
  260. package/dist/node/services/uploads.d.ts +10 -5
  261. package/dist/node/services/uploads.d.ts.map +1 -1
  262. package/dist/node/services/uploads.js +340 -63
  263. package/dist/node/services/uploads.js.map +1 -1
  264. package/dist/node/storage/fs.d.ts.map +1 -1
  265. package/dist/node/storage/fs.js +16 -10
  266. package/dist/node/storage/fs.js.map +1 -1
  267. package/dist/node/storage/object-key.js +36 -0
  268. package/dist/node/storage/object-key.js.map +1 -0
  269. package/dist/node/storage/r2-binding.d.ts +59 -0
  270. package/dist/node/storage/r2-binding.d.ts.map +1 -0
  271. package/dist/node/storage/r2-binding.js +245 -0
  272. package/dist/node/storage/r2-binding.js.map +1 -0
  273. package/dist/node/storage/r2.d.ts +6 -5
  274. package/dist/node/storage/r2.d.ts.map +1 -1
  275. package/dist/node/storage/s3.d.ts.map +1 -1
  276. package/dist/node/storage/s3.js +16 -10
  277. package/dist/node/storage/s3.js.map +1 -1
  278. package/dist/node/storage/types.d.ts +6 -5
  279. package/dist/node/storage/types.d.ts.map +1 -1
  280. package/dist/node/types.d.ts +1 -2
  281. package/dist/node/types.d.ts.map +1 -1
  282. package/package.json +26 -46
  283. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js.map +0 -1
  284. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js +0 -6
  285. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js.map +0 -1
  286. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts +0 -7
  287. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts.map +0 -1
  288. package/dist/browser/client/packages/fragment-upload/src/keys.js +0 -28
  289. package/dist/browser/client/packages/fragment-upload/src/keys.js.map +0 -1
  290. package/dist/browser/index-BdjKPO4J.d.ts +0 -177
  291. package/dist/browser/index-BdjKPO4J.d.ts.map +0 -1
  292. package/dist/browser/index.js +0 -3
  293. package/dist/browser/src-vdNJUbjT.js +0 -1982
  294. package/dist/browser/src-vdNJUbjT.js.map +0 -1
  295. package/dist/cli/keys.js +0 -32
  296. package/dist/cli/keys.js.map +0 -1
  297. package/dist/node/keys.d.ts +0 -12
  298. package/dist/node/keys.d.ts.map +0 -1
  299. package/dist/node/keys.js +0 -63
  300. package/dist/node/keys.js.map +0 -1
  301. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["encodeFileKey","FileKeyEncoded","FileKeyParts","UploadChecksum","FileMetadata","FileVisibility","UploadStrategy","UploadProgress","bytesUploaded","totalBytes","partsUploaded","totalParts","CreateUploadAndTransferOptions","keyParts","fileKey","filename","contentType","checksum","tags","visibility","uploaderId","metadata","Record","onProgress","progress","UploadCreateResponse","uploadId","status","strategy","expiresAt","upload","mode","transport","uploadUrl","uploadHeaders","partSizeBytes","maxParts","partsEndpoint","completeEndpoint","contentEndpoint","UploadHelpers","createUploadAndTransfer","file","Blob","options","Promise","downloadFile","fileKeyOrParts","Response","DEFAULT_CONTENT_TYPE","mergeHeaders","base","HeadersInit","next","merged","Headers","undefined","key","value","entries","set","Array","isArray","Object","buildRequestInit","defaults","RequestInit","init","headers","readJsonSafely","response","json","createUploadHelpers","input","buildUrl","path","fetcher","fetch","defaultOptions","fetchJson","expectedErrorCode","T","ok","payload","code","Error","message","String","reportProgress","method","body","JSON","stringify","File","name","type","length","sizeBytes","size","uploadResponse","fileMetadata","Math","ceil","partNumbers","from","_","i","partUrls","parts","partNumber","url","sort","a","b","completedParts","etag","completionParts","part","start","end","min","partBlob","slice","get","partSize","push","source","stream","ReadableStream","Uint8Array","controller","reader","getReader","pump","read","then","done","close","byteLength","enqueue","error","requestInit","duplex","proxyResponse","_error","fallbackResponse","fallbackMetadata","proxyMetadata","downloadUrlResponse","errorPayload","errorCode"],"sources":["../../../src/client/helpers.ts"],"sourcesContent":["import { encodeFileKey, type FileKeyEncoded, type FileKeyParts } from \"../keys\";\nimport type { UploadChecksum } from \"../storage/types\";\nimport type { FileMetadata, FileVisibility, UploadStrategy } from \"../types\";\n\nexport type UploadProgress = {\n bytesUploaded: number;\n totalBytes: number;\n partsUploaded: number;\n totalParts?: number;\n};\n\nexport type CreateUploadAndTransferOptions = {\n keyParts?: FileKeyParts;\n fileKey?: FileKeyEncoded;\n filename?: string;\n contentType?: string;\n checksum?: UploadChecksum | null;\n tags?: string[];\n visibility?: FileVisibility;\n uploaderId?: string;\n metadata?: Record<string, unknown>;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport type UploadCreateResponse = {\n uploadId: string;\n fileKey: string;\n status: \"created\";\n strategy: UploadStrategy;\n expiresAt: string;\n upload: {\n mode: \"single\" | \"multipart\";\n transport: \"direct\" | \"proxy\";\n uploadUrl?: string;\n uploadHeaders?: Record<string, string>;\n partSizeBytes?: number;\n maxParts?: number;\n partsEndpoint?: string;\n completeEndpoint: string;\n contentEndpoint?: string;\n };\n};\n\nexport type UploadHelpers = {\n createUploadAndTransfer: (\n file: Blob,\n options: CreateUploadAndTransferOptions,\n ) => Promise<{ upload: UploadCreateResponse; file: FileMetadata }>;\n downloadFile: (fileKeyOrParts: FileKeyEncoded | FileKeyParts) => Promise<Response>;\n};\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\n\nconst mergeHeaders = (base?: HeadersInit, next?: HeadersInit) => {\n const merged = new Headers(base ?? undefined);\n\n if (!next) {\n return merged;\n }\n\n if (next instanceof Headers) {\n for (const [key, value] of next.entries()) {\n merged.set(key, value);\n }\n } else if (Array.isArray(next)) {\n for (const [key, value] of next) {\n merged.set(key, value);\n }\n } else {\n for (const [key, value] of Object.entries(next)) {\n merged.set(key, value);\n }\n }\n\n return merged;\n};\n\nconst buildRequestInit = (defaults: RequestInit | undefined, init: RequestInit): RequestInit => {\n if (!defaults) {\n return init;\n }\n\n return {\n ...defaults,\n ...init,\n headers: mergeHeaders(defaults.headers, init.headers),\n };\n};\n\nconst readJsonSafely = async (response: Response) => {\n try {\n return (await response.json()) as unknown;\n } catch {\n return null;\n }\n};\n\nexport const createUploadHelpers = (input: {\n buildUrl: (path: string) => string;\n fetcher: typeof fetch;\n defaultOptions?: RequestInit;\n}): UploadHelpers => {\n const { buildUrl, fetcher, defaultOptions } = input;\n\n const fetchJson = async <T>(\n path: string,\n init: RequestInit,\n expectedErrorCode?: string,\n ): Promise<T> => {\n const response = await fetcher(buildUrl(path), buildRequestInit(defaultOptions, init));\n\n if (!response.ok) {\n const payload = await readJsonSafely(response);\n const code =\n typeof payload === \"object\" && payload ? (payload as { code?: string }).code : undefined;\n if (expectedErrorCode && code === expectedErrorCode) {\n throw new Error(expectedErrorCode);\n }\n const message =\n typeof payload === \"object\" && payload && \"message\" in payload\n ? String((payload as { message?: string }).message)\n : `Request failed (${response.status})`;\n throw new Error(message);\n }\n\n return (await response.json()) as T;\n };\n\n const reportProgress = async (\n uploadId: string,\n progress: UploadProgress,\n onProgress?: (progress: UploadProgress) => void,\n ) => {\n onProgress?.(progress);\n await fetchJson<{ bytesUploaded: number; partsUploaded: number }>(\n `/uploads/${uploadId}/progress`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n bytesUploaded: progress.bytesUploaded,\n partsUploaded: progress.partsUploaded,\n }),\n },\n );\n };\n\n const createUploadAndTransfer: UploadHelpers[\"createUploadAndTransfer\"] = async (\n file,\n options,\n ) => {\n const filename =\n options.filename ??\n (typeof File !== \"undefined\" && file instanceof File && file.name ? file.name : \"upload\");\n const contentType =\n options.contentType ??\n (file.type && file.type.length > 0 ? file.type : undefined) ??\n DEFAULT_CONTENT_TYPE;\n const sizeBytes = file.size;\n\n if (!options.keyParts && !options.fileKey) {\n throw new Error(\"File key parts or file key is required\");\n }\n\n const upload = await fetchJson<UploadCreateResponse>(\"/uploads\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n keyParts: options.keyParts,\n fileKey: options.fileKey,\n filename,\n sizeBytes,\n contentType,\n checksum: options.checksum ?? null,\n tags: options.tags,\n visibility: options.visibility,\n uploaderId: options.uploaderId,\n metadata: options.metadata,\n }),\n });\n\n const totalBytes = sizeBytes;\n let bytesUploaded = 0;\n let partsUploaded = 0;\n\n if (upload.strategy === \"direct-single\") {\n if (!upload.upload.uploadUrl) {\n throw new Error(\"Missing upload URL for direct upload\");\n }\n\n const uploadResponse = await fetcher(upload.upload.uploadUrl, {\n method: \"PUT\",\n headers: upload.upload.uploadHeaders,\n body: file,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(`Direct upload failed (${uploadResponse.status})`);\n }\n\n bytesUploaded = totalBytes;\n partsUploaded = 1;\n await reportProgress(\n upload.uploadId,\n {\n bytesUploaded,\n totalBytes,\n partsUploaded,\n totalParts: 1,\n },\n options.onProgress,\n );\n\n const fileMetadata = await fetchJson<FileMetadata>(upload.upload.completeEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({}),\n });\n\n return { upload, file: fileMetadata };\n }\n\n if (upload.strategy === \"direct-multipart\") {\n const partSizeBytes = upload.upload.partSizeBytes;\n if (!partSizeBytes || !upload.upload.partsEndpoint) {\n throw new Error(\"Missing multipart configuration for upload\");\n }\n\n const totalParts = Math.ceil(totalBytes / partSizeBytes);\n if (upload.upload.maxParts && totalParts > upload.upload.maxParts) {\n throw new Error(\"Multipart upload exceeds maximum parts\");\n }\n\n const partNumbers = Array.from({ length: totalParts }, (_, i) => i + 1);\n const partUrls = await fetchJson<{\n parts: { partNumber: number; url: string; headers?: Record<string, string> }[];\n }>(upload.upload.partsEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ partNumbers }),\n });\n\n const parts = partUrls.parts.sort((a, b) => a.partNumber - b.partNumber);\n const completedParts: { partNumber: number; etag: string; sizeBytes: number }[] = [];\n const completionParts: { partNumber: number; etag: string }[] = [];\n\n for (const part of parts) {\n const start = (part.partNumber - 1) * partSizeBytes;\n const end = Math.min(start + partSizeBytes, totalBytes);\n const partBlob = file.slice(start, end);\n\n const response = await fetcher(part.url, {\n method: \"PUT\",\n headers: part.headers,\n body: partBlob,\n });\n\n if (!response.ok) {\n throw new Error(`Multipart upload failed (${response.status})`);\n }\n\n const etag = response.headers.get(\"ETag\") ?? response.headers.get(\"etag\");\n if (!etag) {\n throw new Error(\"Missing ETag for uploaded part\");\n }\n\n const partSize = partBlob.size;\n completedParts.push({ partNumber: part.partNumber, etag, sizeBytes: partSize });\n completionParts.push({ partNumber: part.partNumber, etag });\n\n bytesUploaded += partSize;\n partsUploaded += 1;\n await reportProgress(\n upload.uploadId,\n {\n bytesUploaded,\n totalBytes,\n partsUploaded,\n totalParts,\n },\n options.onProgress,\n );\n }\n\n await fetchJson<{ bytesUploaded: number; partsUploaded: number }>(\n `/uploads/${upload.uploadId}/parts/complete`,\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ parts: completedParts }),\n },\n );\n\n const fileMetadata = await fetchJson<FileMetadata>(upload.upload.completeEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ parts: completionParts }),\n });\n\n return { upload, file: fileMetadata };\n }\n\n if (!upload.upload.contentEndpoint) {\n throw new Error(\"Missing proxy content endpoint for upload\");\n }\n\n const source = file.stream();\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const reader = source.getReader();\n\n const pump = (): void => {\n reader.read().then(\n ({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n\n if (value) {\n bytesUploaded += value.byteLength;\n options.onProgress?.({\n bytesUploaded,\n totalBytes,\n partsUploaded: 0,\n });\n controller.enqueue(value);\n }\n\n pump();\n },\n (error) => {\n controller.error(error);\n },\n );\n };\n\n pump();\n },\n });\n\n const requestInit = buildRequestInit(defaultOptions, {\n method: \"PUT\",\n headers: { \"Content-Type\": DEFAULT_CONTENT_TYPE },\n body: stream,\n }) as RequestInit & { duplex?: \"half\" };\n requestInit.duplex = \"half\";\n\n let proxyResponse: Response;\n try {\n proxyResponse = await fetcher(buildUrl(upload.upload.contentEndpoint), requestInit);\n } catch (_error) {\n const fallbackResponse = await fetcher(\n buildUrl(upload.upload.contentEndpoint),\n buildRequestInit(defaultOptions, {\n method: \"PUT\",\n headers: { \"Content-Type\": DEFAULT_CONTENT_TYPE },\n body: file,\n }),\n );\n\n if (!fallbackResponse.ok) {\n throw new Error(`Proxy upload failed (${fallbackResponse.status})`);\n }\n\n options.onProgress?.({\n bytesUploaded: totalBytes,\n totalBytes,\n partsUploaded: 0,\n });\n\n const fallbackMetadata = (await fallbackResponse.json()) as FileMetadata;\n return { upload, file: fallbackMetadata };\n }\n\n if (!proxyResponse.ok) {\n throw new Error(`Proxy upload failed (${proxyResponse.status})`);\n }\n\n const proxyMetadata = (await proxyResponse.json()) as FileMetadata;\n\n return { upload, file: proxyMetadata };\n };\n\n const downloadFile: UploadHelpers[\"downloadFile\"] = async (fileKeyOrParts) => {\n const fileKey = Array.isArray(fileKeyOrParts) ? encodeFileKey(fileKeyOrParts) : fileKeyOrParts;\n\n const downloadUrlResponse = await fetcher(\n buildUrl(`/files/${fileKey}/download-url`),\n buildRequestInit(defaultOptions, { method: \"GET\" }),\n );\n\n if (downloadUrlResponse.ok) {\n const payload = (await downloadUrlResponse.json()) as {\n url: string;\n headers?: Record<string, string>;\n };\n\n return fetcher(payload.url, {\n method: \"GET\",\n headers: payload.headers,\n });\n }\n\n const errorPayload = await readJsonSafely(downloadUrlResponse);\n const errorCode =\n typeof errorPayload === \"object\" && errorPayload\n ? (errorPayload as { code?: string }).code\n : undefined;\n\n if (errorCode !== \"SIGNED_URL_UNSUPPORTED\") {\n const message =\n typeof errorPayload === \"object\" && errorPayload && \"message\" in errorPayload\n ? String((errorPayload as { message?: string }).message)\n : `Download failed (${downloadUrlResponse.status})`;\n throw new Error(message);\n }\n\n return fetcher(\n buildUrl(`/files/${fileKey}/content`),\n buildRequestInit(defaultOptions, { method: \"GET\" }),\n );\n };\n\n return {\n createUploadAndTransfer,\n downloadFile,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["UploadChecksum","FileMetadata","FileVisibility","UploadStrategy","UploadProgress","bytesUploaded","totalBytes","partsUploaded","totalParts","CreateUploadAndTransferOptions","provider","fileKey","filename","contentType","checksum","tags","visibility","uploaderId","metadata","Record","onProgress","progress","DownloadMethod","DownloadFileOptions","method","UploadCreateResponse","uploadId","status","strategy","expiresAt","upload","mode","transport","uploadUrl","uploadHeaders","partSizeBytes","maxParts","statusEndpoint","progressEndpoint","partsEndpoint","partsCompleteEndpoint","completeEndpoint","abortEndpoint","contentEndpoint","UploadHelpers","createUploadAndTransfer","file","Blob","options","Promise","downloadFile","Response","DEFAULT_CONTENT_TYPE","PROXY_UPLOAD_STRATEGY_HINT","PROXY_UPLOAD_RECOVERY_HINT","DOWNLOAD_METHOD_HINT","mergeHeaders","base","HeadersInit","next","merged","Headers","undefined","key","value","entries","set","Array","isArray","Object","buildRequestInit","defaults","RequestInit","init","headers","readJsonSafely","response","json","toErrorMessage","error","Error","message","length","readMessageFromPayload","payload","toAbsoluteUrl","url","URL","window","location","origin","validateProxyContentUrl","parsed","protocol","buildProxyUploadErrorMessage","input","endpointUrl","streamError","fallbackError","detailLines","push","details","join","buildDownloadRequestErrorMessage","requestError","hint","payloadMessage","sanitizeSignedDownloadUrl","search","hash","toString","readErrorCodeFromPayload","code","hasText","trim","requireUploadEndpoint","endpoint","label","buildByKeyQuery","URLSearchParams","createUploadHelpers","buildUrl","path","fetcher","fetch","defaultOptions","fetchJson","expectedErrorCode","T","ok","String","reportProgress","body","JSON","stringify","File","name","type","sizeBytes","size","uploadResponse","fileMetadata","Math","ceil","partNumbers","from","_","i","partUrls","parts","partNumber","sort","a","b","completedParts","etag","completionParts","part","start","end","min","partBlob","slice","get","partSize","proxyContentUrl","proxyUrlValidationError","source","stream","ReadableStream","Uint8Array","controller","reader","getReader","pump","read","then","done","close","byteLength","enqueue","requestInit","duplex","proxyResponse","fallbackResponse","fallbackMetadata","proxyMetadata","byKeyQuery","downloadUrlEndpoint","downloadUrlResponse","errorPayload","errorCode","sanitizedUrl","payloadError","contentResponse","contentError"],"sources":["../../../src/client/helpers.ts"],"sourcesContent":["import type { UploadChecksum } from \"../storage/types\";\nimport type { FileMetadata, FileVisibility, UploadStrategy } from \"../types\";\n\nexport type UploadProgress = {\n bytesUploaded: number;\n totalBytes: number;\n partsUploaded: number;\n totalParts?: number;\n};\n\nexport type CreateUploadAndTransferOptions = {\n provider: string;\n fileKey: string;\n filename?: string;\n contentType?: string;\n checksum?: UploadChecksum | null;\n tags?: string[];\n visibility?: FileVisibility;\n uploaderId?: string;\n metadata?: Record<string, unknown>;\n onProgress?: (progress: UploadProgress) => void;\n};\n\nexport type DownloadMethod = \"signed-url\" | \"content\";\n\nexport type DownloadFileOptions = {\n provider: string;\n method: DownloadMethod;\n};\n\nexport type UploadCreateResponse = {\n uploadId: string;\n fileKey: string;\n provider: string;\n status: \"created\" | \"in_progress\";\n strategy: UploadStrategy;\n expiresAt: string;\n upload: {\n mode: \"single\" | \"multipart\";\n transport: \"direct\" | \"proxy\";\n uploadUrl?: string;\n uploadHeaders?: Record<string, string>;\n partSizeBytes?: number;\n maxParts?: number;\n statusEndpoint: string;\n progressEndpoint: string;\n partsEndpoint?: string;\n partsCompleteEndpoint?: string;\n completeEndpoint: string;\n abortEndpoint: string;\n contentEndpoint?: string;\n };\n};\n\nexport type UploadHelpers = {\n createUploadAndTransfer: (\n file: Blob,\n options: CreateUploadAndTransferOptions,\n ) => Promise<{ upload: UploadCreateResponse; file: FileMetadata }>;\n downloadFile: (fileKey: string, options: DownloadFileOptions) => Promise<Response>;\n};\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\nconst PROXY_UPLOAD_STRATEGY_HINT =\n \"Server selected proxy upload strategy for this file (no direct upload URL was returned). If you expected direct-to-storage upload, your active provider/config does not support direct upload for this request.\";\nconst PROXY_UPLOAD_RECOVERY_HINT =\n \"Verify the /uploads/:uploadId/content endpoint is reachable from the client, or switch provider/config so /uploads returns a direct strategy.\";\nconst DOWNLOAD_METHOD_HINT =\n \"Pick the download method explicitly: use 'signed-url' for GET /files/by-key/download-url, otherwise use 'content' for GET /files/by-key/content.\";\n\nconst mergeHeaders = (base?: HeadersInit, next?: HeadersInit) => {\n const merged = new Headers(base ?? undefined);\n\n if (!next) {\n return merged;\n }\n\n if (next instanceof Headers) {\n for (const [key, value] of next.entries()) {\n merged.set(key, value);\n }\n } else if (Array.isArray(next)) {\n for (const [key, value] of next) {\n merged.set(key, value);\n }\n } else {\n for (const [key, value] of Object.entries(next)) {\n merged.set(key, value);\n }\n }\n\n return merged;\n};\n\nconst buildRequestInit = (defaults: RequestInit | undefined, init: RequestInit): RequestInit => {\n if (!defaults) {\n return init;\n }\n\n return {\n ...defaults,\n ...init,\n headers: mergeHeaders(defaults.headers, init.headers),\n };\n};\n\nconst readJsonSafely = async (response: Response) => {\n try {\n return (await response.json()) as unknown;\n } catch {\n return null;\n }\n};\n\nconst toErrorMessage = (error: unknown) => {\n if (error instanceof Error && error.message) {\n return error.message;\n }\n\n if (typeof error === \"string\" && error.length > 0) {\n return error;\n }\n\n return \"Unknown network error\";\n};\n\nconst readMessageFromPayload = (payload: unknown): string | null => {\n if (\n payload &&\n typeof payload === \"object\" &&\n \"message\" in payload &&\n typeof payload.message === \"string\" &&\n payload.message.length > 0\n ) {\n return payload.message;\n }\n\n return null;\n};\n\nconst toAbsoluteUrl = (url: string): URL | null => {\n try {\n if (typeof window !== \"undefined\" && window.location?.origin) {\n return new URL(url, window.location.origin);\n }\n\n return new URL(url, \"http://fragno.local\");\n } catch {\n return null;\n }\n};\n\nconst validateProxyContentUrl = (url: string): string | null => {\n const parsed = toAbsoluteUrl(url);\n if (!parsed) {\n return `Proxy upload endpoint '${url}' is not a valid URL.`;\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return `Proxy upload endpoint '${url}' must use http:// or https://.`;\n }\n\n if (\n typeof window !== \"undefined\" &&\n window.location?.protocol === \"https:\" &&\n parsed.protocol === \"http:\"\n ) {\n return `Proxy upload endpoint '${url}' uses http:// on a https:// page.`;\n }\n\n return null;\n};\n\nconst buildProxyUploadErrorMessage = (input: {\n endpointUrl: string;\n status?: number;\n streamError?: unknown;\n fallbackError?: unknown;\n}) => {\n const detailLines: string[] = [];\n if (typeof input.status === \"number\") {\n detailLines.push(`response status ${input.status}`);\n }\n if (input.streamError !== undefined) {\n detailLines.push(`streamed upload error: ${toErrorMessage(input.streamError)}`);\n }\n if (input.fallbackError !== undefined) {\n detailLines.push(`buffered upload error: ${toErrorMessage(input.fallbackError)}`);\n }\n\n const details = detailLines.length > 0 ? ` Details: ${detailLines.join(\" | \")}.` : \"\";\n return `${PROXY_UPLOAD_STRATEGY_HINT} Proxy upload to '${input.endpointUrl}' failed.${details} ${PROXY_UPLOAD_RECOVERY_HINT}`;\n};\n\nconst buildDownloadRequestErrorMessage = (input: {\n endpointUrl: string;\n status?: number;\n payload?: unknown;\n requestError?: unknown;\n hint?: string;\n}) => {\n const detailLines: string[] = [];\n if (typeof input.status === \"number\") {\n detailLines.push(`response status ${input.status}`);\n }\n\n const payloadMessage = readMessageFromPayload(input.payload);\n if (payloadMessage) {\n detailLines.push(`message: ${payloadMessage}`);\n }\n\n if (input.requestError !== undefined) {\n detailLines.push(`request error: ${toErrorMessage(input.requestError)}`);\n }\n\n const details = detailLines.length > 0 ? ` Details: ${detailLines.join(\" | \")}.` : \"\";\n const hint = input.hint ? ` ${input.hint}` : \"\";\n return `Download request to '${input.endpointUrl}' failed.${details}${hint}`;\n};\n\nconst sanitizeSignedDownloadUrl = (url: string) => {\n try {\n const parsed = new URL(url);\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n } catch {\n return \"<redacted-signed-url>\";\n }\n};\n\nconst readErrorCodeFromPayload = (payload: unknown): string | null => {\n if (payload && typeof payload === \"object\" && \"code\" in payload) {\n const code = (payload as { code?: unknown }).code;\n if (typeof code === \"string\" && code.length > 0) {\n return code;\n }\n }\n\n return null;\n};\n\nconst hasText = (value: string | undefined | null): value is string =>\n typeof value === \"string\" && value.trim().length > 0;\n\nconst requireUploadEndpoint = (endpoint: string | undefined, label: string) => {\n if (!hasText(endpoint)) {\n throw new Error(`Missing ${label} endpoint for upload`);\n }\n\n return endpoint;\n};\n\nconst buildByKeyQuery = (provider: string, fileKey: string) =>\n new URLSearchParams({ provider, key: fileKey }).toString();\n\nexport const createUploadHelpers = (input: {\n buildUrl: (path: string) => string;\n fetcher: typeof fetch;\n defaultOptions?: RequestInit;\n}): UploadHelpers => {\n const { buildUrl, fetcher, defaultOptions } = input;\n\n const fetchJson = async <T>(\n path: string,\n init: RequestInit,\n expectedErrorCode?: string,\n ): Promise<T> => {\n const response = await fetcher(buildUrl(path), buildRequestInit(defaultOptions, init));\n\n if (!response.ok) {\n const payload = await readJsonSafely(response);\n const code =\n typeof payload === \"object\" && payload ? (payload as { code?: string }).code : undefined;\n if (expectedErrorCode && code === expectedErrorCode) {\n throw new Error(expectedErrorCode);\n }\n const message =\n typeof payload === \"object\" && payload && \"message\" in payload\n ? String((payload as { message?: string }).message)\n : `Request failed (${response.status})`;\n throw new Error(message);\n }\n\n return (await response.json()) as T;\n };\n\n const reportProgress = async (\n progressEndpoint: string,\n progress: UploadProgress,\n onProgress?: (progress: UploadProgress) => void,\n ) => {\n onProgress?.(progress);\n await fetchJson<{ bytesUploaded: number; partsUploaded: number }>(progressEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n bytesUploaded: progress.bytesUploaded,\n partsUploaded: progress.partsUploaded,\n }),\n });\n };\n\n const createUploadAndTransfer: UploadHelpers[\"createUploadAndTransfer\"] = async (\n file,\n options,\n ) => {\n const filename =\n options.filename ??\n (typeof File !== \"undefined\" && file instanceof File && file.name ? file.name : \"upload\");\n const contentType =\n options.contentType ??\n (file.type && file.type.length > 0 ? file.type : undefined) ??\n DEFAULT_CONTENT_TYPE;\n const sizeBytes = file.size;\n\n if (!hasText(options.provider)) {\n throw new Error(\"Provider is required\");\n }\n\n if (!hasText(options.fileKey)) {\n throw new Error(\"File key is required\");\n }\n\n const upload = await fetchJson<UploadCreateResponse>(\"/uploads\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n provider: options.provider,\n fileKey: options.fileKey,\n filename,\n sizeBytes,\n contentType,\n checksum: options.checksum ?? null,\n tags: options.tags,\n visibility: options.visibility,\n uploaderId: options.uploaderId,\n metadata: options.metadata,\n }),\n });\n\n const totalBytes = sizeBytes;\n let bytesUploaded = 0;\n let partsUploaded = 0;\n const progressEndpoint = requireUploadEndpoint(upload.upload.progressEndpoint, \"progress\");\n\n if (upload.strategy === \"direct-single\") {\n if (!upload.upload.uploadUrl) {\n throw new Error(\"Missing upload URL for direct upload\");\n }\n\n const uploadResponse = await fetcher(upload.upload.uploadUrl, {\n method: \"PUT\",\n headers: upload.upload.uploadHeaders,\n body: file,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(`Direct upload failed (${uploadResponse.status})`);\n }\n\n bytesUploaded = totalBytes;\n partsUploaded = 1;\n await reportProgress(\n progressEndpoint,\n {\n bytesUploaded,\n totalBytes,\n partsUploaded,\n totalParts: 1,\n },\n options.onProgress,\n );\n\n const fileMetadata = await fetchJson<FileMetadata>(upload.upload.completeEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({}),\n });\n\n return { upload, file: fileMetadata };\n }\n\n if (upload.strategy === \"direct-multipart\") {\n const partSizeBytes = upload.upload.partSizeBytes;\n if (!partSizeBytes || !upload.upload.partsEndpoint) {\n throw new Error(\"Missing multipart configuration for upload\");\n }\n const partsCompleteEndpoint = requireUploadEndpoint(\n upload.upload.partsCompleteEndpoint,\n \"multipart completion\",\n );\n\n const totalParts = Math.ceil(totalBytes / partSizeBytes);\n if (upload.upload.maxParts && totalParts > upload.upload.maxParts) {\n throw new Error(\"Multipart upload exceeds maximum parts\");\n }\n\n const partNumbers = Array.from({ length: totalParts }, (_, i) => i + 1);\n const partUrls = await fetchJson<{\n parts: {\n partNumber: number;\n url: string;\n headers?: Record<string, string>;\n }[];\n }>(upload.upload.partsEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ partNumbers }),\n });\n\n const parts = partUrls.parts.sort((a, b) => a.partNumber - b.partNumber);\n const completedParts: {\n partNumber: number;\n etag: string;\n sizeBytes: number;\n }[] = [];\n const completionParts: { partNumber: number; etag: string }[] = [];\n\n for (const part of parts) {\n const start = (part.partNumber - 1) * partSizeBytes;\n const end = Math.min(start + partSizeBytes, totalBytes);\n const partBlob = file.slice(start, end);\n\n const response = await fetcher(part.url, {\n method: \"PUT\",\n headers: part.headers,\n body: partBlob,\n });\n\n if (!response.ok) {\n throw new Error(`Multipart upload failed (${response.status})`);\n }\n\n const etag = response.headers.get(\"ETag\") ?? response.headers.get(\"etag\");\n if (!etag) {\n throw new Error(\"Missing ETag for uploaded part\");\n }\n\n const partSize = partBlob.size;\n completedParts.push({\n partNumber: part.partNumber,\n etag,\n sizeBytes: partSize,\n });\n completionParts.push({ partNumber: part.partNumber, etag });\n\n bytesUploaded += partSize;\n partsUploaded += 1;\n await reportProgress(\n progressEndpoint,\n {\n bytesUploaded,\n totalBytes,\n partsUploaded,\n totalParts,\n },\n options.onProgress,\n );\n }\n\n await fetchJson<{ bytesUploaded: number; partsUploaded: number }>(partsCompleteEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ parts: completedParts }),\n });\n\n const fileMetadata = await fetchJson<FileMetadata>(upload.upload.completeEndpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ parts: completionParts }),\n });\n\n return { upload, file: fileMetadata };\n }\n\n if (!upload.upload.contentEndpoint) {\n throw new Error(\"Missing proxy content endpoint for upload\");\n }\n\n const proxyContentUrl = buildUrl(upload.upload.contentEndpoint);\n const proxyUrlValidationError = validateProxyContentUrl(proxyContentUrl);\n if (proxyUrlValidationError) {\n throw new Error(`${proxyUrlValidationError} ${PROXY_UPLOAD_RECOVERY_HINT}`);\n }\n\n const source = file.stream();\n const stream = new ReadableStream<Uint8Array>({\n start(controller) {\n const reader = source.getReader();\n\n const pump = (): void => {\n reader.read().then(\n ({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n\n if (value) {\n bytesUploaded += value.byteLength;\n options.onProgress?.({\n bytesUploaded,\n totalBytes,\n partsUploaded: 0,\n });\n controller.enqueue(value);\n }\n\n pump();\n },\n (error) => {\n controller.error(error);\n },\n );\n };\n\n pump();\n },\n });\n\n const requestInit = buildRequestInit(defaultOptions, {\n method: \"PUT\",\n headers: { \"Content-Type\": DEFAULT_CONTENT_TYPE },\n body: stream,\n }) as RequestInit & { duplex?: \"half\" };\n requestInit.duplex = \"half\";\n\n let proxyResponse: Response;\n try {\n proxyResponse = await fetcher(proxyContentUrl, requestInit);\n } catch (streamError) {\n let fallbackResponse: Response;\n try {\n fallbackResponse = await fetcher(\n proxyContentUrl,\n buildRequestInit(defaultOptions, {\n method: \"PUT\",\n headers: { \"Content-Type\": DEFAULT_CONTENT_TYPE },\n body: file,\n }),\n );\n } catch (fallbackError) {\n throw new Error(\n buildProxyUploadErrorMessage({\n endpointUrl: proxyContentUrl,\n streamError,\n fallbackError,\n }),\n );\n }\n\n if (!fallbackResponse.ok) {\n throw new Error(\n buildProxyUploadErrorMessage({\n endpointUrl: proxyContentUrl,\n status: fallbackResponse.status,\n streamError,\n }),\n );\n }\n\n options.onProgress?.({\n bytesUploaded: totalBytes,\n totalBytes,\n partsUploaded: 0,\n });\n\n const fallbackMetadata = (await fallbackResponse.json()) as FileMetadata;\n return { upload, file: fallbackMetadata };\n }\n\n if (!proxyResponse.ok) {\n throw new Error(\n buildProxyUploadErrorMessage({\n endpointUrl: proxyContentUrl,\n status: proxyResponse.status,\n }),\n );\n }\n\n const proxyMetadata = (await proxyResponse.json()) as FileMetadata;\n\n return { upload, file: proxyMetadata };\n };\n\n const downloadFile: UploadHelpers[\"downloadFile\"] = async (fileKey, options) => {\n if (!hasText(fileKey)) {\n throw new Error(\"File key is required\");\n }\n\n if (!options || !hasText(options.provider)) {\n throw new Error(\"Download provider is required\");\n }\n\n if (!options || (options.method !== \"signed-url\" && options.method !== \"content\")) {\n throw new Error(`Download method is required. ${DOWNLOAD_METHOD_HINT}`);\n }\n\n const byKeyQuery = buildByKeyQuery(options.provider, fileKey);\n\n if (options.method === \"signed-url\") {\n const downloadUrlEndpoint = buildUrl(`/files/by-key/download-url?${byKeyQuery}`);\n\n let downloadUrlResponse: Response;\n try {\n downloadUrlResponse = await fetcher(\n downloadUrlEndpoint,\n buildRequestInit(defaultOptions, { method: \"GET\" }),\n );\n } catch (error) {\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: downloadUrlEndpoint,\n requestError: error,\n }),\n );\n }\n\n if (!downloadUrlResponse.ok) {\n const errorPayload = await readJsonSafely(downloadUrlResponse);\n const errorCode = readErrorCodeFromPayload(errorPayload);\n const hint =\n errorCode === \"SIGNED_URL_UNSUPPORTED\"\n ? \"Requested method 'signed-url' is unsupported by this storage adapter. This is a programming error. Use method 'content' when streaming downloads are available.\"\n : undefined;\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: downloadUrlEndpoint,\n status: downloadUrlResponse.status,\n payload: errorPayload,\n hint,\n }),\n );\n }\n\n const payload = (await downloadUrlResponse.json()) as {\n url: string;\n headers?: Record<string, string>;\n };\n const sanitizedUrl = sanitizeSignedDownloadUrl(payload.url);\n\n let response: Response;\n try {\n response = await fetcher(payload.url, {\n method: \"GET\",\n headers: payload.headers,\n });\n } catch (error) {\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: sanitizedUrl,\n requestError: error,\n }),\n );\n }\n\n if (!response.ok) {\n const payloadError = await readJsonSafely(response);\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: sanitizedUrl,\n status: response.status,\n payload: payloadError,\n }),\n );\n }\n\n return response;\n }\n\n const contentEndpoint = buildUrl(`/files/by-key/content?${byKeyQuery}`);\n let contentResponse: Response;\n try {\n contentResponse = await fetcher(\n contentEndpoint,\n buildRequestInit(defaultOptions, { method: \"GET\" }),\n );\n } catch (error) {\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: contentEndpoint,\n requestError: error,\n }),\n );\n }\n\n if (!contentResponse.ok) {\n const contentError = await readJsonSafely(contentResponse);\n const errorCode = readErrorCodeFromPayload(contentError);\n const hint =\n errorCode === \"SIGNED_URL_UNSUPPORTED\"\n ? \"The 'content' download endpoint is unsupported by this storage adapter. This request used method 'content'. Use method 'signed-url' when signed downloads are available.\"\n : undefined;\n throw new Error(\n buildDownloadRequestErrorMessage({\n endpointUrl: contentEndpoint,\n status: contentResponse.status,\n payload: contentError,\n hint,\n }),\n );\n }\n\n return contentResponse;\n };\n\n return {\n createUploadAndTransfer,\n downloadFile,\n };\n};\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { startTask } from "../../../../../nanostores@1.1.0/node_modules/nanostores/task/index.js";
2
- import { atom } from "../../../../../nanostores@1.1.0/node_modules/nanostores/atom/index.js";
3
- import { onStart, onStop } from "../../../../../nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js";
4
- import { batched } from "../../../../../nanostores@1.1.0/node_modules/nanostores/computed/index.js";
5
- import { map } from "../../../../../nanostores@1.1.0/node_modules/nanostores/map/index.js";
1
+ import { startTask } from "../../../../../nanostores@1.2.0/node_modules/nanostores/task/index.js";
2
+ import { atom } from "../../../../../nanostores@1.2.0/node_modules/nanostores/atom/index.js";
3
+ import { onStart, onStop } from "../../../../../nanostores@1.2.0/node_modules/nanostores/lifecycle/index.js";
4
+ import { batched } from "../../../../../nanostores@1.2.0/node_modules/nanostores/computed/index.js";
5
+ import { map } from "../../../../../nanostores@1.2.0/node_modules/nanostores/map/index.js";
6
6
  import { createNanoEvents } from "../../../../../nanoevents@9.1.0/node_modules/nanoevents/index.js";
7
7
 
8
- //#region ../../node_modules/.pnpm/@nanostores+query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js
8
+ //#region ../../node_modules/.pnpm/@nanostores+query@0.3.4_nanostores@1.2.0/node_modules/@nanostores/query/dist/nanoquery.js
9
9
  function defaultOnErrorRetry({ retryCount }) {
10
10
  return ~~((Math.random() + .5) * (1 << (retryCount < 8 ? retryCount : 8))) * 2e3;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nanoquery.js","names":["map","onStart","onStop","atom","batched","startTask","createNanoEvents","defaultOnErrorRetry","retryCount","Math","random","nanoqueryFactory","isAppVisible","visibilityChangeSubscribe","reconnectChangeSubscribe","nanoquery","cache","Map","fetcher","globalFetcher","globalSettings","events","focus","emit","FOCUS","RECONNECT","_revalidateOnInterval","_errorInvalidateTimeouts","_runningFetches","rewrittenSettings","getCachedValueByKey","key","fromCache","get","cacheHit","expires","getNow","data","error","runFetcher","keyParts","store","settings","set","v","SET_CACHE","setAsLoading","prev","toSet","loading","promise","dedupeTime","cacheLifetime","Infinity","onErrorRetry","now","has","value","cachedValue","cachedError","created","notLoading","finishTask","clearTimeout","res","onError","timer","setTimeout","invalidateKeys","delete","createFetcherStore","keyInput","fetcherSettings","process","env","NODE_ENV","Error","fetcherStore","_","fetcherSymbol","invalidate","revalidate","revalidateKeys","mutate","mutateCache","fetch","resolve","Promise","r","unsub","listen","finally","keysInternalUnsub","prevKey","prevKeyParts","keyUnsub","keyStore","evtUnsubs","firstRun","getKeyStore","subscribe","currentKeys","newKey","currentKeyValue","handleNewListener","revalidateInterval","revalidateOnFocus","revalidateOnReconnect","runRefetcher","setInterval","push","on","cacheKeyChangeHandler","keySelector","testKeyAgainstSelector","INVALIDATE_KEYS","REVALIDATE_KEYS","full","originListen","listener","forEach","fn","clearInterval","iterOverCache","cb","keys","cached","createMutatorStore","mutator","opts","throttleCalls","newMutator","keysToInvalidate","keysToRevalidate","safeKeySet","k","lc","setKey","result","getCacheUpdater","shouldRevalidate","newVal","__unsafeOverruleSettings","console","warn","isSomeKey","$key","keysAsStoresToIndexes","setKeyStoreValue","some","join","i","length","keyOrStore","storesAsArray","$storeKeys","storeValues","partIndex","noop","selector","Array","isArray","includes","Date","getTime","Symbol","name","isServer","window","addEventListener","browserCompat","document","hidden"],"sources":["../../../../../../../../../../../../node_modules/.pnpm/@nanostores+query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js"],"sourcesContent":["import { map, onStart, onStop, atom, batched, startTask } from 'nanostores';\nimport { createNanoEvents } from 'nanoevents';\n\nfunction defaultOnErrorRetry({ retryCount }) {\n return ~~((Math.random() + 0.5) * (1 << (retryCount < 8 ? retryCount : 8))) * 2e3;\n}\nconst nanoqueryFactory = ([\n isAppVisible,\n visibilityChangeSubscribe,\n reconnectChangeSubscribe\n]) => {\n const nanoquery = ({\n cache = /* @__PURE__ */ new Map(),\n fetcher: globalFetcher,\n ...globalSettings\n } = {}) => {\n const events = createNanoEvents();\n let focus = true;\n visibilityChangeSubscribe(() => {\n focus = isAppVisible();\n focus && events.emit(FOCUS);\n });\n reconnectChangeSubscribe(() => events.emit(RECONNECT));\n const _revalidateOnInterval = /* @__PURE__ */ new Map(), _errorInvalidateTimeouts = /* @__PURE__ */ new Map(), _runningFetches = /* @__PURE__ */ new Map();\n let rewrittenSettings = {};\n const getCachedValueByKey = (key) => {\n const fromCache = cache.get(key);\n if (!fromCache)\n return [];\n const cacheHit = (fromCache.expires || 0) > getNow();\n return cacheHit ? [fromCache.data, fromCache.error] : [];\n };\n const runFetcher = async ([key, keyParts], store, settings) => {\n if (!focus)\n return;\n const set = (v) => {\n if (store.key === key) {\n store.set(v);\n events.emit(SET_CACHE, key, v, true);\n }\n };\n const setAsLoading = (prev) => {\n const toSet = prev === void 0 ? {} : { data: prev };\n set({\n ...toSet,\n ...loading,\n promise: _runningFetches.get(key)\n });\n };\n let {\n dedupeTime = 4e3,\n cacheLifetime = Infinity,\n fetcher,\n onErrorRetry = defaultOnErrorRetry\n } = {\n ...settings,\n ...rewrittenSettings\n };\n if (cacheLifetime < dedupeTime)\n cacheLifetime = dedupeTime;\n const now = getNow();\n if (_runningFetches.has(key)) {\n if (!store.value.loading)\n setAsLoading(getCachedValueByKey(key)[0]);\n return;\n }\n let cachedValue, cachedError;\n const fromCache = cache.get(key);\n if (fromCache?.data !== void 0 || fromCache?.error) {\n [cachedValue, cachedError] = getCachedValueByKey(key);\n if ((fromCache.created || 0) + dedupeTime > now) {\n if (store.value.data != cachedValue || store.value.error != cachedError) {\n set({ ...notLoading, data: cachedValue, error: cachedError });\n }\n return;\n }\n }\n const finishTask = startTask();\n try {\n clearTimeout(_errorInvalidateTimeouts.get(key));\n const promise = fetcher(...keyParts);\n _runningFetches.set(key, promise);\n setAsLoading(cachedValue);\n const res = await promise;\n cache.set(key, {\n data: res,\n created: getNow(),\n expires: getNow() + cacheLifetime\n });\n set({ data: res, ...notLoading });\n } catch (error) {\n settings.onError?.(error);\n const retryCount = (cache.get(key)?.retryCount || 0) + 1;\n cache.set(key, {\n error,\n created: getNow(),\n expires: getNow() + cacheLifetime,\n retryCount\n });\n if (onErrorRetry) {\n const timer = onErrorRetry({\n error,\n key,\n retryCount\n });\n if (timer)\n _errorInvalidateTimeouts.set(\n key,\n setTimeout(() => {\n invalidateKeys(key);\n cache.set(key, { retryCount });\n }, timer)\n );\n }\n set({ data: store.value.data, error, ...notLoading });\n } finally {\n finishTask();\n _runningFetches.delete(key);\n }\n };\n const createFetcherStore = (keyInput, {\n fetcher = globalFetcher,\n ...fetcherSettings\n } = {}) => {\n if (process.env.NODE_ENV !== \"production\" && !fetcher) {\n throw new Error(\n \"You need to set up either global fetcher of fetcher in createFetcherStore\"\n );\n }\n const fetcherStore = map({\n ...notLoading\n }), settings = { ...globalSettings, ...fetcherSettings, fetcher };\n fetcherStore._ = fetcherSymbol;\n fetcherStore.invalidate = () => {\n const { key } = fetcherStore;\n if (key) {\n invalidateKeys(key);\n }\n };\n fetcherStore.revalidate = () => {\n const { key } = fetcherStore;\n if (key) {\n revalidateKeys(key);\n }\n };\n fetcherStore.mutate = (data) => {\n const { key } = fetcherStore;\n if (key) {\n mutateCache(key, data);\n }\n };\n fetcherStore.fetch = async () => {\n let resolve;\n const promise = new Promise((r) => resolve = r);\n const unsub = fetcherStore.listen(({ error, data }) => {\n if (error !== void 0)\n resolve({ error });\n if (data !== void 0)\n resolve({ data });\n });\n return promise.finally(unsub);\n };\n let keysInternalUnsub, prevKey, prevKeyParts, keyUnsub, keyStore;\n let evtUnsubs = [];\n onStart(fetcherStore, () => {\n const firstRun = !keysInternalUnsub;\n [keyStore, keysInternalUnsub] = getKeyStore(keyInput);\n keyUnsub = keyStore.subscribe((currentKeys) => {\n if (currentKeys) {\n const [newKey, keyParts] = currentKeys;\n fetcherStore.key = newKey;\n runFetcher([newKey, keyParts], fetcherStore, settings);\n prevKey = newKey;\n prevKeyParts = keyParts;\n } else {\n fetcherStore.key = prevKey = prevKeyParts = void 0;\n fetcherStore.set({ ...notLoading });\n }\n });\n const currentKeyValue = keyStore.get();\n if (currentKeyValue) {\n [prevKey, prevKeyParts] = currentKeyValue;\n if (firstRun)\n handleNewListener();\n }\n const {\n revalidateInterval = 0,\n revalidateOnFocus,\n revalidateOnReconnect\n } = settings;\n const runRefetcher = () => {\n if (prevKey)\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n };\n if (revalidateInterval > 0) {\n _revalidateOnInterval.set(\n keyInput,\n setInterval(runRefetcher, revalidateInterval)\n );\n }\n if (revalidateOnFocus)\n evtUnsubs.push(events.on(FOCUS, runRefetcher));\n if (revalidateOnReconnect)\n evtUnsubs.push(events.on(RECONNECT, runRefetcher));\n const cacheKeyChangeHandler = (keySelector) => {\n if (prevKey && testKeyAgainstSelector(prevKey, keySelector)) {\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n }\n };\n evtUnsubs.push(\n events.on(INVALIDATE_KEYS, cacheKeyChangeHandler),\n events.on(REVALIDATE_KEYS, cacheKeyChangeHandler),\n events.on(SET_CACHE, (keySelector, data, full) => {\n if (prevKey && testKeyAgainstSelector(prevKey, keySelector) && fetcherStore.value !== data && fetcherStore.value.data !== data) {\n fetcherStore.set(\n full ? data : { data, ...notLoading }\n );\n }\n })\n );\n });\n const handleNewListener = () => {\n if (prevKey && prevKeyParts)\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n };\n const originListen = fetcherStore.listen;\n fetcherStore.listen = (listener) => {\n const unsub = originListen(listener);\n listener(fetcherStore.value);\n handleNewListener();\n return unsub;\n };\n onStop(fetcherStore, () => {\n fetcherStore.value = { ...notLoading };\n keysInternalUnsub?.();\n evtUnsubs.forEach((fn) => fn());\n evtUnsubs = [];\n keyUnsub?.();\n clearInterval(_revalidateOnInterval.get(keyInput));\n });\n return fetcherStore;\n };\n const iterOverCache = (keySelector, cb) => {\n for (const key of cache.keys()) {\n if (testKeyAgainstSelector(key, keySelector))\n cb(key);\n }\n };\n const invalidateKeys = (keySelector) => {\n iterOverCache(keySelector, (key) => {\n cache.delete(key);\n });\n events.emit(INVALIDATE_KEYS, keySelector);\n };\n const revalidateKeys = (keySelector) => {\n iterOverCache(keySelector, (key) => {\n const cached = cache.get(key);\n if (cached) {\n cache.set(key, { ...cached, created: -Infinity });\n }\n });\n events.emit(REVALIDATE_KEYS, keySelector);\n };\n const mutateCache = (keySelector, data) => {\n iterOverCache(keySelector, (key) => {\n if (data === void 0)\n cache.delete(key);\n else {\n cache.set(key, {\n data,\n created: getNow(),\n expires: getNow() + (globalSettings.cacheLifetime ?? 8e3)\n });\n }\n });\n events.emit(SET_CACHE, keySelector, data);\n };\n function createMutatorStore(mutator, opts) {\n const { throttleCalls, onError } = opts ?? {\n throttleCalls: true,\n onError: globalSettings?.onError\n };\n const mutate = async (data) => {\n if (throttleCalls && store.value?.loading)\n return;\n const newMutator = rewrittenSettings.fetcher ?? mutator;\n const keysToInvalidate = [], keysToRevalidate = [];\n const safeKeySet = (k, v) => {\n if (store.lc) {\n store.setKey(k, v);\n }\n };\n try {\n store.set({\n error: void 0,\n data: void 0,\n mutate,\n ...loading\n });\n const result = await newMutator({\n data,\n invalidate: (key) => {\n keysToInvalidate.push(key);\n },\n revalidate: (key) => {\n keysToRevalidate.push(key);\n },\n getCacheUpdater: (key, shouldRevalidate = true) => [\n (newVal) => {\n mutateCache(key, newVal);\n if (shouldRevalidate) {\n keysToRevalidate.push(key);\n }\n },\n cache.get(key)?.data\n ]\n });\n safeKeySet(\"data\", result);\n return result;\n } catch (error) {\n onError?.(error);\n safeKeySet(\"error\", error);\n store.setKey(\"error\", error);\n } finally {\n safeKeySet(\"loading\", false);\n keysToInvalidate.forEach(invalidateKeys);\n keysToRevalidate.forEach(revalidateKeys);\n }\n };\n const store = map({\n mutate,\n ...notLoading\n });\n onStop(\n store,\n () => store.set({ mutate, ...notLoading })\n );\n store.mutate = mutate;\n return store;\n }\n const __unsafeOverruleSettings = (data) => {\n if (process.env.NODE_ENV !== \"test\") {\n console.warn(\n `You should only use __unsafeOverruleSettings in test environment`\n );\n }\n rewrittenSettings = data;\n };\n return [\n createFetcherStore,\n createMutatorStore,\n { __unsafeOverruleSettings, invalidateKeys, revalidateKeys, mutateCache }\n ];\n };\n function isSomeKey(key) {\n return typeof key === \"string\" || typeof key === \"number\" || key === true;\n }\n const getKeyStore = (keys) => {\n if (isSomeKey(keys))\n return [\n atom([\"\" + keys, [keys]]),\n () => {\n }\n ];\n const keyParts = [];\n const $key = atom(null);\n const keysAsStoresToIndexes = /* @__PURE__ */ new Map();\n const setKeyStoreValue = () => {\n if (keyParts.some((v) => v === null || v === void 0 || v === false)) {\n $key.set(null);\n } else {\n $key.set([keyParts.join(\"\"), keyParts]);\n }\n };\n for (let i = 0; i < keys.length; i++) {\n const keyOrStore = keys[i];\n if (isSomeKey(keyOrStore)) {\n keyParts.push(keyOrStore);\n } else {\n keyParts.push(null);\n keysAsStoresToIndexes.set(keyOrStore, i);\n }\n }\n const storesAsArray = [...keysAsStoresToIndexes.keys()];\n const $storeKeys = batched(storesAsArray, (...storeValues) => {\n for (let i = 0; i < storeValues.length; i++) {\n const store = storesAsArray[i], partIndex = keysAsStoresToIndexes.get(store);\n keyParts[partIndex] = store._ === fetcherSymbol ? store.value && \"data\" in store.value ? store.key : null : storeValues[i];\n }\n setKeyStoreValue();\n });\n setKeyStoreValue();\n return [$key, $storeKeys.subscribe(noop)];\n };\n function noop() {\n }\n const FOCUS = 1, RECONNECT = 2, INVALIDATE_KEYS = 3, REVALIDATE_KEYS = 4, SET_CACHE = 5;\n const testKeyAgainstSelector = (key, selector) => {\n if (Array.isArray(selector))\n return selector.includes(key);\n else if (typeof selector === \"function\")\n return selector(key);\n else\n return key === selector;\n };\n const getNow = () => (/* @__PURE__ */ new Date()).getTime();\n const fetcherSymbol = Symbol();\n const loading = { loading: true }, notLoading = { loading: false };\n return nanoquery;\n};\n\nconst subscribe = (name, fn) => {\n const isServer = typeof window === \"undefined\";\n if (!isServer) {\n addEventListener(name, fn);\n }\n};\nconst browserCompat = [\n () => !document.hidden,\n (cb) => subscribe(\"visibilitychange\", cb),\n (cb) => subscribe(\"online\", cb)\n];\n\nconst nanoquery = nanoqueryFactory(browserCompat);\n\nexport { nanoquery, defaultOnErrorRetry as onErrorRetry };\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"nanoquery.js","names":["map","onStart","onStop","atom","batched","startTask","createNanoEvents","defaultOnErrorRetry","retryCount","Math","random","nanoqueryFactory","isAppVisible","visibilityChangeSubscribe","reconnectChangeSubscribe","nanoquery","cache","Map","fetcher","globalFetcher","globalSettings","events","focus","emit","FOCUS","RECONNECT","_revalidateOnInterval","_errorInvalidateTimeouts","_runningFetches","rewrittenSettings","getCachedValueByKey","key","fromCache","get","cacheHit","expires","getNow","data","error","runFetcher","keyParts","store","settings","set","v","SET_CACHE","setAsLoading","prev","toSet","loading","promise","dedupeTime","cacheLifetime","Infinity","onErrorRetry","now","has","value","cachedValue","cachedError","created","notLoading","finishTask","clearTimeout","res","onError","timer","setTimeout","invalidateKeys","delete","createFetcherStore","keyInput","fetcherSettings","process","env","NODE_ENV","Error","fetcherStore","_","fetcherSymbol","invalidate","revalidate","revalidateKeys","mutate","mutateCache","fetch","resolve","Promise","r","unsub","listen","finally","keysInternalUnsub","prevKey","prevKeyParts","keyUnsub","keyStore","evtUnsubs","firstRun","getKeyStore","subscribe","currentKeys","newKey","currentKeyValue","handleNewListener","revalidateInterval","revalidateOnFocus","revalidateOnReconnect","runRefetcher","setInterval","push","on","cacheKeyChangeHandler","keySelector","testKeyAgainstSelector","INVALIDATE_KEYS","REVALIDATE_KEYS","full","originListen","listener","forEach","fn","clearInterval","iterOverCache","cb","keys","cached","createMutatorStore","mutator","opts","throttleCalls","newMutator","keysToInvalidate","keysToRevalidate","safeKeySet","k","lc","setKey","result","getCacheUpdater","shouldRevalidate","newVal","__unsafeOverruleSettings","console","warn","isSomeKey","$key","keysAsStoresToIndexes","setKeyStoreValue","some","join","i","length","keyOrStore","storesAsArray","$storeKeys","storeValues","partIndex","noop","selector","Array","isArray","includes","Date","getTime","Symbol","name","isServer","window","addEventListener","browserCompat","document","hidden"],"sources":["../../../../../../../../../../../../node_modules/.pnpm/@nanostores+query@0.3.4_nanostores@1.2.0/node_modules/@nanostores/query/dist/nanoquery.js"],"sourcesContent":["import { map, onStart, onStop, atom, batched, startTask } from 'nanostores';\nimport { createNanoEvents } from 'nanoevents';\n\nfunction defaultOnErrorRetry({ retryCount }) {\n return ~~((Math.random() + 0.5) * (1 << (retryCount < 8 ? retryCount : 8))) * 2e3;\n}\nconst nanoqueryFactory = ([\n isAppVisible,\n visibilityChangeSubscribe,\n reconnectChangeSubscribe\n]) => {\n const nanoquery = ({\n cache = /* @__PURE__ */ new Map(),\n fetcher: globalFetcher,\n ...globalSettings\n } = {}) => {\n const events = createNanoEvents();\n let focus = true;\n visibilityChangeSubscribe(() => {\n focus = isAppVisible();\n focus && events.emit(FOCUS);\n });\n reconnectChangeSubscribe(() => events.emit(RECONNECT));\n const _revalidateOnInterval = /* @__PURE__ */ new Map(), _errorInvalidateTimeouts = /* @__PURE__ */ new Map(), _runningFetches = /* @__PURE__ */ new Map();\n let rewrittenSettings = {};\n const getCachedValueByKey = (key) => {\n const fromCache = cache.get(key);\n if (!fromCache)\n return [];\n const cacheHit = (fromCache.expires || 0) > getNow();\n return cacheHit ? [fromCache.data, fromCache.error] : [];\n };\n const runFetcher = async ([key, keyParts], store, settings) => {\n if (!focus)\n return;\n const set = (v) => {\n if (store.key === key) {\n store.set(v);\n events.emit(SET_CACHE, key, v, true);\n }\n };\n const setAsLoading = (prev) => {\n const toSet = prev === void 0 ? {} : { data: prev };\n set({\n ...toSet,\n ...loading,\n promise: _runningFetches.get(key)\n });\n };\n let {\n dedupeTime = 4e3,\n cacheLifetime = Infinity,\n fetcher,\n onErrorRetry = defaultOnErrorRetry\n } = {\n ...settings,\n ...rewrittenSettings\n };\n if (cacheLifetime < dedupeTime)\n cacheLifetime = dedupeTime;\n const now = getNow();\n if (_runningFetches.has(key)) {\n if (!store.value.loading)\n setAsLoading(getCachedValueByKey(key)[0]);\n return;\n }\n let cachedValue, cachedError;\n const fromCache = cache.get(key);\n if (fromCache?.data !== void 0 || fromCache?.error) {\n [cachedValue, cachedError] = getCachedValueByKey(key);\n if ((fromCache.created || 0) + dedupeTime > now) {\n if (store.value.data != cachedValue || store.value.error != cachedError) {\n set({ ...notLoading, data: cachedValue, error: cachedError });\n }\n return;\n }\n }\n const finishTask = startTask();\n try {\n clearTimeout(_errorInvalidateTimeouts.get(key));\n const promise = fetcher(...keyParts);\n _runningFetches.set(key, promise);\n setAsLoading(cachedValue);\n const res = await promise;\n cache.set(key, {\n data: res,\n created: getNow(),\n expires: getNow() + cacheLifetime\n });\n set({ data: res, ...notLoading });\n } catch (error) {\n settings.onError?.(error);\n const retryCount = (cache.get(key)?.retryCount || 0) + 1;\n cache.set(key, {\n error,\n created: getNow(),\n expires: getNow() + cacheLifetime,\n retryCount\n });\n if (onErrorRetry) {\n const timer = onErrorRetry({\n error,\n key,\n retryCount\n });\n if (timer)\n _errorInvalidateTimeouts.set(\n key,\n setTimeout(() => {\n invalidateKeys(key);\n cache.set(key, { retryCount });\n }, timer)\n );\n }\n set({ data: store.value.data, error, ...notLoading });\n } finally {\n finishTask();\n _runningFetches.delete(key);\n }\n };\n const createFetcherStore = (keyInput, {\n fetcher = globalFetcher,\n ...fetcherSettings\n } = {}) => {\n if (process.env.NODE_ENV !== \"production\" && !fetcher) {\n throw new Error(\n \"You need to set up either global fetcher of fetcher in createFetcherStore\"\n );\n }\n const fetcherStore = map({\n ...notLoading\n }), settings = { ...globalSettings, ...fetcherSettings, fetcher };\n fetcherStore._ = fetcherSymbol;\n fetcherStore.invalidate = () => {\n const { key } = fetcherStore;\n if (key) {\n invalidateKeys(key);\n }\n };\n fetcherStore.revalidate = () => {\n const { key } = fetcherStore;\n if (key) {\n revalidateKeys(key);\n }\n };\n fetcherStore.mutate = (data) => {\n const { key } = fetcherStore;\n if (key) {\n mutateCache(key, data);\n }\n };\n fetcherStore.fetch = async () => {\n let resolve;\n const promise = new Promise((r) => resolve = r);\n const unsub = fetcherStore.listen(({ error, data }) => {\n if (error !== void 0)\n resolve({ error });\n if (data !== void 0)\n resolve({ data });\n });\n return promise.finally(unsub);\n };\n let keysInternalUnsub, prevKey, prevKeyParts, keyUnsub, keyStore;\n let evtUnsubs = [];\n onStart(fetcherStore, () => {\n const firstRun = !keysInternalUnsub;\n [keyStore, keysInternalUnsub] = getKeyStore(keyInput);\n keyUnsub = keyStore.subscribe((currentKeys) => {\n if (currentKeys) {\n const [newKey, keyParts] = currentKeys;\n fetcherStore.key = newKey;\n runFetcher([newKey, keyParts], fetcherStore, settings);\n prevKey = newKey;\n prevKeyParts = keyParts;\n } else {\n fetcherStore.key = prevKey = prevKeyParts = void 0;\n fetcherStore.set({ ...notLoading });\n }\n });\n const currentKeyValue = keyStore.get();\n if (currentKeyValue) {\n [prevKey, prevKeyParts] = currentKeyValue;\n if (firstRun)\n handleNewListener();\n }\n const {\n revalidateInterval = 0,\n revalidateOnFocus,\n revalidateOnReconnect\n } = settings;\n const runRefetcher = () => {\n if (prevKey)\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n };\n if (revalidateInterval > 0) {\n _revalidateOnInterval.set(\n keyInput,\n setInterval(runRefetcher, revalidateInterval)\n );\n }\n if (revalidateOnFocus)\n evtUnsubs.push(events.on(FOCUS, runRefetcher));\n if (revalidateOnReconnect)\n evtUnsubs.push(events.on(RECONNECT, runRefetcher));\n const cacheKeyChangeHandler = (keySelector) => {\n if (prevKey && testKeyAgainstSelector(prevKey, keySelector)) {\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n }\n };\n evtUnsubs.push(\n events.on(INVALIDATE_KEYS, cacheKeyChangeHandler),\n events.on(REVALIDATE_KEYS, cacheKeyChangeHandler),\n events.on(SET_CACHE, (keySelector, data, full) => {\n if (prevKey && testKeyAgainstSelector(prevKey, keySelector) && fetcherStore.value !== data && fetcherStore.value.data !== data) {\n fetcherStore.set(\n full ? data : { data, ...notLoading }\n );\n }\n })\n );\n });\n const handleNewListener = () => {\n if (prevKey && prevKeyParts)\n runFetcher([prevKey, prevKeyParts], fetcherStore, settings);\n };\n const originListen = fetcherStore.listen;\n fetcherStore.listen = (listener) => {\n const unsub = originListen(listener);\n listener(fetcherStore.value);\n handleNewListener();\n return unsub;\n };\n onStop(fetcherStore, () => {\n fetcherStore.value = { ...notLoading };\n keysInternalUnsub?.();\n evtUnsubs.forEach((fn) => fn());\n evtUnsubs = [];\n keyUnsub?.();\n clearInterval(_revalidateOnInterval.get(keyInput));\n });\n return fetcherStore;\n };\n const iterOverCache = (keySelector, cb) => {\n for (const key of cache.keys()) {\n if (testKeyAgainstSelector(key, keySelector))\n cb(key);\n }\n };\n const invalidateKeys = (keySelector) => {\n iterOverCache(keySelector, (key) => {\n cache.delete(key);\n });\n events.emit(INVALIDATE_KEYS, keySelector);\n };\n const revalidateKeys = (keySelector) => {\n iterOverCache(keySelector, (key) => {\n const cached = cache.get(key);\n if (cached) {\n cache.set(key, { ...cached, created: -Infinity });\n }\n });\n events.emit(REVALIDATE_KEYS, keySelector);\n };\n const mutateCache = (keySelector, data) => {\n iterOverCache(keySelector, (key) => {\n if (data === void 0)\n cache.delete(key);\n else {\n cache.set(key, {\n data,\n created: getNow(),\n expires: getNow() + (globalSettings.cacheLifetime ?? 8e3)\n });\n }\n });\n events.emit(SET_CACHE, keySelector, data);\n };\n function createMutatorStore(mutator, opts) {\n const { throttleCalls, onError } = opts ?? {\n throttleCalls: true,\n onError: globalSettings?.onError\n };\n const mutate = async (data) => {\n if (throttleCalls && store.value?.loading)\n return;\n const newMutator = rewrittenSettings.fetcher ?? mutator;\n const keysToInvalidate = [], keysToRevalidate = [];\n const safeKeySet = (k, v) => {\n if (store.lc) {\n store.setKey(k, v);\n }\n };\n try {\n store.set({\n error: void 0,\n data: void 0,\n mutate,\n ...loading\n });\n const result = await newMutator({\n data,\n invalidate: (key) => {\n keysToInvalidate.push(key);\n },\n revalidate: (key) => {\n keysToRevalidate.push(key);\n },\n getCacheUpdater: (key, shouldRevalidate = true) => [\n (newVal) => {\n mutateCache(key, newVal);\n if (shouldRevalidate) {\n keysToRevalidate.push(key);\n }\n },\n cache.get(key)?.data\n ]\n });\n safeKeySet(\"data\", result);\n return result;\n } catch (error) {\n onError?.(error);\n safeKeySet(\"error\", error);\n store.setKey(\"error\", error);\n } finally {\n safeKeySet(\"loading\", false);\n keysToInvalidate.forEach(invalidateKeys);\n keysToRevalidate.forEach(revalidateKeys);\n }\n };\n const store = map({\n mutate,\n ...notLoading\n });\n onStop(\n store,\n () => store.set({ mutate, ...notLoading })\n );\n store.mutate = mutate;\n return store;\n }\n const __unsafeOverruleSettings = (data) => {\n if (process.env.NODE_ENV !== \"test\") {\n console.warn(\n `You should only use __unsafeOverruleSettings in test environment`\n );\n }\n rewrittenSettings = data;\n };\n return [\n createFetcherStore,\n createMutatorStore,\n { __unsafeOverruleSettings, invalidateKeys, revalidateKeys, mutateCache }\n ];\n };\n function isSomeKey(key) {\n return typeof key === \"string\" || typeof key === \"number\" || key === true;\n }\n const getKeyStore = (keys) => {\n if (isSomeKey(keys))\n return [\n atom([\"\" + keys, [keys]]),\n () => {\n }\n ];\n const keyParts = [];\n const $key = atom(null);\n const keysAsStoresToIndexes = /* @__PURE__ */ new Map();\n const setKeyStoreValue = () => {\n if (keyParts.some((v) => v === null || v === void 0 || v === false)) {\n $key.set(null);\n } else {\n $key.set([keyParts.join(\"\"), keyParts]);\n }\n };\n for (let i = 0; i < keys.length; i++) {\n const keyOrStore = keys[i];\n if (isSomeKey(keyOrStore)) {\n keyParts.push(keyOrStore);\n } else {\n keyParts.push(null);\n keysAsStoresToIndexes.set(keyOrStore, i);\n }\n }\n const storesAsArray = [...keysAsStoresToIndexes.keys()];\n const $storeKeys = batched(storesAsArray, (...storeValues) => {\n for (let i = 0; i < storeValues.length; i++) {\n const store = storesAsArray[i], partIndex = keysAsStoresToIndexes.get(store);\n keyParts[partIndex] = store._ === fetcherSymbol ? store.value && \"data\" in store.value ? store.key : null : storeValues[i];\n }\n setKeyStoreValue();\n });\n setKeyStoreValue();\n return [$key, $storeKeys.subscribe(noop)];\n };\n function noop() {\n }\n const FOCUS = 1, RECONNECT = 2, INVALIDATE_KEYS = 3, REVALIDATE_KEYS = 4, SET_CACHE = 5;\n const testKeyAgainstSelector = (key, selector) => {\n if (Array.isArray(selector))\n return selector.includes(key);\n else if (typeof selector === \"function\")\n return selector(key);\n else\n return key === selector;\n };\n const getNow = () => (/* @__PURE__ */ new Date()).getTime();\n const fetcherSymbol = Symbol();\n const loading = { loading: true }, notLoading = { loading: false };\n return nanoquery;\n};\n\nconst subscribe = (name, fn) => {\n const isServer = typeof window === \"undefined\";\n if (!isServer) {\n addEventListener(name, fn);\n }\n};\nconst browserCompat = [\n () => !document.hidden,\n (cb) => subscribe(\"visibilitychange\", cb),\n (cb) => subscribe(\"online\", cb)\n];\n\nconst nanoquery = nanoqueryFactory(browserCompat);\n\nexport { nanoquery, defaultOnErrorRetry as onErrorRetry };\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { createStore, reconcile } from "solid-js/store";
2
1
  import { onCleanup } from "solid-js";
2
+ import { createStore, reconcile } from "solid-js/store";
3
3
 
4
- //#region ../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js
4
+ //#region ../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js
5
5
  function m(e, o = {}) {
6
6
  let t = e.listen(() => {}), [r, s] = createStore({ value: e.get() }), n = e.subscribe((i) => {
7
7
  s("value", reconcile(i, o));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createStore","c","reconcile","u","onCleanup","S","m","e","o","t","listen","r","s","value","get","n","subscribe","i","useStore"],"sources":["../../../../../../../../../../../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js"],"sourcesContent":["import{createStore as c,reconcile as u}from\"solid-js/store\";import{onCleanup as S}from\"solid-js\";function m(e,o={}){let t=e.listen(()=>{}),[r,s]=c({value:e.get()}),n=e.subscribe(i=>{s(\"value\",u(i,o))});return S(()=>n()),t(),()=>r.value}export{m as useStore};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAAiG,SAASM,EAAEC,GAAEC,IAAE,EAAE,EAAC;CAAC,IAAIC,IAAEF,EAAEG,aAAW,GAAG,EAAC,CAACC,GAAEC,KAAGX,YAAE,EAACY,OAAMN,EAAEO,KAAI,EAAE,CAAC,EAACC,IAAER,EAAES,WAAUC,MAAG;AAACL,IAAE,SAAQT,UAAEc,GAAET,EAAE,CAAC;GAAE;AAAC,QAAOH,gBAAMU,GAAG,CAAC,EAACN,GAAG,QAAKE,EAAEE"}
1
+ {"version":3,"file":"index.js","names":["createStore","c","reconcile","u","onCleanup","S","m","e","o","t","listen","r","s","value","get","n","subscribe","i","useStore"],"sources":["../../../../../../../../../../../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js"],"sourcesContent":["import{createStore as c,reconcile as u}from\"solid-js/store\";import{onCleanup as S}from\"solid-js\";function m(e,o={}){let t=e.listen(()=>{}),[r,s]=c({value:e.get()}),n=e.subscribe(i=>{s(\"value\",u(i,o))});return S(()=>n()),t(),()=>r.value}export{m as useStore};\n"],"x_google_ignoreList":[0],"mappings":";;;;AAAiG,SAASM,EAAEC,GAAEC,IAAE,EAAE,EAAC;CAAC,IAAIC,IAAEF,EAAEG,aAAW,GAAG,EAAC,CAACC,GAAEC,KAAGX,YAAE,EAACY,OAAMN,EAAEO,KAAI,EAAE,CAAC,EAACC,IAAER,EAAES,WAAUC,MAAG;AAACL,IAAE,SAAQT,UAAEc,GAAET,EAAE,CAAC;GAAE;AAAC,QAAOH,gBAAMU,GAAG,CAAC,EAACN,GAAG,QAAKE,EAAEE"}
@@ -1,6 +1,6 @@
1
1
  import { clean } from "../clean-stores/index.js";
2
2
 
3
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js
3
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/atom/index.js
4
4
  let listenerQueue = [];
5
5
  let lqIndex = 0;
6
6
  const QUEUE_ITEMS_PER_LISTENER = 4;
@@ -12,6 +12,7 @@ const atom = /* @__NO_SIDE_EFFECTS__ */ (initialValue) => {
12
12
  if (!$atom.lc) $atom.listen(() => {})();
13
13
  return $atom.value;
14
14
  },
15
+ init: initialValue,
15
16
  lc: 0,
16
17
  listen(listener) {
17
18
  $atom.lc = listeners.push(listener);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["clean","listenerQueue","lqIndex","QUEUE_ITEMS_PER_LISTENER","epoch","atom","initialValue","listeners","$atom","get","lc","listen","value","init","listener","push","i","length","splice","index","indexOf","off","notify","oldValue","changedKey","runListenerQueue","set","newValue","subscribe","unbind","process","env","NODE_ENV","readonlyType","store"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/atom/index.js"],"sourcesContent":["import { clean } from '../clean-stores/index.js'\n\nlet listenerQueue = []\nlet lqIndex = 0\nconst QUEUE_ITEMS_PER_LISTENER = 4\nexport let epoch = 0\n\n/* @__NO_SIDE_EFFECTS__ */\nexport const atom = initialValue => {\n let listeners = []\n let $atom = {\n get() {\n if (!$atom.lc) {\n $atom.listen(() => {})()\n }\n return $atom.value\n },\n init: initialValue,\n lc: 0,\n listen(listener) {\n $atom.lc = listeners.push(listener)\n\n return () => {\n for (\n let i = lqIndex + QUEUE_ITEMS_PER_LISTENER;\n i < listenerQueue.length;\n\n ) {\n if (listenerQueue[i] === listener) {\n listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER)\n } else {\n i += QUEUE_ITEMS_PER_LISTENER\n }\n }\n\n let index = listeners.indexOf(listener)\n if (~index) {\n listeners.splice(index, 1)\n if (!--$atom.lc) $atom.off()\n }\n }\n },\n notify(oldValue, changedKey) {\n epoch++\n let runListenerQueue = !listenerQueue.length\n for (let listener of listeners) {\n listenerQueue.push(listener, $atom.value, oldValue, changedKey)\n }\n\n if (runListenerQueue) {\n for (\n lqIndex = 0;\n lqIndex < listenerQueue.length;\n lqIndex += QUEUE_ITEMS_PER_LISTENER\n ) {\n listenerQueue[lqIndex](\n listenerQueue[lqIndex + 1],\n listenerQueue[lqIndex + 2],\n listenerQueue[lqIndex + 3]\n )\n }\n listenerQueue.length = 0\n }\n },\n /* It will be called on last listener unsubscribing.\n We will redefine it in onMount and onStop. */\n off() {},\n set(newValue) {\n let oldValue = $atom.value\n if (oldValue !== newValue) {\n $atom.value = newValue\n $atom.notify(oldValue)\n }\n },\n subscribe(listener) {\n let unbind = $atom.listen(listener)\n listener($atom.value)\n return unbind\n },\n value: initialValue\n }\n\n if (process.env.NODE_ENV !== 'production') {\n $atom[clean] = () => {\n listeners = []\n $atom.lc = 0\n $atom.off()\n }\n }\n\n return $atom\n}\n\nexport const readonlyType = store => store\n"],"x_google_ignoreList":[0],"mappings":";;;AAEA,IAAIC,gBAAgB,EAAE;AACtB,IAAIC,UAAU;AACd,MAAMC,2BAA2B;AACjC,IAAWC,QAAQ;AAGnB,MAAaC,mCAAOC,iBAAgB;CAClC,IAAIC,YAAY,EAAE;CAClB,IAAIC,QAAQ;EACVC,MAAM;AACJ,OAAI,CAACD,MAAME,GACTF,OAAMG,aAAa,GAAG,EAAE;AAE1B,UAAOH,MAAMI;;EAEfC,MAAMP;EACNI,IAAI;EACJC,OAAOG,UAAU;AACfN,SAAME,KAAKH,UAAUQ,KAAKD,SAAS;AAEnC,gBAAa;AACX,SACE,IAAIE,IAAId,UAAUC,0BAClBa,IAAIf,cAAcgB,QAGlB,KAAIhB,cAAce,OAAOF,SACvBb,eAAciB,OAAOF,GAAGb,yBAAyB;QAEjDa,MAAKb;IAIT,IAAIgB,QAAQZ,UAAUa,QAAQN,SAAS;AACvC,QAAI,CAACK,OAAO;AACVZ,eAAUW,OAAOC,OAAO,EAAE;AAC1B,SAAI,CAAC,EAAEX,MAAME,GAAIF,OAAMa,KAAK;;;;EAIlCC,OAAOC,UAAUC,YAAY;AAC3BpB;GACA,IAAIqB,mBAAmB,CAACxB,cAAcgB;AACtC,QAAK,IAAIH,YAAYP,UACnBN,eAAcc,KAAKD,UAAUN,MAAMI,OAAOW,UAAUC,WAAW;AAGjE,OAAIC,kBAAkB;AACpB,SACEvB,UAAU,GACVA,UAAUD,cAAcgB,QACxBf,WAAWC,yBAEXF,eAAcC,SACZD,cAAcC,UAAU,IACxBD,cAAcC,UAAU,IACxBD,cAAcC,UAAU,GACzB;AAEHD,kBAAcgB,SAAS;;;EAK3BI,MAAM;EACNK,IAAIC,UAAU;GACZ,IAAIJ,WAAWf,MAAMI;AACrB,OAAIW,aAAaI,UAAU;AACzBnB,UAAMI,QAAQe;AACdnB,UAAMc,OAAOC,SAAS;;;EAG1BK,UAAUd,UAAU;GAClB,IAAIe,SAASrB,MAAMG,OAAOG,SAAS;AACnCA,YAASN,MAAMI,MAAM;AACrB,UAAOiB;;EAETjB,OAAON;EACR;AAGCE,OAAMR,eAAe;AACnBO,cAAY,EAAE;AACdC,QAAME,KAAK;AACXF,QAAMa,KAAK;;AAIf,QAAOb"}
@@ -0,0 +1,6 @@
1
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/clean-stores/index.js
2
+ let clean = Symbol("clean");
3
+
4
+ //#endregion
5
+ export { clean };
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["cleanTasks","clean","Symbol","cleanStores","stores","process","env","NODE_ENV","Error","$store","mocked"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js"],"sourcesContent":["import { cleanTasks } from '../task/index.js'\n\nexport let clean = Symbol('clean')\n\nexport let cleanStores = (...stores) => {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n 'cleanStores() can be used only during development or tests'\n )\n }\n cleanTasks()\n for (let $store of stores) {\n if ($store) {\n if ($store.mocked) delete $store.mocked\n if ($store[clean]) $store[clean]()\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":";AAEA,IAAWC,QAAQC,OAAO,QAAQ"}
1
+ {"version":3,"file":"index.js","names":["cleanTasks","clean","Symbol","cleanStores","stores","process","env","NODE_ENV","Error","$store","mocked"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/clean-stores/index.js"],"sourcesContent":["import { cleanTasks } from '../task/index.js'\n\nexport let clean = Symbol('clean')\n\nexport let cleanStores = (...stores) => {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n 'cleanStores() can be used only during development or tests'\n )\n }\n cleanTasks()\n for (let $store of stores) {\n if ($store) {\n if ($store.mocked) delete $store.mocked\n if ($store[clean]) $store[clean]()\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":";AAEA,IAAWC,QAAQC,OAAO,QAAQ"}
@@ -1,7 +1,8 @@
1
1
  import { atom, epoch } from "../atom/index.js";
2
2
  import { onMount } from "../lifecycle/index.js";
3
+ import { warn } from "../warn/index.js";
3
4
 
4
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js
5
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/computed/index.js
5
6
  let computedStore = (stores, cb, batched$1) => {
6
7
  if (!Array.isArray(stores)) stores = [stores];
7
8
  let previousArgs;
@@ -13,10 +14,12 @@ let computedStore = (stores, cb, batched$1) => {
13
14
  if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {
14
15
  previousArgs = args;
15
16
  let value = cb(...args);
16
- if (value && value.then && value.t) value.then((asyncValue) => {
17
- if (previousArgs === args) $computed.set(asyncValue);
18
- });
19
- else {
17
+ if (value && value.then && value.t) {
18
+ warn("Use @nanostores/async for async computed. We will remove Promise support in computed() in Nano Stores 2.0");
19
+ value.then((asyncValue) => {
20
+ if (previousArgs === args) $computed.set(asyncValue);
21
+ });
22
+ } else {
20
23
  $computed.set(value);
21
24
  currentEpoch = epoch;
22
25
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["atom","epoch","onMount","warn","computedStore","stores","cb","batched","Array","isArray","previousArgs","currentEpoch","set","args","map","$store","get","some","arg","i","value","then","t","process","env","NODE_ENV","asyncValue","$computed","undefined","timer","run","clearTimeout","setTimeout","unbinds","listen","unbind","computed","fn"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/computed/index.js"],"sourcesContent":["import { atom, epoch } from '../atom/index.js'\nimport { onMount } from '../lifecycle/index.js'\nimport { warn } from '../warn/index.js'\n\nlet computedStore = (stores, cb, batched) => {\n if (!Array.isArray(stores)) stores = [stores]\n\n let previousArgs\n let currentEpoch\n let set = () => {\n if (currentEpoch === epoch) return\n currentEpoch = epoch\n let args = stores.map($store => $store.get())\n if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {\n previousArgs = args\n let value = cb(...args)\n if (value && value.then && value.t) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n 'Use @nanostores/async for async computed. We will remove Promise support in computed() in Nano Stores 2.0'\n )\n }\n value.then(asyncValue => {\n if (previousArgs === args) {\n // Prevent a stale set\n $computed.set(asyncValue)\n }\n })\n } else {\n $computed.set(value)\n currentEpoch = epoch\n }\n }\n }\n let $computed = atom(undefined)\n let get = $computed.get\n $computed.get = () => {\n set()\n return get()\n }\n\n let timer\n let run = batched\n ? () => {\n clearTimeout(timer)\n timer = setTimeout(set)\n }\n : set\n\n onMount($computed, () => {\n let unbinds = stores.map($store => $store.listen(run))\n set()\n return () => {\n for (let unbind of unbinds) unbind()\n }\n })\n\n return $computed\n}\n\n/* @__NO_SIDE_EFFECTS__ */\nexport const computed = (stores, fn) => computedStore(stores, fn)\n\n/* @__NO_SIDE_EFFECTS__ */\nexport const batched = (stores, fn) => computedStore(stores, fn, true)\n"],"x_google_ignoreList":[0],"mappings":";;;;;AAIA,IAAII,iBAAiBC,QAAQC,IAAIC,cAAY;AAC3C,KAAI,CAACC,MAAMC,QAAQJ,OAAO,CAAEA,UAAS,CAACA,OAAO;CAE7C,IAAIK;CACJ,IAAIC;CACJ,IAAIC,YAAY;AACd,MAAID,iBAAiBV,MAAO;AAC5BU,iBAAeV;EACf,IAAIY,OAAOR,OAAOS,KAAIC,WAAUA,OAAOC,KAAK,CAAC;AAC7C,MAAI,CAACN,gBAAgBG,KAAKI,MAAMC,KAAKC,MAAMD,QAAQR,aAAaS,GAAG,EAAE;AACnET,kBAAeG;GACf,IAAIO,QAAQd,GAAG,GAAGO,KAAK;AACvB,OAAIO,SAASA,MAAMC,QAAQD,MAAME,GAAG;AAEhCnB,SACE,4GACD;AAEHiB,UAAMC,MAAKK,eAAc;AACvB,SAAIhB,iBAAiBG,KAEnBc,WAAUf,IAAIc,WAAW;MAE3B;UACG;AACLC,cAAUf,IAAIQ,MAAM;AACpBT,mBAAeV;;;;CAIrB,IAAI0B,YAAY3B,qBAAK4B,OAAU;CAC/B,IAAIZ,MAAMW,UAAUX;AACpBW,WAAUX,YAAY;AACpBJ,OAAK;AACL,SAAOI,KAAK;;CAGd,IAAIa;CACJ,IAAIC,MAAMvB,kBACA;AACJwB,eAAaF,MAAM;AACnBA,UAAQG,WAAWpB,IAAI;KAEzBA;AAEJV,SAAQyB,iBAAiB;EACvB,IAAIM,UAAU5B,OAAOS,KAAIC,WAAUA,OAAOmB,OAAOJ,IAAI,CAAC;AACtDlB,OAAK;AACL,eAAa;AACX,QAAK,IAAIuB,UAAUF,QAASE,SAAQ;;GAEtC;AAEF,QAAOR;;AAIT,MAAaS,uCAAY/B,QAAQgC,OAAOjC,cAAcC,QAAQgC,GAAG;AAGjE,MAAa9B,sCAAWF,QAAQgC,OAAOjC,cAAcC,QAAQgC,IAAI,KAAK"}
@@ -1,6 +1,6 @@
1
1
  import { clean } from "../clean-stores/index.js";
2
2
 
3
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js
3
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/lifecycle/index.js
4
4
  const START = 0;
5
5
  const STOP = 1;
6
6
  const MOUNT = 5;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["clean","START","STOP","SET","NOTIFY","MOUNT","UNMOUNT","REVERT_MUTATION","on","object","listener","eventKey","mutateStore","events","eventProps","reduceRight","event","l","shared","push","currentListeners","index","indexOf","splice","length","onStart","$store","runListeners","originListen","listen","arg","lc","starting","onStop","originOff","off","onSet","originSet","set","originSetKey","setKey","changed","changedValue","isAborted","abort","newValue","value","onNotify","originNotify","notify","oldValue","STORE_UNMOUNT_DELAY","onMount","initialize","payload","destroy","args","active","setTimeout","process","env","NODE_ENV","originClean"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js"],"sourcesContent":["import { clean } from '../clean-stores/index.js'\n\nconst START = 0\nconst STOP = 1\nconst SET = 2\nconst NOTIFY = 3\nconst MOUNT = 5\nconst UNMOUNT = 6\nconst REVERT_MUTATION = 10\n\nexport let on = (object, listener, eventKey, mutateStore) => {\n object.events = object.events || {}\n if (!object.events[eventKey + REVERT_MUTATION]) {\n object.events[eventKey + REVERT_MUTATION] = mutateStore(eventProps => {\n // eslint-disable-next-line no-sequences\n object.events[eventKey].reduceRight((event, l) => (l(event), event), {\n shared: {},\n ...eventProps\n })\n })\n }\n object.events[eventKey] = object.events[eventKey] || []\n object.events[eventKey].push(listener)\n return () => {\n let currentListeners = object.events[eventKey]\n let index = currentListeners.indexOf(listener)\n currentListeners.splice(index, 1)\n if (!currentListeners.length) {\n delete object.events[eventKey]\n object.events[eventKey + REVERT_MUTATION]()\n delete object.events[eventKey + REVERT_MUTATION]\n }\n }\n}\n\nexport let onStart = ($store, listener) =>\n on($store, listener, START, runListeners => {\n let originListen = $store.listen\n $store.listen = arg => {\n if (!$store.lc && !$store.starting) {\n $store.starting = true\n runListeners()\n delete $store.starting\n }\n return originListen(arg)\n }\n return () => {\n $store.listen = originListen\n }\n })\n\nexport let onStop = ($store, listener) =>\n on($store, listener, STOP, runListeners => {\n let originOff = $store.off\n $store.off = () => {\n runListeners()\n originOff()\n }\n return () => {\n $store.off = originOff\n }\n })\n\nexport let onSet = ($store, listener) =>\n on($store, listener, SET, runListeners => {\n let originSet = $store.set\n let originSetKey = $store.setKey\n if ($store.setKey) {\n $store.setKey = (changed, changedValue) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({\n abort,\n changed,\n newValue: { ...$store.value, [changed]: changedValue }\n })\n if (!isAborted) return originSetKey(changed, changedValue)\n }\n }\n $store.set = newValue => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, newValue })\n if (!isAborted) return originSet(newValue)\n }\n return () => {\n $store.set = originSet\n $store.setKey = originSetKey\n }\n })\n\nexport let onNotify = ($store, listener) =>\n on($store, listener, NOTIFY, runListeners => {\n let originNotify = $store.notify\n $store.notify = (oldValue, changed) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, changed, oldValue })\n if (!isAborted) return originNotify(oldValue, changed)\n }\n return () => {\n $store.notify = originNotify\n }\n })\n\nexport let STORE_UNMOUNT_DELAY = 1000\n\nexport let onMount = ($store, initialize) => {\n let listener = payload => {\n let destroy = initialize(payload)\n if (destroy) $store.events[UNMOUNT].push(destroy)\n }\n return on($store, listener, MOUNT, runListeners => {\n let originListen = $store.listen\n $store.listen = (...args) => {\n if (!$store.lc && !$store.active) {\n $store.active = true\n runListeners()\n }\n return originListen(...args)\n }\n\n let originOff = $store.off\n $store.events[UNMOUNT] = []\n $store.off = () => {\n originOff()\n setTimeout(() => {\n if ($store.active && !$store.lc) {\n $store.active = false\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n }\n }, STORE_UNMOUNT_DELAY)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n let originClean = $store[clean]\n $store[clean] = () => {\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n $store.active = false\n originClean()\n }\n }\n\n return () => {\n $store.listen = originListen\n $store.off = originOff\n }\n })\n}\n"],"x_google_ignoreList":[0],"mappings":";;;AAEA,MAAMC,QAAQ;AACd,MAAMC,OAAO;AAGb,MAAMG,QAAQ;AACd,MAAMC,UAAU;AAChB,MAAMC,kBAAkB;AAExB,IAAWC,MAAMC,QAAQC,UAAUC,UAAUC,gBAAgB;AAC3DH,QAAOI,SAASJ,OAAOI,UAAU,EAAE;AACnC,KAAI,CAACJ,OAAOI,OAAOF,WAAWJ,iBAC5BE,QAAOI,OAAOF,WAAWJ,mBAAmBK,aAAYE,eAAc;AAEpEL,SAAOI,OAAOF,UAAUI,aAAaC,OAAOC,OAAOA,EAAED,MAAM,EAAEA,QAAQ;GACnEE,QAAQ,EAAE;GACV,GAAGJ;GACJ,CAAC;GACF;AAEJL,QAAOI,OAAOF,YAAYF,OAAOI,OAAOF,aAAa,EAAE;AACvDF,QAAOI,OAAOF,UAAUQ,KAAKT,SAAS;AACtC,cAAa;EACX,IAAIU,mBAAmBX,OAAOI,OAAOF;EACrC,IAAIU,QAAQD,iBAAiBE,QAAQZ,SAAS;AAC9CU,mBAAiBG,OAAOF,OAAO,EAAE;AACjC,MAAI,CAACD,iBAAiBI,QAAQ;AAC5B,UAAOf,OAAOI,OAAOF;AACrBF,UAAOI,OAAOF,WAAWJ,kBAAkB;AAC3C,UAAOE,OAAOI,OAAOF,WAAWJ;;;;AAKtC,IAAWkB,WAAWC,QAAQhB,aAC5BF,GAAGkB,QAAQhB,UAAUT,QAAO0B,iBAAgB;CAC1C,IAAIC,eAAeF,OAAOG;AAC1BH,QAAOG,UAASC,QAAO;AACrB,MAAI,CAACJ,OAAOK,MAAM,CAACL,OAAOM,UAAU;AAClCN,UAAOM,WAAW;AAClBL,iBAAc;AACd,UAAOD,OAAOM;;AAEhB,SAAOJ,aAAaE,IAAI;;AAE1B,cAAa;AACXJ,SAAOG,SAASD;;EAElB;AAEJ,IAAWK,UAAUP,QAAQhB,aAC3BF,GAAGkB,QAAQhB,UAAUR,OAAMyB,iBAAgB;CACzC,IAAIO,YAAYR,OAAOS;AACvBT,QAAOS,YAAY;AACjBR,gBAAc;AACdO,aAAW;;AAEb,cAAa;AACXR,SAAOS,MAAMD;;EAEf;AAqDJ,IAAWiB,sBAAsB;AAEjC,IAAWC,WAAW1B,QAAQ2B,eAAe;CAC3C,IAAI3C,YAAW4C,YAAW;EACxB,IAAIC,UAAUF,WAAWC,QAAQ;AACjC,MAAIC,QAAS7B,QAAOb,OAAOP,SAASa,KAAKoC,QAAQ;;AAEnD,QAAO/C,GAAGkB,QAAQhB,UAAUL,QAAOsB,iBAAgB;EACjD,IAAIC,eAAeF,OAAOG;AAC1BH,SAAOG,UAAU,GAAG2B,SAAS;AAC3B,OAAI,CAAC9B,OAAOK,MAAM,CAACL,OAAO+B,QAAQ;AAChC/B,WAAO+B,SAAS;AAChB9B,kBAAc;;AAEhB,UAAOC,aAAa,GAAG4B,KAAK;;EAG9B,IAAItB,YAAYR,OAAOS;AACvBT,SAAOb,OAAOP,WAAW,EAAE;AAC3BoB,SAAOS,YAAY;AACjBD,cAAW;AACXwB,oBAAiB;AACf,QAAIhC,OAAO+B,UAAU,CAAC/B,OAAOK,IAAI;AAC/BL,YAAO+B,SAAS;AAChB,UAAK,IAAIF,WAAW7B,OAAOb,OAAOP,SAAUiD,UAAS;AACrD7B,YAAOb,OAAOP,WAAW,EAAE;;MAE5B6C,oBAAoB;;EAGkB;GACzC,IAAIW,cAAcpC,OAAO1B;AACzB0B,UAAO1B,eAAe;AACpB,SAAK,IAAIuD,WAAW7B,OAAOb,OAAOP,SAAUiD,UAAS;AACrD7B,WAAOb,OAAOP,WAAW,EAAE;AAC3BoB,WAAO+B,SAAS;AAChBK,iBAAa;;;AAIjB,eAAa;AACXpC,UAAOG,SAASD;AAChBF,UAAOS,MAAMD;;GAEf"}
1
+ {"version":3,"file":"index.js","names":["clean","START","STOP","SET","NOTIFY","MOUNT","UNMOUNT","REVERT_MUTATION","on","object","listener","eventKey","mutateStore","events","eventProps","reduceRight","event","l","shared","push","currentListeners","index","indexOf","splice","length","onStart","$store","runListeners","originListen","listen","arg","lc","starting","onStop","originOff","off","onSet","originSet","set","originSetKey","setKey","changed","changedValue","isAborted","abort","newValue","value","onNotify","originNotify","notify","oldValue","STORE_UNMOUNT_DELAY","onMount","initialize","payload","destroy","args","active","setTimeout","process","env","NODE_ENV","originClean"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/lifecycle/index.js"],"sourcesContent":["import { clean } from '../clean-stores/index.js'\n\nconst START = 0\nconst STOP = 1\nconst SET = 2\nconst NOTIFY = 3\nconst MOUNT = 5\nconst UNMOUNT = 6\nconst REVERT_MUTATION = 10\n\nexport let on = (object, listener, eventKey, mutateStore) => {\n object.events = object.events || {}\n if (!object.events[eventKey + REVERT_MUTATION]) {\n object.events[eventKey + REVERT_MUTATION] = mutateStore(eventProps => {\n // eslint-disable-next-line no-sequences\n object.events[eventKey].reduceRight((event, l) => (l(event), event), {\n shared: {},\n ...eventProps\n })\n })\n }\n object.events[eventKey] = object.events[eventKey] || []\n object.events[eventKey].push(listener)\n return () => {\n let currentListeners = object.events[eventKey]\n let index = currentListeners.indexOf(listener)\n currentListeners.splice(index, 1)\n if (!currentListeners.length) {\n delete object.events[eventKey]\n object.events[eventKey + REVERT_MUTATION]()\n delete object.events[eventKey + REVERT_MUTATION]\n }\n }\n}\n\nexport let onStart = ($store, listener) =>\n on($store, listener, START, runListeners => {\n let originListen = $store.listen\n $store.listen = arg => {\n if (!$store.lc && !$store.starting) {\n $store.starting = true\n runListeners()\n delete $store.starting\n }\n return originListen(arg)\n }\n return () => {\n $store.listen = originListen\n }\n })\n\nexport let onStop = ($store, listener) =>\n on($store, listener, STOP, runListeners => {\n let originOff = $store.off\n $store.off = () => {\n runListeners()\n originOff()\n }\n return () => {\n $store.off = originOff\n }\n })\n\nexport let onSet = ($store, listener) =>\n on($store, listener, SET, runListeners => {\n let originSet = $store.set\n let originSetKey = $store.setKey\n if ($store.setKey) {\n $store.setKey = (changed, changedValue) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({\n abort,\n changed,\n newValue: { ...$store.value, [changed]: changedValue }\n })\n if (!isAborted) return originSetKey(changed, changedValue)\n }\n }\n $store.set = newValue => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, newValue })\n if (!isAborted) return originSet(newValue)\n }\n return () => {\n $store.set = originSet\n $store.setKey = originSetKey\n }\n })\n\nexport let onNotify = ($store, listener) =>\n on($store, listener, NOTIFY, runListeners => {\n let originNotify = $store.notify\n $store.notify = (oldValue, changed) => {\n let isAborted\n let abort = () => {\n isAborted = true\n }\n\n runListeners({ abort, changed, oldValue })\n if (!isAborted) return originNotify(oldValue, changed)\n }\n return () => {\n $store.notify = originNotify\n }\n })\n\nexport let STORE_UNMOUNT_DELAY = 1000\n\nexport let onMount = ($store, initialize) => {\n let listener = payload => {\n let destroy = initialize(payload)\n if (destroy) $store.events[UNMOUNT].push(destroy)\n }\n return on($store, listener, MOUNT, runListeners => {\n let originListen = $store.listen\n $store.listen = (...args) => {\n if (!$store.lc && !$store.active) {\n $store.active = true\n runListeners()\n }\n return originListen(...args)\n }\n\n let originOff = $store.off\n $store.events[UNMOUNT] = []\n $store.off = () => {\n originOff()\n setTimeout(() => {\n if ($store.active && !$store.lc) {\n $store.active = false\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n }\n }, STORE_UNMOUNT_DELAY)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n let originClean = $store[clean]\n $store[clean] = () => {\n for (let destroy of $store.events[UNMOUNT]) destroy()\n $store.events[UNMOUNT] = []\n $store.active = false\n originClean()\n }\n }\n\n return () => {\n $store.listen = originListen\n $store.off = originOff\n }\n })\n}\n"],"x_google_ignoreList":[0],"mappings":";;;AAEA,MAAMC,QAAQ;AACd,MAAMC,OAAO;AAGb,MAAMG,QAAQ;AACd,MAAMC,UAAU;AAChB,MAAMC,kBAAkB;AAExB,IAAWC,MAAMC,QAAQC,UAAUC,UAAUC,gBAAgB;AAC3DH,QAAOI,SAASJ,OAAOI,UAAU,EAAE;AACnC,KAAI,CAACJ,OAAOI,OAAOF,WAAWJ,iBAC5BE,QAAOI,OAAOF,WAAWJ,mBAAmBK,aAAYE,eAAc;AAEpEL,SAAOI,OAAOF,UAAUI,aAAaC,OAAOC,OAAOA,EAAED,MAAM,EAAEA,QAAQ;GACnEE,QAAQ,EAAE;GACV,GAAGJ;GACJ,CAAC;GACF;AAEJL,QAAOI,OAAOF,YAAYF,OAAOI,OAAOF,aAAa,EAAE;AACvDF,QAAOI,OAAOF,UAAUQ,KAAKT,SAAS;AACtC,cAAa;EACX,IAAIU,mBAAmBX,OAAOI,OAAOF;EACrC,IAAIU,QAAQD,iBAAiBE,QAAQZ,SAAS;AAC9CU,mBAAiBG,OAAOF,OAAO,EAAE;AACjC,MAAI,CAACD,iBAAiBI,QAAQ;AAC5B,UAAOf,OAAOI,OAAOF;AACrBF,UAAOI,OAAOF,WAAWJ,kBAAkB;AAC3C,UAAOE,OAAOI,OAAOF,WAAWJ;;;;AAKtC,IAAWkB,WAAWC,QAAQhB,aAC5BF,GAAGkB,QAAQhB,UAAUT,QAAO0B,iBAAgB;CAC1C,IAAIC,eAAeF,OAAOG;AAC1BH,QAAOG,UAASC,QAAO;AACrB,MAAI,CAACJ,OAAOK,MAAM,CAACL,OAAOM,UAAU;AAClCN,UAAOM,WAAW;AAClBL,iBAAc;AACd,UAAOD,OAAOM;;AAEhB,SAAOJ,aAAaE,IAAI;;AAE1B,cAAa;AACXJ,SAAOG,SAASD;;EAElB;AAEJ,IAAWK,UAAUP,QAAQhB,aAC3BF,GAAGkB,QAAQhB,UAAUR,OAAMyB,iBAAgB;CACzC,IAAIO,YAAYR,OAAOS;AACvBT,QAAOS,YAAY;AACjBR,gBAAc;AACdO,aAAW;;AAEb,cAAa;AACXR,SAAOS,MAAMD;;EAEf;AAqDJ,IAAWiB,sBAAsB;AAEjC,IAAWC,WAAW1B,QAAQ2B,eAAe;CAC3C,IAAI3C,YAAW4C,YAAW;EACxB,IAAIC,UAAUF,WAAWC,QAAQ;AACjC,MAAIC,QAAS7B,QAAOb,OAAOP,SAASa,KAAKoC,QAAQ;;AAEnD,QAAO/C,GAAGkB,QAAQhB,UAAUL,QAAOsB,iBAAgB;EACjD,IAAIC,eAAeF,OAAOG;AAC1BH,SAAOG,UAAU,GAAG2B,SAAS;AAC3B,OAAI,CAAC9B,OAAOK,MAAM,CAACL,OAAO+B,QAAQ;AAChC/B,WAAO+B,SAAS;AAChB9B,kBAAc;;AAEhB,UAAOC,aAAa,GAAG4B,KAAK;;EAG9B,IAAItB,YAAYR,OAAOS;AACvBT,SAAOb,OAAOP,WAAW,EAAE;AAC3BoB,SAAOS,YAAY;AACjBD,cAAW;AACXwB,oBAAiB;AACf,QAAIhC,OAAO+B,UAAU,CAAC/B,OAAOK,IAAI;AAC/BL,YAAO+B,SAAS;AAChB,UAAK,IAAIF,WAAW7B,OAAOb,OAAOP,SAAUiD,UAAS;AACrD7B,YAAOb,OAAOP,WAAW,EAAE;;MAE5B6C,oBAAoB;;EAGkB;GACzC,IAAIW,cAAcpC,OAAO1B;AACzB0B,UAAO1B,eAAe;AACpB,SAAK,IAAIuD,WAAW7B,OAAOb,OAAOP,SAAUiD,UAAS;AACrD7B,WAAOb,OAAOP,WAAW,EAAE;AAC3BoB,WAAO+B,SAAS;AAChBK,iBAAa;;;AAIjB,eAAa;AACXpC,UAAOG,SAASD;AAChBF,UAAOS,MAAMD;;GAEf"}
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js
1
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/listen-keys/index.js
2
2
  function listenKeys($store, keys, listener) {
3
3
  let keysSet = new Set(keys).add(void 0);
4
4
  return $store.listen((value, oldValue, changed) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["listenKeys","$store","keys","listener","keysSet","Set","add","undefined","listen","value","oldValue","changed","has","subscribeKeys","unbind"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js"],"sourcesContent":["export function listenKeys($store, keys, listener) {\n let keysSet = new Set(keys).add(undefined)\n return $store.listen((value, oldValue, changed) => {\n if (keysSet.has(changed)) {\n listener(value, oldValue, changed)\n }\n })\n}\n\nexport function subscribeKeys($store, keys, listener) {\n let unbind = listenKeys($store, keys, listener)\n listener($store.value)\n return unbind\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAgBA,WAAWC,QAAQC,MAAMC,UAAU;CACjD,IAAIC,UAAU,IAAIC,IAAIH,KAAK,CAACI,IAAIC,OAAU;AAC1C,QAAON,OAAOO,QAAQC,OAAOC,UAAUC,YAAY;AACjD,MAAIP,QAAQQ,IAAID,QAAQ,CACtBR,UAASM,OAAOC,UAAUC,QAAQ;GAEpC"}
1
+ {"version":3,"file":"index.js","names":["listenKeys","$store","keys","listener","keysSet","Set","add","undefined","listen","value","oldValue","changed","has","subscribeKeys","unbind"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/listen-keys/index.js"],"sourcesContent":["export function listenKeys($store, keys, listener) {\n let keysSet = new Set(keys).add(undefined)\n return $store.listen((value, oldValue, changed) => {\n if (keysSet.has(changed)) {\n listener(value, oldValue, changed)\n }\n })\n}\n\nexport function subscribeKeys($store, keys, listener) {\n let unbind = listenKeys($store, keys, listener)\n listener($store.value)\n return unbind\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAgBA,WAAWC,QAAQC,MAAMC,UAAU;CACjD,IAAIC,UAAU,IAAIC,IAAIH,KAAK,CAACI,IAAIC,OAAU;AAC1C,QAAON,OAAOO,QAAQC,OAAOC,UAAUC,YAAY;AACjD,MAAIP,QAAQQ,IAAID,QAAQ,CACtBR,UAASM,OAAOC,UAAUC,QAAQ;GAEpC"}
@@ -1,6 +1,6 @@
1
1
  import { atom } from "../atom/index.js";
2
2
 
3
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js
3
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/map/index.js
4
4
  const map = /* @__NO_SIDE_EFFECTS__ */ (initial = {}) => {
5
5
  let $map = /* @__PURE__ */ atom(initial);
6
6
  $map.setKey = function(key, value) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["atom","map","initial","$map","setKey","key","value","oldMap","notify"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js"],"sourcesContent":["import { atom } from '../atom/index.js'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport const map = (initial = {}) => {\n let $map = atom(initial)\n\n $map.setKey = function (key, value) {\n let oldMap = $map.value\n if (typeof value === 'undefined' && key in $map.value) {\n $map.value = { ...$map.value }\n delete $map.value[key]\n $map.notify(oldMap, key)\n } else if ($map.value[key] !== value) {\n $map.value = {\n ...$map.value,\n [key]: value\n }\n $map.notify(oldMap, key)\n }\n }\n\n return $map\n}\n"],"x_google_ignoreList":[0],"mappings":";;;AAGA,MAAaC,kCAAOC,UAAU,EAAE,KAAK;CACnC,IAAIC,OAAOH,qBAAKE,QAAQ;AAExBC,MAAKC,SAAS,SAAUC,KAAKC,OAAO;EAClC,IAAIC,SAASJ,KAAKG;AAClB,MAAI,OAAOA,UAAU,eAAeD,OAAOF,KAAKG,OAAO;AACrDH,QAAKG,QAAQ,EAAE,GAAGH,KAAKG,OAAO;AAC9B,UAAOH,KAAKG,MAAMD;AAClBF,QAAKK,OAAOD,QAAQF,IAAI;aACfF,KAAKG,MAAMD,SAASC,OAAO;AACpCH,QAAKG,QAAQ;IACX,GAAGH,KAAKG;KACPD,MAAMC;IACR;AACDH,QAAKK,OAAOD,QAAQF,IAAI;;;AAI5B,QAAOF"}
1
+ {"version":3,"file":"index.js","names":["atom","map","initial","$map","setKey","key","value","oldMap","notify"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/map/index.js"],"sourcesContent":["import { atom } from '../atom/index.js'\n\n/* @__NO_SIDE_EFFECTS__ */\nexport const map = (initial = {}) => {\n let $map = atom(initial)\n\n $map.setKey = function (key, value) {\n let oldMap = $map.value\n if (typeof value === 'undefined' && key in $map.value) {\n $map.value = { ...$map.value }\n delete $map.value[key]\n $map.notify(oldMap, key)\n } else if ($map.value[key] !== value) {\n $map.value = {\n ...$map.value,\n [key]: value\n }\n $map.notify(oldMap, key)\n }\n }\n\n return $map\n}\n"],"x_google_ignoreList":[0],"mappings":";;;AAGA,MAAaC,kCAAOC,UAAU,EAAE,KAAK;CACnC,IAAIC,OAAOH,qBAAKE,QAAQ;AAExBC,MAAKC,SAAS,SAAUC,KAAKC,OAAO;EAClC,IAAIC,SAASJ,KAAKG;AAClB,MAAI,OAAOA,UAAU,eAAeD,OAAOF,KAAKG,OAAO;AACrDH,QAAKG,QAAQ,EAAE,GAAGH,KAAKG,OAAO;AAC9B,UAAOH,KAAKG,MAAMD;AAClBF,QAAKK,OAAOD,QAAQF,IAAI;aACfF,KAAKG,MAAMD,SAASC,OAAO;AACpCH,QAAKG,QAAQ;IACX,GAAGH,KAAKG;KACPD,MAAMC;IACR;AACDH,QAAKK,OAAOD,QAAQF,IAAI;;;AAI5B,QAAOF"}
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js
1
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/task/index.js
2
2
  let tasks = 0;
3
3
  let resolves = [];
4
4
  function startTask() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["tasks","resolves","startTask","prevResolves","i","task","cb","endTask","promise","finally","t","allTasks","Promise","resolve","push","cleanTasks"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js"],"sourcesContent":["let tasks = 0\nlet resolves = []\n\nexport function startTask() {\n tasks += 1\n return () => {\n tasks -= 1\n if (tasks === 0) {\n let prevResolves = resolves\n resolves = []\n for (let i of prevResolves) i()\n }\n }\n}\n\nexport function task(cb) {\n let endTask = startTask()\n let promise = cb().finally(endTask)\n promise.t = true\n return promise\n}\n\nexport function allTasks() {\n if (tasks === 0) {\n return Promise.resolve()\n } else {\n return new Promise(resolve => {\n resolves.push(resolve)\n })\n }\n}\n\nexport function cleanTasks() {\n tasks = 0\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAIA,QAAQ;AACZ,IAAIC,WAAW,EAAE;AAEjB,SAAgBC,YAAY;AAC1BF,UAAS;AACT,cAAa;AACXA,WAAS;AACT,MAAIA,UAAU,GAAG;GACf,IAAIG,eAAeF;AACnBA,cAAW,EAAE;AACb,QAAK,IAAIG,KAAKD,aAAcC,IAAG;;;;AAKrC,SAAgBC,KAAKC,IAAI;CACvB,IAAIC,UAAUL,WAAW;CACzB,IAAIM,UAAUF,IAAI,CAACG,QAAQF,QAAQ;AACnCC,SAAQE,IAAI;AACZ,QAAOF"}
1
+ {"version":3,"file":"index.js","names":["tasks","resolves","startTask","prevResolves","i","task","cb","endTask","promise","finally","t","allTasks","Promise","resolve","push","cleanTasks"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/task/index.js"],"sourcesContent":["let tasks = 0\nlet resolves = []\n\nexport function startTask() {\n tasks += 1\n return () => {\n tasks -= 1\n if (tasks === 0) {\n let prevResolves = resolves\n resolves = []\n for (let i of prevResolves) i()\n }\n }\n}\n\nexport function task(cb) {\n let endTask = startTask()\n let promise = cb().finally(endTask)\n promise.t = true\n return promise\n}\n\nexport function allTasks() {\n if (tasks === 0) {\n return Promise.resolve()\n } else {\n return new Promise(resolve => {\n resolves.push(resolve)\n })\n }\n}\n\nexport function cleanTasks() {\n tasks = 0\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAIA,QAAQ;AACZ,IAAIC,WAAW,EAAE;AAEjB,SAAgBC,YAAY;AAC1BF,UAAS;AACT,cAAa;AACXA,WAAS;AACT,MAAIA,UAAU,GAAG;GACf,IAAIG,eAAeF;AACnBA,cAAW,EAAE;AACb,QAAK,IAAIG,KAAKD,aAAcC,IAAG;;;;AAKrC,SAAgBC,KAAKC,IAAI;CACvB,IAAIC,UAAUL,WAAW;CACzB,IAAIM,UAAUF,IAAI,CAACG,QAAQF,QAAQ;AACnCC,SAAQE,IAAI;AACZ,QAAOF"}
@@ -0,0 +1,16 @@
1
+ //#region ../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js
2
+ let warned = {};
3
+ function warn(text) {
4
+ if (!warned[text]) {
5
+ warned[text] = true;
6
+ if (typeof console !== "undefined" && console.warn) {
7
+ console.groupCollapsed("Nano Stores: " + text);
8
+ console.trace("Source of deprecated call");
9
+ console.groupEnd();
10
+ }
11
+ }
12
+ }
13
+
14
+ //#endregion
15
+ export { warn };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["warned","warn","text","console","groupCollapsed","trace","groupEnd"],"sources":["../../../../../../../../../../../node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js"],"sourcesContent":["let warned = {}\n\nexport function warn(text) {\n if (!warned[text]) {\n warned[text] = true\n if (typeof console !== 'undefined' && console.warn) {\n console.groupCollapsed('Nano Stores: ' + text)\n console.trace('Source of deprecated call')\n console.groupEnd()\n }\n }\n}\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAIA,SAAS,EAAE;AAEf,SAAgBC,KAAKC,MAAM;AACzB,KAAI,CAACF,OAAOE,OAAO;AACjBF,SAAOE,QAAQ;AACf,MAAI,OAAOC,YAAY,eAAeA,QAAQF,MAAM;AAClDE,WAAQC,eAAe,kBAAkBF,KAAK;AAC9CC,WAAQE,MAAM,4BAA4B;AAC1CF,WAAQG,UAAU"}
@@ -1,48 +1,7 @@
1
- import { uploadSchema } from "./schema.js";
2
1
  import { defineFragment } from "@fragno-dev/core";
3
2
 
4
3
  //#region src/definition.ts
5
- const uploadFragmentDefinition = defineFragment("upload").extend((x) => x).withDependencies(() => {}).provideHooks(({ defineHook, config }) => {
6
- return {
7
- onFileReady: defineHook(async function(payload) {
8
- await config.onFileReady?.(payload, this.idempotencyKey);
9
- }),
10
- onUploadFailed: defineHook(async function(payload) {
11
- await config.onUploadFailed?.(payload, this.idempotencyKey);
12
- }),
13
- onFileDeleted: defineHook(async function(payload) {
14
- await config.onFileDeleted?.(payload, this.idempotencyKey);
15
- }),
16
- onUploadTimeout: defineHook(async function(payload) {
17
- const now = /* @__PURE__ */ new Date();
18
- if (!payload.uploadId) return;
19
- const result = await this.handlerTx().retrieve(({ forSchema }) => forSchema(uploadSchema).findFirst("upload", (b) => b.whereIndex("primary", (eb) => eb("id", "=", payload.uploadId)))).mutate(({ forSchema, retrieveResult: [upload] }) => {
20
- if (!upload) return { shouldNotify: false };
21
- const status = upload.status;
22
- if (status === "completed" || status === "aborted" || status === "failed" || status === "expired") return { shouldNotify: false };
23
- if (upload.expiresAt.getTime() > now.getTime()) return { shouldNotify: false };
24
- forSchema(uploadSchema).update("upload", upload.id, (b) => b.set({
25
- status: "expired",
26
- updatedAt: now,
27
- errorCode: "UPLOAD_EXPIRED",
28
- errorMessage: "Upload expired"
29
- }));
30
- return {
31
- shouldNotify: true,
32
- payload: {
33
- fileKey: upload.fileKey,
34
- fileKeyParts: payload.fileKeyParts,
35
- uploadId: payload.uploadId,
36
- uploaderId: upload.uploaderId,
37
- sizeBytes: Number(upload.expectedSizeBytes),
38
- contentType: upload.contentType
39
- }
40
- };
41
- }).transform(({ mutateResult }) => mutateResult).execute();
42
- if (result.shouldNotify) await config.onUploadFailed?.(result.payload, this.idempotencyKey);
43
- })
44
- };
45
- }).providesBaseService(() => {}).build();
4
+ const uploadFragmentDefinition = defineFragment("upload").extend((x) => x).withDependencies(() => {}).providesBaseService(() => {}).build();
46
5
 
47
6
  //#endregion
48
7
  export { uploadFragmentDefinition };