alepha 0.15.0 → 0.15.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 (551) hide show
  1. package/README.md +43 -98
  2. package/dist/api/audits/index.d.ts +630 -653
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +12 -35
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +365 -358
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +12 -5
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +255 -248
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/jobs/index.js +10 -3
  13. package/dist/api/jobs/index.js.map +1 -1
  14. package/dist/api/keys/index.d.ts +413 -0
  15. package/dist/api/keys/index.d.ts.map +1 -0
  16. package/dist/api/keys/index.js +476 -0
  17. package/dist/api/keys/index.js.map +1 -0
  18. package/dist/api/notifications/index.browser.js +4 -4
  19. package/dist/api/notifications/index.browser.js.map +1 -1
  20. package/dist/api/notifications/index.d.ts +84 -78
  21. package/dist/api/notifications/index.d.ts.map +1 -1
  22. package/dist/api/notifications/index.js +14 -8
  23. package/dist/api/notifications/index.js.map +1 -1
  24. package/dist/api/parameters/index.d.ts +528 -535
  25. package/dist/api/parameters/index.d.ts.map +1 -1
  26. package/dist/api/parameters/index.js +30 -37
  27. package/dist/api/parameters/index.js.map +1 -1
  28. package/dist/api/users/index.d.ts +1221 -910
  29. package/dist/api/users/index.d.ts.map +1 -1
  30. package/dist/api/users/index.js +2556 -248
  31. package/dist/api/users/index.js.map +1 -1
  32. package/dist/api/verifications/index.d.ts +142 -136
  33. package/dist/api/verifications/index.d.ts.map +1 -1
  34. package/dist/api/verifications/index.js +12 -4
  35. package/dist/api/verifications/index.js.map +1 -1
  36. package/dist/batch/index.d.ts +142 -162
  37. package/dist/batch/index.d.ts.map +1 -1
  38. package/dist/batch/index.js +31 -44
  39. package/dist/batch/index.js.map +1 -1
  40. package/dist/bucket/index.d.ts +595 -171
  41. package/dist/bucket/index.d.ts.map +1 -1
  42. package/dist/bucket/index.js +1856 -12
  43. package/dist/bucket/index.js.map +1 -1
  44. package/dist/cache/core/index.d.ts +225 -53
  45. package/dist/cache/core/index.d.ts.map +1 -1
  46. package/dist/cache/core/index.js +213 -7
  47. package/dist/cache/core/index.js.map +1 -1
  48. package/dist/cache/redis/index.d.ts +1 -0
  49. package/dist/cache/redis/index.d.ts.map +1 -1
  50. package/dist/cache/redis/index.js +6 -2
  51. package/dist/cache/redis/index.js.map +1 -1
  52. package/dist/cli/index.d.ts +834 -226
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli/index.js +2872 -417
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/command/index.d.ts +458 -310
  57. package/dist/command/index.d.ts.map +1 -1
  58. package/dist/command/index.js +2011 -76
  59. package/dist/command/index.js.map +1 -1
  60. package/dist/core/index.browser.js +309 -97
  61. package/dist/core/index.browser.js.map +1 -1
  62. package/dist/core/index.d.ts +796 -701
  63. package/dist/core/index.d.ts.map +1 -1
  64. package/dist/core/index.js +329 -97
  65. package/dist/core/index.js.map +1 -1
  66. package/dist/core/index.native.js +309 -97
  67. package/dist/core/index.native.js.map +1 -1
  68. package/dist/datetime/index.d.ts +59 -44
  69. package/dist/datetime/index.d.ts.map +1 -1
  70. package/dist/datetime/index.js +15 -0
  71. package/dist/datetime/index.js.map +1 -1
  72. package/dist/email/index.d.ts +314 -19
  73. package/dist/email/index.d.ts.map +1 -1
  74. package/dist/email/index.js +1852 -7
  75. package/dist/email/index.js.map +1 -1
  76. package/dist/fake/index.d.ts +5500 -5418
  77. package/dist/fake/index.d.ts.map +1 -1
  78. package/dist/fake/index.js +113 -42
  79. package/dist/fake/index.js.map +1 -1
  80. package/dist/lock/core/index.d.ts +219 -212
  81. package/dist/lock/core/index.d.ts.map +1 -1
  82. package/dist/lock/core/index.js +11 -4
  83. package/dist/lock/core/index.js.map +1 -1
  84. package/dist/lock/redis/index.d.ts.map +1 -1
  85. package/dist/logger/index.d.ts +41 -90
  86. package/dist/logger/index.d.ts.map +1 -1
  87. package/dist/logger/index.js +15 -68
  88. package/dist/logger/index.js.map +1 -1
  89. package/dist/mcp/index.d.ts +228 -230
  90. package/dist/mcp/index.d.ts.map +1 -1
  91. package/dist/mcp/index.js +32 -31
  92. package/dist/mcp/index.js.map +1 -1
  93. package/dist/orm/index.browser.js +12 -12
  94. package/dist/orm/index.browser.js.map +1 -1
  95. package/dist/orm/index.bun.js +90 -80
  96. package/dist/orm/index.bun.js.map +1 -1
  97. package/dist/orm/index.d.ts +1434 -1459
  98. package/dist/orm/index.d.ts.map +1 -1
  99. package/dist/orm/index.js +112 -130
  100. package/dist/orm/index.js.map +1 -1
  101. package/dist/queue/core/index.d.ts +262 -254
  102. package/dist/queue/core/index.d.ts.map +1 -1
  103. package/dist/queue/core/index.js +14 -6
  104. package/dist/queue/core/index.js.map +1 -1
  105. package/dist/queue/redis/index.d.ts.map +1 -1
  106. package/dist/react/auth/index.browser.js +108 -0
  107. package/dist/react/auth/index.browser.js.map +1 -0
  108. package/dist/react/auth/index.d.ts +100 -0
  109. package/dist/react/auth/index.d.ts.map +1 -0
  110. package/dist/react/auth/index.js +145 -0
  111. package/dist/react/auth/index.js.map +1 -0
  112. package/dist/react/core/index.d.ts +469 -0
  113. package/dist/react/core/index.d.ts.map +1 -0
  114. package/dist/react/core/index.js +464 -0
  115. package/dist/react/core/index.js.map +1 -0
  116. package/dist/react/form/index.d.ts +232 -0
  117. package/dist/react/form/index.d.ts.map +1 -0
  118. package/dist/react/form/index.js +432 -0
  119. package/dist/react/form/index.js.map +1 -0
  120. package/dist/react/head/index.browser.js +423 -0
  121. package/dist/react/head/index.browser.js.map +1 -0
  122. package/dist/react/head/index.d.ts +288 -0
  123. package/dist/react/head/index.d.ts.map +1 -0
  124. package/dist/react/head/index.js +465 -0
  125. package/dist/react/head/index.js.map +1 -0
  126. package/dist/react/i18n/index.d.ts +175 -0
  127. package/dist/react/i18n/index.d.ts.map +1 -0
  128. package/dist/react/i18n/index.js +224 -0
  129. package/dist/react/i18n/index.js.map +1 -0
  130. package/dist/react/router/index.browser.js +1980 -0
  131. package/dist/react/router/index.browser.js.map +1 -0
  132. package/dist/react/router/index.d.ts +2068 -0
  133. package/dist/react/router/index.d.ts.map +1 -0
  134. package/dist/react/router/index.js +4932 -0
  135. package/dist/react/router/index.js.map +1 -0
  136. package/dist/react/websocket/index.d.ts +117 -0
  137. package/dist/react/websocket/index.d.ts.map +1 -0
  138. package/dist/react/websocket/index.js +107 -0
  139. package/dist/react/websocket/index.js.map +1 -0
  140. package/dist/redis/index.bun.js +4 -0
  141. package/dist/redis/index.bun.js.map +1 -1
  142. package/dist/redis/index.d.ts +127 -130
  143. package/dist/redis/index.d.ts.map +1 -1
  144. package/dist/redis/index.js +16 -25
  145. package/dist/redis/index.js.map +1 -1
  146. package/dist/retry/index.d.ts +80 -71
  147. package/dist/retry/index.d.ts.map +1 -1
  148. package/dist/retry/index.js +11 -2
  149. package/dist/retry/index.js.map +1 -1
  150. package/dist/router/index.d.ts +6 -6
  151. package/dist/router/index.d.ts.map +1 -1
  152. package/dist/scheduler/index.d.ts +119 -28
  153. package/dist/scheduler/index.d.ts.map +1 -1
  154. package/dist/scheduler/index.js +404 -3
  155. package/dist/scheduler/index.js.map +1 -1
  156. package/dist/security/index.d.ts +642 -228
  157. package/dist/security/index.d.ts.map +1 -1
  158. package/dist/security/index.js +1579 -37
  159. package/dist/security/index.js.map +1 -1
  160. package/dist/server/auth/index.d.ts +1141 -111
  161. package/dist/server/auth/index.d.ts.map +1 -1
  162. package/dist/server/auth/index.js +1261 -25
  163. package/dist/server/auth/index.js.map +1 -1
  164. package/dist/server/cache/index.d.ts +63 -78
  165. package/dist/server/cache/index.d.ts.map +1 -1
  166. package/dist/server/cache/index.js +7 -22
  167. package/dist/server/cache/index.js.map +1 -1
  168. package/dist/server/compress/index.d.ts +13 -5
  169. package/dist/server/compress/index.d.ts.map +1 -1
  170. package/dist/server/compress/index.js +10 -2
  171. package/dist/server/compress/index.js.map +1 -1
  172. package/dist/server/cookies/index.d.ts +46 -22
  173. package/dist/server/cookies/index.d.ts.map +1 -1
  174. package/dist/server/cookies/index.js +7 -5
  175. package/dist/server/cookies/index.js.map +1 -1
  176. package/dist/server/core/index.d.ts +307 -196
  177. package/dist/server/core/index.d.ts.map +1 -1
  178. package/dist/server/core/index.js +271 -38
  179. package/dist/server/core/index.js.map +1 -1
  180. package/dist/server/cors/index.d.ts +24 -34
  181. package/dist/server/cors/index.d.ts.map +1 -1
  182. package/dist/server/cors/index.js +7 -21
  183. package/dist/server/cors/index.js.map +1 -1
  184. package/dist/server/health/index.d.ts +25 -19
  185. package/dist/server/health/index.d.ts.map +1 -1
  186. package/dist/server/health/index.js +8 -2
  187. package/dist/server/health/index.js.map +1 -1
  188. package/dist/server/helmet/index.d.ts +13 -5
  189. package/dist/server/helmet/index.d.ts.map +1 -1
  190. package/dist/server/helmet/index.js +11 -3
  191. package/dist/server/helmet/index.js.map +1 -1
  192. package/dist/server/links/index.browser.js +9 -1
  193. package/dist/server/links/index.browser.js.map +1 -1
  194. package/dist/server/links/index.d.ts +133 -128
  195. package/dist/server/links/index.d.ts.map +1 -1
  196. package/dist/server/links/index.js +24 -11
  197. package/dist/server/links/index.js.map +1 -1
  198. package/dist/server/metrics/index.d.ts +524 -4
  199. package/dist/server/metrics/index.d.ts.map +1 -1
  200. package/dist/server/metrics/index.js +4472 -7
  201. package/dist/server/metrics/index.js.map +1 -1
  202. package/dist/server/multipart/index.d.ts +15 -9
  203. package/dist/server/multipart/index.d.ts.map +1 -1
  204. package/dist/server/multipart/index.js +9 -3
  205. package/dist/server/multipart/index.js.map +1 -1
  206. package/dist/server/proxy/index.d.ts +110 -104
  207. package/dist/server/proxy/index.d.ts.map +1 -1
  208. package/dist/server/proxy/index.js +8 -2
  209. package/dist/server/proxy/index.js.map +1 -1
  210. package/dist/server/rate-limit/index.d.ts +46 -51
  211. package/dist/server/rate-limit/index.d.ts.map +1 -1
  212. package/dist/server/rate-limit/index.js +18 -55
  213. package/dist/server/rate-limit/index.js.map +1 -1
  214. package/dist/server/static/index.d.ts +181 -48
  215. package/dist/server/static/index.d.ts.map +1 -1
  216. package/dist/server/static/index.js +1848 -5
  217. package/dist/server/static/index.js.map +1 -1
  218. package/dist/server/swagger/index.d.ts +348 -53
  219. package/dist/server/swagger/index.d.ts.map +1 -1
  220. package/dist/server/swagger/index.js +1849 -6
  221. package/dist/server/swagger/index.js.map +1 -1
  222. package/dist/sms/index.d.ts +312 -18
  223. package/dist/sms/index.d.ts.map +1 -1
  224. package/dist/sms/index.js +1854 -10
  225. package/dist/sms/index.js.map +1 -1
  226. package/dist/system/index.browser.js +496 -0
  227. package/dist/system/index.browser.js.map +1 -0
  228. package/dist/system/index.d.ts +1158 -0
  229. package/dist/system/index.d.ts.map +1 -0
  230. package/dist/{file → system}/index.js +412 -20
  231. package/dist/system/index.js.map +1 -0
  232. package/dist/thread/index.d.ts +82 -73
  233. package/dist/thread/index.d.ts.map +1 -1
  234. package/dist/thread/index.js +13 -4
  235. package/dist/thread/index.js.map +1 -1
  236. package/dist/topic/core/index.d.ts +330 -323
  237. package/dist/topic/core/index.d.ts.map +1 -1
  238. package/dist/topic/core/index.js +12 -5
  239. package/dist/topic/core/index.js.map +1 -1
  240. package/dist/topic/redis/index.d.ts +6 -6
  241. package/dist/topic/redis/index.d.ts.map +1 -1
  242. package/dist/vite/index.d.ts +163 -5825
  243. package/dist/vite/index.d.ts.map +1 -1
  244. package/dist/vite/index.js +130 -477
  245. package/dist/vite/index.js.map +1 -1
  246. package/dist/websocket/index.browser.js +3 -3
  247. package/dist/websocket/index.browser.js.map +1 -1
  248. package/dist/websocket/index.d.ts +287 -283
  249. package/dist/websocket/index.d.ts.map +1 -1
  250. package/dist/websocket/index.js +15 -11
  251. package/dist/websocket/index.js.map +1 -1
  252. package/package.json +86 -17
  253. package/src/api/audits/index.ts +10 -33
  254. package/src/api/files/__tests__/$bucket.spec.ts +1 -1
  255. package/src/api/files/controllers/AdminFileStatsController.spec.ts +1 -1
  256. package/src/api/files/controllers/FileController.spec.ts +1 -1
  257. package/src/api/files/index.ts +10 -3
  258. package/src/api/files/jobs/FileJobs.spec.ts +1 -1
  259. package/src/api/files/services/FileService.spec.ts +1 -1
  260. package/src/api/jobs/index.ts +10 -3
  261. package/src/api/keys/controllers/AdminApiKeyController.ts +75 -0
  262. package/src/api/keys/controllers/ApiKeyController.ts +103 -0
  263. package/src/api/keys/entities/apiKeyEntity.ts +41 -0
  264. package/src/api/keys/index.ts +49 -0
  265. package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +7 -0
  266. package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +17 -0
  267. package/src/api/keys/schemas/createApiKeyBodySchema.ts +7 -0
  268. package/src/api/keys/schemas/createApiKeyResponseSchema.ts +11 -0
  269. package/src/api/keys/schemas/listApiKeyResponseSchema.ts +15 -0
  270. package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +5 -0
  271. package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +5 -0
  272. package/src/api/keys/services/ApiKeyService.spec.ts +553 -0
  273. package/src/api/keys/services/ApiKeyService.ts +306 -0
  274. package/src/api/logs/TODO.md +52 -0
  275. package/src/api/notifications/index.ts +10 -4
  276. package/src/api/parameters/index.ts +9 -30
  277. package/src/api/parameters/primitives/$config.ts +12 -4
  278. package/src/api/parameters/services/ConfigStore.ts +9 -3
  279. package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1035 -0
  280. package/src/api/users/__tests__/ApiKeys.spec.ts +401 -0
  281. package/src/api/users/index.ts +14 -3
  282. package/src/api/users/primitives/$realm.ts +33 -5
  283. package/src/api/users/providers/RealmProvider.ts +1 -12
  284. package/src/api/users/services/SessionService.ts +1 -11
  285. package/src/api/verifications/controllers/VerificationController.ts +2 -0
  286. package/src/api/verifications/index.ts +10 -4
  287. package/src/batch/index.ts +9 -36
  288. package/src/batch/primitives/$batch.ts +0 -8
  289. package/src/batch/providers/BatchProvider.ts +29 -2
  290. package/src/bucket/__tests__/shared.ts +1 -1
  291. package/src/bucket/index.ts +13 -6
  292. package/src/bucket/primitives/$bucket.ts +1 -1
  293. package/src/bucket/providers/LocalFileStorageProvider.ts +1 -1
  294. package/src/bucket/providers/MemoryFileStorageProvider.ts +1 -1
  295. package/src/cache/core/__tests__/shared.ts +30 -0
  296. package/src/cache/core/index.ts +11 -6
  297. package/src/cache/core/primitives/$cache.spec.ts +5 -0
  298. package/src/cache/core/providers/CacheProvider.ts +17 -0
  299. package/src/cache/core/providers/MemoryCacheProvider.ts +300 -1
  300. package/src/cache/redis/__tests__/cache-redis.spec.ts +5 -0
  301. package/src/cache/redis/providers/RedisCacheProvider.ts +9 -0
  302. package/src/cli/apps/AlephaCli.ts +3 -16
  303. package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -2
  304. package/src/cli/atoms/appEntryOptions.ts +13 -0
  305. package/src/cli/atoms/buildOptions.ts +1 -1
  306. package/src/cli/atoms/changelogOptions.ts +1 -1
  307. package/src/cli/commands/build.ts +64 -52
  308. package/src/cli/commands/db.ts +17 -11
  309. package/src/cli/commands/deploy.ts +1 -1
  310. package/src/cli/commands/dev.ts +13 -49
  311. package/src/cli/commands/gen/env.ts +6 -3
  312. package/src/cli/commands/gen/openapi.ts +5 -2
  313. package/src/cli/commands/init.spec.ts +544 -0
  314. package/src/cli/commands/init.ts +101 -58
  315. package/src/cli/commands/lint.ts +8 -2
  316. package/src/cli/commands/typecheck.ts +11 -0
  317. package/src/cli/defineConfig.ts +9 -0
  318. package/src/cli/index.ts +2 -1
  319. package/src/cli/providers/AppEntryProvider.ts +131 -0
  320. package/src/cli/providers/ViteBuildProvider.ts +40 -0
  321. package/src/cli/providers/ViteDevServerProvider.ts +378 -0
  322. package/src/cli/services/AlephaCliUtils.ts +39 -93
  323. package/src/cli/services/PackageManagerUtils.ts +140 -17
  324. package/src/cli/services/ProjectScaffolder.ts +169 -101
  325. package/src/cli/services/ViteUtils.ts +82 -0
  326. package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +41 -28
  327. package/src/cli/{assets → templates}/apiHelloControllerTs.ts +2 -1
  328. package/src/cli/{assets → templates}/biomeJson.ts +2 -1
  329. package/src/cli/{assets → templates}/dummySpecTs.ts +2 -1
  330. package/src/cli/{assets → templates}/editorconfig.ts +2 -1
  331. package/src/cli/templates/gitignore.ts +39 -0
  332. package/src/cli/{assets → templates}/mainBrowserTs.ts +2 -1
  333. package/src/cli/templates/mainCss.ts +33 -0
  334. package/src/cli/templates/mainServerTs.ts +33 -0
  335. package/src/cli/{assets → templates}/tsconfigJson.ts +2 -1
  336. package/src/cli/templates/webAppRouterTs.ts +50 -0
  337. package/src/cli/templates/webHelloComponentTsx.ts +20 -0
  338. package/src/command/helpers/Runner.spec.ts +4 -0
  339. package/src/command/helpers/Runner.ts +3 -21
  340. package/src/command/index.ts +12 -4
  341. package/src/command/providers/CliProvider.spec.ts +1067 -0
  342. package/src/command/providers/CliProvider.ts +203 -40
  343. package/src/core/Alepha.ts +3 -9
  344. package/src/core/__tests__/Alepha-start.spec.ts +4 -4
  345. package/src/core/helpers/jsonSchemaToTypeBox.spec.ts +771 -0
  346. package/src/core/helpers/jsonSchemaToTypeBox.ts +62 -10
  347. package/src/core/index.shared.ts +1 -0
  348. package/src/core/index.ts +20 -0
  349. package/src/core/primitives/$module.ts +12 -0
  350. package/src/core/providers/EventManager.spec.ts +0 -71
  351. package/src/core/providers/EventManager.ts +3 -15
  352. package/src/core/providers/Json.ts +2 -14
  353. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
  354. package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
  355. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  356. package/src/datetime/index.ts +15 -0
  357. package/src/email/index.ts +10 -5
  358. package/src/email/providers/LocalEmailProvider.spec.ts +1 -1
  359. package/src/email/providers/LocalEmailProvider.ts +1 -1
  360. package/src/fake/__tests__/keyName.example.ts +1 -1
  361. package/src/fake/__tests__/keyName.spec.ts +5 -5
  362. package/src/fake/index.ts +9 -6
  363. package/src/fake/providers/FakeProvider.spec.ts +258 -40
  364. package/src/fake/providers/FakeProvider.ts +133 -19
  365. package/src/lock/core/index.ts +11 -4
  366. package/src/logger/index.ts +17 -66
  367. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  368. package/src/mcp/errors/McpError.ts +30 -0
  369. package/src/mcp/index.ts +13 -27
  370. package/src/mcp/transports/SseMcpTransport.ts +6 -7
  371. package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
  372. package/src/orm/index.browser.ts +2 -2
  373. package/src/orm/index.bun.ts +4 -2
  374. package/src/orm/index.ts +21 -47
  375. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  376. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -0
  377. package/src/orm/services/Repository.ts +18 -3
  378. package/src/queue/core/index.ts +14 -6
  379. package/src/react/auth/__tests__/$auth.spec.ts +202 -0
  380. package/src/react/auth/hooks/useAuth.ts +32 -0
  381. package/src/react/auth/index.browser.ts +13 -0
  382. package/src/react/auth/index.shared.ts +2 -0
  383. package/src/react/auth/index.ts +48 -0
  384. package/src/react/auth/providers/ReactAuthProvider.ts +16 -0
  385. package/src/react/auth/services/ReactAuth.ts +135 -0
  386. package/src/react/core/__tests__/Router.spec.tsx +169 -0
  387. package/src/react/core/components/ClientOnly.tsx +49 -0
  388. package/src/react/core/components/ErrorBoundary.tsx +73 -0
  389. package/src/react/core/contexts/AlephaContext.ts +7 -0
  390. package/src/react/core/contexts/AlephaProvider.tsx +42 -0
  391. package/src/react/core/hooks/useAction.browser.spec.tsx +569 -0
  392. package/src/react/core/hooks/useAction.ts +480 -0
  393. package/src/react/core/hooks/useAlepha.ts +26 -0
  394. package/src/react/core/hooks/useClient.ts +17 -0
  395. package/src/react/core/hooks/useEvents.ts +51 -0
  396. package/src/react/core/hooks/useInject.ts +12 -0
  397. package/src/react/core/hooks/useStore.ts +52 -0
  398. package/src/react/core/index.ts +90 -0
  399. package/src/react/form/components/FormState.tsx +17 -0
  400. package/src/react/form/errors/FormValidationError.ts +18 -0
  401. package/src/react/form/hooks/useForm.browser.spec.tsx +366 -0
  402. package/src/react/form/hooks/useForm.ts +47 -0
  403. package/src/react/form/hooks/useFormState.ts +130 -0
  404. package/src/react/form/index.ts +44 -0
  405. package/src/react/form/services/FormModel.ts +614 -0
  406. package/src/react/head/helpers/SeoExpander.spec.ts +203 -0
  407. package/src/react/head/helpers/SeoExpander.ts +142 -0
  408. package/src/react/head/hooks/useHead.spec.tsx +288 -0
  409. package/src/react/head/hooks/useHead.ts +62 -0
  410. package/src/react/head/index.browser.ts +26 -0
  411. package/src/react/head/index.ts +44 -0
  412. package/src/react/head/interfaces/Head.ts +105 -0
  413. package/src/react/head/primitives/$head.ts +25 -0
  414. package/src/react/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
  415. package/src/react/head/providers/BrowserHeadProvider.ts +212 -0
  416. package/src/react/head/providers/HeadProvider.ts +168 -0
  417. package/src/react/head/providers/ServerHeadProvider.ts +31 -0
  418. package/src/react/i18n/__tests__/integration.spec.tsx +239 -0
  419. package/src/react/i18n/components/Localize.spec.tsx +357 -0
  420. package/src/react/i18n/components/Localize.tsx +35 -0
  421. package/src/react/i18n/hooks/useI18n.browser.spec.tsx +438 -0
  422. package/src/react/i18n/hooks/useI18n.ts +18 -0
  423. package/src/react/i18n/index.ts +41 -0
  424. package/src/react/i18n/primitives/$dictionary.ts +69 -0
  425. package/src/react/i18n/providers/I18nProvider.spec.ts +389 -0
  426. package/src/react/i18n/providers/I18nProvider.ts +278 -0
  427. package/src/react/router/__tests__/page-head-browser.browser.spec.ts +95 -0
  428. package/src/react/router/__tests__/page-head.spec.ts +48 -0
  429. package/src/react/router/__tests__/seo-head.spec.ts +125 -0
  430. package/src/react/router/atoms/ssrManifestAtom.ts +58 -0
  431. package/src/react/router/components/ErrorViewer.tsx +872 -0
  432. package/src/react/router/components/Link.tsx +23 -0
  433. package/src/react/router/components/NestedView.tsx +223 -0
  434. package/src/react/router/components/NotFound.tsx +30 -0
  435. package/src/react/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
  436. package/src/react/router/contexts/RouterLayerContext.ts +12 -0
  437. package/src/react/router/errors/Redirection.ts +28 -0
  438. package/src/react/router/hooks/useActive.ts +52 -0
  439. package/src/react/router/hooks/useQueryParams.ts +63 -0
  440. package/src/react/router/hooks/useRouter.ts +20 -0
  441. package/src/react/router/hooks/useRouterState.ts +11 -0
  442. package/src/react/router/index.browser.ts +45 -0
  443. package/src/react/router/index.shared.ts +19 -0
  444. package/src/react/router/index.ts +142 -0
  445. package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
  446. package/src/react/router/primitives/$page.spec.tsx +708 -0
  447. package/src/react/router/primitives/$page.ts +497 -0
  448. package/src/react/router/providers/ReactBrowserProvider.ts +309 -0
  449. package/src/react/router/providers/ReactBrowserRendererProvider.ts +25 -0
  450. package/src/react/router/providers/ReactBrowserRouterProvider.ts +168 -0
  451. package/src/react/router/providers/ReactPageProvider.ts +726 -0
  452. package/src/react/router/providers/ReactServerProvider.spec.tsx +316 -0
  453. package/src/react/router/providers/ReactServerProvider.ts +558 -0
  454. package/src/react/router/providers/ReactServerTemplateProvider.ts +979 -0
  455. package/src/react/router/providers/SSRManifestProvider.ts +334 -0
  456. package/src/react/router/services/ReactPageServerService.ts +48 -0
  457. package/src/react/router/services/ReactPageService.ts +27 -0
  458. package/src/react/router/services/ReactRouter.ts +262 -0
  459. package/src/react/websocket/hooks/useRoom.tsx +242 -0
  460. package/src/react/websocket/index.ts +7 -0
  461. package/src/redis/__tests__/redis.spec.ts +13 -0
  462. package/src/redis/index.ts +9 -25
  463. package/src/redis/providers/BunRedisProvider.ts +9 -0
  464. package/src/redis/providers/NodeRedisProvider.ts +8 -0
  465. package/src/redis/providers/RedisProvider.ts +16 -0
  466. package/src/retry/index.ts +11 -2
  467. package/src/router/index.ts +15 -0
  468. package/src/scheduler/index.ts +11 -2
  469. package/src/security/__tests__/BasicAuth.spec.ts +2 -0
  470. package/src/security/__tests__/ServerSecurityProvider.spec.ts +13 -5
  471. package/src/security/index.ts +15 -10
  472. package/src/security/interfaces/IssuerResolver.ts +27 -0
  473. package/src/security/primitives/$issuer.ts +55 -0
  474. package/src/security/providers/SecurityProvider.ts +179 -0
  475. package/src/security/providers/ServerBasicAuthProvider.ts +6 -2
  476. package/src/security/providers/ServerSecurityProvider.ts +36 -22
  477. package/src/server/auth/index.ts +12 -7
  478. package/src/server/cache/index.ts +7 -22
  479. package/src/server/compress/index.ts +10 -2
  480. package/src/server/cookies/index.ts +7 -5
  481. package/src/server/cookies/primitives/$cookie.ts +33 -11
  482. package/src/server/core/index.ts +17 -7
  483. package/src/server/core/interfaces/ServerRequest.ts +83 -1
  484. package/src/server/core/primitives/$action.spec.ts +1 -1
  485. package/src/server/core/primitives/$action.ts +8 -3
  486. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  487. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  488. package/src/server/core/providers/NodeHttpServerProvider.ts +77 -22
  489. package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
  490. package/src/server/core/providers/ServerProvider.ts +9 -12
  491. package/src/server/core/services/ServerRequestParser.spec.ts +520 -0
  492. package/src/server/core/services/ServerRequestParser.ts +306 -13
  493. package/src/server/cors/index.ts +7 -21
  494. package/src/server/cors/primitives/$cors.ts +6 -2
  495. package/src/server/health/index.ts +8 -2
  496. package/src/server/helmet/index.ts +11 -3
  497. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  498. package/src/server/links/index.browser.ts +2 -0
  499. package/src/server/links/index.ts +13 -6
  500. package/src/server/metrics/index.ts +10 -3
  501. package/src/server/multipart/index.ts +9 -3
  502. package/src/server/proxy/index.ts +8 -2
  503. package/src/server/rate-limit/index.ts +21 -25
  504. package/src/server/rate-limit/primitives/$rateLimit.ts +6 -2
  505. package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +38 -14
  506. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +22 -56
  507. package/src/server/static/index.ts +8 -2
  508. package/src/server/static/providers/ServerStaticProvider.ts +1 -1
  509. package/src/server/swagger/index.ts +9 -4
  510. package/src/server/swagger/providers/ServerSwaggerProvider.ts +1 -1
  511. package/src/sms/index.ts +9 -5
  512. package/src/sms/providers/LocalSmsProvider.spec.ts +1 -1
  513. package/src/sms/providers/LocalSmsProvider.ts +1 -1
  514. package/src/system/index.browser.ts +11 -0
  515. package/src/system/index.ts +62 -0
  516. package/src/{file → system}/providers/FileSystemProvider.ts +16 -0
  517. package/src/{file → system}/providers/MemoryFileSystemProvider.ts +116 -3
  518. package/src/system/providers/MemoryShellProvider.ts +164 -0
  519. package/src/{file → system}/providers/NodeFileSystemProvider.spec.ts +2 -2
  520. package/src/{file → system}/providers/NodeFileSystemProvider.ts +36 -0
  521. package/src/system/providers/NodeShellProvider.ts +184 -0
  522. package/src/system/providers/ShellProvider.ts +74 -0
  523. package/src/{file → system}/services/FileDetector.spec.ts +2 -2
  524. package/src/thread/index.ts +11 -2
  525. package/src/topic/core/index.ts +12 -5
  526. package/src/vite/index.ts +3 -2
  527. package/src/vite/tasks/buildClient.ts +2 -8
  528. package/src/vite/tasks/buildServer.ts +84 -21
  529. package/src/vite/tasks/copyAssets.ts +5 -4
  530. package/src/vite/tasks/generateSitemap.ts +64 -23
  531. package/src/vite/tasks/index.ts +0 -2
  532. package/src/vite/tasks/prerenderPages.ts +49 -24
  533. package/src/websocket/index.ts +12 -8
  534. package/dist/file/index.d.ts +0 -839
  535. package/dist/file/index.d.ts.map +0 -1
  536. package/dist/file/index.js.map +0 -1
  537. package/src/cli/assets/indexHtml.ts +0 -15
  538. package/src/cli/assets/mainServerTs.ts +0 -24
  539. package/src/cli/assets/webAppRouterTs.ts +0 -15
  540. package/src/cli/assets/webHelloComponentTsx.ts +0 -16
  541. package/src/cli/commands/format.ts +0 -23
  542. package/src/file/index.ts +0 -43
  543. package/src/vite/helpers/boot.ts +0 -117
  544. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  545. package/src/vite/tasks/devServer.ts +0 -71
  546. package/src/vite/tasks/runAlepha.ts +0 -270
  547. /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
  548. /package/src/cli/{assets → templates}/apiIndexTs.ts +0 -0
  549. /package/src/cli/{assets → templates}/webIndexTs.ts +0 -0
  550. /package/src/{file → system}/errors/FileError.ts +0 -0
  551. /package/src/{file → system}/services/FileDetector.ts +0 -0
@@ -1,839 +0,0 @@
1
- import * as alepha0 from "alepha";
2
- import { FileLike, StreamLike } from "alepha";
3
- import { Readable } from "node:stream";
4
-
5
- //#region ../../src/file/errors/FileError.d.ts
6
- declare class FileError extends Error {
7
- constructor(message: string, cause?: Error);
8
- }
9
- //#endregion
10
- //#region ../../src/file/providers/FileSystemProvider.d.ts
11
- /**
12
- * Options for creating a file from a URL
13
- */
14
- interface CreateFileFromUrlOptions {
15
- /**
16
- * The URL to load the file from (file://, http://, or https://)
17
- */
18
- url: string;
19
- /**
20
- * The MIME type of the file (optional, will be detected from filename if not provided)
21
- */
22
- type?: string;
23
- /**
24
- * The name of the file (optional, will be extracted from URL if not provided)
25
- */
26
- name?: string;
27
- }
28
- /**
29
- * Options for creating a file from a path (URL with file:// scheme)
30
- */
31
- interface CreateFileFromPathOptions {
32
- /**
33
- * The path to the file on the local filesystem
34
- */
35
- path: string;
36
- /**
37
- * The MIME type of the file (optional, will be detected from filename if not provided)
38
- */
39
- type?: string;
40
- /**
41
- * The name of the file (optional, will be extracted from URL if not provided)
42
- */
43
- name?: string;
44
- }
45
- /**
46
- * Options for creating a file from a Buffer
47
- */
48
- interface CreateFileFromBufferOptions {
49
- /**
50
- * The Buffer containing the file data
51
- */
52
- buffer: Buffer;
53
- /**
54
- * The MIME type of the file (optional, will be detected from name if not provided)
55
- */
56
- type?: string;
57
- /**
58
- * The name of the file (required for proper content type detection)
59
- */
60
- name?: string;
61
- }
62
- /**
63
- * Options for creating a file from a stream
64
- */
65
- interface CreateFileFromStreamOptions {
66
- /**
67
- * The readable stream containing the file data
68
- */
69
- stream: StreamLike;
70
- /**
71
- * The MIME type of the file (optional, will be detected from name if not provided)
72
- */
73
- type?: string;
74
- /**
75
- * The name of the file (required for proper content type detection)
76
- */
77
- name?: string;
78
- /**
79
- * The size of the file in bytes (optional)
80
- */
81
- size?: number;
82
- }
83
- /**
84
- * Options for creating a file from text content
85
- */
86
- interface CreateFileFromTextOptions {
87
- /**
88
- * The text content to create the file from
89
- */
90
- text: string;
91
- /**
92
- * The MIME type of the file (default: text/plain)
93
- */
94
- type?: string;
95
- /**
96
- * The name of the file (default: "file.txt")
97
- */
98
- name?: string;
99
- }
100
- interface CreateFileFromResponseOptions {
101
- /**
102
- * The Response object containing the file data
103
- */
104
- response: Response;
105
- /**
106
- * Override the name (optional, uses filename from Content-Disposition header if not provided)
107
- */
108
- name?: string;
109
- /**
110
- * Override the MIME type (optional, uses file.type if not provided)
111
- */
112
- type?: string;
113
- }
114
- /**
115
- * Options for creating a file from a Web File object
116
- */
117
- interface CreateFileFromWebFileOptions {
118
- /**
119
- * The Web File object
120
- */
121
- file: File;
122
- /**
123
- * Override the MIME type (optional, uses file.type if not provided)
124
- */
125
- type?: string;
126
- /**
127
- * Override the name (optional, uses file.name if not provided)
128
- */
129
- name?: string;
130
- /**
131
- * Override the size (optional, uses file.size if not provided)
132
- */
133
- size?: number;
134
- }
135
- /**
136
- * Options for creating a file from an ArrayBuffer
137
- */
138
- interface CreateFileFromArrayBufferOptions {
139
- /**
140
- * The ArrayBuffer containing the file data
141
- */
142
- arrayBuffer: ArrayBuffer;
143
- /**
144
- * The MIME type of the file (optional, will be detected from name if not provided)
145
- */
146
- type?: string;
147
- /**
148
- * The name of the file (required for proper content type detection)
149
- */
150
- name?: string;
151
- }
152
- /**
153
- * Union type for all createFile options
154
- */
155
- type CreateFileOptions = CreateFileFromUrlOptions | CreateFileFromPathOptions | CreateFileFromBufferOptions | CreateFileFromStreamOptions | CreateFileFromTextOptions | CreateFileFromWebFileOptions | CreateFileFromResponseOptions | CreateFileFromArrayBufferOptions;
156
- /**
157
- * Options for rm (remove) operation
158
- */
159
- interface RmOptions {
160
- /**
161
- * If true, removes directories and their contents recursively
162
- */
163
- recursive?: boolean;
164
- /**
165
- * If true, no error will be thrown if the path does not exist
166
- */
167
- force?: boolean;
168
- }
169
- /**
170
- * Options for cp (copy) operation
171
- */
172
- interface CpOptions {
173
- /**
174
- * If true, copy directories recursively
175
- */
176
- recursive?: boolean;
177
- /**
178
- * If true, overwrite existing destination
179
- */
180
- force?: boolean;
181
- }
182
- /**
183
- * Options for mkdir operation
184
- */
185
- interface MkdirOptions {
186
- /**
187
- * If true, creates parent directories as needed
188
- */
189
- recursive?: boolean;
190
- /**
191
- * File mode (permission and sticky bits)
192
- */
193
- mode?: number;
194
- }
195
- /**
196
- * Options for ls (list) operation
197
- */
198
- interface LsOptions {
199
- /**
200
- * If true, list contents of directories recursively
201
- */
202
- recursive?: boolean;
203
- /**
204
- * If true, include hidden files (starting with .)
205
- */
206
- hidden?: boolean;
207
- }
208
- /**
209
- * FileSystem interface providing utilities for working with files.
210
- */
211
- declare abstract class FileSystemProvider {
212
- /**
213
- * Joins multiple path segments into a single path.
214
- *
215
- * @param paths - The path segments to join
216
- * @returns The joined path
217
- */
218
- abstract join(...paths: string[]): string;
219
- /**
220
- * Creates a FileLike object from various sources.
221
- *
222
- * @param options - Options for creating the file
223
- * @returns A FileLike object
224
- */
225
- abstract createFile(options: CreateFileOptions): FileLike;
226
- /**
227
- * Removes a file or directory.
228
- *
229
- * @param path - The path to remove
230
- * @param options - Remove options
231
- */
232
- abstract rm(path: string, options?: RmOptions): Promise<void>;
233
- /**
234
- * Copies a file or directory.
235
- *
236
- * @param src - Source path
237
- * @param dest - Destination path
238
- * @param options - Copy options
239
- */
240
- abstract cp(src: string, dest: string, options?: CpOptions): Promise<void>;
241
- /**
242
- * Moves/renames a file or directory.
243
- *
244
- * @param src - Source path
245
- * @param dest - Destination path
246
- */
247
- abstract mv(src: string, dest: string): Promise<void>;
248
- /**
249
- * Creates a directory.
250
- *
251
- * @param path - The directory path to create
252
- * @param options - Mkdir options
253
- */
254
- abstract mkdir(path: string, options?: MkdirOptions): Promise<void>;
255
- /**
256
- * Lists files in a directory.
257
- *
258
- * @param path - The directory path to list
259
- * @param options - List options
260
- * @returns Array of filenames
261
- */
262
- abstract ls(path: string, options?: LsOptions): Promise<string[]>;
263
- /**
264
- * Checks if a file or directory exists.
265
- *
266
- * @param path - The path to check
267
- * @returns True if the path exists, false otherwise
268
- */
269
- abstract exists(path: string): Promise<boolean>;
270
- /**
271
- * Reads the content of a file.
272
- *
273
- * @param path - The file path to read
274
- * @returns The file content as a Buffer
275
- */
276
- abstract readFile(path: string): Promise<Buffer>;
277
- /**
278
- * Writes data to a file.
279
- *
280
- * @param path - The file path to write to
281
- * @param data - The data to write (Buffer or string)
282
- */
283
- abstract writeFile(path: string, data: Uint8Array | Buffer | string | FileLike): Promise<void>;
284
- }
285
- //#endregion
286
- //#region ../../src/file/providers/MemoryFileSystemProvider.d.ts
287
- interface MemoryFileSystemProviderOptions {
288
- /**
289
- * Error to throw on mkdir operations (for testing error handling)
290
- */
291
- mkdirError?: Error | null;
292
- /**
293
- * Error to throw on writeFile operations (for testing error handling)
294
- */
295
- writeFileError?: Error | null;
296
- /**
297
- * Error to throw on readFile operations (for testing error handling)
298
- */
299
- readFileError?: Error | null;
300
- }
301
- /**
302
- * In-memory implementation of FileSystemProvider for testing.
303
- *
304
- * This provider stores all files and directories in memory, making it ideal for
305
- * unit tests that need to verify file operations without touching the real file system.
306
- *
307
- * @example
308
- * ```typescript
309
- * // In tests, substitute the real FileSystemProvider with MemoryFileSystemProvider
310
- * const alepha = Alepha.create().with({
311
- * provide: FileSystemProvider,
312
- * use: MemoryFileSystemProvider,
313
- * });
314
- *
315
- * // Run code that uses FileSystemProvider
316
- * const service = alepha.inject(MyService);
317
- * await service.saveFile("test.txt", "Hello World");
318
- *
319
- * // Verify the file was written
320
- * const memoryFs = alepha.inject(MemoryFileSystemProvider);
321
- * expect(memoryFs.files.get("test.txt")?.toString()).toBe("Hello World");
322
- * ```
323
- */
324
- declare class MemoryFileSystemProvider implements FileSystemProvider {
325
- /**
326
- * In-memory storage for files (path -> content)
327
- */
328
- files: Map<string, Buffer<ArrayBufferLike>>;
329
- /**
330
- * In-memory storage for directories
331
- */
332
- directories: Set<string>;
333
- /**
334
- * Track mkdir calls for test assertions
335
- */
336
- mkdirCalls: Array<{
337
- path: string;
338
- options?: MkdirOptions;
339
- }>;
340
- /**
341
- * Track writeFile calls for test assertions
342
- */
343
- writeFileCalls: Array<{
344
- path: string;
345
- data: string;
346
- }>;
347
- /**
348
- * Track join calls for test assertions
349
- */
350
- joinCalls: Array<string[]>;
351
- /**
352
- * Error to throw on mkdir (for testing error handling)
353
- */
354
- mkdirError: Error | null;
355
- /**
356
- * Error to throw on writeFile (for testing error handling)
357
- */
358
- writeFileError: Error | null;
359
- /**
360
- * Error to throw on readFile (for testing error handling)
361
- */
362
- readFileError: Error | null;
363
- constructor(options?: MemoryFileSystemProviderOptions);
364
- /**
365
- * Join path segments using forward slashes.
366
- */
367
- join(...paths: string[]): string;
368
- /**
369
- * Create a FileLike object from various sources.
370
- */
371
- createFile(options: CreateFileOptions): FileLike;
372
- /**
373
- * Remove a file or directory from memory.
374
- */
375
- rm(path: string, options?: RmOptions): Promise<void>;
376
- /**
377
- * Copy a file or directory in memory.
378
- */
379
- cp(src: string, dest: string, options?: CpOptions): Promise<void>;
380
- /**
381
- * Move/rename a file or directory in memory.
382
- */
383
- mv(src: string, dest: string): Promise<void>;
384
- /**
385
- * Create a directory in memory.
386
- */
387
- mkdir(path: string, options?: MkdirOptions): Promise<void>;
388
- /**
389
- * List files in a directory.
390
- */
391
- ls(path: string, options?: LsOptions): Promise<string[]>;
392
- /**
393
- * Check if a file or directory exists in memory.
394
- */
395
- exists(path: string): Promise<boolean>;
396
- /**
397
- * Read a file from memory.
398
- */
399
- readFile(path: string): Promise<Buffer>;
400
- /**
401
- * Write a file to memory.
402
- */
403
- writeFile(path: string, data: Uint8Array | Buffer | string | FileLike): Promise<void>;
404
- /**
405
- * Reset all in-memory state (useful between tests).
406
- */
407
- reset(): void;
408
- /**
409
- * Get the content of a file as a string (convenience method for testing).
410
- */
411
- getFileContent(path: string): string | undefined;
412
- }
413
- //#endregion
414
- //#region ../../src/file/services/FileDetector.d.ts
415
- interface FileTypeResult {
416
- /**
417
- * The detected MIME type
418
- */
419
- mimeType: string;
420
- /**
421
- * The detected file extension
422
- */
423
- extension: string;
424
- /**
425
- * Whether the file type was verified by magic bytes
426
- */
427
- verified: boolean;
428
- /**
429
- * The stream (potentially wrapped to allow re-reading)
430
- */
431
- stream: Readable;
432
- }
433
- /**
434
- * Service for detecting file types and getting content types.
435
- *
436
- * @example
437
- * ```typescript
438
- * const detector = alepha.inject(FileDetector);
439
- *
440
- * // Get content type from filename
441
- * const mimeType = detector.getContentType("image.png"); // "image/png"
442
- *
443
- * // Detect file type by magic bytes
444
- * const stream = createReadStream('image.png');
445
- * const result = await detector.detectFileType(stream, 'image.png');
446
- * console.log(result.mimeType); // 'image/png'
447
- * console.log(result.verified); // true if magic bytes match
448
- * ```
449
- */
450
- declare class FileDetector {
451
- /**
452
- * Magic byte signatures for common file formats.
453
- * Each signature is represented as an array of bytes or null (wildcard).
454
- */
455
- protected static readonly MAGIC_BYTES: Record<string, {
456
- signature: (number | null)[];
457
- mimeType: string;
458
- }[]>;
459
- /**
460
- * All possible format signatures for checking against actual file content
461
- */
462
- protected static readonly ALL_SIGNATURES: {
463
- signature: (number | null)[];
464
- mimeType: string;
465
- ext: string;
466
- }[];
467
- /**
468
- * MIME type map for file extensions.
469
- *
470
- * Can be used to get the content type of file based on its extension.
471
- * Feel free to add more mime types in your project!
472
- */
473
- static readonly mimeMap: Record<string, string>;
474
- /**
475
- * Reverse MIME type map for looking up extensions from MIME types.
476
- * Prefers shorter, more common extensions when multiple exist.
477
- */
478
- protected static readonly reverseMimeMap: Record<string, string>;
479
- /**
480
- * Returns the file extension for a given MIME type.
481
- *
482
- * @param mimeType - The MIME type to look up
483
- * @returns The file extension (without dot), or "bin" if not found
484
- *
485
- * @example
486
- * ```typescript
487
- * const detector = alepha.inject(FileDetector);
488
- * const ext = detector.getExtensionFromMimeType("image/png"); // "png"
489
- * const ext2 = detector.getExtensionFromMimeType("application/octet-stream"); // "bin"
490
- * ```
491
- */
492
- getExtensionFromMimeType(mimeType: string): string;
493
- /**
494
- * Returns the content type of file based on its filename.
495
- *
496
- * @param filename - The filename to check
497
- * @returns The MIME type
498
- *
499
- * @example
500
- * ```typescript
501
- * const detector = alepha.inject(FileDetector);
502
- * const mimeType = detector.getContentType("image.png"); // "image/png"
503
- * ```
504
- */
505
- getContentType(filename: string): string;
506
- /**
507
- * Detects the file type by checking magic bytes against the stream content.
508
- *
509
- * @param stream - The readable stream to check
510
- * @param filename - The filename (used to get the extension)
511
- * @returns File type information including MIME type, extension, and verification status
512
- *
513
- * @example
514
- * ```typescript
515
- * const detector = alepha.inject(FileDetector);
516
- * const stream = createReadStream('image.png');
517
- * const result = await detector.detectFileType(stream, 'image.png');
518
- * console.log(result.mimeType); // 'image/png'
519
- * console.log(result.verified); // true if magic bytes match
520
- * ```
521
- */
522
- detectFileType(stream: Readable, filename: string): Promise<FileTypeResult>;
523
- /**
524
- * Reads all bytes from a stream and returns the first N bytes along with a new stream containing all data.
525
- * This approach reads the entire stream upfront to avoid complex async handling issues.
526
- *
527
- * @protected
528
- */
529
- protected peekBytes(stream: Readable, numBytes: number): Promise<{
530
- buffer: Buffer;
531
- stream: Readable;
532
- }>;
533
- /**
534
- * Checks if a buffer matches a magic byte signature.
535
- *
536
- * @protected
537
- */
538
- protected matchesSignature(buffer: Buffer, signature: (number | null)[]): boolean;
539
- }
540
- //#endregion
541
- //#region ../../src/file/providers/NodeFileSystemProvider.d.ts
542
- /**
543
- * Node.js implementation of FileSystem interface.
544
- *
545
- * @example
546
- * ```typescript
547
- * const fs = alepha.inject(NodeFileSystemProvider);
548
- *
549
- * // Create from URL
550
- * const file1 = fs.createFile({ url: "file:///path/to/file.png" });
551
- *
552
- * // Create from Buffer
553
- * const file2 = fs.createFile({ buffer: Buffer.from("hello"), name: "hello.txt" });
554
- *
555
- * // Create from text
556
- * const file3 = fs.createFile({ text: "Hello, world!", name: "greeting.txt" });
557
- *
558
- * // File operations
559
- * await fs.mkdir("/tmp/mydir", { recursive: true });
560
- * await fs.cp("/src/file.txt", "/dest/file.txt");
561
- * await fs.mv("/old/path.txt", "/new/path.txt");
562
- * const files = await fs.ls("/tmp");
563
- * await fs.rm("/tmp/file.txt");
564
- * ```
565
- */
566
- declare class NodeFileSystemProvider implements FileSystemProvider {
567
- protected detector: FileDetector;
568
- join(...paths: string[]): string;
569
- /**
570
- * Creates a FileLike object from various sources.
571
- *
572
- * @param options - Options for creating the file
573
- * @returns A FileLike object
574
- *
575
- * @example
576
- * ```typescript
577
- * const fs = alepha.inject(NodeFileSystemProvider);
578
- *
579
- * // From URL
580
- * const file1 = fs.createFile({ url: "https://example.com/image.png" });
581
- *
582
- * // From Buffer
583
- * const file2 = fs.createFile({
584
- * buffer: Buffer.from("hello"),
585
- * name: "hello.txt",
586
- * type: "text/plain"
587
- * });
588
- *
589
- * // From text
590
- * const file3 = fs.createFile({ text: "Hello!", name: "greeting.txt" });
591
- *
592
- * // From stream with detection
593
- * const stream = createReadStream("/path/to/file.png");
594
- * const file4 = fs.createFile({ stream, name: "image.png" });
595
- * ```
596
- */
597
- createFile(options: CreateFileOptions): FileLike;
598
- /**
599
- * Removes a file or directory.
600
- *
601
- * @param path - The path to remove
602
- * @param options - Remove options
603
- *
604
- * @example
605
- * ```typescript
606
- * const fs = alepha.inject(NodeFileSystemProvider);
607
- *
608
- * // Remove a file
609
- * await fs.rm("/tmp/file.txt");
610
- *
611
- * // Remove a directory recursively
612
- * await fs.rm("/tmp/mydir", { recursive: true });
613
- *
614
- * // Remove with force (no error if doesn't exist)
615
- * await fs.rm("/tmp/maybe-exists.txt", { force: true });
616
- * ```
617
- */
618
- rm(path: string, options?: RmOptions): Promise<void>;
619
- /**
620
- * Copies a file or directory.
621
- *
622
- * @param src - Source path
623
- * @param dest - Destination path
624
- * @param options - Copy options
625
- *
626
- * @example
627
- * ```typescript
628
- * const fs = alepha.inject(NodeFileSystemProvider);
629
- *
630
- * // Copy a file
631
- * await fs.cp("/src/file.txt", "/dest/file.txt");
632
- *
633
- * // Copy a directory recursively
634
- * await fs.cp("/src/dir", "/dest/dir", { recursive: true });
635
- *
636
- * // Copy with force (overwrite existing)
637
- * await fs.cp("/src/file.txt", "/dest/file.txt", { force: true });
638
- * ```
639
- */
640
- cp(src: string, dest: string, options?: CpOptions): Promise<void>;
641
- /**
642
- * Moves/renames a file or directory.
643
- *
644
- * @param src - Source path
645
- * @param dest - Destination path
646
- *
647
- * @example
648
- * ```typescript
649
- * const fs = alepha.inject(NodeFileSystemProvider);
650
- *
651
- * // Move/rename a file
652
- * await fs.mv("/old/path.txt", "/new/path.txt");
653
- *
654
- * // Move a directory
655
- * await fs.mv("/old/dir", "/new/dir");
656
- * ```
657
- */
658
- mv(src: string, dest: string): Promise<void>;
659
- /**
660
- * Creates a directory.
661
- *
662
- * @param path - The directory path to create
663
- * @param options - Mkdir options
664
- *
665
- * @example
666
- * ```typescript
667
- * const fs = alepha.inject(NodeFileSystemProvider);
668
- *
669
- * // Create a directory
670
- * await fs.mkdir("/tmp/mydir");
671
- *
672
- * // Create nested directories
673
- * await fs.mkdir("/tmp/path/to/dir", { recursive: true });
674
- *
675
- * // Create with specific permissions
676
- * await fs.mkdir("/tmp/mydir", { mode: 0o755 });
677
- * ```
678
- */
679
- mkdir(path: string, options?: MkdirOptions): Promise<void>;
680
- /**
681
- * Lists files in a directory.
682
- *
683
- * @param path - The directory path to list
684
- * @param options - List options
685
- * @returns Array of filenames
686
- *
687
- * @example
688
- * ```typescript
689
- * const fs = alepha.inject(NodeFileSystemProvider);
690
- *
691
- * // List files in a directory
692
- * const files = await fs.ls("/tmp");
693
- * console.log(files); // ["file1.txt", "file2.txt", "subdir"]
694
- *
695
- * // List with hidden files
696
- * const allFiles = await fs.ls("/tmp", { hidden: true });
697
- *
698
- * // List recursively
699
- * const allFilesRecursive = await fs.ls("/tmp", { recursive: true });
700
- * ```
701
- */
702
- ls(path: string, options?: LsOptions): Promise<string[]>;
703
- /**
704
- * Checks if a file or directory exists.
705
- *
706
- * @param path - The path to check
707
- * @returns True if the path exists, false otherwise
708
- *
709
- * @example
710
- * ```typescript
711
- * const fs = alepha.inject(NodeFileSystemProvider);
712
- *
713
- * if (await fs.exists("/tmp/file.txt")) {
714
- * console.log("File exists");
715
- * }
716
- * ```
717
- */
718
- exists(path: string): Promise<boolean>;
719
- /**
720
- * Reads the content of a file.
721
- *
722
- * @param path - The file path to read
723
- * @returns The file content as a Buffer
724
- *
725
- * @example
726
- * ```typescript
727
- * const fs = alepha.inject(NodeFileSystemProvider);
728
- *
729
- * const buffer = await fs.readFile("/tmp/file.txt");
730
- * console.log(buffer.toString("utf-8"));
731
- * ```
732
- */
733
- readFile(path: string): Promise<Buffer>;
734
- /**
735
- * Writes data to a file.
736
- *
737
- * @param path - The file path to write to
738
- * @param data - The data to write (Buffer or string)
739
- *
740
- * @example
741
- * ```typescript
742
- * const fs = alepha.inject(NodeFileSystemProvider);
743
- *
744
- * // Write string
745
- * await fs.writeFile("/tmp/file.txt", "Hello, world!");
746
- *
747
- * // Write Buffer
748
- * await fs.writeFile("/tmp/file.bin", Buffer.from([0x01, 0x02, 0x03]));
749
- * ```
750
- */
751
- writeFile(path: string, data: Uint8Array | Buffer | string | FileLike): Promise<void>;
752
- /**
753
- * Creates a FileLike object from a Web File.
754
- *
755
- * @protected
756
- */
757
- protected createFileFromWebFile(source: File, options?: {
758
- type?: string;
759
- name?: string;
760
- size?: number;
761
- }): FileLike;
762
- /**
763
- * Creates a FileLike object from a Buffer.
764
- *
765
- * @protected
766
- */
767
- protected createFileFromBuffer(source: Buffer, options?: {
768
- type?: string;
769
- name?: string;
770
- }): FileLike;
771
- /**
772
- * Creates a FileLike object from a stream.
773
- *
774
- * @protected
775
- */
776
- protected createFileFromStream(source: StreamLike, options?: {
777
- type?: string;
778
- name?: string;
779
- size?: number;
780
- }): FileLike & {
781
- _buffer: null | Buffer;
782
- };
783
- /**
784
- * Creates a FileLike object from a URL.
785
- *
786
- * @protected
787
- */
788
- protected createFileFromUrl(url: string, options?: {
789
- type?: string;
790
- name?: string;
791
- }): FileLike;
792
- /**
793
- * Gets a streaming response from a URL.
794
- *
795
- * @protected
796
- */
797
- protected getStreamingResponse(url: string): Readable;
798
- /**
799
- * Loads data from a URL.
800
- *
801
- * @protected
802
- */
803
- protected loadFromUrl(url: string): Promise<Buffer>;
804
- /**
805
- * Creates a stream from a URL.
806
- *
807
- * @protected
808
- */
809
- protected createStreamFromUrl(url: string): Readable;
810
- /**
811
- * Converts a stream-like object to a Buffer.
812
- *
813
- * @protected
814
- */
815
- protected streamToBuffer(streamLike: StreamLike): Promise<Buffer>;
816
- /**
817
- * Converts a Node.js Buffer to an ArrayBuffer.
818
- *
819
- * @protected
820
- */
821
- protected bufferToArrayBuffer(buffer: Buffer): ArrayBuffer;
822
- }
823
- //#endregion
824
- //#region ../../src/file/index.d.ts
825
- /**
826
- * Provides file system capabilities for Alepha applications with support for multiple file sources and operations.
827
- *
828
- * The file module enables working with files from various sources (URLs, buffers, streams) and provides
829
- * utilities for file type detection, content type determination, and common file system operations.
830
- *
831
- * @see {@link FileDetector}
832
- * @see {@link FileSystemProvider}
833
- * @see {@link NodeFileSystemProvider}
834
- * @module alepha.file
835
- */
836
- declare const AlephaFile: alepha0.Service<alepha0.Module>;
837
- //#endregion
838
- export { AlephaFile, CpOptions, CreateFileFromArrayBufferOptions, CreateFileFromBufferOptions, CreateFileFromPathOptions, CreateFileFromResponseOptions, CreateFileFromStreamOptions, CreateFileFromTextOptions, CreateFileFromUrlOptions, CreateFileFromWebFileOptions, CreateFileOptions, FileDetector, FileError, FileSystemProvider, FileTypeResult, LsOptions, MemoryFileSystemProvider, MemoryFileSystemProviderOptions, MkdirOptions, NodeFileSystemProvider, RmOptions };
839
- //# sourceMappingURL=index.d.ts.map