alepha 0.13.6 → 0.13.8

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 (487) hide show
  1. package/README.md +5 -2
  2. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  3. package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
  4. package/assets/swagger-ui/swagger-ui.css +1 -1
  5. package/dist/api/audits/index.browser.js +116 -0
  6. package/dist/api/audits/index.browser.js.map +1 -0
  7. package/dist/api/audits/index.d.ts +1194 -0
  8. package/dist/api/audits/index.js +674 -0
  9. package/dist/api/audits/index.js.map +1 -0
  10. package/dist/{api-files → api/files}/index.browser.js +5 -5
  11. package/dist/api/files/index.browser.js.map +1 -0
  12. package/dist/{api-files → api/files}/index.d.ts +16 -9
  13. package/dist/{api-files → api/files}/index.js +10 -10
  14. package/dist/api/files/index.js.map +1 -0
  15. package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
  16. package/dist/api/jobs/index.browser.js.map +1 -0
  17. package/dist/{api-jobs → api/jobs}/index.d.ts +35 -35
  18. package/dist/{api-jobs → api/jobs}/index.js +9 -9
  19. package/dist/api/jobs/index.js.map +1 -0
  20. package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
  21. package/dist/api/notifications/index.browser.js.map +1 -0
  22. package/dist/api/notifications/index.d.ts +327 -0
  23. package/dist/{api-notifications → api/notifications}/index.js +11 -11
  24. package/dist/api/notifications/index.js.map +1 -0
  25. package/dist/api/parameters/index.browser.js +60 -0
  26. package/dist/api/parameters/index.browser.js.map +1 -0
  27. package/dist/api/parameters/index.d.ts +761 -0
  28. package/dist/api/parameters/index.js +877 -0
  29. package/dist/api/parameters/index.js.map +1 -0
  30. package/dist/{api-users → api/users}/index.browser.js +6 -6
  31. package/dist/api/users/index.browser.js.map +1 -0
  32. package/dist/{api-users → api/users}/index.d.ts +259 -247
  33. package/dist/{api-users → api/users}/index.js +125 -112
  34. package/dist/api/users/index.js.map +1 -0
  35. package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
  36. package/dist/api/verifications/index.browser.js.map +1 -0
  37. package/dist/api/verifications/index.d.ts +248 -0
  38. package/dist/{api-verifications → api/verifications}/index.js +13 -12
  39. package/dist/api/verifications/index.js.map +1 -0
  40. package/dist/bin/index.js +1 -0
  41. package/dist/bin/index.js.map +1 -1
  42. package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
  43. package/dist/cache/{index.js → core/index.js} +5 -5
  44. package/dist/cache/core/index.js.map +1 -0
  45. package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
  46. package/dist/{cache-redis → cache/redis}/index.js +2 -2
  47. package/dist/cache/redis/index.js.map +1 -0
  48. package/dist/cli/index.d.ts +71 -9
  49. package/dist/cli/index.js +280 -79
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/command/index.d.ts +63 -2
  52. package/dist/command/index.js +30 -3
  53. package/dist/command/index.js.map +1 -1
  54. package/dist/core/index.browser.js +241 -61
  55. package/dist/core/index.browser.js.map +1 -1
  56. package/dist/core/index.d.ts +170 -90
  57. package/dist/core/index.js +264 -67
  58. package/dist/core/index.js.map +1 -1
  59. package/dist/core/index.native.js +248 -65
  60. package/dist/core/index.native.js.map +1 -1
  61. package/dist/email/index.js +15 -10554
  62. package/dist/email/index.js.map +1 -1
  63. package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
  64. package/dist/lock/{index.js → core/index.js} +5 -5
  65. package/dist/lock/core/index.js.map +1 -0
  66. package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
  67. package/dist/{lock-redis → lock/redis}/index.js +2 -2
  68. package/dist/lock/redis/index.js.map +1 -0
  69. package/dist/logger/index.d.ts +4 -4
  70. package/dist/logger/index.js +77 -72
  71. package/dist/logger/index.js.map +1 -1
  72. package/dist/orm/index.d.ts +5 -1
  73. package/dist/orm/index.js +24 -7
  74. package/dist/orm/index.js.map +1 -1
  75. package/dist/queue/core/index.d.ts +548 -0
  76. package/dist/queue/core/index.js +391 -0
  77. package/dist/queue/core/index.js.map +1 -0
  78. package/dist/queue/redis/index.d.ts +28 -0
  79. package/dist/queue/redis/index.js +43 -0
  80. package/dist/queue/redis/index.js.map +1 -0
  81. package/dist/scheduler/index.d.ts +7 -7
  82. package/dist/scheduler/index.js +1 -393
  83. package/dist/scheduler/index.js.map +1 -1
  84. package/dist/security/index.d.ts +1 -1
  85. package/dist/security/index.js +2 -1413
  86. package/dist/security/index.js.map +1 -1
  87. package/dist/{server-auth → server/auth}/index.browser.js +6 -6
  88. package/dist/server/auth/index.browser.js.map +1 -0
  89. package/dist/{server-auth → server/auth}/index.d.ts +175 -164
  90. package/dist/server/auth/index.js +742 -0
  91. package/dist/server/auth/index.js.map +1 -0
  92. package/dist/{server-cache → server/cache}/index.d.ts +2 -2
  93. package/dist/{server-cache → server/cache}/index.js +2 -2
  94. package/dist/server/cache/index.js.map +1 -0
  95. package/dist/{server-compress → server/compress}/index.d.ts +2 -2
  96. package/dist/{server-compress → server/compress}/index.js +2 -2
  97. package/dist/server/compress/index.js.map +1 -0
  98. package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
  99. package/dist/server/cookies/index.browser.js.map +1 -0
  100. package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
  101. package/dist/{server-cookies → server/cookies}/index.js +9 -5
  102. package/dist/server/cookies/index.js.map +1 -0
  103. package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
  104. package/dist/server/core/index.browser.js.map +1 -0
  105. package/dist/server/{index.d.ts → core/index.d.ts} +46 -37
  106. package/dist/server/{index.js → core/index.js} +47 -33
  107. package/dist/server/core/index.js.map +1 -0
  108. package/dist/{server-cors → server/cors}/index.d.ts +3 -3
  109. package/dist/{server-cors → server/cors}/index.js +3 -3
  110. package/dist/server/cors/index.js.map +1 -0
  111. package/dist/{server-health → server/health}/index.d.ts +3 -3
  112. package/dist/{server-health → server/health}/index.js +3 -3
  113. package/dist/server/health/index.js.map +1 -0
  114. package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
  115. package/dist/{server-helmet → server/helmet}/index.js +2 -2
  116. package/dist/server/helmet/index.js.map +1 -0
  117. package/dist/{server-links → server/links}/index.browser.js +5 -5
  118. package/dist/server/links/index.browser.js.map +1 -0
  119. package/dist/{server-links → server/links}/index.d.ts +40 -40
  120. package/dist/{server-links → server/links}/index.js +7 -7
  121. package/dist/server/links/index.js.map +1 -0
  122. package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
  123. package/dist/server/metrics/index.js +74 -0
  124. package/dist/server/metrics/index.js.map +1 -0
  125. package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
  126. package/dist/{server-multipart → server/multipart}/index.js +2 -2
  127. package/dist/server/multipart/index.js.map +1 -0
  128. package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
  129. package/dist/{server-proxy → server/proxy}/index.js +3 -3
  130. package/dist/server/proxy/index.js.map +1 -0
  131. package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
  132. package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
  133. package/dist/server/rate-limit/index.js.map +1 -0
  134. package/dist/{server-security → server/security}/index.browser.js +1 -1
  135. package/dist/server/security/index.browser.js.map +1 -0
  136. package/dist/{server-security → server/security}/index.d.ts +4 -4
  137. package/dist/{server-security → server/security}/index.js +4 -4
  138. package/dist/server/security/index.js.map +1 -0
  139. package/dist/{server-static → server/static}/index.d.ts +3 -3
  140. package/dist/{server-static → server/static}/index.js +3 -3
  141. package/dist/server/static/index.js.map +1 -0
  142. package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
  143. package/dist/{server-swagger → server/swagger}/index.js +4 -4
  144. package/dist/server/swagger/index.js.map +1 -0
  145. package/dist/thread/index.js +2 -2
  146. package/dist/thread/index.js.map +1 -1
  147. package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
  148. package/dist/topic/{index.js → core/index.js} +6 -6
  149. package/dist/topic/core/index.js.map +1 -0
  150. package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
  151. package/dist/{topic-redis → topic/redis}/index.js +2 -2
  152. package/dist/topic/redis/index.js.map +1 -0
  153. package/dist/vite/index.d.ts +13 -2
  154. package/dist/vite/index.js +114 -50
  155. package/dist/vite/index.js.map +1 -1
  156. package/dist/websocket/index.browser.js +3 -3
  157. package/dist/websocket/index.browser.js.map +1 -1
  158. package/dist/websocket/index.js +4 -4
  159. package/dist/websocket/index.js.map +1 -1
  160. package/package.json +160 -156
  161. package/src/api/audits/controllers/AuditController.ts +186 -0
  162. package/src/api/audits/entities/audits.ts +132 -0
  163. package/src/api/audits/index.browser.ts +18 -0
  164. package/src/api/audits/index.ts +58 -0
  165. package/src/api/audits/primitives/$audit.ts +159 -0
  166. package/src/api/audits/schemas/auditQuerySchema.ts +23 -0
  167. package/src/api/audits/schemas/auditResourceSchema.ts +9 -0
  168. package/src/api/audits/schemas/createAuditSchema.ts +27 -0
  169. package/src/api/audits/services/AuditService.ts +412 -0
  170. package/src/{api-files → api/files}/index.ts +1 -0
  171. package/src/api/parameters/controllers/ConfigController.ts +324 -0
  172. package/src/api/parameters/entities/parameters.ts +113 -0
  173. package/src/api/parameters/index.ts +60 -0
  174. package/src/api/parameters/primitives/$config.ts +351 -0
  175. package/src/api/parameters/schedulers/ConfigActivationScheduler.ts +30 -0
  176. package/src/api/parameters/services/ConfigStore.ts +491 -0
  177. package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +19 -0
  178. package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -2
  179. package/src/{api-users → api/users}/index.ts +2 -0
  180. package/src/{api-users → api/users}/primitives/$userRealm.ts +18 -3
  181. package/src/{api-users → api/users}/providers/UserRealmProvider.ts +12 -10
  182. package/src/{api-users → api/users}/services/RegistrationService.ts +2 -1
  183. package/src/{api-users → api/users}/services/SessionService.ts +4 -0
  184. package/src/{api-users → api/users}/services/UserService.ts +3 -0
  185. package/src/{api-verifications → api/verifications}/index.ts +9 -1
  186. package/src/bin/index.ts +1 -0
  187. package/src/cli/apps/AlephaPackageBuilderCli.ts +73 -48
  188. package/src/cli/assets/appRouterTs.ts +1 -1
  189. package/src/cli/assets/biomeJson.ts +2 -2
  190. package/src/cli/assets/dummySpecTs.ts +7 -0
  191. package/src/cli/assets/editorconfig.ts +13 -0
  192. package/src/cli/assets/indexHtml.ts +1 -1
  193. package/src/cli/assets/mainBrowserTs.ts +1 -1
  194. package/src/cli/assets/mainTs.ts +14 -0
  195. package/src/cli/assets/viteConfigTs.ts +1 -1
  196. package/src/cli/commands/BiomeCommands.ts +2 -0
  197. package/src/cli/commands/CoreCommands.ts +38 -15
  198. package/src/cli/commands/VerifyCommands.ts +6 -2
  199. package/src/cli/commands/ViteCommands.ts +28 -18
  200. package/src/cli/services/AlephaCliUtils.ts +243 -37
  201. package/src/command/helpers/Asker.ts +0 -1
  202. package/src/command/primitives/$command.ts +67 -0
  203. package/src/command/providers/CliProvider.ts +39 -8
  204. package/src/core/Alepha.ts +40 -30
  205. package/src/core/helpers/jsonSchemaToTypeBox.ts +307 -0
  206. package/src/core/index.shared.ts +1 -0
  207. package/src/core/index.ts +30 -3
  208. package/src/core/providers/EventManager.ts +1 -1
  209. package/src/core/providers/SchemaValidator.ts +1 -1
  210. package/src/core/providers/StateManager.ts +23 -12
  211. package/src/core/providers/TypeProvider.ts +26 -34
  212. package/src/logger/index.ts +8 -6
  213. package/src/logger/primitives/$logger.ts +1 -1
  214. package/src/logger/providers/{SimpleFormatterProvider.ts → PrettyFormatterProvider.ts} +10 -1
  215. package/src/orm/index.ts +6 -0
  216. package/src/orm/services/PgRelationManager.ts +2 -2
  217. package/src/orm/services/PostgresModelBuilder.ts +11 -7
  218. package/src/orm/services/Repository.ts +16 -7
  219. package/src/orm/services/SqliteModelBuilder.ts +10 -0
  220. package/src/queue/{index.ts → core/index.ts} +2 -3
  221. package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
  222. package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
  223. package/src/queue/core/providers/QueueProvider.ts +23 -0
  224. package/src/queue/core/providers/WorkerProvider.ts +244 -0
  225. package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
  226. package/src/{server-auth → server/auth}/primitives/$auth.ts +7 -0
  227. package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +51 -8
  228. package/src/{server-cookies → server/cookies}/index.ts +2 -1
  229. package/src/server/{index.ts → core/index.ts} +7 -0
  230. package/src/server/{primitives → core/primitives}/$action.ts +10 -1
  231. package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +11 -5
  232. package/src/server/{providers → core/providers}/ServerRouterProvider.ts +13 -7
  233. package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
  234. package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
  235. package/src/thread/primitives/$thread.ts +2 -2
  236. package/src/vite/index.ts +0 -2
  237. package/src/vite/tasks/buildServer.ts +3 -4
  238. package/src/vite/tasks/copyAssets.ts +32 -8
  239. package/src/vite/tasks/generateCloudflare.ts +35 -19
  240. package/src/vite/tasks/generateDocker.ts +18 -4
  241. package/src/vite/tasks/generateSitemap.ts +5 -7
  242. package/src/vite/tasks/generateVercel.ts +76 -41
  243. package/src/vite/tasks/runAlepha.ts +16 -1
  244. package/src/websocket/providers/NodeWebSocketServerProvider.ts +3 -11
  245. package/src/websocket/services/WebSocketClient.ts +3 -3
  246. package/dist/api-files/index.browser.js.map +0 -1
  247. package/dist/api-files/index.js.map +0 -1
  248. package/dist/api-jobs/index.browser.js.map +0 -1
  249. package/dist/api-jobs/index.js.map +0 -1
  250. package/dist/api-notifications/index.browser.js.map +0 -1
  251. package/dist/api-notifications/index.d.ts +0 -327
  252. package/dist/api-notifications/index.js.map +0 -1
  253. package/dist/api-parameters/index.browser.js +0 -29
  254. package/dist/api-parameters/index.browser.js.map +0 -1
  255. package/dist/api-parameters/index.d.ts +0 -83
  256. package/dist/api-parameters/index.js +0 -63
  257. package/dist/api-parameters/index.js.map +0 -1
  258. package/dist/api-users/index.browser.js.map +0 -1
  259. package/dist/api-users/index.js.map +0 -1
  260. package/dist/api-verifications/index.browser.js.map +0 -1
  261. package/dist/api-verifications/index.d.ts +0 -229
  262. package/dist/api-verifications/index.js.map +0 -1
  263. package/dist/cache/index.js.map +0 -1
  264. package/dist/cache-redis/index.js.map +0 -1
  265. package/dist/cli/dist-BlfFtOk2.js +0 -2770
  266. package/dist/cli/dist-BlfFtOk2.js.map +0 -1
  267. package/dist/lock/index.js.map +0 -1
  268. package/dist/lock-redis/index.js.map +0 -1
  269. package/dist/queue/index.d.ts +0 -1265
  270. package/dist/queue/index.js +0 -1037
  271. package/dist/queue/index.js.map +0 -1
  272. package/dist/queue-redis/index.d.ts +0 -82
  273. package/dist/queue-redis/index.js +0 -872
  274. package/dist/queue-redis/index.js.map +0 -1
  275. package/dist/server/index.browser.js.map +0 -1
  276. package/dist/server/index.js.map +0 -1
  277. package/dist/server-auth/index.browser.js.map +0 -1
  278. package/dist/server-auth/index.js +0 -1943
  279. package/dist/server-auth/index.js.map +0 -1
  280. package/dist/server-cache/index.js.map +0 -1
  281. package/dist/server-compress/index.js.map +0 -1
  282. package/dist/server-cookies/index.browser.js.map +0 -1
  283. package/dist/server-cookies/index.js.map +0 -1
  284. package/dist/server-cors/index.js.map +0 -1
  285. package/dist/server-health/index.js.map +0 -1
  286. package/dist/server-helmet/index.js.map +0 -1
  287. package/dist/server-links/index.browser.js.map +0 -1
  288. package/dist/server-links/index.js.map +0 -1
  289. package/dist/server-metrics/index.js +0 -4532
  290. package/dist/server-metrics/index.js.map +0 -1
  291. package/dist/server-multipart/index.js.map +0 -1
  292. package/dist/server-proxy/index.js.map +0 -1
  293. package/dist/server-rate-limit/index.js.map +0 -1
  294. package/dist/server-security/index.browser.js.map +0 -1
  295. package/dist/server-security/index.js.map +0 -1
  296. package/dist/server-static/index.js.map +0 -1
  297. package/dist/server-swagger/index.js.map +0 -1
  298. package/dist/topic/index.js.map +0 -1
  299. package/dist/topic-redis/index.js.map +0 -1
  300. package/src/api-parameters/controllers/ParameterController.ts +0 -45
  301. package/src/api-parameters/entities/parameters.ts +0 -30
  302. package/src/api-parameters/index.ts +0 -21
  303. package/src/api-parameters/primitives/$config.ts +0 -79
  304. package/src/api-parameters/services/ParameterStore.ts +0 -23
  305. package/src/queue/interfaces/QueueJob.ts +0 -459
  306. package/src/queue/providers/MemoryQueueProvider.ts +0 -850
  307. package/src/queue/providers/QueueProvider.ts +0 -319
  308. package/src/queue/providers/WorkerProvider.ts +0 -344
  309. package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
  310. /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
  311. /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
  312. /package/src/{api-files → api/files}/entities/files.ts +0 -0
  313. /package/src/{api-files → api/files}/index.browser.ts +0 -0
  314. /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
  315. /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
  316. /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
  317. /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
  318. /package/src/{api-files → api/files}/services/FileService.ts +0 -0
  319. /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
  320. /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
  321. /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
  322. /package/src/{api-jobs → api/jobs}/index.ts +0 -0
  323. /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
  324. /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
  325. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
  326. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
  327. /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
  328. /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
  329. /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
  330. /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
  331. /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
  332. /package/src/{api-notifications → api/notifications}/index.ts +0 -0
  333. /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
  334. /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
  335. /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
  336. /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
  337. /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
  338. /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
  339. /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
  340. /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
  341. /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
  342. /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
  343. /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
  344. /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
  345. /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
  346. /package/src/{api-users → api/users}/entities/identities.ts +0 -0
  347. /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
  348. /package/src/{api-users → api/users}/entities/users.ts +0 -0
  349. /package/src/{api-users → api/users}/index.browser.ts +0 -0
  350. /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
  351. /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
  352. /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
  353. /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
  354. /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
  355. /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
  356. /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
  357. /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
  358. /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
  359. /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
  360. /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
  361. /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
  362. /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
  363. /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
  364. /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
  365. /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
  366. /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
  367. /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
  368. /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
  369. /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
  370. /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
  371. /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
  372. /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
  373. /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
  374. /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
  375. /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
  376. /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
  377. /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
  378. /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
  379. /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
  380. /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
  381. /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
  382. /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
  383. /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
  384. /package/src/cache/{index.ts → core/index.ts} +0 -0
  385. /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
  386. /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
  387. /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
  388. /package/src/{cache-redis → cache/redis}/index.ts +0 -0
  389. /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
  390. /package/src/lock/{index.ts → core/index.ts} +0 -0
  391. /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
  392. /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
  393. /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
  394. /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
  395. /package/src/{lock-redis → lock/redis}/index.ts +0 -0
  396. /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
  397. /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
  398. /package/src/{queue-redis → queue/redis}/index.ts +0 -0
  399. /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
  400. /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
  401. /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
  402. /package/src/{server-auth → server/auth}/index.ts +0 -0
  403. /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
  404. /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
  405. /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
  406. /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
  407. /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
  408. /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
  409. /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
  410. /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
  411. /package/src/{server-cache → server/cache}/index.ts +0 -0
  412. /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
  413. /package/src/{server-compress → server/compress}/index.ts +0 -0
  414. /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
  415. /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
  416. /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
  417. /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
  418. /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
  419. /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
  420. /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
  421. /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
  422. /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
  423. /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
  424. /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
  425. /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
  426. /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
  427. /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
  428. /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
  429. /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
  430. /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
  431. /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
  432. /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
  433. /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
  434. /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
  435. /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
  436. /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
  437. /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
  438. /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
  439. /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
  440. /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
  441. /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
  442. /package/src/server/{services → core/services}/HttpClient.ts +0 -0
  443. /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
  444. /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
  445. /package/src/{server-cors → server/cors}/index.ts +0 -0
  446. /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
  447. /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
  448. /package/src/{server-health → server/health}/index.ts +0 -0
  449. /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
  450. /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
  451. /package/src/{server-helmet → server/helmet}/index.ts +0 -0
  452. /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
  453. /package/src/{server-links → server/links}/index.browser.ts +0 -0
  454. /package/src/{server-links → server/links}/index.ts +0 -0
  455. /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
  456. /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
  457. /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
  458. /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
  459. /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
  460. /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
  461. /package/src/{server-metrics → server/metrics}/index.ts +0 -0
  462. /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
  463. /package/src/{server-multipart → server/multipart}/index.ts +0 -0
  464. /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
  465. /package/src/{server-proxy → server/proxy}/index.ts +0 -0
  466. /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
  467. /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
  468. /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
  469. /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
  470. /package/src/{server-security → server/security}/index.browser.ts +0 -0
  471. /package/src/{server-security → server/security}/index.ts +0 -0
  472. /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
  473. /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
  474. /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
  475. /package/src/{server-static → server/static}/index.ts +0 -0
  476. /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
  477. /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
  478. /package/src/{server-swagger → server/swagger}/index.ts +0 -0
  479. /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
  480. /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
  481. /package/src/topic/{index.ts → core/index.ts} +0 -0
  482. /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
  483. /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
  484. /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
  485. /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
  486. /package/src/{topic-redis → topic/redis}/index.ts +0 -0
  487. /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
@@ -0,0 +1,761 @@
1
+ import * as alepha317 from "alepha";
2
+ import { KIND, Primitive, Static, TObject } from "alepha";
3
+ import * as alepha_server0 from "alepha/server";
4
+ import { DateTimeProvider } from "alepha/datetime";
5
+ import * as alepha_logger1 from "alepha/logger";
6
+ import * as alepha_orm14 from "alepha/orm";
7
+ import * as alepha_topic0 from "alepha/topic";
8
+ import * as alepha_scheduler0 from "alepha/scheduler";
9
+ import { UserAccount } from "alepha/security";
10
+
11
+ //#region ../../src/api/parameters/entities/parameters.d.ts
12
+ /**
13
+ * Parameter status values.
14
+ *
15
+ * - EXPIRED: Past version, no longer active
16
+ * - CURRENT: Currently active version
17
+ * - NEXT: Scheduled to become active (closest future date)
18
+ * - FUTURE: Scheduled for activation after NEXT
19
+ */
20
+ type ParameterStatus = "expired" | "current" | "next" | "future";
21
+ /**
22
+ * Configuration parameter entity for versioned configuration management.
23
+ *
24
+ * Stores all versions of configuration parameters with:
25
+ * - Automatic status management (expired, current, next, future)
26
+ * - Schema versioning for migrations
27
+ * - Activation scheduling
28
+ * - Audit trail (creator info)
29
+ */
30
+ declare const parameters: alepha_orm14.EntityPrimitive<alepha317.TObject<{
31
+ id: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_PRIMARY_KEY>, typeof alepha_orm14.PG_DEFAULT>;
32
+ createdAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_CREATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
33
+ updatedAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_UPDATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
34
+ /**
35
+ * Configuration name using dot notation for tree hierarchy.
36
+ * Examples: "app.features", "app.pricing.tiers", "system.limits"
37
+ */
38
+ name: alepha317.TString;
39
+ /**
40
+ * The configuration content as JSON.
41
+ */
42
+ content: alepha317.TRecord<string, alepha317.TAny>;
43
+ /**
44
+ * Schema version hash for detecting schema changes.
45
+ * Used for auto-migration when schema evolves.
46
+ */
47
+ schemaHash: alepha317.TString;
48
+ /**
49
+ * Current status of this parameter version.
50
+ */
51
+ status: alepha_orm14.PgAttr<alepha317.TUnsafe<"expired" | "current" | "next" | "future">, typeof alepha_orm14.PG_DEFAULT>;
52
+ /**
53
+ * When this version should become active.
54
+ * Default is immediate (now).
55
+ */
56
+ activationDate: alepha317.TString;
57
+ /**
58
+ * When this version was deactivated (became expired).
59
+ * Null if still active or scheduled.
60
+ */
61
+ expiredAt: alepha317.TOptional<alepha317.TString>;
62
+ /**
63
+ * Version number for this configuration.
64
+ * Auto-incremented per config name.
65
+ */
66
+ version: alepha317.TInteger;
67
+ /**
68
+ * Optional description of changes in this version.
69
+ */
70
+ changeDescription: alepha317.TOptional<alepha317.TString>;
71
+ /**
72
+ * Optional tags for filtering/categorization.
73
+ */
74
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
75
+ /**
76
+ * Creator user ID (if available).
77
+ */
78
+ creatorId: alepha317.TOptional<alepha317.TString>;
79
+ /**
80
+ * Creator display name for audit trail.
81
+ */
82
+ creatorName: alepha317.TOptional<alepha317.TString>;
83
+ /**
84
+ * Previous content before this change (for rollback reference).
85
+ */
86
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
87
+ /**
88
+ * Migration log if schema changed.
89
+ */
90
+ migrationLog: alepha317.TOptional<alepha317.TString>;
91
+ }>>;
92
+ type Parameter = Static<typeof parameters.schema>;
93
+ type ParameterInsert = Omit<Parameter, "id" | "createdAt" | "updatedAt">;
94
+ //#endregion
95
+ //#region ../../src/api/parameters/primitives/$config.d.ts
96
+ /**
97
+ * Creates a versioned configuration primitive for managing application settings.
98
+ *
99
+ * Provides type-safe, versioned configuration with:
100
+ * - Schema validation with auto-migration detection
101
+ * - Default values for initial state
102
+ * - Scheduled activation (FUTURE, NEXT, CURRENT, EXPIRED statuses)
103
+ * - PostgreSQL persistence with full version history
104
+ * - Cross-instance synchronization via topic
105
+ * - Tree view support via dot-notation naming (e.g., "app.features.flags")
106
+ *
107
+ * Integrates with Alepha's atom system for state management:
108
+ * - Uses `alepha.set(atom, value)` for mutations
109
+ * - Listens to `state:mutate` events to detect changes
110
+ * - Auto-persists changes to database
111
+ * - Syncs across instances via topic
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * class AppConfig {
116
+ * features = $config({
117
+ * name: "app.features.flags",
118
+ * schema: t.object({
119
+ * enableBeta: t.boolean(),
120
+ * maxUploadSize: t.number()
121
+ * }),
122
+ * default: { enableBeta: false, maxUploadSize: 10485760 }
123
+ * });
124
+ *
125
+ * async enableBeta() {
126
+ * // Immediate activation
127
+ * await this.features.set({ enableBeta: true, maxUploadSize: 20971520 });
128
+ * }
129
+ *
130
+ * async scheduleBetaRelease() {
131
+ * // Schedule for future activation
132
+ * await this.features.set(
133
+ * { enableBeta: true, maxUploadSize: 20971520 },
134
+ * { activationDate: new Date('2024-03-01') }
135
+ * );
136
+ * }
137
+ * }
138
+ * ```
139
+ */
140
+ interface ConfigPrimitiveOptions<T extends TObject> {
141
+ /**
142
+ * Configuration name using dot notation for tree hierarchy.
143
+ * Examples: "app.features", "app.pricing.tiers", "system.limits"
144
+ */
145
+ name?: string;
146
+ /**
147
+ * Human-readable description of the configuration.
148
+ */
149
+ description?: string;
150
+ /**
151
+ * TypeBox schema defining the configuration structure.
152
+ */
153
+ schema: T;
154
+ /**
155
+ * Default value used when no configuration exists in database.
156
+ */
157
+ default: Static<T>;
158
+ }
159
+ declare class ConfigPrimitive<T extends TObject> extends Primitive<ConfigPrimitiveOptions<T>> {
160
+ protected readonly log: alepha_logger1.Logger;
161
+ protected readonly store: ConfigStore;
162
+ /** Internal atom key for state management */
163
+ protected atomKey: string;
164
+ /** Schema hash for migration detection */
165
+ protected schemaHash: string;
166
+ /** Whether we're currently syncing (to avoid loops) */
167
+ protected syncing: boolean;
168
+ /** Whether initial load has completed */
169
+ protected loaded: boolean;
170
+ /**
171
+ * Configuration name (uses property key if not specified).
172
+ */
173
+ get name(): string;
174
+ /**
175
+ * The TypeBox schema for this configuration.
176
+ */
177
+ get schema(): T;
178
+ /**
179
+ * Get the current configuration value.
180
+ */
181
+ get current(): Static<T>;
182
+ /**
183
+ * Get a specific field from the current configuration.
184
+ */
185
+ get<Key extends keyof Static<T>>(key: Key): Static<T>[Key];
186
+ /**
187
+ * Set a new configuration value.
188
+ *
189
+ * @param value - The new configuration value
190
+ * @param options - Optional settings (activation date, creator info, etc.)
191
+ */
192
+ set(value: Static<T>, options?: SetConfigOptions): Promise<void>;
193
+ /**
194
+ * Subscribe to configuration changes.
195
+ */
196
+ sub(fn: (curr: Static<T>) => void): () => void;
197
+ /**
198
+ * Reload configuration from database.
199
+ * Called when scheduled config activates or sync message received.
200
+ */
201
+ reload(): Promise<void>;
202
+ /**
203
+ * Update from sync message (called by ConfigStore).
204
+ * Uses skipEvents to avoid infinite loops.
205
+ */
206
+ updateFromSync(content: unknown): Promise<void>;
207
+ /**
208
+ * Get version history for this configuration.
209
+ */
210
+ getHistory(): Promise<{
211
+ expiredAt?: string | undefined;
212
+ changeDescription?: string | undefined;
213
+ tags?: string[] | undefined;
214
+ creatorId?: string | undefined;
215
+ creatorName?: string | undefined;
216
+ previousContent?: Record<string, any> | undefined;
217
+ migrationLog?: string | undefined;
218
+ id: string;
219
+ createdAt: string;
220
+ updatedAt: string;
221
+ name: string;
222
+ content: Record<string, any>;
223
+ schemaHash: string;
224
+ status: "expired" | "current" | "next" | "future";
225
+ activationDate: string;
226
+ version: number;
227
+ }[]>;
228
+ /**
229
+ * Rollback to a specific version.
230
+ */
231
+ rollback(version: number, options?: SetConfigOptions): Promise<void>;
232
+ /**
233
+ * Hook to load initial value from database on start.
234
+ */
235
+ protected readonly onStart: alepha317.HookPrimitive<"start">;
236
+ /**
237
+ * Called after primitive creation to initialize.
238
+ */
239
+ protected onInit(): void;
240
+ /**
241
+ * Load initial value from database.
242
+ */
243
+ protected loadInitial(): Promise<void>;
244
+ /**
245
+ * Calculate a hash of the schema for migration detection.
246
+ */
247
+ protected calculateSchemaHash(): string;
248
+ }
249
+ declare const $config: {
250
+ <T extends TObject>(options: ConfigPrimitiveOptions<T>): ConfigPrimitive<T>;
251
+ [KIND]: typeof ConfigPrimitive;
252
+ };
253
+ interface SetConfigOptions {
254
+ /**
255
+ * User making the change (for audit trail).
256
+ */
257
+ user?: Pick<UserAccount, "id" | "email" | "name">;
258
+ /**
259
+ * When this configuration should become active.
260
+ * Default is immediate (now).
261
+ */
262
+ activationDate?: Date;
263
+ /**
264
+ * Description of the change.
265
+ */
266
+ changeDescription?: string;
267
+ /**
268
+ * Tags for filtering/categorization.
269
+ */
270
+ tags?: string[];
271
+ }
272
+ //#endregion
273
+ //#region ../../src/api/parameters/services/ConfigStore.d.ts
274
+ /**
275
+ * Payload for config sync events across instances.
276
+ */
277
+ interface ConfigSyncPayload {
278
+ name: string;
279
+ version: number;
280
+ content: unknown;
281
+ status: ParameterStatus;
282
+ instanceId: string;
283
+ }
284
+ /**
285
+ * ConfigStore manages versioned configuration persistence and synchronization.
286
+ *
287
+ * Features:
288
+ * - Stores all config versions in PostgreSQL
289
+ * - Manages status transitions (future → next → current → expired)
290
+ * - Provides cross-instance sync via topic
291
+ * - Supports schema migrations via hash comparison
292
+ * - Auto-activates scheduled configs
293
+ */
294
+ declare class ConfigStore {
295
+ protected readonly log: alepha_logger1.Logger;
296
+ protected readonly dateTimeProvider: DateTimeProvider;
297
+ protected readonly repo: alepha_orm14.Repository<TObject<{
298
+ id: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_PRIMARY_KEY>, typeof alepha_orm14.PG_DEFAULT>;
299
+ createdAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_CREATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
300
+ updatedAt: alepha_orm14.PgAttr<alepha_orm14.PgAttr<alepha317.TString, typeof alepha_orm14.PG_UPDATED_AT>, typeof alepha_orm14.PG_DEFAULT>;
301
+ name: alepha317.TString;
302
+ content: alepha317.TRecord<string, alepha317.TAny>;
303
+ schemaHash: alepha317.TString;
304
+ status: alepha_orm14.PgAttr<alepha317.TUnsafe<"expired" | "current" | "next" | "future">, typeof alepha_orm14.PG_DEFAULT>;
305
+ activationDate: alepha317.TString;
306
+ expiredAt: alepha317.TOptional<alepha317.TString>;
307
+ version: alepha317.TInteger;
308
+ changeDescription: alepha317.TOptional<alepha317.TString>;
309
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
310
+ creatorId: alepha317.TOptional<alepha317.TString>;
311
+ creatorName: alepha317.TOptional<alepha317.TString>;
312
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
313
+ migrationLog: alepha317.TOptional<alepha317.TString>;
314
+ }>>;
315
+ /** Unique identifier for this instance (to avoid self-updates) */
316
+ protected readonly instanceId: `${string}-${string}-${string}-${string}-${string}`;
317
+ /** In-memory cache of registered configs */
318
+ protected readonly configs: Map<string, ConfigPrimitive<any>>;
319
+ /** Topic for cross-instance synchronization */
320
+ readonly syncTopic: alepha_topic0.TopicPrimitive<{
321
+ payload: TObject<{
322
+ name: alepha317.TString;
323
+ version: alepha317.TInteger;
324
+ content: alepha317.TRecord<string, alepha317.TAny>;
325
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
326
+ instanceId: alepha317.TString;
327
+ }>;
328
+ }>;
329
+ /**
330
+ * Register a config primitive with the store.
331
+ */
332
+ register(config: ConfigPrimitive<any>): void;
333
+ /**
334
+ * Load the current config value from database.
335
+ * Returns the current or next version if no current exists.
336
+ */
337
+ load<T extends TObject>(name: string): Promise<Static<T> | null>;
338
+ /**
339
+ * Save a new config version.
340
+ *
341
+ * @param name - Config name (e.g., "app.features.flags")
342
+ * @param content - New config content
343
+ * @param schemaHash - Hash of the schema for migration detection
344
+ * @param options - Additional options (activation date, creator info, etc.)
345
+ */
346
+ save<T extends TObject>(name: string, content: Static<T>, schemaHash: string, options?: SaveConfigOptions): Promise<Parameter>;
347
+ /**
348
+ * Get all versions of a config.
349
+ */
350
+ getHistory(name: string): Promise<Parameter[]>;
351
+ /**
352
+ * Get a specific version of a config.
353
+ */
354
+ getVersion(name: string, version: number): Promise<Parameter | null>;
355
+ /**
356
+ * Rollback to a previous version by creating a new version with old content.
357
+ */
358
+ rollback(name: string, targetVersion: number, options?: SaveConfigOptions): Promise<Parameter>;
359
+ /**
360
+ * Get all configs by status.
361
+ */
362
+ getByStatus(status: ParameterStatus): Promise<Parameter[]>;
363
+ /**
364
+ * Get current config value with fallback to default from registered primitive.
365
+ * Returns the in-memory current value which may be the default if never saved.
366
+ */
367
+ getCurrentValue(name: string): {
368
+ content: unknown;
369
+ isDefault: boolean;
370
+ } | null;
371
+ /**
372
+ * Get config info including current value with default fallback.
373
+ */
374
+ getCurrentWithDefault(name: string): Promise<{
375
+ current: Parameter | null;
376
+ next: Parameter | null;
377
+ defaultValue: unknown | null;
378
+ currentValue: unknown | null;
379
+ schema: TObject | null;
380
+ }>;
381
+ /**
382
+ * Get all unique config names (for tree view).
383
+ */
384
+ getConfigNames(): Promise<string[]>;
385
+ /**
386
+ * Build a tree structure from config names for UI.
387
+ * Includes both database configs and registered (but not yet saved) configs.
388
+ */
389
+ getConfigTree(): Promise<ConfigTreeNode[]>;
390
+ /**
391
+ * Check and activate scheduled configs that are due.
392
+ * Should be called periodically (e.g., via scheduler).
393
+ */
394
+ activateScheduledConfigs(): Promise<void>;
395
+ /**
396
+ * Transition config statuses when a new current is activated.
397
+ */
398
+ protected transitionStatuses(name: string, now: Date): Promise<void>;
399
+ /**
400
+ * Recalculate statuses based on activation dates.
401
+ */
402
+ protected recalculateStatuses(name: string): Promise<void>;
403
+ /**
404
+ * Publish sync event to other instances.
405
+ */
406
+ protected publishSync(name: string, version: number, content: unknown, status: ParameterStatus): Promise<void>;
407
+ /**
408
+ * Handle incoming sync message from other instances.
409
+ */
410
+ protected handleSyncMessage(payload: ConfigSyncPayload): Promise<void>;
411
+ /**
412
+ * Build tree structure from dot-notation names.
413
+ */
414
+ protected buildTree(names: string[]): ConfigTreeNode[];
415
+ }
416
+ interface SaveConfigOptions {
417
+ activationDate?: Date;
418
+ changeDescription?: string;
419
+ tags?: string[];
420
+ creatorId?: string;
421
+ creatorName?: string;
422
+ }
423
+ interface ConfigTreeNode {
424
+ name: string;
425
+ path: string;
426
+ isLeaf: boolean;
427
+ children: ConfigTreeNode[];
428
+ }
429
+ //#endregion
430
+ //#region ../../src/api/parameters/controllers/ConfigController.d.ts
431
+ /**
432
+ * REST API controller for versioned configuration management.
433
+ *
434
+ * Provides endpoints for:
435
+ * - Listing all configurations (tree view support)
436
+ * - Getting configuration history (all versions)
437
+ * - Getting current/next configuration values
438
+ * - Creating new configuration versions (immediate or scheduled)
439
+ * - Rolling back to previous versions
440
+ * - Activating scheduled versions immediately
441
+ */
442
+ declare class ConfigController {
443
+ protected readonly store: ConfigStore;
444
+ /**
445
+ * Get tree structure of all configuration names.
446
+ * Useful for admin UI navigation.
447
+ */
448
+ getConfigTree: alepha_server0.ActionPrimitiveFn<{
449
+ response: alepha317.TArray<any>;
450
+ }>;
451
+ /**
452
+ * List all unique configuration names.
453
+ */
454
+ listConfigNames: alepha_server0.ActionPrimitiveFn<{
455
+ response: alepha317.TObject<{
456
+ names: alepha317.TArray<alepha317.TString>;
457
+ }>;
458
+ }>;
459
+ /**
460
+ * Get configurations by status.
461
+ */
462
+ getByStatus: alepha_server0.ActionPrimitiveFn<{
463
+ params: alepha317.TObject<{
464
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
465
+ }>;
466
+ response: alepha317.TObject<{
467
+ configs: alepha317.TArray<alepha317.TObject<{
468
+ id: alepha317.TString;
469
+ createdAt: alepha317.TString;
470
+ updatedAt: alepha317.TString;
471
+ name: alepha317.TString;
472
+ content: alepha317.TRecord<string, alepha317.TAny>;
473
+ schemaHash: alepha317.TString;
474
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
475
+ activationDate: alepha317.TString;
476
+ expiredAt: alepha317.TOptional<alepha317.TString>;
477
+ version: alepha317.TInteger;
478
+ changeDescription: alepha317.TOptional<alepha317.TString>;
479
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
480
+ creatorId: alepha317.TOptional<alepha317.TString>;
481
+ creatorName: alepha317.TOptional<alepha317.TString>;
482
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
483
+ migrationLog: alepha317.TOptional<alepha317.TString>;
484
+ }>>;
485
+ }>;
486
+ }>;
487
+ /**
488
+ * Get version history for a specific configuration.
489
+ */
490
+ getHistory: alepha_server0.ActionPrimitiveFn<{
491
+ params: alepha317.TObject<{
492
+ name: alepha317.TString;
493
+ }>;
494
+ response: alepha317.TObject<{
495
+ versions: alepha317.TArray<alepha317.TObject<{
496
+ id: alepha317.TString;
497
+ createdAt: alepha317.TString;
498
+ updatedAt: alepha317.TString;
499
+ name: alepha317.TString;
500
+ content: alepha317.TRecord<string, alepha317.TAny>;
501
+ schemaHash: alepha317.TString;
502
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
503
+ activationDate: alepha317.TString;
504
+ expiredAt: alepha317.TOptional<alepha317.TString>;
505
+ version: alepha317.TInteger;
506
+ changeDescription: alepha317.TOptional<alepha317.TString>;
507
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
508
+ creatorId: alepha317.TOptional<alepha317.TString>;
509
+ creatorName: alepha317.TOptional<alepha317.TString>;
510
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
511
+ migrationLog: alepha317.TOptional<alepha317.TString>;
512
+ }>>;
513
+ }>;
514
+ }>;
515
+ /**
516
+ * Get current and next values for a configuration.
517
+ * Includes defaultValue and currentValue from the registered primitive
518
+ * even if no versions exist in the database yet.
519
+ */
520
+ getCurrent: alepha_server0.ActionPrimitiveFn<{
521
+ params: alepha317.TObject<{
522
+ name: alepha317.TString;
523
+ }>;
524
+ response: alepha317.TObject<{
525
+ current: alepha317.TOptional<alepha317.TObject<{
526
+ id: alepha317.TString;
527
+ createdAt: alepha317.TString;
528
+ updatedAt: alepha317.TString;
529
+ name: alepha317.TString;
530
+ content: alepha317.TRecord<string, alepha317.TAny>;
531
+ schemaHash: alepha317.TString;
532
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
533
+ activationDate: alepha317.TString;
534
+ expiredAt: alepha317.TOptional<alepha317.TString>;
535
+ version: alepha317.TInteger;
536
+ changeDescription: alepha317.TOptional<alepha317.TString>;
537
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
538
+ creatorId: alepha317.TOptional<alepha317.TString>;
539
+ creatorName: alepha317.TOptional<alepha317.TString>;
540
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
541
+ migrationLog: alepha317.TOptional<alepha317.TString>;
542
+ }>>;
543
+ next: alepha317.TOptional<alepha317.TObject<{
544
+ id: alepha317.TString;
545
+ createdAt: alepha317.TString;
546
+ updatedAt: alepha317.TString;
547
+ name: alepha317.TString;
548
+ content: alepha317.TRecord<string, alepha317.TAny>;
549
+ schemaHash: alepha317.TString;
550
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
551
+ activationDate: alepha317.TString;
552
+ expiredAt: alepha317.TOptional<alepha317.TString>;
553
+ version: alepha317.TInteger;
554
+ changeDescription: alepha317.TOptional<alepha317.TString>;
555
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
556
+ creatorId: alepha317.TOptional<alepha317.TString>;
557
+ creatorName: alepha317.TOptional<alepha317.TString>;
558
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
559
+ migrationLog: alepha317.TOptional<alepha317.TString>;
560
+ }>>;
561
+ defaultValue: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
562
+ currentValue: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
563
+ schema: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
564
+ }>;
565
+ }>;
566
+ /**
567
+ * Get a specific version of a configuration.
568
+ */
569
+ getVersion: alepha_server0.ActionPrimitiveFn<{
570
+ params: alepha317.TObject<{
571
+ name: alepha317.TString;
572
+ version: alepha317.TInteger;
573
+ }>;
574
+ response: alepha317.TObject<{
575
+ config: alepha317.TOptional<alepha317.TObject<{
576
+ id: alepha317.TString;
577
+ createdAt: alepha317.TString;
578
+ updatedAt: alepha317.TString;
579
+ name: alepha317.TString;
580
+ content: alepha317.TRecord<string, alepha317.TAny>;
581
+ schemaHash: alepha317.TString;
582
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
583
+ activationDate: alepha317.TString;
584
+ expiredAt: alepha317.TOptional<alepha317.TString>;
585
+ version: alepha317.TInteger;
586
+ changeDescription: alepha317.TOptional<alepha317.TString>;
587
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
588
+ creatorId: alepha317.TOptional<alepha317.TString>;
589
+ creatorName: alepha317.TOptional<alepha317.TString>;
590
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
591
+ migrationLog: alepha317.TOptional<alepha317.TString>;
592
+ }>>;
593
+ }>;
594
+ }>;
595
+ /**
596
+ * Create a new configuration version.
597
+ */
598
+ createVersion: alepha_server0.ActionPrimitiveFn<{
599
+ params: alepha317.TObject<{
600
+ name: alepha317.TString;
601
+ }>;
602
+ body: alepha317.TObject<{
603
+ content: alepha317.TRecord<string, alepha317.TAny>;
604
+ schemaHash: alepha317.TString;
605
+ activationDate: alepha317.TOptional<alepha317.TString>;
606
+ changeDescription: alepha317.TOptional<alepha317.TString>;
607
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
608
+ creatorId: alepha317.TOptional<alepha317.TString>;
609
+ creatorName: alepha317.TOptional<alepha317.TString>;
610
+ }>;
611
+ response: alepha317.TObject<{
612
+ id: alepha317.TString;
613
+ createdAt: alepha317.TString;
614
+ updatedAt: alepha317.TString;
615
+ name: alepha317.TString;
616
+ content: alepha317.TRecord<string, alepha317.TAny>;
617
+ schemaHash: alepha317.TString;
618
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
619
+ activationDate: alepha317.TString;
620
+ expiredAt: alepha317.TOptional<alepha317.TString>;
621
+ version: alepha317.TInteger;
622
+ changeDescription: alepha317.TOptional<alepha317.TString>;
623
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
624
+ creatorId: alepha317.TOptional<alepha317.TString>;
625
+ creatorName: alepha317.TOptional<alepha317.TString>;
626
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
627
+ migrationLog: alepha317.TOptional<alepha317.TString>;
628
+ }>;
629
+ }>;
630
+ /**
631
+ * Rollback to a previous version.
632
+ */
633
+ rollback: alepha_server0.ActionPrimitiveFn<{
634
+ params: alepha317.TObject<{
635
+ name: alepha317.TString;
636
+ }>;
637
+ body: alepha317.TObject<{
638
+ targetVersion: alepha317.TInteger;
639
+ changeDescription: alepha317.TOptional<alepha317.TString>;
640
+ creatorId: alepha317.TOptional<alepha317.TString>;
641
+ creatorName: alepha317.TOptional<alepha317.TString>;
642
+ }>;
643
+ response: alepha317.TObject<{
644
+ id: alepha317.TString;
645
+ createdAt: alepha317.TString;
646
+ updatedAt: alepha317.TString;
647
+ name: alepha317.TString;
648
+ content: alepha317.TRecord<string, alepha317.TAny>;
649
+ schemaHash: alepha317.TString;
650
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
651
+ activationDate: alepha317.TString;
652
+ expiredAt: alepha317.TOptional<alepha317.TString>;
653
+ version: alepha317.TInteger;
654
+ changeDescription: alepha317.TOptional<alepha317.TString>;
655
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
656
+ creatorId: alepha317.TOptional<alepha317.TString>;
657
+ creatorName: alepha317.TOptional<alepha317.TString>;
658
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
659
+ migrationLog: alepha317.TOptional<alepha317.TString>;
660
+ }>;
661
+ }>;
662
+ /**
663
+ * Activate a scheduled version immediately.
664
+ */
665
+ activateNow: alepha_server0.ActionPrimitiveFn<{
666
+ params: alepha317.TObject<{
667
+ name: alepha317.TString;
668
+ }>;
669
+ body: alepha317.TObject<{
670
+ version: alepha317.TInteger;
671
+ creatorId: alepha317.TOptional<alepha317.TString>;
672
+ creatorName: alepha317.TOptional<alepha317.TString>;
673
+ }>;
674
+ response: alepha317.TObject<{
675
+ id: alepha317.TString;
676
+ createdAt: alepha317.TString;
677
+ updatedAt: alepha317.TString;
678
+ name: alepha317.TString;
679
+ content: alepha317.TRecord<string, alepha317.TAny>;
680
+ schemaHash: alepha317.TString;
681
+ status: alepha317.TUnsafe<"expired" | "current" | "next" | "future">;
682
+ activationDate: alepha317.TString;
683
+ expiredAt: alepha317.TOptional<alepha317.TString>;
684
+ version: alepha317.TInteger;
685
+ changeDescription: alepha317.TOptional<alepha317.TString>;
686
+ tags: alepha317.TOptional<alepha317.TArray<alepha317.TString>>;
687
+ creatorId: alepha317.TOptional<alepha317.TString>;
688
+ creatorName: alepha317.TOptional<alepha317.TString>;
689
+ previousContent: alepha317.TOptional<alepha317.TRecord<string, alepha317.TAny>>;
690
+ migrationLog: alepha317.TOptional<alepha317.TString>;
691
+ }>;
692
+ }>;
693
+ /**
694
+ * Trigger activation check for all scheduled configs.
695
+ * Normally called by a scheduler, but exposed for manual triggering.
696
+ */
697
+ checkScheduled: alepha_server0.ActionPrimitiveFn<{
698
+ response: alepha317.TObject<{
699
+ message: alepha317.TString;
700
+ }>;
701
+ }>;
702
+ }
703
+ //#endregion
704
+ //#region ../../src/api/parameters/schedulers/ConfigActivationScheduler.d.ts
705
+ /**
706
+ * Scheduler that periodically checks for scheduled configurations
707
+ * that should be activated.
708
+ *
709
+ * Runs every minute to check if any NEXT configurations have reached
710
+ * their activation date and need to be promoted to CURRENT.
711
+ */
712
+ declare class ConfigActivationScheduler {
713
+ protected readonly log: alepha_logger1.Logger;
714
+ protected readonly store: ConfigStore;
715
+ /**
716
+ * Check for scheduled configurations every minute.
717
+ */
718
+ checkActivations: alepha_scheduler0.SchedulerPrimitive;
719
+ }
720
+ //#endregion
721
+ //#region ../../src/api/parameters/index.d.ts
722
+ /**
723
+ * Provides versioned configuration management for Alepha applications.
724
+ *
725
+ * Features:
726
+ * - Type-safe, versioned configuration with `$config` primitive
727
+ * - Schema validation with auto-migration detection
728
+ * - Scheduled activation (FUTURE, NEXT, CURRENT, EXPIRED statuses)
729
+ * - PostgreSQL persistence with full version history
730
+ * - Cross-instance synchronization via topic
731
+ * - Tree view support via dot-notation naming
732
+ * - REST API for configuration management
733
+ * - Automatic activation scheduler
734
+ *
735
+ * @example
736
+ * ```ts
737
+ * import { Alepha } from "alepha";
738
+ * import { AlephaApiParameters } from "alepha/api/parameters";
739
+ *
740
+ * const alepha = Alepha.create();
741
+ * alepha.with(AlephaApiParameters);
742
+ *
743
+ * // Then use $config in your services:
744
+ * class AppConfig {
745
+ * features = $config({
746
+ * name: "app.features.flags",
747
+ * schema: t.object({
748
+ * enableBeta: t.boolean(),
749
+ * maxUploadSize: t.number()
750
+ * }),
751
+ * default: { enableBeta: false, maxUploadSize: 10485760 }
752
+ * });
753
+ * }
754
+ * ```
755
+ *
756
+ * @module alepha.api.parameters
757
+ */
758
+ declare const AlephaApiParameters: alepha317.Service<alepha317.Module>;
759
+ //#endregion
760
+ export { $config, AlephaApiParameters, ConfigActivationScheduler, ConfigController, ConfigPrimitive, ConfigPrimitiveOptions, ConfigStore, ConfigSyncPayload, ConfigTreeNode, Parameter, ParameterInsert, ParameterStatus, SaveConfigOptions, SetConfigOptions, parameters };
761
+ //# sourceMappingURL=index.d.ts.map