alepha 0.19.0 → 0.19.2

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 (638) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -9
  3. package/dist/api/audits/index.d.ts +378 -346
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/files/index.d.ts +216 -184
  6. package/dist/api/files/index.d.ts.map +1 -1
  7. package/dist/api/files/index.js +5 -1
  8. package/dist/api/files/index.js.map +1 -1
  9. package/dist/api/jobs/index.d.ts +528 -496
  10. package/dist/api/jobs/index.d.ts.map +1 -1
  11. package/dist/api/jobs/index.js +3 -3
  12. package/dist/api/jobs/index.js.map +1 -1
  13. package/dist/api/keys/index.d.ts +202 -202
  14. package/dist/api/keys/index.d.ts.map +1 -1
  15. package/dist/api/notifications/index.d.ts +152 -152
  16. package/dist/api/notifications/index.d.ts.map +1 -1
  17. package/dist/api/organizations/index.browser.js +48 -0
  18. package/dist/api/organizations/index.browser.js.map +1 -0
  19. package/dist/api/organizations/index.d.ts +516 -0
  20. package/dist/api/organizations/index.d.ts.map +1 -0
  21. package/dist/api/organizations/index.js +202 -0
  22. package/dist/api/organizations/index.js.map +1 -0
  23. package/dist/api/parameters/index.d.ts +391 -358
  24. package/dist/api/parameters/index.d.ts.map +1 -1
  25. package/dist/api/parameters/index.js +5 -1
  26. package/dist/api/parameters/index.js.map +1 -1
  27. package/dist/api/users/index.browser.js +7 -5
  28. package/dist/api/users/index.browser.js.map +1 -1
  29. package/dist/api/users/index.d.ts +989 -931
  30. package/dist/api/users/index.d.ts.map +1 -1
  31. package/dist/api/users/index.js +292 -146
  32. package/dist/api/users/index.js.map +1 -1
  33. package/dist/api/verifications/index.d.ts +132 -132
  34. package/dist/api/verifications/index.d.ts.map +1 -1
  35. package/dist/api/verifications/index.js +2 -2
  36. package/dist/api/verifications/index.js.map +1 -1
  37. package/dist/batch/index.d.ts +6 -6
  38. package/dist/batch/index.d.ts.map +1 -1
  39. package/dist/billing/index.d.ts +1048 -0
  40. package/dist/billing/index.d.ts.map +1 -0
  41. package/dist/billing/index.js +713 -0
  42. package/dist/billing/index.js.map +1 -0
  43. package/dist/bin/index.js +0 -2
  44. package/dist/bin/index.js.map +1 -1
  45. package/dist/bucket/index.d.ts +10 -10
  46. package/dist/bucket/index.d.ts.map +1 -1
  47. package/dist/bucket/index.js +2 -2
  48. package/dist/bucket/index.js.map +1 -1
  49. package/dist/cache/core/index.d.ts +9 -9
  50. package/dist/cache/core/index.d.ts.map +1 -1
  51. package/dist/cache/core/index.js +2 -2
  52. package/dist/cache/core/index.js.map +1 -1
  53. package/dist/cache/core/index.workerd.js +2 -2
  54. package/dist/cache/core/index.workerd.js.map +1 -1
  55. package/dist/cache/redis/index.d.ts +6 -6
  56. package/dist/cache/redis/index.d.ts.map +1 -1
  57. package/dist/cache/redis/index.js +2 -2
  58. package/dist/cache/redis/index.js.map +1 -1
  59. package/dist/cli/config/index.d.ts +12 -2
  60. package/dist/cli/config/index.d.ts.map +1 -1
  61. package/dist/cli/config/index.js +4 -0
  62. package/dist/cli/config/index.js.map +1 -1
  63. package/dist/cli/core/index.d.ts +183 -139
  64. package/dist/cli/core/index.d.ts.map +1 -1
  65. package/dist/cli/core/index.js +283 -86
  66. package/dist/cli/core/index.js.map +1 -1
  67. package/dist/cli/devtools/index.d.ts +45 -0
  68. package/dist/cli/devtools/index.d.ts.map +1 -0
  69. package/dist/cli/devtools/index.js +170 -0
  70. package/dist/cli/devtools/index.js.map +1 -0
  71. package/dist/cli/platform/index.d.ts +383 -492
  72. package/dist/cli/platform/index.d.ts.map +1 -1
  73. package/dist/cli/platform/index.js +42 -511
  74. package/dist/cli/platform/index.js.map +1 -1
  75. package/dist/cli/vendor/index.d.ts +196 -0
  76. package/dist/cli/vendor/index.d.ts.map +1 -0
  77. package/dist/cli/vendor/index.js +384 -0
  78. package/dist/cli/vendor/index.js.map +1 -0
  79. package/dist/command/index.d.ts +18 -18
  80. package/dist/command/index.d.ts.map +1 -1
  81. package/dist/command/index.js +2 -2
  82. package/dist/command/index.js.map +1 -1
  83. package/dist/core/index.browser.js +4 -4
  84. package/dist/core/index.browser.js.map +1 -1
  85. package/dist/core/index.d.ts +10 -10
  86. package/dist/core/index.d.ts.map +1 -1
  87. package/dist/core/index.js +4 -4
  88. package/dist/core/index.js.map +1 -1
  89. package/dist/core/index.native.js +4 -4
  90. package/dist/core/index.native.js.map +1 -1
  91. package/dist/core/index.workerd.js +4 -4
  92. package/dist/core/index.workerd.js.map +1 -1
  93. package/dist/crypto/index.d.ts +7 -7
  94. package/dist/crypto/index.d.ts.map +1 -1
  95. package/dist/datetime/index.d.ts +4 -4
  96. package/dist/datetime/index.d.ts.map +1 -1
  97. package/dist/email/brevo/index.d.ts +4 -4
  98. package/dist/email/brevo/index.d.ts.map +1 -1
  99. package/dist/email/core/index.d.ts +15 -11
  100. package/dist/email/core/index.d.ts.map +1 -1
  101. package/dist/email/core/index.js +12 -35
  102. package/dist/email/core/index.js.map +1 -1
  103. package/dist/email/smtp/index.d.ts +12 -12
  104. package/dist/email/smtp/index.d.ts.map +1 -1
  105. package/dist/email/smtp/index.js +7 -4
  106. package/dist/email/smtp/index.js.map +1 -1
  107. package/dist/fake/index.d.ts +4 -8
  108. package/dist/fake/index.d.ts.map +1 -1
  109. package/dist/fake/index.js +55 -889
  110. package/dist/fake/index.js.map +1 -1
  111. package/dist/lock/core/index.d.ts +13 -13
  112. package/dist/lock/core/index.d.ts.map +1 -1
  113. package/dist/lock/core/index.js +2 -2
  114. package/dist/lock/core/index.js.map +1 -1
  115. package/dist/lock/redis/index.d.ts +4 -4
  116. package/dist/lock/redis/index.d.ts.map +1 -1
  117. package/dist/logger/index.d.ts +16 -15
  118. package/dist/logger/index.d.ts.map +1 -1
  119. package/dist/logger/index.js +5 -2
  120. package/dist/logger/index.js.map +1 -1
  121. package/dist/mcp/index.d.ts +11 -11
  122. package/dist/mcp/index.d.ts.map +1 -1
  123. package/dist/mcp/index.js +2 -2
  124. package/dist/mcp/index.js.map +1 -1
  125. package/dist/orm/core/index.browser.js +11 -1
  126. package/dist/orm/core/index.browser.js.map +1 -1
  127. package/dist/orm/core/index.bun.js +53 -16
  128. package/dist/orm/core/index.bun.js.map +1 -1
  129. package/dist/orm/core/index.d.ts +95 -51
  130. package/dist/orm/core/index.d.ts.map +1 -1
  131. package/dist/orm/core/index.js +55 -14
  132. package/dist/orm/core/index.js.map +1 -1
  133. package/dist/orm/postgres/index.bun.js +17 -11
  134. package/dist/orm/postgres/index.bun.js.map +1 -1
  135. package/dist/orm/postgres/index.d.ts +21 -15
  136. package/dist/orm/postgres/index.d.ts.map +1 -1
  137. package/dist/orm/postgres/index.js +19 -13
  138. package/dist/orm/postgres/index.js.map +1 -1
  139. package/dist/queue/core/index.d.ts +14 -14
  140. package/dist/queue/core/index.d.ts.map +1 -1
  141. package/dist/queue/core/index.js +2 -2
  142. package/dist/queue/core/index.js.map +1 -1
  143. package/dist/queue/core/index.workerd.js +2 -2
  144. package/dist/queue/core/index.workerd.js.map +1 -1
  145. package/dist/queue/redis/index.d.ts +4 -4
  146. package/dist/queue/redis/index.d.ts.map +1 -1
  147. package/dist/queue/redis/index.js +2 -2
  148. package/dist/queue/redis/index.js.map +1 -1
  149. package/dist/react/auth/index.d.ts +9 -9
  150. package/dist/react/auth/index.d.ts.map +1 -1
  151. package/dist/react/core/index.d.ts +6 -6
  152. package/dist/react/core/index.d.ts.map +1 -1
  153. package/dist/react/core/index.js +5 -4
  154. package/dist/react/core/index.js.map +1 -1
  155. package/dist/react/form/index.d.ts +4 -4
  156. package/dist/react/form/index.d.ts.map +1 -1
  157. package/dist/react/head/index.d.ts +4 -4
  158. package/dist/react/head/index.d.ts.map +1 -1
  159. package/dist/react/i18n/index.d.ts +9 -9
  160. package/dist/react/i18n/index.d.ts.map +1 -1
  161. package/dist/react/intro/index.d.ts +2 -2
  162. package/dist/react/intro/index.d.ts.map +1 -1
  163. package/dist/react/intro/index.js +3 -4
  164. package/dist/react/intro/index.js.map +1 -1
  165. package/dist/react/router/index.browser.js +4 -5
  166. package/dist/react/router/index.browser.js.map +1 -1
  167. package/dist/react/router/index.d.ts +215 -215
  168. package/dist/react/router/index.d.ts.map +1 -1
  169. package/dist/react/router/index.js +6 -7
  170. package/dist/react/router/index.js.map +1 -1
  171. package/dist/react/testing/index.d.ts +2 -2
  172. package/dist/react/testing/index.d.ts.map +1 -1
  173. package/dist/react/testing/index.js +2 -4
  174. package/dist/react/testing/index.js.map +1 -1
  175. package/dist/redis/index.d.ts +19 -19
  176. package/dist/redis/index.d.ts.map +1 -1
  177. package/dist/retry/index.d.ts +4 -4
  178. package/dist/retry/index.d.ts.map +1 -1
  179. package/dist/scheduler/index.d.ts +13 -13
  180. package/dist/scheduler/index.d.ts.map +1 -1
  181. package/dist/scheduler/index.js +2 -2
  182. package/dist/scheduler/index.js.map +1 -1
  183. package/dist/scheduler/index.workerd.js +2 -2
  184. package/dist/scheduler/index.workerd.js.map +1 -1
  185. package/dist/security/index.browser.js +1 -1
  186. package/dist/security/index.browser.js.map +1 -1
  187. package/dist/security/index.d.ts +47 -47
  188. package/dist/security/index.d.ts.map +1 -1
  189. package/dist/security/index.js +9 -12
  190. package/dist/security/index.js.map +1 -1
  191. package/dist/server/auth/index.d.ts +170 -169
  192. package/dist/server/auth/index.d.ts.map +1 -1
  193. package/dist/server/auth/index.js +16 -2
  194. package/dist/server/auth/index.js.map +1 -1
  195. package/dist/server/cookies/index.d.ts +7 -7
  196. package/dist/server/cookies/index.d.ts.map +1 -1
  197. package/dist/server/core/index.d.ts +76 -76
  198. package/dist/server/core/index.d.ts.map +1 -1
  199. package/dist/server/core/index.js +23 -17
  200. package/dist/server/core/index.js.map +1 -1
  201. package/dist/server/cors/index.d.ts +13 -13
  202. package/dist/server/cors/index.d.ts.map +1 -1
  203. package/dist/server/cors/index.js +2 -2
  204. package/dist/server/cors/index.js.map +1 -1
  205. package/dist/server/etag/index.d.ts +9 -9
  206. package/dist/server/etag/index.d.ts.map +1 -1
  207. package/dist/server/health/index.d.ts +20 -20
  208. package/dist/server/health/index.d.ts.map +1 -1
  209. package/dist/server/links/index.browser.js +2 -2
  210. package/dist/server/links/index.browser.js.map +1 -1
  211. package/dist/server/links/index.d.ts +66 -66
  212. package/dist/server/links/index.d.ts.map +1 -1
  213. package/dist/server/links/index.js +4 -4
  214. package/dist/server/links/index.js.map +1 -1
  215. package/dist/server/metrics/index.d.ts +7 -7
  216. package/dist/server/metrics/index.d.ts.map +1 -1
  217. package/dist/server/proxy/index.d.ts +5 -5
  218. package/dist/server/proxy/index.d.ts.map +1 -1
  219. package/dist/server/rate-limit/index.d.ts +12 -12
  220. package/dist/server/rate-limit/index.d.ts.map +1 -1
  221. package/dist/server/rate-limit/index.js +2 -2
  222. package/dist/server/rate-limit/index.js.map +1 -1
  223. package/dist/server/static/index.d.ts +5 -5
  224. package/dist/server/static/index.d.ts.map +1 -1
  225. package/dist/server/swagger/index.d.ts +7 -7
  226. package/dist/server/swagger/index.d.ts.map +1 -1
  227. package/dist/server/swagger/index.js +2 -2
  228. package/dist/server/swagger/index.js.map +1 -1
  229. package/dist/sms/index.d.ts +11 -7
  230. package/dist/sms/index.d.ts.map +1 -1
  231. package/dist/sms/index.js +9 -15
  232. package/dist/sms/index.js.map +1 -1
  233. package/dist/system/index.d.ts +4 -4
  234. package/dist/system/index.d.ts.map +1 -1
  235. package/dist/topic/core/index.d.ts +6 -6
  236. package/dist/topic/core/index.d.ts.map +1 -1
  237. package/dist/topic/redis/index.d.ts +7 -7
  238. package/dist/topic/redis/index.d.ts.map +1 -1
  239. package/dist/topic/redis/index.js +2 -2
  240. package/dist/topic/redis/index.js.map +1 -1
  241. package/dist/websocket/index.d.ts +36 -36
  242. package/dist/websocket/index.d.ts.map +1 -1
  243. package/dist/websocket/index.js +2 -2
  244. package/dist/websocket/index.js.map +1 -1
  245. package/package.json +37 -32
  246. package/src/api/files/{controllers → __tests__}/FileController.spec.ts +189 -143
  247. package/src/api/files/{services → __tests__}/FileService.spec.ts +50 -30
  248. package/src/api/files/controllers/FileController.ts +6 -0
  249. package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
  250. package/src/api/jobs/providers/JobProvider.ts +3 -3
  251. package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
  252. package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
  253. package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
  254. package/src/api/organizations/entities/organizations.ts +20 -0
  255. package/src/api/organizations/index.browser.ts +10 -0
  256. package/src/api/organizations/index.ts +31 -0
  257. package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
  258. package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
  259. package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
  260. package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
  261. package/src/api/organizations/services/OrganizationService.ts +75 -0
  262. package/src/api/parameters/services/ParameterProvider.ts +6 -1
  263. package/src/api/users/__tests__/$realm.spec.ts +191 -0
  264. package/src/api/users/__tests__/RealmProvider.spec.ts +53 -0
  265. package/src/api/users/__tests__/SessionService.spec.ts +778 -0
  266. package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
  267. package/src/api/users/atoms/realmAuthSettingsAtom.ts +24 -0
  268. package/src/api/users/controllers/RealmController.ts +5 -11
  269. package/src/api/users/entities/users.ts +9 -3
  270. package/src/api/users/index.ts +23 -3
  271. package/src/api/users/primitives/$realm.ts +23 -11
  272. package/src/api/users/providers/RealmProvider.ts +23 -3
  273. package/src/api/users/services/RegistrationService.ts +3 -2
  274. package/src/api/users/services/SessionService.ts +249 -8
  275. package/src/api/users/services/UserService.ts +1 -1
  276. package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
  277. package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
  278. package/src/billing/__tests__/BillingService.spec.ts +136 -0
  279. package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
  280. package/src/billing/controllers/AdminBillingController.ts +149 -0
  281. package/src/billing/controllers/BillingController.ts +108 -0
  282. package/src/billing/entities/paymentIntents.ts +34 -0
  283. package/src/billing/entities/paymentMethods.ts +24 -0
  284. package/src/billing/entities/refunds.ts +22 -0
  285. package/src/billing/errors/BillingError.ts +5 -0
  286. package/src/billing/index.ts +76 -0
  287. package/src/billing/providers/BillingProvider.ts +79 -0
  288. package/src/billing/providers/MemoryBillingProvider.ts +139 -0
  289. package/src/billing/schemas/intentSchemas.ts +60 -0
  290. package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
  291. package/src/billing/schemas/refundSchemas.ts +6 -0
  292. package/src/billing/services/BillingService.ts +325 -0
  293. package/src/billing/services/PaymentMethodService.ts +82 -0
  294. package/src/bin/index.ts +0 -2
  295. package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
  296. package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
  297. package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
  298. package/src/cache/core/primitives/$cache.ts +2 -2
  299. package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
  300. package/src/cli/config/defineConfig.ts +20 -0
  301. package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
  302. package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
  303. package/src/cli/core/{commands → __tests__}/init.spec.ts +4 -12
  304. package/src/cli/core/assets.ts +0 -1
  305. package/src/cli/core/atoms/devOptions.ts +0 -5
  306. package/src/cli/core/commands/build.ts +2 -2
  307. package/src/cli/core/commands/dev.ts +165 -30
  308. package/src/cli/core/commands/gen/changelog.ts +2 -2
  309. package/src/cli/core/commands/init.ts +2 -7
  310. package/src/cli/core/commands/verify.ts +0 -1
  311. package/src/cli/core/providers/AppEntryProvider.ts +2 -2
  312. package/src/cli/core/providers/ViteDevServerProvider.ts +53 -46
  313. package/src/cli/core/services/PackageManagerUtils.ts +8 -3
  314. package/src/cli/core/services/ProjectScaffolder.ts +20 -20
  315. package/src/cli/core/tasks/BuildClientTask.ts +8 -0
  316. package/src/cli/core/tasks/BuildServerTask.ts +17 -4
  317. package/src/cli/core/templates/alephaConfigTs.ts +0 -6
  318. package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
  319. package/src/cli/core/templates/webAppRouterTs.ts +85 -2
  320. package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
  321. package/src/cli/devtools/index.ts +194 -0
  322. package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
  323. package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
  324. package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
  325. package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
  326. package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
  327. package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
  328. package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
  329. package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
  330. package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
  331. package/src/cli/platform/atoms/platformOptions.ts +2 -10
  332. package/src/cli/platform/commands/SecretsCommand.ts +2 -2
  333. package/src/cli/platform/commands/platform.ts +2 -11
  334. package/src/cli/platform/index.ts +34 -11
  335. package/src/cli/platform/services/PlatformInspector.ts +2 -2
  336. package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
  337. package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
  338. package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
  339. package/src/cli/vendor/commands/VendorCommand.ts +204 -0
  340. package/src/cli/vendor/index.ts +43 -0
  341. package/src/cli/vendor/services/VendorService.ts +338 -0
  342. package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
  343. package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
  344. package/src/command/providers/CliProvider.ts +2 -2
  345. package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
  346. package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
  347. package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
  348. package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
  349. package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
  350. package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
  351. package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
  352. package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
  353. package/src/core/index.shared.ts +1 -1
  354. package/src/core/primitives/{$use.ts → $state.ts} +4 -4
  355. package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
  356. package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
  357. package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
  358. package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
  359. package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
  360. package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
  361. package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
  362. package/src/email/core/providers/LocalEmailProvider.ts +13 -51
  363. package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
  364. package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
  365. package/src/lock/core/primitives/$lock.ts +2 -2
  366. package/src/logger/index.ts +10 -4
  367. package/src/mcp/transports/SseMcpTransport.ts +2 -2
  368. package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
  369. package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
  370. package/src/orm/__tests__/organization-tests.ts +200 -0
  371. package/src/orm/__tests__/organization.spec.ts +103 -0
  372. package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
  373. package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
  374. package/src/orm/core/index.shared.ts +1 -0
  375. package/src/orm/core/primitives/$entity.ts +31 -0
  376. package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
  377. package/src/orm/core/providers/DrizzleKitProvider.ts +1 -1
  378. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
  379. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
  380. package/src/orm/core/services/ModelBuilder.ts +11 -0
  381. package/src/orm/core/services/QueryManager.ts +16 -2
  382. package/src/orm/core/services/Repository.ts +70 -10
  383. package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
  384. package/src/orm/postgres/services/PostgresModelBuilder.ts +9 -1
  385. package/src/queue/core/providers/WorkerProvider.ts +2 -2
  386. package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
  387. package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
  388. package/src/react/core/hooks/useAction.ts +7 -6
  389. package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
  390. package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
  391. package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
  392. package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
  393. package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +3 -6
  394. package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
  395. package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
  396. package/src/react/router/providers/ReactPageProvider.ts +2 -2
  397. package/src/react/router/providers/ReactServerProvider.ts +3 -3
  398. package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
  399. package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
  400. package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
  401. package/src/scheduler/primitives/$scheduler.ts +2 -2
  402. package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
  403. package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
  404. package/src/security/primitives/$issuer.ts +1 -1
  405. package/src/security/providers/JwtProvider.ts +6 -10
  406. package/src/security/providers/SecurityProvider.ts +6 -11
  407. package/src/security/schemas/userAccountInfoSchema.ts +3 -3
  408. package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
  409. package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
  410. package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
  411. package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
  412. package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
  413. package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
  414. package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
  415. package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
  416. package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
  417. package/src/server/core/primitives/$action.ts +2 -2
  418. package/src/server/core/primitives/$sse.ts +2 -2
  419. package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
  420. package/src/server/core/providers/ServerCompressProvider.ts +2 -2
  421. package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
  422. package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
  423. package/src/server/core/providers/ServerRouterProvider.ts +1 -5
  424. package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
  425. package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
  426. package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
  427. package/src/server/links/providers/LinkProvider.ts +2 -2
  428. package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
  429. package/src/server/links/providers/ServerLinksProvider.ts +2 -2
  430. package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
  431. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
  432. package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
  433. package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
  434. package/src/sms/providers/LocalSmsProvider.ts +13 -24
  435. package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
  436. package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
  437. package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
  438. package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
  439. package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
  440. package/tsconfig.base.json +1 -0
  441. package/assets/devtools-ui/200.html +0 -10
  442. package/assets/devtools-ui/200.html.br +0 -0
  443. package/assets/devtools-ui/404.html +0 -10
  444. package/assets/devtools-ui/404.html.br +0 -0
  445. package/assets/devtools-ui/CNAME +0 -1
  446. package/assets/devtools-ui/asset.CHpVij2M.css +0 -1
  447. package/assets/devtools-ui/asset.CHpVij2M.css.br +0 -0
  448. package/assets/devtools-ui/asset.DJ-i0UDz.css +0 -1
  449. package/assets/devtools-ui/asset.DJ-i0UDz.css.br +0 -0
  450. package/assets/devtools-ui/chunk.1jwpJORo.js +0 -1
  451. package/assets/devtools-ui/chunk.1jwpJORo.js.br +0 -0
  452. package/assets/devtools-ui/chunk.B0r2wfUL.js +0 -1
  453. package/assets/devtools-ui/chunk.B0r2wfUL.js.br +0 -0
  454. package/assets/devtools-ui/chunk.BScN4dVR.js +0 -84
  455. package/assets/devtools-ui/chunk.BScN4dVR.js.br +0 -0
  456. package/assets/devtools-ui/chunk.BispuoY4.js +0 -1
  457. package/assets/devtools-ui/chunk.BispuoY4.js.br +0 -0
  458. package/assets/devtools-ui/chunk.BtrPUUd7.js +0 -2
  459. package/assets/devtools-ui/chunk.BtrPUUd7.js.br +0 -0
  460. package/assets/devtools-ui/chunk.C-KMHgqf.js +0 -1
  461. package/assets/devtools-ui/chunk.C-KMHgqf.js.br +0 -0
  462. package/assets/devtools-ui/chunk.C2zQ3CF6.js +0 -7
  463. package/assets/devtools-ui/chunk.C2zQ3CF6.js.br +0 -0
  464. package/assets/devtools-ui/chunk.C619McpO.js +0 -1
  465. package/assets/devtools-ui/chunk.C619McpO.js.br +0 -0
  466. package/assets/devtools-ui/chunk.C9OsYsVl.js +0 -1
  467. package/assets/devtools-ui/chunk.C9OsYsVl.js.br +0 -3
  468. package/assets/devtools-ui/chunk.CAC_-151.js +0 -1
  469. package/assets/devtools-ui/chunk.CAC_-151.js.br +0 -0
  470. package/assets/devtools-ui/chunk.CCmesWfx.js +0 -1
  471. package/assets/devtools-ui/chunk.CCmesWfx.js.br +0 -0
  472. package/assets/devtools-ui/chunk.CFQDmrcV.js +0 -1
  473. package/assets/devtools-ui/chunk.CFQDmrcV.js.br +0 -0
  474. package/assets/devtools-ui/chunk.CgM71Zau.js +0 -1
  475. package/assets/devtools-ui/chunk.CgM71Zau.js.br +0 -0
  476. package/assets/devtools-ui/chunk.CmHq336a.js +0 -1
  477. package/assets/devtools-ui/chunk.CmHq336a.js.br +0 -0
  478. package/assets/devtools-ui/chunk.CthNMCar.js +0 -1
  479. package/assets/devtools-ui/chunk.CthNMCar.js.br +0 -0
  480. package/assets/devtools-ui/chunk.D2brVJP1.js +0 -1
  481. package/assets/devtools-ui/chunk.D2brVJP1.js.br +0 -0
  482. package/assets/devtools-ui/chunk.DgBKGkiw.js +0 -1
  483. package/assets/devtools-ui/chunk.DgBKGkiw.js.br +0 -0
  484. package/assets/devtools-ui/chunk.NNHHCQsa.js +0 -1
  485. package/assets/devtools-ui/chunk.NNHHCQsa.js.br +0 -0
  486. package/assets/devtools-ui/chunk._CDKKWMo.js +0 -1
  487. package/assets/devtools-ui/chunk._CDKKWMo.js.br +0 -0
  488. package/assets/devtools-ui/entry.B_nOjAod.js +0 -2
  489. package/assets/devtools-ui/entry.B_nOjAod.js.br +0 -0
  490. package/assets/devtools-ui/index.html +0 -10
  491. package/assets/devtools-ui/index.html.br +0 -0
  492. package/dist/devtools/index.browser.js +0 -224
  493. package/dist/devtools/index.browser.js.map +0 -1
  494. package/dist/devtools/index.d.ts +0 -499
  495. package/dist/devtools/index.d.ts.map +0 -1
  496. package/dist/devtools/index.js +0 -782
  497. package/dist/devtools/index.js.map +0 -1
  498. package/dist/mqtt/index.d.ts +0 -164
  499. package/dist/mqtt/index.d.ts.map +0 -1
  500. package/dist/mqtt/index.js +0 -214
  501. package/dist/mqtt/index.js.map +0 -1
  502. package/dist/topic/mqtt/index.d.ts +0 -87
  503. package/dist/topic/mqtt/index.d.ts.map +0 -1
  504. package/dist/topic/mqtt/index.js +0 -88
  505. package/dist/topic/mqtt/index.js.map +0 -1
  506. package/src/api/users/parameters/UserParameters.ts +0 -23
  507. package/src/api/users/services/SessionService.spec.ts +0 -303
  508. package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
  509. package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
  510. package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
  511. package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
  512. package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
  513. package/src/cli/platform/services/DockerSshService.ts +0 -61
  514. package/src/devtools/__tests__/DevCollectorProvider.spec.ts +0 -7
  515. package/src/devtools/assets.ts +0 -6
  516. package/src/devtools/entities/logs.ts +0 -21
  517. package/src/devtools/index.browser.ts +0 -11
  518. package/src/devtools/index.shared.ts +0 -15
  519. package/src/devtools/index.ts +0 -39
  520. package/src/devtools/providers/DevToolsMetadataProvider.ts +0 -459
  521. package/src/devtools/providers/DevToolsProvider.ts +0 -280
  522. package/src/devtools/schemas/DevActionMetadata.ts +0 -30
  523. package/src/devtools/schemas/DevAtomMetadata.ts +0 -26
  524. package/src/devtools/schemas/DevBucketMetadata.ts +0 -11
  525. package/src/devtools/schemas/DevCacheMetadata.ts +0 -10
  526. package/src/devtools/schemas/DevEntityMetadata.ts +0 -60
  527. package/src/devtools/schemas/DevEnvMetadata.ts +0 -22
  528. package/src/devtools/schemas/DevMetadata.ts +0 -47
  529. package/src/devtools/schemas/DevModuleMetadata.ts +0 -8
  530. package/src/devtools/schemas/DevPageMetadata.ts +0 -24
  531. package/src/devtools/schemas/DevProviderMetadata.ts +0 -10
  532. package/src/devtools/schemas/DevQueueMetadata.ts +0 -10
  533. package/src/devtools/schemas/DevRealmMetadata.ts +0 -19
  534. package/src/devtools/schemas/DevRouteMetadata.ts +0 -8
  535. package/src/devtools/schemas/DevSchedulerMetadata.ts +0 -11
  536. package/src/devtools/schemas/DevTopicMetadata.ts +0 -11
  537. package/src/mqtt/index.ts +0 -32
  538. package/src/mqtt/providers/MqttClientProvider.ts +0 -63
  539. package/src/mqtt/providers/MqttJsClientProvider.spec.ts +0 -165
  540. package/src/mqtt/providers/MqttJsClientProvider.ts +0 -309
  541. package/src/topic/mqtt/index.ts +0 -30
  542. package/src/topic/mqtt/providers/MqttTopicProvider.spec.ts +0 -160
  543. package/src/topic/mqtt/providers/MqttTopicProvider.ts +0 -146
  544. /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
  545. /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
  546. /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
  547. /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
  548. /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
  549. /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
  550. /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
  551. /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
  552. /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
  553. /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
  554. /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
  555. /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
  556. /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
  557. /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
  558. /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
  559. /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
  560. /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
  561. /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
  562. /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
  563. /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
  564. /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
  565. /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
  566. /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
  567. /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
  568. /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
  569. /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
  570. /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
  571. /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
  572. /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
  573. /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
  574. /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
  575. /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
  576. /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
  577. /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
  578. /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
  579. /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
  580. /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
  581. /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
  582. /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
  583. /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
  584. /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
  585. /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
  586. /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
  587. /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
  588. /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
  589. /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
  590. /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
  591. /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
  592. /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
  593. /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
  594. /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
  595. /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
  596. /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
  597. /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
  598. /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
  599. /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
  600. /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
  601. /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
  602. /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
  603. /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
  604. /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
  605. /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
  606. /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
  607. /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
  608. /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
  609. /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
  610. /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
  611. /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
  612. /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
  613. /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
  614. /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
  615. /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
  616. /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
  617. /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
  618. /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
  619. /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
  620. /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
  621. /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
  622. /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
  623. /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
  624. /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
  625. /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
  626. /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
  627. /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
  628. /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
  629. /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
  630. /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
  631. /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
  632. /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
  633. /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
  634. /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
  635. /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
  636. /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
  637. /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
  638. /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
@@ -2,10 +2,19 @@ import { Alepha } from "alepha";
2
2
  import { $bucket } from "alepha/bucket";
3
3
  import { DateTimeProvider } from "alepha/datetime";
4
4
  import { AlephaOrmPostgres } from "alepha/orm/postgres";
5
+ import type { UserAccountToken } from "alepha/security";
5
6
  import { FileSystemProvider } from "alepha/system";
6
7
  import { describe, expect, it } from "vitest";
7
8
  import { FileController, FileService } from "../index.ts";
8
9
 
10
+ const adminUser: UserAccountToken = {
11
+ id: "00000000-0000-0000-0000-000000000001",
12
+ name: "Test Admin",
13
+ roles: ["admin"],
14
+ };
15
+
16
+ const asAdmin = { user: adminUser };
17
+
9
18
  describe("FileController", () => {
10
19
  class App {
11
20
  images = $bucket({});
@@ -41,15 +50,16 @@ describe("FileController", () => {
41
50
  it("should return files from specific bucket", async () => {
42
51
  const { app, ctrl } = await setup();
43
52
  await app.images.upload(createFile("test"));
44
- const files = await ctrl.findFiles({
45
- query: { bucket: app.images.name },
46
- });
53
+ const files = await ctrl.findFiles(
54
+ { query: { bucket: app.images.name } },
55
+ asAdmin,
56
+ );
47
57
  expect(files.content.length).toEqual(1);
48
58
  });
49
59
 
50
60
  it("should return empty list when no files exist", async () => {
51
61
  const { ctrl } = await setup();
52
- const files = await ctrl.findFiles();
62
+ const files = await ctrl.findFiles({}, asAdmin);
53
63
  expect(files.content).toEqual([]);
54
64
  expect(files.page.totalElements).toBe(0);
55
65
  });
@@ -59,7 +69,7 @@ describe("FileController", () => {
59
69
  await app.images.upload(createFile("image.png"));
60
70
  await app.documents.upload(createFile("doc.pdf"));
61
71
 
62
- const files = await ctrl.findFiles({ query: {} });
72
+ const files = await ctrl.findFiles({ query: {} }, asAdmin);
63
73
  expect(files.content.length).toEqual(2);
64
74
  });
65
75
 
@@ -68,15 +78,17 @@ describe("FileController", () => {
68
78
  await app.images.upload(createFile("image.png"));
69
79
  await app.documents.upload(createFile("doc.pdf"));
70
80
 
71
- const imagesFiles = await ctrl.findFiles({
72
- query: { bucket: app.images.name },
73
- });
81
+ const imagesFiles = await ctrl.findFiles(
82
+ { query: { bucket: app.images.name } },
83
+ asAdmin,
84
+ );
74
85
  expect(imagesFiles.content.length).toEqual(1);
75
86
  expect(imagesFiles.content[0].bucket).toBe(app.images.name);
76
87
 
77
- const docsFiles = await ctrl.findFiles({
78
- query: { bucket: app.documents.name },
79
- });
88
+ const docsFiles = await ctrl.findFiles(
89
+ { query: { bucket: app.documents.name } },
90
+ asAdmin,
91
+ );
80
92
  expect(docsFiles.content.length).toEqual(1);
81
93
  expect(docsFiles.content[0].bucket).toBe(app.documents.name);
82
94
  });
@@ -91,9 +103,10 @@ describe("FileController", () => {
91
103
  tags: ["important", "personal"],
92
104
  });
93
105
 
94
- const importantFiles = await ctrl.findFiles.run({
95
- query: { tags: ["important"] },
96
- });
106
+ const importantFiles = await ctrl.findFiles.run(
107
+ { query: { tags: ["important"] } },
108
+ asAdmin,
109
+ );
97
110
  expect(importantFiles.content.length).toEqual(2);
98
111
  });
99
112
 
@@ -103,16 +116,18 @@ describe("FileController", () => {
103
116
  await app.images.upload(createFile("file2.txt"));
104
117
  await app.images.upload(createFile("file3.txt"));
105
118
 
106
- const page1 = await ctrl.findFiles({
107
- query: { bucket: app.images.name, size: 2, page: 0 },
108
- });
119
+ const page1 = await ctrl.findFiles(
120
+ { query: { bucket: app.images.name, size: 2, page: 0 } },
121
+ asAdmin,
122
+ );
109
123
 
110
124
  expect(page1.content.length).toEqual(2);
111
125
  expect(page1.page.totalElements).toBe(3);
112
126
 
113
- const page2 = await ctrl.findFiles({
114
- query: { bucket: app.images.name, size: 2, page: 1 },
115
- });
127
+ const page2 = await ctrl.findFiles(
128
+ { query: { bucket: app.images.name, size: 2, page: 1 } },
129
+ asAdmin,
130
+ );
116
131
  expect(page2.content.length).toEqual(1);
117
132
  expect(page2.page.totalElements).toBe(3);
118
133
  });
@@ -123,9 +138,10 @@ describe("FileController", () => {
123
138
  const file2 = await app.images.upload(createFile("second.txt"));
124
139
  const file3 = await app.images.upload(createFile("third.txt"));
125
140
 
126
- const files = await ctrl.findFiles({
127
- query: { bucket: app.images.name },
128
- });
141
+ const files = await ctrl.findFiles(
142
+ { query: { bucket: app.images.name } },
143
+ asAdmin,
144
+ );
129
145
 
130
146
  expect(files.content[0].blobId).toBe(file3);
131
147
  expect(files.content[1].blobId).toBe(file2);
@@ -141,10 +157,10 @@ describe("FileController", () => {
141
157
  type: "text/plain",
142
158
  });
143
159
 
144
- const result = await ctrl.uploadFile({
145
- body: { file },
146
- query: {},
147
- });
160
+ const result = await ctrl.uploadFile(
161
+ { body: { file }, query: {} },
162
+ asAdmin,
163
+ );
148
164
 
149
165
  expect(result.name).toBe("test.txt");
150
166
  expect(result.mimeType).toBe("text/plain");
@@ -159,10 +175,10 @@ describe("FileController", () => {
159
175
  type: "text/plain",
160
176
  });
161
177
 
162
- const result = await ctrl.uploadFile({
163
- body: { file },
164
- query: {},
165
- });
178
+ const result = await ctrl.uploadFile(
179
+ { body: { file }, query: {} },
180
+ asAdmin,
181
+ );
166
182
 
167
183
  expect(result.checksum).toBeDefined();
168
184
  expect(result.checksum).toMatch(/^[a-f0-9]{64}$/); // SHA-256 hex format
@@ -175,10 +191,10 @@ describe("FileController", () => {
175
191
  type: "application/pdf",
176
192
  });
177
193
 
178
- const result = await ctrl.uploadFile({
179
- body: { file },
180
- query: { bucket: app.documents.name },
181
- });
194
+ const result = await ctrl.uploadFile(
195
+ { body: { file }, query: { bucket: app.documents.name } },
196
+ asAdmin,
197
+ );
182
198
 
183
199
  expect(result.bucket).toBe(app.documents.name);
184
200
  expect(result.name).toBe("doc.pdf");
@@ -189,16 +205,16 @@ describe("FileController", () => {
189
205
  const file = createFile("Temporary file", { name: "temp.txt" });
190
206
  const expirationDate = dtp.now().add(1, "hour").toISOString();
191
207
 
192
- const result = await ctrl.uploadFile({
193
- body: { file },
194
- query: { expirationDate },
195
- });
208
+ const result = await ctrl.uploadFile(
209
+ { body: { file }, query: { expirationDate } },
210
+ asAdmin,
211
+ );
196
212
 
197
213
  expect(result.expirationDate).toEqual(expirationDate);
198
214
  });
199
215
 
200
216
  it("should capture user information when provided", async () => {
201
- const { ctrl, service } = await setup();
217
+ const { service } = await setup();
202
218
  const file = createFile("User file", { name: "user.txt" });
203
219
 
204
220
  const result = await service.uploadFile(file, {
@@ -224,12 +240,15 @@ describe("FileController", () => {
224
240
  type: "text/plain",
225
241
  });
226
242
 
227
- const uploaded = await ctrl.uploadFile({
228
- body: { file },
229
- query: {},
230
- });
243
+ const uploaded = await ctrl.uploadFile(
244
+ { body: { file }, query: {} },
245
+ asAdmin,
246
+ );
231
247
 
232
- const streamed = await ctrl.streamFile({ params: { id: uploaded.id } });
248
+ const streamed = await ctrl.streamFile(
249
+ { params: { id: uploaded.id } },
250
+ asAdmin,
251
+ );
233
252
 
234
253
  expect(streamed.name).toBe("test.txt");
235
254
  expect(streamed.type).toBe("text/plain");
@@ -240,9 +259,10 @@ describe("FileController", () => {
240
259
  const { ctrl } = await setup();
241
260
 
242
261
  await expect(
243
- ctrl.streamFile({
244
- params: { id: "00000000-0000-0000-0000-000000000000" },
245
- }),
262
+ ctrl.streamFile(
263
+ { params: { id: "00000000-0000-0000-0000-000000000000" } },
264
+ asAdmin,
265
+ ),
246
266
  ).rejects.toThrow();
247
267
  });
248
268
  });
@@ -252,21 +272,22 @@ describe("FileController", () => {
252
272
  const { ctrl } = await setup();
253
273
  const file = createFile("To be deleted", { name: "delete-me.txt" });
254
274
 
255
- const uploaded = await ctrl.uploadFile({
256
- body: { file },
257
- query: {},
258
- });
275
+ const uploaded = await ctrl.uploadFile(
276
+ { body: { file }, query: {} },
277
+ asAdmin,
278
+ );
259
279
 
260
- const result = await ctrl.deleteFile({
261
- params: { id: uploaded.id },
262
- });
280
+ const result = await ctrl.deleteFile(
281
+ { params: { id: uploaded.id } },
282
+ asAdmin,
283
+ );
263
284
 
264
285
  expect(result.ok).toBe(true);
265
286
  expect(result.id).toBe(uploaded.id);
266
287
 
267
288
  // Verify file is actually deleted
268
289
  await expect(
269
- ctrl.streamFile({ params: { id: uploaded.id } }),
290
+ ctrl.streamFile({ params: { id: uploaded.id } }, asAdmin),
270
291
  ).rejects.toThrow();
271
292
  });
272
293
 
@@ -274,9 +295,10 @@ describe("FileController", () => {
274
295
  const { ctrl } = await setup();
275
296
 
276
297
  await expect(
277
- ctrl.deleteFile({
278
- params: { id: "00000000-0000-0000-0000-000000000000" },
279
- }),
298
+ ctrl.deleteFile(
299
+ { params: { id: "00000000-0000-0000-0000-000000000000" } },
300
+ asAdmin,
301
+ ),
280
302
  ).rejects.toThrow();
281
303
  });
282
304
  });
@@ -286,15 +308,15 @@ describe("FileController", () => {
286
308
  const { ctrl } = await setup();
287
309
  const file = createFile("test content", { name: "original.txt" });
288
310
 
289
- const uploaded = await ctrl.uploadFile({
290
- body: { file },
291
- query: {},
292
- });
311
+ const uploaded = await ctrl.uploadFile(
312
+ { body: { file }, query: {} },
313
+ asAdmin,
314
+ );
293
315
 
294
- const updated = await ctrl.updateFile({
295
- params: { id: uploaded.id },
296
- body: { name: "renamed.txt" },
297
- });
316
+ const updated = await ctrl.updateFile(
317
+ { params: { id: uploaded.id }, body: { name: "renamed.txt" } },
318
+ asAdmin,
319
+ );
298
320
 
299
321
  expect(updated.name).toBe("renamed.txt");
300
322
  expect(updated.id).toBe(uploaded.id);
@@ -304,15 +326,15 @@ describe("FileController", () => {
304
326
  const { ctrl } = await setup();
305
327
  const file = createFile("test content", { name: "test.txt" });
306
328
 
307
- const uploaded = await ctrl.uploadFile({
308
- body: { file },
309
- query: {},
310
- });
329
+ const uploaded = await ctrl.uploadFile(
330
+ { body: { file }, query: {} },
331
+ asAdmin,
332
+ );
311
333
 
312
- const updated = await ctrl.updateFile({
313
- params: { id: uploaded.id },
314
- body: { tags: ["important", "work"] },
315
- });
334
+ const updated = await ctrl.updateFile(
335
+ { params: { id: uploaded.id }, body: { tags: ["important", "work"] } },
336
+ asAdmin,
337
+ );
316
338
 
317
339
  expect(updated.tags).toEqual(["important", "work"]);
318
340
  });
@@ -321,17 +343,20 @@ describe("FileController", () => {
321
343
  const { ctrl, dtp } = await setup();
322
344
  const file = createFile("test content", { name: "test.txt" });
323
345
 
324
- const uploaded = await ctrl.uploadFile({
325
- body: { file },
326
- query: {},
327
- });
346
+ const uploaded = await ctrl.uploadFile(
347
+ { body: { file }, query: {} },
348
+ asAdmin,
349
+ );
328
350
 
329
351
  const newExpiration = dtp.now().add(2, "days").toISOString();
330
352
 
331
- const updated = await ctrl.updateFile({
332
- params: { id: uploaded.id },
333
- body: { expirationDate: newExpiration },
334
- });
353
+ const updated = await ctrl.updateFile(
354
+ {
355
+ params: { id: uploaded.id },
356
+ body: { expirationDate: newExpiration },
357
+ },
358
+ asAdmin,
359
+ );
335
360
 
336
361
  expect(updated.expirationDate).toBe(newExpiration);
337
362
  });
@@ -340,21 +365,24 @@ describe("FileController", () => {
340
365
  const { ctrl, dtp } = await setup();
341
366
  const file = createFile("test content", { name: "original.txt" });
342
367
 
343
- const uploaded = await ctrl.uploadFile({
344
- body: { file },
345
- query: {},
346
- });
368
+ const uploaded = await ctrl.uploadFile(
369
+ { body: { file }, query: {} },
370
+ asAdmin,
371
+ );
347
372
 
348
373
  const newExpiration = dtp.now().add(3, "days").toISOString();
349
374
 
350
- const updated = await ctrl.updateFile({
351
- params: { id: uploaded.id },
352
- body: {
353
- name: "updated.txt",
354
- tags: ["tag1", "tag2"],
355
- expirationDate: newExpiration,
375
+ const updated = await ctrl.updateFile(
376
+ {
377
+ params: { id: uploaded.id },
378
+ body: {
379
+ name: "updated.txt",
380
+ tags: ["tag1", "tag2"],
381
+ expirationDate: newExpiration,
382
+ },
356
383
  },
357
- });
384
+ asAdmin,
385
+ );
358
386
 
359
387
  expect(updated.name).toBe("updated.txt");
360
388
  expect(updated.tags).toEqual(["tag1", "tag2"]);
@@ -365,10 +393,13 @@ describe("FileController", () => {
365
393
  const { ctrl } = await setup();
366
394
 
367
395
  await expect(
368
- ctrl.updateFile({
369
- params: { id: "00000000-0000-0000-0000-000000000000" },
370
- body: { name: "new-name.txt" },
371
- }),
396
+ ctrl.updateFile(
397
+ {
398
+ params: { id: "00000000-0000-0000-0000-000000000000" },
399
+ body: { name: "new-name.txt" },
400
+ },
401
+ asAdmin,
402
+ ),
372
403
  ).rejects.toThrow();
373
404
  });
374
405
  });
@@ -386,7 +417,10 @@ describe("FileController", () => {
386
417
  createFile("content", { name: "report-2025.pdf" }),
387
418
  );
388
419
 
389
- const results = await ctrl.findFiles({ query: { name: "report" } });
420
+ const results = await ctrl.findFiles(
421
+ { query: { name: "report" } },
422
+ asAdmin,
423
+ );
390
424
  expect(results.content.length).toBe(2);
391
425
  expect(results.content.every((f) => f.name.includes("report"))).toBe(
392
426
  true,
@@ -405,9 +439,10 @@ describe("FileController", () => {
405
439
  createFile("content", { name: "file3.pdf", type: "application/pdf" }),
406
440
  );
407
441
 
408
- const results = await ctrl.findFiles({
409
- query: { mimeType: "application/pdf" },
410
- });
442
+ const results = await ctrl.findFiles(
443
+ { query: { mimeType: "application/pdf" } },
444
+ asAdmin,
445
+ );
411
446
  expect(results.content.length).toBe(2);
412
447
  expect(
413
448
  results.content.every((f) => f.mimeType === "application/pdf"),
@@ -429,7 +464,10 @@ describe("FileController", () => {
429
464
  user: { id: user1Id, realm: "test", name: "User 1" },
430
465
  });
431
466
 
432
- const results = await ctrl.findFiles({ query: { creator: user1Id } });
467
+ const results = await ctrl.findFiles(
468
+ { query: { creator: user1Id } },
469
+ asAdmin,
470
+ );
433
471
  expect(results.content.length).toBe(2);
434
472
  expect(results.content.every((f) => f.creator === user1Id)).toBe(true);
435
473
  });
@@ -446,19 +484,17 @@ describe("FileController", () => {
446
484
  await service.uploadFile(createFile("content", { name: "file2.txt" }));
447
485
  await service.uploadFile(createFile("content", { name: "file3.txt" }));
448
486
 
449
- // Filter for files created after start time (should get all 3)
450
- const results = await ctrl.findFiles({
451
- query: { createdAfter: startTime },
452
- });
453
-
487
+ const results = await ctrl.findFiles(
488
+ { query: { createdAfter: startTime } },
489
+ asAdmin,
490
+ );
454
491
  expect(results.content.length).toBe(3);
455
492
 
456
- // Filter for files created before a future date (should get all 3)
457
493
  const futureTime = dtp.now().add(1, "hour").toISOString();
458
- const results2 = await ctrl.findFiles({
459
- query: { createdBefore: futureTime },
460
- });
461
-
494
+ const results2 = await ctrl.findFiles(
495
+ { query: { createdBefore: futureTime } },
496
+ asAdmin,
497
+ );
462
498
  expect(results2.content.length).toBe(3);
463
499
  });
464
500
 
@@ -482,14 +518,17 @@ describe("FileController", () => {
482
518
  { user: { id: userId, realm: "test", name: "User" } },
483
519
  );
484
520
 
485
- const results = await ctrl.findFiles({
486
- query: {
487
- name: "report",
488
- mimeType: "application/pdf",
489
- creator: userId,
490
- tags: ["important"],
521
+ const results = await ctrl.findFiles(
522
+ {
523
+ query: {
524
+ name: "report",
525
+ mimeType: "application/pdf",
526
+ creator: userId,
527
+ tags: ["important"],
528
+ },
491
529
  },
492
- });
530
+ asAdmin,
531
+ );
493
532
 
494
533
  expect(results.content.length).toBe(1);
495
534
  expect(results.content[0].name).toBe("report.pdf");
@@ -502,28 +541,29 @@ describe("FileController", () => {
502
541
 
503
542
  // Upload
504
543
  const file = createFile("Lifecycle test", { name: "lifecycle.txt" });
505
- const uploaded = await ctrl.uploadFile({
506
- body: { file },
507
- query: {},
508
- });
544
+ const uploaded = await ctrl.uploadFile(
545
+ { body: { file }, query: {} },
546
+ asAdmin,
547
+ );
509
548
 
510
549
  // List
511
- const listResult = await ctrl.findFiles({ query: {} });
550
+ const listResult = await ctrl.findFiles({ query: {} }, asAdmin);
512
551
  expect(listResult.content).toContainEqual(
513
552
  expect.objectContaining({ id: uploaded.id }),
514
553
  );
515
554
 
516
555
  // Stream
517
- const streamed = await ctrl.streamFile({
518
- params: { id: uploaded.id },
519
- });
556
+ const streamed = await ctrl.streamFile(
557
+ { params: { id: uploaded.id } },
558
+ asAdmin,
559
+ );
520
560
  expect(await streamed.text()).toBe("Lifecycle test");
521
561
 
522
562
  // Delete
523
- await ctrl.deleteFile({ params: { id: uploaded.id } });
563
+ await ctrl.deleteFile({ params: { id: uploaded.id } }, asAdmin);
524
564
 
525
565
  // Verify deletion
526
- const finalList = await ctrl.findFiles({ query: {} });
566
+ const finalList = await ctrl.findFiles({ query: {} }, asAdmin);
527
567
  expect(
528
568
  finalList.content.find((f) => f.id === uploaded.id),
529
569
  ).toBeUndefined();
@@ -532,27 +572,33 @@ describe("FileController", () => {
532
572
  it("should handle multiple files with different properties", async () => {
533
573
  const { ctrl, dtp, service } = await setup();
534
574
 
535
- // Upload various files
536
- await ctrl.uploadFile({
537
- body: { file: createFile("File 1", { name: "file1.txt" }) },
538
- query: {},
539
- });
575
+ await ctrl.uploadFile(
576
+ {
577
+ body: { file: createFile("File 1", { name: "file1.txt" }) },
578
+ query: {},
579
+ },
580
+ asAdmin,
581
+ );
540
582
 
541
583
  await service.uploadFile(createFile("File 2", { name: "file2.txt" }), {
542
584
  tags: ["important"],
543
585
  });
544
586
 
545
- await ctrl.uploadFile({
546
- body: { file: createFile("File 3", { name: "file3.txt" }) },
547
- query: { expirationDate: dtp.now().add(1, "hour").toISOString() },
548
- });
587
+ await ctrl.uploadFile(
588
+ {
589
+ body: { file: createFile("File 3", { name: "file3.txt" }) },
590
+ query: { expirationDate: dtp.now().add(1, "hour").toISOString() },
591
+ },
592
+ asAdmin,
593
+ );
549
594
 
550
- const allFiles = await ctrl.findFiles({ query: {} });
595
+ const allFiles = await ctrl.findFiles({ query: {} }, asAdmin);
551
596
  expect(allFiles.content.length).toBe(3);
552
597
 
553
- const taggedFiles = await ctrl.findFiles({
554
- query: { tags: ["important"] },
555
- });
598
+ const taggedFiles = await ctrl.findFiles(
599
+ { query: { tags: ["important"] } },
600
+ asAdmin,
601
+ );
556
602
  expect(taggedFiles.content.length).toBe(1);
557
603
  });
558
604
  });
@@ -7,10 +7,19 @@ import {
7
7
  MemoryFileStorageProvider,
8
8
  } from "alepha/bucket";
9
9
  import { AlephaOrmPostgres } from "alepha/orm/postgres";
10
+ import type { UserAccountToken } from "alepha/security";
10
11
  import { FileSystemProvider } from "alepha/system";
11
12
  import { describe, expect, it } from "vitest";
12
13
  import { AlephaApiFiles, FileController } from "../index.ts";
13
14
 
15
+ const adminUser: UserAccountToken = {
16
+ id: "00000000-0000-0000-0000-000000000001",
17
+ name: "Test Admin",
18
+ roles: ["admin"],
19
+ };
20
+
21
+ const asAdmin = { user: adminUser };
22
+
14
23
  const testFileServiceOperations = async (
15
24
  provider: Service<FileStorageProvider>,
16
25
  ) => {
@@ -52,52 +61,63 @@ const testFileServiceOperations = async (
52
61
  }),
53
62
  );
54
63
 
55
- const files = await ctrl.findFiles.run({});
64
+ const files = await ctrl.findFiles.run({}, asAdmin);
56
65
 
57
66
  expect(files.content[0].bucket).toBe(assets.images.name);
58
67
 
59
- await ctrl.uploadFile.run({
60
- query: {
61
- bucket: assets.images.name,
62
- },
63
- body: {
64
- file: createFile("Hello World 2"),
68
+ await ctrl.uploadFile.run(
69
+ {
70
+ query: {
71
+ bucket: assets.images.name,
72
+ },
73
+ body: {
74
+ file: createFile("Hello World 2"),
75
+ },
65
76
  },
66
- });
77
+ asAdmin,
78
+ );
67
79
 
68
- await ctrl.uploadFile.fetch({
69
- query: {
70
- bucket: assets.images.name,
80
+ await ctrl.uploadFile.run(
81
+ {
82
+ query: {
83
+ bucket: assets.images.name,
84
+ },
85
+ body: {
86
+ file: createFile("Hello World 3"),
87
+ },
71
88
  },
72
- body: {
73
- file: createFile("Hello World 3"),
74
- },
75
- });
89
+ asAdmin,
90
+ );
76
91
 
77
- await ctrl.uploadFile.fetch({
78
- query: {
79
- bucket: assets.images.name,
80
- },
81
- body: {
82
- file: createFile("Hello World 4"),
92
+ await ctrl.uploadFile.run(
93
+ {
94
+ query: {
95
+ bucket: assets.images.name,
96
+ },
97
+ body: {
98
+ file: createFile("Hello World 4"),
99
+ },
83
100
  },
84
- });
101
+ asAdmin,
102
+ );
85
103
 
86
- const files2 = await ctrl.findFiles.run({});
104
+ const files2 = await ctrl.findFiles.run({}, asAdmin);
87
105
 
88
106
  expect(files2.content.length).toBe(4);
89
107
 
90
- const response = await ctrl.streamFile.run({
91
- params: { id: files2.content[1].id },
92
- });
108
+ const response = await ctrl.streamFile.run(
109
+ { params: { id: files2.content[1].id } },
110
+ asAdmin,
111
+ );
93
112
 
94
113
  expect(await response.text()).toBe("Hello World 3");
95
114
 
96
- const response2 = await ctrl.streamFile.fetch({
97
- params: { id: files2.content[0].id },
98
- });
115
+ const response2 = await ctrl.streamFile.run(
116
+ { params: { id: files2.content[0].id } },
117
+ asAdmin,
118
+ );
99
119
 
100
- expect(await response2.data.text()).toBe("Hello World 4");
120
+ expect(await response2.text()).toBe("Hello World 4");
101
121
  };
102
122
 
103
123
  describe("FileService", () => {