alepha 0.21.2 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +0 -1
  2. package/dist/api/audits/index.browser.js.map +1 -1
  3. package/dist/api/audits/index.d.ts +393 -403
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/audits/index.js +25 -56
  6. package/dist/api/audits/index.js.map +1 -1
  7. package/dist/api/files/index.browser.js +31 -1
  8. package/dist/api/files/index.browser.js.map +1 -1
  9. package/dist/api/files/index.d.ts +313 -208
  10. package/dist/api/files/index.d.ts.map +1 -1
  11. package/dist/api/files/index.js +152 -42
  12. package/dist/api/files/index.js.map +1 -1
  13. package/dist/api/jobs/index.browser.js +2 -2
  14. package/dist/api/jobs/index.browser.js.map +1 -1
  15. package/dist/api/jobs/index.d.ts +289 -292
  16. package/dist/api/jobs/index.d.ts.map +1 -1
  17. package/dist/api/jobs/index.js +39 -33
  18. package/dist/api/jobs/index.js.map +1 -1
  19. package/dist/api/keys/index.d.ts +211 -216
  20. package/dist/api/keys/index.d.ts.map +1 -1
  21. package/dist/api/keys/index.js.map +1 -1
  22. package/dist/api/notifications/index.browser.js.map +1 -1
  23. package/dist/api/notifications/index.d.ts +188 -195
  24. package/dist/api/notifications/index.d.ts.map +1 -1
  25. package/dist/api/notifications/index.js.map +1 -1
  26. package/dist/api/oauth/index.d.ts +71 -76
  27. package/dist/api/oauth/index.d.ts.map +1 -1
  28. package/dist/api/oauth/index.js.map +1 -1
  29. package/dist/api/organizations/index.browser.js.map +1 -1
  30. package/dist/api/organizations/index.d.ts +104 -109
  31. package/dist/api/organizations/index.d.ts.map +1 -1
  32. package/dist/api/organizations/index.js.map +1 -1
  33. package/dist/api/parameters/index.browser.js +43 -16
  34. package/dist/api/parameters/index.browser.js.map +1 -1
  35. package/dist/api/parameters/index.d.ts +488 -344
  36. package/dist/api/parameters/index.d.ts.map +1 -1
  37. package/dist/api/parameters/index.js +175 -35
  38. package/dist/api/parameters/index.js.map +1 -1
  39. package/dist/api/payments/index.d.ts +396 -402
  40. package/dist/api/payments/index.d.ts.map +1 -1
  41. package/dist/api/payments/index.js.map +1 -1
  42. package/dist/api/subscriptions/index.d.ts +644 -652
  43. package/dist/api/subscriptions/index.d.ts.map +1 -1
  44. package/dist/api/subscriptions/index.js +1 -1
  45. package/dist/api/subscriptions/index.js.map +1 -1
  46. package/dist/api/users/index.browser.js +7 -0
  47. package/dist/api/users/index.browser.js.map +1 -1
  48. package/dist/api/users/index.d.ts +1073 -1006
  49. package/dist/api/users/index.d.ts.map +1 -1
  50. package/dist/api/users/index.js +283 -61
  51. package/dist/api/users/index.js.map +1 -1
  52. package/dist/api/verifications/index.browser.js.map +1 -1
  53. package/dist/api/verifications/index.d.ts +134 -140
  54. package/dist/api/verifications/index.d.ts.map +1 -1
  55. package/dist/api/verifications/index.js.map +1 -1
  56. package/dist/background/index.d.ts +95 -0
  57. package/dist/background/index.d.ts.map +1 -0
  58. package/dist/background/index.js +121 -0
  59. package/dist/background/index.js.map +1 -0
  60. package/dist/background/index.workerd.js +110 -0
  61. package/dist/background/index.workerd.js.map +1 -0
  62. package/dist/batch/index.d.ts +5 -7
  63. package/dist/batch/index.d.ts.map +1 -1
  64. package/dist/batch/index.js.map +1 -1
  65. package/dist/bin/index.js.map +1 -1
  66. package/dist/bucket/index.d.ts +76 -54
  67. package/dist/bucket/index.d.ts.map +1 -1
  68. package/dist/bucket/index.js +58 -11
  69. package/dist/bucket/index.js.map +1 -1
  70. package/dist/bucket/index.workerd.js +200 -5
  71. package/dist/bucket/index.workerd.js.map +1 -1
  72. package/dist/cache/core/index.d.ts +7 -10
  73. package/dist/cache/core/index.d.ts.map +1 -1
  74. package/dist/cache/core/index.js.map +1 -1
  75. package/dist/cache/core/index.workerd.js.map +1 -1
  76. package/dist/cache/database/index.d.ts +22 -26
  77. package/dist/cache/database/index.d.ts.map +1 -1
  78. package/dist/cache/database/index.js.map +1 -1
  79. package/dist/cache/redis/index.d.ts +4 -7
  80. package/dist/cache/redis/index.d.ts.map +1 -1
  81. package/dist/cache/redis/index.js.map +1 -1
  82. package/dist/captcha/index.d.ts +3 -6
  83. package/dist/captcha/index.d.ts.map +1 -1
  84. package/dist/captcha/index.js.map +1 -1
  85. package/dist/cli/config/index.d.ts.map +1 -1
  86. package/dist/cli/config/index.js.map +1 -1
  87. package/dist/cli/core/index.d.ts +417 -214
  88. package/dist/cli/core/index.d.ts.map +1 -1
  89. package/dist/cli/core/index.js +325 -563
  90. package/dist/cli/core/index.js.map +1 -1
  91. package/dist/cli/devtools/index.d.ts +3 -5
  92. package/dist/cli/devtools/index.d.ts.map +1 -1
  93. package/dist/cli/devtools/index.js.map +1 -1
  94. package/dist/cli/i18n/index.d.ts +8 -12
  95. package/dist/cli/i18n/index.d.ts.map +1 -1
  96. package/dist/cli/i18n/index.js.map +1 -1
  97. package/dist/cli/platform/index.d.ts +126 -1342
  98. package/dist/cli/platform/index.d.ts.map +1 -1
  99. package/dist/cli/platform/index.js +136 -2374
  100. package/dist/cli/platform/index.js.map +1 -1
  101. package/dist/cli/platform-lib/index.d.ts +1446 -0
  102. package/dist/cli/platform-lib/index.d.ts.map +1 -0
  103. package/dist/cli/platform-lib/index.js +2597 -0
  104. package/dist/cli/platform-lib/index.js.map +1 -0
  105. package/dist/cli/vendor/index.d.ts +17 -21
  106. package/dist/cli/vendor/index.d.ts.map +1 -1
  107. package/dist/cli/vendor/index.js.map +1 -1
  108. package/dist/command/index.d.ts +21 -20
  109. package/dist/command/index.d.ts.map +1 -1
  110. package/dist/command/index.js +39 -10
  111. package/dist/command/index.js.map +1 -1
  112. package/dist/{containers → container}/core/index.d.ts +13 -15
  113. package/dist/container/core/index.d.ts.map +1 -0
  114. package/dist/{containers → container}/core/index.js +23 -14
  115. package/dist/container/core/index.js.map +1 -0
  116. package/dist/{containers → container}/core/index.workerd.js +37 -22
  117. package/dist/container/core/index.workerd.js.map +1 -0
  118. package/dist/core/index.browser.js +27 -1
  119. package/dist/core/index.browser.js.map +1 -1
  120. package/dist/core/index.d.ts +48 -24
  121. package/dist/core/index.d.ts.map +1 -1
  122. package/dist/core/index.js +27 -1
  123. package/dist/core/index.js.map +1 -1
  124. package/dist/core/index.native.js +27 -1
  125. package/dist/core/index.native.js.map +1 -1
  126. package/dist/core/index.workerd.js +27 -1
  127. package/dist/core/index.workerd.js.map +1 -1
  128. package/dist/crypto/index.browser.js.map +1 -1
  129. package/dist/crypto/index.d.ts +5 -8
  130. package/dist/crypto/index.d.ts.map +1 -1
  131. package/dist/crypto/index.js.map +1 -1
  132. package/dist/datetime/index.d.ts +3 -4
  133. package/dist/datetime/index.d.ts.map +1 -1
  134. package/dist/datetime/index.js.map +1 -1
  135. package/dist/email/brevo/index.d.ts +2 -4
  136. package/dist/email/brevo/index.d.ts.map +1 -1
  137. package/dist/email/brevo/index.js.map +1 -1
  138. package/dist/email/cloudflare/index.d.ts +20 -7
  139. package/dist/email/cloudflare/index.d.ts.map +1 -1
  140. package/dist/email/cloudflare/index.js +46 -9
  141. package/dist/email/cloudflare/index.js.map +1 -1
  142. package/dist/email/core/index.d.ts +6 -9
  143. package/dist/email/core/index.d.ts.map +1 -1
  144. package/dist/email/core/index.js.map +1 -1
  145. package/dist/email/core/index.workerd.js.map +1 -1
  146. package/dist/email/smtp/index.d.ts +10 -13
  147. package/dist/email/smtp/index.d.ts.map +1 -1
  148. package/dist/email/smtp/index.js +107 -32
  149. package/dist/email/smtp/index.js.map +1 -1
  150. package/dist/fake/index.d.ts +1 -2
  151. package/dist/fake/index.d.ts.map +1 -1
  152. package/dist/fake/index.js.map +1 -1
  153. package/dist/lock/core/index.d.ts +9 -14
  154. package/dist/lock/core/index.d.ts.map +1 -1
  155. package/dist/lock/core/index.js.map +1 -1
  156. package/dist/lock/redis/index.d.ts +2 -4
  157. package/dist/lock/redis/index.d.ts.map +1 -1
  158. package/dist/lock/redis/index.js.map +1 -1
  159. package/dist/logger/index.d.ts +105 -76
  160. package/dist/logger/index.d.ts.map +1 -1
  161. package/dist/logger/index.js +196 -174
  162. package/dist/logger/index.js.map +1 -1
  163. package/dist/mcp/index.d.ts +16 -20
  164. package/dist/mcp/index.d.ts.map +1 -1
  165. package/dist/mcp/index.js.map +1 -1
  166. package/dist/orm/core/index.browser.js.map +1 -1
  167. package/dist/orm/core/index.bun.js +19 -1
  168. package/dist/orm/core/index.bun.js.map +1 -1
  169. package/dist/orm/core/index.d.ts +76 -62
  170. package/dist/orm/core/index.d.ts.map +1 -1
  171. package/dist/orm/core/index.js +20 -2
  172. package/dist/orm/core/index.js.map +1 -1
  173. package/dist/orm/postgres/index.bun.js.map +1 -1
  174. package/dist/orm/postgres/index.d.ts +28 -20
  175. package/dist/orm/postgres/index.d.ts.map +1 -1
  176. package/dist/orm/postgres/index.js.map +1 -1
  177. package/dist/queue/core/index.d.ts +12 -15
  178. package/dist/queue/core/index.d.ts.map +1 -1
  179. package/dist/queue/core/index.js.map +1 -1
  180. package/dist/queue/core/index.workerd.js.map +1 -1
  181. package/dist/queue/redis/index.d.ts +3 -5
  182. package/dist/queue/redis/index.d.ts.map +1 -1
  183. package/dist/queue/redis/index.js.map +1 -1
  184. package/dist/react/auth/index.browser.js +9 -2
  185. package/dist/react/auth/index.browser.js.map +1 -1
  186. package/dist/react/auth/index.d.ts +14 -9
  187. package/dist/react/auth/index.d.ts.map +1 -1
  188. package/dist/react/auth/index.js +9 -2
  189. package/dist/react/auth/index.js.map +1 -1
  190. package/dist/react/core/index.d.ts +7 -8
  191. package/dist/react/core/index.d.ts.map +1 -1
  192. package/dist/react/core/index.js +6 -3
  193. package/dist/react/core/index.js.map +1 -1
  194. package/dist/react/form/index.d.ts +2 -4
  195. package/dist/react/form/index.d.ts.map +1 -1
  196. package/dist/react/form/index.js.map +1 -1
  197. package/dist/react/head/index.browser.js.map +1 -1
  198. package/dist/react/head/index.d.ts +2 -4
  199. package/dist/react/head/index.d.ts.map +1 -1
  200. package/dist/react/head/index.js.map +1 -1
  201. package/dist/react/i18n/index.d.ts +47 -11
  202. package/dist/react/i18n/index.d.ts.map +1 -1
  203. package/dist/react/i18n/index.js +33 -1
  204. package/dist/react/i18n/index.js.map +1 -1
  205. package/dist/react/intro/index.d.ts +1 -2
  206. package/dist/react/intro/index.d.ts.map +1 -1
  207. package/dist/react/intro/index.js +2 -2
  208. package/dist/react/intro/index.js.map +1 -1
  209. package/dist/react/router/index.browser.js +65 -19
  210. package/dist/react/router/index.browser.js.map +1 -1
  211. package/dist/react/router/index.d.ts +327 -222
  212. package/dist/react/router/index.d.ts.map +1 -1
  213. package/dist/react/router/index.js +65 -29
  214. package/dist/react/router/index.js.map +1 -1
  215. package/dist/react/testing/index.d.ts +1 -2
  216. package/dist/react/testing/index.d.ts.map +1 -1
  217. package/dist/react/testing/index.js +16 -17
  218. package/dist/react/testing/index.js.map +1 -1
  219. package/dist/react/ui/index.d.ts +20 -25
  220. package/dist/react/ui/index.d.ts.map +1 -1
  221. package/dist/react/ui/index.js.map +1 -1
  222. package/dist/redis/index.bun.js.map +1 -1
  223. package/dist/redis/index.d.ts +17 -19
  224. package/dist/redis/index.d.ts.map +1 -1
  225. package/dist/redis/index.js.map +1 -1
  226. package/dist/retry/index.d.ts +2 -4
  227. package/dist/retry/index.d.ts.map +1 -1
  228. package/dist/retry/index.js.map +1 -1
  229. package/dist/router/index.d.ts.map +1 -1
  230. package/dist/router/index.js.map +1 -1
  231. package/dist/scheduler/index.d.ts +10 -13
  232. package/dist/scheduler/index.d.ts.map +1 -1
  233. package/dist/scheduler/index.js.map +1 -1
  234. package/dist/scheduler/index.workerd.js.map +1 -1
  235. package/dist/security/index.browser.js.map +1 -1
  236. package/dist/security/index.d.ts +45 -48
  237. package/dist/security/index.d.ts.map +1 -1
  238. package/dist/security/index.js.map +1 -1
  239. package/dist/server/auth/index.browser.js.map +1 -1
  240. package/dist/server/auth/index.d.ts +167 -172
  241. package/dist/server/auth/index.d.ts.map +1 -1
  242. package/dist/server/auth/index.js +4 -8
  243. package/dist/server/auth/index.js.map +1 -1
  244. package/dist/server/cookies/index.browser.js.map +1 -1
  245. package/dist/server/cookies/index.d.ts +5 -7
  246. package/dist/server/cookies/index.d.ts.map +1 -1
  247. package/dist/server/cookies/index.js.map +1 -1
  248. package/dist/server/core/index.browser.js.map +1 -1
  249. package/dist/server/core/index.d.ts +88 -73
  250. package/dist/server/core/index.d.ts.map +1 -1
  251. package/dist/server/core/index.js +19 -0
  252. package/dist/server/core/index.js.map +1 -1
  253. package/dist/server/cors/index.d.ts +11 -14
  254. package/dist/server/cors/index.d.ts.map +1 -1
  255. package/dist/server/cors/index.js.map +1 -1
  256. package/dist/server/etag/index.d.ts +6 -9
  257. package/dist/server/etag/index.d.ts.map +1 -1
  258. package/dist/server/etag/index.js.map +1 -1
  259. package/dist/server/health/index.d.ts +18 -21
  260. package/dist/server/health/index.d.ts.map +1 -1
  261. package/dist/server/health/index.js.map +1 -1
  262. package/dist/server/links/index.browser.js +2 -0
  263. package/dist/server/links/index.browser.js.map +1 -1
  264. package/dist/server/links/index.d.ts +63 -67
  265. package/dist/server/links/index.d.ts.map +1 -1
  266. package/dist/server/links/index.js +2 -0
  267. package/dist/server/links/index.js.map +1 -1
  268. package/dist/server/metrics/index.d.ts +5 -7
  269. package/dist/server/metrics/index.d.ts.map +1 -1
  270. package/dist/server/metrics/index.js.map +1 -1
  271. package/dist/server/proxy/index.d.ts +3 -5
  272. package/dist/server/proxy/index.d.ts.map +1 -1
  273. package/dist/server/proxy/index.js.map +1 -1
  274. package/dist/server/rate-limit/index.d.ts +10 -13
  275. package/dist/server/rate-limit/index.d.ts.map +1 -1
  276. package/dist/server/rate-limit/index.js.map +1 -1
  277. package/dist/server/static/index.d.ts +3 -5
  278. package/dist/server/static/index.d.ts.map +1 -1
  279. package/dist/server/static/index.js.map +1 -1
  280. package/dist/server/swagger/index.d.ts +5 -8
  281. package/dist/server/swagger/index.d.ts.map +1 -1
  282. package/dist/server/swagger/index.js.map +1 -1
  283. package/dist/sms/index.d.ts +3 -5
  284. package/dist/sms/index.d.ts.map +1 -1
  285. package/dist/sms/index.js.map +1 -1
  286. package/dist/system/index.browser.js.map +1 -1
  287. package/dist/system/index.d.ts +2 -4
  288. package/dist/system/index.d.ts.map +1 -1
  289. package/dist/system/index.js.map +1 -1
  290. package/dist/system/index.workerd.js.map +1 -1
  291. package/dist/topic/core/index.d.ts +4 -6
  292. package/dist/topic/core/index.d.ts.map +1 -1
  293. package/dist/topic/core/index.js.map +1 -1
  294. package/dist/topic/redis/index.d.ts +5 -8
  295. package/dist/topic/redis/index.d.ts.map +1 -1
  296. package/dist/topic/redis/index.js.map +1 -1
  297. package/package.json +45 -22
  298. package/src/api/audits/__tests__/AuditService.spec.ts +18 -110
  299. package/src/api/audits/controllers/AdminAuditController.ts +14 -0
  300. package/src/api/audits/services/AuditService.ts +21 -88
  301. package/src/api/files/__tests__/FileService.spec.ts +207 -2
  302. package/src/api/files/index.ts +3 -0
  303. package/src/api/files/schemas/fileCreatorSummarySchema.ts +22 -0
  304. package/src/api/files/schemas/fileResourceSchema.ts +10 -1
  305. package/src/api/files/services/FileService.ts +170 -72
  306. package/src/api/jobs/__tests__/$job.spec.ts +24 -1
  307. package/src/api/jobs/index.ts +4 -3
  308. package/src/api/jobs/primitives/$job.ts +7 -3
  309. package/src/api/jobs/providers/DirectJobDispatcher.ts +17 -36
  310. package/src/api/jobs/providers/JobProvider.ts +53 -24
  311. package/src/api/jobs/schemas/jobConfigAtom.ts +1 -1
  312. package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +4 -1
  313. package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +3 -1
  314. package/src/api/parameters/__tests__/$parameter.spec.ts +19 -2
  315. package/src/api/parameters/audits/ParameterAudits.ts +17 -0
  316. package/src/api/parameters/controllers/AdminParameterController.ts +95 -19
  317. package/src/api/parameters/index.ts +3 -0
  318. package/src/api/parameters/schemas/activateParameterBodySchema.ts +3 -3
  319. package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +3 -2
  320. package/src/api/parameters/schemas/parameterCreatorSummarySchema.ts +25 -0
  321. package/src/api/parameters/schemas/parameterResponseSchema.ts +5 -0
  322. package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +4 -2
  323. package/src/api/parameters/services/ParameterProvider.ts +69 -6
  324. package/src/api/subscriptions/jobs/SubscriptionJobs.ts +1 -1
  325. package/src/api/users/__tests__/AdminSessionController.spec.ts +37 -0
  326. package/src/api/users/audits/SessionAudits.ts +33 -0
  327. package/src/api/users/audits/UserAudits.ts +19 -43
  328. package/src/api/users/controllers/AdminUserController.ts +66 -1
  329. package/src/api/users/entities/sessions.ts +6 -0
  330. package/src/api/users/entities/users.ts +2 -0
  331. package/src/api/users/index.ts +9 -1
  332. package/src/api/users/primitives/$realm.ts +3 -0
  333. package/src/api/users/schemas/sessionResourceSchema.ts +16 -0
  334. package/src/api/users/schemas/updateUserSchema.ts +1 -8
  335. package/src/api/users/schemas/userQuerySchema.ts +7 -0
  336. package/src/api/users/services/CredentialService.ts +15 -6
  337. package/src/api/users/services/IdentityService.ts +2 -1
  338. package/src/api/users/services/RegistrationService.ts +2 -1
  339. package/src/api/users/services/SessionCrudService.ts +19 -2
  340. package/src/api/users/services/SessionService.ts +39 -19
  341. package/src/api/users/services/UserService.ts +106 -8
  342. package/src/background/__tests__/BackgroundTaskProvider.spec.ts +96 -0
  343. package/src/background/index.ts +37 -0
  344. package/src/background/index.workerd.ts +28 -0
  345. package/src/background/providers/BackgroundTaskProvider.ts +70 -0
  346. package/src/background/providers/WorkerdBackgroundTaskProvider.ts +43 -0
  347. package/src/bucket/__tests__/$bucket.spec.ts +18 -0
  348. package/src/bucket/__tests__/LocalFileStorageProvider.spec.ts +5 -0
  349. package/src/bucket/__tests__/MemoryFileStorageProvider.spec.ts +5 -0
  350. package/src/bucket/__tests__/NodeS3BucketProvider.spec.ts +23 -4
  351. package/src/bucket/__tests__/shared.ts +30 -0
  352. package/src/bucket/index.ts +5 -5
  353. package/src/bucket/index.workerd.ts +11 -4
  354. package/src/bucket/primitives/$bucket.ts +27 -0
  355. package/src/bucket/providers/FileStorageProvider.ts +13 -0
  356. package/src/bucket/providers/LocalFileStorageProvider.ts +17 -1
  357. package/src/bucket/providers/MemoryFileStorageProvider.ts +7 -0
  358. package/src/bucket/providers/{CloudflareR2Provider.ts → R2FileStorageProvider.ts} +10 -1
  359. package/src/bucket/providers/{NodeS3BucketProvider.ts → S3FileStorageProvider.ts} +27 -5
  360. package/src/cli/core/__tests__/BuildDockerTask.spec.ts +25 -1
  361. package/src/cli/core/__tests__/init.spec.ts +0 -219
  362. package/src/cli/core/commands/__tests__/BuildCommand.spec.ts +43 -0
  363. package/src/cli/core/commands/build.ts +108 -30
  364. package/src/cli/core/commands/init.ts +0 -12
  365. package/src/cli/core/commands/pack.ts +133 -0
  366. package/src/cli/core/index.ts +3 -0
  367. package/src/cli/core/providers/ViteDevServerProvider.ts +40 -16
  368. package/src/cli/core/services/PackageManagerUtils.ts +0 -16
  369. package/src/cli/core/services/ProjectScaffolder.ts +29 -291
  370. package/src/cli/core/tasks/BuildCloudflareTask.ts +353 -47
  371. package/src/cli/core/tasks/BuildDockerTask.ts +33 -3
  372. package/src/cli/core/tasks/BuildTask.ts +34 -0
  373. package/src/cli/core/templates/apiIndexTs.ts +1 -22
  374. package/src/cli/core/templates/mainCss.ts +0 -1
  375. package/src/cli/core/templates/webAppRouterTs.ts +0 -99
  376. package/src/cli/core/templates/webIndexTs.ts +1 -22
  377. package/src/cli/platform/__tests__/SecretsCommand.spec.ts +5 -3
  378. package/src/cli/platform/commands/SecretsCommand.ts +8 -6
  379. package/src/cli/platform/commands/platform.ts +192 -46
  380. package/src/cli/platform/index.ts +12 -52
  381. package/src/cli/{platform → platform-lib}/__tests__/CloudflareAdapter.spec.ts +426 -169
  382. package/src/cli/{platform → platform-lib}/__tests__/NamingService.spec.ts +91 -4
  383. package/src/cli/{platform → platform-lib}/__tests__/VercelAdapter.spec.ts +56 -85
  384. package/src/cli/{platform → platform-lib}/adapters/CloudflareAdapter.ts +402 -165
  385. package/src/cli/{platform → platform-lib}/adapters/PlatformAdapter.ts +62 -35
  386. package/src/cli/{platform → platform-lib}/adapters/VercelAdapter.ts +6 -10
  387. package/src/cli/{platform → platform-lib}/atoms/platformOptions.ts +34 -1
  388. package/src/cli/platform-lib/index.ts +67 -0
  389. package/src/cli/platform-lib/services/NamingService.ts +136 -0
  390. package/src/cli/{platform → platform-lib}/services/PlatformInspector.ts +60 -13
  391. package/src/cli/{platform → platform-lib}/services/PlatformOrchestrator.ts +54 -43
  392. package/src/cli/{platform → platform-lib}/services/WranglerApi.ts +4 -2
  393. package/src/command/__tests__/Runner.spec.ts +20 -0
  394. package/src/command/helpers/EnvUtils.ts +19 -3
  395. package/src/command/helpers/Runner.ts +12 -2
  396. package/src/command/providers/CliProvider.ts +34 -1
  397. package/src/{containers → container}/core/__tests__/$container.spec.ts +5 -5
  398. package/src/{containers → container}/core/index.ts +4 -4
  399. package/src/{containers → container}/core/index.workerd.ts +19 -3
  400. package/src/{containers → container}/core/primitives/$container.ts +1 -1
  401. package/src/{containers → container}/core/providers/CloudflareContainerProvider.ts +17 -19
  402. package/src/{containers → container}/core/providers/ContainerProvider.ts +16 -2
  403. package/src/{containers → container}/core/providers/MockContainerProvider.ts +1 -1
  404. package/src/core/Alepha.ts +49 -1
  405. package/src/core/__tests__/$env.spec.ts +42 -0
  406. package/src/core/__tests__/dump.spec.ts +47 -0
  407. package/src/email/cloudflare/__tests__/CloudflareEmailProvider.spec.ts +42 -10
  408. package/src/email/cloudflare/index.ts +14 -5
  409. package/src/email/cloudflare/providers/CloudflareEmailProvider.ts +54 -9
  410. package/src/logger/__tests__/Logger.spec.ts +55 -0
  411. package/src/logger/index.ts +13 -0
  412. package/src/logger/services/Logger.ts +31 -1
  413. package/src/orm/__tests__/orm-showcase-tests.ts +27 -0
  414. package/src/orm/__tests__/orm-showcase.spec.ts +12 -0
  415. package/src/orm/core/interfaces/PgQuery.ts +4 -1
  416. package/src/orm/core/services/Repository.ts +27 -11
  417. package/src/react/auth/hooks/useAuth.ts +10 -5
  418. package/src/react/core/__tests__/useQuery.browser.spec.tsx +25 -0
  419. package/src/react/core/hooks/useAction.ts +14 -3
  420. package/src/react/core/hooks/useQuery.ts +24 -4
  421. package/src/react/i18n/components/Translate.tsx +47 -0
  422. package/src/react/i18n/index.ts +2 -0
  423. package/src/react/intro/components/GettingStartedAdminSlide.tsx +2 -2
  424. package/src/react/router/__tests__/$page.spec.tsx +3 -2
  425. package/src/react/router/__tests__/page-can.spec.ts +18 -13
  426. package/src/react/router/hooks/useQueryParams.ts +114 -14
  427. package/src/react/router/primitives/$page.ts +85 -4
  428. package/src/react/router/providers/ReactBrowserRouterProvider.ts +3 -7
  429. package/src/react/router/providers/ReactServerProvider.ts +4 -13
  430. package/src/react/ui/services/SchemaControl.ts +3 -4
  431. package/src/server/core/providers/ServerMultipartProvider.ts +19 -0
  432. package/src/server/links/providers/LinkProvider.ts +10 -0
  433. package/dist/containers/core/index.d.ts.map +0 -1
  434. package/dist/containers/core/index.js.map +0 -1
  435. package/dist/containers/core/index.workerd.js.map +0 -1
  436. package/src/cli/core/templates/componentsJsonTs.ts +0 -39
  437. package/src/cli/core/templates/saasAdminLayoutTsx.ts +0 -77
  438. package/src/cli/core/templates/saasAdminPagesTsx.ts +0 -26
  439. package/src/cli/core/templates/saasAuthLayoutTsx.ts +0 -22
  440. package/src/cli/core/templates/saasAuthPagesTsx.ts +0 -62
  441. package/src/cli/core/templates/saasRealmProviderTs.ts +0 -52
  442. package/src/cli/platform/services/NamingService.ts +0 -54
  443. /package/dist/orm/core/{chunk-o8xxKEmq.js → chunk-B4FMCO8f.js} +0 -0
  444. /package/dist/react/testing/{chunk-6Ep1yQYe.js → chunk-BpyX8vjI.js} +0 -0
  445. /package/src/cli/{platform → platform-lib}/__tests__/GitHubSecretStore.spec.ts +0 -0
  446. /package/src/cli/{platform → platform-lib}/__tests__/PlatformCacheProvider.spec.ts +0 -0
  447. /package/src/cli/{platform → platform-lib}/__tests__/PlatformInspector.spec.ts +0 -0
  448. /package/src/cli/{platform → platform-lib}/__tests__/PlatformOrchestrator.spec.ts +0 -0
  449. /package/src/cli/{platform → platform-lib}/__tests__/SecretFilterService.spec.ts +0 -0
  450. /package/src/cli/{platform → platform-lib}/__tests__/detectResources.spec.ts +0 -0
  451. /package/src/cli/{platform → platform-lib}/providers/GitHubSecretStore.ts +0 -0
  452. /package/src/cli/{platform → platform-lib}/providers/MemorySecretStore.ts +0 -0
  453. /package/src/cli/{platform → platform-lib}/providers/PlatformCacheProvider.ts +0 -0
  454. /package/src/cli/{platform → platform-lib}/providers/SecretStoreProvider.ts +0 -0
  455. /package/src/cli/{platform → platform-lib}/schemas/cloudflare.ts +0 -0
  456. /package/src/cli/{platform → platform-lib}/schemas/platform.ts +0 -0
  457. /package/src/cli/{platform → platform-lib}/schemas/vercel.ts +0 -0
  458. /package/src/cli/{platform → platform-lib}/services/CloudflareApi.ts +0 -0
  459. /package/src/cli/{platform → platform-lib}/services/SecretFilterService.ts +0 -0
  460. /package/src/cli/{platform → platform-lib}/services/VercelApi.ts +0 -0
  461. /package/src/cli/{platform → platform-lib}/services/VercelCli.ts +0 -0
  462. /package/src/{containers → container}/core/interfaces/ContainerOptions.ts +0 -0
  463. /package/src/{containers → container}/core/providers/NodeContainerProvider.ts +0 -0
@@ -1,12 +1,9 @@
1
- import * as _$alepha from "alepha";
2
1
  import { Alepha, AlephaError, FileLike, KIND, Primitive, Service, Static } from "alepha";
3
2
  import { FileDetector, FileSystemProvider } from "alepha/system";
4
3
  import { CryptoProvider } from "alepha/crypto";
5
4
  import * as fs from "node:fs";
6
- import * as _$alepha_logger0 from "alepha/logger";
7
5
  import { S3mini } from "s3mini";
8
6
  import { R2Bucket } from "@cloudflare/workers-types";
9
- import * as _$typebox from "typebox";
10
7
 
11
8
  //#region ../../src/bucket/providers/FileStorageProvider.d.ts
12
9
  declare abstract class FileStorageProvider {
@@ -50,6 +47,18 @@ declare abstract class FileStorageProvider {
50
47
  * @param fileIds - Identifiers of the files to delete
51
48
  */
52
49
  abstract deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
50
+ /**
51
+ * Lists the file identifiers stored in a bucket, like `ls` on a directory.
52
+ *
53
+ * This is a flat, unpaginated listing intended for small buckets. Providers
54
+ * cap the result at their natural page size (~1000 for S3/R2); anything beyond
55
+ * that is silently dropped. It is NOT a search API — use `alepha/api/files`
56
+ * when you need querying or pagination.
57
+ *
58
+ * @param bucketName - Container name
59
+ * @return The identifiers of the files in the bucket (empty if none).
60
+ */
61
+ abstract list(bucketName: string): Promise<string[]>;
53
62
  }
54
63
  //#endregion
55
64
  //#region ../../src/bucket/providers/MemoryFileStorageProvider.d.ts
@@ -69,6 +78,7 @@ declare class MemoryFileStorageProvider implements FileStorageProvider {
69
78
  exists(bucketName: string, fileId: string): Promise<boolean>;
70
79
  delete(bucketName: string, fileId: string): Promise<void>;
71
80
  deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
81
+ list(bucketName: string): Promise<string[]>;
72
82
  protected createId(): string;
73
83
  }
74
84
  //#endregion
@@ -280,6 +290,15 @@ declare class BucketPrimitive extends Primitive<BucketPrimitiveOptions> {
280
290
  * Checks if a file exists in the bucket.
281
291
  */
282
292
  exists(fileId: string): Promise<boolean>;
293
+ /**
294
+ * Lists the file identifiers stored in the bucket, like `ls` on a directory.
295
+ *
296
+ * This is a flat, unpaginated listing meant for small buckets — the result is
297
+ * capped at the provider's natural page size (~1000 for S3/R2) and anything
298
+ * beyond that is silently dropped. It is NOT a search API; reach for
299
+ * `alepha/api/files` when you need querying or pagination.
300
+ */
301
+ list(): Promise<string[]>;
283
302
  /**
284
303
  * Downloads a file from the bucket.
285
304
  */
@@ -308,7 +327,44 @@ declare class FileNotFoundError extends AlephaError {
308
327
  readonly status = 404;
309
328
  }
310
329
  //#endregion
311
- //#region ../../src/bucket/providers/CloudflareR2Provider.d.ts
330
+ //#region ../../src/bucket/providers/LocalFileStorageProvider.d.ts
331
+ /**
332
+ * Local file storage configuration atom
333
+ */
334
+ declare const localFileStorageOptions: import("alepha").Atom<import("typebox").TObject<{
335
+ storagePath: import("typebox").TString;
336
+ }>, "alepha.bucket.local.options">;
337
+ type LocalFileStorageProviderOptions = Static<typeof localFileStorageOptions.schema>;
338
+ declare module "alepha" {
339
+ interface State {
340
+ [localFileStorageOptions.key]: LocalFileStorageProviderOptions;
341
+ }
342
+ }
343
+ declare class LocalFileStorageProvider implements FileStorageProvider {
344
+ protected readonly alepha: Alepha;
345
+ protected readonly log: import("alepha/logger").Logger;
346
+ protected readonly fileDetector: FileDetector;
347
+ protected readonly fileSystemProvider: FileSystemProvider;
348
+ protected readonly crypto: CryptoProvider;
349
+ protected readonly options: Readonly<{
350
+ storagePath: string;
351
+ }>;
352
+ protected get storagePath(): string;
353
+ protected readonly onConfigure: import("alepha").HookPrimitive<"configure">;
354
+ protected readonly onStart: import("alepha").HookPrimitive<"start">;
355
+ upload(bucketName: string, file: FileLike, fileId?: string): Promise<string>;
356
+ download(bucketName: string, fileId: string): Promise<FileLike>;
357
+ exists(bucketName: string, fileId: string): Promise<boolean>;
358
+ delete(bucketName: string, fileId: string): Promise<void>;
359
+ deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
360
+ list(bucketName: string): Promise<string[]>;
361
+ protected stat(bucket: string, fileId: string): Promise<fs.Stats>;
362
+ protected createId(mimeType: string): string;
363
+ protected path(bucket: string, fileId?: string): string;
364
+ protected isErrorNoEntry(error: unknown): boolean;
365
+ }
366
+ //#endregion
367
+ //#region ../../src/bucket/providers/R2FileStorageProvider.d.ts
312
368
  /**
313
369
  * Cloudflare R2 storage provider.
314
370
  *
@@ -354,9 +410,9 @@ declare class FileNotFoundError extends AlephaError {
354
410
  * // Files stored at: myapp/avatars/uuid.png, myapp/documents/uuid.pdf
355
411
  * ```
356
412
  */
357
- declare class CloudflareR2Provider implements FileStorageProvider {
413
+ declare class R2FileStorageProvider implements FileStorageProvider {
358
414
  protected readonly alepha: Alepha;
359
- protected readonly log: _$alepha_logger0.Logger;
415
+ protected readonly log: import("alepha/logger").Logger;
360
416
  protected readonly crypto: CryptoProvider;
361
417
  protected readonly env: {
362
418
  R2_BUCKET_NAME: string;
@@ -371,12 +427,13 @@ declare class CloudflareR2Provider implements FileStorageProvider {
371
427
  * Used for multi-app setups sharing the same R2 bucket.
372
428
  */
373
429
  get prefix(): string | undefined;
374
- protected readonly onStart: _$alepha.HookPrimitive<"start">;
430
+ protected readonly onStart: import("alepha").HookPrimitive<"start">;
375
431
  upload(bucketName: string, file: FileLike, fileId?: string): Promise<string>;
376
432
  download(bucketName: string, fileId: string): Promise<FileLike>;
377
433
  exists(bucketName: string, fileId: string): Promise<boolean>;
378
434
  delete(bucketName: string, fileId: string): Promise<void>;
379
435
  deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
436
+ list(bucketName: string): Promise<string[]>;
380
437
  /**
381
438
  * Build the full R2 key: {prefix}/{bucketName}/{fileId}
382
439
  */
@@ -385,44 +442,8 @@ declare class CloudflareR2Provider implements FileStorageProvider {
385
442
  protected createId(filename: string): string;
386
443
  }
387
444
  //#endregion
388
- //#region ../../src/bucket/providers/LocalFileStorageProvider.d.ts
389
- /**
390
- * Local file storage configuration atom
391
- */
392
- declare const localFileStorageOptions: _$alepha.Atom<_$typebox.TObject<{
393
- storagePath: _$typebox.TString;
394
- }>, "alepha.bucket.local.options">;
395
- type LocalFileStorageProviderOptions = Static<typeof localFileStorageOptions.schema>;
396
- declare module "alepha" {
397
- interface State {
398
- [localFileStorageOptions.key]: LocalFileStorageProviderOptions;
399
- }
400
- }
401
- declare class LocalFileStorageProvider implements FileStorageProvider {
402
- protected readonly alepha: Alepha;
403
- protected readonly log: _$alepha_logger0.Logger;
404
- protected readonly fileDetector: FileDetector;
405
- protected readonly fileSystemProvider: FileSystemProvider;
406
- protected readonly crypto: CryptoProvider;
407
- protected readonly options: Readonly<{
408
- storagePath: string;
409
- }>;
410
- protected get storagePath(): string;
411
- protected readonly onConfigure: _$alepha.HookPrimitive<"configure">;
412
- protected readonly onStart: _$alepha.HookPrimitive<"start">;
413
- upload(bucketName: string, file: FileLike, fileId?: string): Promise<string>;
414
- download(bucketName: string, fileId: string): Promise<FileLike>;
415
- exists(bucketName: string, fileId: string): Promise<boolean>;
416
- delete(bucketName: string, fileId: string): Promise<void>;
417
- deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
418
- protected stat(bucket: string, fileId: string): Promise<fs.Stats>;
419
- protected createId(mimeType: string): string;
420
- protected path(bucket: string, fileId?: string): string;
421
- protected isErrorNoEntry(error: unknown): boolean;
422
- }
423
- //#endregion
424
- //#region ../../src/bucket/providers/NodeS3BucketProvider.d.ts
425
- declare const envSchema: _$alepha.TObject<{
445
+ //#region ../../src/bucket/providers/S3FileStorageProvider.d.ts
446
+ declare const envSchema: import("alepha").TObject<{
426
447
  /**
427
448
  * S3 endpoint URL. The bucket name is appended (path-style) per request.
428
449
  *
@@ -432,21 +453,21 @@ declare const envSchema: _$alepha.TObject<{
432
453
  * - MinIO: `http://localhost:9000`
433
454
  * - DigitalOcean Spaces: `https://<region>.digitaloceanspaces.com`
434
455
  */
435
- S3_ENDPOINT: _$alepha.TString;
456
+ S3_ENDPOINT: import("alepha").TString;
436
457
  /**
437
458
  * AWS region or "auto" for R2.
438
459
  *
439
460
  * @default "auto"
440
461
  */
441
- S3_REGION: _$alepha.TOptional<_$alepha.TString>;
462
+ S3_REGION: import("alepha").TOptional<import("alepha").TString>;
442
463
  /**
443
464
  * Access key ID for S3 authentication.
444
465
  */
445
- S3_ACCESS_KEY_ID: _$alepha.TString;
466
+ S3_ACCESS_KEY_ID: import("alepha").TString;
446
467
  /**
447
468
  * Secret access key for S3 authentication.
448
469
  */
449
- S3_SECRET_ACCESS_KEY: _$alepha.TString;
470
+ S3_SECRET_ACCESS_KEY: import("alepha").TString;
450
471
  }>;
451
472
  declare module "alepha" {
452
473
  interface Env extends Partial<Static<typeof envSchema>> {}
@@ -459,8 +480,8 @@ declare module "alepha" {
459
480
  *
460
481
  * Uses path-style addressing (`<endpoint>/<bucket>`).
461
482
  */
462
- declare class NodeS3BucketProvider implements FileStorageProvider {
463
- protected readonly log: _$alepha_logger0.Logger;
483
+ declare class S3FileStorageProvider implements FileStorageProvider {
484
+ protected readonly log: import("alepha/logger").Logger;
464
485
  protected readonly env: {
465
486
  S3_REGION?: string | undefined;
466
487
  S3_ENDPOINT: string;
@@ -478,12 +499,13 @@ declare class NodeS3BucketProvider implements FileStorageProvider {
478
499
  */
479
500
  convertName(name: string): string;
480
501
  protected getClient(bucketName: string): S3mini;
481
- protected readonly onStart: _$alepha.HookPrimitive<"start">;
502
+ protected readonly onStart: import("alepha").HookPrimitive<"start">;
482
503
  protected createId(mimeType: string): string;
483
504
  upload(bucketName: string, file: FileLike, fileId?: string): Promise<string>;
484
505
  download(bucketName: string, fileId: string): Promise<FileLike>;
485
506
  exists(bucketName: string, fileId: string): Promise<boolean>;
486
507
  delete(bucketName: string, fileId: string): Promise<void>;
508
+ list(bucketName: string): Promise<string[]>;
487
509
  deleteMany(bucketName: string, fileIds: string[]): Promise<void>;
488
510
  }
489
511
  //#endregion
@@ -531,7 +553,7 @@ declare module "alepha" {
531
553
  *
532
554
  * @module alepha.bucket
533
555
  */
534
- declare const AlephaBucket: _$alepha.Service<_$alepha.Module>;
556
+ declare const AlephaBucket: import("alepha").Service<import("alepha").Module>;
535
557
  //#endregion
536
- export { $bucket, AlephaBucket, BucketFileOptions, BucketPrimitive, BucketPrimitiveOptions, CloudflareR2Provider, FileNotFoundError, FileStorageProvider, LocalFileStorageProvider, LocalFileStorageProviderOptions, MemoryFileStorageProvider, NodeS3BucketProvider, localFileStorageOptions };
558
+ export { $bucket, AlephaBucket, BucketFileOptions, BucketPrimitive, BucketPrimitiveOptions, FileNotFoundError, FileStorageProvider, LocalFileStorageProvider, LocalFileStorageProviderOptions, MemoryFileStorageProvider, R2FileStorageProvider, S3FileStorageProvider, localFileStorageOptions };
537
559
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/bucket/providers/FileStorageProvider.ts","../../src/bucket/providers/MemoryFileStorageProvider.ts","../../src/bucket/primitives/$bucket.ts","../../src/bucket/errors/FileNotFoundError.ts","../../src/bucket/providers/CloudflareR2Provider.ts","../../src/bucket/providers/LocalFileStorageProvider.ts","../../src/bucket/providers/NodeS3BucketProvider.ts","../../src/bucket/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/bucket/providers/FileStorageProvider.ts","../../src/bucket/providers/MemoryFileStorageProvider.ts","../../src/bucket/primitives/$bucket.ts","../../src/bucket/errors/FileNotFoundError.ts","../../src/bucket/providers/LocalFileStorageProvider.ts","../../src/bucket/providers/R2FileStorageProvider.ts","../../src/bucket/providers/S3FileStorageProvider.ts","../../src/bucket/index.ts"],"mappings":"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"}
@@ -2,11 +2,12 @@ import { $atom, $env, $hook, $inject, $module, $state, Alepha, AlephaError, KIND
2
2
  import { FileDetector, FileSystemProvider } from "alepha/system";
3
3
  import { CryptoProvider } from "alepha/crypto";
4
4
  import { createReadStream } from "node:fs";
5
- import { mkdir, stat, unlink } from "node:fs/promises";
5
+ import { mkdir, readdir, stat, unlink } from "node:fs/promises";
6
6
  import { tmpdir } from "node:os";
7
7
  import { join } from "node:path";
8
8
  import { $logger } from "alepha/logger";
9
9
  import { Buffer as Buffer$1 } from "node:buffer";
10
+ import { Readable } from "node:stream";
10
11
  import { S3mini } from "s3mini";
11
12
  //#region ../../src/bucket/errors/InvalidFileError.ts
12
13
  var InvalidFileError = class extends AlephaError {
@@ -62,6 +63,10 @@ var MemoryFileStorageProvider = class {
62
63
  async deleteMany(bucketName, fileIds) {
63
64
  for (const id of fileIds) delete this.files[`${bucketName}/${id}`];
64
65
  }
66
+ async list(bucketName) {
67
+ const prefix = `${bucketName}/`;
68
+ return Object.keys(this.files).filter((key) => key.startsWith(prefix)).map((key) => key.slice(prefix.length));
69
+ }
65
70
  createId() {
66
71
  return this.crypto.randomUUID();
67
72
  }
@@ -139,6 +144,11 @@ var BucketPrimitive = class extends Primitive {
139
144
  const mimeType = file.type || "application/octet-stream";
140
145
  if (!mimeTypes.includes(mimeType)) throw new InvalidFileError(`MIME type ${mimeType} is not allowed in bucket ${this.name}`);
141
146
  }
147
+ if (file.size === 0) file = this.fileSystem.createFile({
148
+ arrayBuffer: await file.arrayBuffer(),
149
+ name: file.name,
150
+ type: file.type
151
+ });
142
152
  if (file.size > maxSize * 1024 * 1024) throw new InvalidFileError(`File size ${file.size} exceeds the maximum size of ${maxSize} MB in bucket ${this.name}`);
143
153
  const id = await this.provider.upload(this.name, file);
144
154
  await this.alepha.events.emit("bucket:file:uploaded", {
@@ -181,6 +191,17 @@ var BucketPrimitive = class extends Primitive {
181
191
  return this.provider.exists(this.name, fileId);
182
192
  }
183
193
  /**
194
+ * Lists the file identifiers stored in the bucket, like `ls` on a directory.
195
+ *
196
+ * This is a flat, unpaginated listing meant for small buckets — the result is
197
+ * capped at the provider's natural page size (~1000 for S3/R2) and anything
198
+ * beyond that is silently dropped. It is NOT a search API; reach for
199
+ * `alepha/api/files` when you need querying or pagination.
200
+ */
201
+ async list() {
202
+ return this.provider.list(this.name);
203
+ }
204
+ /**
184
205
  * Downloads a file from the bucket.
185
206
  */
186
207
  async download(fileId) {
@@ -283,6 +304,14 @@ var LocalFileStorageProvider = class {
283
304
  throw new AlephaError("Error deleting file", { cause: error });
284
305
  })));
285
306
  }
307
+ async list(bucketName) {
308
+ try {
309
+ return (await readdir(this.path(bucketName), { withFileTypes: true })).filter((entry) => entry.isFile()).map((entry) => entry.name);
310
+ } catch (error) {
311
+ if (this.isErrorNoEntry(error)) return [];
312
+ throw new AlephaError("Error listing files", { cause: error });
313
+ }
314
+ }
286
315
  stat(bucket, fileId) {
287
316
  return stat(this.path(bucket, fileId));
288
317
  }
@@ -298,7 +327,7 @@ var LocalFileStorageProvider = class {
298
327
  }
299
328
  };
300
329
  //#endregion
301
- //#region ../../src/bucket/providers/NodeS3BucketProvider.ts
330
+ //#region ../../src/bucket/providers/S3FileStorageProvider.ts
302
331
  const envSchema = t.object({
303
332
  /**
304
333
  * S3 endpoint URL. The bucket name is appended (path-style) per request.
@@ -333,7 +362,7 @@ const envSchema = t.object({
333
362
  *
334
363
  * Uses path-style addressing (`<endpoint>/<bucket>`).
335
364
  */
336
- var NodeS3BucketProvider = class {
365
+ var S3FileStorageProvider = class {
337
366
  log = $logger();
338
367
  env = $env(envSchema);
339
368
  alepha = $inject(Alepha);
@@ -402,15 +431,21 @@ var NodeS3BucketProvider = class {
402
431
  this.log.trace(`Downloading file '${fileId}' from bucket '${bucketName}'...`);
403
432
  const response = await this.getClient(bucketName).getObjectResponse(fileId);
404
433
  if (!response) throw new FileNotFoundError(`File '${fileId}' not found in bucket '${bucketName}'`);
405
- const buffer = Buffer$1.from(await response.arrayBuffer());
406
434
  const mimeType = response.headers.get("content-type") || this.fileDetector.getContentType(fileId);
407
435
  const metaName = response.headers.get("x-amz-meta-name");
408
436
  const name = metaName ? decodeURIComponent(metaName) : fileId;
437
+ const contentLength = response.headers.get("content-length");
438
+ const size = contentLength ? Number.parseInt(contentLength, 10) : 0;
439
+ if (!response.body) return this.fileSystem.createFile({
440
+ buffer: Buffer$1.alloc(0),
441
+ name,
442
+ type: mimeType
443
+ });
409
444
  return this.fileSystem.createFile({
410
- buffer,
445
+ stream: Readable.fromWeb(response.body),
411
446
  name,
412
447
  type: mimeType,
413
- size: buffer.length
448
+ size
414
449
  });
415
450
  }
416
451
  async exists(bucketName, fileId) {
@@ -428,6 +463,12 @@ var NodeS3BucketProvider = class {
428
463
  throw error;
429
464
  }
430
465
  }
466
+ async list(bucketName) {
467
+ this.log.trace(`Listing files in bucket '${bucketName}'...`);
468
+ const objects = await this.getClient(bucketName).listObjects();
469
+ if (!objects) return [];
470
+ return objects.map((object) => object.Key);
471
+ }
431
472
  async deleteMany(bucketName, fileIds) {
432
473
  if (fileIds.length === 0) return;
433
474
  this.log.trace(`Deleting ${fileIds.length} files from bucket '${bucketName}'...`);
@@ -447,7 +488,7 @@ var NodeS3BucketProvider = class {
447
488
  }
448
489
  };
449
490
  //#endregion
450
- //#region ../../src/bucket/providers/CloudflareR2Provider.ts
491
+ //#region ../../src/bucket/providers/R2FileStorageProvider.ts
451
492
  /**
452
493
  * Cloudflare R2 storage provider.
453
494
  *
@@ -493,7 +534,7 @@ var NodeS3BucketProvider = class {
493
534
  * // Files stored at: myapp/avatars/uuid.png, myapp/documents/uuid.pdf
494
535
  * ```
495
536
  */
496
- var CloudflareR2Provider = class {
537
+ var R2FileStorageProvider = class {
497
538
  alepha = $inject(Alepha);
498
539
  log = $logger();
499
540
  crypto = $inject(CryptoProvider);
@@ -583,6 +624,12 @@ R2_BUCKET_NAME: t.string({ description: "R2 bucket name in Cloudflare" }) }));
583
624
  this.log.trace(`Deleting ${keys.length} keys from '${bucketName}'`);
584
625
  for (let i = 0; i < keys.length; i += 1e3) await r2.delete(keys.slice(i, i + 1e3));
585
626
  }
627
+ async list(bucketName) {
628
+ const r2 = this.getR2();
629
+ const keyPrefix = this.key(bucketName, "");
630
+ this.log.trace(`Listing files in '${keyPrefix}'`);
631
+ return (await r2.list({ prefix: keyPrefix })).objects.map((object) => object.key.slice(keyPrefix.length));
632
+ }
586
633
  /**
587
634
  * Build the full R2 key: {prefix}/{bucketName}/{fileId}
588
635
  */
@@ -624,18 +671,18 @@ const AlephaBucket = $module({
624
671
  variants: [
625
672
  MemoryFileStorageProvider,
626
673
  LocalFileStorageProvider,
627
- NodeS3BucketProvider
674
+ S3FileStorageProvider
628
675
  ],
629
676
  register: (alepha) => {
630
677
  const useS3 = !!alepha.env.S3_ENDPOINT;
631
678
  alepha.with({
632
679
  optional: true,
633
680
  provide: FileStorageProvider,
634
- use: alepha.isTest() || alepha.isServerless() ? MemoryFileStorageProvider : useS3 ? NodeS3BucketProvider : LocalFileStorageProvider
681
+ use: alepha.isTest() || alepha.isServerless() ? MemoryFileStorageProvider : useS3 ? S3FileStorageProvider : LocalFileStorageProvider
635
682
  });
636
683
  }
637
684
  });
638
685
  //#endregion
639
- export { $bucket, AlephaBucket, BucketPrimitive, CloudflareR2Provider, FileNotFoundError, FileStorageProvider, LocalFileStorageProvider, MemoryFileStorageProvider, NodeS3BucketProvider, localFileStorageOptions };
686
+ export { $bucket, AlephaBucket, BucketPrimitive, FileNotFoundError, FileStorageProvider, LocalFileStorageProvider, MemoryFileStorageProvider, R2FileStorageProvider, S3FileStorageProvider, localFileStorageOptions };
640
687
 
641
688
  //# sourceMappingURL=index.js.map