alepha 0.19.0 → 0.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (638) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -9
  3. package/dist/api/audits/index.d.ts +378 -346
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/files/index.d.ts +216 -184
  6. package/dist/api/files/index.d.ts.map +1 -1
  7. package/dist/api/files/index.js +5 -1
  8. package/dist/api/files/index.js.map +1 -1
  9. package/dist/api/jobs/index.d.ts +528 -496
  10. package/dist/api/jobs/index.d.ts.map +1 -1
  11. package/dist/api/jobs/index.js +3 -3
  12. package/dist/api/jobs/index.js.map +1 -1
  13. package/dist/api/keys/index.d.ts +202 -202
  14. package/dist/api/keys/index.d.ts.map +1 -1
  15. package/dist/api/notifications/index.d.ts +152 -152
  16. package/dist/api/notifications/index.d.ts.map +1 -1
  17. package/dist/api/organizations/index.browser.js +48 -0
  18. package/dist/api/organizations/index.browser.js.map +1 -0
  19. package/dist/api/organizations/index.d.ts +516 -0
  20. package/dist/api/organizations/index.d.ts.map +1 -0
  21. package/dist/api/organizations/index.js +202 -0
  22. package/dist/api/organizations/index.js.map +1 -0
  23. package/dist/api/parameters/index.d.ts +391 -358
  24. package/dist/api/parameters/index.d.ts.map +1 -1
  25. package/dist/api/parameters/index.js +5 -1
  26. package/dist/api/parameters/index.js.map +1 -1
  27. package/dist/api/users/index.browser.js +7 -5
  28. package/dist/api/users/index.browser.js.map +1 -1
  29. package/dist/api/users/index.d.ts +989 -931
  30. package/dist/api/users/index.d.ts.map +1 -1
  31. package/dist/api/users/index.js +292 -146
  32. package/dist/api/users/index.js.map +1 -1
  33. package/dist/api/verifications/index.d.ts +132 -132
  34. package/dist/api/verifications/index.d.ts.map +1 -1
  35. package/dist/api/verifications/index.js +2 -2
  36. package/dist/api/verifications/index.js.map +1 -1
  37. package/dist/batch/index.d.ts +6 -6
  38. package/dist/batch/index.d.ts.map +1 -1
  39. package/dist/billing/index.d.ts +1048 -0
  40. package/dist/billing/index.d.ts.map +1 -0
  41. package/dist/billing/index.js +713 -0
  42. package/dist/billing/index.js.map +1 -0
  43. package/dist/bin/index.js +0 -2
  44. package/dist/bin/index.js.map +1 -1
  45. package/dist/bucket/index.d.ts +10 -10
  46. package/dist/bucket/index.d.ts.map +1 -1
  47. package/dist/bucket/index.js +2 -2
  48. package/dist/bucket/index.js.map +1 -1
  49. package/dist/cache/core/index.d.ts +9 -9
  50. package/dist/cache/core/index.d.ts.map +1 -1
  51. package/dist/cache/core/index.js +2 -2
  52. package/dist/cache/core/index.js.map +1 -1
  53. package/dist/cache/core/index.workerd.js +2 -2
  54. package/dist/cache/core/index.workerd.js.map +1 -1
  55. package/dist/cache/redis/index.d.ts +6 -6
  56. package/dist/cache/redis/index.d.ts.map +1 -1
  57. package/dist/cache/redis/index.js +2 -2
  58. package/dist/cache/redis/index.js.map +1 -1
  59. package/dist/cli/config/index.d.ts +12 -2
  60. package/dist/cli/config/index.d.ts.map +1 -1
  61. package/dist/cli/config/index.js +4 -0
  62. package/dist/cli/config/index.js.map +1 -1
  63. package/dist/cli/core/index.d.ts +183 -139
  64. package/dist/cli/core/index.d.ts.map +1 -1
  65. package/dist/cli/core/index.js +283 -86
  66. package/dist/cli/core/index.js.map +1 -1
  67. package/dist/cli/devtools/index.d.ts +45 -0
  68. package/dist/cli/devtools/index.d.ts.map +1 -0
  69. package/dist/cli/devtools/index.js +170 -0
  70. package/dist/cli/devtools/index.js.map +1 -0
  71. package/dist/cli/platform/index.d.ts +383 -492
  72. package/dist/cli/platform/index.d.ts.map +1 -1
  73. package/dist/cli/platform/index.js +42 -511
  74. package/dist/cli/platform/index.js.map +1 -1
  75. package/dist/cli/vendor/index.d.ts +196 -0
  76. package/dist/cli/vendor/index.d.ts.map +1 -0
  77. package/dist/cli/vendor/index.js +384 -0
  78. package/dist/cli/vendor/index.js.map +1 -0
  79. package/dist/command/index.d.ts +18 -18
  80. package/dist/command/index.d.ts.map +1 -1
  81. package/dist/command/index.js +2 -2
  82. package/dist/command/index.js.map +1 -1
  83. package/dist/core/index.browser.js +4 -4
  84. package/dist/core/index.browser.js.map +1 -1
  85. package/dist/core/index.d.ts +10 -10
  86. package/dist/core/index.d.ts.map +1 -1
  87. package/dist/core/index.js +4 -4
  88. package/dist/core/index.js.map +1 -1
  89. package/dist/core/index.native.js +4 -4
  90. package/dist/core/index.native.js.map +1 -1
  91. package/dist/core/index.workerd.js +4 -4
  92. package/dist/core/index.workerd.js.map +1 -1
  93. package/dist/crypto/index.d.ts +7 -7
  94. package/dist/crypto/index.d.ts.map +1 -1
  95. package/dist/datetime/index.d.ts +4 -4
  96. package/dist/datetime/index.d.ts.map +1 -1
  97. package/dist/email/brevo/index.d.ts +4 -4
  98. package/dist/email/brevo/index.d.ts.map +1 -1
  99. package/dist/email/core/index.d.ts +15 -11
  100. package/dist/email/core/index.d.ts.map +1 -1
  101. package/dist/email/core/index.js +12 -35
  102. package/dist/email/core/index.js.map +1 -1
  103. package/dist/email/smtp/index.d.ts +12 -12
  104. package/dist/email/smtp/index.d.ts.map +1 -1
  105. package/dist/email/smtp/index.js +7 -4
  106. package/dist/email/smtp/index.js.map +1 -1
  107. package/dist/fake/index.d.ts +4 -8
  108. package/dist/fake/index.d.ts.map +1 -1
  109. package/dist/fake/index.js +55 -889
  110. package/dist/fake/index.js.map +1 -1
  111. package/dist/lock/core/index.d.ts +13 -13
  112. package/dist/lock/core/index.d.ts.map +1 -1
  113. package/dist/lock/core/index.js +2 -2
  114. package/dist/lock/core/index.js.map +1 -1
  115. package/dist/lock/redis/index.d.ts +4 -4
  116. package/dist/lock/redis/index.d.ts.map +1 -1
  117. package/dist/logger/index.d.ts +16 -15
  118. package/dist/logger/index.d.ts.map +1 -1
  119. package/dist/logger/index.js +5 -2
  120. package/dist/logger/index.js.map +1 -1
  121. package/dist/mcp/index.d.ts +11 -11
  122. package/dist/mcp/index.d.ts.map +1 -1
  123. package/dist/mcp/index.js +2 -2
  124. package/dist/mcp/index.js.map +1 -1
  125. package/dist/orm/core/index.browser.js +11 -1
  126. package/dist/orm/core/index.browser.js.map +1 -1
  127. package/dist/orm/core/index.bun.js +53 -16
  128. package/dist/orm/core/index.bun.js.map +1 -1
  129. package/dist/orm/core/index.d.ts +95 -51
  130. package/dist/orm/core/index.d.ts.map +1 -1
  131. package/dist/orm/core/index.js +55 -14
  132. package/dist/orm/core/index.js.map +1 -1
  133. package/dist/orm/postgres/index.bun.js +17 -11
  134. package/dist/orm/postgres/index.bun.js.map +1 -1
  135. package/dist/orm/postgres/index.d.ts +21 -15
  136. package/dist/orm/postgres/index.d.ts.map +1 -1
  137. package/dist/orm/postgres/index.js +19 -13
  138. package/dist/orm/postgres/index.js.map +1 -1
  139. package/dist/queue/core/index.d.ts +14 -14
  140. package/dist/queue/core/index.d.ts.map +1 -1
  141. package/dist/queue/core/index.js +2 -2
  142. package/dist/queue/core/index.js.map +1 -1
  143. package/dist/queue/core/index.workerd.js +2 -2
  144. package/dist/queue/core/index.workerd.js.map +1 -1
  145. package/dist/queue/redis/index.d.ts +4 -4
  146. package/dist/queue/redis/index.d.ts.map +1 -1
  147. package/dist/queue/redis/index.js +2 -2
  148. package/dist/queue/redis/index.js.map +1 -1
  149. package/dist/react/auth/index.d.ts +9 -9
  150. package/dist/react/auth/index.d.ts.map +1 -1
  151. package/dist/react/core/index.d.ts +6 -6
  152. package/dist/react/core/index.d.ts.map +1 -1
  153. package/dist/react/core/index.js +5 -4
  154. package/dist/react/core/index.js.map +1 -1
  155. package/dist/react/form/index.d.ts +4 -4
  156. package/dist/react/form/index.d.ts.map +1 -1
  157. package/dist/react/head/index.d.ts +4 -4
  158. package/dist/react/head/index.d.ts.map +1 -1
  159. package/dist/react/i18n/index.d.ts +9 -9
  160. package/dist/react/i18n/index.d.ts.map +1 -1
  161. package/dist/react/intro/index.d.ts +2 -2
  162. package/dist/react/intro/index.d.ts.map +1 -1
  163. package/dist/react/intro/index.js +3 -4
  164. package/dist/react/intro/index.js.map +1 -1
  165. package/dist/react/router/index.browser.js +4 -5
  166. package/dist/react/router/index.browser.js.map +1 -1
  167. package/dist/react/router/index.d.ts +215 -215
  168. package/dist/react/router/index.d.ts.map +1 -1
  169. package/dist/react/router/index.js +6 -7
  170. package/dist/react/router/index.js.map +1 -1
  171. package/dist/react/testing/index.d.ts +2 -2
  172. package/dist/react/testing/index.d.ts.map +1 -1
  173. package/dist/react/testing/index.js +2 -4
  174. package/dist/react/testing/index.js.map +1 -1
  175. package/dist/redis/index.d.ts +19 -19
  176. package/dist/redis/index.d.ts.map +1 -1
  177. package/dist/retry/index.d.ts +4 -4
  178. package/dist/retry/index.d.ts.map +1 -1
  179. package/dist/scheduler/index.d.ts +13 -13
  180. package/dist/scheduler/index.d.ts.map +1 -1
  181. package/dist/scheduler/index.js +2 -2
  182. package/dist/scheduler/index.js.map +1 -1
  183. package/dist/scheduler/index.workerd.js +2 -2
  184. package/dist/scheduler/index.workerd.js.map +1 -1
  185. package/dist/security/index.browser.js +1 -1
  186. package/dist/security/index.browser.js.map +1 -1
  187. package/dist/security/index.d.ts +47 -47
  188. package/dist/security/index.d.ts.map +1 -1
  189. package/dist/security/index.js +9 -12
  190. package/dist/security/index.js.map +1 -1
  191. package/dist/server/auth/index.d.ts +170 -169
  192. package/dist/server/auth/index.d.ts.map +1 -1
  193. package/dist/server/auth/index.js +16 -2
  194. package/dist/server/auth/index.js.map +1 -1
  195. package/dist/server/cookies/index.d.ts +7 -7
  196. package/dist/server/cookies/index.d.ts.map +1 -1
  197. package/dist/server/core/index.d.ts +76 -76
  198. package/dist/server/core/index.d.ts.map +1 -1
  199. package/dist/server/core/index.js +23 -17
  200. package/dist/server/core/index.js.map +1 -1
  201. package/dist/server/cors/index.d.ts +13 -13
  202. package/dist/server/cors/index.d.ts.map +1 -1
  203. package/dist/server/cors/index.js +2 -2
  204. package/dist/server/cors/index.js.map +1 -1
  205. package/dist/server/etag/index.d.ts +9 -9
  206. package/dist/server/etag/index.d.ts.map +1 -1
  207. package/dist/server/health/index.d.ts +20 -20
  208. package/dist/server/health/index.d.ts.map +1 -1
  209. package/dist/server/links/index.browser.js +2 -2
  210. package/dist/server/links/index.browser.js.map +1 -1
  211. package/dist/server/links/index.d.ts +66 -66
  212. package/dist/server/links/index.d.ts.map +1 -1
  213. package/dist/server/links/index.js +4 -4
  214. package/dist/server/links/index.js.map +1 -1
  215. package/dist/server/metrics/index.d.ts +7 -7
  216. package/dist/server/metrics/index.d.ts.map +1 -1
  217. package/dist/server/proxy/index.d.ts +5 -5
  218. package/dist/server/proxy/index.d.ts.map +1 -1
  219. package/dist/server/rate-limit/index.d.ts +12 -12
  220. package/dist/server/rate-limit/index.d.ts.map +1 -1
  221. package/dist/server/rate-limit/index.js +2 -2
  222. package/dist/server/rate-limit/index.js.map +1 -1
  223. package/dist/server/static/index.d.ts +5 -5
  224. package/dist/server/static/index.d.ts.map +1 -1
  225. package/dist/server/swagger/index.d.ts +7 -7
  226. package/dist/server/swagger/index.d.ts.map +1 -1
  227. package/dist/server/swagger/index.js +2 -2
  228. package/dist/server/swagger/index.js.map +1 -1
  229. package/dist/sms/index.d.ts +11 -7
  230. package/dist/sms/index.d.ts.map +1 -1
  231. package/dist/sms/index.js +9 -15
  232. package/dist/sms/index.js.map +1 -1
  233. package/dist/system/index.d.ts +4 -4
  234. package/dist/system/index.d.ts.map +1 -1
  235. package/dist/topic/core/index.d.ts +6 -6
  236. package/dist/topic/core/index.d.ts.map +1 -1
  237. package/dist/topic/redis/index.d.ts +7 -7
  238. package/dist/topic/redis/index.d.ts.map +1 -1
  239. package/dist/topic/redis/index.js +2 -2
  240. package/dist/topic/redis/index.js.map +1 -1
  241. package/dist/websocket/index.d.ts +36 -36
  242. package/dist/websocket/index.d.ts.map +1 -1
  243. package/dist/websocket/index.js +2 -2
  244. package/dist/websocket/index.js.map +1 -1
  245. package/package.json +37 -32
  246. package/src/api/files/{controllers → __tests__}/FileController.spec.ts +189 -143
  247. package/src/api/files/{services → __tests__}/FileService.spec.ts +50 -30
  248. package/src/api/files/controllers/FileController.ts +6 -0
  249. package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
  250. package/src/api/jobs/providers/JobProvider.ts +3 -3
  251. package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
  252. package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
  253. package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
  254. package/src/api/organizations/entities/organizations.ts +20 -0
  255. package/src/api/organizations/index.browser.ts +10 -0
  256. package/src/api/organizations/index.ts +31 -0
  257. package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
  258. package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
  259. package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
  260. package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
  261. package/src/api/organizations/services/OrganizationService.ts +75 -0
  262. package/src/api/parameters/services/ParameterProvider.ts +6 -1
  263. package/src/api/users/__tests__/$realm.spec.ts +191 -0
  264. package/src/api/users/__tests__/RealmProvider.spec.ts +53 -0
  265. package/src/api/users/__tests__/SessionService.spec.ts +778 -0
  266. package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
  267. package/src/api/users/atoms/realmAuthSettingsAtom.ts +24 -0
  268. package/src/api/users/controllers/RealmController.ts +5 -11
  269. package/src/api/users/entities/users.ts +9 -3
  270. package/src/api/users/index.ts +23 -3
  271. package/src/api/users/primitives/$realm.ts +23 -11
  272. package/src/api/users/providers/RealmProvider.ts +23 -3
  273. package/src/api/users/services/RegistrationService.ts +3 -2
  274. package/src/api/users/services/SessionService.ts +249 -8
  275. package/src/api/users/services/UserService.ts +1 -1
  276. package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
  277. package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
  278. package/src/billing/__tests__/BillingService.spec.ts +136 -0
  279. package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
  280. package/src/billing/controllers/AdminBillingController.ts +149 -0
  281. package/src/billing/controllers/BillingController.ts +108 -0
  282. package/src/billing/entities/paymentIntents.ts +34 -0
  283. package/src/billing/entities/paymentMethods.ts +24 -0
  284. package/src/billing/entities/refunds.ts +22 -0
  285. package/src/billing/errors/BillingError.ts +5 -0
  286. package/src/billing/index.ts +76 -0
  287. package/src/billing/providers/BillingProvider.ts +79 -0
  288. package/src/billing/providers/MemoryBillingProvider.ts +139 -0
  289. package/src/billing/schemas/intentSchemas.ts +60 -0
  290. package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
  291. package/src/billing/schemas/refundSchemas.ts +6 -0
  292. package/src/billing/services/BillingService.ts +325 -0
  293. package/src/billing/services/PaymentMethodService.ts +82 -0
  294. package/src/bin/index.ts +0 -2
  295. package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
  296. package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
  297. package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
  298. package/src/cache/core/primitives/$cache.ts +2 -2
  299. package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
  300. package/src/cli/config/defineConfig.ts +20 -0
  301. package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
  302. package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
  303. package/src/cli/core/{commands → __tests__}/init.spec.ts +4 -12
  304. package/src/cli/core/assets.ts +0 -1
  305. package/src/cli/core/atoms/devOptions.ts +0 -5
  306. package/src/cli/core/commands/build.ts +2 -2
  307. package/src/cli/core/commands/dev.ts +165 -30
  308. package/src/cli/core/commands/gen/changelog.ts +2 -2
  309. package/src/cli/core/commands/init.ts +2 -7
  310. package/src/cli/core/commands/verify.ts +0 -1
  311. package/src/cli/core/providers/AppEntryProvider.ts +2 -2
  312. package/src/cli/core/providers/ViteDevServerProvider.ts +53 -46
  313. package/src/cli/core/services/PackageManagerUtils.ts +8 -3
  314. package/src/cli/core/services/ProjectScaffolder.ts +20 -20
  315. package/src/cli/core/tasks/BuildClientTask.ts +8 -0
  316. package/src/cli/core/tasks/BuildServerTask.ts +17 -4
  317. package/src/cli/core/templates/alephaConfigTs.ts +0 -6
  318. package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
  319. package/src/cli/core/templates/webAppRouterTs.ts +85 -2
  320. package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
  321. package/src/cli/devtools/index.ts +194 -0
  322. package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
  323. package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
  324. package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
  325. package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
  326. package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
  327. package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
  328. package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
  329. package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
  330. package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
  331. package/src/cli/platform/atoms/platformOptions.ts +2 -10
  332. package/src/cli/platform/commands/SecretsCommand.ts +2 -2
  333. package/src/cli/platform/commands/platform.ts +2 -11
  334. package/src/cli/platform/index.ts +34 -11
  335. package/src/cli/platform/services/PlatformInspector.ts +2 -2
  336. package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
  337. package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
  338. package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
  339. package/src/cli/vendor/commands/VendorCommand.ts +204 -0
  340. package/src/cli/vendor/index.ts +43 -0
  341. package/src/cli/vendor/services/VendorService.ts +338 -0
  342. package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
  343. package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
  344. package/src/command/providers/CliProvider.ts +2 -2
  345. package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
  346. package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
  347. package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
  348. package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
  349. package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
  350. package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
  351. package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
  352. package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
  353. package/src/core/index.shared.ts +1 -1
  354. package/src/core/primitives/{$use.ts → $state.ts} +4 -4
  355. package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
  356. package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
  357. package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
  358. package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
  359. package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
  360. package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
  361. package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
  362. package/src/email/core/providers/LocalEmailProvider.ts +13 -51
  363. package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
  364. package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
  365. package/src/lock/core/primitives/$lock.ts +2 -2
  366. package/src/logger/index.ts +10 -4
  367. package/src/mcp/transports/SseMcpTransport.ts +2 -2
  368. package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
  369. package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
  370. package/src/orm/__tests__/organization-tests.ts +200 -0
  371. package/src/orm/__tests__/organization.spec.ts +103 -0
  372. package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
  373. package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
  374. package/src/orm/core/index.shared.ts +1 -0
  375. package/src/orm/core/primitives/$entity.ts +31 -0
  376. package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
  377. package/src/orm/core/providers/DrizzleKitProvider.ts +1 -1
  378. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
  379. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
  380. package/src/orm/core/services/ModelBuilder.ts +11 -0
  381. package/src/orm/core/services/QueryManager.ts +16 -2
  382. package/src/orm/core/services/Repository.ts +70 -10
  383. package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
  384. package/src/orm/postgres/services/PostgresModelBuilder.ts +9 -1
  385. package/src/queue/core/providers/WorkerProvider.ts +2 -2
  386. package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
  387. package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
  388. package/src/react/core/hooks/useAction.ts +7 -6
  389. package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
  390. package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
  391. package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
  392. package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
  393. package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +3 -6
  394. package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
  395. package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
  396. package/src/react/router/providers/ReactPageProvider.ts +2 -2
  397. package/src/react/router/providers/ReactServerProvider.ts +3 -3
  398. package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
  399. package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
  400. package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
  401. package/src/scheduler/primitives/$scheduler.ts +2 -2
  402. package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
  403. package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
  404. package/src/security/primitives/$issuer.ts +1 -1
  405. package/src/security/providers/JwtProvider.ts +6 -10
  406. package/src/security/providers/SecurityProvider.ts +6 -11
  407. package/src/security/schemas/userAccountInfoSchema.ts +3 -3
  408. package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
  409. package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
  410. package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
  411. package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
  412. package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
  413. package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
  414. package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
  415. package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
  416. package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
  417. package/src/server/core/primitives/$action.ts +2 -2
  418. package/src/server/core/primitives/$sse.ts +2 -2
  419. package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
  420. package/src/server/core/providers/ServerCompressProvider.ts +2 -2
  421. package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
  422. package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
  423. package/src/server/core/providers/ServerRouterProvider.ts +1 -5
  424. package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
  425. package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
  426. package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
  427. package/src/server/links/providers/LinkProvider.ts +2 -2
  428. package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
  429. package/src/server/links/providers/ServerLinksProvider.ts +2 -2
  430. package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
  431. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
  432. package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
  433. package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
  434. package/src/sms/providers/LocalSmsProvider.ts +13 -24
  435. package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
  436. package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
  437. package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
  438. package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
  439. package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
  440. package/tsconfig.base.json +1 -0
  441. package/assets/devtools-ui/200.html +0 -10
  442. package/assets/devtools-ui/200.html.br +0 -0
  443. package/assets/devtools-ui/404.html +0 -10
  444. package/assets/devtools-ui/404.html.br +0 -0
  445. package/assets/devtools-ui/CNAME +0 -1
  446. package/assets/devtools-ui/asset.CHpVij2M.css +0 -1
  447. package/assets/devtools-ui/asset.CHpVij2M.css.br +0 -0
  448. package/assets/devtools-ui/asset.DJ-i0UDz.css +0 -1
  449. package/assets/devtools-ui/asset.DJ-i0UDz.css.br +0 -0
  450. package/assets/devtools-ui/chunk.1jwpJORo.js +0 -1
  451. package/assets/devtools-ui/chunk.1jwpJORo.js.br +0 -0
  452. package/assets/devtools-ui/chunk.B0r2wfUL.js +0 -1
  453. package/assets/devtools-ui/chunk.B0r2wfUL.js.br +0 -0
  454. package/assets/devtools-ui/chunk.BScN4dVR.js +0 -84
  455. package/assets/devtools-ui/chunk.BScN4dVR.js.br +0 -0
  456. package/assets/devtools-ui/chunk.BispuoY4.js +0 -1
  457. package/assets/devtools-ui/chunk.BispuoY4.js.br +0 -0
  458. package/assets/devtools-ui/chunk.BtrPUUd7.js +0 -2
  459. package/assets/devtools-ui/chunk.BtrPUUd7.js.br +0 -0
  460. package/assets/devtools-ui/chunk.C-KMHgqf.js +0 -1
  461. package/assets/devtools-ui/chunk.C-KMHgqf.js.br +0 -0
  462. package/assets/devtools-ui/chunk.C2zQ3CF6.js +0 -7
  463. package/assets/devtools-ui/chunk.C2zQ3CF6.js.br +0 -0
  464. package/assets/devtools-ui/chunk.C619McpO.js +0 -1
  465. package/assets/devtools-ui/chunk.C619McpO.js.br +0 -0
  466. package/assets/devtools-ui/chunk.C9OsYsVl.js +0 -1
  467. package/assets/devtools-ui/chunk.C9OsYsVl.js.br +0 -3
  468. package/assets/devtools-ui/chunk.CAC_-151.js +0 -1
  469. package/assets/devtools-ui/chunk.CAC_-151.js.br +0 -0
  470. package/assets/devtools-ui/chunk.CCmesWfx.js +0 -1
  471. package/assets/devtools-ui/chunk.CCmesWfx.js.br +0 -0
  472. package/assets/devtools-ui/chunk.CFQDmrcV.js +0 -1
  473. package/assets/devtools-ui/chunk.CFQDmrcV.js.br +0 -0
  474. package/assets/devtools-ui/chunk.CgM71Zau.js +0 -1
  475. package/assets/devtools-ui/chunk.CgM71Zau.js.br +0 -0
  476. package/assets/devtools-ui/chunk.CmHq336a.js +0 -1
  477. package/assets/devtools-ui/chunk.CmHq336a.js.br +0 -0
  478. package/assets/devtools-ui/chunk.CthNMCar.js +0 -1
  479. package/assets/devtools-ui/chunk.CthNMCar.js.br +0 -0
  480. package/assets/devtools-ui/chunk.D2brVJP1.js +0 -1
  481. package/assets/devtools-ui/chunk.D2brVJP1.js.br +0 -0
  482. package/assets/devtools-ui/chunk.DgBKGkiw.js +0 -1
  483. package/assets/devtools-ui/chunk.DgBKGkiw.js.br +0 -0
  484. package/assets/devtools-ui/chunk.NNHHCQsa.js +0 -1
  485. package/assets/devtools-ui/chunk.NNHHCQsa.js.br +0 -0
  486. package/assets/devtools-ui/chunk._CDKKWMo.js +0 -1
  487. package/assets/devtools-ui/chunk._CDKKWMo.js.br +0 -0
  488. package/assets/devtools-ui/entry.B_nOjAod.js +0 -2
  489. package/assets/devtools-ui/entry.B_nOjAod.js.br +0 -0
  490. package/assets/devtools-ui/index.html +0 -10
  491. package/assets/devtools-ui/index.html.br +0 -0
  492. package/dist/devtools/index.browser.js +0 -224
  493. package/dist/devtools/index.browser.js.map +0 -1
  494. package/dist/devtools/index.d.ts +0 -499
  495. package/dist/devtools/index.d.ts.map +0 -1
  496. package/dist/devtools/index.js +0 -782
  497. package/dist/devtools/index.js.map +0 -1
  498. package/dist/mqtt/index.d.ts +0 -164
  499. package/dist/mqtt/index.d.ts.map +0 -1
  500. package/dist/mqtt/index.js +0 -214
  501. package/dist/mqtt/index.js.map +0 -1
  502. package/dist/topic/mqtt/index.d.ts +0 -87
  503. package/dist/topic/mqtt/index.d.ts.map +0 -1
  504. package/dist/topic/mqtt/index.js +0 -88
  505. package/dist/topic/mqtt/index.js.map +0 -1
  506. package/src/api/users/parameters/UserParameters.ts +0 -23
  507. package/src/api/users/services/SessionService.spec.ts +0 -303
  508. package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
  509. package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
  510. package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
  511. package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
  512. package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
  513. package/src/cli/platform/services/DockerSshService.ts +0 -61
  514. package/src/devtools/__tests__/DevCollectorProvider.spec.ts +0 -7
  515. package/src/devtools/assets.ts +0 -6
  516. package/src/devtools/entities/logs.ts +0 -21
  517. package/src/devtools/index.browser.ts +0 -11
  518. package/src/devtools/index.shared.ts +0 -15
  519. package/src/devtools/index.ts +0 -39
  520. package/src/devtools/providers/DevToolsMetadataProvider.ts +0 -459
  521. package/src/devtools/providers/DevToolsProvider.ts +0 -280
  522. package/src/devtools/schemas/DevActionMetadata.ts +0 -30
  523. package/src/devtools/schemas/DevAtomMetadata.ts +0 -26
  524. package/src/devtools/schemas/DevBucketMetadata.ts +0 -11
  525. package/src/devtools/schemas/DevCacheMetadata.ts +0 -10
  526. package/src/devtools/schemas/DevEntityMetadata.ts +0 -60
  527. package/src/devtools/schemas/DevEnvMetadata.ts +0 -22
  528. package/src/devtools/schemas/DevMetadata.ts +0 -47
  529. package/src/devtools/schemas/DevModuleMetadata.ts +0 -8
  530. package/src/devtools/schemas/DevPageMetadata.ts +0 -24
  531. package/src/devtools/schemas/DevProviderMetadata.ts +0 -10
  532. package/src/devtools/schemas/DevQueueMetadata.ts +0 -10
  533. package/src/devtools/schemas/DevRealmMetadata.ts +0 -19
  534. package/src/devtools/schemas/DevRouteMetadata.ts +0 -8
  535. package/src/devtools/schemas/DevSchedulerMetadata.ts +0 -11
  536. package/src/devtools/schemas/DevTopicMetadata.ts +0 -11
  537. package/src/mqtt/index.ts +0 -32
  538. package/src/mqtt/providers/MqttClientProvider.ts +0 -63
  539. package/src/mqtt/providers/MqttJsClientProvider.spec.ts +0 -165
  540. package/src/mqtt/providers/MqttJsClientProvider.ts +0 -309
  541. package/src/topic/mqtt/index.ts +0 -30
  542. package/src/topic/mqtt/providers/MqttTopicProvider.spec.ts +0 -160
  543. package/src/topic/mqtt/providers/MqttTopicProvider.ts +0 -146
  544. /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
  545. /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
  546. /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
  547. /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
  548. /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
  549. /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
  550. /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
  551. /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
  552. /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
  553. /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
  554. /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
  555. /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
  556. /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
  557. /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
  558. /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
  559. /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
  560. /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
  561. /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
  562. /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
  563. /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
  564. /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
  565. /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
  566. /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
  567. /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
  568. /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
  569. /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
  570. /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
  571. /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
  572. /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
  573. /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
  574. /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
  575. /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
  576. /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
  577. /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
  578. /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
  579. /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
  580. /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
  581. /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
  582. /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
  583. /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
  584. /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
  585. /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
  586. /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
  587. /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
  588. /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
  589. /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
  590. /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
  591. /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
  592. /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
  593. /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
  594. /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
  595. /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
  596. /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
  597. /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
  598. /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
  599. /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
  600. /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
  601. /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
  602. /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
  603. /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
  604. /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
  605. /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
  606. /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
  607. /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
  608. /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
  609. /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
  610. /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
  611. /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
  612. /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
  613. /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
  614. /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
  615. /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
  616. /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
  617. /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
  618. /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
  619. /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
  620. /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
  621. /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
  622. /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
  623. /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
  624. /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
  625. /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
  626. /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
  627. /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
  628. /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
  629. /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
  630. /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
  631. /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
  632. /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
  633. /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
  634. /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
  635. /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
  636. /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
  637. /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
  638. /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["Charset","PrometheusMIME","PrometheusMetricsVersion","OpenMetricsMIME","OpenMetricsVersion","OpenMetricsContentType","PrometheusContentType","RegistryContentType","Registry","T","BoundRegistryContentType","Promise","Metric","MetricValue","MetricObjectWithValues","MetricObject","metrics","clear","resetMetrics","registerMetric","metric","getMetricsAsJSON","getMetricsAsArray","removeSingleMetric","name","getSingleMetric","setDefaultLabels","labels","getSingleMetricAsString","contentType","setContentType","merge","registers","PROMETHEUS_CONTENT_TYPE","OPENMETRICS_CONTENT_TYPE","Collector","register","prometheusContentType","openMetricsContentType","AggregatorRegistry","Array","clusterMetrics","aggregate","metricsArr","setRegistries","regs","Counter","Gauge","Summary","Histogram","Aggregator","MetricType","CollectFunction","this","help","type","aggregator","collect","values","LabelValues","value","MetricValueWithName","metricName","Record","Partial","MetricConfiguration","labelNames","enableExemplars","CounterConfiguration","IncreaseDataWithExemplar","exemplarLabels","ObserveDataWithExemplar","Internal","constructor","configuration","inc","incData","get","reset","remove","GaugeConfiguration","dec","set","setToCurrentTime","startTimer","HistogramConfiguration","buckets","observe","observeData","zero","Config","SummaryConfiguration","percentiles","maxAgeSeconds","ageBuckets","pruneAgedBuckets","compressCount","Pushgateway","Parameters","url","options","registry","pushAdd","params","resp","body","push","delete","jobName","groupings","key","linearBuckets","start","width","count","exponentialBuckets","factor","DefaultMetricsCollectorConfiguration","prefix","gcDurationBuckets","eventLoopMonitoringPrecision","collectDefaultMetrics","config","metricsList","validateMetricName"],"sources":["../../../../../node_modules/prom-client/index.d.ts","../../../src/server/metrics/providers/ServerMetricsProvider.ts","../../../src/server/metrics/index.ts"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["Charset","PrometheusMIME","PrometheusMetricsVersion","OpenMetricsMIME","OpenMetricsVersion","OpenMetricsContentType","PrometheusContentType","RegistryContentType","Registry","T","BoundRegistryContentType","Promise","Metric","MetricValue","MetricObjectWithValues","MetricObject","metrics","clear","resetMetrics","registerMetric","metric","getMetricsAsJSON","getMetricsAsArray","removeSingleMetric","name","getSingleMetric","setDefaultLabels","labels","getSingleMetricAsString","contentType","setContentType","merge","registers","PROMETHEUS_CONTENT_TYPE","OPENMETRICS_CONTENT_TYPE","Collector","register","prometheusContentType","openMetricsContentType","AggregatorRegistry","Array","clusterMetrics","aggregate","metricsArr","setRegistries","regs","Counter","Gauge","Summary","Histogram","Aggregator","MetricType","CollectFunction","this","help","type","aggregator","collect","values","LabelValues","value","MetricValueWithName","metricName","Record","Partial","MetricConfiguration","labelNames","enableExemplars","CounterConfiguration","IncreaseDataWithExemplar","exemplarLabels","ObserveDataWithExemplar","Internal","constructor","configuration","inc","incData","get","reset","remove","GaugeConfiguration","dec","set","setToCurrentTime","startTimer","HistogramConfiguration","buckets","observe","observeData","zero","Config","SummaryConfiguration","percentiles","maxAgeSeconds","ageBuckets","pruneAgedBuckets","compressCount","Pushgateway","Parameters","url","options","registry","pushAdd","params","resp","body","push","delete","jobName","groupings","key","linearBuckets","start","width","count","exponentialBuckets","factor","DefaultMetricsCollectorConfiguration","prefix","gcDurationBuckets","eventLoopMonitoringPrecision","collectDefaultMetrics","config","metricsList","validateMetricName"],"sources":["../../../../../node_modules/prom-client/index.d.ts","../../../src/server/metrics/providers/ServerMetricsProvider.ts","../../../src/server/metrics/index.ts"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Alepha, Async, KIND, Primitive } from "alepha";
3
3
  import { ServerHandler, ServerRequest, ServerRouterProvider } from "alepha/server";
4
- import * as alepha_logger0 from "alepha/logger";
4
+ import * as _$alepha_logger0 from "alepha/logger";
5
5
 
6
6
  //#region ../../src/server/proxy/primitives/$proxy.d.ts
7
7
  /**
@@ -211,10 +211,10 @@ declare class ProxyPrimitive extends Primitive<ProxyPrimitiveOptions> {}
211
211
  //#endregion
212
212
  //#region ../../src/server/proxy/providers/ServerProxyProvider.d.ts
213
213
  declare class ServerProxyProvider {
214
- protected readonly log: alepha_logger0.Logger;
214
+ protected readonly log: _$alepha_logger0.Logger;
215
215
  protected readonly routerProvider: ServerRouterProvider;
216
216
  protected readonly alepha: Alepha;
217
- protected readonly configure: alepha.HookPrimitive<"configure">;
217
+ protected readonly configure: _$alepha.HookPrimitive<"configure">;
218
218
  createProxy(options: ProxyPrimitiveOptions): void;
219
219
  createProxyHandler(target: string, options: Omit<ProxyPrimitiveOptions, "path">): ServerHandler;
220
220
  protected getRawRequestBody(req: ServerRequest): ReadableStream | undefined;
@@ -229,7 +229,7 @@ declare class ServerProxyProvider {
229
229
  *
230
230
  * @module alepha.server.proxy
231
231
  */
232
- declare const AlephaServerProxy: alepha.Service<alepha.Module>;
232
+ declare const AlephaServerProxy: _$alepha.Service<_$alepha.Module>;
233
233
  //#endregion
234
234
  export { $proxy, AlephaServerProxy, ProxyPrimitive, ProxyPrimitiveOptions, ServerProxyProvider };
235
235
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/proxy/primitives/$proxy.ts","../../../src/server/proxy/providers/ServerProxyProvider.ts","../../../src/server/proxy/index.ts"],"mappings":";;;;;;;;;;AAsFA;;;;;;;;;;;;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIA;;;;;;;;AClNA;;;;;;;;;;;;;;;;;;;;;;;cD2Ea,MAAA;EAAA,UAAmB,qBAAA,GAAwB,cAAA;EAAA;;KAI5C,qBAAA;ECpCC;;;;;;;;;;;;EDiDX,IAAA;EEnFW;;;;;;;;;;;;EFiGX,MAAA;;;;;;;;;;EAWA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,aAAA,IACE,OAAA,EAAS,aAAA,EACT,YAAA,EAAc,WAAA,KACX,KAAA;;;;;;;;;;;;;;;;;;;;;;;;EAyBL,aAAA,IACE,OAAA,EAAS,aAAA,EACT,aAAA,EAAe,QAAA,KACZ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BL,OAAA,IAAW,GAAA,EAAK,GAAA;AAAA;AAAA,cAML,cAAA,SAAuB,SAAA,CAAU,qBAAA;;;cClNjC,mBAAA;EAAA,mBACQ,GAAA,EADW,cAAA,CACR,MAAA;EAAA,mBACH,cAAA,EAAc,oBAAA;EAAA,mBACd,MAAA,EAAM,MAAA;EAAA,mBAEN,SAAA,EAFM,MAAA,CAEG,aAAA;EASrB,WAAA,CAAY,OAAA,EAAS,qBAAA;EA2BrB,kBAAA,CACL,MAAA,UACA,OAAA,EAAS,IAAA,CAAK,qBAAA,YACb,aAAA;EAAA,UAkDO,iBAAA,CAAkB,GAAA,EAAK,aAAA,GAAgB,cAAA;AAAA;;;;;;;ADnBnD;;;;cElEa,iBAAA,EAAiB,MAAA,CAAA,OAAA,CAI5B,MAAA,CAJ4B,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/proxy/primitives/$proxy.ts","../../../src/server/proxy/providers/ServerProxyProvider.ts","../../../src/server/proxy/index.ts"],"mappings":";;;;;;;;;;AAsFA;;;;;;;;;;;;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIA;;;;;;;;AClNA;;;;;;;;;;;;;;;;;;;;;;;cD2Ea,MAAA;EAAA,UAAmB,qBAAA,GAAwB,cAAA;EAAA;;KAI5C,qBAAA;ECpCC;;;;;;;;;;;;EDiDX,IAAA;EEnFW;;;;;;;;;;;;EFiGX,MAAA;;;;;;;;;;EAWA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,aAAA,IACE,OAAA,EAAS,aAAA,EACT,YAAA,EAAc,WAAA,KACX,KAAA;;;;;;;;;;;;;;;;;;;;;;;;EAyBL,aAAA,IACE,OAAA,EAAS,aAAA,EACT,aAAA,EAAe,QAAA,KACZ,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BL,OAAA,IAAW,GAAA,EAAK,GAAA;AAAA;AAAA,cAML,cAAA,SAAuB,SAAA,CAAU,qBAAA;;;cClNjC,mBAAA;EAAA,mBACQ,GAAA,EADW,gBAAA,CACR,MAAA;EAAA,mBACH,cAAA,EAAc,oBAAA;EAAA,mBACd,MAAA,EAAM,MAAA;EAAA,mBAEN,SAAA,EAFM,QAAA,CAEG,aAAA;EASrB,WAAA,CAAY,OAAA,EAAS,qBAAA;EA2BrB,kBAAA,CACL,MAAA,UACA,OAAA,EAAS,IAAA,CAAK,qBAAA,YACb,aAAA;EAAA,UAkDO,iBAAA,CAAkB,GAAA,EAAK,aAAA,GAAgB,cAAA;AAAA;;;;;;;ADnBnD;;;;cElEa,iBAAA,EAAiB,QAAA,CAAA,OAAA,CAI5B,QAAA,CAJ4B,MAAA"}
@@ -1,9 +1,9 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Middleware, Static } from "alepha";
3
3
  import { ServerRequest, ServerRouterProvider } from "alepha/server";
4
4
  import { CacheProvider } from "alepha/cache";
5
5
  import { DateTimeProvider } from "alepha/datetime";
6
- import * as alepha_logger0 from "alepha/logger";
6
+ import * as _$alepha_logger0 from "alepha/logger";
7
7
 
8
8
  //#region ../../src/server/rate-limit/primitives/$rateLimit.d.ts
9
9
  interface RateLimitMiddlewareOptions extends RateLimitOptions {
@@ -48,11 +48,11 @@ interface RateLimitResult {
48
48
  /**
49
49
  * Rate limit configuration atom (global defaults)
50
50
  */
51
- declare const rateLimitOptions: alepha.Atom<alepha.TObject<{
52
- windowMs: alepha.TNumber;
53
- max: alepha.TNumber;
54
- skipFailedRequests: alepha.TOptional<alepha.TBoolean>;
55
- skipSuccessfulRequests: alepha.TOptional<alepha.TBoolean>;
51
+ declare const rateLimitOptions: _$alepha.Atom<_$alepha.TObject<{
52
+ windowMs: _$alepha.TNumber;
53
+ max: _$alepha.TNumber;
54
+ skipFailedRequests: _$alepha.TOptional<_$alepha.TBoolean>;
55
+ skipSuccessfulRequests: _$alepha.TOptional<_$alepha.TBoolean>;
56
56
  }>, "alepha.server.rate-limit.options">;
57
57
  type RateLimitAtomOptions = Static<typeof rateLimitOptions.schema>;
58
58
  declare module "alepha" {
@@ -71,7 +71,7 @@ interface RateLimitRegistration extends RateLimitOptions {
71
71
  paths?: string[];
72
72
  }
73
73
  declare class ServerRateLimitProvider {
74
- protected readonly log: alepha_logger0.Logger;
74
+ protected readonly log: _$alepha_logger0.Logger;
75
75
  protected readonly dateTime: DateTimeProvider;
76
76
  protected readonly serverRouterProvider: ServerRouterProvider;
77
77
  protected readonly cacheProvider: CacheProvider;
@@ -90,9 +90,9 @@ declare class ServerRateLimitProvider {
90
90
  * Register a rate limit configuration (called by primitives)
91
91
  */
92
92
  registerRateLimit(config: RateLimitRegistration): void;
93
- protected readonly onStart: alepha.HookPrimitive<"start">;
94
- readonly onRequest: alepha.HookPrimitive<"server:onRequest">;
95
- readonly onActionRequest: alepha.HookPrimitive<"action:onRequest">;
93
+ protected readonly onStart: _$alepha.HookPrimitive<"start">;
94
+ readonly onRequest: _$alepha.HookPrimitive<"server:onRequest">;
95
+ readonly onActionRequest: _$alepha.HookPrimitive<"action:onRequest">;
96
96
  /**
97
97
  * Build complete rate limit options by merging with global defaults
98
98
  */
@@ -157,7 +157,7 @@ interface RateLimitOptions {
157
157
  *
158
158
  * @module alepha.server.rate-limit
159
159
  */
160
- declare const AlephaServerRateLimit: alepha.Service<alepha.Module>;
160
+ declare const AlephaServerRateLimit: _$alepha.Service<_$alepha.Module>;
161
161
  //#endregion
162
162
  export { $rateLimit, AlephaServerRateLimit, RateLimitAtomOptions, RateLimitMiddlewareOptions, RateLimitOptions, RateLimitRegistration, RateLimitResult, ServerRateLimitProvider, rateLimitOptions };
163
163
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/rate-limit/primitives/$rateLimit.ts","../../../src/server/rate-limit/providers/ServerRateLimitProvider.ts","../../../src/server/rate-limit/index.ts"],"mappings":";;;;;;;;UAKiB,0BAAA,SAAmC,gBAAA;;;;;EAKlD,GAAA,OAAU,IAAA;AAAA;;;;;;;;;AAyBZ;;;;;;;;;;;;ACtBA;;cDsBa,UAAA,GACX,OAAA,GAAU,0BAAA,KACT,UAAA;;;UCxBc,eAAA;EACf,OAAA;EACA,KAAA;EACA,SAAA;EACA,SAAA;EACA,UAAA;AAAA;;;;cAMW,gBAAA,EAAgB,MAAA,CAAA,IAAA,QAAA,OAAA;YA0B3B,MAAA,CAAA,OAAA;;;;;KAEU,oBAAA,GAAuB,MAAA,QAAc,gBAAA,CAAiB,MAAA;AAAA;EAAA,UAGtD,KAAA;IAAA,CACP,gBAAA,CAAiB,GAAA,GAAM,oBAAA;EAAA;AAAA;AAAA,UAIX,qBAAA,SAA8B,gBAAA;;AA/C/C;;EAmDE,IAAA;EAnD8B;;;EAuD9B,KAAA;AAAA;AAAA,cAGW,uBAAA;EAAA,mBACQ,GAAA,EADe,cAAA,CACZ,MAAA;EAAA,mBACH,QAAA,EAAQ,gBAAA;EAAA,mBACR,oBAAA,EAAoB,oBAAA;EAAA,mBACpB,aAAA,EAAa,aAAA;EAAA,mBACb,aAAA,EAAa,QAAA;;;;;;4BAEN,UAAA;;;;WAKV,iBAAA,EAAmB,qBAAA;EA3DR;;;EAgEpB,iBAAA,CAAkB,MAAA,EAAQ,qBAAA;EAAA,mBAId,OAAA,EAJmC,MAAA,CAI5B,aAAA;EAAA,SAuBV,SAAA,EAvBU,MAAA,CAuBD,aAAA;EAAA,SAuBT,eAAA,EAvBS,MAAA,CAuBM,aAAA;;;;YA2BrB,qBAAA,CACR,MAAA,EAAQ,qBAAA,GACP,gBAAA;;;;EAgBI,mBAAA,CACL,OAAA,EAAS,aAAA,EACT,MAAA,EAAQ,eAAA;EAiBG,UAAA,CACX,GAAA,EAAK,IAAA,CAAK,aAAA,SACV,OAAA,GAAS,gBAAA,GACR,OAAA,CAAQ,eAAA;;;;;EASE,eAAA,CACX,OAAA,UACA,OAAA,GAAS,gBAAA,GACR,OAAA,CAAQ,eAAA;EAAA,UAoCD,WAAA,CAAY,GAAA,EAAK,IAAA,CAAK,aAAA;AAAA;;;;YCjPtB,sBAAA;;;;;IAKR,SAAA,GAAY,gBAAA;EAAA;EAAA,UAGJ,WAAA;IFfwD;;;;IEoBhE,SAAA,GAAY,gBAAA;EAAA;AAAA;AAAA,UAMC,gBAAA;;;;EAIf,GAAA;EFEC;;;EEED,QAAA;;;AD1BF;EC8BE,YAAA,IAAgB,GAAA;;;;EAIhB,kBAAA;ED/BA;;;ECmCA,sBAAA;AAAA;AD3BF;;;;;;;;AAAA,cCsCa,qBAAA,EAAqB,MAAA,CAAA,OAAA,CAGhC,MAAA,CAHgC,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/rate-limit/primitives/$rateLimit.ts","../../../src/server/rate-limit/providers/ServerRateLimitProvider.ts","../../../src/server/rate-limit/index.ts"],"mappings":";;;;;;;;UAKiB,0BAAA,SAAmC,gBAAA;;;;;EAKlD,GAAA,OAAU,IAAA;AAAA;;;;;;;;;AAyBZ;;;;;;;;;;;;ACtBA;;cDsBa,UAAA,GACX,OAAA,GAAU,0BAAA,KACT,UAAA;;;UCxBc,eAAA;EACf,OAAA;EACA,KAAA;EACA,SAAA;EACA,SAAA;EACA,UAAA;AAAA;;;;cAMW,gBAAA,EAAgB,QAAA,CAAA,IAAA,UAAA,OAAA;YA0B3B,QAAA,CAAA,OAAA;;;;;KAEU,oBAAA,GAAuB,MAAA,QAAc,gBAAA,CAAiB,MAAA;AAAA;EAAA,UAGtD,KAAA;IAAA,CACP,gBAAA,CAAiB,GAAA,GAAM,oBAAA;EAAA;AAAA;AAAA,UAIX,qBAAA,SAA8B,gBAAA;;AA/C/C;;EAmDE,IAAA;EAnD8B;;;EAuD9B,KAAA;AAAA;AAAA,cAGW,uBAAA;EAAA,mBACQ,GAAA,EADe,gBAAA,CACZ,MAAA;EAAA,mBACH,QAAA,EAAQ,gBAAA;EAAA,mBACR,oBAAA,EAAoB,oBAAA;EAAA,mBACpB,aAAA,EAAa,aAAA;EAAA,mBACb,aAAA,EAAa,QAAA;;;;;;4BAEN,UAAA;;;;WAKV,iBAAA,EAAmB,qBAAA;EA3DR;;;EAgEpB,iBAAA,CAAkB,MAAA,EAAQ,qBAAA;EAAA,mBAId,OAAA,EAJmC,QAAA,CAI5B,aAAA;EAAA,SAuBV,SAAA,EAvBU,QAAA,CAuBD,aAAA;EAAA,SAuBT,eAAA,EAvBS,QAAA,CAuBM,aAAA;;;;YA2BrB,qBAAA,CACR,MAAA,EAAQ,qBAAA,GACP,gBAAA;;;;EAgBI,mBAAA,CACL,OAAA,EAAS,aAAA,EACT,MAAA,EAAQ,eAAA;EAiBG,UAAA,CACX,GAAA,EAAK,IAAA,CAAK,aAAA,SACV,OAAA,GAAS,gBAAA,GACR,OAAA,CAAQ,eAAA;;;;;EASE,eAAA,CACX,OAAA,UACA,OAAA,GAAS,gBAAA,GACR,OAAA,CAAQ,eAAA;EAAA,UAoCD,WAAA,CAAY,GAAA,EAAK,IAAA,CAAK,aAAA;AAAA;;;;YCjPtB,sBAAA;;;;;IAKR,SAAA,GAAY,gBAAA;EAAA;EAAA,UAGJ,WAAA;IFfwD;;;;IEoBhE,SAAA,GAAY,gBAAA;EAAA;AAAA;AAAA,UAMC,gBAAA;;;;EAIf,GAAA;EFEC;;;EEED,QAAA;;;AD1BF;EC8BE,YAAA,IAAgB,GAAA;;;;EAIhB,kBAAA;ED/BA;;;ECmCA,sBAAA;AAAA;AD3BF;;;;;;;;AAAA,cCsCa,qBAAA,EAAqB,QAAA,CAAA,OAAA,CAGhC,QAAA,CAHgC,MAAA"}
@@ -1,4 +1,4 @@
1
- import { $atom, $hook, $inject, $module, $use, createMiddleware, t } from "alepha";
1
+ import { $atom, $hook, $inject, $module, $state, createMiddleware, t } from "alepha";
2
2
  import { AlephaServer, HttpError, ServerRouterProvider } from "alepha/server";
3
3
  import { CacheProvider } from "alepha/cache";
4
4
  import { DateTimeProvider } from "alepha/datetime";
@@ -31,7 +31,7 @@ var ServerRateLimitProvider = class ServerRateLimitProvider {
31
31
  dateTime = $inject(DateTimeProvider);
32
32
  serverRouterProvider = $inject(ServerRouterProvider);
33
33
  cacheProvider = $inject(CacheProvider);
34
- globalOptions = $use(rateLimitOptions);
34
+ globalOptions = $state(rateLimitOptions);
35
35
  static CACHE_NAME = "rate-limit";
36
36
  /**
37
37
  * Registered rate limit configurations with their path patterns
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/server/rate-limit/providers/ServerRateLimitProvider.ts","../../../src/server/rate-limit/primitives/$rateLimit.ts","../../../src/server/rate-limit/index.ts"],"sourcesContent":["import { $atom, $hook, $inject, $use, type Static, t } from \"alepha\";\nimport { CacheProvider } from \"alepha/cache\";\nimport { DateTimeProvider } from \"alepha/datetime\";\nimport { $logger } from \"alepha/logger\";\nimport {\n HttpError,\n type ServerRequest,\n ServerRouterProvider,\n} from \"alepha/server\";\nimport type { RateLimitOptions } from \"../index.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface RateLimitResult {\n allowed: boolean;\n limit: number;\n remaining: number;\n resetTime: number;\n retryAfter?: number;\n}\n\n/**\n * Rate limit configuration atom (global defaults)\n */\nexport const rateLimitOptions = $atom({\n name: \"alepha.server.rate-limit.options\",\n schema: t.object({\n windowMs: t.number({\n default: 15 * 60 * 1000,\n description: \"Window duration in milliseconds\",\n }),\n max: t.number({\n default: 100,\n description: \"Maximum number of requests per window\",\n }),\n skipFailedRequests: t.optional(\n t.boolean({\n description: \"Skip rate limiting for failed requests\",\n }),\n ),\n skipSuccessfulRequests: t.optional(\n t.boolean({\n description: \"Skip rate limiting for successful requests\",\n }),\n ),\n }),\n default: {\n windowMs: 15 * 60 * 1000,\n max: 100,\n },\n});\n\nexport type RateLimitAtomOptions = Static<typeof rateLimitOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [rateLimitOptions.key]: RateLimitAtomOptions;\n }\n}\n\nexport interface RateLimitRegistration extends RateLimitOptions {\n /**\n * Name identifier for this rate limit.\n */\n name?: string;\n /**\n * Path patterns to match (supports wildcards like /api/*).\n */\n paths?: string[];\n}\n\nexport class ServerRateLimitProvider {\n protected readonly log = $logger();\n protected readonly dateTime = $inject(DateTimeProvider);\n protected readonly serverRouterProvider = $inject(ServerRouterProvider);\n protected readonly cacheProvider = $inject(CacheProvider);\n protected readonly globalOptions = $use(rateLimitOptions);\n\n protected static readonly CACHE_NAME = \"rate-limit\";\n\n /**\n * Registered rate limit configurations with their path patterns\n */\n public readonly registeredConfigs: RateLimitRegistration[] = [];\n\n /**\n * Register a rate limit configuration (called by primitives)\n */\n public registerRateLimit(config: RateLimitRegistration): void {\n this.registeredConfigs.push(config);\n }\n\n protected readonly onStart = $hook({\n on: \"start\",\n handler: async () => {\n // Apply path-specific rate limit configs to routes\n for (const config of this.registeredConfigs) {\n if (config.paths) {\n for (const pattern of config.paths) {\n const matchedRoutes = this.serverRouterProvider.getRoutes(pattern);\n for (const route of matchedRoutes) {\n route.rateLimit = this.buildRateLimitOptions(config);\n }\n }\n }\n }\n\n if (this.registeredConfigs.length > 0) {\n this.log.info(\n `Initialized with ${this.registeredConfigs.length} registered rate-limit configurations.`,\n );\n }\n },\n });\n\n public readonly onRequest = $hook({\n on: \"server:onRequest\",\n handler: async ({ route, request }) => {\n // Use route-specific rate limit if defined, otherwise use global options\n const rateLimitConfig = route.rateLimit ?? this.globalOptions;\n\n // Skip if no rate limiting configured\n if (!rateLimitConfig.max && !rateLimitConfig.windowMs) {\n return;\n }\n\n const result = await this.checkLimit(request, rateLimitConfig);\n this.setRateLimitHeaders(request, result);\n\n if (!result.allowed) {\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n },\n });\n\n public readonly onActionRequest = $hook({\n on: \"action:onRequest\",\n handler: async ({ action, request }) => {\n // Check if this action has rate limiting enabled\n const rateLimit = action.options?.rateLimit;\n if (!rateLimit) {\n return; // No rate limiting for this action\n }\n\n const result = await this.checkLimit(request, rateLimit);\n\n if (!result.allowed) {\n // Actions are internal - don't set HTTP headers\n // Only throw error to prevent action execution\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n\n // Action allowed - no headers to set since actions are internal\n },\n });\n\n /**\n * Build complete rate limit options by merging with global defaults\n */\n protected buildRateLimitOptions(\n config: RateLimitRegistration,\n ): RateLimitOptions {\n return {\n max: config.max ?? this.globalOptions.max,\n windowMs: config.windowMs ?? this.globalOptions.windowMs,\n keyGenerator: config.keyGenerator,\n skipFailedRequests:\n config.skipFailedRequests ?? this.globalOptions.skipFailedRequests,\n skipSuccessfulRequests:\n config.skipSuccessfulRequests ??\n this.globalOptions.skipSuccessfulRequests,\n };\n }\n\n /**\n * Set rate limit headers on the response\n */\n public setRateLimitHeaders(\n request: ServerRequest,\n result: RateLimitResult,\n ): void {\n request.reply.setHeader(\"X-RateLimit-Limit\", result.limit.toString());\n request.reply.setHeader(\n \"X-RateLimit-Remaining\",\n result.remaining.toString(),\n );\n request.reply.setHeader(\n \"X-RateLimit-Reset\",\n Math.ceil(result.resetTime / 1000).toString(),\n );\n\n if (!result.allowed && result.retryAfter) {\n request.reply.setHeader(\"Retry-After\", result.retryAfter.toString());\n }\n }\n\n public async checkLimit(\n req: Pick<ServerRequest, \"ip\">,\n options: RateLimitOptions = {},\n ): Promise<RateLimitResult> {\n const baseKey = this.generateKey(req);\n return this.checkLimitByKey(baseKey, options);\n }\n\n /**\n * Check rate limit by an explicit key string.\n * Useful when no request context is available (e.g. `$job`, `$pipeline`).\n */\n public async checkLimitByKey(\n baseKey: string,\n options: RateLimitOptions = {},\n ): Promise<RateLimitResult> {\n const windowMs = options.windowMs ?? this.globalOptions.windowMs;\n const max = options.max ?? this.globalOptions.max;\n\n const now = this.dateTime.nowMillis();\n // Fixed window: round down to nearest window boundary\n const windowStart = Math.floor(now / windowMs) * windowMs;\n const resetTime = windowStart + windowMs;\n\n // Include window timestamp in key for automatic expiration of old windows\n const key = `${baseKey}:${windowStart}`;\n\n // Atomic increment - returns the new count after incrementing\n const count = await this.cacheProvider.incr(\n ServerRateLimitProvider.CACHE_NAME,\n key,\n 1,\n );\n\n const allowed = count <= max;\n const remaining = Math.max(0, max - count);\n\n const result: RateLimitResult = {\n allowed,\n limit: max,\n remaining,\n resetTime,\n };\n\n if (!allowed) {\n result.retryAfter = Math.ceil((resetTime - now) / 1000);\n }\n\n return result;\n }\n\n protected generateKey(req: Pick<ServerRequest, \"ip\">): string {\n // Use req.ip which is resolved by ServerRequestParser with proper trust proxy handling\n return `ip:${req.ip || \"unknown\"}`;\n }\n}\n","import { createMiddleware, type Middleware } from \"alepha\";\nimport { HttpError } from \"alepha/server\";\nimport type { RateLimitOptions } from \"../index.ts\";\nimport { ServerRateLimitProvider } from \"../providers/ServerRateLimitProvider.ts\";\n\nexport interface RateLimitMiddlewareOptions extends RateLimitOptions {\n /**\n * Custom key function. Receives the handler arguments.\n * When provided, bypasses request-based key generation — works outside `$action`.\n */\n key?: (...args: any[]) => string;\n}\n\n/**\n * Middleware that enforces rate limiting.\n *\n * **Key resolution** (in order):\n * 1. Explicit `key` function — user controls the key. Works anywhere (`$action`, `$job`, `$pipeline`).\n * 2. Auto-detect `request.ip` from ALS — default for `$action` context.\n * 3. `\"global\"` fallback — when no request context and no `key`. All calls share one bucket.\n *\n * Sets `X-RateLimit-*` response headers when a request context is available.\n * Throws `HttpError(429)` when the limit is exceeded.\n *\n * ```typescript\n * // In $action: automatically rate limits by IP\n * $action({ use: [$rateLimit({ max: 100, windowMs: 60000 })] })\n *\n * // In $action: rate limit by custom key\n * $action({ use: [$rateLimit({ max: 10, windowMs: 60000, key: (req) => req.user?.id })] })\n *\n * // In $job: rate limit all executions globally\n * $job({ use: [$rateLimit({ max: 5, windowMs: 3600000 })] })\n * ```\n */\nexport const $rateLimit = (\n options?: RateLimitMiddlewareOptions,\n): Middleware => {\n return createMiddleware({\n name: \"$rateLimit\",\n options: options as unknown as Record<string, unknown>,\n handler: ({ alepha, next }) => {\n const rateLimitProvider = alepha.inject(ServerRateLimitProvider);\n\n return async (...args) => {\n const request = alepha.get(\"alepha.http.request\");\n\n const result = options?.key\n ? await rateLimitProvider.checkLimitByKey(\n options.key(...args),\n options,\n )\n : await rateLimitProvider.checkLimit(\n request ?? { ip: \"global\" },\n options,\n );\n\n if (request) {\n rateLimitProvider.setRateLimitHeaders(request, result);\n }\n\n if (!result.allowed) {\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n\n return next(...args);\n };\n },\n });\n};\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerRateLimitProvider } from \"./providers/ServerRateLimitProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$rateLimit.ts\";\nexport * from \"./providers/ServerRateLimitProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha/server\" {\n interface ActionPrimitiveOptions<TConfig> {\n /**\n * Rate limiting configuration for this action.\n * When specified, the action will be rate limited according to these settings.\n */\n rateLimit?: RateLimitOptions;\n }\n\n interface ServerRoute {\n /**\n * Route-specific rate limit configuration.\n * If set, overrides the global rate limit options for this route.\n */\n rateLimit?: RateLimitOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface RateLimitOptions {\n /**\n * Maximum number of requests per window (default: 100).\n */\n max?: number;\n /**\n * Window duration in milliseconds (default: 15 minutes).\n */\n windowMs?: number;\n /**\n * Custom key generator function.\n */\n keyGenerator?: (req: any) => string;\n /**\n * Skip rate limiting for failed requests.\n */\n skipFailedRequests?: boolean;\n /**\n * Skip rate limiting for successful requests.\n */\n skipSuccessfulRequests?: boolean;\n}\n\n/**\n * Request rate limiting on actions.\n *\n * **Features:**\n * - Rate limit configuration per action\n *\n * @module alepha.server.rate-limit\n */\nexport const AlephaServerRateLimit = $module({\n name: \"alepha.server.rate-limit\",\n services: [AlephaServer, ServerRateLimitProvider],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/server/rate-limit/providers/ServerRateLimitProvider.ts","../../../src/server/rate-limit/primitives/$rateLimit.ts","../../../src/server/rate-limit/index.ts"],"sourcesContent":["import { $atom, $hook, $inject, $state, type Static, t } from \"alepha\";\nimport { CacheProvider } from \"alepha/cache\";\nimport { DateTimeProvider } from \"alepha/datetime\";\nimport { $logger } from \"alepha/logger\";\nimport {\n HttpError,\n type ServerRequest,\n ServerRouterProvider,\n} from \"alepha/server\";\nimport type { RateLimitOptions } from \"../index.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface RateLimitResult {\n allowed: boolean;\n limit: number;\n remaining: number;\n resetTime: number;\n retryAfter?: number;\n}\n\n/**\n * Rate limit configuration atom (global defaults)\n */\nexport const rateLimitOptions = $atom({\n name: \"alepha.server.rate-limit.options\",\n schema: t.object({\n windowMs: t.number({\n default: 15 * 60 * 1000,\n description: \"Window duration in milliseconds\",\n }),\n max: t.number({\n default: 100,\n description: \"Maximum number of requests per window\",\n }),\n skipFailedRequests: t.optional(\n t.boolean({\n description: \"Skip rate limiting for failed requests\",\n }),\n ),\n skipSuccessfulRequests: t.optional(\n t.boolean({\n description: \"Skip rate limiting for successful requests\",\n }),\n ),\n }),\n default: {\n windowMs: 15 * 60 * 1000,\n max: 100,\n },\n});\n\nexport type RateLimitAtomOptions = Static<typeof rateLimitOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [rateLimitOptions.key]: RateLimitAtomOptions;\n }\n}\n\nexport interface RateLimitRegistration extends RateLimitOptions {\n /**\n * Name identifier for this rate limit.\n */\n name?: string;\n /**\n * Path patterns to match (supports wildcards like /api/*).\n */\n paths?: string[];\n}\n\nexport class ServerRateLimitProvider {\n protected readonly log = $logger();\n protected readonly dateTime = $inject(DateTimeProvider);\n protected readonly serverRouterProvider = $inject(ServerRouterProvider);\n protected readonly cacheProvider = $inject(CacheProvider);\n protected readonly globalOptions = $state(rateLimitOptions);\n\n protected static readonly CACHE_NAME = \"rate-limit\";\n\n /**\n * Registered rate limit configurations with their path patterns\n */\n public readonly registeredConfigs: RateLimitRegistration[] = [];\n\n /**\n * Register a rate limit configuration (called by primitives)\n */\n public registerRateLimit(config: RateLimitRegistration): void {\n this.registeredConfigs.push(config);\n }\n\n protected readonly onStart = $hook({\n on: \"start\",\n handler: async () => {\n // Apply path-specific rate limit configs to routes\n for (const config of this.registeredConfigs) {\n if (config.paths) {\n for (const pattern of config.paths) {\n const matchedRoutes = this.serverRouterProvider.getRoutes(pattern);\n for (const route of matchedRoutes) {\n route.rateLimit = this.buildRateLimitOptions(config);\n }\n }\n }\n }\n\n if (this.registeredConfigs.length > 0) {\n this.log.info(\n `Initialized with ${this.registeredConfigs.length} registered rate-limit configurations.`,\n );\n }\n },\n });\n\n public readonly onRequest = $hook({\n on: \"server:onRequest\",\n handler: async ({ route, request }) => {\n // Use route-specific rate limit if defined, otherwise use global options\n const rateLimitConfig = route.rateLimit ?? this.globalOptions;\n\n // Skip if no rate limiting configured\n if (!rateLimitConfig.max && !rateLimitConfig.windowMs) {\n return;\n }\n\n const result = await this.checkLimit(request, rateLimitConfig);\n this.setRateLimitHeaders(request, result);\n\n if (!result.allowed) {\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n },\n });\n\n public readonly onActionRequest = $hook({\n on: \"action:onRequest\",\n handler: async ({ action, request }) => {\n // Check if this action has rate limiting enabled\n const rateLimit = action.options?.rateLimit;\n if (!rateLimit) {\n return; // No rate limiting for this action\n }\n\n const result = await this.checkLimit(request, rateLimit);\n\n if (!result.allowed) {\n // Actions are internal - don't set HTTP headers\n // Only throw error to prevent action execution\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n\n // Action allowed - no headers to set since actions are internal\n },\n });\n\n /**\n * Build complete rate limit options by merging with global defaults\n */\n protected buildRateLimitOptions(\n config: RateLimitRegistration,\n ): RateLimitOptions {\n return {\n max: config.max ?? this.globalOptions.max,\n windowMs: config.windowMs ?? this.globalOptions.windowMs,\n keyGenerator: config.keyGenerator,\n skipFailedRequests:\n config.skipFailedRequests ?? this.globalOptions.skipFailedRequests,\n skipSuccessfulRequests:\n config.skipSuccessfulRequests ??\n this.globalOptions.skipSuccessfulRequests,\n };\n }\n\n /**\n * Set rate limit headers on the response\n */\n public setRateLimitHeaders(\n request: ServerRequest,\n result: RateLimitResult,\n ): void {\n request.reply.setHeader(\"X-RateLimit-Limit\", result.limit.toString());\n request.reply.setHeader(\n \"X-RateLimit-Remaining\",\n result.remaining.toString(),\n );\n request.reply.setHeader(\n \"X-RateLimit-Reset\",\n Math.ceil(result.resetTime / 1000).toString(),\n );\n\n if (!result.allowed && result.retryAfter) {\n request.reply.setHeader(\"Retry-After\", result.retryAfter.toString());\n }\n }\n\n public async checkLimit(\n req: Pick<ServerRequest, \"ip\">,\n options: RateLimitOptions = {},\n ): Promise<RateLimitResult> {\n const baseKey = this.generateKey(req);\n return this.checkLimitByKey(baseKey, options);\n }\n\n /**\n * Check rate limit by an explicit key string.\n * Useful when no request context is available (e.g. `$job`, `$pipeline`).\n */\n public async checkLimitByKey(\n baseKey: string,\n options: RateLimitOptions = {},\n ): Promise<RateLimitResult> {\n const windowMs = options.windowMs ?? this.globalOptions.windowMs;\n const max = options.max ?? this.globalOptions.max;\n\n const now = this.dateTime.nowMillis();\n // Fixed window: round down to nearest window boundary\n const windowStart = Math.floor(now / windowMs) * windowMs;\n const resetTime = windowStart + windowMs;\n\n // Include window timestamp in key for automatic expiration of old windows\n const key = `${baseKey}:${windowStart}`;\n\n // Atomic increment - returns the new count after incrementing\n const count = await this.cacheProvider.incr(\n ServerRateLimitProvider.CACHE_NAME,\n key,\n 1,\n );\n\n const allowed = count <= max;\n const remaining = Math.max(0, max - count);\n\n const result: RateLimitResult = {\n allowed,\n limit: max,\n remaining,\n resetTime,\n };\n\n if (!allowed) {\n result.retryAfter = Math.ceil((resetTime - now) / 1000);\n }\n\n return result;\n }\n\n protected generateKey(req: Pick<ServerRequest, \"ip\">): string {\n // Use req.ip which is resolved by ServerRequestParser with proper trust proxy handling\n return `ip:${req.ip || \"unknown\"}`;\n }\n}\n","import { createMiddleware, type Middleware } from \"alepha\";\nimport { HttpError } from \"alepha/server\";\nimport type { RateLimitOptions } from \"../index.ts\";\nimport { ServerRateLimitProvider } from \"../providers/ServerRateLimitProvider.ts\";\n\nexport interface RateLimitMiddlewareOptions extends RateLimitOptions {\n /**\n * Custom key function. Receives the handler arguments.\n * When provided, bypasses request-based key generation — works outside `$action`.\n */\n key?: (...args: any[]) => string;\n}\n\n/**\n * Middleware that enforces rate limiting.\n *\n * **Key resolution** (in order):\n * 1. Explicit `key` function — user controls the key. Works anywhere (`$action`, `$job`, `$pipeline`).\n * 2. Auto-detect `request.ip` from ALS — default for `$action` context.\n * 3. `\"global\"` fallback — when no request context and no `key`. All calls share one bucket.\n *\n * Sets `X-RateLimit-*` response headers when a request context is available.\n * Throws `HttpError(429)` when the limit is exceeded.\n *\n * ```typescript\n * // In $action: automatically rate limits by IP\n * $action({ use: [$rateLimit({ max: 100, windowMs: 60000 })] })\n *\n * // In $action: rate limit by custom key\n * $action({ use: [$rateLimit({ max: 10, windowMs: 60000, key: (req) => req.user?.id })] })\n *\n * // In $job: rate limit all executions globally\n * $job({ use: [$rateLimit({ max: 5, windowMs: 3600000 })] })\n * ```\n */\nexport const $rateLimit = (\n options?: RateLimitMiddlewareOptions,\n): Middleware => {\n return createMiddleware({\n name: \"$rateLimit\",\n options: options as unknown as Record<string, unknown>,\n handler: ({ alepha, next }) => {\n const rateLimitProvider = alepha.inject(ServerRateLimitProvider);\n\n return async (...args) => {\n const request = alepha.get(\"alepha.http.request\");\n\n const result = options?.key\n ? await rateLimitProvider.checkLimitByKey(\n options.key(...args),\n options,\n )\n : await rateLimitProvider.checkLimit(\n request ?? { ip: \"global\" },\n options,\n );\n\n if (request) {\n rateLimitProvider.setRateLimitHeaders(request, result);\n }\n\n if (!result.allowed) {\n throw new HttpError({\n status: 429,\n message: \"Too Many Requests\",\n });\n }\n\n return next(...args);\n };\n },\n });\n};\n","import { $module } from \"alepha\";\nimport { AlephaServer } from \"alepha/server\";\nimport { ServerRateLimitProvider } from \"./providers/ServerRateLimitProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$rateLimit.ts\";\nexport * from \"./providers/ServerRateLimitProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha/server\" {\n interface ActionPrimitiveOptions<TConfig> {\n /**\n * Rate limiting configuration for this action.\n * When specified, the action will be rate limited according to these settings.\n */\n rateLimit?: RateLimitOptions;\n }\n\n interface ServerRoute {\n /**\n * Route-specific rate limit configuration.\n * If set, overrides the global rate limit options for this route.\n */\n rateLimit?: RateLimitOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface RateLimitOptions {\n /**\n * Maximum number of requests per window (default: 100).\n */\n max?: number;\n /**\n * Window duration in milliseconds (default: 15 minutes).\n */\n windowMs?: number;\n /**\n * Custom key generator function.\n */\n keyGenerator?: (req: any) => string;\n /**\n * Skip rate limiting for failed requests.\n */\n skipFailedRequests?: boolean;\n /**\n * Skip rate limiting for successful requests.\n */\n skipSuccessfulRequests?: boolean;\n}\n\n/**\n * Request rate limiting on actions.\n *\n * **Features:**\n * - Rate limit configuration per action\n *\n * @module alepha.server.rate-limit\n */\nexport const AlephaServerRateLimit = $module({\n name: \"alepha.server.rate-limit\",\n services: [AlephaServer, ServerRateLimitProvider],\n});\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Alepha, KIND, Primitive } from "alepha";
3
3
  import { ServerHandler, ServerRouterProvider } from "alepha/server";
4
4
  import { DateTimeProvider, DurationLike } from "alepha/datetime";
5
- import * as alepha_logger0 from "alepha/logger";
5
+ import * as _$alepha_logger0 from "alepha/logger";
6
6
  import { FileDetector } from "alepha/system";
7
7
 
8
8
  //#region ../../src/server/static/primitives/$serve.d.ts
@@ -97,9 +97,9 @@ declare class ServerStaticProvider {
97
97
  protected readonly routerProvider: ServerRouterProvider;
98
98
  protected readonly dateTimeProvider: DateTimeProvider;
99
99
  protected readonly fileDetector: FileDetector;
100
- protected readonly log: alepha_logger0.Logger;
100
+ protected readonly log: _$alepha_logger0.Logger;
101
101
  protected readonly directories: ServeDirectory[];
102
- protected readonly configure: alepha.HookPrimitive<"configure">;
102
+ protected readonly configure: _$alepha.HookPrimitive<"configure">;
103
103
  createStaticServer(options: ServePrimitiveOptions): Promise<void>;
104
104
  createFileHandler(filepath: string, options: ServePrimitiveOptions): Promise<ServerHandler>;
105
105
  protected getCacheFileTypes(): string[];
@@ -123,7 +123,7 @@ interface ServeDirectory {
123
123
  *
124
124
  * @module alepha.server.static
125
125
  */
126
- declare const AlephaServerStatic: alepha.Service<alepha.Module>;
126
+ declare const AlephaServerStatic: _$alepha.Service<_$alepha.Module>;
127
127
  //#endregion
128
128
  export { $serve, AlephaServerStatic, CacheControlOptions, ServeDirectory, ServePrimitive, ServePrimitiveOptions, ServerStaticProvider };
129
129
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/static/primitives/$serve.ts","../../../src/server/static/providers/ServerStaticProvider.ts","../../../src/server/static/index.ts"],"mappings":";;;;;;;;;;;cAMa,MAAA;EAAA,WAAmB,qBAAA,GAA6B,cAAA;EAAA;;UAI5C,qBAAA;;;;;;EAMf,IAAA;;;;;;EAOA,IAAA;;;AAbF;;;EAoBE,QAAA;EAdA;;;;;EAqBA,iBAAA;EAqBA;;;;;EAdA,aAAA;EA4BM;AAGR;;;EAzBE,kBAAA;EA+BA;;;;;;EAvBA,IAAA;EAwC0B;;;;;EAjC1B,YAAA,GAAe,OAAA,CAAQ,mBAAA;;ACtDzB;;;;ED6DE,MAAA;AAAA;AAAA,UAGe,mBAAA;EC5DgB;;;;;EDkE/B,SAAA;EC0CW;;;;;EDnCX,MAAA,EAAQ,YAAA;EC5EW;;;;;EDmFnB,SAAA;AAAA;AAAA,cAGW,cAAA,SAAuB,SAAA,CAAU,qBAAA;;;cCvFjC,oBAAA;EAAA,mBACQ,MAAA,EAAM,MAAA;EAAA,mBACN,cAAA,EAAc,oBAAA;EAAA,mBACd,gBAAA,EAAgB,gBAAA;EAAA,mBAChB,YAAA,EAAY,YAAA;EAAA,mBACZ,GAAA,EADY,cAAA,CACT,MAAA;EAAA,mBACH,WAAA,EAAa,cAAA;EAAA,mBAEb,SAAA,EAF2B,MAAA,CAElB,aAAA;EAWf,kBAAA,CACX,OAAA,EAAS,qBAAA,GACR,OAAA;EAwFU,iBAAA,CACX,QAAA,UACA,OAAA,EAAS,qBAAA,GACR,OAAA,CAAQ,aAAA;EAAA,UA2ED,iBAAA,CAAA;EAAA,UAiBA,eAAA,CACR,QAAA,UACA,OAAA,EAAS,qBAAA;IACN,MAAA;IAAgB,SAAA;EAAA;EAoBR,WAAA,CACX,GAAA,UACA,iBAAA,aACC,OAAA;AAAA;AAAA,UAmBY,cAAA;EACf,OAAA,EAAS,qBAAA;EACT,KAAA;AAAA;;;;;;;;;ADhQF;;cEca,kBAAA,EAAkB,MAAA,CAAA,OAAA,CAI7B,MAAA,CAJ6B,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/static/primitives/$serve.ts","../../../src/server/static/providers/ServerStaticProvider.ts","../../../src/server/static/index.ts"],"mappings":";;;;;;;;;;;cAMa,MAAA;EAAA,WAAmB,qBAAA,GAA6B,cAAA;EAAA;;UAI5C,qBAAA;;;;;;EAMf,IAAA;;;;;;EAOA,IAAA;;;AAbF;;;EAoBE,QAAA;EAdA;;;;;EAqBA,iBAAA;EAqBA;;;;;EAdA,aAAA;EA4BM;AAGR;;;EAzBE,kBAAA;EA+BA;;;;;;EAvBA,IAAA;EAwC0B;;;;;EAjC1B,YAAA,GAAe,OAAA,CAAQ,mBAAA;;ACtDzB;;;;ED6DE,MAAA;AAAA;AAAA,UAGe,mBAAA;EC5DgB;;;;;EDkE/B,SAAA;EC0CW;;;;;EDnCX,MAAA,EAAQ,YAAA;EC5EW;;;;;EDmFnB,SAAA;AAAA;AAAA,cAGW,cAAA,SAAuB,SAAA,CAAU,qBAAA;;;cCvFjC,oBAAA;EAAA,mBACQ,MAAA,EAAM,MAAA;EAAA,mBACN,cAAA,EAAc,oBAAA;EAAA,mBACd,gBAAA,EAAgB,gBAAA;EAAA,mBAChB,YAAA,EAAY,YAAA;EAAA,mBACZ,GAAA,EADY,gBAAA,CACT,MAAA;EAAA,mBACH,WAAA,EAAa,cAAA;EAAA,mBAEb,SAAA,EAF2B,QAAA,CAElB,aAAA;EAWf,kBAAA,CACX,OAAA,EAAS,qBAAA,GACR,OAAA;EAwFU,iBAAA,CACX,QAAA,UACA,OAAA,EAAS,qBAAA,GACR,OAAA,CAAQ,aAAA;EAAA,UA2ED,iBAAA,CAAA;EAAA,UAiBA,eAAA,CACR,QAAA,UACA,OAAA,EAAS,qBAAA;IACN,MAAA;IAAgB,SAAA;EAAA;EAoBR,WAAA,CACX,GAAA,UACA,iBAAA,aACC,OAAA;AAAA;AAAA,UAmBY,cAAA;EACf,OAAA,EAAS,qBAAA;EACT,KAAA;AAAA;;;;;;;;;ADhQF;;cEca,kBAAA,EAAkB,QAAA,CAAA,OAAA,CAI7B,QAAA,CAJ6B,MAAA"}
@@ -1,8 +1,8 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Alepha, KIND, Primitive, Static, TObject } from "alepha";
3
3
  import { ActionPrimitive, RequestConfigSchema, ServerProvider, ServerRouterProvider } from "alepha/server";
4
4
  import { ServerStaticProvider } from "alepha/server/static";
5
- import * as alepha_logger0 from "alepha/logger";
5
+ import * as _$alepha_logger0 from "alepha/logger";
6
6
  import { FileSystemProvider } from "alepha/system";
7
7
 
8
8
  //#region ../../src/server/swagger/primitives/$swagger.d.ts
@@ -175,8 +175,8 @@ interface OpenApiOperation {
175
175
  /**
176
176
  * Swagger provider configuration atom
177
177
  */
178
- declare const swaggerOptions: alepha.Atom<TObject<{
179
- excludeKeys: alepha.TOptional<alepha.TArray<alepha.TString>>;
178
+ declare const swaggerOptions: _$alepha.Atom<TObject<{
179
+ excludeKeys: _$alepha.TOptional<_$alepha.TArray<_$alepha.TString>>;
180
180
  }>, "alepha.server.swagger.options">;
181
181
  type ServerSwaggerProviderOptions = Static<typeof swaggerOptions.schema>;
182
182
  declare module "alepha" {
@@ -189,13 +189,13 @@ declare class ServerSwaggerProvider {
189
189
  protected readonly serverRouterProvider: ServerRouterProvider;
190
190
  protected readonly serverProvider: ServerProvider;
191
191
  protected readonly alepha: Alepha;
192
- protected readonly log: alepha_logger0.Logger;
192
+ protected readonly log: _$alepha_logger0.Logger;
193
193
  protected readonly options: Readonly<{
194
194
  excludeKeys?: string[] | undefined;
195
195
  }>;
196
196
  protected readonly fs: FileSystemProvider;
197
197
  json?: OpenApiDocument;
198
- protected readonly configure: alepha.HookPrimitive<"configure">;
198
+ protected readonly configure: _$alepha.HookPrimitive<"configure">;
199
199
  generateSwaggerDoc(options: SwaggerPrimitiveOptions): OpenApiDocument;
200
200
  protected setupSwaggerPlugin(options: SwaggerPrimitiveOptions): Promise<OpenApiDocument | undefined>;
201
201
  protected configureOpenApi(actions: ActionPrimitive<RequestConfigSchema>[], doc: SwaggerPrimitiveOptions): OpenApiDocument;
@@ -241,7 +241,7 @@ declare module "alepha/server" {
241
241
  *
242
242
  * @module alepha.server.swagger
243
243
  */
244
- declare const AlephaServerSwagger: alepha.Service<alepha.Module>;
244
+ declare const AlephaServerSwagger: _$alepha.Service<_$alepha.Module>;
245
245
  //#endregion
246
246
  export { $swagger, AlephaServerSwagger, OpenApiDocument, OpenApiOperation, OpenApiServer, ServerSwaggerProvider, ServerSwaggerProviderOptions, SwaggerPrimitive, SwaggerPrimitiveOptions, SwaggerUiOptions, swaggerOptions };
247
247
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/swagger/primitives/$swagger.ts","../../../src/server/swagger/providers/ServerSwaggerProvider.ts","../../../src/server/swagger/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/server/swagger/primitives/$swagger.ts","../../../src/server/swagger/providers/ServerSwaggerProvider.ts","../../../src/server/swagger/index.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import "alepha/security";
2
- import { $atom, $hook, $inject, $module, $use, Alepha, KIND, Primitive, createPrimitive, isTypeFile, t } from "alepha";
2
+ import { $atom, $hook, $inject, $module, $state, Alepha, KIND, Primitive, createPrimitive, isTypeFile, t } from "alepha";
3
3
  import { $action, AlephaServer, ServerProvider, ServerRouterProvider } from "alepha/server";
4
4
  import { AlephaServerEtag } from "alepha/server/etag";
5
5
  import { AlephaServerStatic, ServerStaticProvider } from "alepha/server/static";
@@ -52,7 +52,7 @@ var ServerSwaggerProvider = class {
52
52
  serverProvider = $inject(ServerProvider);
53
53
  alepha = $inject(Alepha);
54
54
  log = $logger();
55
- options = $use(swaggerOptions);
55
+ options = $state(swaggerOptions);
56
56
  fs = $inject(FileSystemProvider);
57
57
  json;
58
58
  configure = $hook({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/server/swagger/primitives/$swagger.ts","../../../src/server/swagger/providers/ServerSwaggerProvider.ts","../../../src/server/swagger/index.ts"],"sourcesContent":["import { createPrimitive, KIND, Primitive } from \"alepha\";\n\n/**\n * Creates an OpenAPI/Swagger documentation primitive with interactive UI.\n *\n * Automatically generates API documentation from your $action primitives and serves\n * an interactive Swagger UI for testing endpoints. Supports customization, tag filtering,\n * and OAuth configuration.\n *\n * @example\n * ```ts\n * class App {\n * docs = $swagger({\n * prefix: \"/api-docs\",\n * info: {\n * title: \"My API\",\n * version: \"1.0.0\",\n * description: \"REST API documentation\"\n * },\n * excludeTags: [\"internal\"],\n * ui: { root: \"/swagger\" }\n * });\n * }\n * ```\n */\nexport const $swagger = (\n options: SwaggerPrimitiveOptions = {},\n): SwaggerPrimitive => {\n return createPrimitive(SwaggerPrimitive, options);\n};\n\nexport interface SwaggerPrimitiveOptions {\n info?: OpenApiDocument[\"info\"];\n\n /**\n * @default: \"/docs\"\n */\n prefix?: string;\n\n /**\n * If true, docs will be disabled.\n */\n disabled?: boolean;\n\n /**\n * Tags to exclude from the documentation.\n */\n excludeTags?: string[];\n\n /**\n * Server URLs for the API.\n * If not provided, the server hostname is used automatically.\n */\n servers?: OpenApiServer[];\n\n /**\n * Enable Swagger UI.\n *\n * @default true\n */\n ui?: boolean | SwaggerUiOptions;\n\n /**\n * Function to rewrite the OpenAPI document before serving it.\n */\n rewrite?: (doc: OpenApiDocument) => void;\n}\n\nexport interface OpenApiServer {\n url: string;\n description?: string;\n}\n\nexport interface SwaggerUiOptions {\n root?: string;\n\n /**\n * If true, the authorization data is persisted in browser localStorage.\n *\n * @default true\n */\n persistAuthorization?: boolean;\n\n initOAuth?: {\n /**\n * Default clientId.\n */\n clientId?: string;\n\n /**\n * realm query parameter (for oauth1) added to authorizationUrl and tokenUrl.\n */\n realm?: string;\n\n /**\n * application name, displayed in authorization popup.\n */\n appName?: string;\n\n /**\n * scope separator for passing scopes, encoded before calling, default\n * value is a space (encoded value %20).\n *\n * @default ' '\n */\n scopeSeparator?: string;\n\n /**\n * string array or scope separator (i.e. space) separated string of\n * initially selected oauth scopes\n *\n * @default []\n */\n scopes?: string | string[];\n\n /**\n * Additional query parameters added to authorizationUrl and tokenUrl.\n * MUST be an object\n */\n additionalQueryStringParams?: { [key: string]: any };\n\n /**\n * Only activated for the accessCode flow. During the authorization_code\n * request to the tokenUrl, pass the Client Password using the HTTP Basic\n * Authentication scheme (Authorization header with Basic\n * base64encode(client_id + client_secret)).\n *\n * @default false\n */\n useBasicAuthenticationWithAccessCodeGrant?: boolean;\n\n /**\n * Only applies to Authorization Code flows. Proof Key for Code Exchange\n * brings enhanced security for OAuth public clients.\n *\n * @default false\n */\n usePkceWithAuthorizationCodeGrant?: boolean;\n };\n}\n\nexport class SwaggerPrimitive extends Primitive<SwaggerPrimitiveOptions> {}\n\n$swagger[KIND] = SwaggerPrimitive;\n\nexport interface OpenApiDocument {\n openapi: string;\n info: {\n title: string;\n version: string;\n description?: string;\n };\n servers?: OpenApiServer[];\n paths: Record<string, any>;\n components?: {\n schemas?: Record<string, any>;\n securitySchemes?: Record<string, any>;\n };\n}\n\nexport interface OpenApiOperation {\n tags?: string[];\n summary?: string;\n description?: string;\n operationId?: string;\n deprecated?: boolean;\n parameters?: Array<{\n name: string;\n in: \"query\" | \"header\" | \"path\" | \"cookie\";\n description?: string;\n required?: boolean;\n schema: any;\n }>;\n requestBody?: {\n description?: string;\n content: Record<\n string,\n {\n schema: any;\n }\n >;\n required?: boolean;\n };\n responses: Record<\n string,\n {\n description: string;\n content?: Record<\n string,\n {\n schema: any;\n }\n >;\n }\n >;\n security?: Array<Record<string, any[]>>;\n}\n","import { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport {\n $atom,\n $hook,\n $inject,\n $use,\n Alepha,\n isTypeFile,\n type Static,\n type TObject,\n type TSchema,\n t,\n} from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport {\n $action,\n type ActionPrimitive,\n type RequestConfigSchema,\n ServerProvider,\n ServerRouterProvider,\n} from \"alepha/server\";\nimport { ServerStaticProvider } from \"alepha/server/static\";\nimport { FileSystemProvider } from \"alepha/system\";\nimport {\n $swagger,\n type OpenApiDocument,\n type OpenApiOperation,\n type SwaggerPrimitiveOptions,\n} from \"../primitives/$swagger.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Swagger provider configuration atom\n */\nexport const swaggerOptions = $atom({\n name: \"alepha.server.swagger.options\",\n schema: t.object({\n excludeKeys: t.optional(\n t.array(t.string(), {\n description: \"Keys to exclude from swagger schema\",\n }),\n ),\n }),\n default: {\n excludeKeys: [],\n },\n});\n\nexport type ServerSwaggerProviderOptions = Static<typeof swaggerOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [swaggerOptions.key]: ServerSwaggerProviderOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class ServerSwaggerProvider {\n protected readonly serverStaticProvider = $inject(ServerStaticProvider);\n protected readonly serverRouterProvider = $inject(ServerRouterProvider);\n protected readonly serverProvider = $inject(ServerProvider);\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n protected readonly options = $use(swaggerOptions);\n protected readonly fs = $inject(FileSystemProvider);\n\n public json?: OpenApiDocument;\n\n protected readonly configure = $hook({\n on: \"configure\",\n priority: \"last\", // wait for all configurations, sometimes some actions are registered late!\n handler: async (alepha) => {\n const options = alepha.primitives($swagger)?.[0]?.options;\n if (!options) {\n return;\n }\n\n this.json = await this.setupSwaggerPlugin(options);\n },\n });\n\n public generateSwaggerDoc(options: SwaggerPrimitiveOptions): OpenApiDocument {\n const json = this.configureOpenApi(\n this.alepha.primitives($action),\n options,\n );\n\n if (options.rewrite) {\n options.rewrite(json);\n }\n\n return json;\n }\n\n protected async setupSwaggerPlugin(\n options: SwaggerPrimitiveOptions,\n ): Promise<OpenApiDocument | undefined> {\n if (options.disabled) {\n return;\n }\n\n const json = this.generateSwaggerDoc(options);\n\n const prefix = options.prefix ?? \"/docs\";\n\n this.configureSwaggerApi(prefix, json);\n\n if (options.ui !== false) {\n await this.configureSwaggerUi(prefix, options);\n } else {\n this.log.info(`Swagger API available at ${prefix}/json`);\n }\n\n return json;\n }\n\n protected configureOpenApi(\n actions: ActionPrimitive<RequestConfigSchema>[],\n doc: SwaggerPrimitiveOptions,\n ): OpenApiDocument {\n const openApi: OpenApiDocument = {\n openapi: \"3.0.0\",\n info: doc.info ?? {\n title: \"API Documentation\",\n version: \"1.0.0\",\n },\n servers: doc.servers ?? [{ url: this.serverProvider.hostname }],\n paths: {},\n components: {},\n };\n\n let hasSecurity = false;\n const excludeTags = doc.excludeTags ?? [];\n const schemas: Record<string, any> = {};\n\n const schema = (source: TSchema) => {\n if (\"title\" in source && typeof source.title === \"string\") {\n schemas[source.title] = copy(source);\n return { $ref: `#/components/schemas/${source.title}` };\n }\n return copy(source);\n };\n\n const copy = (obj: any) => {\n const newValue = JSON.parse(JSON.stringify(obj));\n this.removePrivateFields(newValue, [\n ...(this.options.excludeKeys || []),\n \"~options\",\n ]);\n return newValue;\n };\n\n for (const route of actions) {\n if (!route.options.schema) {\n continue;\n }\n\n const response = this.getResponseSchema(route);\n if (!response) {\n continue;\n }\n\n if (excludeTags.includes(route.group)) {\n continue;\n }\n\n if (route.options.hide) {\n continue;\n }\n\n const operation: OpenApiOperation = {\n operationId: route.name,\n summary: route.options.summary,\n description: route.options.description,\n deprecated: route.options.deprecated || undefined,\n tags: [route.group.replaceAll(\":\", \" / \")],\n responses: {\n [response.status]: {\n description: this.getStatusDescription(response.status),\n content: response.type\n ? {\n [response.type]: {\n schema: schema(response.schema),\n },\n }\n : undefined,\n },\n },\n };\n\n const isSecured = route.middlewares.some((m) => m?.name === \"$secure\");\n\n if (isSecured) {\n operation.security = [{ bearerAuth: [] }];\n operation.responses[\"401\"] = {\n description: \"Unauthorized\",\n };\n hasSecurity = true;\n }\n\n const g = t.raw;\n\n if (\n g.IsObject(route.options.schema.body) ||\n g.IsArray(route.options.schema.body)\n ) {\n if (\n g.IsObject(route.options.schema.body) &&\n this.isBodyMultipart(route.options.schema.body)\n ) {\n operation.requestBody = {\n required: true,\n content: {\n \"multipart/form-data\": {\n schema: schema(route.options.schema.body),\n },\n },\n };\n } else {\n operation.requestBody = {\n required: true,\n content: {\n \"application/json\": {\n schema: schema(route.options.schema.body),\n },\n },\n };\n }\n }\n\n if (g.IsObject(route.options.schema.query)) {\n operation.parameters ??= [];\n const requiredKeys: string[] =\n route.options.schema.query.required ?? [];\n for (const [key, value] of Object.entries(\n route.options.schema.query.properties,\n )) {\n const param: any = {\n name: key,\n in: \"query\",\n required: requiredKeys.includes(key),\n schema: schema(value),\n };\n const example = this.extractExample(value);\n if (example !== undefined) param.example = example;\n operation.parameters.push(param);\n }\n }\n\n if (g.IsObject(route.options.schema.params)) {\n operation.parameters ??= [];\n for (const [key, value] of Object.entries(\n route.options.schema.params.properties,\n )) {\n const description =\n \"description\" in value && typeof value.description === \"string\"\n ? value.description\n : undefined;\n const ref = schema(value);\n delete ref.description;\n const param: any = {\n name: key,\n in: \"path\",\n required: true,\n description,\n schema: ref,\n };\n const example = this.extractExample(value);\n if (example !== undefined) param.example = example;\n operation.parameters.push(param);\n }\n }\n\n const hasValidation =\n operation.requestBody || operation.parameters?.length;\n if (hasValidation) {\n operation.responses[\"400\"] = {\n description: \"Bad Request\",\n };\n }\n\n const url = route.prefix + this.replacePathParams(route.path);\n\n openApi.paths[url] = {\n ...openApi.paths[url],\n [route.method.toLowerCase()]: operation,\n };\n }\n\n if (hasSecurity && openApi.components) {\n openApi.components.securitySchemes = {\n bearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n description:\n \"Enter a JWT token or API key. Both are accepted as Bearer tokens.\",\n },\n };\n }\n\n if (openApi.components) openApi.components.schemas = schemas;\n\n return JSON.parse(JSON.stringify(openApi));\n }\n\n public isBodyMultipart(schema: TObject): boolean {\n for (const key in schema.properties) {\n if (isTypeFile(schema.properties[key])) {\n return true;\n }\n }\n return false;\n }\n\n public replacePathParams(url: string): string {\n return url.replace(/:\\w+/g, (match) => {\n const paramName = match.slice(1);\n return `{${paramName}}`;\n });\n }\n\n public getResponseSchema(route: ActionPrimitive<RequestConfigSchema>):\n | {\n type?: string;\n schema?: any;\n status: number;\n }\n | undefined {\n const schema: any = route.options.schema?.response;\n if (!schema) {\n return {\n status: 204,\n };\n }\n\n if (t.schema.isObject(schema) || t.schema.isArray(schema)) {\n return {\n schema,\n status: 200,\n type: \"application/json\",\n };\n }\n\n if (t.schema.isString(schema)) {\n return {\n schema,\n status: 200,\n type: \"text/plain\",\n };\n }\n\n if (\n t.schema.isNumber(schema) ||\n t.schema.isInteger(schema) ||\n t.schema.isBoolean(schema)\n ) {\n return {\n schema,\n status: 200,\n type: \"application/json\",\n };\n }\n\n if (isTypeFile(schema)) {\n return {\n schema,\n status: 200,\n type: \"application/octet-stream\",\n };\n }\n\n // Status-code-keyed map: e.g. { 201: t.object({...}) }\n const status = Object.keys(schema)[0];\n if (status && !Number.isNaN(Number(status))) {\n const inner = schema[status];\n return {\n schema: inner,\n status: Number(status),\n type: this.getContentType(inner),\n };\n }\n }\n\n protected extractExample(schema: any): any {\n if (\"examples\" in schema && Array.isArray(schema.examples)) {\n return schema.examples[0];\n }\n if (\"default\" in schema) {\n return schema.default;\n }\n return undefined;\n }\n\n protected getStatusDescription(status: number): string {\n switch (status) {\n case 200:\n return \"OK\";\n case 201:\n return \"Created\";\n case 204:\n return \"No Content\";\n case 400:\n return \"Bad Request\";\n case 401:\n return \"Unauthorized\";\n case 403:\n return \"Forbidden\";\n case 404:\n return \"Not Found\";\n case 500:\n return \"Internal Server Error\";\n default:\n return \"\";\n }\n }\n\n protected getContentType(schema: any): string | undefined {\n if (!schema) return undefined;\n if (t.schema.isObject(schema) || t.schema.isArray(schema)) {\n return \"application/json\";\n }\n if (t.schema.isString(schema)) return \"text/plain\";\n if (\n t.schema.isNumber(schema) ||\n t.schema.isInteger(schema) ||\n t.schema.isBoolean(schema)\n ) {\n return \"application/json\";\n }\n if (isTypeFile(schema)) return \"application/octet-stream\";\n return \"application/json\";\n }\n\n protected configureSwaggerApi(prefix: string, json: OpenApiDocument): void {\n this.serverRouterProvider.createRoute({\n method: \"GET\",\n path: `${prefix}/json`,\n schema: {\n response: t.json(),\n },\n handler: () => json,\n });\n }\n\n protected async configureSwaggerUi(\n prefix: string,\n options: SwaggerPrimitiveOptions,\n ): Promise<void> {\n const ui = typeof options.ui === \"object\" ? options.ui : {};\n const persistAuth = ui.persistAuthorization !== false;\n const initializer = `\nwindow.onload = function() {\n\twindow.ui = SwaggerUIBundle({\n\t\turl: \"${prefix}/json\",\n\t\tdom_id: '#swagger-ui',\n\t\tdeepLinking: true,\n\t\tpersistAuthorization: ${persistAuth},\n\t\tpresets: [\n\t\t\tSwaggerUIBundle.presets.apis,\n\t\t\tSwaggerUIStandalonePreset\n\t\t],\n\t\tplugins: [\n\t\t\tSwaggerUIBundle.plugins.DownloadUrl\n\t\t],\n\t\tlayout: \"BaseLayout\"\n\t});\n\n document.body.style.backgroundColor = \"#f2f2f2\";\n\n\tconst options = ${JSON.stringify(ui)};\n\n\tif (options.initOAuth) {\n\t\tui.initOAuth(options.initOAuth);\n\t}\n};\n\t\t`.trim();\n\n if (!this.alepha.isServerless()) {\n const dirname = fileURLToPath(import.meta.url);\n\n const root = await this.getAssetPath(\n ui.root,\n // TODO: this is shitty, take time to get the correct path\n join(dirname, \"../../assets/swagger-ui\"),\n join(dirname, \"../../../assets/swagger-ui\"),\n join(dirname, \"../../../../assets/swagger-ui\"),\n join(dirname, \"../../../../../assets/swagger-ui\"),\n );\n\n if (!root) {\n this.log.warn(`Failed to locate Swagger UI assets for path ${prefix}`);\n return;\n }\n\n await this.serverStaticProvider.createStaticServer({\n path: prefix,\n root,\n });\n }\n\n this.serverRouterProvider.createRoute({\n method: \"GET\",\n path: `${prefix}/swagger-initializer.js`,\n handler: ({ reply }) => {\n reply.headers[\"content-type\"] = \"application/javascript; charset=utf-8\";\n return initializer;\n },\n });\n\n this.log.info(\"SwaggerUI OK\", {\n url: `${this.serverProvider.hostname}${prefix}`,\n });\n }\n\n protected async getAssetPath(\n ...paths: (string | undefined)[]\n ): Promise<string | undefined> {\n for (const path of paths) {\n if (!path) continue;\n const exists = await this.fs.exists(path);\n if (exists) {\n return path;\n }\n }\n }\n\n public removePrivateFields<T extends Record<string, any>>(\n obj: T,\n excludeList: string[],\n ): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n\n const visited = new WeakSet();\n\n const traverse = (o: any): void => {\n if (visited.has(o)) return;\n visited.add(o);\n\n if (Array.isArray(o)) {\n for (let i = 0; i < o.length; i++) {\n const item = o[i];\n if (item !== null && typeof item === \"object\") {\n traverse(item);\n }\n }\n } else {\n for (const excludeKey of excludeList) {\n if (excludeKey in o) {\n delete o[excludeKey];\n }\n }\n for (const key in o) {\n const item = o[key];\n if (item !== null && typeof item === \"object\") {\n traverse(item);\n }\n }\n }\n };\n\n traverse(obj);\n return obj;\n }\n}\n","import \"alepha/security\";\nimport { $module } from \"alepha\";\nimport { AlephaServer, type RequestConfigSchema } from \"alepha/server\";\nimport { AlephaServerEtag } from \"alepha/server/etag\";\nimport { AlephaServerStatic } from \"alepha/server/static\";\nimport { $swagger } from \"./primitives/$swagger.ts\";\nimport { ServerSwaggerProvider } from \"./providers/ServerSwaggerProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$swagger.ts\";\nexport * from \"./providers/ServerSwaggerProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha/server\" {\n interface ActionPrimitiveOptions<TConfig extends RequestConfigSchema> {\n /**\n * Short description of the route.\n */\n summary?: string;\n\n /**\n * Don't include this action in the Swagger documentation.\n */\n hide?: boolean;\n\n /**\n * Mark this action as deprecated in the documentation.\n */\n deprecated?: boolean;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Automatic API documentation generation.\n *\n * **Features:**\n * - Swagger/OpenAPI configuration\n * - Routes: `GET /swagger/ui`, `GET /swagger.json`\n *\n * @module alepha.server.swagger\n */\nexport const AlephaServerSwagger = $module({\n name: \"alepha.server.swagger\",\n primitives: [$swagger],\n services: [ServerSwaggerProvider],\n register: (alepha) => {\n alepha.with(AlephaServer);\n alepha.with(AlephaServerEtag);\n alepha.with(AlephaServerStatic);\n alepha.with(ServerSwaggerProvider);\n alepha.store.push(\"alepha.build.assets\", \"alepha\");\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/server/swagger/primitives/$swagger.ts","../../../src/server/swagger/providers/ServerSwaggerProvider.ts","../../../src/server/swagger/index.ts"],"sourcesContent":["import { createPrimitive, KIND, Primitive } from \"alepha\";\n\n/**\n * Creates an OpenAPI/Swagger documentation primitive with interactive UI.\n *\n * Automatically generates API documentation from your $action primitives and serves\n * an interactive Swagger UI for testing endpoints. Supports customization, tag filtering,\n * and OAuth configuration.\n *\n * @example\n * ```ts\n * class App {\n * docs = $swagger({\n * prefix: \"/api-docs\",\n * info: {\n * title: \"My API\",\n * version: \"1.0.0\",\n * description: \"REST API documentation\"\n * },\n * excludeTags: [\"internal\"],\n * ui: { root: \"/swagger\" }\n * });\n * }\n * ```\n */\nexport const $swagger = (\n options: SwaggerPrimitiveOptions = {},\n): SwaggerPrimitive => {\n return createPrimitive(SwaggerPrimitive, options);\n};\n\nexport interface SwaggerPrimitiveOptions {\n info?: OpenApiDocument[\"info\"];\n\n /**\n * @default: \"/docs\"\n */\n prefix?: string;\n\n /**\n * If true, docs will be disabled.\n */\n disabled?: boolean;\n\n /**\n * Tags to exclude from the documentation.\n */\n excludeTags?: string[];\n\n /**\n * Server URLs for the API.\n * If not provided, the server hostname is used automatically.\n */\n servers?: OpenApiServer[];\n\n /**\n * Enable Swagger UI.\n *\n * @default true\n */\n ui?: boolean | SwaggerUiOptions;\n\n /**\n * Function to rewrite the OpenAPI document before serving it.\n */\n rewrite?: (doc: OpenApiDocument) => void;\n}\n\nexport interface OpenApiServer {\n url: string;\n description?: string;\n}\n\nexport interface SwaggerUiOptions {\n root?: string;\n\n /**\n * If true, the authorization data is persisted in browser localStorage.\n *\n * @default true\n */\n persistAuthorization?: boolean;\n\n initOAuth?: {\n /**\n * Default clientId.\n */\n clientId?: string;\n\n /**\n * realm query parameter (for oauth1) added to authorizationUrl and tokenUrl.\n */\n realm?: string;\n\n /**\n * application name, displayed in authorization popup.\n */\n appName?: string;\n\n /**\n * scope separator for passing scopes, encoded before calling, default\n * value is a space (encoded value %20).\n *\n * @default ' '\n */\n scopeSeparator?: string;\n\n /**\n * string array or scope separator (i.e. space) separated string of\n * initially selected oauth scopes\n *\n * @default []\n */\n scopes?: string | string[];\n\n /**\n * Additional query parameters added to authorizationUrl and tokenUrl.\n * MUST be an object\n */\n additionalQueryStringParams?: { [key: string]: any };\n\n /**\n * Only activated for the accessCode flow. During the authorization_code\n * request to the tokenUrl, pass the Client Password using the HTTP Basic\n * Authentication scheme (Authorization header with Basic\n * base64encode(client_id + client_secret)).\n *\n * @default false\n */\n useBasicAuthenticationWithAccessCodeGrant?: boolean;\n\n /**\n * Only applies to Authorization Code flows. Proof Key for Code Exchange\n * brings enhanced security for OAuth public clients.\n *\n * @default false\n */\n usePkceWithAuthorizationCodeGrant?: boolean;\n };\n}\n\nexport class SwaggerPrimitive extends Primitive<SwaggerPrimitiveOptions> {}\n\n$swagger[KIND] = SwaggerPrimitive;\n\nexport interface OpenApiDocument {\n openapi: string;\n info: {\n title: string;\n version: string;\n description?: string;\n };\n servers?: OpenApiServer[];\n paths: Record<string, any>;\n components?: {\n schemas?: Record<string, any>;\n securitySchemes?: Record<string, any>;\n };\n}\n\nexport interface OpenApiOperation {\n tags?: string[];\n summary?: string;\n description?: string;\n operationId?: string;\n deprecated?: boolean;\n parameters?: Array<{\n name: string;\n in: \"query\" | \"header\" | \"path\" | \"cookie\";\n description?: string;\n required?: boolean;\n schema: any;\n }>;\n requestBody?: {\n description?: string;\n content: Record<\n string,\n {\n schema: any;\n }\n >;\n required?: boolean;\n };\n responses: Record<\n string,\n {\n description: string;\n content?: Record<\n string,\n {\n schema: any;\n }\n >;\n }\n >;\n security?: Array<Record<string, any[]>>;\n}\n","import { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport {\n $atom,\n $hook,\n $inject,\n $state,\n Alepha,\n isTypeFile,\n type Static,\n type TObject,\n type TSchema,\n t,\n} from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport {\n $action,\n type ActionPrimitive,\n type RequestConfigSchema,\n ServerProvider,\n ServerRouterProvider,\n} from \"alepha/server\";\nimport { ServerStaticProvider } from \"alepha/server/static\";\nimport { FileSystemProvider } from \"alepha/system\";\nimport {\n $swagger,\n type OpenApiDocument,\n type OpenApiOperation,\n type SwaggerPrimitiveOptions,\n} from \"../primitives/$swagger.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Swagger provider configuration atom\n */\nexport const swaggerOptions = $atom({\n name: \"alepha.server.swagger.options\",\n schema: t.object({\n excludeKeys: t.optional(\n t.array(t.string(), {\n description: \"Keys to exclude from swagger schema\",\n }),\n ),\n }),\n default: {\n excludeKeys: [],\n },\n});\n\nexport type ServerSwaggerProviderOptions = Static<typeof swaggerOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [swaggerOptions.key]: ServerSwaggerProviderOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class ServerSwaggerProvider {\n protected readonly serverStaticProvider = $inject(ServerStaticProvider);\n protected readonly serverRouterProvider = $inject(ServerRouterProvider);\n protected readonly serverProvider = $inject(ServerProvider);\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n protected readonly options = $state(swaggerOptions);\n protected readonly fs = $inject(FileSystemProvider);\n\n public json?: OpenApiDocument;\n\n protected readonly configure = $hook({\n on: \"configure\",\n priority: \"last\", // wait for all configurations, sometimes some actions are registered late!\n handler: async (alepha) => {\n const options = alepha.primitives($swagger)?.[0]?.options;\n if (!options) {\n return;\n }\n\n this.json = await this.setupSwaggerPlugin(options);\n },\n });\n\n public generateSwaggerDoc(options: SwaggerPrimitiveOptions): OpenApiDocument {\n const json = this.configureOpenApi(\n this.alepha.primitives($action),\n options,\n );\n\n if (options.rewrite) {\n options.rewrite(json);\n }\n\n return json;\n }\n\n protected async setupSwaggerPlugin(\n options: SwaggerPrimitiveOptions,\n ): Promise<OpenApiDocument | undefined> {\n if (options.disabled) {\n return;\n }\n\n const json = this.generateSwaggerDoc(options);\n\n const prefix = options.prefix ?? \"/docs\";\n\n this.configureSwaggerApi(prefix, json);\n\n if (options.ui !== false) {\n await this.configureSwaggerUi(prefix, options);\n } else {\n this.log.info(`Swagger API available at ${prefix}/json`);\n }\n\n return json;\n }\n\n protected configureOpenApi(\n actions: ActionPrimitive<RequestConfigSchema>[],\n doc: SwaggerPrimitiveOptions,\n ): OpenApiDocument {\n const openApi: OpenApiDocument = {\n openapi: \"3.0.0\",\n info: doc.info ?? {\n title: \"API Documentation\",\n version: \"1.0.0\",\n },\n servers: doc.servers ?? [{ url: this.serverProvider.hostname }],\n paths: {},\n components: {},\n };\n\n let hasSecurity = false;\n const excludeTags = doc.excludeTags ?? [];\n const schemas: Record<string, any> = {};\n\n const schema = (source: TSchema) => {\n if (\"title\" in source && typeof source.title === \"string\") {\n schemas[source.title] = copy(source);\n return { $ref: `#/components/schemas/${source.title}` };\n }\n return copy(source);\n };\n\n const copy = (obj: any) => {\n const newValue = JSON.parse(JSON.stringify(obj));\n this.removePrivateFields(newValue, [\n ...(this.options.excludeKeys || []),\n \"~options\",\n ]);\n return newValue;\n };\n\n for (const route of actions) {\n if (!route.options.schema) {\n continue;\n }\n\n const response = this.getResponseSchema(route);\n if (!response) {\n continue;\n }\n\n if (excludeTags.includes(route.group)) {\n continue;\n }\n\n if (route.options.hide) {\n continue;\n }\n\n const operation: OpenApiOperation = {\n operationId: route.name,\n summary: route.options.summary,\n description: route.options.description,\n deprecated: route.options.deprecated || undefined,\n tags: [route.group.replaceAll(\":\", \" / \")],\n responses: {\n [response.status]: {\n description: this.getStatusDescription(response.status),\n content: response.type\n ? {\n [response.type]: {\n schema: schema(response.schema),\n },\n }\n : undefined,\n },\n },\n };\n\n const isSecured = route.middlewares.some((m) => m?.name === \"$secure\");\n\n if (isSecured) {\n operation.security = [{ bearerAuth: [] }];\n operation.responses[\"401\"] = {\n description: \"Unauthorized\",\n };\n hasSecurity = true;\n }\n\n const g = t.raw;\n\n if (\n g.IsObject(route.options.schema.body) ||\n g.IsArray(route.options.schema.body)\n ) {\n if (\n g.IsObject(route.options.schema.body) &&\n this.isBodyMultipart(route.options.schema.body)\n ) {\n operation.requestBody = {\n required: true,\n content: {\n \"multipart/form-data\": {\n schema: schema(route.options.schema.body),\n },\n },\n };\n } else {\n operation.requestBody = {\n required: true,\n content: {\n \"application/json\": {\n schema: schema(route.options.schema.body),\n },\n },\n };\n }\n }\n\n if (g.IsObject(route.options.schema.query)) {\n operation.parameters ??= [];\n const requiredKeys: string[] =\n route.options.schema.query.required ?? [];\n for (const [key, value] of Object.entries(\n route.options.schema.query.properties,\n )) {\n const param: any = {\n name: key,\n in: \"query\",\n required: requiredKeys.includes(key),\n schema: schema(value),\n };\n const example = this.extractExample(value);\n if (example !== undefined) param.example = example;\n operation.parameters.push(param);\n }\n }\n\n if (g.IsObject(route.options.schema.params)) {\n operation.parameters ??= [];\n for (const [key, value] of Object.entries(\n route.options.schema.params.properties,\n )) {\n const description =\n \"description\" in value && typeof value.description === \"string\"\n ? value.description\n : undefined;\n const ref = schema(value);\n delete ref.description;\n const param: any = {\n name: key,\n in: \"path\",\n required: true,\n description,\n schema: ref,\n };\n const example = this.extractExample(value);\n if (example !== undefined) param.example = example;\n operation.parameters.push(param);\n }\n }\n\n const hasValidation =\n operation.requestBody || operation.parameters?.length;\n if (hasValidation) {\n operation.responses[\"400\"] = {\n description: \"Bad Request\",\n };\n }\n\n const url = route.prefix + this.replacePathParams(route.path);\n\n openApi.paths[url] = {\n ...openApi.paths[url],\n [route.method.toLowerCase()]: operation,\n };\n }\n\n if (hasSecurity && openApi.components) {\n openApi.components.securitySchemes = {\n bearerAuth: {\n type: \"http\",\n scheme: \"bearer\",\n bearerFormat: \"JWT\",\n description:\n \"Enter a JWT token or API key. Both are accepted as Bearer tokens.\",\n },\n };\n }\n\n if (openApi.components) openApi.components.schemas = schemas;\n\n return JSON.parse(JSON.stringify(openApi));\n }\n\n public isBodyMultipart(schema: TObject): boolean {\n for (const key in schema.properties) {\n if (isTypeFile(schema.properties[key])) {\n return true;\n }\n }\n return false;\n }\n\n public replacePathParams(url: string): string {\n return url.replace(/:\\w+/g, (match) => {\n const paramName = match.slice(1);\n return `{${paramName}}`;\n });\n }\n\n public getResponseSchema(route: ActionPrimitive<RequestConfigSchema>):\n | {\n type?: string;\n schema?: any;\n status: number;\n }\n | undefined {\n const schema: any = route.options.schema?.response;\n if (!schema) {\n return {\n status: 204,\n };\n }\n\n if (t.schema.isObject(schema) || t.schema.isArray(schema)) {\n return {\n schema,\n status: 200,\n type: \"application/json\",\n };\n }\n\n if (t.schema.isString(schema)) {\n return {\n schema,\n status: 200,\n type: \"text/plain\",\n };\n }\n\n if (\n t.schema.isNumber(schema) ||\n t.schema.isInteger(schema) ||\n t.schema.isBoolean(schema)\n ) {\n return {\n schema,\n status: 200,\n type: \"application/json\",\n };\n }\n\n if (isTypeFile(schema)) {\n return {\n schema,\n status: 200,\n type: \"application/octet-stream\",\n };\n }\n\n // Status-code-keyed map: e.g. { 201: t.object({...}) }\n const status = Object.keys(schema)[0];\n if (status && !Number.isNaN(Number(status))) {\n const inner = schema[status];\n return {\n schema: inner,\n status: Number(status),\n type: this.getContentType(inner),\n };\n }\n }\n\n protected extractExample(schema: any): any {\n if (\"examples\" in schema && Array.isArray(schema.examples)) {\n return schema.examples[0];\n }\n if (\"default\" in schema) {\n return schema.default;\n }\n return undefined;\n }\n\n protected getStatusDescription(status: number): string {\n switch (status) {\n case 200:\n return \"OK\";\n case 201:\n return \"Created\";\n case 204:\n return \"No Content\";\n case 400:\n return \"Bad Request\";\n case 401:\n return \"Unauthorized\";\n case 403:\n return \"Forbidden\";\n case 404:\n return \"Not Found\";\n case 500:\n return \"Internal Server Error\";\n default:\n return \"\";\n }\n }\n\n protected getContentType(schema: any): string | undefined {\n if (!schema) return undefined;\n if (t.schema.isObject(schema) || t.schema.isArray(schema)) {\n return \"application/json\";\n }\n if (t.schema.isString(schema)) return \"text/plain\";\n if (\n t.schema.isNumber(schema) ||\n t.schema.isInteger(schema) ||\n t.schema.isBoolean(schema)\n ) {\n return \"application/json\";\n }\n if (isTypeFile(schema)) return \"application/octet-stream\";\n return \"application/json\";\n }\n\n protected configureSwaggerApi(prefix: string, json: OpenApiDocument): void {\n this.serverRouterProvider.createRoute({\n method: \"GET\",\n path: `${prefix}/json`,\n schema: {\n response: t.json(),\n },\n handler: () => json,\n });\n }\n\n protected async configureSwaggerUi(\n prefix: string,\n options: SwaggerPrimitiveOptions,\n ): Promise<void> {\n const ui = typeof options.ui === \"object\" ? options.ui : {};\n const persistAuth = ui.persistAuthorization !== false;\n const initializer = `\nwindow.onload = function() {\n\twindow.ui = SwaggerUIBundle({\n\t\turl: \"${prefix}/json\",\n\t\tdom_id: '#swagger-ui',\n\t\tdeepLinking: true,\n\t\tpersistAuthorization: ${persistAuth},\n\t\tpresets: [\n\t\t\tSwaggerUIBundle.presets.apis,\n\t\t\tSwaggerUIStandalonePreset\n\t\t],\n\t\tplugins: [\n\t\t\tSwaggerUIBundle.plugins.DownloadUrl\n\t\t],\n\t\tlayout: \"BaseLayout\"\n\t});\n\n document.body.style.backgroundColor = \"#f2f2f2\";\n\n\tconst options = ${JSON.stringify(ui)};\n\n\tif (options.initOAuth) {\n\t\tui.initOAuth(options.initOAuth);\n\t}\n};\n\t\t`.trim();\n\n if (!this.alepha.isServerless()) {\n const dirname = fileURLToPath(import.meta.url);\n\n const root = await this.getAssetPath(\n ui.root,\n // TODO: this is shitty, take time to get the correct path\n join(dirname, \"../../assets/swagger-ui\"),\n join(dirname, \"../../../assets/swagger-ui\"),\n join(dirname, \"../../../../assets/swagger-ui\"),\n join(dirname, \"../../../../../assets/swagger-ui\"),\n );\n\n if (!root) {\n this.log.warn(`Failed to locate Swagger UI assets for path ${prefix}`);\n return;\n }\n\n await this.serverStaticProvider.createStaticServer({\n path: prefix,\n root,\n });\n }\n\n this.serverRouterProvider.createRoute({\n method: \"GET\",\n path: `${prefix}/swagger-initializer.js`,\n handler: ({ reply }) => {\n reply.headers[\"content-type\"] = \"application/javascript; charset=utf-8\";\n return initializer;\n },\n });\n\n this.log.info(\"SwaggerUI OK\", {\n url: `${this.serverProvider.hostname}${prefix}`,\n });\n }\n\n protected async getAssetPath(\n ...paths: (string | undefined)[]\n ): Promise<string | undefined> {\n for (const path of paths) {\n if (!path) continue;\n const exists = await this.fs.exists(path);\n if (exists) {\n return path;\n }\n }\n }\n\n public removePrivateFields<T extends Record<string, any>>(\n obj: T,\n excludeList: string[],\n ): T {\n if (obj === null || typeof obj !== \"object\") return obj;\n\n const visited = new WeakSet();\n\n const traverse = (o: any): void => {\n if (visited.has(o)) return;\n visited.add(o);\n\n if (Array.isArray(o)) {\n for (let i = 0; i < o.length; i++) {\n const item = o[i];\n if (item !== null && typeof item === \"object\") {\n traverse(item);\n }\n }\n } else {\n for (const excludeKey of excludeList) {\n if (excludeKey in o) {\n delete o[excludeKey];\n }\n }\n for (const key in o) {\n const item = o[key];\n if (item !== null && typeof item === \"object\") {\n traverse(item);\n }\n }\n }\n };\n\n traverse(obj);\n return obj;\n }\n}\n","import \"alepha/security\";\nimport { $module } from \"alepha\";\nimport { AlephaServer, type RequestConfigSchema } from \"alepha/server\";\nimport { AlephaServerEtag } from \"alepha/server/etag\";\nimport { AlephaServerStatic } from \"alepha/server/static\";\nimport { $swagger } from \"./primitives/$swagger.ts\";\nimport { ServerSwaggerProvider } from \"./providers/ServerSwaggerProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./primitives/$swagger.ts\";\nexport * from \"./providers/ServerSwaggerProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha/server\" {\n interface ActionPrimitiveOptions<TConfig extends RequestConfigSchema> {\n /**\n * Short description of the route.\n */\n summary?: string;\n\n /**\n * Don't include this action in the Swagger documentation.\n */\n hide?: boolean;\n\n /**\n * Mark this action as deprecated in the documentation.\n */\n deprecated?: boolean;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Automatic API documentation generation.\n *\n * **Features:**\n * - Swagger/OpenAPI configuration\n * - Routes: `GET /swagger/ui`, `GET /swagger.json`\n *\n * @module alepha.server.swagger\n */\nexport const AlephaServerSwagger = $module({\n name: \"alepha.server.swagger\",\n primitives: [$swagger],\n services: [ServerSwaggerProvider],\n register: (alepha) => {\n alepha.with(AlephaServer);\n alepha.with(AlephaServerEtag);\n alepha.with(AlephaServerStatic);\n alepha.with(ServerSwaggerProvider);\n alepha.store.push(\"alepha.build.assets\", \"alepha\");\n },\n});\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { AlephaError, InstantiableClass, KIND, Primitive } from "alepha";
3
- import * as alepha_logger0 from "alepha/logger";
3
+ import * as _$alepha_logger0 from "alepha/logger";
4
4
  import { FileSystemProvider } from "alepha/system";
5
5
 
6
6
  //#region ../../src/sms/providers/SmsProvider.d.ts
@@ -72,15 +72,19 @@ interface LocalSmsProviderOptions {
72
72
  directory?: string;
73
73
  }
74
74
  declare class LocalSmsProvider implements SmsProvider {
75
- protected readonly log: alepha_logger0.Logger;
75
+ protected readonly log: _$alepha_logger0.Logger;
76
76
  protected readonly fs: FileSystemProvider;
77
77
  protected readonly directory: string;
78
78
  constructor(options?: LocalSmsProviderOptions);
79
79
  send(options: SmsSendOptions): Promise<void>;
80
- createSmsText(options: {
80
+ createSmsJson(options: {
81
81
  to: string;
82
82
  message: string;
83
- }): string;
83
+ }): {
84
+ to: string;
85
+ message: string;
86
+ sentAt: string;
87
+ };
84
88
  }
85
89
  //#endregion
86
90
  //#region ../../src/sms/providers/MemorySmsProvider.d.ts
@@ -90,7 +94,7 @@ interface SmsRecord {
90
94
  sentAt: Date;
91
95
  }
92
96
  declare class MemorySmsProvider implements SmsProvider {
93
- protected readonly log: alepha_logger0.Logger;
97
+ protected readonly log: _$alepha_logger0.Logger;
94
98
  records: SmsRecord[];
95
99
  send(options: SmsSendOptions): Promise<void>;
96
100
  /**
@@ -126,7 +130,7 @@ declare module "alepha" {
126
130
  *
127
131
  * @module alepha.sms
128
132
  */
129
- declare const AlephaSms: alepha.Service<alepha.Module>;
133
+ declare const AlephaSms: _$alepha.Service<_$alepha.Module>;
130
134
  //#endregion
131
135
  export { $sms, AlephaSms, LocalSmsProvider, LocalSmsProviderOptions, MemorySmsProvider, SmsError, SmsPrimitive, SmsPrimitiveOptions, SmsProvider, SmsRecord, SmsSendOptions };
132
136
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/sms/providers/SmsProvider.ts","../../src/sms/errors/SmsError.ts","../../src/sms/primitives/$sms.ts","../../src/sms/providers/LocalSmsProvider.ts","../../src/sms/providers/MemorySmsProvider.ts","../../src/sms/index.ts"],"mappings":";;;;;;;;;;;uBAKsB,WAAA;EAAA;;;;;EAAA,SAMJ,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;AAAA;AAAA,KAGrC,cAAA;EACV,EAAA;EACA,OAAA;AAAA;;;cCdW,QAAA,SAAiB,WAAA;cAChB,OAAA,UAAiB,KAAA,GAAQ,KAAA;AAAA;;;cCU1B,IAAA;EAAA,WAAiB,mBAAA,GAAmB,YAAA;EAAA;;UAKhC,mBAAA;EACf,IAAA;EACA,QAAA,GAAW,iBAAA,CAAkB,WAAA;AAAA;;;;;;AFN/B;;;;;;;;ACZA;;;;cCwCa,YAAA,SAAqB,SAAA,CAAU,mBAAA;EAAA,mBACvB,QAAA,EAAQ,WAAA;EAAA,IAEhB,IAAA,CAAA;ED1C0B;;;ECiDxB,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EAAA,UAoBlC,SAAA,CAAA,GAAa,WAAA;AAAA;;;UClER,uBAAA;;;;AHDjB;EGME,SAAA;AAAA;AAAA,cAGW,gBAAA,YAA4B,WAAA;EAAA,mBACpB,GAAA,EADS,cAAA,CACN,MAAA;EAAA,mBACH,EAAA,EAAE,kBAAA;EAAA,mBACF,SAAA;cAEP,OAAA,GAAS,uBAAA;EAIR,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EAsCrC,aAAA,CAAc,OAAA;IAAW,EAAA;IAAY,OAAA;EAAA;AAAA;;;UC1D7B,SAAA;EACf,EAAA;EACA,OAAA;EACA,MAAA,EAAQ,IAAA;AAAA;AAAA,cAGG,iBAAA,YAA6B,WAAA;EAAA,mBACrB,GAAA,EADU,cAAA,CACP,MAAA;EACf,OAAA,EAAS,SAAA;EAEH,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EJF5B;;;EAAA,IIkBL,IAAA,CAAA,GAAQ,SAAA;AAAA;;;;YCZT,KAAA;IACR,aAAA;MACE,EAAA;MACA,QAAA;MACA,SAAA,EAAW,MAAA;MACX,QAAA,EAAU,WAAA;MACV,KAAA;IAAA;IAEF,UAAA;MACE,EAAA;MACA,QAAA;MACA,QAAA,EAAU,WAAA;IAAA;EAAA;AAAA;;;AJ1BhB;;;;;;;;cI2Ca,SAAA,EAAS,MAAA,CAAA,OAAA,CAUpB,MAAA,CAVoB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/sms/providers/SmsProvider.ts","../../src/sms/errors/SmsError.ts","../../src/sms/primitives/$sms.ts","../../src/sms/providers/LocalSmsProvider.ts","../../src/sms/providers/MemorySmsProvider.ts","../../src/sms/index.ts"],"mappings":";;;;;;;;;;;uBAKsB,WAAA;EAAA;;;;;EAAA,SAMJ,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;AAAA;AAAA,KAGrC,cAAA;EACV,EAAA;EACA,OAAA;AAAA;;;cCdW,QAAA,SAAiB,WAAA;cAChB,OAAA,UAAiB,KAAA,GAAQ,KAAA;AAAA;;;cCU1B,IAAA;EAAA,WAAiB,mBAAA,GAAmB,YAAA;EAAA;;UAKhC,mBAAA;EACf,IAAA;EACA,QAAA,GAAW,iBAAA,CAAkB,WAAA;AAAA;;;;;;AFN/B;;;;;;;;ACZA;;;;cCwCa,YAAA,SAAqB,SAAA,CAAU,mBAAA;EAAA,mBACvB,QAAA,EAAQ,WAAA;EAAA,IAEhB,IAAA,CAAA;ED1C0B;;;ECiDxB,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EAAA,UAoBlC,SAAA,CAAA,GAAa,WAAA;AAAA;;;UClER,uBAAA;;;;AHDjB;EGME,SAAA;AAAA;AAAA,cAGW,gBAAA,YAA4B,WAAA;EAAA,mBACpB,GAAA,EADS,gBAAA,CACN,MAAA;EAAA,mBACH,EAAA,EAAE,kBAAA;EAAA,mBACF,SAAA;cAEP,OAAA,GAAS,uBAAA;EAIR,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EA+BrC,aAAA,CAAc,OAAA;IAAW,EAAA;IAAY,OAAA;EAAA;IAC1C,EAAA;IACA,OAAA;IACA,MAAA;EAAA;AAAA;;;UCtDa,SAAA;EACf,EAAA;EACA,OAAA;EACA,MAAA,EAAQ,IAAA;AAAA;AAAA,cAGG,iBAAA,YAA6B,WAAA;EAAA,mBACrB,GAAA,EADU,gBAAA,CACP,MAAA;EACf,OAAA,EAAS,SAAA;EAEH,IAAA,CAAK,OAAA,EAAS,cAAA,GAAiB,OAAA;EJF5B;;;EAAA,IIkBL,IAAA,CAAA,GAAQ,SAAA;AAAA;;;;YCZT,KAAA;IACR,aAAA;MACE,EAAA;MACA,QAAA;MACA,SAAA,EAAW,MAAA;MACX,QAAA,EAAU,WAAA;MACV,KAAA;IAAA;IAEF,UAAA;MACE,EAAA;MACA,QAAA;MACA,QAAA,EAAU,WAAA;IAAA;EAAA;AAAA;;;AJ1BhB;;;;;;;;cI2Ca,SAAA,EAAS,QAAA,CAAA,OAAA,CAUpB,QAAA,CAVoB,MAAA"}