alepha 0.18.2 → 0.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/assets/devtools-ui/200.html +2 -2
  2. package/assets/devtools-ui/200.html.br +0 -0
  3. package/assets/devtools-ui/404.html +2 -2
  4. package/assets/devtools-ui/404.html.br +0 -0
  5. package/assets/devtools-ui/{asset.BfSBZ5Dd.css → asset.hG_f8HuK.css} +1 -1
  6. package/assets/devtools-ui/asset.hG_f8HuK.css.br +0 -0
  7. package/assets/devtools-ui/chunk.B3au4Lhg.js +1 -0
  8. package/assets/devtools-ui/chunk.B3au4Lhg.js.br +0 -0
  9. package/assets/devtools-ui/chunk.BLOrlnMB.js +1 -0
  10. package/assets/devtools-ui/chunk.BLOrlnMB.js.br +0 -0
  11. package/assets/devtools-ui/chunk.BLR01ljW.js +1 -0
  12. package/assets/devtools-ui/chunk.BLR01ljW.js.br +0 -0
  13. package/assets/devtools-ui/chunk.BTXaIUlA.js +1 -0
  14. package/assets/devtools-ui/chunk.BTXaIUlA.js.br +0 -0
  15. package/assets/devtools-ui/{chunk.lJL-lgnW.js → chunk.BhJaxmm8.js} +1 -1
  16. package/assets/devtools-ui/chunk.BhJaxmm8.js.br +0 -0
  17. package/assets/devtools-ui/chunk.BtoNxFuL.js +1 -0
  18. package/assets/devtools-ui/chunk.BtoNxFuL.js.br +0 -0
  19. package/assets/devtools-ui/chunk.C8YUV2Wd.js +1 -0
  20. package/assets/devtools-ui/chunk.C8YUV2Wd.js.br +0 -0
  21. package/assets/devtools-ui/{chunk.M6wyKO_3.js → chunk.CBbIgDzE.js} +2 -2
  22. package/assets/devtools-ui/chunk.CBbIgDzE.js.br +0 -0
  23. package/assets/devtools-ui/chunk.CFqIniwA.js +1 -0
  24. package/assets/devtools-ui/chunk.CFqIniwA.js.br +0 -0
  25. package/assets/devtools-ui/chunk.CLFF7f7-.js +1 -0
  26. package/assets/devtools-ui/chunk.CLFF7f7-.js.br +0 -0
  27. package/assets/devtools-ui/chunk.CRsBbA10.js +1 -0
  28. package/assets/devtools-ui/chunk.CRsBbA10.js.br +0 -0
  29. package/assets/devtools-ui/{chunk.DbEH1oOB.js → chunk.CZPo6v95.js} +1 -1
  30. package/assets/devtools-ui/chunk.CZPo6v95.js.br +0 -0
  31. package/assets/devtools-ui/chunk.D0fWgNos.js +1 -0
  32. package/assets/devtools-ui/chunk.D0fWgNos.js.br +1 -0
  33. package/assets/devtools-ui/chunk.D7-0ziQ6.js +1 -0
  34. package/assets/devtools-ui/chunk.D7-0ziQ6.js.br +0 -0
  35. package/assets/devtools-ui/chunk.DAewe0vm.js +1 -0
  36. package/assets/devtools-ui/chunk.DAewe0vm.js.br +0 -0
  37. package/assets/devtools-ui/chunk.DJRQEYqK.js +1 -0
  38. package/assets/devtools-ui/chunk.DJRQEYqK.js.br +0 -0
  39. package/assets/devtools-ui/{chunk.CZl6J9DF.js → chunk.DMAxv14p.js} +1 -1
  40. package/assets/devtools-ui/chunk.DMAxv14p.js.br +0 -0
  41. package/assets/devtools-ui/{chunk.BT2IiBkZ.js → chunk.DMImnNjU.js} +1 -1
  42. package/assets/devtools-ui/chunk.DMImnNjU.js.br +0 -0
  43. package/assets/devtools-ui/chunk.DeeQsidk.js +9 -0
  44. package/assets/devtools-ui/chunk.DeeQsidk.js.br +0 -0
  45. package/assets/devtools-ui/chunk.DqEwn9Vj.js +7 -0
  46. package/assets/devtools-ui/chunk.DqEwn9Vj.js.br +0 -0
  47. package/assets/devtools-ui/chunk.Dt8OsQey.js +1 -0
  48. package/assets/devtools-ui/chunk.Dt8OsQey.js.br +0 -0
  49. package/assets/devtools-ui/{chunk.B9pX3zit.js → chunk.Dtp8oa_f.js} +1 -1
  50. package/assets/devtools-ui/chunk.Dtp8oa_f.js.br +0 -0
  51. package/assets/devtools-ui/chunk.Dx3JzAYM.js +1 -0
  52. package/assets/devtools-ui/chunk.Dx3JzAYM.js.br +0 -0
  53. package/assets/devtools-ui/chunk.GCOj1-5E.js +1 -0
  54. package/assets/devtools-ui/chunk.GCOj1-5E.js.br +0 -0
  55. package/assets/devtools-ui/chunk.IC1LD8BH.js +1 -0
  56. package/assets/devtools-ui/chunk.IC1LD8BH.js.br +0 -0
  57. package/assets/devtools-ui/chunk.IwuB_TqW.js +1 -0
  58. package/assets/devtools-ui/chunk.IwuB_TqW.js.br +0 -0
  59. package/assets/devtools-ui/chunk.Qqapj2zq.js +1 -0
  60. package/assets/devtools-ui/chunk.Qqapj2zq.js.br +0 -0
  61. package/assets/devtools-ui/{chunk.C79YouPp.js → chunk.TKKKndOy.js} +1 -1
  62. package/assets/devtools-ui/chunk.TKKKndOy.js.br +0 -0
  63. package/assets/devtools-ui/chunk.YHTVhFQT.js +1 -0
  64. package/assets/devtools-ui/chunk.YHTVhFQT.js.br +0 -0
  65. package/assets/devtools-ui/chunk.fnod6uEi.js +1 -0
  66. package/assets/devtools-ui/chunk.fnod6uEi.js.br +0 -0
  67. package/assets/devtools-ui/chunk.mOCRmXjo.js +1 -0
  68. package/assets/devtools-ui/chunk.mOCRmXjo.js.br +0 -0
  69. package/assets/devtools-ui/chunk.qZTNEAK0.js +1 -0
  70. package/assets/devtools-ui/chunk.qZTNEAK0.js.br +0 -0
  71. package/assets/devtools-ui/chunk.rc9m0y4-.js +1 -0
  72. package/assets/devtools-ui/chunk.rc9m0y4-.js.br +0 -0
  73. package/assets/devtools-ui/entry.Cxc5QLCU.js +80 -0
  74. package/assets/devtools-ui/entry.Cxc5QLCU.js.br +0 -0
  75. package/assets/devtools-ui/index.html +2 -2
  76. package/assets/devtools-ui/index.html.br +0 -0
  77. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  78. package/assets/swagger-ui/swagger-ui.css +1 -1
  79. package/dist/api/audits/index.d.ts +61 -5
  80. package/dist/api/audits/index.d.ts.map +1 -1
  81. package/dist/api/files/index.d.ts +61 -5
  82. package/dist/api/files/index.d.ts.map +1 -1
  83. package/dist/api/jobs/index.d.ts +61 -5
  84. package/dist/api/jobs/index.d.ts.map +1 -1
  85. package/dist/api/jobs/index.js +4 -2
  86. package/dist/api/jobs/index.js.map +1 -1
  87. package/dist/api/keys/index.d.ts +5 -5
  88. package/dist/api/notifications/index.browser.js +44 -1
  89. package/dist/api/notifications/index.browser.js.map +1 -1
  90. package/dist/api/notifications/index.d.ts +187 -2
  91. package/dist/api/notifications/index.d.ts.map +1 -1
  92. package/dist/api/notifications/index.js +143 -8
  93. package/dist/api/notifications/index.js.map +1 -1
  94. package/dist/api/parameters/index.d.ts +61 -5
  95. package/dist/api/parameters/index.d.ts.map +1 -1
  96. package/dist/api/users/index.d.ts +330 -93
  97. package/dist/api/users/index.d.ts.map +1 -1
  98. package/dist/api/users/index.js +27 -36
  99. package/dist/api/users/index.js.map +1 -1
  100. package/dist/cli/config/index.d.ts +46 -0
  101. package/dist/cli/config/index.d.ts.map +1 -0
  102. package/dist/cli/config/index.js +20 -0
  103. package/dist/cli/config/index.js.map +1 -0
  104. package/dist/cli/core/index.d.ts +69 -66
  105. package/dist/cli/core/index.d.ts.map +1 -1
  106. package/dist/cli/core/index.js +329 -196
  107. package/dist/cli/core/index.js.map +1 -1
  108. package/dist/cli/platform/index.d.ts +302 -63
  109. package/dist/cli/platform/index.d.ts.map +1 -1
  110. package/dist/cli/platform/index.js +455 -25
  111. package/dist/cli/platform/index.js.map +1 -1
  112. package/dist/core/index.browser.js +125 -87
  113. package/dist/core/index.browser.js.map +1 -1
  114. package/dist/core/index.d.ts +62 -53
  115. package/dist/core/index.d.ts.map +1 -1
  116. package/dist/core/index.js +125 -87
  117. package/dist/core/index.js.map +1 -1
  118. package/dist/core/index.native.js +125 -87
  119. package/dist/core/index.native.js.map +1 -1
  120. package/dist/core/index.workerd.js +125 -87
  121. package/dist/core/index.workerd.js.map +1 -1
  122. package/dist/crypto/index.d.ts +18 -1
  123. package/dist/crypto/index.d.ts.map +1 -1
  124. package/dist/crypto/index.js +29 -3
  125. package/dist/crypto/index.js.map +1 -1
  126. package/dist/devtools/index.js +3 -12
  127. package/dist/devtools/index.js.map +1 -1
  128. package/dist/logger/index.d.ts +10 -1
  129. package/dist/logger/index.d.ts.map +1 -1
  130. package/dist/logger/index.js +19 -9
  131. package/dist/logger/index.js.map +1 -1
  132. package/dist/orm/core/index.browser.js +57 -1
  133. package/dist/orm/core/index.browser.js.map +1 -1
  134. package/dist/orm/core/index.bun.js +378 -19
  135. package/dist/orm/core/index.bun.js.map +1 -1
  136. package/dist/orm/core/index.d.ts +328 -9
  137. package/dist/orm/core/index.d.ts.map +1 -1
  138. package/dist/orm/core/index.js +384 -21
  139. package/dist/orm/core/index.js.map +1 -1
  140. package/dist/orm/postgres/index.bun.js +49 -17
  141. package/dist/orm/postgres/index.bun.js.map +1 -1
  142. package/dist/orm/postgres/index.d.ts +47 -21
  143. package/dist/orm/postgres/index.d.ts.map +1 -1
  144. package/dist/orm/postgres/index.js +52 -17
  145. package/dist/orm/postgres/index.js.map +1 -1
  146. package/dist/react/core/index.d.ts +1 -1
  147. package/dist/react/core/index.d.ts.map +1 -1
  148. package/dist/react/core/index.js +6 -1
  149. package/dist/react/core/index.js.map +1 -1
  150. package/dist/react/form/index.d.ts +28 -18
  151. package/dist/react/form/index.d.ts.map +1 -1
  152. package/dist/react/form/index.js +92 -56
  153. package/dist/react/form/index.js.map +1 -1
  154. package/dist/react/router/index.browser.js +448 -116
  155. package/dist/react/router/index.browser.js.map +1 -1
  156. package/dist/react/router/index.d.ts +102 -40
  157. package/dist/react/router/index.d.ts.map +1 -1
  158. package/dist/react/router/index.js +453 -92
  159. package/dist/react/router/index.js.map +1 -1
  160. package/dist/security/index.d.ts +3 -11
  161. package/dist/security/index.d.ts.map +1 -1
  162. package/dist/security/index.js +6 -11
  163. package/dist/security/index.js.map +1 -1
  164. package/dist/server/auth/index.d.ts +22 -24
  165. package/dist/server/auth/index.d.ts.map +1 -1
  166. package/dist/server/auth/index.js +102 -82
  167. package/dist/server/auth/index.js.map +1 -1
  168. package/dist/server/cookies/index.d.ts +7 -4
  169. package/dist/server/cookies/index.d.ts.map +1 -1
  170. package/dist/server/cookies/index.js +13 -12
  171. package/dist/server/cookies/index.js.map +1 -1
  172. package/dist/server/core/index.d.ts +288 -4
  173. package/dist/server/core/index.d.ts.map +1 -1
  174. package/dist/server/core/index.js +375 -2
  175. package/dist/server/core/index.js.map +1 -1
  176. package/dist/server/links/index.browser.js +10 -71
  177. package/dist/server/links/index.browser.js.map +1 -1
  178. package/dist/server/links/index.d.ts +32 -49
  179. package/dist/server/links/index.d.ts.map +1 -1
  180. package/dist/server/links/index.js +73 -100
  181. package/dist/server/links/index.js.map +1 -1
  182. package/dist/system/index.browser.js +221 -2
  183. package/dist/system/index.browser.js.map +1 -1
  184. package/dist/system/index.d.ts +63 -1
  185. package/dist/system/index.d.ts.map +1 -1
  186. package/dist/system/index.js +221 -1
  187. package/dist/system/index.js.map +1 -1
  188. package/dist/system/index.workerd.js +224 -4
  189. package/dist/system/index.workerd.js.map +1 -1
  190. package/package.json +10 -5
  191. package/src/api/jobs/providers/JobProvider.ts +6 -3
  192. package/src/api/notifications/controllers/AdminNotificationController.ts +83 -0
  193. package/src/api/notifications/index.browser.ts +3 -0
  194. package/src/api/notifications/index.ts +14 -2
  195. package/src/api/notifications/jobs/NotificationJobs.ts +11 -2
  196. package/src/api/notifications/schemas/notificationDetailResourceSchema.ts +20 -0
  197. package/src/api/notifications/schemas/notificationQuerySchema.ts +19 -0
  198. package/src/api/notifications/schemas/notificationResourceSchema.ts +18 -0
  199. package/src/api/notifications/services/NotificationSenderService.ts +15 -2
  200. package/src/api/users/atoms/realmAuthSettingsAtom.ts +28 -32
  201. package/src/api/users/buckets/UserBuckets.ts +1 -1
  202. package/src/api/users/jobs/UserJobs.ts +1 -1
  203. package/src/api/users/primitives/$realm.ts +8 -49
  204. package/src/api/users/providers/RealmProvider.ts +2 -3
  205. package/src/api/users/services/RegistrationService.spec.ts +7 -7
  206. package/src/api/users/services/RegistrationService.ts +3 -3
  207. package/src/api/users/services/SessionService.spec.ts +4 -4
  208. package/src/api/users/services/SessionService.ts +3 -3
  209. package/src/cli/{core → config}/defineConfig.ts +14 -20
  210. package/src/cli/config/index.ts +1 -0
  211. package/src/cli/core/commands/db.ts +65 -1
  212. package/src/cli/core/commands/dev.ts +1 -0
  213. package/src/cli/core/commands/init.ts +2 -192
  214. package/src/cli/core/index.ts +34 -11
  215. package/src/cli/core/providers/ViteDevServerProvider.ts +52 -13
  216. package/src/cli/core/services/PackageManagerUtils.ts +43 -21
  217. package/src/cli/core/services/ProjectScaffolder.ts +214 -2
  218. package/src/cli/core/services/ViteUtils.ts +57 -0
  219. package/src/cli/core/tasks/BuildClientTask.ts +7 -2
  220. package/src/cli/core/tasks/BuildCloudflareTask.ts +4 -12
  221. package/src/cli/core/tasks/BuildServerTask.ts +2 -0
  222. package/src/cli/core/tasks/BuildVercelTask.ts +165 -168
  223. package/src/cli/core/templates/alephaConfigTs.ts +1 -1
  224. package/src/cli/core/templates/apiAppSecurityTs.ts +5 -8
  225. package/src/cli/core/templates/tsconfigJson.ts +6 -1
  226. package/src/cli/platform/adapters/CloudflareAdapter.spec.ts +1 -1
  227. package/src/cli/platform/adapters/CloudflareAdapter.ts +30 -29
  228. package/src/cli/platform/atoms/platformOptions.ts +21 -0
  229. package/src/cli/platform/commands/SecretsCommand.spec.ts +298 -0
  230. package/src/cli/platform/commands/SecretsCommand.ts +283 -0
  231. package/src/cli/platform/commands/platform.ts +12 -0
  232. package/src/cli/platform/index.ts +14 -28
  233. package/src/cli/platform/providers/GitHubSecretStore.spec.ts +153 -0
  234. package/src/cli/platform/providers/GitHubSecretStore.ts +112 -0
  235. package/src/cli/platform/providers/MemorySecretStore.ts +114 -0
  236. package/src/cli/platform/providers/SecretStoreProvider.ts +39 -0
  237. package/src/cli/platform/schemas/cloudflare.ts +2 -0
  238. package/src/cli/platform/services/CloudflareApi.ts +5 -2
  239. package/src/cli/platform/services/DockerComposeGenerator.spec.ts +115 -0
  240. package/src/cli/platform/services/DockerComposeGenerator.ts +46 -1
  241. package/src/cli/platform/services/SecretFilterService.spec.ts +111 -0
  242. package/src/cli/platform/services/SecretFilterService.ts +54 -0
  243. package/src/core/Alepha.ts +94 -25
  244. package/src/core/__tests__/Alepha-parseEnv.spec.ts +20 -0
  245. package/src/core/primitives/$memoize.ts +38 -26
  246. package/src/core/providers/AlsProvider.ts +2 -0
  247. package/src/core/providers/EventManager.ts +4 -0
  248. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +1 -4
  249. package/src/core/providers/KeylessJsonSchemaCodec.ts +19 -125
  250. package/src/core/providers/SchemaValidator.spec.ts +36 -0
  251. package/src/core/providers/SchemaValidator.ts +9 -0
  252. package/src/crypto/index.ts +6 -1
  253. package/src/crypto/providers/SecretProvider.ts +36 -0
  254. package/src/devtools/providers/DevToolsProvider.ts +3 -12
  255. package/src/logger/index.ts +33 -6
  256. package/src/logger/providers/PrettyFormatterProvider.ts +5 -3
  257. package/src/orm/__tests__/orm-next-tests.ts +492 -0
  258. package/src/orm/__tests__/orm-next.spec.ts +140 -0
  259. package/src/orm/core/constants/PG_SYMBOLS.ts +17 -0
  260. package/src/orm/core/index.bun.ts +3 -6
  261. package/src/orm/core/index.shared-server.ts +2 -0
  262. package/src/orm/core/index.shared.ts +2 -0
  263. package/src/orm/core/index.ts +5 -7
  264. package/src/orm/core/interfaces/AggregateQuery.ts +103 -0
  265. package/src/orm/core/interfaces/PgQueryWhere.ts +7 -0
  266. package/src/orm/core/primitives/$entity.ts +8 -0
  267. package/src/orm/core/primitives/$repository.ts +6 -3
  268. package/src/orm/core/primitives/$view.ts +88 -0
  269. package/src/orm/core/providers/DbCacheProvider.ts +66 -0
  270. package/src/orm/core/providers/DrizzleKitProvider.ts +42 -0
  271. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -3
  272. package/src/orm/core/providers/drivers/CloudflareD1Provider.ts +12 -0
  273. package/src/orm/core/providers/drivers/DatabaseProvider.ts +39 -0
  274. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +2 -3
  275. package/src/orm/core/schemas/databaseEnvSchema.ts +31 -0
  276. package/src/orm/core/schemas/insertSchema.ts +13 -3
  277. package/src/orm/core/schemas/updateSchema.ts +14 -3
  278. package/src/orm/core/services/ModelBuilder.ts +26 -14
  279. package/src/orm/core/services/QueryManager.ts +13 -0
  280. package/src/orm/core/services/Repository.ts +307 -5
  281. package/src/orm/core/services/SqliteModelBuilder.ts +38 -0
  282. package/src/orm/postgres/index.bun.ts +4 -7
  283. package/src/orm/postgres/index.ts +4 -7
  284. package/src/orm/postgres/providers/BunPostgresProvider.ts +12 -2
  285. package/src/orm/postgres/providers/NodePostgresProvider.ts +7 -0
  286. package/src/orm/postgres/providers/PglitePostgresProvider.ts +10 -17
  287. package/src/orm/postgres/providers/PostgresProvider.ts +7 -36
  288. package/src/orm/postgres/schemas/postgresEnvSchema.ts +32 -0
  289. package/src/orm/postgres/services/PostgresModelBuilder.ts +40 -0
  290. package/src/react/core/components/ErrorBoundary.tsx +5 -2
  291. package/src/react/form/hooks/useFieldValue.ts +34 -0
  292. package/src/react/form/hooks/useForm.browser.spec.tsx +94 -9
  293. package/src/react/form/hooks/useForm.ts +14 -2
  294. package/src/react/form/hooks/useFormState.ts +10 -10
  295. package/src/react/form/hooks/useFormValues.ts +29 -0
  296. package/src/react/form/index.ts +3 -1
  297. package/src/react/form/services/FormModel.ts +53 -122
  298. package/src/react/router/components/ErrorViewer.tsx +333 -34
  299. package/src/react/router/components/NestedView.tsx +10 -3
  300. package/src/react/router/primitives/$page.browser.spec.tsx +34 -0
  301. package/src/react/router/primitives/$page.spec.tsx +20 -0
  302. package/src/react/router/primitives/$page.ts +24 -0
  303. package/src/react/router/providers/ReactBrowserRouterProvider.ts +14 -2
  304. package/src/react/router/providers/ReactPageProvider.ts +156 -73
  305. package/src/react/router/providers/ReactServerProvider.ts +40 -2
  306. package/src/react/router/providers/ReactServerTemplateProvider.ts +13 -1
  307. package/src/security/providers/SecurityProvider.ts +5 -27
  308. package/src/server/auth/primitives/$auth.ts +52 -19
  309. package/src/server/auth/providers/ServerAuthProvider.ts +145 -139
  310. package/src/server/cookies/providers/ServerCookiesProvider.ts +12 -24
  311. package/src/server/core/index.ts +3 -1
  312. package/src/server/core/primitives/$sse.spec.ts +315 -0
  313. package/src/server/core/primitives/$sse.ts +715 -0
  314. package/src/server/links/index.browser.ts +1 -3
  315. package/src/server/links/index.ts +0 -3
  316. package/src/server/links/providers/LinkProvider.spec.ts +12 -21
  317. package/src/server/links/providers/LinkProvider.ts +20 -52
  318. package/src/server/links/providers/ServerLinksProvider.spec.ts +106 -0
  319. package/src/server/links/providers/ServerLinksProvider.ts +113 -73
  320. package/src/server/links/schemas/apiLinksResponseSchema.ts +4 -21
  321. package/src/server/links/services/BatchCollector.ts +5 -3
  322. package/src/system/index.browser.ts +1 -0
  323. package/src/system/index.ts +3 -0
  324. package/src/system/index.workerd.ts +39 -1
  325. package/src/system/providers/WorkerdFileSystemProvider.ts +365 -0
  326. package/assets/devtools-ui/asset.BfSBZ5Dd.css.br +0 -0
  327. package/assets/devtools-ui/chunk.2NYaoqWt.js +0 -1
  328. package/assets/devtools-ui/chunk.2NYaoqWt.js.br +0 -0
  329. package/assets/devtools-ui/chunk.B052Z_xQ.js +0 -1
  330. package/assets/devtools-ui/chunk.B052Z_xQ.js.br +0 -0
  331. package/assets/devtools-ui/chunk.B4kVY90C.js +0 -1
  332. package/assets/devtools-ui/chunk.B4kVY90C.js.br +0 -0
  333. package/assets/devtools-ui/chunk.B7QJXctB.js +0 -1
  334. package/assets/devtools-ui/chunk.B7QJXctB.js.br +0 -0
  335. package/assets/devtools-ui/chunk.B9pX3zit.js.br +0 -0
  336. package/assets/devtools-ui/chunk.BKF9JxIo.js +0 -1
  337. package/assets/devtools-ui/chunk.BKF9JxIo.js.br +0 -0
  338. package/assets/devtools-ui/chunk.BOHgdTP-.js +0 -1
  339. package/assets/devtools-ui/chunk.BOHgdTP-.js.br +0 -0
  340. package/assets/devtools-ui/chunk.BOVFxkYC.js +0 -1
  341. package/assets/devtools-ui/chunk.BOVFxkYC.js.br +0 -0
  342. package/assets/devtools-ui/chunk.BR842zj5.js +0 -1
  343. package/assets/devtools-ui/chunk.BR842zj5.js.br +0 -0
  344. package/assets/devtools-ui/chunk.BT2IiBkZ.js.br +0 -0
  345. package/assets/devtools-ui/chunk.C79YouPp.js.br +0 -0
  346. package/assets/devtools-ui/chunk.C8mlBrjW.js +0 -9
  347. package/assets/devtools-ui/chunk.C8mlBrjW.js.br +0 -0
  348. package/assets/devtools-ui/chunk.CK0ow3AZ.js +0 -1
  349. package/assets/devtools-ui/chunk.CK0ow3AZ.js.br +0 -0
  350. package/assets/devtools-ui/chunk.CZl6J9DF.js.br +0 -0
  351. package/assets/devtools-ui/chunk.CdNr0YzS.js +0 -1
  352. package/assets/devtools-ui/chunk.CdNr0YzS.js.br +0 -0
  353. package/assets/devtools-ui/chunk.Ce6_6iIF.js +0 -1
  354. package/assets/devtools-ui/chunk.Ce6_6iIF.js.br +0 -0
  355. package/assets/devtools-ui/chunk.CpyDMr6O.js +0 -1
  356. package/assets/devtools-ui/chunk.CpyDMr6O.js.br +0 -0
  357. package/assets/devtools-ui/chunk.CyPmvPnY.js +0 -1
  358. package/assets/devtools-ui/chunk.CyPmvPnY.js.br +0 -0
  359. package/assets/devtools-ui/chunk.DTI_geWu.js +0 -1
  360. package/assets/devtools-ui/chunk.DTI_geWu.js.br +0 -0
  361. package/assets/devtools-ui/chunk.DbEH1oOB.js.br +0 -0
  362. package/assets/devtools-ui/chunk.Ddeqj5gv.js +0 -1
  363. package/assets/devtools-ui/chunk.Ddeqj5gv.js.br +0 -0
  364. package/assets/devtools-ui/chunk.DpRnB4vJ.js +0 -1
  365. package/assets/devtools-ui/chunk.DpRnB4vJ.js.br +0 -0
  366. package/assets/devtools-ui/chunk.DxPGTlsg.js +0 -1
  367. package/assets/devtools-ui/chunk.DxPGTlsg.js.br +0 -0
  368. package/assets/devtools-ui/chunk.G7_MMBJS.js +0 -1
  369. package/assets/devtools-ui/chunk.G7_MMBJS.js.br +0 -0
  370. package/assets/devtools-ui/chunk.M6wyKO_3.js.br +0 -0
  371. package/assets/devtools-ui/chunk.OUxNGmQ6.js +0 -1
  372. package/assets/devtools-ui/chunk.OUxNGmQ6.js.br +0 -0
  373. package/assets/devtools-ui/chunk.T1kle-fF.js +0 -1
  374. package/assets/devtools-ui/chunk.T1kle-fF.js.br +0 -0
  375. package/assets/devtools-ui/chunk.WjpsbQAv.js +0 -1
  376. package/assets/devtools-ui/chunk.WjpsbQAv.js.br +0 -0
  377. package/assets/devtools-ui/chunk.c6YgVx86.js +0 -1
  378. package/assets/devtools-ui/chunk.c6YgVx86.js.br +0 -0
  379. package/assets/devtools-ui/chunk.dwU3E_MU.js +0 -1
  380. package/assets/devtools-ui/chunk.dwU3E_MU.js.br +0 -0
  381. package/assets/devtools-ui/chunk.lJL-lgnW.js.br +0 -0
  382. package/assets/devtools-ui/chunk.lPWRmvA-.js +0 -7
  383. package/assets/devtools-ui/chunk.lPWRmvA-.js.br +0 -0
  384. package/assets/devtools-ui/chunk.p3HJvugM.js +0 -1
  385. package/assets/devtools-ui/chunk.p3HJvugM.js.br +0 -0
  386. package/assets/devtools-ui/chunk.r_Xoa_CI.js +0 -1
  387. package/assets/devtools-ui/chunk.r_Xoa_CI.js.br +0 -0
  388. package/assets/devtools-ui/chunk.sRNuTYXb.js +0 -1
  389. package/assets/devtools-ui/chunk.sRNuTYXb.js.br +0 -0
  390. package/assets/devtools-ui/chunk.tUjcyX5C.js +0 -1
  391. package/assets/devtools-ui/chunk.tUjcyX5C.js.br +0 -0
  392. package/assets/devtools-ui/chunk.thjBxvCA.js +0 -1
  393. package/assets/devtools-ui/chunk.thjBxvCA.js.br +0 -0
  394. package/assets/devtools-ui/entry.GYhBVRpC.js +0 -78
  395. package/assets/devtools-ui/entry.GYhBVRpC.js.br +0 -0
  396. package/src/server/links/services/DefinitionsPool.spec.ts +0 -86
  397. package/src/server/links/services/DefinitionsPool.ts +0 -43
@@ -921,11 +921,6 @@ const t = new TypeProvider();
921
921
 
922
922
  //#endregion
923
923
  //#region ../../src/core/providers/KeylessJsonSchemaCodec.ts
924
- const UNSAFE_KEYS = new Set([
925
- "__proto__",
926
- "constructor",
927
- "prototype"
928
- ]);
929
924
  /**
930
925
  * KeylessJsonSchemaCodec provides schema-driven JSON encoding without keys.
931
926
  *
@@ -938,9 +933,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
938
933
  textDecoder = new TextDecoder();
939
934
  varCounter = 0;
940
935
  useFunctionCompilation = true;
941
- maxArrayLength = 1e4;
942
- maxStringLength = 1e6;
943
- maxDepth = 50;
944
936
  /**
945
937
  * Configure codec options.
946
938
  */
@@ -949,9 +941,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
949
941
  this.useFunctionCompilation = options.useFunctionCompilation;
950
942
  this.cache.clear();
951
943
  }
952
- if (options.maxArrayLength !== void 0) this.maxArrayLength = options.maxArrayLength;
953
- if (options.maxStringLength !== void 0) this.maxStringLength = options.maxStringLength;
954
- if (options.maxDepth !== void 0) this.maxDepth = options.maxDepth;
955
944
  return this;
956
945
  }
957
946
  /**
@@ -999,37 +988,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
999
988
  }
1000
989
  }
1001
990
  /**
1002
- * Validate schema keys for prototype pollution.
1003
- * Uses a visited set to avoid infinite recursion on recursive schemas.
1004
- */
1005
- validateSchemaKeys(schema, depth = 0, visited = /* @__PURE__ */ new Set()) {
1006
- if (visited.has(schema)) return;
1007
- visited.add(schema);
1008
- if (depth > this.maxDepth) throw new AlephaError(`Schema depth exceeds maximum allowed (${this.maxDepth})`);
1009
- if (t.schema.isObject(schema)) {
1010
- const props = schema.properties;
1011
- for (const key of Object.keys(props)) {
1012
- if (UNSAFE_KEYS.has(key)) throw new AlephaError(`Unsafe schema key "${key}" detected. This key is blocked to prevent prototype pollution.`);
1013
- this.validateSchemaKeys(props[key], depth + 1, visited);
1014
- }
1015
- } else if (t.schema.isArray(schema)) {
1016
- const arrSchema = schema;
1017
- this.validateSchemaKeys(arrSchema.items, depth + 1, visited);
1018
- } else if (t.schema.isUnion(schema) || t.schema.isOptional(schema)) this.validateSchemaKeys(this.unwrap(schema), depth, visited);
1019
- }
1020
- /**
1021
- * Validate array length.
1022
- */
1023
- validateArrayLength(arr) {
1024
- if (arr.length > this.maxArrayLength) throw new AlephaError(`Array length (${arr.length}) exceeds maximum allowed (${this.maxArrayLength})`);
1025
- }
1026
- /**
1027
- * Validate string length.
1028
- */
1029
- validateStringLength(str) {
1030
- if (str.length > this.maxStringLength) throw new AlephaError(`String length (${str.length}) exceeds maximum allowed (${this.maxStringLength})`);
1031
- }
1032
- /**
1033
991
  * Get a compiled codec for the given schema.
1034
992
  * Codecs are cached for reuse.
1035
993
  */
@@ -1170,9 +1128,10 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1170
1128
  if (t.schema.isObject(schema)) {
1171
1129
  const parts = [];
1172
1130
  for (const { key, isOpt, isNullable, inner } of this.getObjectFields(schema)) {
1173
- const innerEnc = this.genEnc(inner, `${ve}.${key}`);
1174
- if (isOpt) parts.push(`${ve}.${key}!==undefined?${innerEnc}:null`);
1175
- else if (isNullable) parts.push(`${ve}.${key}!==null?${innerEnc}:null`);
1131
+ const access = `${ve}[${JSON.stringify(key)}]`;
1132
+ const innerEnc = this.genEnc(inner, access);
1133
+ if (isOpt) parts.push(`${access}!==undefined?${innerEnc}:null`);
1134
+ else if (isNullable) parts.push(`${access}!==null?${innerEnc}:null`);
1176
1135
  else parts.push(innerEnc);
1177
1136
  }
1178
1137
  return `[${parts.join(",")}]`;
@@ -1210,25 +1169,28 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1210
1169
  const fields = this.getObjectFields(schema);
1211
1170
  if (fields.every(({ isOpt, isNullable, inner }) => !isOpt && !isNullable && !t.schema.isObject(inner) && !t.schema.isArray(inner))) return {
1212
1171
  code: "",
1213
- result: `{${fields.map(({ key }) => `${key}:a[i++]`).join(",")}}`
1172
+ result: `{${fields.map(({ key }) => `${JSON.stringify(key)}:a[i++]`).join(",")}}`
1214
1173
  };
1215
1174
  let code = `const ${v}={};`;
1216
- for (const { key, isOpt, isNullable, inner } of fields) if (isOpt) {
1217
- const nested = this.genDecFromValue(inner, "t");
1218
- code += `{const t=a[i++];if(t!==null){${v}.${key}=${nested};}}`;
1219
- } else if (isNullable) {
1220
- const nested = this.genDecFromValue(inner, "t");
1221
- code += `{const t=a[i++];if(t===null){${v}.${key}=null;}else{${v}.${key}=${nested};}}`;
1222
- } else if (t.schema.isObject(inner)) {
1223
- const nested = this.genDecFromValue(inner, "a[i++]");
1224
- code += `${v}.${key}=${nested};`;
1225
- } else if (t.schema.isArray(inner)) {
1226
- const arrSchema = inner;
1227
- if (t.schema.isObject(arrSchema.items)) {
1228
- const itemTransform = this.genDecFromValue(arrSchema.items, "e");
1229
- code += `${v}.${key}=a[i++].map(e=>${itemTransform});`;
1230
- } else code += `${v}.${key}=a[i++];`;
1231
- } else code += `${v}.${key}=a[i++];`;
1175
+ for (const { key, isOpt, isNullable, inner } of fields) {
1176
+ const sk = JSON.stringify(key);
1177
+ if (isOpt) {
1178
+ const nested = this.genDecFromValue(inner, "t");
1179
+ code += `{const t=a[i++];if(t!==null){${v}[${sk}]=${nested};}}`;
1180
+ } else if (isNullable) {
1181
+ const nested = this.genDecFromValue(inner, "t");
1182
+ code += `{const t=a[i++];if(t===null){${v}[${sk}]=null;}else{${v}[${sk}]=${nested};}}`;
1183
+ } else if (t.schema.isObject(inner)) {
1184
+ const nested = this.genDecFromValue(inner, "a[i++]");
1185
+ code += `${v}[${sk}]=${nested};`;
1186
+ } else if (t.schema.isArray(inner)) {
1187
+ const arrSchema = inner;
1188
+ if (t.schema.isObject(arrSchema.items)) {
1189
+ const itemTransform = this.genDecFromValue(arrSchema.items, "e");
1190
+ code += `${v}[${sk}]=a[i++].map(e=>${itemTransform});`;
1191
+ } else code += `${v}[${sk}]=a[i++];`;
1192
+ } else code += `${v}[${sk}]=a[i++];`;
1193
+ }
1232
1194
  return {
1233
1195
  code,
1234
1196
  result: v
@@ -1258,9 +1220,10 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1258
1220
  return `((${v}=${expr})=>({${keys.map((k, idx) => {
1259
1221
  const inner = this.unwrap(props[k]);
1260
1222
  const innerExpr = `${v}[${idx}]`;
1261
- if (t.schema.isObject(inner)) return `${k}:${this.genDecFromValue(inner, innerExpr)}`;
1262
- if (t.schema.isBigInt(inner)) return `${k}:BigInt(${innerExpr}.slice(0,-1))`;
1263
- return `${k}:${innerExpr}`;
1223
+ const sk = JSON.stringify(k);
1224
+ if (t.schema.isObject(inner)) return `${sk}:${this.genDecFromValue(inner, innerExpr)}`;
1225
+ if (t.schema.isBigInt(inner)) return `${sk}:BigInt(${innerExpr}.slice(0,-1))`;
1226
+ return `${sk}:${innerExpr}`;
1264
1227
  }).join(",")}}))()`;
1265
1228
  }
1266
1229
  return expr;
@@ -1370,6 +1333,7 @@ var SchemaValidator = class {
1370
1333
  beforeParse(schema, value, options) {
1371
1334
  if (!schema) return value;
1372
1335
  if (value === null && !this.isSchemaNullable(schema) && options.nullToUndefined) return;
1336
+ if (!schema.type && schema.anyOf) schema = schema.anyOf.find((s) => s.type !== "null" && s.type !== "undefined") || schema;
1373
1337
  if (Array.isArray(value)) return value.map((it) => this.beforeParse(schema.items, it, options));
1374
1338
  if (typeof value === "string" && schema.type === "string") {
1375
1339
  let str = value;
@@ -2058,9 +2022,21 @@ var Alepha = class Alepha {
2058
2022
  */
2059
2023
  ready = false;
2060
2024
  /**
2061
- * A promise that resolves when the App has started.
2025
+ * In-flight startup promise returned by boot().
2026
+ *
2027
+ * Concurrent callers of start() share this same promise. Cleared on
2028
+ * success, failure, or stale-detection.
2062
2029
  */
2063
- starting;
2030
+ startPromise;
2031
+ /**
2032
+ * Timestamp (performance.now) when the current boot() began.
2033
+ *
2034
+ * In serverless environments (e.g. Cloudflare Workers), the runtime can
2035
+ * kill an invocation mid-startup without running cleanup. The global
2036
+ * Alepha instance persists, leaving startPromise as a never-settling
2037
+ * promise. We detect this by comparing elapsed time against STARTUP_TIMEOUT.
2038
+ */
2039
+ startedAt = 0;
2064
2040
  /**
2065
2041
  * During the instantiation process, we keep a list of pending instantiations.
2066
2042
  * > It allows us to detect circular dependencies.
@@ -2227,6 +2203,16 @@ var Alepha = class Alepha {
2227
2203
  return this.env.NODE_ENV === "production";
2228
2204
  }
2229
2205
  /**
2206
+ * Max time (ms) a boot() is allowed to run before being considered stale.
2207
+ *
2208
+ * In serverless runtimes (Cloudflare Workers, etc.) an invocation can be
2209
+ * killed mid-startup. The global Alepha instance survives, but
2210
+ * `startPromise` becomes a zombie that never settles.
2211
+ * Any new invocation that sees an older-than-STARTUP_TIMEOUT promise
2212
+ * discards it and boots fresh.
2213
+ */
2214
+ static STARTUP_TIMEOUT = 3e4;
2215
+ /**
2230
2216
  * Starts the App.
2231
2217
  *
2232
2218
  * - Lock any further changes to the container.
@@ -2234,6 +2220,10 @@ var Alepha = class Alepha {
2234
2220
  * - Run "start" hook for all services. Providers will connect/listen/...
2235
2221
  * - Run "ready" hook for all services. This is the point where the App is ready to serve requests.
2236
2222
  *
2223
+ * Concurrent callers share the same boot promise. If a previous boot was
2224
+ * abandoned (serverless invocation killed), the stale promise is detected
2225
+ * and a fresh boot is triggered.
2226
+ *
2237
2227
  * @return A promise that resolves when the App has started.
2238
2228
  */
2239
2229
  async start() {
@@ -2241,14 +2231,31 @@ var Alepha = class Alepha {
2241
2231
  this.log?.debug("App is already started, skipping...");
2242
2232
  return this;
2243
2233
  }
2244
- if (this.starting) {
2245
- this.log?.warn("App is already starting, waiting for it to finish...");
2246
- return this.starting.promise;
2234
+ if (this.startPromise) {
2235
+ const elapsed = performance.now() - this.startedAt;
2236
+ if (elapsed > Alepha.STARTUP_TIMEOUT) {
2237
+ this.log?.warn(`Previous start attempt is stale (${Math.round(elapsed)}ms ago), resetting...`);
2238
+ this.resetStartup();
2239
+ } else {
2240
+ this.log?.warn("App is already starting, waiting for it to finish...");
2241
+ return this.startPromise;
2242
+ }
2247
2243
  }
2248
- this.starting = Promise.withResolvers();
2244
+ this.startedAt = performance.now();
2245
+ this.startPromise = this.boot();
2246
+ return this.startPromise;
2247
+ }
2248
+ /**
2249
+ * Perform the actual startup sequence.
2250
+ *
2251
+ * Separated from start() so that start() remains a thin state-machine
2252
+ * and boot() owns the real work. The promise returned here is stored as
2253
+ * `startPromise` and shared with concurrent callers.
2254
+ */
2255
+ async boot() {
2256
+ const now = performance.now();
2257
+ this.log?.info("Starting App...");
2249
2258
  try {
2250
- const now = performance.now();
2251
- this.log?.info("Starting App...");
2252
2259
  for (const [key] of this.substitutions.entries()) this.inject(key);
2253
2260
  const target = this.store.get("alepha.target");
2254
2261
  if (target) {
@@ -2270,15 +2277,26 @@ var Alepha = class Alepha {
2270
2277
  await this.events.emit("ready", this, { log: true });
2271
2278
  this.log?.info(`App is now ready [${Math.round(performance.now() - now)}ms]`);
2272
2279
  this.ready = true;
2280
+ return this;
2273
2281
  } catch (error) {
2274
- this.starting.reject(error);
2275
- const promise = this.starting.promise;
2276
- this.starting = void 0;
2277
- return promise;
2282
+ this.resetStartup();
2283
+ throw error;
2278
2284
  }
2279
- this.starting.resolve(this);
2280
- this.starting = void 0;
2281
- return this;
2285
+ }
2286
+ /**
2287
+ * Reset startup state so that a fresh boot() can be attempted.
2288
+ *
2289
+ * Called when:
2290
+ * - boot() fails (error during configure/start/ready hooks)
2291
+ * - a stale startPromise is detected (serverless invocation was killed)
2292
+ */
2293
+ resetStartup() {
2294
+ this.startPromise = void 0;
2295
+ this.startedAt = 0;
2296
+ this.locked = false;
2297
+ this.configured = false;
2298
+ this.started = false;
2299
+ this.ready = false;
2282
2300
  }
2283
2301
  /**
2284
2302
  * Stops the App.
@@ -2299,6 +2317,8 @@ var Alepha = class Alepha {
2299
2317
  this.log?.info("App is now off");
2300
2318
  this.started = false;
2301
2319
  this.ready = false;
2320
+ this.startPromise = void 0;
2321
+ this.startedAt = 0;
2302
2322
  }
2303
2323
  /**
2304
2324
  * Destroys the App and clears all internal state.
@@ -2453,7 +2473,18 @@ var Alepha = class Alepha {
2453
2473
  parseEnv(schema) {
2454
2474
  if (this.cacheEnv.has(schema)) return this.cacheEnv.get(schema);
2455
2475
  const config = this.codec.validate(schema, this.env);
2456
- for (const key in config) if (typeof config[key] === "string") for (const env in config) config[key] = config[key].replaceAll(`$${env}`, String(config[env] ?? ""));
2476
+ let changed = true;
2477
+ for (let pass = 0; changed && pass < 10; pass++) {
2478
+ changed = false;
2479
+ for (const key in config) {
2480
+ if (typeof config[key] !== "string") continue;
2481
+ for (const env in config) {
2482
+ const before = config[key];
2483
+ config[key] = before.replaceAll(`$${env}`, String(config[env] ?? ""));
2484
+ if (config[key] !== before) changed = true;
2485
+ }
2486
+ }
2487
+ }
2457
2488
  this.cacheEnv.set(schema, config);
2458
2489
  return config;
2459
2490
  }
@@ -2918,13 +2949,20 @@ const $memoize = (options) => {
2918
2949
  return async (...args) => {
2919
2950
  const key = keyFn(...args);
2920
2951
  if (store.has(key)) return store.get(key);
2921
- const result = await next(...args);
2922
- if (store.size >= maxSize) {
2923
- const firstKey = store.keys().next().value;
2924
- if (firstKey !== void 0) store.delete(firstKey);
2952
+ const promise = next(...args);
2953
+ store.set(key, promise);
2954
+ try {
2955
+ const result = await promise;
2956
+ store.set(key, result);
2957
+ if (store.size > maxSize) {
2958
+ const firstKey = store.keys().next().value;
2959
+ if (firstKey !== void 0) store.delete(firstKey);
2960
+ }
2961
+ return result;
2962
+ } catch (error) {
2963
+ store.delete(key);
2964
+ throw error;
2925
2965
  }
2926
- store.set(key, result);
2927
- return result;
2928
2966
  };
2929
2967
  }
2930
2968
  });