@justscale/core 0.1.0

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 (784) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/bin/just.js +34 -0
  4. package/dist/app.d.ts +56 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +182 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/builder/build-context.d.ts +8 -0
  9. package/dist/builder/build-context.d.ts.map +1 -0
  10. package/dist/builder/build-context.js +4 -0
  11. package/dist/builder/build-context.js.map +1 -0
  12. package/dist/builder/builder.d.ts +60 -0
  13. package/dist/builder/builder.d.ts.map +1 -0
  14. package/dist/builder/builder.js +72 -0
  15. package/dist/builder/builder.js.map +1 -0
  16. package/dist/builder/create-builder.d.ts +36 -0
  17. package/dist/builder/create-builder.d.ts.map +1 -0
  18. package/dist/builder/create-builder.js +66 -0
  19. package/dist/builder/create-builder.js.map +1 -0
  20. package/dist/builder/execute.d.ts +37 -0
  21. package/dist/builder/execute.d.ts.map +1 -0
  22. package/dist/builder/execute.js +62 -0
  23. package/dist/builder/execute.js.map +1 -0
  24. package/dist/builder/feature-builder.d.ts +147 -0
  25. package/dist/builder/feature-builder.d.ts.map +1 -0
  26. package/dist/builder/feature-builder.js +138 -0
  27. package/dist/builder/feature-builder.js.map +1 -0
  28. package/dist/builder/index.d.ts +35 -0
  29. package/dist/builder/index.d.ts.map +1 -0
  30. package/dist/builder/index.js +37 -0
  31. package/dist/builder/index.js.map +1 -0
  32. package/dist/builder/plugin.d.ts +90 -0
  33. package/dist/builder/plugin.d.ts.map +1 -0
  34. package/dist/builder/plugin.js +101 -0
  35. package/dist/builder/plugin.js.map +1 -0
  36. package/dist/builder/plugins/query.d.ts +31 -0
  37. package/dist/builder/plugins/query.d.ts.map +1 -0
  38. package/dist/builder/plugins/query.js +42 -0
  39. package/dist/builder/plugins/query.js.map +1 -0
  40. package/dist/builder/plugins/validation.d.ts +12 -0
  41. package/dist/builder/plugins/validation.d.ts.map +1 -0
  42. package/dist/builder/plugins/validation.js +12 -0
  43. package/dist/builder/plugins/validation.js.map +1 -0
  44. package/dist/builder/sort.d.ts +27 -0
  45. package/dist/builder/sort.d.ts.map +1 -0
  46. package/dist/builder/sort.js +210 -0
  47. package/dist/builder/sort.js.map +1 -0
  48. package/dist/builder/stop.d.ts +24 -0
  49. package/dist/builder/stop.d.ts.map +1 -0
  50. package/dist/builder/stop.js +27 -0
  51. package/dist/builder/stop.js.map +1 -0
  52. package/dist/builder/test/permits-type-spike.d.ts +8 -0
  53. package/dist/builder/test/permits-type-spike.d.ts.map +1 -0
  54. package/dist/builder/test/permits-type-spike.js +117 -0
  55. package/dist/builder/test/permits-type-spike.js.map +1 -0
  56. package/dist/builder/types.d.ts +678 -0
  57. package/dist/builder/types.d.ts.map +1 -0
  58. package/dist/builder/types.js +98 -0
  59. package/dist/builder/types.js.map +1 -0
  60. package/dist/builder/validation.d.ts +101 -0
  61. package/dist/builder/validation.d.ts.map +1 -0
  62. package/dist/builder/validation.js +335 -0
  63. package/dist/builder/validation.js.map +1 -0
  64. package/dist/cli/adapter.d.ts +23 -0
  65. package/dist/cli/adapter.d.ts.map +1 -0
  66. package/dist/cli/adapter.js +26 -0
  67. package/dist/cli/adapter.js.map +1 -0
  68. package/dist/cli/args.d.ts +150 -0
  69. package/dist/cli/args.d.ts.map +1 -0
  70. package/dist/cli/args.js +172 -0
  71. package/dist/cli/args.js.map +1 -0
  72. package/dist/cli/assemble.d.ts +20 -0
  73. package/dist/cli/assemble.d.ts.map +1 -0
  74. package/dist/cli/assemble.js +55 -0
  75. package/dist/cli/assemble.js.map +1 -0
  76. package/dist/cli/bin/main.d.ts +26 -0
  77. package/dist/cli/bin/main.d.ts.map +1 -0
  78. package/dist/cli/bin/main.js +475 -0
  79. package/dist/cli/bin/main.js.map +1 -0
  80. package/dist/cli/build/migrations-plugin.d.ts +21 -0
  81. package/dist/cli/build/migrations-plugin.d.ts.map +1 -0
  82. package/dist/cli/build/migrations-plugin.js +41 -0
  83. package/dist/cli/build/migrations-plugin.js.map +1 -0
  84. package/dist/cli/build/process-plugin.d.ts +29 -0
  85. package/dist/cli/build/process-plugin.d.ts.map +1 -0
  86. package/dist/cli/build/process-plugin.js +66 -0
  87. package/dist/cli/build/process-plugin.js.map +1 -0
  88. package/dist/cli/builder/create-cli-builder.d.ts +42 -0
  89. package/dist/cli/builder/create-cli-builder.d.ts.map +1 -0
  90. package/dist/cli/builder/create-cli-builder.js +104 -0
  91. package/dist/cli/builder/create-cli-builder.js.map +1 -0
  92. package/dist/cli/builder/index.d.ts +8 -0
  93. package/dist/cli/builder/index.d.ts.map +1 -0
  94. package/dist/cli/builder/index.js +7 -0
  95. package/dist/cli/builder/index.js.map +1 -0
  96. package/dist/cli/builder/types.d.ts +113 -0
  97. package/dist/cli/builder/types.d.ts.map +1 -0
  98. package/dist/cli/builder/types.js +7 -0
  99. package/dist/cli/builder/types.js.map +1 -0
  100. package/dist/cli/cluster.d.ts +8 -0
  101. package/dist/cli/cluster.d.ts.map +1 -0
  102. package/dist/cli/cluster.js +145 -0
  103. package/dist/cli/cluster.js.map +1 -0
  104. package/dist/cli/current-app.d.ts +36 -0
  105. package/dist/cli/current-app.d.ts.map +1 -0
  106. package/dist/cli/current-app.js +21 -0
  107. package/dist/cli/current-app.js.map +1 -0
  108. package/dist/cli/define-app.d.ts +35 -0
  109. package/dist/cli/define-app.d.ts.map +1 -0
  110. package/dist/cli/define-app.js +79 -0
  111. package/dist/cli/define-app.js.map +1 -0
  112. package/dist/cli/define-main.d.ts +33 -0
  113. package/dist/cli/define-main.d.ts.map +1 -0
  114. package/dist/cli/define-main.js +67 -0
  115. package/dist/cli/define-main.js.map +1 -0
  116. package/dist/cli/define-project.d.ts +93 -0
  117. package/dist/cli/define-project.d.ts.map +1 -0
  118. package/dist/cli/define-project.js +85 -0
  119. package/dist/cli/define-project.js.map +1 -0
  120. package/dist/cli/dev-server.d.ts +20 -0
  121. package/dist/cli/dev-server.d.ts.map +1 -0
  122. package/dist/cli/dev-server.js +131 -0
  123. package/dist/cli/dev-server.js.map +1 -0
  124. package/dist/cli/discovery.d.ts +29 -0
  125. package/dist/cli/discovery.d.ts.map +1 -0
  126. package/dist/cli/discovery.js +142 -0
  127. package/dist/cli/discovery.js.map +1 -0
  128. package/dist/cli/factory.d.ts +43 -0
  129. package/dist/cli/factory.d.ts.map +1 -0
  130. package/dist/cli/factory.js +52 -0
  131. package/dist/cli/factory.js.map +1 -0
  132. package/dist/cli/generators/ai.d.ts +3 -0
  133. package/dist/cli/generators/ai.d.ts.map +1 -0
  134. package/dist/cli/generators/ai.js +65 -0
  135. package/dist/cli/generators/ai.js.map +1 -0
  136. package/dist/cli/generators/ci.d.ts +5 -0
  137. package/dist/cli/generators/ci.d.ts.map +1 -0
  138. package/dist/cli/generators/ci.js +102 -0
  139. package/dist/cli/generators/ci.js.map +1 -0
  140. package/dist/cli/generators/detect.d.ts +15 -0
  141. package/dist/cli/generators/detect.d.ts.map +1 -0
  142. package/dist/cli/generators/detect.js +75 -0
  143. package/dist/cli/generators/detect.js.map +1 -0
  144. package/dist/cli/generators/ide.d.ts +3 -0
  145. package/dist/cli/generators/ide.d.ts.map +1 -0
  146. package/dist/cli/generators/ide.js +179 -0
  147. package/dist/cli/generators/ide.js.map +1 -0
  148. package/dist/cli/generators/index.d.ts +5 -0
  149. package/dist/cli/generators/index.d.ts.map +1 -0
  150. package/dist/cli/generators/index.js +5 -0
  151. package/dist/cli/generators/index.js.map +1 -0
  152. package/dist/cli/index.d.ts +81 -0
  153. package/dist/cli/index.d.ts.map +1 -0
  154. package/dist/cli/index.js +88 -0
  155. package/dist/cli/index.js.map +1 -0
  156. package/dist/cli/io.d.ts +131 -0
  157. package/dist/cli/io.d.ts.map +1 -0
  158. package/dist/cli/io.js +373 -0
  159. package/dist/cli/io.js.map +1 -0
  160. package/dist/cli/mcp/server.d.ts +23 -0
  161. package/dist/cli/mcp/server.d.ts.map +1 -0
  162. package/dist/cli/mcp/server.js +148 -0
  163. package/dist/cli/mcp/server.js.map +1 -0
  164. package/dist/cli/parser.d.ts +106 -0
  165. package/dist/cli/parser.d.ts.map +1 -0
  166. package/dist/cli/parser.js +520 -0
  167. package/dist/cli/parser.js.map +1 -0
  168. package/dist/cli/runner.d.ts +75 -0
  169. package/dist/cli/runner.d.ts.map +1 -0
  170. package/dist/cli/runner.js +422 -0
  171. package/dist/cli/runner.js.map +1 -0
  172. package/dist/cli/service.d.ts +61 -0
  173. package/dist/cli/service.d.ts.map +1 -0
  174. package/dist/cli/service.js +95 -0
  175. package/dist/cli/service.js.map +1 -0
  176. package/dist/cli/types.d.ts +47 -0
  177. package/dist/cli/types.d.ts.map +1 -0
  178. package/dist/cli/types.js +20 -0
  179. package/dist/cli/types.js.map +1 -0
  180. package/dist/cli/wizard.d.ts +11 -0
  181. package/dist/cli/wizard.d.ts.map +1 -0
  182. package/dist/cli/wizard.js +2 -0
  183. package/dist/cli/wizard.js.map +1 -0
  184. package/dist/cli/workspace-controller.d.ts +36 -0
  185. package/dist/cli/workspace-controller.d.ts.map +1 -0
  186. package/dist/cli/workspace-controller.js +896 -0
  187. package/dist/cli/workspace-controller.js.map +1 -0
  188. package/dist/cluster/client.d.ts +101 -0
  189. package/dist/cluster/client.d.ts.map +1 -0
  190. package/dist/cluster/client.js +256 -0
  191. package/dist/cluster/client.js.map +1 -0
  192. package/dist/cluster/cluster.d.ts +82 -0
  193. package/dist/cluster/cluster.d.ts.map +1 -0
  194. package/dist/cluster/cluster.js +27 -0
  195. package/dist/cluster/cluster.js.map +1 -0
  196. package/dist/cluster/coordinator/cluster-node.model.d.ts +14 -0
  197. package/dist/cluster/coordinator/cluster-node.model.d.ts.map +1 -0
  198. package/dist/cluster/coordinator/cluster-node.model.js +15 -0
  199. package/dist/cluster/coordinator/cluster-node.model.js.map +1 -0
  200. package/dist/cluster/coordinator/cluster-signals.d.ts +45 -0
  201. package/dist/cluster/coordinator/cluster-signals.d.ts.map +1 -0
  202. package/dist/cluster/coordinator/cluster-signals.js +24 -0
  203. package/dist/cluster/coordinator/cluster-signals.js.map +1 -0
  204. package/dist/cluster/coordinator/coordinator.process.d.ts +21 -0
  205. package/dist/cluster/coordinator/coordinator.process.d.ts.map +1 -0
  206. package/dist/cluster/coordinator/coordinator.process.js +221 -0
  207. package/dist/cluster/coordinator/coordinator.process.js.map +1 -0
  208. package/dist/cluster/coordinator/index.d.ts +13 -0
  209. package/dist/cluster/coordinator/index.d.ts.map +1 -0
  210. package/dist/cluster/coordinator/index.js +13 -0
  211. package/dist/cluster/coordinator/index.js.map +1 -0
  212. package/dist/cluster/coordinator/node-lifecycle.d.ts +31 -0
  213. package/dist/cluster/coordinator/node-lifecycle.d.ts.map +1 -0
  214. package/dist/cluster/coordinator/node-lifecycle.js +178 -0
  215. package/dist/cluster/coordinator/node-lifecycle.js.map +1 -0
  216. package/dist/cluster/index.d.ts +45 -0
  217. package/dist/cluster/index.d.ts.map +1 -0
  218. package/dist/cluster/index.js +57 -0
  219. package/dist/cluster/index.js.map +1 -0
  220. package/dist/cluster/protocol.d.ts +204 -0
  221. package/dist/cluster/protocol.d.ts.map +1 -0
  222. package/dist/cluster/protocol.js +274 -0
  223. package/dist/cluster/protocol.js.map +1 -0
  224. package/dist/cluster/scheduled-task/builder.d.ts +24 -0
  225. package/dist/cluster/scheduled-task/builder.d.ts.map +1 -0
  226. package/dist/cluster/scheduled-task/builder.js +63 -0
  227. package/dist/cluster/scheduled-task/builder.js.map +1 -0
  228. package/dist/cluster/scheduled-task/factory.d.ts +76 -0
  229. package/dist/cluster/scheduled-task/factory.d.ts.map +1 -0
  230. package/dist/cluster/scheduled-task/factory.js +64 -0
  231. package/dist/cluster/scheduled-task/factory.js.map +1 -0
  232. package/dist/cluster/scheduled-task/index.d.ts +43 -0
  233. package/dist/cluster/scheduled-task/index.d.ts.map +1 -0
  234. package/dist/cluster/scheduled-task/index.js +45 -0
  235. package/dist/cluster/scheduled-task/index.js.map +1 -0
  236. package/dist/cluster/scheduled-task/transport.d.ts +12 -0
  237. package/dist/cluster/scheduled-task/transport.d.ts.map +1 -0
  238. package/dist/cluster/scheduled-task/transport.js +146 -0
  239. package/dist/cluster/scheduled-task/transport.js.map +1 -0
  240. package/dist/cluster/scheduled-task/types.d.ts +89 -0
  241. package/dist/cluster/scheduled-task/types.d.ts.map +1 -0
  242. package/dist/cluster/scheduled-task/types.js +7 -0
  243. package/dist/cluster/scheduled-task/types.js.map +1 -0
  244. package/dist/cluster/server.d.ts +87 -0
  245. package/dist/cluster/server.d.ts.map +1 -0
  246. package/dist/cluster/server.js +290 -0
  247. package/dist/cluster/server.js.map +1 -0
  248. package/dist/cluster/transport.d.ts +86 -0
  249. package/dist/cluster/transport.d.ts.map +1 -0
  250. package/dist/cluster/transport.js +138 -0
  251. package/dist/cluster/transport.js.map +1 -0
  252. package/dist/core/container-hooks.d.ts +22 -0
  253. package/dist/core/container-hooks.d.ts.map +1 -0
  254. package/dist/core/container-hooks.js +29 -0
  255. package/dist/core/container-hooks.js.map +1 -0
  256. package/dist/core/container-reflection.d.ts +71 -0
  257. package/dist/core/container-reflection.d.ts.map +1 -0
  258. package/dist/core/container-reflection.js +60 -0
  259. package/dist/core/container-reflection.js.map +1 -0
  260. package/dist/core/context.d.ts +146 -0
  261. package/dist/core/context.d.ts.map +1 -0
  262. package/dist/core/context.js +155 -0
  263. package/dist/core/context.js.map +1 -0
  264. package/dist/core/contribution.d.ts +152 -0
  265. package/dist/core/contribution.d.ts.map +1 -0
  266. package/dist/core/contribution.js +213 -0
  267. package/dist/core/contribution.js.map +1 -0
  268. package/dist/core/controller.contextual.d.ts +193 -0
  269. package/dist/core/controller.contextual.d.ts.map +1 -0
  270. package/dist/core/controller.contextual.js +459 -0
  271. package/dist/core/controller.contextual.js.map +1 -0
  272. package/dist/core/controller.d.ts +510 -0
  273. package/dist/core/controller.d.ts.map +1 -0
  274. package/dist/core/controller.js +411 -0
  275. package/dist/core/controller.js.map +1 -0
  276. package/dist/core/controller.procedure.d.ts +147 -0
  277. package/dist/core/controller.procedure.d.ts.map +1 -0
  278. package/dist/core/controller.procedure.js +115 -0
  279. package/dist/core/controller.procedure.js.map +1 -0
  280. package/dist/core/disposable.d.ts +126 -0
  281. package/dist/core/disposable.d.ts.map +1 -0
  282. package/dist/core/disposable.js +179 -0
  283. package/dist/core/disposable.js.map +1 -0
  284. package/dist/core/hmr.d.ts +83 -0
  285. package/dist/core/hmr.d.ts.map +1 -0
  286. package/dist/core/hmr.js +211 -0
  287. package/dist/core/hmr.js.map +1 -0
  288. package/dist/core/index.d.ts +17 -0
  289. package/dist/core/index.d.ts.map +1 -0
  290. package/dist/core/index.js +25 -0
  291. package/dist/core/index.js.map +1 -0
  292. package/dist/core/internal/routes.d.ts +26 -0
  293. package/dist/core/internal/routes.d.ts.map +1 -0
  294. package/dist/core/internal/routes.js +48 -0
  295. package/dist/core/internal/routes.js.map +1 -0
  296. package/dist/core/lifecycle-impl.d.ts +45 -0
  297. package/dist/core/lifecycle-impl.d.ts.map +1 -0
  298. package/dist/core/lifecycle-impl.js +102 -0
  299. package/dist/core/lifecycle-impl.js.map +1 -0
  300. package/dist/core/lifecycle.d.ts +86 -0
  301. package/dist/core/lifecycle.d.ts.map +1 -0
  302. package/dist/core/lifecycle.js +38 -0
  303. package/dist/core/lifecycle.js.map +1 -0
  304. package/dist/core/logger.d.ts +282 -0
  305. package/dist/core/logger.d.ts.map +1 -0
  306. package/dist/core/logger.js +368 -0
  307. package/dist/core/logger.js.map +1 -0
  308. package/dist/core/middleware.d.ts +108 -0
  309. package/dist/core/middleware.d.ts.map +1 -0
  310. package/dist/core/middleware.js +60 -0
  311. package/dist/core/middleware.js.map +1 -0
  312. package/dist/core/openapi-methods.d.ts +61 -0
  313. package/dist/core/openapi-methods.d.ts.map +1 -0
  314. package/dist/core/openapi-methods.js +53 -0
  315. package/dist/core/openapi-methods.js.map +1 -0
  316. package/dist/core/plugin.d.ts +209 -0
  317. package/dist/core/plugin.d.ts.map +1 -0
  318. package/dist/core/plugin.js +36 -0
  319. package/dist/core/plugin.js.map +1 -0
  320. package/dist/core/scope-bridge.d.ts +19 -0
  321. package/dist/core/scope-bridge.d.ts.map +1 -0
  322. package/dist/core/scope-bridge.js +34 -0
  323. package/dist/core/scope-bridge.js.map +1 -0
  324. package/dist/core/service.d.ts +429 -0
  325. package/dist/core/service.d.ts.map +1 -0
  326. package/dist/core/service.js +875 -0
  327. package/dist/core/service.js.map +1 -0
  328. package/dist/features/channel/backend.d.ts +98 -0
  329. package/dist/features/channel/backend.d.ts.map +1 -0
  330. package/dist/features/channel/backend.js +75 -0
  331. package/dist/features/channel/backend.js.map +1 -0
  332. package/dist/features/channel/channel.d.ts +18 -0
  333. package/dist/features/channel/channel.d.ts.map +1 -0
  334. package/dist/features/channel/channel.js +219 -0
  335. package/dist/features/channel/channel.js.map +1 -0
  336. package/dist/features/channel/channels.d.ts +87 -0
  337. package/dist/features/channel/channels.d.ts.map +1 -0
  338. package/dist/features/channel/channels.js +252 -0
  339. package/dist/features/channel/channels.js.map +1 -0
  340. package/dist/features/channel/feature.d.ts +40 -0
  341. package/dist/features/channel/feature.d.ts.map +1 -0
  342. package/dist/features/channel/feature.js +44 -0
  343. package/dist/features/channel/feature.js.map +1 -0
  344. package/dist/features/channel/index.d.ts +41 -0
  345. package/dist/features/channel/index.d.ts.map +1 -0
  346. package/dist/features/channel/index.js +41 -0
  347. package/dist/features/channel/index.js.map +1 -0
  348. package/dist/features/channel/types.d.ts +165 -0
  349. package/dist/features/channel/types.d.ts.map +1 -0
  350. package/dist/features/channel/types.js +10 -0
  351. package/dist/features/channel/types.js.map +1 -0
  352. package/dist/features/config/cli/config-controller.d.ts +77 -0
  353. package/dist/features/config/cli/config-controller.d.ts.map +1 -0
  354. package/dist/features/config/cli/config-controller.js +209 -0
  355. package/dist/features/config/cli/config-controller.js.map +1 -0
  356. package/dist/features/config/cli/index.d.ts +9 -0
  357. package/dist/features/config/cli/index.d.ts.map +1 -0
  358. package/dist/features/config/cli/index.js +9 -0
  359. package/dist/features/config/cli/index.js.map +1 -0
  360. package/dist/features/config/cli/profile-controller.d.ts +87 -0
  361. package/dist/features/config/cli/profile-controller.d.ts.map +1 -0
  362. package/dist/features/config/cli/profile-controller.js +223 -0
  363. package/dist/features/config/cli/profile-controller.js.map +1 -0
  364. package/dist/features/config/cli/utils.d.ts +14 -0
  365. package/dist/features/config/cli/utils.d.ts.map +1 -0
  366. package/dist/features/config/cli/utils.js +29 -0
  367. package/dist/features/config/cli/utils.js.map +1 -0
  368. package/dist/features/config/config-of.d.ts +36 -0
  369. package/dist/features/config/config-of.d.ts.map +1 -0
  370. package/dist/features/config/config-of.js +36 -0
  371. package/dist/features/config/config-of.js.map +1 -0
  372. package/dist/features/config/config-service.d.ts +54 -0
  373. package/dist/features/config/config-service.d.ts.map +1 -0
  374. package/dist/features/config/config-service.js +184 -0
  375. package/dist/features/config/config-service.js.map +1 -0
  376. package/dist/features/config/create-config.d.ts +21 -0
  377. package/dist/features/config/create-config.d.ts.map +1 -0
  378. package/dist/features/config/create-config.js +16 -0
  379. package/dist/features/config/create-config.js.map +1 -0
  380. package/dist/features/config/define-config-partial.d.ts +13 -0
  381. package/dist/features/config/define-config-partial.d.ts.map +1 -0
  382. package/dist/features/config/define-config-partial.js +19 -0
  383. package/dist/features/config/define-config-partial.js.map +1 -0
  384. package/dist/features/config/env-service.d.ts +54 -0
  385. package/dist/features/config/env-service.d.ts.map +1 -0
  386. package/dist/features/config/env-service.js +115 -0
  387. package/dist/features/config/env-service.js.map +1 -0
  388. package/dist/features/config/file-watcher.d.ts +13 -0
  389. package/dist/features/config/file-watcher.d.ts.map +1 -0
  390. package/dist/features/config/file-watcher.js +98 -0
  391. package/dist/features/config/file-watcher.js.map +1 -0
  392. package/dist/features/config/index.d.ts +21 -0
  393. package/dist/features/config/index.d.ts.map +1 -0
  394. package/dist/features/config/index.js +24 -0
  395. package/dist/features/config/index.js.map +1 -0
  396. package/dist/features/config/profile-service.d.ts +59 -0
  397. package/dist/features/config/profile-service.d.ts.map +1 -0
  398. package/dist/features/config/profile-service.js +114 -0
  399. package/dist/features/config/profile-service.js.map +1 -0
  400. package/dist/features/config/types.d.ts +38 -0
  401. package/dist/features/config/types.d.ts.map +1 -0
  402. package/dist/features/config/types.js +17 -0
  403. package/dist/features/config/types.js.map +1 -0
  404. package/dist/features/contract/contract.d.ts +264 -0
  405. package/dist/features/contract/contract.d.ts.map +1 -0
  406. package/dist/features/contract/contract.js +183 -0
  407. package/dist/features/contract/contract.js.map +1 -0
  408. package/dist/features/contract/index.d.ts +2 -0
  409. package/dist/features/contract/index.d.ts.map +1 -0
  410. package/dist/features/contract/index.js +2 -0
  411. package/dist/features/contract/index.js.map +1 -0
  412. package/dist/features/env/contribute.d.ts +70 -0
  413. package/dist/features/env/contribute.d.ts.map +1 -0
  414. package/dist/features/env/contribute.js +195 -0
  415. package/dist/features/env/contribute.js.map +1 -0
  416. package/dist/features/environment/create-environment.d.ts +58 -0
  417. package/dist/features/environment/create-environment.d.ts.map +1 -0
  418. package/dist/features/environment/create-environment.js +22 -0
  419. package/dist/features/environment/create-environment.js.map +1 -0
  420. package/dist/features/environment/index.d.ts +12 -0
  421. package/dist/features/environment/index.d.ts.map +1 -0
  422. package/dist/features/environment/index.js +10 -0
  423. package/dist/features/environment/index.js.map +1 -0
  424. package/dist/features/environment/load.d.ts +59 -0
  425. package/dist/features/environment/load.d.ts.map +1 -0
  426. package/dist/features/environment/load.js +117 -0
  427. package/dist/features/environment/load.js.map +1 -0
  428. package/dist/features/environment/types.d.ts +165 -0
  429. package/dist/features/environment/types.d.ts.map +1 -0
  430. package/dist/features/environment/types.js +18 -0
  431. package/dist/features/environment/types.js.map +1 -0
  432. package/dist/features/feature-flags/create-feature-flag-provider.d.ts +21 -0
  433. package/dist/features/feature-flags/create-feature-flag-provider.d.ts.map +1 -0
  434. package/dist/features/feature-flags/create-feature-flag-provider.js +16 -0
  435. package/dist/features/feature-flags/create-feature-flag-provider.js.map +1 -0
  436. package/dist/features/feature-flags/define-feature-flag-partial.d.ts +20 -0
  437. package/dist/features/feature-flags/define-feature-flag-partial.d.ts.map +1 -0
  438. package/dist/features/feature-flags/define-feature-flag-partial.js +26 -0
  439. package/dist/features/feature-flags/define-feature-flag-partial.js.map +1 -0
  440. package/dist/features/feature-flags/feature-flag-of.d.ts +16 -0
  441. package/dist/features/feature-flags/feature-flag-of.d.ts.map +1 -0
  442. package/dist/features/feature-flags/feature-flag-of.js +16 -0
  443. package/dist/features/feature-flags/feature-flag-of.js.map +1 -0
  444. package/dist/features/feature-flags/feature-flag-service.d.ts +22 -0
  445. package/dist/features/feature-flags/feature-flag-service.d.ts.map +1 -0
  446. package/dist/features/feature-flags/feature-flag-service.js +112 -0
  447. package/dist/features/feature-flags/feature-flag-service.js.map +1 -0
  448. package/dist/features/feature-flags/index.d.ts +15 -0
  449. package/dist/features/feature-flags/index.d.ts.map +1 -0
  450. package/dist/features/feature-flags/index.js +12 -0
  451. package/dist/features/feature-flags/index.js.map +1 -0
  452. package/dist/features/feature-flags/types.d.ts +30 -0
  453. package/dist/features/feature-flags/types.d.ts.map +1 -0
  454. package/dist/features/feature-flags/types.js +8 -0
  455. package/dist/features/feature-flags/types.js.map +1 -0
  456. package/dist/features/index.d.ts +6 -0
  457. package/dist/features/index.d.ts.map +1 -0
  458. package/dist/features/index.js +7 -0
  459. package/dist/features/index.js.map +1 -0
  460. package/dist/features/lock/index.d.ts +4 -0
  461. package/dist/features/lock/index.d.ts.map +1 -0
  462. package/dist/features/lock/index.js +4 -0
  463. package/dist/features/lock/index.js.map +1 -0
  464. package/dist/features/lock/lock-service.d.ts +74 -0
  465. package/dist/features/lock/lock-service.d.ts.map +1 -0
  466. package/dist/features/lock/lock-service.js +210 -0
  467. package/dist/features/lock/lock-service.js.map +1 -0
  468. package/dist/features/lock/memory.d.ts +60 -0
  469. package/dist/features/lock/memory.d.ts.map +1 -0
  470. package/dist/features/lock/memory.js +194 -0
  471. package/dist/features/lock/memory.js.map +1 -0
  472. package/dist/features/lock/types.d.ts +151 -0
  473. package/dist/features/lock/types.d.ts.map +1 -0
  474. package/dist/features/lock/types.js +17 -0
  475. package/dist/features/lock/types.js.map +1 -0
  476. package/dist/features/memory/index.d.ts +18 -0
  477. package/dist/features/memory/index.d.ts.map +1 -0
  478. package/dist/features/memory/index.js +18 -0
  479. package/dist/features/memory/index.js.map +1 -0
  480. package/dist/features/memory/lock-feature.d.ts +21 -0
  481. package/dist/features/memory/lock-feature.d.ts.map +1 -0
  482. package/dist/features/memory/lock-feature.js +24 -0
  483. package/dist/features/memory/lock-feature.js.map +1 -0
  484. package/dist/features/secrets/create-secret-provider.d.ts +31 -0
  485. package/dist/features/secrets/create-secret-provider.d.ts.map +1 -0
  486. package/dist/features/secrets/create-secret-provider.js +26 -0
  487. package/dist/features/secrets/create-secret-provider.js.map +1 -0
  488. package/dist/features/secrets/define-secret-partial.d.ts +16 -0
  489. package/dist/features/secrets/define-secret-partial.d.ts.map +1 -0
  490. package/dist/features/secrets/define-secret-partial.js +26 -0
  491. package/dist/features/secrets/define-secret-partial.js.map +1 -0
  492. package/dist/features/secrets/index.d.ts +17 -0
  493. package/dist/features/secrets/index.d.ts.map +1 -0
  494. package/dist/features/secrets/index.js +14 -0
  495. package/dist/features/secrets/index.js.map +1 -0
  496. package/dist/features/secrets/secret-of.d.ts +19 -0
  497. package/dist/features/secrets/secret-of.d.ts.map +1 -0
  498. package/dist/features/secrets/secret-of.js +21 -0
  499. package/dist/features/secrets/secret-of.js.map +1 -0
  500. package/dist/features/secrets/secret-service.d.ts +21 -0
  501. package/dist/features/secrets/secret-service.d.ts.map +1 -0
  502. package/dist/features/secrets/secret-service.js +28 -0
  503. package/dist/features/secrets/secret-service.js.map +1 -0
  504. package/dist/features/secrets/types.d.ts +30 -0
  505. package/dist/features/secrets/types.d.ts.map +1 -0
  506. package/dist/features/secrets/types.js +8 -0
  507. package/dist/features/secrets/types.js.map +1 -0
  508. package/dist/features/vault/env-var-vault.d.ts +24 -0
  509. package/dist/features/vault/env-var-vault.d.ts.map +1 -0
  510. package/dist/features/vault/env-var-vault.js +43 -0
  511. package/dist/features/vault/env-var-vault.js.map +1 -0
  512. package/dist/features/vault/hardcoded-vault.d.ts +34 -0
  513. package/dist/features/vault/hardcoded-vault.d.ts.map +1 -0
  514. package/dist/features/vault/hardcoded-vault.js +46 -0
  515. package/dist/features/vault/hardcoded-vault.js.map +1 -0
  516. package/dist/features/vault/hashicorp-vault.d.ts +32 -0
  517. package/dist/features/vault/hashicorp-vault.d.ts.map +1 -0
  518. package/dist/features/vault/hashicorp-vault.js +69 -0
  519. package/dist/features/vault/hashicorp-vault.js.map +1 -0
  520. package/dist/features/vault/index.d.ts +13 -0
  521. package/dist/features/vault/index.d.ts.map +1 -0
  522. package/dist/features/vault/index.js +12 -0
  523. package/dist/features/vault/index.js.map +1 -0
  524. package/dist/features/vault/kubernetes-vault.d.ts +27 -0
  525. package/dist/features/vault/kubernetes-vault.d.ts.map +1 -0
  526. package/dist/features/vault/kubernetes-vault.js +51 -0
  527. package/dist/features/vault/kubernetes-vault.js.map +1 -0
  528. package/dist/features/vault/types.d.ts +41 -0
  529. package/dist/features/vault/types.d.ts.map +1 -0
  530. package/dist/features/vault/types.js +21 -0
  531. package/dist/features/vault/types.js.map +1 -0
  532. package/dist/index.d.ts +78 -0
  533. package/dist/index.d.ts.map +1 -0
  534. package/dist/index.js +48 -0
  535. package/dist/index.js.map +1 -0
  536. package/dist/justscale.d.ts +63 -0
  537. package/dist/justscale.d.ts.map +1 -0
  538. package/dist/justscale.js +501 -0
  539. package/dist/justscale.js.map +1 -0
  540. package/dist/kernel/adapter.d.ts +9 -0
  541. package/dist/kernel/adapter.d.ts.map +1 -0
  542. package/dist/kernel/adapter.js +2 -0
  543. package/dist/kernel/adapter.js.map +1 -0
  544. package/dist/kernel/kernel.d.ts +15 -0
  545. package/dist/kernel/kernel.d.ts.map +1 -0
  546. package/dist/kernel/kernel.js +134 -0
  547. package/dist/kernel/kernel.js.map +1 -0
  548. package/dist/models/access.d.ts +26 -0
  549. package/dist/models/access.d.ts.map +1 -0
  550. package/dist/models/access.js +126 -0
  551. package/dist/models/access.js.map +1 -0
  552. package/dist/models/apply-types-config.d.ts +52 -0
  553. package/dist/models/apply-types-config.d.ts.map +1 -0
  554. package/dist/models/apply-types-config.js +47 -0
  555. package/dist/models/apply-types-config.js.map +1 -0
  556. package/dist/models/define-model.d.ts +249 -0
  557. package/dist/models/define-model.d.ts.map +1 -0
  558. package/dist/models/define-model.js +388 -0
  559. package/dist/models/define-model.js.map +1 -0
  560. package/dist/models/field.d.ts +309 -0
  561. package/dist/models/field.d.ts.map +1 -0
  562. package/dist/models/field.js +312 -0
  563. package/dist/models/field.js.map +1 -0
  564. package/dist/models/in-memory/condition-evaluator.d.ts +53 -0
  565. package/dist/models/in-memory/condition-evaluator.d.ts.map +1 -0
  566. package/dist/models/in-memory/condition-evaluator.js +593 -0
  567. package/dist/models/in-memory/condition-evaluator.js.map +1 -0
  568. package/dist/models/in-memory/in-memory-model.d.ts +89 -0
  569. package/dist/models/in-memory/in-memory-model.d.ts.map +1 -0
  570. package/dist/models/in-memory/in-memory-model.js +101 -0
  571. package/dist/models/in-memory/in-memory-model.js.map +1 -0
  572. package/dist/models/in-memory/in-memory-repository.d.ts +208 -0
  573. package/dist/models/in-memory/in-memory-repository.d.ts.map +1 -0
  574. package/dist/models/in-memory/in-memory-repository.js +618 -0
  575. package/dist/models/in-memory/in-memory-repository.js.map +1 -0
  576. package/dist/models/in-memory/in-memory-scheduled-task.repository.d.ts +92 -0
  577. package/dist/models/in-memory/in-memory-scheduled-task.repository.d.ts.map +1 -0
  578. package/dist/models/in-memory/in-memory-scheduled-task.repository.js +395 -0
  579. package/dist/models/in-memory/in-memory-scheduled-task.repository.js.map +1 -0
  580. package/dist/models/in-memory/index.d.ts +35 -0
  581. package/dist/models/in-memory/index.d.ts.map +1 -0
  582. package/dist/models/in-memory/index.js +36 -0
  583. package/dist/models/in-memory/index.js.map +1 -0
  584. package/dist/models/index.d.ts +52 -0
  585. package/dist/models/index.d.ts.map +1 -0
  586. package/dist/models/index.js +86 -0
  587. package/dist/models/index.js.map +1 -0
  588. package/dist/models/model-name-registry.d.ts +16 -0
  589. package/dist/models/model-name-registry.d.ts.map +1 -0
  590. package/dist/models/model-name-registry.js +19 -0
  591. package/dist/models/model-name-registry.js.map +1 -0
  592. package/dist/models/model.d.ts +15 -0
  593. package/dist/models/model.d.ts.map +1 -0
  594. package/dist/models/model.js +114 -0
  595. package/dist/models/model.js.map +1 -0
  596. package/dist/models/model.repository.d.ts +318 -0
  597. package/dist/models/model.repository.d.ts.map +1 -0
  598. package/dist/models/model.repository.js +146 -0
  599. package/dist/models/model.repository.js.map +1 -0
  600. package/dist/models/observable.d.ts +15 -0
  601. package/dist/models/observable.d.ts.map +1 -0
  602. package/dist/models/observable.js +64 -0
  603. package/dist/models/observable.js.map +1 -0
  604. package/dist/models/proxy.d.ts +5 -0
  605. package/dist/models/proxy.d.ts.map +1 -0
  606. package/dist/models/proxy.js +407 -0
  607. package/dist/models/proxy.js.map +1 -0
  608. package/dist/models/query.d.ts +574 -0
  609. package/dist/models/query.d.ts.map +1 -0
  610. package/dist/models/query.js +701 -0
  611. package/dist/models/query.js.map +1 -0
  612. package/dist/models/reference/reference.d.ts +229 -0
  613. package/dist/models/reference/reference.d.ts.map +1 -0
  614. package/dist/models/reference/reference.js +331 -0
  615. package/dist/models/reference/reference.js.map +1 -0
  616. package/dist/models/reference/transient-ref.d.ts +123 -0
  617. package/dist/models/reference/transient-ref.d.ts.map +1 -0
  618. package/dist/models/reference/transient-ref.js +152 -0
  619. package/dist/models/reference/transient-ref.js.map +1 -0
  620. package/dist/models/repository.d.ts +53 -0
  621. package/dist/models/repository.d.ts.map +1 -0
  622. package/dist/models/repository.js +37 -0
  623. package/dist/models/repository.js.map +1 -0
  624. package/dist/models/scheduled-task/index.d.ts +13 -0
  625. package/dist/models/scheduled-task/index.d.ts.map +1 -0
  626. package/dist/models/scheduled-task/index.js +12 -0
  627. package/dist/models/scheduled-task/index.js.map +1 -0
  628. package/dist/models/scheduled-task/scheduled-task.d.ts +73 -0
  629. package/dist/models/scheduled-task/scheduled-task.d.ts.map +1 -0
  630. package/dist/models/scheduled-task/scheduled-task.js +95 -0
  631. package/dist/models/scheduled-task/scheduled-task.js.map +1 -0
  632. package/dist/models/scheduled-task/scheduled-task.repository.d.ts +150 -0
  633. package/dist/models/scheduled-task/scheduled-task.repository.d.ts.map +1 -0
  634. package/dist/models/scheduled-task/scheduled-task.repository.js +40 -0
  635. package/dist/models/scheduled-task/scheduled-task.repository.js.map +1 -0
  636. package/dist/models/stream.d.ts +139 -0
  637. package/dist/models/stream.d.ts.map +1 -0
  638. package/dist/models/stream.js +153 -0
  639. package/dist/models/stream.js.map +1 -0
  640. package/dist/models/symbols.d.ts +73 -0
  641. package/dist/models/symbols.d.ts.map +1 -0
  642. package/dist/models/symbols.js +97 -0
  643. package/dist/models/symbols.js.map +1 -0
  644. package/dist/models/types.d.ts +291 -0
  645. package/dist/models/types.d.ts.map +1 -0
  646. package/dist/models/types.js +50 -0
  647. package/dist/models/types.js.map +1 -0
  648. package/dist/models/watch.d.ts +27 -0
  649. package/dist/models/watch.d.ts.map +1 -0
  650. package/dist/models/watch.js +124 -0
  651. package/dist/models/watch.js.map +1 -0
  652. package/dist/models/zod-ref.d.ts +46 -0
  653. package/dist/models/zod-ref.d.ts.map +1 -0
  654. package/dist/models/zod-ref.js +31 -0
  655. package/dist/models/zod-ref.js.map +1 -0
  656. package/dist/process/builtin-serializers.d.ts +19 -0
  657. package/dist/process/builtin-serializers.d.ts.map +1 -0
  658. package/dist/process/builtin-serializers.js +213 -0
  659. package/dist/process/builtin-serializers.js.map +1 -0
  660. package/dist/process/cluster-plugin.d.ts +129 -0
  661. package/dist/process/cluster-plugin.d.ts.map +1 -0
  662. package/dist/process/cluster-plugin.js +175 -0
  663. package/dist/process/cluster-plugin.js.map +1 -0
  664. package/dist/process/createProcess.d.ts +67 -0
  665. package/dist/process/createProcess.d.ts.map +1 -0
  666. package/dist/process/createProcess.js +111 -0
  667. package/dist/process/createProcess.js.map +1 -0
  668. package/dist/process/define-signals.d.ts +113 -0
  669. package/dist/process/define-signals.d.ts.map +1 -0
  670. package/dist/process/define-signals.js +222 -0
  671. package/dist/process/define-signals.js.map +1 -0
  672. package/dist/process/delay-controller.d.ts +35 -0
  673. package/dist/process/delay-controller.d.ts.map +1 -0
  674. package/dist/process/delay-controller.js +55 -0
  675. package/dist/process/delay-controller.js.map +1 -0
  676. package/dist/process/index.d.ts +38 -0
  677. package/dist/process/index.d.ts.map +1 -0
  678. package/dist/process/index.js +47 -0
  679. package/dist/process/index.js.map +1 -0
  680. package/dist/process/primitives.d.ts +393 -0
  681. package/dist/process/primitives.d.ts.map +1 -0
  682. package/dist/process/primitives.js +325 -0
  683. package/dist/process/primitives.js.map +1 -0
  684. package/dist/process/serialization.d.ts +58 -0
  685. package/dist/process/serialization.d.ts.map +1 -0
  686. package/dist/process/serialization.js +220 -0
  687. package/dist/process/serialization.js.map +1 -0
  688. package/dist/process/stream-utils.d.ts +123 -0
  689. package/dist/process/stream-utils.d.ts.map +1 -0
  690. package/dist/process/stream-utils.js +247 -0
  691. package/dist/process/stream-utils.js.map +1 -0
  692. package/dist/process/testing/clock.d.ts +115 -0
  693. package/dist/process/testing/clock.d.ts.map +1 -0
  694. package/dist/process/testing/clock.js +166 -0
  695. package/dist/process/testing/clock.js.map +1 -0
  696. package/dist/process/testing/index.d.ts +9 -0
  697. package/dist/process/testing/index.d.ts.map +1 -0
  698. package/dist/process/testing/index.js +9 -0
  699. package/dist/process/testing/index.js.map +1 -0
  700. package/dist/process/testing.d.ts +50 -0
  701. package/dist/process/testing.d.ts.map +1 -0
  702. package/dist/process/testing.js +59 -0
  703. package/dist/process/testing.js.map +1 -0
  704. package/dist/process/types.d.ts +540 -0
  705. package/dist/process/types.d.ts.map +1 -0
  706. package/dist/process/types.js +21 -0
  707. package/dist/process/types.js.map +1 -0
  708. package/dist/queue/index.d.ts +2 -0
  709. package/dist/queue/index.d.ts.map +1 -0
  710. package/dist/queue/index.js +2 -0
  711. package/dist/queue/index.js.map +1 -0
  712. package/dist/queue/queue.d.ts +34 -0
  713. package/dist/queue/queue.d.ts.map +1 -0
  714. package/dist/queue/queue.js +108 -0
  715. package/dist/queue/queue.js.map +1 -0
  716. package/dist/runtime/process/compiled.d.ts +56 -0
  717. package/dist/runtime/process/compiled.d.ts.map +1 -0
  718. package/dist/runtime/process/compiled.js +221 -0
  719. package/dist/runtime/process/compiled.js.map +1 -0
  720. package/dist/runtime/process/executor.d.ts +279 -0
  721. package/dist/runtime/process/executor.d.ts.map +1 -0
  722. package/dist/runtime/process/executor.js +1941 -0
  723. package/dist/runtime/process/executor.js.map +1 -0
  724. package/dist/runtime/process/factory.d.ts +72 -0
  725. package/dist/runtime/process/factory.d.ts.map +1 -0
  726. package/dist/runtime/process/factory.js +78 -0
  727. package/dist/runtime/process/factory.js.map +1 -0
  728. package/dist/runtime/process/freeze.d.ts +5 -0
  729. package/dist/runtime/process/freeze.d.ts.map +1 -0
  730. package/dist/runtime/process/freeze.js +94 -0
  731. package/dist/runtime/process/freeze.js.map +1 -0
  732. package/dist/runtime/process/scheduled-task-timer.d.ts +52 -0
  733. package/dist/runtime/process/scheduled-task-timer.d.ts.map +1 -0
  734. package/dist/runtime/process/scheduled-task-timer.js +104 -0
  735. package/dist/runtime/process/scheduled-task-timer.js.map +1 -0
  736. package/dist/runtime/process/signal-bus.d.ts +186 -0
  737. package/dist/runtime/process/signal-bus.d.ts.map +1 -0
  738. package/dist/runtime/process/signal-bus.js +256 -0
  739. package/dist/runtime/process/signal-bus.js.map +1 -0
  740. package/dist/runtime/process/state-serializer.d.ts +30 -0
  741. package/dist/runtime/process/state-serializer.d.ts.map +1 -0
  742. package/dist/runtime/process/state-serializer.js +244 -0
  743. package/dist/runtime/process/state-serializer.js.map +1 -0
  744. package/dist/runtime/process/storage.d.ts +96 -0
  745. package/dist/runtime/process/storage.d.ts.map +1 -0
  746. package/dist/runtime/process/storage.js +165 -0
  747. package/dist/runtime/process/storage.js.map +1 -0
  748. package/dist/runtime/process/timer-scheduler.d.ts +115 -0
  749. package/dist/runtime/process/timer-scheduler.d.ts.map +1 -0
  750. package/dist/runtime/process/timer-scheduler.js +192 -0
  751. package/dist/runtime/process/timer-scheduler.js.map +1 -0
  752. package/dist/runtime/process/trace.d.ts +17 -0
  753. package/dist/runtime/process/trace.d.ts.map +1 -0
  754. package/dist/runtime/process/trace.js +26 -0
  755. package/dist/runtime/process/trace.js.map +1 -0
  756. package/dist/runtime/protobuf/encoding/index.d.ts +26 -0
  757. package/dist/runtime/protobuf/encoding/index.d.ts.map +1 -0
  758. package/dist/runtime/protobuf/encoding/index.js +30 -0
  759. package/dist/runtime/protobuf/encoding/index.js.map +1 -0
  760. package/dist/runtime/protobuf/encoding/reader.d.ts +182 -0
  761. package/dist/runtime/protobuf/encoding/reader.d.ts.map +1 -0
  762. package/dist/runtime/protobuf/encoding/reader.js +353 -0
  763. package/dist/runtime/protobuf/encoding/reader.js.map +1 -0
  764. package/dist/runtime/protobuf/encoding/varint.d.ts +67 -0
  765. package/dist/runtime/protobuf/encoding/varint.d.ts.map +1 -0
  766. package/dist/runtime/protobuf/encoding/varint.js +117 -0
  767. package/dist/runtime/protobuf/encoding/varint.js.map +1 -0
  768. package/dist/runtime/protobuf/encoding/wire-types.d.ts +62 -0
  769. package/dist/runtime/protobuf/encoding/wire-types.d.ts.map +1 -0
  770. package/dist/runtime/protobuf/encoding/wire-types.js +103 -0
  771. package/dist/runtime/protobuf/encoding/wire-types.js.map +1 -0
  772. package/dist/runtime/protobuf/encoding/writer.d.ts +147 -0
  773. package/dist/runtime/protobuf/encoding/writer.d.ts.map +1 -0
  774. package/dist/runtime/protobuf/encoding/writer.js +214 -0
  775. package/dist/runtime/protobuf/encoding/writer.js.map +1 -0
  776. package/dist/runtime/protobuf/index.d.ts +3 -0
  777. package/dist/runtime/protobuf/index.d.ts.map +1 -0
  778. package/dist/runtime/protobuf/index.js +3 -0
  779. package/dist/runtime/protobuf/index.js.map +1 -0
  780. package/dist/runtime/protobuf/serialized.d.ts +48 -0
  781. package/dist/runtime/protobuf/serialized.d.ts.map +1 -0
  782. package/dist/runtime/protobuf/serialized.js +517 -0
  783. package/dist/runtime/protobuf/serialized.js.map +1 -0
  784. package/package.json +209 -0
@@ -0,0 +1,875 @@
1
+ /**
2
+ * Dependency Injection System
3
+ *
4
+ * Uses TypeScript's type system to ensure all dependencies are provided at compile time.
5
+ */
6
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
7
+ if (value !== null && value !== void 0) {
8
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
9
+ var dispose, inner;
10
+ if (async) {
11
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
12
+ dispose = value[Symbol.asyncDispose];
13
+ }
14
+ if (dispose === void 0) {
15
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
16
+ dispose = value[Symbol.dispose];
17
+ if (async) inner = dispose;
18
+ }
19
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
20
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
21
+ env.stack.push({ value: value, dispose: dispose, async: async });
22
+ }
23
+ else if (async) {
24
+ env.stack.push({ async: true });
25
+ }
26
+ return value;
27
+ };
28
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
29
+ return function (env) {
30
+ function fail(e) {
31
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
32
+ env.hasError = true;
33
+ }
34
+ var r, s = 0;
35
+ function next() {
36
+ while (r = env.stack.pop()) {
37
+ try {
38
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
39
+ if (r.dispose) {
40
+ var result = r.dispose.call(r.value);
41
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
42
+ }
43
+ else s |= 1;
44
+ }
45
+ catch (e) {
46
+ fail(e);
47
+ }
48
+ }
49
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
50
+ if (env.hasError) throw env.error;
51
+ }
52
+ return next();
53
+ };
54
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
55
+ var e = new Error(message);
56
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
57
+ });
58
+ import { ConsoleLoggerFactory, isLoggerToken, } from './logger.js';
59
+ import { isLifecycleToken, } from './lifecycle.js';
60
+ import { pushScope } from './disposable.js';
61
+ import { __wrapHmrStateForSave } from './hmr.js';
62
+ import { getModelsWithInject } from '../models/define-model.js';
63
+ import { MODEL_INJECT, MODEL_SERVICE } from '../models/symbols.js';
64
+ // ============================================================================
65
+ // Abstract Class Definition
66
+ // ============================================================================
67
+ /**
68
+ * Define an abstract class for use as a DI token.
69
+ *
70
+ * Use `abstract class MyAbstract extends defineAbstract<MyInterface>() {}`
71
+ * to create a clean abstract class that serves as a DI token.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Define the interface
76
+ * interface ProcessStorage {
77
+ * save(state: ProcessState): Promise<void>
78
+ * load(instanceId: string): Promise<ProcessState | null>
79
+ * }
80
+ *
81
+ * // Create abstract class as DI token
82
+ * export abstract class AbstractProcessStorage extends defineAbstract<ProcessStorage>() {}
83
+ *
84
+ * // Implementation uses defineService with provides
85
+ * export class InMemoryProcessStorage extends defineService({
86
+ * inject: {},
87
+ * provides: [AbstractProcessStorage],
88
+ * factory: () => ({ ... })
89
+ * }) {}
90
+ * ```
91
+ */
92
+ export function defineAbstract(name) {
93
+ function AbstractImpl() {
94
+ // Only throw if instantiated directly, not via a subclass extending this
95
+ // new.target is the constructor that was directly invoked with 'new'
96
+ if (new.target === AbstractImpl) {
97
+ throw new Error(`${name ?? 'Abstract class'} cannot be instantiated directly. Use container.resolve() instead.`);
98
+ }
99
+ }
100
+ if (name) {
101
+ Object.defineProperty(AbstractImpl, 'name', { value: name, configurable: true });
102
+ }
103
+ return AbstractImpl;
104
+ }
105
+ // ============================================================================
106
+ // Service Definition
107
+ // ============================================================================
108
+ /** Symbol for provides metadata */
109
+ export const SERVICE_PROVIDES = Symbol('justscale:serviceProvides');
110
+ /** Symbol for unique ServiceDef ID (legacy counter-based) */
111
+ export const SERVICE_ID = Symbol('justscale:serviceId');
112
+ /** Symbol for stable service ID (file path + export name, injected by compiler) */
113
+ export const SERVICE_STABLE_ID = Symbol('justscale:serviceStableId');
114
+ /** @internal Symbol key for dev-time extension surface on Container. */
115
+ export const CONTAINER_DEV = Symbol('justscale:containerDev');
116
+ const SERVICE_ID_COUNTER = Symbol.for('justscale:serviceIdCounter');
117
+ const _global = globalThis;
118
+ _global[SERVICE_ID_COUNTER] = _global[SERVICE_ID_COUNTER] ?? 0;
119
+ /** Get next unique ID (global) */
120
+ function nextServiceId() {
121
+ return ++_global[SERVICE_ID_COUNTER];
122
+ }
123
+ /** Read the SERVICE_PROVIDES tokens from a service definition. */
124
+ export function getServiceProvides(obj) {
125
+ return obj?.[SERVICE_PROVIDES];
126
+ }
127
+ /** Read the SERVICE_ID counter value from a service definition. */
128
+ export function getServiceIdValue(obj) {
129
+ return obj?.[SERVICE_ID];
130
+ }
131
+ /** Read the SERVICE_STABLE_ID from a service definition. */
132
+ export function getServiceStableId(obj) {
133
+ return obj?.[SERVICE_STABLE_ID];
134
+ }
135
+ /**
136
+ * Get the stable service ID from a token, if available.
137
+ * Returns the compiler-injected ID or falls back to a generated one.
138
+ */
139
+ export function getServiceId(token) {
140
+ const stableId = getServiceStableId(token);
141
+ if (stableId) {
142
+ return stableId;
143
+ }
144
+ const counterId = getServiceIdValue(token);
145
+ const name = typeof token === 'function' ? token.name : 'Service';
146
+ if (counterId !== undefined) {
147
+ return `${name}#${counterId}`;
148
+ }
149
+ return name || 'Anonymous';
150
+ }
151
+ /**
152
+ * Define a service class.
153
+ *
154
+ * Use `class MyService extends defineService({...}) {}` pattern
155
+ * to preserve type names in .d.ts output. This prevents TypeScript
156
+ * from inlining the full service type everywhere it's referenced.
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * // The class name "UserService" is preserved in .d.ts
161
+ * export class UserService extends defineService({
162
+ * inject: { users: UserRepository },
163
+ * factory: ({ users }) => ({
164
+ * register: async (email, password) => {...},
165
+ * findById: async (id) => {...},
166
+ * })
167
+ * }) {}
168
+ *
169
+ * container.register(UserService)
170
+ * const users = container.resolve(UserService)
171
+ *
172
+ * // Auto-bind to abstract class
173
+ * export class InMemoryStorage extends defineService({
174
+ * inject: {},
175
+ * provides: [AbstractStorage], // Auto-binds!
176
+ * factory: () => ({ ... })
177
+ * }) {}
178
+ * ```
179
+ */
180
+ export function defineService(config) {
181
+ const id = nextServiceId();
182
+ // Create a class-like object that TypeScript treats as extendable
183
+ // The constructor is never called - it's purely for type-level extends
184
+ function ServiceImpl() {
185
+ throw new Error('Service classes should not be instantiated directly. Use container.resolve() instead.');
186
+ }
187
+ // Attach static properties for DI resolution
188
+ ServiceImpl.deps = config.inject;
189
+ ServiceImpl.factory = config.factory;
190
+ ServiceImpl[SERVICE_ID] = id;
191
+ // Set SERVICE_PROVIDES if provided
192
+ if (config.provides && config.provides.length > 0) {
193
+ ServiceImpl[SERVICE_PROVIDES] = config.provides;
194
+ }
195
+ // Set stable service ID if provided (compiler-injected in dev mode)
196
+ if (config.__serviceId) {
197
+ ServiceImpl[SERVICE_STABLE_ID] = config.__serviceId;
198
+ }
199
+ return ServiceImpl;
200
+ }
201
+ // ============================================================================
202
+ // Container
203
+ // ============================================================================
204
+ /**
205
+ * Get a human-readable name for a service token.
206
+ */
207
+ function getTokenName(token) {
208
+ if (typeof token === 'function') {
209
+ return token.name || 'Anonymous';
210
+ }
211
+ // ServiceDef - try to find a meaningful name
212
+ return 'Service';
213
+ }
214
+ /**
215
+ * Thrown when `Container.resolve` detects a cycle in the dependency graph
216
+ * (e.g. A injects B and B injects A). The message lists the cycle in the
217
+ * order it was walked: `"Circular dependency: A -> B -> A"`.
218
+ *
219
+ * Without this, a direct cycle would recurse into `resolveInternal`
220
+ * synchronously until the engine throws `RangeError: Maximum call stack
221
+ * size exceeded`, which gives no information about *which* services are
222
+ * involved.
223
+ */
224
+ export class CircularDependencyError extends Error {
225
+ path;
226
+ constructor(path) {
227
+ super(`Circular dependency: ${path.join(' -> ')}`);
228
+ this.path = path;
229
+ this.name = 'CircularDependencyError';
230
+ }
231
+ }
232
+ export class Container {
233
+ instances = new Map();
234
+ factories = new Map();
235
+ /** Map from SERVICE_ID to the registered ServiceDef */
236
+ factoriesById = new Map();
237
+ /** Map from stable service ID to token (for HMR lookup) */
238
+ tokensByStableId = new Map();
239
+ /** Resolved deps for each service (for HMR method patching) */
240
+ resolvedDeps = new Map();
241
+ /** HMR state registry (keyed by service ID, holds state between reloads) */
242
+ hmrStateRegistry = new Map();
243
+ /**
244
+ * Backing boxes for function-type service instances. Values stored
245
+ * here are the MUTABLE `{ current }` cells that the public proxy
246
+ * delegates to via its `apply` / `get` / `set` traps. Key is the
247
+ * proxy reference that we handed to callers; mutating
248
+ * `box.current` transparently re-routes every future call.
249
+ *
250
+ * Present only for function-type instances - object instances don't
251
+ * need indirection because we can mutate them in place via
252
+ * `Object.assign`.
253
+ */
254
+ indirectionBoxes = new WeakMap();
255
+ /** Map of in-flight resolution promises to prevent duplicate instantiation during concurrent resolution */
256
+ pending = new Map();
257
+ /**
258
+ * Tokens currently being constructed (between entering resolveInternal
259
+ * and the factory returning). Used to detect A->B->A cycles that the
260
+ * `pending` map alone would not catch, because `pending` is populated
261
+ * *after* the recursive dep walk - a synchronous cycle never hits it.
262
+ * Tracked as an ordered list so we can report the full path on error.
263
+ */
264
+ resolving = [];
265
+ /**
266
+ * Current resolution context stack.
267
+ * Tracks which service is being resolved for contextual Logger creation.
268
+ */
269
+ resolutionStack = [];
270
+ /**
271
+ * Logger factory for creating contextual loggers.
272
+ * Can be replaced to use a custom logger implementation.
273
+ */
274
+ loggerFactory = new ConsoleLoggerFactory();
275
+ /**
276
+ * Lifecycle instance for hook registration.
277
+ * Set by the cluster builder during compile.
278
+ */
279
+ lifecycle = null;
280
+ /**
281
+ * Set the lifecycle instance (called by cluster builder during compile).
282
+ * This wires up the Lifecycle built-in token.
283
+ */
284
+ setLifecycle(lifecycle) {
285
+ this.lifecycle = lifecycle;
286
+ }
287
+ /** Register a service class (no deps, instantiated with new) */
288
+ registerClass(token) {
289
+ this.instances.set(token, new token());
290
+ return this;
291
+ }
292
+ /** Register a service definition (ServiceDef or Service class) */
293
+ register(def) {
294
+ this.factories.set(def, def);
295
+ // Also register by ID for cross-module lookup
296
+ const id = getServiceIdValue(def);
297
+ if (id !== undefined) {
298
+ this.factoriesById.set(id, def);
299
+ }
300
+ return this;
301
+ }
302
+ /** Register a service definition under a specific token (e.g., abstract class) */
303
+ registerFor(token, def) {
304
+ this.factories.set(token, def);
305
+ return this;
306
+ }
307
+ /** Register an already-created instance */
308
+ registerInstance(token, instance) {
309
+ this.instances.set(token, instance);
310
+ return this;
311
+ }
312
+ /**
313
+ * Symbol-keyed "dev extensions" - bundles all the extension-point
314
+ * methods dev tooling needs into one non-polluting surface.
315
+ * Consumers (e.g. `@justscale/hmr`) do:
316
+ *
317
+ * import { CONTAINER_DEV } from '@justscale/core';
318
+ * const dev = container[CONTAINER_DEV];
319
+ * dev.replaceInstance(token, newFactory);
320
+ *
321
+ * Nothing on the public `Container` shape mentions HMR or replace
322
+ * semantics - those live behind the symbol so they don't show up in
323
+ * normal autocomplete.
324
+ */
325
+ get [CONTAINER_DEV]() {
326
+ return {
327
+ hasServiceDef: (token) => this.factories.has(token),
328
+ registerStableId: (stableId, token) => {
329
+ this.tokensByStableId.set(stableId, token);
330
+ },
331
+ replaceInstance: (token, newFactory) => this.replaceInstanceImpl(token, newFactory),
332
+ };
333
+ }
334
+ /**
335
+ * If a factory returned a function (rather than an object with
336
+ * methods), wrap it in a Proxy that delegates through a mutable box.
337
+ * `replaceInstance` can then re-point the box at a new function, and
338
+ * every consumer holding the proxy invokes the new behaviour.
339
+ *
340
+ * For object instances this is a no-op - they get mutated in place
341
+ * via `Object.assign` instead, so no indirection is needed.
342
+ *
343
+ * Cost at call time is one `Proxy.apply` trap per invocation, which
344
+ * is noise for typical service workloads. In the hypothetical case
345
+ * where a hot inner loop invokes a function-type service millions of
346
+ * times, the overhead would matter; we accept it for the benefit of
347
+ * uniform replace-in-place semantics.
348
+ */
349
+ wrapIfFunction(instance) {
350
+ if (typeof instance !== 'function')
351
+ return instance;
352
+ const box = { current: instance };
353
+ const proxy = new Proxy(instance, {
354
+ apply(_t, thisArg, args) {
355
+ return box.current.apply(thisArg, args);
356
+ },
357
+ get(_t, prop, receiver) {
358
+ return Reflect.get(box.current, prop, receiver);
359
+ },
360
+ set(_t, prop, value, receiver) {
361
+ return Reflect.set(box.current, prop, value, receiver);
362
+ },
363
+ has(_t, prop) {
364
+ return Reflect.has(box.current, prop);
365
+ },
366
+ });
367
+ this.indirectionBoxes.set(proxy, box);
368
+ return proxy;
369
+ }
370
+ /**
371
+ * Replace the runtime behavior backing an already-resolved token
372
+ * without changing the outward reference that consumers hold.
373
+ *
374
+ * Runs `newFactory(cachedDeps, resolver)` → new instance. Then:
375
+ *
376
+ * - **Object instances:** delete keys that disappeared, `Object.assign`
377
+ * remaining keys on top. Handler closures over the old instance see
378
+ * the new methods on their next call.
379
+ *
380
+ * - **Function instances:** look up the indirection box stored at
381
+ * resolve time, update its `current` pointer. The proxy exposed to
382
+ * callers delegates `apply`/get/set through the box, so existing
383
+ * references keep working and invoke the new code.
384
+ *
385
+ * Accessible via `container[CONTAINER_DEV].replaceInstance(...)` -
386
+ * not on the public shape, to keep tooling-only capabilities out of
387
+ * everyday autocomplete.
388
+ *
389
+ * Singletons the factory created at construction time (Maps, sockets)
390
+ * are NOT preserved - register `lifecycle.register('hotReload')` to
391
+ * capture and re-inject such state across replacements.
392
+ */
393
+ async replaceInstanceImpl(token, newFactory) {
394
+ const oldInstance = this.instances.get(token);
395
+ const deps = this.resolvedDeps.get(token);
396
+ if (oldInstance === undefined || !deps) {
397
+ // Either never instantiated or never resolved. A future resolve
398
+ // will pick up whatever factory is current on the class.
399
+ return;
400
+ }
401
+ const resolver = Object.assign((t) => this.resolve(t), {
402
+ registerInstance: (t, instance) => {
403
+ this.registerInstance(t, instance);
404
+ },
405
+ });
406
+ const newInstance = await newFactory(deps, resolver);
407
+ // Function-type: update the indirection box behind the proxy.
408
+ const box = typeof oldInstance === 'object' && oldInstance !== null
409
+ ? this.indirectionBoxes.get(oldInstance)
410
+ : typeof oldInstance === 'function'
411
+ ? this.indirectionBoxes.get(oldInstance)
412
+ : undefined;
413
+ if (box !== undefined) {
414
+ if (typeof newInstance !== 'function') {
415
+ // Shape flipped from function → non-function. Can't swap in
416
+ // place - reset would break callers that hold the proxy.
417
+ return;
418
+ }
419
+ box.current = newInstance;
420
+ return;
421
+ }
422
+ // Object-type: key-level merge.
423
+ if (newInstance === null ||
424
+ typeof newInstance !== 'object' ||
425
+ typeof oldInstance !== 'object' ||
426
+ oldInstance === null) {
427
+ return;
428
+ }
429
+ for (const key of Object.keys(oldInstance)) {
430
+ if (!(key in newInstance)) {
431
+ delete oldInstance[key];
432
+ }
433
+ }
434
+ Object.assign(oldInstance, newInstance);
435
+ }
436
+ /**
437
+ * Set a custom logger factory.
438
+ * Use this to replace ConsoleLogger with your own implementation.
439
+ *
440
+ * @example
441
+ * ```typescript
442
+ * container.setLoggerFactory({
443
+ * create: (context) => new PinoLogger(context),
444
+ * });
445
+ * ```
446
+ */
447
+ setLoggerFactory(factory) {
448
+ this.loggerFactory = factory;
449
+ return this;
450
+ }
451
+ /**
452
+ * Create a logger with the current resolution context.
453
+ * Called internally when Logger is requested as a dependency.
454
+ */
455
+ createLogger(context) {
456
+ const ctx = context ?? this.resolutionStack[this.resolutionStack.length - 1] ?? 'app';
457
+ return this.loggerFactory.create(ctx);
458
+ }
459
+ /** Find a ServiceDef for a token (handles various lookup strategies) */
460
+ findServiceDef(token) {
461
+ // Try direct lookup
462
+ let def = this.factories.get(token);
463
+ // If not found by object identity, try by SERVICE_ID
464
+ if (!def) {
465
+ const tokenId = getServiceIdValue(token);
466
+ if (tokenId !== undefined) {
467
+ def = this.factoriesById.get(tokenId);
468
+ }
469
+ }
470
+ // If still not found and token is a ServiceDef, try to match by deps structure
471
+ if (!def && typeof token === 'object' && token !== null && 'deps' in token && 'factory' in token) {
472
+ const tokenDeps = token.deps;
473
+ const tokenKeys = Object.keys(tokenDeps).sort().join(',');
474
+ for (const [key, value] of this.factories.entries()) {
475
+ if (key === token)
476
+ continue; // Already checked
477
+ if (typeof key !== 'object' || key === null || !('deps' in key))
478
+ continue;
479
+ const keyDeps = key.deps;
480
+ const keyKeys = Object.keys(keyDeps).sort().join(',');
481
+ // Match if same dep keys and dep values match by name (handles different module instances)
482
+ if (tokenKeys === keyKeys) {
483
+ const depsMatch = Object.keys(tokenDeps).every(k => {
484
+ const a = tokenDeps[k];
485
+ const b = keyDeps[k];
486
+ // Compare by identity first
487
+ if (a === b)
488
+ return true;
489
+ // If both are functions (classes), compare by name
490
+ if (typeof a === 'function' && typeof b === 'function') {
491
+ return a.name === b.name;
492
+ }
493
+ return false;
494
+ });
495
+ if (depsMatch) {
496
+ def = value;
497
+ break;
498
+ }
499
+ }
500
+ }
501
+ }
502
+ return def;
503
+ }
504
+ /**
505
+ * Resolve a service (always async to support async factories).
506
+ *
507
+ * RepositoryToken overload: `ModelRepository.of(User)` returns the
508
+ * repository instance type, not the entity type. TypeScript picks
509
+ * overloads in order, so this runs for any RepositoryToken first;
510
+ * everything else falls through to the generic signature.
511
+ */
512
+ /**
513
+ * Synchronously return an already-instantiated service, or undefined if
514
+ * it hasn't been resolved yet. Does NOT trigger instantiation.
515
+ *
516
+ * Use sparingly — meant for hot paths that need to check current state
517
+ * (e.g. process executor lookup) without paying the cost of an async
518
+ * resolve. Most code should use `resolve(token)` and await it.
519
+ */
520
+ tryGetInstance(token) {
521
+ return this.instances.get(token);
522
+ }
523
+ async resolve(token) {
524
+ // Special case: Logger is NOT a singleton - each injection gets its own instance
525
+ if (isLoggerToken(token)) {
526
+ return this.createLogger();
527
+ }
528
+ // Special case: Lifecycle is a built-in singleton
529
+ if (isLifecycleToken(token)) {
530
+ if (!this.lifecycle) {
531
+ throw new Error('Lifecycle not initialized - are you using createClusterBuilder()? ' +
532
+ 'Make sure to call .build() and use the cluster, not raw Container.');
533
+ }
534
+ return this.lifecycle;
535
+ }
536
+ // Explicit `registerInstance(token, value)` wins over every other
537
+ // resolution path. Needed for sub-app bridges: when a sub-app
538
+ // `.requires(Config.of(X))`, the compose path registers a
539
+ // scope-switched value against the token object itself; without
540
+ // this check, the resolvable-token branch below would run its own
541
+ // `resolve(container)` and look up a partial symbol the sub-app
542
+ // scope doesn't have, returning undefined.
543
+ if (this.instances.has(token)) {
544
+ return this.instances.get(token);
545
+ }
546
+ // Resolvable tokens: ConfigToken / SecretToken / FeatureFlagToken.
547
+ // These carry their own resolve(container) function and read from
548
+ // instances keyed by a partial symbol.
549
+ const tokenAny = token;
550
+ if (tokenAny &&
551
+ typeof tokenAny === 'object' &&
552
+ typeof tokenAny.resolve === 'function' &&
553
+ typeof tokenAny.key === 'symbol' &&
554
+ !('factory' in tokenAny)) {
555
+ return tokenAny.resolve({
556
+ get: (key) => this.instances.get(key),
557
+ });
558
+ }
559
+ // Check if resolution is already in progress (prevents duplicate instantiation during concurrent resolution)
560
+ if (this.pending.has(token)) {
561
+ return this.pending.get(token);
562
+ }
563
+ // Also check if the underlying def is being resolved under a different token
564
+ const def = this.findServiceDef(token);
565
+ if (def && def !== token && this.pending.has(def)) {
566
+ return this.pending.get(def);
567
+ }
568
+ // Create and track the resolution promise
569
+ const resolutionPromise = this.resolveInternal(token);
570
+ this.pending.set(token, resolutionPromise);
571
+ // Also track under the def if different from token
572
+ if (def && def !== token) {
573
+ this.pending.set(def, resolutionPromise);
574
+ }
575
+ try {
576
+ const instance = await resolutionPromise;
577
+ return instance;
578
+ }
579
+ finally {
580
+ this.pending.delete(token);
581
+ if (def && def !== token) {
582
+ this.pending.delete(def);
583
+ }
584
+ }
585
+ }
586
+ /** Internal resolution logic */
587
+ async resolveInternal(token) {
588
+ const def = this.findServiceDef(token);
589
+ if (def) {
590
+ const env_1 = { stack: [], error: void 0, hasError: false };
591
+ try {
592
+ // Check if this def was already instantiated under a different token
593
+ // This happens when bindService maps multiple tokens to the same service
594
+ if (def !== token && this.instances.has(def)) {
595
+ const instance = this.instances.get(def);
596
+ // Cache under this token too for faster future lookups
597
+ this.instances.set(token, instance);
598
+ return instance;
599
+ }
600
+ // Cycle detection: if the def (or the token) is already being
601
+ // resolved further up the stack, we have a circular dependency.
602
+ // Throw a readable error listing the path instead of recursing
603
+ // until the engine throws a generic RangeError.
604
+ const cycleHit = this.resolving.indexOf(def) !== -1
605
+ ? def
606
+ : this.resolving.indexOf(token) !== -1
607
+ ? token
608
+ : undefined;
609
+ if (cycleHit !== undefined) {
610
+ const startIdx = this.resolving.indexOf(cycleHit);
611
+ const path = this.resolving
612
+ .slice(startIdx)
613
+ .map((t) => getTokenName(t));
614
+ path.push(getTokenName(cycleHit));
615
+ throw new CircularDependencyError(path);
616
+ }
617
+ // Push context for Logger injection (auto-pops when block exits)
618
+ const _ = __addDisposableResource(env_1, pushScope(this.resolutionStack, getTokenName(token)), false);
619
+ this.resolving.push(def);
620
+ try {
621
+ const resolvedDeps = {};
622
+ if (def.deps == null) {
623
+ const stack = this.resolutionStack.length ? this.resolutionStack.join(' -> ') : '(empty)';
624
+ throw new TypeError(`Service '${getTokenName(token)}' has no deps defined. ` +
625
+ `Resolution stack: ${stack}. ` +
626
+ 'Ensure the service was created with defineService and has an \'inject\' field.');
627
+ }
628
+ for (const [key, depToken] of Object.entries(def.deps)) {
629
+ resolvedDeps[key] = await this.resolve(depToken);
630
+ }
631
+ // Set lifecycle service context for hotReload handler registration
632
+ const serviceId = getServiceId(token);
633
+ if (this.lifecycle) {
634
+ this.lifecycle.setServiceContext(serviceId);
635
+ }
636
+ // Pass a resolver function so factories can resolve additional dependencies
637
+ const resolver = Object.assign((t) => this.resolve(t), { registerInstance: (t, instance) => { this.registerInstance(t, instance); } });
638
+ try {
639
+ const rawInstance = await def.factory(resolvedDeps, resolver);
640
+ const instance = this.wrapIfFunction(rawInstance);
641
+ // Cache under both the lookup token and the def itself
642
+ this.instances.set(token, instance);
643
+ if (def !== token) {
644
+ this.instances.set(def, instance);
645
+ }
646
+ // Store resolved deps for HMR method patching
647
+ this.resolvedDeps.set(token, resolvedDeps);
648
+ // Register token by stable ID for HMR lookup
649
+ this.tokensByStableId.set(serviceId, token);
650
+ return instance;
651
+ }
652
+ finally {
653
+ // Clear service context after factory completes
654
+ if (this.lifecycle) {
655
+ this.lifecycle.setServiceContext(null);
656
+ }
657
+ }
658
+ }
659
+ finally {
660
+ // Pop the resolving stack regardless of success or failure.
661
+ const idx = this.resolving.lastIndexOf(def);
662
+ if (idx !== -1)
663
+ this.resolving.splice(idx, 1);
664
+ }
665
+ }
666
+ catch (e_1) {
667
+ env_1.error = e_1;
668
+ env_1.hasError = true;
669
+ }
670
+ finally {
671
+ __disposeResources(env_1);
672
+ }
673
+ }
674
+ // Is it a ServiceLike (e.g., ProcessDefinition)? Check for deps+factory
675
+ // Note: ProcessDefinition is callable (typeof === 'function') but has deps/factory
676
+ const tokenAny = token;
677
+ if (tokenAny && 'deps' in tokenAny && 'factory' in tokenAny) {
678
+ const serviceLike = token;
679
+ // Resolve dependencies
680
+ const resolvedDeps = {};
681
+ for (const [key, depToken] of Object.entries(serviceLike.deps)) {
682
+ resolvedDeps[key] = await this.resolve(depToken);
683
+ }
684
+ // Call factory (may not use deps for compiled processes)
685
+ const instance = serviceLike.factory(resolvedDeps);
686
+ this.instances.set(token, instance);
687
+ return instance;
688
+ }
689
+ // Is it a class? Try to instantiate it
690
+ if (typeof token === 'function') {
691
+ const instance = new token();
692
+ this.instances.set(token, instance);
693
+ return instance;
694
+ }
695
+ // Better error message for debugging
696
+ const t = token;
697
+ let tokenDesc;
698
+ if (typeof t === 'function') {
699
+ tokenDesc = t.name || 'Anonymous';
700
+ }
701
+ else if (typeof t === 'symbol') {
702
+ tokenDesc = t.description ?? String(t);
703
+ }
704
+ else if (typeof t === 'object' && t !== null && 'deps' in t) {
705
+ const deps = t.deps;
706
+ const depList = Object.entries(deps)
707
+ .map(([k, v]) => `${k}: ${getTokenName(v)}`)
708
+ .join(', ');
709
+ tokenDesc = `ServiceDef { deps: ${depList} }`;
710
+ }
711
+ else {
712
+ tokenDesc = String(t);
713
+ }
714
+ throw new Error(`Unable to resolve service: ${tokenDesc}`);
715
+ }
716
+ /**
717
+ * Resolve all registered services.
718
+ * Ensures services that provide side effects (hooks, listeners, seeders, etc.)
719
+ * are instantiated even if they aren't dependencies of any controller.
720
+ */
721
+ async resolveAll() {
722
+ for (const token of this.factories.keys()) {
723
+ await this.resolve(token);
724
+ }
725
+ }
726
+ // ==========================================================================
727
+ // Model Prototype Wiring (model DI injection)
728
+ // ==========================================================================
729
+ /**
730
+ * Wire model prototypes for models with `inject`.
731
+ *
732
+ * For each registered model that has inject deps, resolves those deps
733
+ * from the container and creates a "model service" - an object that sits
734
+ * in the prototype chain between instances and ModelClass.prototype.
735
+ *
736
+ * Prototype chain after wiring:
737
+ * instance (own props: field data)
738
+ * → modelService (inject deps, non-enumerable)
739
+ * → ModelClass.prototype (class methods)
740
+ * → BaseModel.prototype
741
+ *
742
+ * Call this AFTER resolveAll() - all inject deps must be resolved first.
743
+ */
744
+ async wireModelPrototypes() {
745
+ for (const model of getModelsWithInject()) {
746
+ const injectConfig = model[MODEL_INJECT];
747
+ if (!injectConfig)
748
+ continue;
749
+ // Create the model service: sits between instances and class prototype
750
+ const service = Object.create(model.prototype);
751
+ // Resolve inject deps and attach as non-enumerable properties
752
+ for (const [key, depToken] of Object.entries(injectConfig)) {
753
+ const resolved = await this.resolve(depToken);
754
+ Object.defineProperty(service, key, {
755
+ value: resolved,
756
+ enumerable: false,
757
+ configurable: true,
758
+ });
759
+ }
760
+ // Store the model service on the model class
761
+ Object.defineProperty(model, MODEL_SERVICE, {
762
+ value: service,
763
+ enumerable: false,
764
+ configurable: true,
765
+ writable: true,
766
+ });
767
+ }
768
+ }
769
+ // ==========================================================================
770
+ // Hot Reload Support (dev mode only)
771
+ // ==========================================================================
772
+ /**
773
+ * Get a token by its stable service ID.
774
+ * Used by HMR runtime to find the service to reload.
775
+ */
776
+ getTokenByStableId(serviceId) {
777
+ return this.tokensByStableId.get(serviceId);
778
+ }
779
+ /**
780
+ * Hot reload a service. Two modes:
781
+ *
782
+ * 1. Method patch: Only method bodies changed
783
+ * - Re-run factory with same deps
784
+ * - Extract changed methods, patch in-place
785
+ * - Instance object stays the same, state preserved
786
+ *
787
+ * 2. Full reload: Structure changed
788
+ * - Run hotReload hook to collect state
789
+ * - Store state in registry for factory wrapper to inject
790
+ * - Create new instance (module will be re-imported)
791
+ *
792
+ * @param serviceId - The stable service ID
793
+ * @param mode - 'method-patch' or 'full-reload'
794
+ * @param changedMethods - List of changed method names (for method-patch mode)
795
+ */
796
+ async hotReload(serviceId, mode, changedMethods) {
797
+ const token = this.tokensByStableId.get(serviceId);
798
+ if (!token) {
799
+ console.warn(`[HotReload] Service not found: ${serviceId}`);
800
+ return;
801
+ }
802
+ const oldInstance = this.instances.get(token);
803
+ if (!oldInstance) {
804
+ console.log(`[HotReload] Service not instantiated yet: ${serviceId}`);
805
+ return;
806
+ }
807
+ if (mode === 'method-patch' && changedMethods && changedMethods.length > 0) {
808
+ // Method patch: re-run factory with same deps, extract changed methods
809
+ const deps = this.resolvedDeps.get(token);
810
+ const def = this.findServiceDef(token);
811
+ if (!def || !deps) {
812
+ console.warn(`[HotReload] Cannot method-patch ${serviceId}: missing deps or def`);
813
+ return;
814
+ }
815
+ try {
816
+ // Re-run factory with same deps to get new methods
817
+ const resolver = Object.assign((t) => this.resolve(t), { registerInstance: (t, instance) => { this.registerInstance(t, instance); } });
818
+ const newMethods = await def.factory(deps, resolver);
819
+ // Patch only changed methods
820
+ for (const method of changedMethods) {
821
+ if (method in newMethods) {
822
+ oldInstance[method] = newMethods[method];
823
+ }
824
+ }
825
+ console.log(`[HotReload] ${serviceId} patched: ${changedMethods.join(', ')}`);
826
+ }
827
+ catch (err) {
828
+ console.error(`[HotReload] ${serviceId} patch failed:`, err);
829
+ }
830
+ }
831
+ else {
832
+ // Full reload: collect state, store for factory wrapper to inject
833
+ if (this.lifecycle) {
834
+ const rawState = await this.lifecycle.runHotReload(serviceId);
835
+ if (rawState !== undefined) {
836
+ const state = __wrapHmrStateForSave(serviceId, rawState);
837
+ this.hmrStateRegistry.set(serviceId, state);
838
+ console.log(`[HotReload] ${serviceId} state saved for reload`);
839
+ }
840
+ }
841
+ // Clear cached instance - new one will be created when module re-imports
842
+ this.instances.delete(token);
843
+ this.resolvedDeps.delete(token);
844
+ console.log(`[HotReload] ${serviceId} cleared for full reload`);
845
+ }
846
+ }
847
+ /**
848
+ * Get HMR state for a service during factory execution.
849
+ * Called by compiler-generated code: __getHmrState(serviceId)
850
+ *
851
+ * @param serviceId - The stable service ID
852
+ * @returns The saved state, or undefined if none
853
+ */
854
+ getHmrState(serviceId) {
855
+ const state = this.hmrStateRegistry.get(serviceId);
856
+ // Clear after retrieval - state is consumed
857
+ this.hmrStateRegistry.delete(serviceId);
858
+ return state;
859
+ }
860
+ /**
861
+ * Check if a service has HMR state waiting to be injected.
862
+ */
863
+ hasHmrState(serviceId) {
864
+ return this.hmrStateRegistry.has(serviceId);
865
+ }
866
+ }
867
+ // Re-export Logger and observability utilities
868
+ export { Logger, ConsoleLogger, ConsoleLoggerFactory,
869
+ // Context utilities
870
+ getContext, captureContext, runWithContext, withContext,
871
+ // Scope management (for request lifecycle)
872
+ runInScope, runInScopeAsync,
873
+ // Instrumentation registration
874
+ registerInstrumentation, unregisterInstrumentation, getInstrumentations, } from './logger.js';
875
+ //# sourceMappingURL=service.js.map