alepha 0.14.2 → 0.14.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/api/audits/index.browser.js +5 -5
  2. package/dist/api/audits/index.browser.js.map +1 -1
  3. package/dist/api/audits/index.d.ts +784 -784
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/audits/index.js +13 -13
  6. package/dist/api/audits/index.js.map +1 -1
  7. package/dist/api/files/index.browser.js +5 -5
  8. package/dist/api/files/index.browser.js.map +1 -1
  9. package/dist/api/files/index.d.ts +57 -57
  10. package/dist/api/files/index.d.ts.map +1 -1
  11. package/dist/api/files/index.js +71 -71
  12. package/dist/api/files/index.js.map +1 -1
  13. package/dist/api/jobs/index.browser.js +5 -5
  14. package/dist/api/jobs/index.browser.js.map +1 -1
  15. package/dist/api/jobs/index.d.ts +165 -165
  16. package/dist/api/jobs/index.d.ts.map +1 -1
  17. package/dist/api/jobs/index.js +10 -10
  18. package/dist/api/jobs/index.js.map +1 -1
  19. package/dist/api/notifications/index.browser.js +10 -10
  20. package/dist/api/notifications/index.browser.js.map +1 -1
  21. package/dist/api/notifications/index.d.ts +583 -171
  22. package/dist/api/notifications/index.d.ts.map +1 -1
  23. package/dist/api/notifications/index.js +12 -12
  24. package/dist/api/notifications/index.js.map +1 -1
  25. package/dist/api/parameters/index.browser.js +163 -10
  26. package/dist/api/parameters/index.browser.js.map +1 -1
  27. package/dist/api/parameters/index.d.ts +281 -276
  28. package/dist/api/parameters/index.d.ts.map +1 -1
  29. package/dist/api/parameters/index.js +196 -91
  30. package/dist/api/parameters/index.js.map +1 -1
  31. package/dist/api/users/index.browser.js +19 -19
  32. package/dist/api/users/index.browser.js.map +1 -1
  33. package/dist/api/users/index.d.ts +1137 -1123
  34. package/dist/api/users/index.d.ts.map +1 -1
  35. package/dist/api/users/index.js +827 -596
  36. package/dist/api/users/index.js.map +1 -1
  37. package/dist/api/verifications/index.browser.js +6 -6
  38. package/dist/api/verifications/index.browser.js.map +1 -1
  39. package/dist/api/verifications/index.d.ts +13 -13
  40. package/dist/api/verifications/index.d.ts.map +1 -1
  41. package/dist/api/verifications/index.js +6 -6
  42. package/dist/api/verifications/index.js.map +1 -1
  43. package/dist/bin/index.d.ts +1 -2
  44. package/dist/bin/index.js +0 -1
  45. package/dist/bin/index.js.map +1 -1
  46. package/dist/cli/index.d.ts +137 -112
  47. package/dist/cli/index.d.ts.map +1 -1
  48. package/dist/cli/index.js +371 -259
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/command/index.d.ts +45 -5
  51. package/dist/command/index.d.ts.map +1 -1
  52. package/dist/command/index.js +97 -17
  53. package/dist/command/index.js.map +1 -1
  54. package/dist/core/index.browser.js +14 -18
  55. package/dist/core/index.browser.js.map +1 -1
  56. package/dist/core/index.d.ts +29 -0
  57. package/dist/core/index.d.ts.map +1 -1
  58. package/dist/core/index.js +14 -18
  59. package/dist/core/index.js.map +1 -1
  60. package/dist/core/index.native.js +14 -18
  61. package/dist/core/index.native.js.map +1 -1
  62. package/dist/fake/index.js +195 -168
  63. package/dist/fake/index.js.map +1 -1
  64. package/dist/file/index.d.ts +8 -0
  65. package/dist/file/index.d.ts.map +1 -1
  66. package/dist/file/index.js +3 -0
  67. package/dist/file/index.js.map +1 -1
  68. package/dist/mcp/index.d.ts.map +1 -1
  69. package/dist/orm/index.d.ts +32 -32
  70. package/dist/orm/index.d.ts.map +1 -1
  71. package/dist/orm/index.js +12 -12
  72. package/dist/orm/index.js.map +1 -1
  73. package/dist/security/index.d.ts +1 -1
  74. package/dist/security/index.d.ts.map +1 -1
  75. package/dist/security/index.js +1 -1
  76. package/dist/security/index.js.map +1 -1
  77. package/dist/server/auth/index.d.ts +171 -155
  78. package/dist/server/auth/index.d.ts.map +1 -1
  79. package/dist/server/auth/index.js +0 -1
  80. package/dist/server/auth/index.js.map +1 -1
  81. package/dist/server/compress/index.d.ts.map +1 -1
  82. package/dist/server/compress/index.js +2 -0
  83. package/dist/server/compress/index.js.map +1 -1
  84. package/dist/server/core/index.d.ts.map +1 -1
  85. package/dist/server/core/index.js +1 -1
  86. package/dist/server/core/index.js.map +1 -1
  87. package/dist/server/links/index.browser.js +22 -6
  88. package/dist/server/links/index.browser.js.map +1 -1
  89. package/dist/server/links/index.d.ts +46 -44
  90. package/dist/server/links/index.d.ts.map +1 -1
  91. package/dist/server/links/index.js +24 -41
  92. package/dist/server/links/index.js.map +1 -1
  93. package/dist/server/security/index.d.ts +9 -9
  94. package/dist/server/swagger/index.d.ts +2 -1
  95. package/dist/server/swagger/index.d.ts.map +1 -1
  96. package/dist/server/swagger/index.js +8 -3
  97. package/dist/server/swagger/index.js.map +1 -1
  98. package/dist/vite/index.d.ts.map +1 -1
  99. package/dist/vite/index.js +12 -4
  100. package/dist/vite/index.js.map +1 -1
  101. package/dist/websocket/index.d.ts +7 -7
  102. package/package.json +7 -7
  103. package/src/api/audits/controllers/{AuditController.ts → AdminAuditController.ts} +5 -6
  104. package/src/api/audits/entities/audits.ts +5 -5
  105. package/src/api/audits/index.browser.ts +1 -1
  106. package/src/api/audits/index.ts +3 -3
  107. package/src/api/audits/primitives/$audit.spec.ts +276 -0
  108. package/src/api/audits/services/AuditService.spec.ts +495 -0
  109. package/src/api/files/__tests__/$bucket.spec.ts +91 -0
  110. package/src/api/files/controllers/AdminFileStatsController.spec.ts +166 -0
  111. package/src/api/files/controllers/{StorageStatsController.ts → AdminFileStatsController.ts} +2 -2
  112. package/src/api/files/controllers/FileController.spec.ts +558 -0
  113. package/src/api/files/controllers/FileController.ts +4 -5
  114. package/src/api/files/entities/files.ts +5 -5
  115. package/src/api/files/index.browser.ts +1 -1
  116. package/src/api/files/index.ts +4 -4
  117. package/src/api/files/jobs/FileJobs.spec.ts +52 -0
  118. package/src/api/files/services/FileService.spec.ts +109 -0
  119. package/src/api/jobs/__tests__/JobController.spec.ts +343 -0
  120. package/src/api/jobs/controllers/{JobController.ts → AdminJobController.ts} +2 -2
  121. package/src/api/jobs/entities/jobExecutions.ts +5 -5
  122. package/src/api/jobs/index.ts +3 -3
  123. package/src/api/jobs/primitives/$job.spec.ts +476 -0
  124. package/src/api/notifications/controllers/{NotificationController.ts → AdminNotificationController.ts} +4 -5
  125. package/src/api/notifications/entities/notifications.ts +5 -5
  126. package/src/api/notifications/index.browser.ts +1 -1
  127. package/src/api/notifications/index.ts +4 -4
  128. package/src/api/parameters/controllers/{ConfigController.ts → AdminConfigController.ts} +46 -107
  129. package/src/api/parameters/entities/parameters.ts +7 -17
  130. package/src/api/parameters/index.ts +3 -3
  131. package/src/api/parameters/primitives/$config.spec.ts +356 -0
  132. package/src/api/parameters/schemas/activateConfigBodySchema.ts +12 -0
  133. package/src/api/parameters/schemas/checkScheduledResponseSchema.ts +8 -0
  134. package/src/api/parameters/schemas/configCurrentResponseSchema.ts +13 -0
  135. package/src/api/parameters/schemas/configHistoryResponseSchema.ts +9 -0
  136. package/src/api/parameters/schemas/configNameParamSchema.ts +10 -0
  137. package/src/api/parameters/schemas/configNamesResponseSchema.ts +8 -0
  138. package/src/api/parameters/schemas/configTreeNodeSchema.ts +13 -0
  139. package/src/api/parameters/schemas/configVersionParamSchema.ts +9 -0
  140. package/src/api/parameters/schemas/configVersionResponseSchema.ts +9 -0
  141. package/src/api/parameters/schemas/configsByStatusResponseSchema.ts +9 -0
  142. package/src/api/parameters/schemas/createConfigVersionBodySchema.ts +24 -0
  143. package/src/api/parameters/schemas/index.ts +15 -0
  144. package/src/api/parameters/schemas/parameterResponseSchema.ts +26 -0
  145. package/src/api/parameters/schemas/parameterStatusSchema.ts +13 -0
  146. package/src/api/parameters/schemas/rollbackConfigBodySchema.ts +15 -0
  147. package/src/api/parameters/schemas/statusParamSchema.ts +9 -0
  148. package/src/api/users/__tests__/EmailVerification.spec.ts +369 -0
  149. package/src/api/users/__tests__/PasswordReset.spec.ts +550 -0
  150. package/src/api/users/controllers/AdminIdentityController.spec.ts +365 -0
  151. package/src/api/users/controllers/{IdentityController.ts → AdminIdentityController.ts} +3 -4
  152. package/src/api/users/controllers/AdminSessionController.spec.ts +274 -0
  153. package/src/api/users/controllers/{SessionController.ts → AdminSessionController.ts} +3 -4
  154. package/src/api/users/controllers/AdminUserController.spec.ts +372 -0
  155. package/src/api/users/controllers/AdminUserController.ts +116 -0
  156. package/src/api/users/controllers/UserController.ts +4 -107
  157. package/src/api/users/controllers/UserRealmController.ts +3 -0
  158. package/src/api/users/entities/identities.ts +6 -6
  159. package/src/api/users/entities/sessions.ts +6 -6
  160. package/src/api/users/entities/users.ts +9 -9
  161. package/src/api/users/index.ts +9 -6
  162. package/src/api/users/primitives/$userRealm.ts +13 -8
  163. package/src/api/users/services/CredentialService.spec.ts +509 -0
  164. package/src/api/users/services/CredentialService.ts +46 -0
  165. package/src/api/users/services/IdentityService.ts +15 -0
  166. package/src/api/users/services/RegistrationService.spec.ts +630 -0
  167. package/src/api/users/services/RegistrationService.ts +18 -0
  168. package/src/api/users/services/SessionService.spec.ts +301 -0
  169. package/src/api/users/services/SessionService.ts +110 -1
  170. package/src/api/users/services/UserService.ts +67 -2
  171. package/src/api/verifications/__tests__/CodeVerification.spec.ts +318 -0
  172. package/src/api/verifications/__tests__/LinkVerification.spec.ts +279 -0
  173. package/src/api/verifications/entities/verifications.ts +6 -6
  174. package/src/api/verifications/jobs/VerificationJobs.spec.ts +50 -0
  175. package/src/batch/__tests__/startup-buffering.spec.ts +458 -0
  176. package/src/batch/primitives/$batch.spec.ts +766 -0
  177. package/src/batch/providers/BatchProvider.spec.ts +786 -0
  178. package/src/bin/index.ts +0 -1
  179. package/src/bucket/__tests__/shared.ts +194 -0
  180. package/src/bucket/primitives/$bucket.spec.ts +104 -0
  181. package/src/bucket/providers/FileStorageProvider.spec.ts +13 -0
  182. package/src/bucket/providers/LocalFileStorageProvider.spec.ts +77 -0
  183. package/src/bucket/providers/MemoryFileStorageProvider.spec.ts +82 -0
  184. package/src/cache/core/__tests__/shared.ts +377 -0
  185. package/src/cache/core/primitives/$cache.spec.ts +111 -0
  186. package/src/cache/redis/__tests__/cache-redis.spec.ts +70 -0
  187. package/src/cli/apps/AlephaCli.ts +25 -4
  188. package/src/cli/commands/dev.ts +19 -7
  189. package/src/cli/commands/gen/changelog.spec.ts +315 -0
  190. package/src/cli/commands/{changelog.ts → gen/changelog.ts} +9 -9
  191. package/src/cli/commands/gen/openapi.ts +71 -0
  192. package/src/cli/commands/gen.ts +18 -0
  193. package/src/cli/commands/init.ts +2 -0
  194. package/src/cli/commands/root.ts +12 -3
  195. package/src/cli/commands/typecheck.ts +5 -0
  196. package/src/cli/index.ts +2 -1
  197. package/src/cli/services/AlephaCliUtils.ts +71 -32
  198. package/src/cli/services/GitMessageParser.ts +1 -1
  199. package/src/command/helpers/Asker.spec.ts +127 -0
  200. package/src/command/helpers/Runner.spec.ts +126 -0
  201. package/src/command/primitives/$command.spec.ts +1588 -0
  202. package/src/command/providers/CliProvider.ts +74 -24
  203. package/src/core/Alepha.ts +45 -0
  204. package/src/core/__tests__/Alepha-emit.spec.ts +22 -0
  205. package/src/core/__tests__/Alepha-graph.spec.ts +93 -0
  206. package/src/core/__tests__/Alepha-has.spec.ts +41 -0
  207. package/src/core/__tests__/Alepha-inject.spec.ts +93 -0
  208. package/src/core/__tests__/Alepha-register.spec.ts +81 -0
  209. package/src/core/__tests__/Alepha-start.spec.ts +176 -0
  210. package/src/core/__tests__/Alepha-with.spec.ts +14 -0
  211. package/src/core/__tests__/TypeBox-usecases.spec.ts +35 -0
  212. package/src/core/__tests__/TypeBoxLocale.spec.ts +15 -0
  213. package/src/core/__tests__/descriptor.spec.ts +34 -0
  214. package/src/core/__tests__/fixtures/A.ts +5 -0
  215. package/src/core/__tests__/pagination.spec.ts +77 -0
  216. package/src/core/helpers/jsonSchemaToTypeBox.ts +2 -2
  217. package/src/core/primitives/$atom.spec.ts +43 -0
  218. package/src/core/primitives/$hook.spec.ts +130 -0
  219. package/src/core/primitives/$inject.spec.ts +175 -0
  220. package/src/core/primitives/$module.spec.ts +115 -0
  221. package/src/core/providers/CodecManager.spec.ts +740 -0
  222. package/src/core/providers/EventManager.spec.ts +762 -0
  223. package/src/core/providers/EventManager.ts +4 -0
  224. package/src/core/providers/StateManager.spec.ts +365 -0
  225. package/src/core/providers/TypeProvider.spec.ts +1607 -0
  226. package/src/core/providers/TypeProvider.ts +20 -26
  227. package/src/datetime/primitives/$interval.spec.ts +103 -0
  228. package/src/datetime/providers/DateTimeProvider.spec.ts +86 -0
  229. package/src/email/primitives/$email.spec.ts +175 -0
  230. package/src/email/providers/LocalEmailProvider.spec.ts +341 -0
  231. package/src/fake/__tests__/keyName.example.ts +40 -0
  232. package/src/fake/__tests__/keyName.spec.ts +152 -0
  233. package/src/fake/__tests__/module.example.ts +32 -0
  234. package/src/fake/providers/FakeProvider.spec.ts +438 -0
  235. package/src/file/providers/FileSystemProvider.ts +8 -0
  236. package/src/file/providers/NodeFileSystemProvider.spec.ts +418 -0
  237. package/src/file/providers/NodeFileSystemProvider.ts +5 -0
  238. package/src/file/services/FileDetector.spec.ts +591 -0
  239. package/src/lock/core/__tests__/shared.ts +190 -0
  240. package/src/lock/core/providers/MemoryLockProvider.spec.ts +25 -0
  241. package/src/lock/redis/providers/RedisLockProvider.spec.ts +25 -0
  242. package/src/logger/__tests__/SimpleFormatterProvider.spec.ts +109 -0
  243. package/src/logger/primitives/$logger.spec.ts +108 -0
  244. package/src/logger/services/Logger.spec.ts +295 -0
  245. package/src/mcp/__tests__/errors.spec.ts +175 -0
  246. package/src/mcp/__tests__/integration.spec.ts +450 -0
  247. package/src/mcp/helpers/jsonrpc.spec.ts +380 -0
  248. package/src/mcp/primitives/$prompt.spec.ts +468 -0
  249. package/src/mcp/primitives/$resource.spec.ts +390 -0
  250. package/src/mcp/primitives/$tool.spec.ts +406 -0
  251. package/src/mcp/providers/McpServerProvider.spec.ts +797 -0
  252. package/src/orm/__tests__/$repository-crud.spec.ts +276 -0
  253. package/src/orm/__tests__/$repository-hooks.spec.ts +325 -0
  254. package/src/orm/__tests__/$repository-orderBy.spec.ts +128 -0
  255. package/src/orm/__tests__/$repository-pagination-sort.spec.ts +149 -0
  256. package/src/orm/__tests__/$repository-save.spec.ts +37 -0
  257. package/src/orm/__tests__/ModelBuilder-integration.spec.ts +490 -0
  258. package/src/orm/__tests__/ModelBuilder-types.spec.ts +186 -0
  259. package/src/orm/__tests__/PostgresProvider.spec.ts +46 -0
  260. package/src/orm/__tests__/delete-returning.spec.ts +256 -0
  261. package/src/orm/__tests__/deletedAt.spec.ts +80 -0
  262. package/src/orm/__tests__/enums.spec.ts +315 -0
  263. package/src/orm/__tests__/execute.spec.ts +72 -0
  264. package/src/orm/__tests__/fixtures/bigEntitySchema.ts +65 -0
  265. package/src/orm/__tests__/fixtures/userEntitySchema.ts +27 -0
  266. package/src/orm/__tests__/joins.spec.ts +1114 -0
  267. package/src/orm/__tests__/page.spec.ts +287 -0
  268. package/src/orm/__tests__/primaryKey.spec.ts +87 -0
  269. package/src/orm/__tests__/query-date-encoding.spec.ts +402 -0
  270. package/src/orm/__tests__/ref-auto-onDelete.spec.ts +156 -0
  271. package/src/orm/__tests__/references.spec.ts +102 -0
  272. package/src/orm/__tests__/security.spec.ts +710 -0
  273. package/src/orm/__tests__/sqlite.spec.ts +111 -0
  274. package/src/orm/__tests__/string-operators.spec.ts +429 -0
  275. package/src/orm/__tests__/timestamps.spec.ts +388 -0
  276. package/src/orm/__tests__/validation.spec.ts +183 -0
  277. package/src/orm/__tests__/version.spec.ts +64 -0
  278. package/src/orm/helpers/parseQueryString.spec.ts +196 -0
  279. package/src/orm/primitives/$repository.spec.ts +137 -0
  280. package/src/orm/primitives/$sequence.spec.ts +29 -0
  281. package/src/orm/primitives/$transaction.spec.ts +82 -0
  282. package/src/orm/providers/drivers/BunPostgresProvider.ts +3 -3
  283. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -1
  284. package/src/orm/providers/drivers/CloudflareD1Provider.ts +1 -1
  285. package/src/orm/providers/drivers/DatabaseProvider.ts +1 -1
  286. package/src/orm/providers/drivers/NodePostgresProvider.ts +3 -3
  287. package/src/orm/providers/drivers/NodeSqliteProvider.ts +1 -1
  288. package/src/orm/providers/drivers/PglitePostgresProvider.ts +2 -2
  289. package/src/orm/services/ModelBuilder.spec.ts +575 -0
  290. package/src/orm/services/Repository.spec.ts +137 -0
  291. package/src/queue/core/__tests__/shared.ts +143 -0
  292. package/src/queue/core/providers/MemoryQueueProvider.spec.ts +23 -0
  293. package/src/queue/core/providers/WorkerProvider.spec.ts +378 -0
  294. package/src/queue/redis/providers/RedisQueueProvider.spec.ts +23 -0
  295. package/src/redis/__tests__/redis.spec.ts +58 -0
  296. package/src/retry/primitives/$retry.spec.ts +234 -0
  297. package/src/retry/providers/RetryProvider.spec.ts +438 -0
  298. package/src/router/__tests__/match.spec.ts +252 -0
  299. package/src/router/providers/RouterProvider.spec.ts +197 -0
  300. package/src/scheduler/__tests__/$scheduler-cron.spec.ts +25 -0
  301. package/src/scheduler/__tests__/$scheduler-interval.spec.ts +25 -0
  302. package/src/scheduler/__tests__/shared.ts +77 -0
  303. package/src/security/__tests__/bug-1-wildcard-after-start.spec.ts +229 -0
  304. package/src/security/__tests__/bug-2-password-validation.spec.ts +245 -0
  305. package/src/security/__tests__/bug-3-regex-vulnerability.spec.ts +407 -0
  306. package/src/security/__tests__/bug-4-oauth2-validation.spec.ts +439 -0
  307. package/src/security/__tests__/multi-layer-permissions.spec.ts +522 -0
  308. package/src/security/primitives/$permission.spec.ts +30 -0
  309. package/src/security/primitives/$permission.ts +2 -2
  310. package/src/security/primitives/$realm.spec.ts +101 -0
  311. package/src/security/primitives/$role.spec.ts +52 -0
  312. package/src/security/primitives/$serviceAccount.spec.ts +61 -0
  313. package/src/security/providers/SecurityProvider.spec.ts +350 -0
  314. package/src/server/auth/providers/ServerAuthProvider.ts +0 -2
  315. package/src/server/cache/providers/ServerCacheProvider.spec.ts +942 -0
  316. package/src/server/compress/providers/ServerCompressProvider.spec.ts +31 -0
  317. package/src/server/compress/providers/ServerCompressProvider.ts +2 -0
  318. package/src/server/cookies/providers/ServerCookiesProvider.spec.ts +253 -0
  319. package/src/server/core/__tests__/ServerRouterProvider-getRoutes.spec.ts +334 -0
  320. package/src/server/core/__tests__/ServerRouterProvider-requestId.spec.ts +129 -0
  321. package/src/server/core/primitives/$action.spec.ts +191 -0
  322. package/src/server/core/primitives/$route.spec.ts +65 -0
  323. package/src/server/core/providers/ServerBodyParserProvider.spec.ts +93 -0
  324. package/src/server/core/providers/ServerLoggerProvider.spec.ts +100 -0
  325. package/src/server/core/providers/ServerProvider.ts +3 -1
  326. package/src/server/core/services/HttpClient.spec.ts +123 -0
  327. package/src/server/core/services/UserAgentParser.spec.ts +111 -0
  328. package/src/server/cors/providers/ServerCorsProvider.spec.ts +481 -0
  329. package/src/server/health/providers/ServerHealthProvider.spec.ts +22 -0
  330. package/src/server/helmet/providers/ServerHelmetProvider.spec.ts +105 -0
  331. package/src/server/links/__tests__/$action.spec.ts +238 -0
  332. package/src/server/links/__tests__/fixtures/CrudApp.ts +122 -0
  333. package/src/server/links/__tests__/requestId.spec.ts +120 -0
  334. package/src/server/links/primitives/$remote.spec.ts +228 -0
  335. package/src/server/links/providers/LinkProvider.spec.ts +54 -0
  336. package/src/server/links/providers/LinkProvider.ts +49 -3
  337. package/src/server/links/providers/ServerLinksProvider.ts +1 -53
  338. package/src/server/links/schemas/apiLinksResponseSchema.ts +7 -0
  339. package/src/server/metrics/providers/ServerMetricsProvider.spec.ts +25 -0
  340. package/src/server/multipart/providers/ServerMultipartProvider.spec.ts +528 -0
  341. package/src/server/proxy/primitives/$proxy.spec.ts +87 -0
  342. package/src/server/rate-limit/__tests__/ActionRateLimit.spec.ts +211 -0
  343. package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +344 -0
  344. package/src/server/security/__tests__/BasicAuth.spec.ts +684 -0
  345. package/src/server/security/__tests__/ServerSecurityProvider-realm.spec.ts +388 -0
  346. package/src/server/security/providers/ServerSecurityProvider.spec.ts +123 -0
  347. package/src/server/static/primitives/$serve.spec.ts +193 -0
  348. package/src/server/swagger/__tests__/ui.spec.ts +52 -0
  349. package/src/server/swagger/primitives/$swagger.spec.ts +193 -0
  350. package/src/server/swagger/providers/ServerSwaggerProvider.ts +18 -8
  351. package/src/sms/primitives/$sms.spec.ts +165 -0
  352. package/src/sms/providers/LocalSmsProvider.spec.ts +224 -0
  353. package/src/sms/providers/MemorySmsProvider.spec.ts +193 -0
  354. package/src/thread/primitives/$thread.spec.ts +186 -0
  355. package/src/topic/core/__tests__/shared.ts +144 -0
  356. package/src/topic/core/providers/MemoryTopicProvider.spec.ts +23 -0
  357. package/src/topic/redis/providers/RedisTopicProvider.spec.ts +23 -0
  358. package/src/vite/plugins/viteAlephaDev.ts +16 -4
  359. package/src/vite/tasks/runAlepha.ts +7 -1
  360. package/src/websocket/__tests__/$websocket-new.spec.ts +195 -0
  361. package/src/websocket/primitives/$channel.spec.ts +30 -0
@@ -0,0 +1,438 @@
1
+ import { t } from "alepha";
2
+ import { describe, test } from "vitest";
3
+ import { FakeProvider } from "../providers/FakeProvider.ts";
4
+
5
+ describe("FakeProvider", () => {
6
+ test("generates string values", ({ expect }) => {
7
+ const fake = new FakeProvider({ seed: 12345 });
8
+ const schema = t.string();
9
+ const result = fake.generate(schema);
10
+
11
+ expect(typeof result).toBe("string");
12
+ expect(result.length).toBeGreaterThan(0);
13
+ });
14
+
15
+ test("generates text with size constraints", ({ expect }) => {
16
+ const fake = new FakeProvider({ seed: 12345 });
17
+
18
+ const shortText = fake.generate(t.shortText());
19
+ expect(typeof shortText).toBe("string");
20
+ expect(shortText.length).toBeLessThanOrEqual(64);
21
+
22
+ const regularText = fake.generate(t.text());
23
+ expect(typeof regularText).toBe("string");
24
+ expect(regularText.length).toBeLessThanOrEqual(255);
25
+
26
+ const longText = fake.generate(t.longText());
27
+ expect(typeof longText).toBe("string");
28
+ expect(longText.length).toBeLessThanOrEqual(1024);
29
+
30
+ const richText = fake.generate(t.richText());
31
+ expect(typeof richText).toBe("string");
32
+ expect(richText.length).toBeLessThanOrEqual(65535);
33
+ });
34
+
35
+ test("generates number values", ({ expect }) => {
36
+ const fake = new FakeProvider({ seed: 12345 });
37
+ const schema = t.number();
38
+ const result = fake.generate(schema);
39
+
40
+ expect(typeof result).toBe("number");
41
+ });
42
+
43
+ test("generates number with constraints", ({ expect }) => {
44
+ const fake = new FakeProvider({ seed: 12345 });
45
+ const schema = t.number({ minimum: 10, maximum: 20 });
46
+ const result = fake.generate(schema);
47
+
48
+ expect(result).toBeGreaterThanOrEqual(10);
49
+ expect(result).toBeLessThanOrEqual(20);
50
+ });
51
+
52
+ test("generates integer values", ({ expect }) => {
53
+ const fake = new FakeProvider({ seed: 12345 });
54
+ const schema = t.integer();
55
+ const result = fake.generate(schema);
56
+
57
+ expect(typeof result).toBe("number");
58
+ expect(Number.isInteger(result)).toBe(true);
59
+ });
60
+
61
+ test("generates integer with constraints", ({ expect }) => {
62
+ const fake = new FakeProvider({ seed: 12345 });
63
+ const schema = t.integer({ minimum: 5, maximum: 15 });
64
+ const result = fake.generate(schema);
65
+
66
+ expect(Number.isInteger(result)).toBe(true);
67
+ expect(result).toBeGreaterThanOrEqual(5);
68
+ expect(result).toBeLessThanOrEqual(15);
69
+ });
70
+
71
+ test("generates boolean values", ({ expect }) => {
72
+ const fake = new FakeProvider({ seed: 12345 });
73
+ const schema = t.boolean();
74
+ const result = fake.generate(schema);
75
+
76
+ expect(typeof result).toBe("boolean");
77
+ });
78
+
79
+ test("generates UUID", ({ expect }) => {
80
+ const fake = new FakeProvider({ seed: 12345 });
81
+ const schema = t.uuid();
82
+ const result = fake.generate(schema);
83
+
84
+ expect(typeof result).toBe("string");
85
+ expect(result).toMatch(
86
+ /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
87
+ );
88
+ });
89
+
90
+ test("generates email", ({ expect }) => {
91
+ const fake = new FakeProvider({ seed: 12345 });
92
+ const schema = t.email();
93
+ const result = fake.generate(schema);
94
+
95
+ expect(typeof result).toBe("string");
96
+ expect(result).toMatch(/^[^\s@]+@[^\s@]+\.[^\s@]+$/);
97
+ });
98
+
99
+ test("generates URL", ({ expect }) => {
100
+ const fake = new FakeProvider({ seed: 12345 });
101
+ const schema = t.string({ format: "url" });
102
+ const result = fake.generate(schema);
103
+
104
+ expect(typeof result).toBe("string");
105
+ expect(result).toMatch(/^https?:\/\//);
106
+ });
107
+
108
+ test("generates bigint", ({ expect }) => {
109
+ const fake = new FakeProvider({ seed: 12345 });
110
+ const schema = t.string({ format: "bigint" });
111
+ const result = fake.generate(schema);
112
+
113
+ expect(typeof result).toBe("string");
114
+ expect(/^-?\d+$/.test(result)).toBe(true);
115
+ });
116
+
117
+ test("generates E.164 phone number", ({ expect }) => {
118
+ const fake = new FakeProvider({ seed: 12345 });
119
+ const schema = t.e164();
120
+ const result = fake.generate(schema);
121
+
122
+ expect(typeof result).toBe("string");
123
+ expect(result).toMatch(/^\+[1-9]\d{1,14}$/);
124
+ });
125
+
126
+ test("generates BCP 47 language tag", ({ expect }) => {
127
+ const fake = new FakeProvider({ seed: 12345 });
128
+ const schema = t.bcp47();
129
+ const result = fake.generate(schema);
130
+
131
+ expect(typeof result).toBe("string");
132
+ expect(result).toMatch(/^[a-z]{2,3}(?:-[A-Z]{2})?$/);
133
+ });
134
+
135
+ test("generates snake_case string", ({ expect }) => {
136
+ const fake = new FakeProvider({ seed: 12345 });
137
+ const schema = t.snakeCase();
138
+ const result = fake.generate(schema);
139
+
140
+ expect(typeof result).toBe("string");
141
+ expect(result).toMatch(/^[A-Z_-]+$/);
142
+ });
143
+
144
+ test("generates enum values", ({ expect }) => {
145
+ const fake = new FakeProvider({ seed: 12345 });
146
+ const schema = t.enum(["red", "green", "blue"]);
147
+ const result = fake.generate(schema);
148
+
149
+ expect(["red", "green", "blue"]).toContain(result);
150
+ });
151
+
152
+ test("generates array of values", ({ expect }) => {
153
+ const fake = new FakeProvider({ seed: 12345 });
154
+ const schema = t.array(t.string());
155
+ const result = fake.generate(schema);
156
+
157
+ expect(Array.isArray(result)).toBe(true);
158
+ expect(result.length).toBeGreaterThanOrEqual(0);
159
+ expect(result.length).toBeLessThanOrEqual(5);
160
+ result.forEach((item: unknown) => {
161
+ expect(typeof item).toBe("string");
162
+ });
163
+ });
164
+
165
+ test("generates array with size constraints", ({ expect }) => {
166
+ const fake = new FakeProvider({ seed: 12345 });
167
+ const schema = t.array(t.number(), { minItems: 3, maxItems: 7 });
168
+ const result = fake.generate(schema);
169
+
170
+ expect(Array.isArray(result)).toBe(true);
171
+ expect(result.length).toBeGreaterThanOrEqual(3);
172
+ expect(result.length).toBeLessThanOrEqual(7);
173
+ });
174
+
175
+ test("generates object with properties", ({ expect }) => {
176
+ const fake = new FakeProvider({ seed: 12345 });
177
+ const schema = t.object({
178
+ id: t.uuid(),
179
+ name: t.text(),
180
+ age: t.integer(),
181
+ active: t.boolean(),
182
+ });
183
+ const result = fake.generate(schema);
184
+
185
+ expect(typeof result).toBe("object");
186
+ expect(result).toHaveProperty("id");
187
+ expect(result).toHaveProperty("name");
188
+ expect(result).toHaveProperty("age");
189
+ expect(result).toHaveProperty("active");
190
+ expect(typeof result.id).toBe("string");
191
+ expect(typeof result.name).toBe("string");
192
+ expect(typeof result.age).toBe("number");
193
+ expect(typeof result.active).toBe("boolean");
194
+ });
195
+
196
+ test("generates nested objects", ({ expect }) => {
197
+ const fake = new FakeProvider({ seed: 12345 });
198
+ const schema = t.object({
199
+ user: t.object({
200
+ name: t.text(),
201
+ email: t.email(),
202
+ }),
203
+ settings: t.object({
204
+ theme: t.enum(["light", "dark"]),
205
+ notifications: t.boolean(),
206
+ }),
207
+ });
208
+ const result = fake.generate(schema);
209
+
210
+ expect(typeof result).toBe("object");
211
+ expect(typeof result.user).toBe("object");
212
+ expect(typeof result.user.name).toBe("string");
213
+ expect(typeof result.user.email).toBe("string");
214
+ expect(typeof result.settings).toBe("object");
215
+ expect(["light", "dark"]).toContain(result.settings.theme);
216
+ expect(typeof result.settings.notifications).toBe("boolean");
217
+ });
218
+
219
+ test("generates optional values", ({ expect }) => {
220
+ const fake = new FakeProvider({ seed: 12345 });
221
+ const schema = t.object({
222
+ required: t.text(),
223
+ optional: t.optional(t.text()),
224
+ });
225
+
226
+ // Generate multiple times to check both defined and undefined cases
227
+ const results = Array.from({ length: 20 }, () => fake.generate(schema));
228
+
229
+ // At least one should be undefined
230
+ const hasUndefined = results.some((r) => r.optional === undefined);
231
+ // At least one should be defined
232
+ const hasDefined = results.some((r) => r.optional !== undefined);
233
+
234
+ expect(hasUndefined || hasDefined).toBe(true);
235
+ results.forEach((result) => {
236
+ expect(typeof result.required).toBe("string");
237
+ if (result.optional !== undefined) {
238
+ expect(typeof result.optional).toBe("string");
239
+ }
240
+ });
241
+ });
242
+
243
+ test("generates nullable values", ({ expect }) => {
244
+ const fake = new FakeProvider({ seed: 12345 });
245
+ const schema = t.object({
246
+ required: t.text(),
247
+ nullable: t.nullable(t.text()),
248
+ });
249
+
250
+ // Generate multiple times to check both null and non-null cases
251
+ const results = Array.from({ length: 20 }, () => fake.generate(schema));
252
+
253
+ // At least one should be null
254
+ const hasNull = results.some((r) => r.nullable === null);
255
+ // At least one should be non-null
256
+ const hasNonNull = results.some((r) => r.nullable !== null);
257
+
258
+ expect(hasNull || hasNonNull).toBe(true);
259
+ results.forEach((result) => {
260
+ expect(typeof result.required).toBe("string");
261
+ if (result.nullable !== null) {
262
+ expect(typeof result.nullable).toBe("string");
263
+ }
264
+ });
265
+ });
266
+
267
+ test("generates union types", ({ expect }) => {
268
+ const fake = new FakeProvider({ seed: 12345 });
269
+ const schema = t.union([t.string(), t.number(), t.boolean()]);
270
+ const result = fake.generate(schema);
271
+
272
+ const validTypes = ["string", "number", "boolean"];
273
+ expect(validTypes).toContain(typeof result);
274
+ });
275
+
276
+ test("generates record types", ({ expect }) => {
277
+ const fake = new FakeProvider({ seed: 12345 });
278
+ const schema = t.record(t.string(), t.number());
279
+ const result = fake.generate(schema);
280
+
281
+ expect(typeof result).toBe("object");
282
+ const entries = Object.entries(result);
283
+ expect(entries.length).toBeGreaterThan(0);
284
+ entries.forEach(([key, value]) => {
285
+ expect(typeof key).toBe("string");
286
+ expect(typeof value).toBe("number");
287
+ });
288
+ });
289
+
290
+ test("generates tuple types", ({ expect }) => {
291
+ const fake = new FakeProvider({ seed: 12345 });
292
+ const schema = t.tuple([t.string(), t.number(), t.boolean()]);
293
+ const result = fake.generate(schema);
294
+
295
+ expect(Array.isArray(result)).toBe(true);
296
+ expect(result.length).toBe(3);
297
+ expect(typeof result[0]).toBe("string");
298
+ expect(typeof result[1]).toBe("number");
299
+ expect(typeof result[2]).toBe("boolean");
300
+ });
301
+
302
+ test("generates literal values", ({ expect }) => {
303
+ const fake = new FakeProvider({ seed: 12345 });
304
+ const schema = t.const("ACTIVE");
305
+ const result = fake.generate(schema);
306
+
307
+ expect(result).toBe("ACTIVE");
308
+ });
309
+
310
+ test("generates null", ({ expect }) => {
311
+ const fake = new FakeProvider({ seed: 12345 });
312
+ const schema = t.null();
313
+ const result = fake.generate(schema);
314
+
315
+ expect(result).toBeNull();
316
+ });
317
+
318
+ test("generates undefined", ({ expect }) => {
319
+ const fake = new FakeProvider({ seed: 12345 });
320
+ const schema = t.undefined();
321
+ const result = fake.generate(schema);
322
+
323
+ expect(result).toBeUndefined();
324
+ });
325
+
326
+ test("generates void as undefined", ({ expect }) => {
327
+ const fake = new FakeProvider({ seed: 12345 });
328
+ const schema = t.void();
329
+ const result = fake.generate(schema);
330
+
331
+ expect(result).toBeUndefined();
332
+ });
333
+
334
+ test("generates any type", ({ expect }) => {
335
+ const fake = new FakeProvider({ seed: 12345 });
336
+ const schema = t.any();
337
+ const result = fake.generate(schema);
338
+
339
+ const validTypes = ["string", "number", "boolean"];
340
+ expect(validTypes).toContain(typeof result);
341
+ });
342
+
343
+ test("generateMany produces multiple values", ({ expect }) => {
344
+ const fake = new FakeProvider({ seed: 12345 });
345
+ const schema = t.object({
346
+ id: t.uuid(),
347
+ name: t.text(),
348
+ });
349
+ const results = fake.generateMany(schema, 5);
350
+
351
+ expect(Array.isArray(results)).toBe(true);
352
+ expect(results.length).toBe(5);
353
+ results.forEach((result: { id: unknown; name: unknown }) => {
354
+ expect(typeof result.id).toBe("string");
355
+ expect(typeof result.name).toBe("string");
356
+ });
357
+ });
358
+
359
+ test("uses seed for deterministic generation", ({ expect }) => {
360
+ const schema = t.object({
361
+ id: t.uuid(),
362
+ name: t.text(),
363
+ age: t.integer(),
364
+ });
365
+
366
+ // Generate with same seed - should produce same results
367
+ const fake1 = new FakeProvider({ seed: 99999 });
368
+ const result1a = fake1.generate(schema);
369
+ const result1b = fake1.generate(schema);
370
+
371
+ // Create new instance with same seed
372
+ const fake2 = new FakeProvider({ seed: 99999 });
373
+ const result2a = fake2.generate(schema);
374
+
375
+ // First result from both instances should match
376
+ expect(result2a).toEqual(result1a);
377
+
378
+ // But sequential results from same instance should differ
379
+ expect(result1b).not.toEqual(result1a);
380
+ });
381
+
382
+ test("generates different values without seed", ({ expect }) => {
383
+ const fake = new FakeProvider();
384
+ const schema = t.uuid();
385
+
386
+ const result1 = fake.generate(schema);
387
+ const result2 = fake.generate(schema);
388
+
389
+ // They should be different (highly unlikely to be the same)
390
+ expect(result1).not.toBe(result2);
391
+ });
392
+
393
+ test("complex nested schema", ({ expect }) => {
394
+ const fake = new FakeProvider({ seed: 12345 });
395
+ const schema = t.object({
396
+ id: t.uuid(),
397
+ user: t.object({
398
+ name: t.shortText(),
399
+ email: t.email(),
400
+ age: t.integer({ minimum: 18, maximum: 99 }),
401
+ phone: t.optional(t.e164()),
402
+ }),
403
+ tags: t.array(t.enum(["urgent", "important", "review"])),
404
+ metadata: t.record(t.string(), t.any()),
405
+ status: t.enum(["active", "inactive", "pending"]),
406
+ createdAt: t.string({ format: "date-time" }),
407
+ });
408
+
409
+ const result = fake.generate(schema);
410
+
411
+ expect(typeof result).toBe("object");
412
+ expect(typeof result.id).toBe("string");
413
+ expect(typeof result.user).toBe("object");
414
+ expect(typeof result.user.name).toBe("string");
415
+ expect(typeof result.user.email).toBe("string");
416
+ expect(typeof result.user.age).toBe("number");
417
+ expect(result.user.age).toBeGreaterThanOrEqual(18);
418
+ expect(result.user.age).toBeLessThanOrEqual(99);
419
+ expect(Array.isArray(result.tags)).toBe(true);
420
+ expect(typeof result.metadata).toBe("object");
421
+ expect(["active", "inactive", "pending"]).toContain(result.status);
422
+ expect(typeof result.createdAt).toBe("string");
423
+ });
424
+
425
+ test("valueLabel pattern", ({ expect }) => {
426
+ const fake = new FakeProvider({ seed: 12345 });
427
+ const schema = t.valueLabel();
428
+ const result = fake.generate(schema);
429
+
430
+ expect(typeof result).toBe("object");
431
+ expect(typeof result.value).toBe("string");
432
+ expect(typeof result.label).toBe("string");
433
+ expect(result.value).toMatch(/^[A-Z_-]+$/);
434
+ if (result.description !== undefined) {
435
+ expect(typeof result.description).toBe("string");
436
+ }
437
+ });
438
+ });
@@ -222,6 +222,14 @@ export interface LsOptions {
222
222
  * FileSystem interface providing utilities for working with files.
223
223
  */
224
224
  export abstract class FileSystemProvider {
225
+ /**
226
+ * Joins multiple path segments into a single path.
227
+ *
228
+ * @param paths - The path segments to join
229
+ * @returns The joined path
230
+ */
231
+ abstract join(...paths: string[]): string;
232
+
225
233
  /**
226
234
  * Creates a FileLike object from various sources.
227
235
  *