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;
@@ -2062,9 +2026,21 @@ var Alepha = class Alepha {
2062
2026
  */
2063
2027
  ready = false;
2064
2028
  /**
2065
- * A promise that resolves when the App has started.
2029
+ * In-flight startup promise returned by boot().
2030
+ *
2031
+ * Concurrent callers of start() share this same promise. Cleared on
2032
+ * success, failure, or stale-detection.
2066
2033
  */
2067
- starting;
2034
+ startPromise;
2035
+ /**
2036
+ * Timestamp (performance.now) when the current boot() began.
2037
+ *
2038
+ * In serverless environments (e.g. Cloudflare Workers), the runtime can
2039
+ * kill an invocation mid-startup without running cleanup. The global
2040
+ * Alepha instance persists, leaving startPromise as a never-settling
2041
+ * promise. We detect this by comparing elapsed time against STARTUP_TIMEOUT.
2042
+ */
2043
+ startedAt = 0;
2068
2044
  /**
2069
2045
  * During the instantiation process, we keep a list of pending instantiations.
2070
2046
  * > It allows us to detect circular dependencies.
@@ -2231,6 +2207,16 @@ var Alepha = class Alepha {
2231
2207
  return this.env.NODE_ENV === "production";
2232
2208
  }
2233
2209
  /**
2210
+ * Max time (ms) a boot() is allowed to run before being considered stale.
2211
+ *
2212
+ * In serverless runtimes (Cloudflare Workers, etc.) an invocation can be
2213
+ * killed mid-startup. The global Alepha instance survives, but
2214
+ * `startPromise` becomes a zombie that never settles.
2215
+ * Any new invocation that sees an older-than-STARTUP_TIMEOUT promise
2216
+ * discards it and boots fresh.
2217
+ */
2218
+ static STARTUP_TIMEOUT = 3e4;
2219
+ /**
2234
2220
  * Starts the App.
2235
2221
  *
2236
2222
  * - Lock any further changes to the container.
@@ -2238,6 +2224,10 @@ var Alepha = class Alepha {
2238
2224
  * - Run "start" hook for all services. Providers will connect/listen/...
2239
2225
  * - Run "ready" hook for all services. This is the point where the App is ready to serve requests.
2240
2226
  *
2227
+ * Concurrent callers share the same boot promise. If a previous boot was
2228
+ * abandoned (serverless invocation killed), the stale promise is detected
2229
+ * and a fresh boot is triggered.
2230
+ *
2241
2231
  * @return A promise that resolves when the App has started.
2242
2232
  */
2243
2233
  async start() {
@@ -2245,14 +2235,31 @@ var Alepha = class Alepha {
2245
2235
  this.log?.debug("App is already started, skipping...");
2246
2236
  return this;
2247
2237
  }
2248
- if (this.starting) {
2249
- this.log?.warn("App is already starting, waiting for it to finish...");
2250
- return this.starting.promise;
2238
+ if (this.startPromise) {
2239
+ const elapsed = performance.now() - this.startedAt;
2240
+ if (elapsed > Alepha.STARTUP_TIMEOUT) {
2241
+ this.log?.warn(`Previous start attempt is stale (${Math.round(elapsed)}ms ago), resetting...`);
2242
+ this.resetStartup();
2243
+ } else {
2244
+ this.log?.warn("App is already starting, waiting for it to finish...");
2245
+ return this.startPromise;
2246
+ }
2251
2247
  }
2252
- this.starting = Promise.withResolvers();
2248
+ this.startedAt = performance.now();
2249
+ this.startPromise = this.boot();
2250
+ return this.startPromise;
2251
+ }
2252
+ /**
2253
+ * Perform the actual startup sequence.
2254
+ *
2255
+ * Separated from start() so that start() remains a thin state-machine
2256
+ * and boot() owns the real work. The promise returned here is stored as
2257
+ * `startPromise` and shared with concurrent callers.
2258
+ */
2259
+ async boot() {
2260
+ const now = performance.now();
2261
+ this.log?.info("Starting App...");
2253
2262
  try {
2254
- const now = performance.now();
2255
- this.log?.info("Starting App...");
2256
2263
  for (const [key] of this.substitutions.entries()) this.inject(key);
2257
2264
  const target = this.store.get("alepha.target");
2258
2265
  if (target) {
@@ -2274,15 +2281,26 @@ var Alepha = class Alepha {
2274
2281
  await this.events.emit("ready", this, { log: true });
2275
2282
  this.log?.info(`App is now ready [${Math.round(performance.now() - now)}ms]`);
2276
2283
  this.ready = true;
2284
+ return this;
2277
2285
  } catch (error) {
2278
- this.starting.reject(error);
2279
- const promise = this.starting.promise;
2280
- this.starting = void 0;
2281
- return promise;
2286
+ this.resetStartup();
2287
+ throw error;
2282
2288
  }
2283
- this.starting.resolve(this);
2284
- this.starting = void 0;
2285
- return this;
2289
+ }
2290
+ /**
2291
+ * Reset startup state so that a fresh boot() can be attempted.
2292
+ *
2293
+ * Called when:
2294
+ * - boot() fails (error during configure/start/ready hooks)
2295
+ * - a stale startPromise is detected (serverless invocation was killed)
2296
+ */
2297
+ resetStartup() {
2298
+ this.startPromise = void 0;
2299
+ this.startedAt = 0;
2300
+ this.locked = false;
2301
+ this.configured = false;
2302
+ this.started = false;
2303
+ this.ready = false;
2286
2304
  }
2287
2305
  /**
2288
2306
  * Stops the App.
@@ -2303,6 +2321,8 @@ var Alepha = class Alepha {
2303
2321
  this.log?.info("App is now off");
2304
2322
  this.started = false;
2305
2323
  this.ready = false;
2324
+ this.startPromise = void 0;
2325
+ this.startedAt = 0;
2306
2326
  }
2307
2327
  /**
2308
2328
  * Destroys the App and clears all internal state.
@@ -2457,7 +2477,18 @@ var Alepha = class Alepha {
2457
2477
  parseEnv(schema) {
2458
2478
  if (this.cacheEnv.has(schema)) return this.cacheEnv.get(schema);
2459
2479
  const config = this.codec.validate(schema, this.env);
2460
- for (const key in config) if (typeof config[key] === "string") for (const env in config) config[key] = config[key].replaceAll(`$${env}`, String(config[env] ?? ""));
2480
+ let changed = true;
2481
+ for (let pass = 0; changed && pass < 10; pass++) {
2482
+ changed = false;
2483
+ for (const key in config) {
2484
+ if (typeof config[key] !== "string") continue;
2485
+ for (const env in config) {
2486
+ const before = config[key];
2487
+ config[key] = before.replaceAll(`$${env}`, String(config[env] ?? ""));
2488
+ if (config[key] !== before) changed = true;
2489
+ }
2490
+ }
2491
+ }
2461
2492
  this.cacheEnv.set(schema, config);
2462
2493
  return config;
2463
2494
  }
@@ -2922,13 +2953,20 @@ const $memoize = (options) => {
2922
2953
  return async (...args) => {
2923
2954
  const key = keyFn(...args);
2924
2955
  if (store.has(key)) return store.get(key);
2925
- const result = await next(...args);
2926
- if (store.size >= maxSize) {
2927
- const firstKey = store.keys().next().value;
2928
- if (firstKey !== void 0) store.delete(firstKey);
2956
+ const promise = next(...args);
2957
+ store.set(key, promise);
2958
+ try {
2959
+ const result = await promise;
2960
+ store.set(key, result);
2961
+ if (store.size > maxSize) {
2962
+ const firstKey = store.keys().next().value;
2963
+ if (firstKey !== void 0) store.delete(firstKey);
2964
+ }
2965
+ return result;
2966
+ } catch (error) {
2967
+ store.delete(key);
2968
+ throw error;
2929
2969
  }
2930
- store.set(key, result);
2931
- return result;
2932
2970
  };
2933
2971
  }
2934
2972
  });