@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,252 @@
1
+ /**
2
+ * Channels Factory
3
+ *
4
+ * Create a typed channels service for pub/sub messaging.
5
+ */
6
+ import { AbstractChannelBackend, } from './backend.js';
7
+ import { createChannel } from './channel.js';
8
+ import { resolveChannelKey, } from './types.js';
9
+ // Processable protocol support
10
+ import { encodeProcessable, decodeProcessable, } from '../../process/serialization.js';
11
+ const PAYLOAD_TAG = '__$p';
12
+ /** Encode a message for cross-node delivery using Processable protocol */
13
+ function encodeForBackend(message, descriptor) {
14
+ // Use explicit descriptor if provided (e.g. for proto schemas)
15
+ if (descriptor) {
16
+ return { [PAYLOAD_TAG]: descriptor.name, d: descriptor.serialize(message) };
17
+ }
18
+ // Auto-detect from message value (class instances, objects with [Symbol.process])
19
+ return encodeProcessable(message);
20
+ }
21
+ /** Decode a message received from the backend */
22
+ function decodeFromBackend(message, descriptor) {
23
+ // Check for Processable-encoded message (from explicit descriptor encoding)
24
+ if (message != null &&
25
+ typeof message === 'object' &&
26
+ PAYLOAD_TAG in message) {
27
+ const encoded = message;
28
+ const name = encoded[PAYLOAD_TAG];
29
+ // Use explicit descriptor if name matches
30
+ if (descriptor && descriptor.name === name) {
31
+ return descriptor.deserialize(encoded.d);
32
+ }
33
+ }
34
+ // Fall back to generic decode (handles both __$p tagged and non-tagged)
35
+ return decodeProcessable(message);
36
+ }
37
+ /**
38
+ * Create a typed channels service.
39
+ *
40
+ * Channels provide pub/sub messaging where:
41
+ * - Subscribers receive messages via async iterables
42
+ * - Publishers broadcast to all subscribers of a channel
43
+ * - Hooks enable cluster integration for multi-node deployments
44
+ *
45
+ * @example Basic usage
46
+ * ```typescript
47
+ * // Define channels service
48
+ * const RoomChannels = createChannels<ServerMessage>();
49
+ *
50
+ * // Inject into service - channels key off Ref<T>, not string IDs.
51
+ * const ChatService = defineService({
52
+ * inject: { channels: RoomChannels },
53
+ * factory: ({ channels }) => ({
54
+ * subscribe(room: Ref<Room>) {
55
+ * return channels.subscribe(room);
56
+ * },
57
+ * broadcast(room: Ref<Room>, msg: ServerMessage) {
58
+ * channels.publish(room, msg);
59
+ * },
60
+ * }),
61
+ * });
62
+ * ```
63
+ *
64
+ * @example With cluster hooks
65
+ * ```typescript
66
+ * const RoomChannels = createChannels<ServerMessage>().withHooks({
67
+ * onFirstSubscriber: async (key) => {
68
+ * // Register this node's interest at cluster level
69
+ * await clusterRegistry.subscribe(Room.ref`${key}`);
70
+ * },
71
+ * onLastUnsubscribe: async (key) => {
72
+ * // Unregister when no local subscribers remain
73
+ * await clusterRegistry.unsubscribe(Room.ref`${key}`);
74
+ * },
75
+ * onPublish: (key, msg) => {
76
+ * // Broadcast to other nodes via event bus - wire format carries
77
+ * // the key; each recipient rebuilds its own typed ref.
78
+ * events.emit(`room.${msg.type}`, { roomKey: key, ...msg });
79
+ * },
80
+ * });
81
+ * ```
82
+ *
83
+ * @example In contextual controller
84
+ * ```typescript
85
+ * const join = Procedure("room/:roomId/join")
86
+ * .handle(async function*({ params }) {
87
+ * // Boundary: convert the raw path param to a typed reference.
88
+ * const room = Room.ref`${params.roomId}`;
89
+ * const subscription = channels.subscribe(room);
90
+ *
91
+ * // Stream messages to client
92
+ * for await (const msg of subscription) {
93
+ * yield msg;
94
+ * }
95
+ * // Subscription auto-cleaned when generator exits
96
+ * });
97
+ * ```
98
+ */
99
+ export function createChannels(options = {}) {
100
+ const prefix = options.prefix ?? '';
101
+ // Trace helper
102
+ const TRACE_ENABLED = process.env.JUSTSCALE_TRACE === '1' || process.env.JUSTSCALE_TRACE === 'true';
103
+ function trace(message, data) {
104
+ if (!TRACE_ENABLED)
105
+ return;
106
+ const timestamp = new Date().toISOString();
107
+ const dataStr = data ? ' ' + JSON.stringify(data) : '';
108
+ console.debug(`[${timestamp}] [TRACE] [Channels] ${message}${dataStr}`);
109
+ }
110
+ const descriptor = options.descriptor;
111
+ const createInstance = (hooks, backend) => {
112
+ // Unique instance ID for debugging
113
+ const instanceId = `channels_${Date.now()}_${Math.random().toString(36).slice(2, 7)}`;
114
+ trace('createInstance', { instanceId, prefix });
115
+ // Channel storage (lazy creation)
116
+ const channels = new Map();
117
+ // Backend subscriptions (for cleanup)
118
+ const backendSubs = new Map();
119
+ // Apply prefix to channel key for backend communication
120
+ const toBackendKey = (channelKey) => `${prefix}${channelKey}`;
121
+ // Safely invoke a user hook: swallow sync throws and async rejections.
122
+ // User hooks are transport-side observability and must never crash the
123
+ // framework's pub/sub path.
124
+ const safeInvokeHook = (fn, label) => {
125
+ if (!fn)
126
+ return;
127
+ try {
128
+ const result = fn();
129
+ if (result && typeof result.catch === 'function') {
130
+ result.catch((err) => {
131
+ trace('userHook.asyncRejected', { instanceId, hook: label, error: String(err) });
132
+ return undefined;
133
+ });
134
+ }
135
+ }
136
+ catch (err) {
137
+ trace('userHook.syncThrew', { instanceId, hook: label, error: String(err) });
138
+ }
139
+ };
140
+ // Wrap hooks to integrate with backend
141
+ const effectiveHooks = {
142
+ onFirstSubscriber: (channelKey) => {
143
+ // Call user hook first (errors swallowed - observability only,
144
+ // independent of backend readiness so a buggy user hook can't break
145
+ // signal delivery).
146
+ safeInvokeHook(hooks?.onFirstSubscriber ? () => hooks.onFirstSubscriber(channelKey) : undefined, 'onFirstSubscriber');
147
+ // Subscribe to backend for remote messages (with prefix). Returning
148
+ // the backend's `.ready` here is what makes ChannelSubscription.ready
149
+ // wait for the LISTEN/SUBSCRIBE ACK — without it,
150
+ // publish-immediately-after-subscribe would race the wire setup.
151
+ const backendKey = toBackendKey(channelKey);
152
+ trace('onFirstSubscriber.backendSubscribe', { instanceId, channelKey, backendKey });
153
+ const sub = backend.subscribe(backendKey, (msg) => {
154
+ // Decode Processable-encoded messages from remote nodes
155
+ const decoded = decodeFromBackend(msg, descriptor);
156
+ trace('backendCallback', { instanceId, channelKey, backendKey, hasChannel: channels.has(channelKey), subscriberCount: channels.get(channelKey)?.subscriberCount ?? 0 });
157
+ const channel = channels.get(channelKey);
158
+ if (channel && channel.subscriberCount > 0) {
159
+ channel.deliverLocal(decoded);
160
+ }
161
+ });
162
+ backendSubs.set(channelKey, sub);
163
+ return sub.ready;
164
+ },
165
+ onLastUnsubscribe: (channelKey) => {
166
+ // Unsubscribe from backend
167
+ const sub = backendSubs.get(channelKey);
168
+ if (sub) {
169
+ sub[Symbol.dispose]();
170
+ backendSubs.delete(channelKey);
171
+ }
172
+ // Call user hook (errors swallowed - observability only)
173
+ safeInvokeHook(hooks?.onLastUnsubscribe ? () => hooks.onLastUnsubscribe(channelKey) : undefined, 'onLastUnsubscribe');
174
+ },
175
+ onPublish: (channelKey, message) => {
176
+ // Encode message for cross-node delivery (Processable protocol)
177
+ const encoded = encodeForBackend(message, descriptor);
178
+ // Publish to backend for remote delivery (with prefix)
179
+ const backendKey = toBackendKey(channelKey);
180
+ trace('onPublish.toBackend', { instanceId, channelKey, backendKey });
181
+ backend.publish(backendKey, encoded);
182
+ // Call user hook with original message, not encoded (errors swallowed)
183
+ safeInvokeHook(hooks?.onPublish ? () => hooks.onPublish(channelKey, message) : undefined, 'onPublish');
184
+ },
185
+ };
186
+ const getOrCreateChannel = (channelKey) => {
187
+ let channel = channels.get(channelKey);
188
+ if (!channel) {
189
+ channel = createChannel(channelKey, effectiveHooks);
190
+ channels.set(channelKey, channel);
191
+ }
192
+ return channel;
193
+ };
194
+ return {
195
+ configureHooks(_hooks) {
196
+ },
197
+ subscribe(channelKey) {
198
+ const key = resolveChannelKey(channelKey);
199
+ trace('subscribe', { instanceId, channelKey: key });
200
+ const channel = getOrCreateChannel(key);
201
+ return channel.subscribe();
202
+ },
203
+ publish(channelKey, message) {
204
+ const key = resolveChannelKey(channelKey);
205
+ trace('publish', { instanceId, channelKey: key, subscriberCount: channels.get(key)?.subscriberCount ?? 0 });
206
+ const channel = getOrCreateChannel(key);
207
+ channel.publish(message);
208
+ },
209
+ deliverRemote(channelKey, message) {
210
+ const key = resolveChannelKey(channelKey);
211
+ trace('deliverRemote', { instanceId, channelKey: key, hasChannel: channels.has(key), subscriberCount: channels.get(key)?.subscriberCount ?? 0 });
212
+ // Decode Processable-encoded messages
213
+ const decoded = decodeFromBackend(message, descriptor);
214
+ // Only deliver if we have subscribers (otherwise ignore)
215
+ const channel = channels.get(key);
216
+ if (channel && channel.subscriberCount > 0) {
217
+ // Deliver to local subscribers without triggering onPublish hook
218
+ // (to avoid re-broadcasting back to cluster)
219
+ channel.deliverLocal(decoded);
220
+ }
221
+ },
222
+ getChannel(channelKey) {
223
+ return getOrCreateChannel(resolveChannelKey(channelKey));
224
+ },
225
+ hasSubscribers(channelKey) {
226
+ const channel = channels.get(resolveChannelKey(channelKey));
227
+ return channel ? channel.subscriberCount > 0 : false;
228
+ },
229
+ getActiveChannels() {
230
+ return Array.from(channels.entries())
231
+ .filter(([, ch]) => ch.subscriberCount > 0)
232
+ .map(([key]) => key);
233
+ },
234
+ close() {
235
+ // Dispose all backend subscriptions
236
+ for (const [, sub] of backendSubs) {
237
+ sub[Symbol.dispose]();
238
+ }
239
+ backendSubs.clear();
240
+ channels.clear();
241
+ },
242
+ };
243
+ };
244
+ return {
245
+ deps: { backend: AbstractChannelBackend },
246
+ factory: ({ backend }) => createInstance(options.hooks, backend),
247
+ withHooks(hooks) {
248
+ return createChannels({ ...options, hooks });
249
+ },
250
+ };
251
+ }
252
+ //# sourceMappingURL=channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../../src/features/channel/channels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Channel Feature
3
+ *
4
+ * Provides pub/sub channels with pluggable backends.
5
+ * Requires a channel backend to be registered before adding this feature.
6
+ */
7
+ import { AbstractChannelBackend } from './backend.js';
8
+ /**
9
+ * Channel Feature
10
+ *
11
+ * Validates that a channel backend has been registered.
12
+ * Add a backend using `bindService` before adding this feature.
13
+ *
14
+ * @example Using memory backend (for testing or single-node)
15
+ * ```typescript
16
+ * import { ChannelFeature, MemoryChannelBackend, AbstractChannelBackend, bindService } from '@justscale/core';
17
+ *
18
+ * const cluster = createClusterBuilder()
19
+ * .add(MemoryChannelBackend)
20
+ * .add(bindService(AbstractChannelBackend, MemoryChannelBackend))
21
+ * .add(ChannelFeature)
22
+ * .add(ChatService)
23
+ * .build();
24
+ * ```
25
+ *
26
+ * @example Using Redis backend (for production/multi-node)
27
+ * ```typescript
28
+ * import { ChannelFeature, AbstractChannelBackend, bindService } from '@justscale/core';
29
+ * import { RedisChannelBackend } from '@justscale/redis';
30
+ *
31
+ * const cluster = createClusterBuilder()
32
+ * .add(RedisChannelBackend)
33
+ * .add(bindService(AbstractChannelBackend, RedisChannelBackend))
34
+ * .add(ChannelFeature)
35
+ * .add(ChatService)
36
+ * .build();
37
+ * ```
38
+ */
39
+ export declare const ChannelFeature: import("../../builder/types.js").FeatureToken<[typeof AbstractChannelBackend], []>;
40
+ //# sourceMappingURL=feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../src/features/channel/feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,cAAc,oFAGN,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Channel Feature
3
+ *
4
+ * Provides pub/sub channels with pluggable backends.
5
+ * Requires a channel backend to be registered before adding this feature.
6
+ */
7
+ import { createFeatureBuilder } from '../../builder/index.js';
8
+ import { AbstractChannelBackend } from './backend.js';
9
+ /**
10
+ * Channel Feature
11
+ *
12
+ * Validates that a channel backend has been registered.
13
+ * Add a backend using `bindService` before adding this feature.
14
+ *
15
+ * @example Using memory backend (for testing or single-node)
16
+ * ```typescript
17
+ * import { ChannelFeature, MemoryChannelBackend, AbstractChannelBackend, bindService } from '@justscale/core';
18
+ *
19
+ * const cluster = createClusterBuilder()
20
+ * .add(MemoryChannelBackend)
21
+ * .add(bindService(AbstractChannelBackend, MemoryChannelBackend))
22
+ * .add(ChannelFeature)
23
+ * .add(ChatService)
24
+ * .build();
25
+ * ```
26
+ *
27
+ * @example Using Redis backend (for production/multi-node)
28
+ * ```typescript
29
+ * import { ChannelFeature, AbstractChannelBackend, bindService } from '@justscale/core';
30
+ * import { RedisChannelBackend } from '@justscale/redis';
31
+ *
32
+ * const cluster = createClusterBuilder()
33
+ * .add(RedisChannelBackend)
34
+ * .add(bindService(AbstractChannelBackend, RedisChannelBackend))
35
+ * .add(ChannelFeature)
36
+ * .add(ChatService)
37
+ * .build();
38
+ * ```
39
+ */
40
+ export const ChannelFeature = createFeatureBuilder()
41
+ .name('channel')
42
+ .requires(AbstractChannelBackend)
43
+ .provides((b) => b);
44
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.js","sourceRoot":"","sources":["../../../src/features/channel/feature.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,EAAE;KACjD,IAAI,CAAC,SAAS,CAAC;KACf,QAAQ,CAAC,sBAAsB,CAAC;KAChC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Channel - Pub/Sub Channels
3
+ *
4
+ * Provides typed pub/sub messaging with:
5
+ * - Per-channel subscriptions (async iterables)
6
+ * - Reference counting for cluster optimization
7
+ * - Hooks for cluster integration
8
+ *
9
+ * @example Basic usage
10
+ * ```typescript
11
+ * import { createChannels } from "@justscale/core";
12
+ * import type { Ref } from "@justscale/core/models";
13
+ * import { Room } from "./room.model";
14
+ *
15
+ * // Define typed channels
16
+ * const RoomChannels = createChannels<ServerMessage>();
17
+ *
18
+ * // Inject into service - channels key off Ref<T>, not string IDs.
19
+ * const ChatService = defineService({
20
+ * inject: { channels: RoomChannels },
21
+ * factory: ({ channels }) => ({
22
+ * subscribe(room: Ref<Room>) {
23
+ * return channels.subscribe(room);
24
+ * },
25
+ * broadcast(room: Ref<Room>, msg: ServerMessage) {
26
+ * channels.publish(room, msg);
27
+ * },
28
+ * }),
29
+ * });
30
+ * ```
31
+ */
32
+ export { ChannelFeature } from './feature.js';
33
+ export { createChannels } from './channels.js';
34
+ export type { ChannelsDef } from './channels.js';
35
+ export { AbstractChannelBackend, MemoryChannelBackend } from './backend.js';
36
+ export type { BackendSubscription, ChannelBackend, ChannelBackendInstance } from './backend.js';
37
+ export type { Channel, ChannelKey, ChannelSubscription, ChannelsInstance, ChannelsOptions, ChannelHooks, } from './types.js';
38
+ export { resolveChannelKey } from './types.js';
39
+ export { createChannel } from './channel.js';
40
+ export type { ChannelInternal } from './channel.js';
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/channel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGhG,YAAY,EACV,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Channel - Pub/Sub Channels
3
+ *
4
+ * Provides typed pub/sub messaging with:
5
+ * - Per-channel subscriptions (async iterables)
6
+ * - Reference counting for cluster optimization
7
+ * - Hooks for cluster integration
8
+ *
9
+ * @example Basic usage
10
+ * ```typescript
11
+ * import { createChannels } from "@justscale/core";
12
+ * import type { Ref } from "@justscale/core/models";
13
+ * import { Room } from "./room.model";
14
+ *
15
+ * // Define typed channels
16
+ * const RoomChannels = createChannels<ServerMessage>();
17
+ *
18
+ * // Inject into service - channels key off Ref<T>, not string IDs.
19
+ * const ChatService = defineService({
20
+ * inject: { channels: RoomChannels },
21
+ * factory: ({ channels }) => ({
22
+ * subscribe(room: Ref<Room>) {
23
+ * return channels.subscribe(room);
24
+ * },
25
+ * broadcast(room: Ref<Room>, msg: ServerMessage) {
26
+ * channels.publish(room, msg);
27
+ * },
28
+ * }),
29
+ * });
30
+ * ```
31
+ */
32
+ // Feature
33
+ export { ChannelFeature } from './feature.js';
34
+ // Main factory
35
+ export { createChannels } from './channels.js';
36
+ // Backend (for implementing custom backends)
37
+ export { AbstractChannelBackend, MemoryChannelBackend } from './backend.js';
38
+ export { resolveChannelKey } from './types.js';
39
+ // Internal (for advanced use)
40
+ export { createChannel } from './channel.js';
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/channel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,6CAA6C;AAC7C,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAY5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Channel Types
3
+ *
4
+ * Core types for the channels pub/sub system.
5
+ */
6
+ /**
7
+ * A channel key: a plain string or anything with an `identifier` property
8
+ * (e.g. a Reference from a model).
9
+ */
10
+ export type ChannelKey = string | {
11
+ readonly identifier: string;
12
+ };
13
+ /** Resolve a ChannelKey to a plain string. */
14
+ export declare function resolveChannelKey(key: ChannelKey): string;
15
+ /**
16
+ * A subscription to a channel.
17
+ * Implements AsyncIterable for streaming messages and Disposable for cleanup.
18
+ */
19
+ export interface ChannelSubscription<TMessage> extends AsyncIterable<TMessage>, Disposable {
20
+ /** Unsubscribe from the channel */
21
+ unsubscribe(): void;
22
+ /** The channel key this subscription is for */
23
+ readonly channelKey: string;
24
+ /** Whether this subscription is still active */
25
+ readonly active: boolean;
26
+ /**
27
+ * Resolves when the underlying backend subscription has been ACKed (e.g.
28
+ * Postgres LISTEN, Redis SUBSCRIBE), AND the cluster `onFirstSubscriber`
29
+ * hook (if any) has completed. Messages published before this settles may
30
+ * be missed at the backend level.
31
+ *
32
+ * Reject on backend connect / listen failure — callers that
33
+ * publish-immediately-after-subscribe MUST `await sub.ready` first.
34
+ *
35
+ * For local-only channels (no remote backend), resolves synchronously.
36
+ */
37
+ readonly ready: Promise<void>;
38
+ }
39
+ /**
40
+ * A single channel instance that can be published to and subscribed from.
41
+ */
42
+ export interface Channel<TMessage> {
43
+ /** The channel key */
44
+ readonly key: string;
45
+ /** Current number of local subscribers */
46
+ readonly subscriberCount: number;
47
+ /** Subscribe to this channel */
48
+ subscribe(): ChannelSubscription<TMessage>;
49
+ /** Publish a message to all subscribers */
50
+ publish(message: TMessage): void;
51
+ }
52
+ /**
53
+ * Hooks for cluster integration.
54
+ * Called when subscription state changes on this node.
55
+ */
56
+ export interface ChannelHooks {
57
+ /**
58
+ * Called when the first subscriber joins a channel on this node.
59
+ * Use this to register interest at the cluster level.
60
+ */
61
+ onFirstSubscriber?: (channelKey: string) => void | Promise<void>;
62
+ /**
63
+ * Called when the last subscriber leaves a channel on this node.
64
+ * Use this to unregister interest at the cluster level.
65
+ */
66
+ onLastUnsubscribe?: (channelKey: string) => void | Promise<void>;
67
+ /**
68
+ * Called when a message is published locally.
69
+ * Use this to broadcast to other cluster nodes.
70
+ */
71
+ onPublish?: (channelKey: string, message: unknown) => void | Promise<void>;
72
+ }
73
+ /**
74
+ * Options for creating a channels service.
75
+ */
76
+ export interface ChannelsOptions {
77
+ /**
78
+ * Prefix for channel keys when communicating with the backend.
79
+ * E.g., "room:" means channel "123" becomes "room:123" for the backend.
80
+ * @default ""
81
+ */
82
+ prefix?: string;
83
+ /** Hooks for cluster integration */
84
+ hooks?: ChannelHooks;
85
+ /**
86
+ * Process descriptor for encoding/decoding messages via the Processable protocol.
87
+ *
88
+ * When provided, messages are encoded before cross-node delivery and decoded
89
+ * on receipt. This enables efficient binary serialization for proto types.
90
+ *
91
+ * If not provided, messages from class instances with static [Symbol.process]
92
+ * are automatically detected and encoded at publish time.
93
+ *
94
+ * @example Proto channels
95
+ * ```typescript
96
+ * import { ChatEventSchema } from './events.proto'
97
+ * const RoomChannels = createChannels<ChatEvent>({
98
+ * descriptor: ChatEventSchema[Symbol.process],
99
+ * })
100
+ * ```
101
+ */
102
+ descriptor?: ProcessDescriptor;
103
+ }
104
+ /**
105
+ * Runtime instance of a channels service.
106
+ */
107
+ export interface ChannelsInstance<TMessage> {
108
+ /** Configure hooks at runtime. Prefer withHooks() on the ChannelsDef instead. */
109
+ configureHooks(hooks: ChannelHooks): void;
110
+ /**
111
+ * Subscribe to a channel by key.
112
+ * Returns an async iterable subscription.
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const subscription = channels.subscribe(Room.ref`123`);
117
+ * for await (const msg of subscription) {
118
+ * client.send(msg);
119
+ * }
120
+ * ```
121
+ */
122
+ subscribe(channelKey: ChannelKey): ChannelSubscription<TMessage>;
123
+ /**
124
+ * Publish a message to a channel.
125
+ * Message is delivered to all local subscribers and (via hooks) to remote nodes.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * channels.publish(Room.ref`123`, { type: "message", content: "Hello!" });
130
+ * ```
131
+ */
132
+ publish(channelKey: ChannelKey, message: TMessage): void;
133
+ /**
134
+ * Deliver a message from a remote node.
135
+ * Use this in your cluster event handler.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // In event controller
140
+ * onRoomEvent: Events.on("room.*").handle(({ payload }) => {
141
+ * channels.deliverRemote(payload.room, payload);
142
+ * })
143
+ * ```
144
+ */
145
+ deliverRemote(channelKey: ChannelKey, message: TMessage): void;
146
+ /**
147
+ * Get a channel by key (creates if not exists).
148
+ */
149
+ getChannel(channelKey: ChannelKey): Channel<TMessage>;
150
+ /**
151
+ * Check if a channel has any local subscribers.
152
+ */
153
+ hasSubscribers(channelKey: ChannelKey): boolean;
154
+ /**
155
+ * Get all channel keys that have subscribers.
156
+ */
157
+ getActiveChannels(): string[];
158
+ /**
159
+ * Close the channels instance and release all resources.
160
+ * Disposes all backend subscriptions and clears channel state.
161
+ * Call this when shutting down to ensure clean exit.
162
+ */
163
+ close(): void;
164
+ }
165
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/channel/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,CAC3C,SAAQ,aAAa,CAAC,QAAQ,CAAC,EAC/B,UAAU;IACV,mCAAmC;IACnC,WAAW,IAAI,IAAI,CAAA;IAEnB,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IAExB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,QAAQ;IAC/B,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IAEpB,0CAA0C;IAC1C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAEhC,gCAAgC;IAChC,SAAS,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAE1C,2CAA2C;IAC3C,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhE;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,oCAAoC;IACpC,KAAK,CAAC,EAAE,YAAY,CAAA;IAEpB;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IACxC,iFAAiF;IACjF,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAEzC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAEhE;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAA;IAExD;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAA;IAE9D;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAErD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAA;IAE/C;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE,CAAA;IAE7B;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAA;CACd"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Channel Types
3
+ *
4
+ * Core types for the channels pub/sub system.
5
+ */
6
+ /** Resolve a ChannelKey to a plain string. */
7
+ export function resolveChannelKey(key) {
8
+ return typeof key === 'string' ? key : key.identifier;
9
+ }
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/channel/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,8CAA8C;AAC9C,MAAM,UAAU,iBAAiB,CAAC,GAAe;IAC/C,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACxD,CAAC"}