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
@@ -922,11 +922,6 @@ const t = new TypeProvider();
922
922
 
923
923
  //#endregion
924
924
  //#region ../../src/core/providers/KeylessJsonSchemaCodec.ts
925
- const UNSAFE_KEYS = new Set([
926
- "__proto__",
927
- "constructor",
928
- "prototype"
929
- ]);
930
925
  /**
931
926
  * KeylessJsonSchemaCodec provides schema-driven JSON encoding without keys.
932
927
  *
@@ -939,9 +934,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
939
934
  textDecoder = new TextDecoder();
940
935
  varCounter = 0;
941
936
  useFunctionCompilation = true;
942
- maxArrayLength = 1e4;
943
- maxStringLength = 1e6;
944
- maxDepth = 50;
945
937
  /**
946
938
  * Configure codec options.
947
939
  */
@@ -950,9 +942,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
950
942
  this.useFunctionCompilation = options.useFunctionCompilation;
951
943
  this.cache.clear();
952
944
  }
953
- if (options.maxArrayLength !== void 0) this.maxArrayLength = options.maxArrayLength;
954
- if (options.maxStringLength !== void 0) this.maxStringLength = options.maxStringLength;
955
- if (options.maxDepth !== void 0) this.maxDepth = options.maxDepth;
956
945
  return this;
957
946
  }
958
947
  /**
@@ -1000,37 +989,6 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1000
989
  }
1001
990
  }
1002
991
  /**
1003
- * Validate schema keys for prototype pollution.
1004
- * Uses a visited set to avoid infinite recursion on recursive schemas.
1005
- */
1006
- validateSchemaKeys(schema, depth = 0, visited = /* @__PURE__ */ new Set()) {
1007
- if (visited.has(schema)) return;
1008
- visited.add(schema);
1009
- if (depth > this.maxDepth) throw new AlephaError(`Schema depth exceeds maximum allowed (${this.maxDepth})`);
1010
- if (t.schema.isObject(schema)) {
1011
- const props = schema.properties;
1012
- for (const key of Object.keys(props)) {
1013
- if (UNSAFE_KEYS.has(key)) throw new AlephaError(`Unsafe schema key "${key}" detected. This key is blocked to prevent prototype pollution.`);
1014
- this.validateSchemaKeys(props[key], depth + 1, visited);
1015
- }
1016
- } else if (t.schema.isArray(schema)) {
1017
- const arrSchema = schema;
1018
- this.validateSchemaKeys(arrSchema.items, depth + 1, visited);
1019
- } else if (t.schema.isUnion(schema) || t.schema.isOptional(schema)) this.validateSchemaKeys(this.unwrap(schema), depth, visited);
1020
- }
1021
- /**
1022
- * Validate array length.
1023
- */
1024
- validateArrayLength(arr) {
1025
- if (arr.length > this.maxArrayLength) throw new AlephaError(`Array length (${arr.length}) exceeds maximum allowed (${this.maxArrayLength})`);
1026
- }
1027
- /**
1028
- * Validate string length.
1029
- */
1030
- validateStringLength(str) {
1031
- if (str.length > this.maxStringLength) throw new AlephaError(`String length (${str.length}) exceeds maximum allowed (${this.maxStringLength})`);
1032
- }
1033
- /**
1034
992
  * Get a compiled codec for the given schema.
1035
993
  * Codecs are cached for reuse.
1036
994
  */
@@ -1171,9 +1129,10 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1171
1129
  if (t.schema.isObject(schema)) {
1172
1130
  const parts = [];
1173
1131
  for (const { key, isOpt, isNullable, inner } of this.getObjectFields(schema)) {
1174
- const innerEnc = this.genEnc(inner, `${ve}.${key}`);
1175
- if (isOpt) parts.push(`${ve}.${key}!==undefined?${innerEnc}:null`);
1176
- else if (isNullable) parts.push(`${ve}.${key}!==null?${innerEnc}:null`);
1132
+ const access = `${ve}[${JSON.stringify(key)}]`;
1133
+ const innerEnc = this.genEnc(inner, access);
1134
+ if (isOpt) parts.push(`${access}!==undefined?${innerEnc}:null`);
1135
+ else if (isNullable) parts.push(`${access}!==null?${innerEnc}:null`);
1177
1136
  else parts.push(innerEnc);
1178
1137
  }
1179
1138
  return `[${parts.join(",")}]`;
@@ -1211,25 +1170,28 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1211
1170
  const fields = this.getObjectFields(schema);
1212
1171
  if (fields.every(({ isOpt, isNullable, inner }) => !isOpt && !isNullable && !t.schema.isObject(inner) && !t.schema.isArray(inner))) return {
1213
1172
  code: "",
1214
- result: `{${fields.map(({ key }) => `${key}:a[i++]`).join(",")}}`
1173
+ result: `{${fields.map(({ key }) => `${JSON.stringify(key)}:a[i++]`).join(",")}}`
1215
1174
  };
1216
1175
  let code = `const ${v}={};`;
1217
- for (const { key, isOpt, isNullable, inner } of fields) if (isOpt) {
1218
- const nested = this.genDecFromValue(inner, "t");
1219
- code += `{const t=a[i++];if(t!==null){${v}.${key}=${nested};}}`;
1220
- } else if (isNullable) {
1221
- const nested = this.genDecFromValue(inner, "t");
1222
- code += `{const t=a[i++];if(t===null){${v}.${key}=null;}else{${v}.${key}=${nested};}}`;
1223
- } else if (t.schema.isObject(inner)) {
1224
- const nested = this.genDecFromValue(inner, "a[i++]");
1225
- code += `${v}.${key}=${nested};`;
1226
- } else if (t.schema.isArray(inner)) {
1227
- const arrSchema = inner;
1228
- if (t.schema.isObject(arrSchema.items)) {
1229
- const itemTransform = this.genDecFromValue(arrSchema.items, "e");
1230
- code += `${v}.${key}=a[i++].map(e=>${itemTransform});`;
1231
- } else code += `${v}.${key}=a[i++];`;
1232
- } else code += `${v}.${key}=a[i++];`;
1176
+ for (const { key, isOpt, isNullable, inner } of fields) {
1177
+ const sk = JSON.stringify(key);
1178
+ if (isOpt) {
1179
+ const nested = this.genDecFromValue(inner, "t");
1180
+ code += `{const t=a[i++];if(t!==null){${v}[${sk}]=${nested};}}`;
1181
+ } else if (isNullable) {
1182
+ const nested = this.genDecFromValue(inner, "t");
1183
+ code += `{const t=a[i++];if(t===null){${v}[${sk}]=null;}else{${v}[${sk}]=${nested};}}`;
1184
+ } else if (t.schema.isObject(inner)) {
1185
+ const nested = this.genDecFromValue(inner, "a[i++]");
1186
+ code += `${v}[${sk}]=${nested};`;
1187
+ } else if (t.schema.isArray(inner)) {
1188
+ const arrSchema = inner;
1189
+ if (t.schema.isObject(arrSchema.items)) {
1190
+ const itemTransform = this.genDecFromValue(arrSchema.items, "e");
1191
+ code += `${v}[${sk}]=a[i++].map(e=>${itemTransform});`;
1192
+ } else code += `${v}[${sk}]=a[i++];`;
1193
+ } else code += `${v}[${sk}]=a[i++];`;
1194
+ }
1233
1195
  return {
1234
1196
  code,
1235
1197
  result: v
@@ -1259,9 +1221,10 @@ var KeylessJsonSchemaCodec = class extends SchemaCodec {
1259
1221
  return `((${v}=${expr})=>({${keys.map((k, idx) => {
1260
1222
  const inner = this.unwrap(props[k]);
1261
1223
  const innerExpr = `${v}[${idx}]`;
1262
- if (t.schema.isObject(inner)) return `${k}:${this.genDecFromValue(inner, innerExpr)}`;
1263
- if (t.schema.isBigInt(inner)) return `${k}:BigInt(${innerExpr}.slice(0,-1))`;
1264
- return `${k}:${innerExpr}`;
1224
+ const sk = JSON.stringify(k);
1225
+ if (t.schema.isObject(inner)) return `${sk}:${this.genDecFromValue(inner, innerExpr)}`;
1226
+ if (t.schema.isBigInt(inner)) return `${sk}:BigInt(${innerExpr}.slice(0,-1))`;
1227
+ return `${sk}:${innerExpr}`;
1265
1228
  }).join(",")}}))()`;
1266
1229
  }
1267
1230
  return expr;
@@ -1371,6 +1334,7 @@ var SchemaValidator = class {
1371
1334
  beforeParse(schema, value, options) {
1372
1335
  if (!schema) return value;
1373
1336
  if (value === null && !this.isSchemaNullable(schema) && options.nullToUndefined) return;
1337
+ if (!schema.type && schema.anyOf) schema = schema.anyOf.find((s) => s.type !== "null" && s.type !== "undefined") || schema;
1374
1338
  if (Array.isArray(value)) return value.map((it) => this.beforeParse(schema.items, it, options));
1375
1339
  if (typeof value === "string" && schema.type === "string") {
1376
1340
  let str = value;
@@ -2063,9 +2027,21 @@ var Alepha = class Alepha {
2063
2027
  */
2064
2028
  ready = false;
2065
2029
  /**
2066
- * A promise that resolves when the App has started.
2030
+ * In-flight startup promise returned by boot().
2031
+ *
2032
+ * Concurrent callers of start() share this same promise. Cleared on
2033
+ * success, failure, or stale-detection.
2067
2034
  */
2068
- starting;
2035
+ startPromise;
2036
+ /**
2037
+ * Timestamp (performance.now) when the current boot() began.
2038
+ *
2039
+ * In serverless environments (e.g. Cloudflare Workers), the runtime can
2040
+ * kill an invocation mid-startup without running cleanup. The global
2041
+ * Alepha instance persists, leaving startPromise as a never-settling
2042
+ * promise. We detect this by comparing elapsed time against STARTUP_TIMEOUT.
2043
+ */
2044
+ startedAt = 0;
2069
2045
  /**
2070
2046
  * During the instantiation process, we keep a list of pending instantiations.
2071
2047
  * > It allows us to detect circular dependencies.
@@ -2232,6 +2208,16 @@ var Alepha = class Alepha {
2232
2208
  return this.env.NODE_ENV === "production";
2233
2209
  }
2234
2210
  /**
2211
+ * Max time (ms) a boot() is allowed to run before being considered stale.
2212
+ *
2213
+ * In serverless runtimes (Cloudflare Workers, etc.) an invocation can be
2214
+ * killed mid-startup. The global Alepha instance survives, but
2215
+ * `startPromise` becomes a zombie that never settles.
2216
+ * Any new invocation that sees an older-than-STARTUP_TIMEOUT promise
2217
+ * discards it and boots fresh.
2218
+ */
2219
+ static STARTUP_TIMEOUT = 3e4;
2220
+ /**
2235
2221
  * Starts the App.
2236
2222
  *
2237
2223
  * - Lock any further changes to the container.
@@ -2239,6 +2225,10 @@ var Alepha = class Alepha {
2239
2225
  * - Run "start" hook for all services. Providers will connect/listen/...
2240
2226
  * - Run "ready" hook for all services. This is the point where the App is ready to serve requests.
2241
2227
  *
2228
+ * Concurrent callers share the same boot promise. If a previous boot was
2229
+ * abandoned (serverless invocation killed), the stale promise is detected
2230
+ * and a fresh boot is triggered.
2231
+ *
2242
2232
  * @return A promise that resolves when the App has started.
2243
2233
  */
2244
2234
  async start() {
@@ -2246,14 +2236,31 @@ var Alepha = class Alepha {
2246
2236
  this.log?.debug("App is already started, skipping...");
2247
2237
  return this;
2248
2238
  }
2249
- if (this.starting) {
2250
- this.log?.warn("App is already starting, waiting for it to finish...");
2251
- return this.starting.promise;
2239
+ if (this.startPromise) {
2240
+ const elapsed = performance.now() - this.startedAt;
2241
+ if (elapsed > Alepha.STARTUP_TIMEOUT) {
2242
+ this.log?.warn(`Previous start attempt is stale (${Math.round(elapsed)}ms ago), resetting...`);
2243
+ this.resetStartup();
2244
+ } else {
2245
+ this.log?.warn("App is already starting, waiting for it to finish...");
2246
+ return this.startPromise;
2247
+ }
2252
2248
  }
2253
- this.starting = Promise.withResolvers();
2249
+ this.startedAt = performance.now();
2250
+ this.startPromise = this.boot();
2251
+ return this.startPromise;
2252
+ }
2253
+ /**
2254
+ * Perform the actual startup sequence.
2255
+ *
2256
+ * Separated from start() so that start() remains a thin state-machine
2257
+ * and boot() owns the real work. The promise returned here is stored as
2258
+ * `startPromise` and shared with concurrent callers.
2259
+ */
2260
+ async boot() {
2261
+ const now = performance.now();
2262
+ this.log?.info("Starting App...");
2254
2263
  try {
2255
- const now = performance.now();
2256
- this.log?.info("Starting App...");
2257
2264
  for (const [key] of this.substitutions.entries()) this.inject(key);
2258
2265
  const target = this.store.get("alepha.target");
2259
2266
  if (target) {
@@ -2275,15 +2282,26 @@ var Alepha = class Alepha {
2275
2282
  await this.events.emit("ready", this, { log: true });
2276
2283
  this.log?.info(`App is now ready [${Math.round(performance.now() - now)}ms]`);
2277
2284
  this.ready = true;
2285
+ return this;
2278
2286
  } catch (error) {
2279
- this.starting.reject(error);
2280
- const promise = this.starting.promise;
2281
- this.starting = void 0;
2282
- return promise;
2287
+ this.resetStartup();
2288
+ throw error;
2283
2289
  }
2284
- this.starting.resolve(this);
2285
- this.starting = void 0;
2286
- return this;
2290
+ }
2291
+ /**
2292
+ * Reset startup state so that a fresh boot() can be attempted.
2293
+ *
2294
+ * Called when:
2295
+ * - boot() fails (error during configure/start/ready hooks)
2296
+ * - a stale startPromise is detected (serverless invocation was killed)
2297
+ */
2298
+ resetStartup() {
2299
+ this.startPromise = void 0;
2300
+ this.startedAt = 0;
2301
+ this.locked = false;
2302
+ this.configured = false;
2303
+ this.started = false;
2304
+ this.ready = false;
2287
2305
  }
2288
2306
  /**
2289
2307
  * Stops the App.
@@ -2304,6 +2322,8 @@ var Alepha = class Alepha {
2304
2322
  this.log?.info("App is now off");
2305
2323
  this.started = false;
2306
2324
  this.ready = false;
2325
+ this.startPromise = void 0;
2326
+ this.startedAt = 0;
2307
2327
  }
2308
2328
  /**
2309
2329
  * Destroys the App and clears all internal state.
@@ -2458,7 +2478,18 @@ var Alepha = class Alepha {
2458
2478
  parseEnv(schema) {
2459
2479
  if (this.cacheEnv.has(schema)) return this.cacheEnv.get(schema);
2460
2480
  const config = this.codec.validate(schema, this.env);
2461
- for (const key in config) if (typeof config[key] === "string") for (const env in config) config[key] = config[key].replaceAll(`$${env}`, String(config[env] ?? ""));
2481
+ let changed = true;
2482
+ for (let pass = 0; changed && pass < 10; pass++) {
2483
+ changed = false;
2484
+ for (const key in config) {
2485
+ if (typeof config[key] !== "string") continue;
2486
+ for (const env in config) {
2487
+ const before = config[key];
2488
+ config[key] = before.replaceAll(`$${env}`, String(config[env] ?? ""));
2489
+ if (config[key] !== before) changed = true;
2490
+ }
2491
+ }
2492
+ }
2462
2493
  this.cacheEnv.set(schema, config);
2463
2494
  return config;
2464
2495
  }
@@ -2923,13 +2954,20 @@ const $memoize = (options) => {
2923
2954
  return async (...args) => {
2924
2955
  const key = keyFn(...args);
2925
2956
  if (store.has(key)) return store.get(key);
2926
- const result = await next(...args);
2927
- if (store.size >= maxSize) {
2928
- const firstKey = store.keys().next().value;
2929
- if (firstKey !== void 0) store.delete(firstKey);
2957
+ const promise = next(...args);
2958
+ store.set(key, promise);
2959
+ try {
2960
+ const result = await promise;
2961
+ store.set(key, result);
2962
+ if (store.size > maxSize) {
2963
+ const firstKey = store.keys().next().value;
2964
+ if (firstKey !== void 0) store.delete(firstKey);
2965
+ }
2966
+ return result;
2967
+ } catch (error) {
2968
+ store.delete(key);
2969
+ throw error;
2930
2970
  }
2931
- store.set(key, result);
2932
- return result;
2933
2971
  };
2934
2972
  }
2935
2973
  });