@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,249 @@
1
+ /**
2
+ * Model Definition
3
+ *
4
+ * Creates typed model classes with field schemas.
5
+ */
6
+ import { type FieldBuilder, type FieldDef, type Decimal } from './field.js';
7
+ import { Reference, References } from './reference/reference.js';
8
+ import { MODEL_METHODS, MODEL_REPO_CONTRACT, PERSISTENT, MODEL_INJECT, MODEL_SERVICE } from './symbols.js';
9
+ import type { Persistent } from './types.js';
10
+ import type { ServiceToken, ResolvedDeps } from '../core/service.js';
11
+ import type { GuardDef } from '../core/middleware.js';
12
+ export { MODEL_METHODS, MODEL_INJECT, MODEL_SERVICE };
13
+ import { StringFieldExpr, NumberFieldExpr, BigIntFieldExpr, DecimalFieldExpr, BooleanFieldExpr, TimestampFieldExpr, RefFieldExpr, RefsFieldExpr, ArrayFieldExpr, JsonFieldExpr, ObjectFieldExpr } from './query.js';
14
+ /** Symbol.for() so separate module realms see the same symbol */
15
+ export declare const MODEL_DEF: unique symbol;
16
+ /**
17
+ * Stable identity key for a model class. Two classes produced by separate imports
18
+ * of the same source (e.g. after HMR cache-busting) share the same stable ID, so
19
+ * `ModelRepository.of(model)` resolves to the same token without special wiring.
20
+ */
21
+ export declare const MODEL_STABLE_ID: unique symbol;
22
+ export declare const MODEL_FIELDS: unique symbol;
23
+ export declare const MODEL_NAME: unique symbol;
24
+ export declare const MODEL_DATA: unique symbol;
25
+ export declare const MODEL_DEFAULTS: unique symbol;
26
+ /** Forces TypeScript to expand/simplify a type in .d.ts output */
27
+ type Simplify<T> = {
28
+ [K in keyof T]: T[K];
29
+ } & {};
30
+ export type FieldDefs = Record<string, FieldBuilder<unknown> | FieldDef>;
31
+ /** Unwrap HasDefault<T> → T, pass-through for other types */
32
+ type UnwrapDefault<T> = T extends {
33
+ readonly __hasDefault: infer U;
34
+ } ? U : T;
35
+ export type InferModelType<F extends FieldDefs> = Simplify<{
36
+ [K in keyof F]: F[K] extends FieldBuilder<infer T> ? UnwrapDefault<T> : F[K] extends FieldDef<infer T> ? UnwrapDefault<T> : never;
37
+ }>;
38
+ /** Extract keys of fields that have defaults */
39
+ export type InferDefaultKeys<F extends FieldDefs> = {
40
+ [K in keyof F]: F[K] extends FieldBuilder<infer T> ? T extends {
41
+ readonly __hasDefault: unknown;
42
+ } ? K : never : F[K] extends FieldDef<infer T> ? T extends {
43
+ readonly __hasDefault: unknown;
44
+ } ? K : never : never;
45
+ }[keyof F];
46
+ /**
47
+ * Partial type for model constructor input.
48
+ * Ref fields accept both Reference<R> and Persistent<R> (the setter handles both).
49
+ */
50
+ export type DeepPartial<T> = {
51
+ [K in keyof T]?: [NonNullable<T[K]>] extends [Decimal] ? string | (undefined extends T[K] ? undefined : never) : T[K] extends Reference<any> ? T[K] | (Persistent<any> & {
52
+ readonly [PERSISTENT]: true;
53
+ }) : T[K] extends References<any> ? T[K] : T[K] extends object ? DeepPartial<T[K]> : T[K];
54
+ };
55
+ export type MethodDefs = Record<string, (this: any, ...args: any[]) => any>;
56
+ export type InferMethods<T, M extends MethodDefs> = {
57
+ [K in keyof M]: M[K] extends (this: unknown, ...args: infer A) => infer R ? (this: T, ...args: A) => R : never;
58
+ };
59
+ /**
60
+ * Maps a field's TypeScript type to its corresponding field expression type.
61
+ * For nested objects, recursively creates field expressions for nested access.
62
+ */
63
+ type ValueToFieldExpr<T> = [
64
+ NonNullable<T>
65
+ ] extends [Reference<infer R>] ? RefFieldExpr<R> : [NonNullable<T>] extends [References<infer R>] ? RefsFieldExpr<R> : [
66
+ NonNullable<T>
67
+ ] extends [Decimal] ? DecimalFieldExpr : [NonNullable<T>] extends [string] ? StringFieldExpr : [NonNullable<T>] extends [number] ? NumberFieldExpr : [NonNullable<T>] extends [bigint] ? BigIntFieldExpr : [NonNullable<T>] extends [boolean] ? BooleanFieldExpr : [NonNullable<T>] extends [Date] ? TimestampFieldExpr : [NonNullable<T>] extends [(infer E)[]] ? ArrayFieldExpr<E> : [NonNullable<T>] extends [Record<string, unknown>] ? ObjectFieldExpr<NonNullable<T>> & NestedFieldExprs<NonNullable<T>> : JsonFieldExpr;
68
+ /**
69
+ * Creates field expressions for nested object properties.
70
+ * This enables type-safe access like `User.fields.settings.theme.eq('dark')`.
71
+ */
72
+ type NestedFieldExprs<T> = T extends Record<string, unknown> ? {
73
+ readonly [K in keyof T]: ValueToFieldExpr<T[K]>;
74
+ } : {};
75
+ type FieldExprsFromData<T> = {
76
+ readonly [K in keyof T]: ValueToFieldExpr<T[K]>;
77
+ };
78
+ export type RepositoryContract<T = unknown> = Record<string, (...args: any[]) => Promise<any>>;
79
+ /**
80
+ * Abstract base class that all models extend.
81
+ * The class itself represents the transient (unpersisted) form.
82
+ * Use Persistent<T> for the persisted form with id, createdAt, etc.
83
+ *
84
+ * Models are Disposable by default to support `using` declarations
85
+ * in durable processes (for rehydration marking).
86
+ */
87
+ export declare abstract class BaseModel<T, N extends string = string, D extends string = never> implements Disposable {
88
+ readonly [MODEL_DATA]: T;
89
+ readonly [MODEL_NAME]: N;
90
+ readonly [MODEL_DEFAULTS]: D;
91
+ constructor(data: DeepPartial<T>);
92
+ /** No-op dispose - models use `using` for process rehydration marking, not cleanup */
93
+ [Symbol.dispose](): void;
94
+ }
95
+ /**
96
+ * A model class created by defineModel().
97
+ *
98
+ * TInject carries the resolved inject deps type - instances include these
99
+ * properties via prototype chain (the model service).
100
+ */
101
+ export interface Model<T, N extends string = string, C extends RepositoryContract<T> = {}, D extends string = never, TInject extends Record<string, unknown> = {}> {
102
+ readonly [MODEL_DEF]: true;
103
+ readonly [MODEL_DATA]: T;
104
+ readonly [MODEL_NAME]: N;
105
+ readonly [MODEL_DEFAULTS]: D;
106
+ readonly [MODEL_FIELDS]: Record<string, FieldDef>;
107
+ readonly [MODEL_REPO_CONTRACT]?: C;
108
+ readonly [MODEL_INJECT]?: Record<string, ServiceToken>;
109
+ readonly fields: FieldExprsFromData<T>;
110
+ new (data: DeepPartial<T>): BaseModel<T, N, D> & T & Readonly<TInject>;
111
+ /**
112
+ * Reference accessor - polymorphic over `this` so subclass body additions
113
+ * flow through. `Cart.ref`${id}`` returns `Reference<Cart>` (including any
114
+ * getters/methods declared on the `Cart` class). For validation at HTTP/CLI
115
+ * boundaries, use `z.ref(Cart)` instead of the ref as a Zod schema.
116
+ */
117
+ ref<I>(this: new (data: DeepPartial<T>) => I, idOrEntity: string | object): Reference<I>;
118
+ ref<I>(this: new (data: DeepPartial<T>) => I, strings: TemplateStringsArray, ...values: unknown[]): Reference<I>;
119
+ refs<I>(this: new (data: DeepPartial<T>) => I, ...ids: string[]): References<I>;
120
+ /**
121
+ * Create a transient model instance with inject deps available via prototype.
122
+ * Prefer this over `new Model(data)` when the model has inject deps.
123
+ */
124
+ create(data: Omit<DeepPartial<T>, keyof TInject>): BaseModel<T, N, D> & T & Readonly<TInject>;
125
+ withRepository<Contract extends RepositoryContract<T>>(): Model<T, N, Contract, D, TInject>;
126
+ /**
127
+ * Override this model with additional fields.
128
+ * Returns a new model class with merged fields. Inherits the ref accessor (same cache).
129
+ * Use for extending framework models: `class AppUser extends User.override({ fields: {...} }) {}`
130
+ */
131
+ override<TNew extends FieldDefs>(config: {
132
+ name?: string;
133
+ fields: TNew;
134
+ inject?: Record<string, ServiceToken>;
135
+ }): Model<T & InferModelType<TNew>, string, {}, D | (InferDefaultKeys<TNew> & string)>;
136
+ }
137
+ export type ModelClass<T, N extends string = string, C extends RepositoryContract<T> = {}> = Model<T, N, C, string, any>;
138
+ export type ModelConstructor<T, N extends string = string, C extends RepositoryContract<T> = {}> = Model<T, N, C, string, any>;
139
+ /**
140
+ * Extract the data type from a Model class.
141
+ *
142
+ * Use this to get clean type references that TypeScript preserves in .d.ts output:
143
+ * - `ModelData<typeof User>` shows as `ModelData<typeof User>` in hovers
144
+ * - Instead of `{ readonly email: string; readonly name: string; ... }`
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * class User extends defineModel({
149
+ * email: field.string(),
150
+ * name: field.string(),
151
+ * }) {}
152
+ *
153
+ * type UserData = ModelData<typeof User>
154
+ * // { readonly email: string; readonly name: string }
155
+ * ```
156
+ */
157
+ export type ModelData<M> = M extends {
158
+ readonly [MODEL_DATA]: infer T;
159
+ } ? T : never;
160
+ /**
161
+ * Extract the model name from a Model class.
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * class User extends defineModel({ ... }) {}
166
+ * type Name = ModelName<typeof User> // "User"
167
+ * ```
168
+ */
169
+ export type ModelName<M> = M extends {
170
+ readonly [MODEL_NAME]: infer N extends string;
171
+ } ? N : never;
172
+ /**
173
+ * Type guard for any Model class.
174
+ * Use this when you need to accept any model without caring about its specific type.
175
+ */
176
+ export type AnyModel = Model<unknown, string, RepositoryContract<unknown>, string>;
177
+ /** Register a model class for inject wiring (called by createInMemoryModel/createPgModel) */
178
+ export declare function registerModelForInjection(model: AnyModel): void;
179
+ /** Get all models that need inject wiring */
180
+ export declare function getModelsWithInject(): ReadonlySet<AnyModel>;
181
+ /** A map of action names to guard definitions */
182
+ export type PermissionRecord = Record<string, GuardDef | readonly GuardDef[]>;
183
+ /**
184
+ * Stamp each permission's `.name` with its key as a string literal.
185
+ *
186
+ * `permit(X).always()` returns a def whose `name` is typed as `string` (the
187
+ * actual name is set at runtime by defineModel from the permissions record
188
+ * key). This type-level pass narrows `name` to the key literal so permission-
189
+ * scoped `.returns()` can build a proper discriminated union.
190
+ */
191
+ export type StampPermissionNames<P extends PermissionRecord> = {
192
+ readonly [K in keyof P & string]: P[K] extends readonly (infer E)[] ? readonly (E & {
193
+ readonly name: K;
194
+ })[] : P[K] & {
195
+ readonly name: K;
196
+ };
197
+ };
198
+ /** Factory function that receives field expressions and returns a permissions map */
199
+ export type PermissionsFactory<F extends FieldDefs, P extends PermissionRecord> = (fields: FieldExprsFromData<InferModelType<F>>) => P;
200
+ /**
201
+ * A single field's access rule.
202
+ * - GuardDef or GuardDef[]: short form, same for see + set
203
+ * - []: nobody (fully hidden, not editable)
204
+ * - { see?, set? }: split form for different read/write
205
+ */
206
+ export type FieldAccessRule = GuardDef | readonly GuardDef[] | readonly [] | {
207
+ see?: GuardDef | readonly GuardDef[] | readonly [];
208
+ set?: GuardDef | readonly GuardDef[] | readonly [];
209
+ };
210
+ /** The resolved access rules stored on a model - field name to rule */
211
+ export type AccessRulesRecord = Record<string, FieldAccessRule>;
212
+ /** Factory function that receives permission defs and returns field access rules */
213
+ export type AccessFactory<F extends FieldDefs, P extends PermissionRecord> = (permissions: P) => Partial<Record<keyof InferModelType<F>, FieldAccessRule>>;
214
+ export declare function defineModel<const F extends FieldDefs, const D extends Record<string, ServiceToken>, const P extends PermissionRecord>(config: {
215
+ name?: string;
216
+ fields: F;
217
+ inject: D;
218
+ permissions: PermissionsFactory<F, P>;
219
+ access?: AccessFactory<F, P>;
220
+ }): Model<InferModelType<F>, string, {}, InferDefaultKeys<F> & string, ResolvedDeps<D>> & {
221
+ readonly can: StampPermissionNames<P>;
222
+ };
223
+ export declare function defineModel<const F extends FieldDefs, const D extends Record<string, ServiceToken>>(config: {
224
+ name?: string;
225
+ fields: F;
226
+ inject: D;
227
+ }): Model<InferModelType<F>, string, {}, InferDefaultKeys<F> & string, ResolvedDeps<D>>;
228
+ export declare function defineModel<const F extends FieldDefs, const P extends PermissionRecord>(config: {
229
+ name?: string;
230
+ fields: F;
231
+ permissions: PermissionsFactory<F, P>;
232
+ access?: AccessFactory<F, P>;
233
+ }): Model<InferModelType<F>, string, {}, InferDefaultKeys<F> & string> & {
234
+ readonly can: StampPermissionNames<P>;
235
+ };
236
+ export declare function defineModel<const F extends FieldDefs>(config: {
237
+ name?: string;
238
+ fields: F;
239
+ }): Model<InferModelType<F>, string, {}, InferDefaultKeys<F> & string>;
240
+ export declare function defineModel<const F extends FieldDefs>(fields: F): Model<InferModelType<F>, string, {}, InferDefaultKeys<F> & string>;
241
+ export declare function isModelClass(value: unknown): value is Model<unknown>;
242
+ export declare function getModelFields(model: {
243
+ [MODEL_FIELDS]: Record<string, FieldDef>;
244
+ }): Record<string, FieldDef>;
245
+ export declare function getModelName(model: {
246
+ [MODEL_NAME]: string;
247
+ }): string;
248
+ export type ModelInstance<M> = M extends Model<infer T> ? T : never;
249
+ //# sourceMappingURL=define-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-model.d.ts","sourceRoot":"","sources":["../../src/models/define-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,388 @@
1
+ /**
2
+ * Model Definition
3
+ *
4
+ * Creates typed model classes with field schemas.
5
+ */
6
+ import { FIELD_DEF } from './field.js';
7
+ import { Reference, References, isReference, isReferences } from './reference/reference.js';
8
+ import { FIELD_STORAGE, MODEL_METHODS, MODEL_REPO_CONTRACT, PERSISTENT, ADAPTER_KEY, HYDRATE, MODEL_INJECT, MODEL_SERVICE, ACCESS_RULES, PERMISSION_DEFS } from './symbols.js';
9
+ import { isPersistent } from './types.js';
10
+ export { MODEL_METHODS, MODEL_INJECT, MODEL_SERVICE };
11
+ import { createFieldExpr, } from './query.js';
12
+ // ============================================================================
13
+ // Symbols
14
+ // ============================================================================
15
+ /** Symbol.for() so separate module realms see the same symbol */
16
+ export const MODEL_DEF = Symbol.for('@justscale/core/models:modelDef');
17
+ /**
18
+ * Stable identity key for a model class. Two classes produced by separate imports
19
+ * of the same source (e.g. after HMR cache-busting) share the same stable ID, so
20
+ * `ModelRepository.of(model)` resolves to the same token without special wiring.
21
+ */
22
+ export const MODEL_STABLE_ID = Symbol.for('@justscale/core/models:modelStableId');
23
+ export const MODEL_FIELDS = Symbol('models:modelFields');
24
+ export const MODEL_NAME = Symbol('models:modelName');
25
+ export const MODEL_DATA = Symbol('models:modelData');
26
+ export const MODEL_DEFAULTS = Symbol('models:modelDefaults');
27
+ // ============================================================================
28
+ // Ref accessor factory
29
+ // ============================================================================
30
+ /**
31
+ * Create the `Model.ref` callable. References are memoized by ID using
32
+ * WeakRef so identical IDs round-trip to the same Reference instance (as long
33
+ * as it hasn't been garbage collected).
34
+ *
35
+ * @internal used by defineModel to populate `static ref`
36
+ */
37
+ function createRefAccessor() {
38
+ const refCache = new Map();
39
+ const getOrCreateRef = (id) => {
40
+ const cached = refCache.get(id);
41
+ if (cached) {
42
+ const ref = cached.deref();
43
+ if (ref)
44
+ return ref;
45
+ refCache.delete(id);
46
+ }
47
+ const ref = new Reference(id, callable.__modelName);
48
+ refCache.set(id, new WeakRef(ref));
49
+ return ref;
50
+ };
51
+ const callable = function (idOrStringsOrEntity, ...values) {
52
+ if (typeof idOrStringsOrEntity === 'object' && 'raw' in idOrStringsOrEntity) {
53
+ const id = String.raw({ raw: idOrStringsOrEntity }, ...values);
54
+ return getOrCreateRef(id);
55
+ }
56
+ if (isReference(idOrStringsOrEntity)) {
57
+ const ref = getOrCreateRef(idOrStringsOrEntity.identifier);
58
+ if (idOrStringsOrEntity.isLoaded) {
59
+ ref[HYDRATE](idOrStringsOrEntity.value);
60
+ }
61
+ return ref;
62
+ }
63
+ if (typeof idOrStringsOrEntity === 'object' && idOrStringsOrEntity !== null) {
64
+ const key = idOrStringsOrEntity[ADAPTER_KEY];
65
+ if (key !== undefined) {
66
+ const ref = getOrCreateRef(key);
67
+ ref[HYDRATE](idOrStringsOrEntity);
68
+ return ref;
69
+ }
70
+ throw new Error('Cannot create Reference from object without adapter key. Is this a persistent entity?');
71
+ }
72
+ return getOrCreateRef(idOrStringsOrEntity);
73
+ };
74
+ return callable;
75
+ }
76
+ // ============================================================================
77
+ // BaseModel - The base class all models extend
78
+ // ============================================================================
79
+ /**
80
+ * Abstract base class that all models extend.
81
+ * The class itself represents the transient (unpersisted) form.
82
+ * Use Persistent<T> for the persisted form with id, createdAt, etc.
83
+ *
84
+ * Models are Disposable by default to support `using` declarations
85
+ * in durable processes (for rehydration marking).
86
+ */
87
+ export class BaseModel {
88
+ constructor(data) {
89
+ Object.defineProperty(this, FIELD_STORAGE, {
90
+ value: {},
91
+ enumerable: false,
92
+ writable: false,
93
+ });
94
+ for (const [key, value] of Object.entries(data)) {
95
+ this[key] = value;
96
+ }
97
+ }
98
+ /** No-op dispose - models use `using` for process rehydration marking, not cleanup */
99
+ [Symbol.dispose]() { }
100
+ }
101
+ // ============================================================================
102
+ // Global model registry - models with inject, for Container.wireModelPrototypes
103
+ // ============================================================================
104
+ const modelsWithInject = new Set();
105
+ /** Register a model class for inject wiring (called by createInMemoryModel/createPgModel) */
106
+ export function registerModelForInjection(model) {
107
+ if (MODEL_INJECT in model) {
108
+ modelsWithInject.add(model);
109
+ }
110
+ }
111
+ /** Get all models that need inject wiring */
112
+ export function getModelsWithInject() {
113
+ return modelsWithInject;
114
+ }
115
+ // ============================================================================
116
+ // defineModel - Creates a model class
117
+ // ============================================================================
118
+ /**
119
+ * Define a model class.
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // Fields-only form
124
+ * class User extends defineModel({
125
+ * email: field.string().max(255),
126
+ * name: field.string().optional(),
127
+ * }) {}
128
+ *
129
+ * // Config form with inject - model instances gain DI services via prototype
130
+ * class Order extends defineModel({
131
+ * fields: {
132
+ * amount: field.decimal(10, 2),
133
+ * status: field.enum('Status', ['pending', 'paid']),
134
+ * },
135
+ * inject: {
136
+ * payments: PaymentService,
137
+ * },
138
+ * }) {}
139
+ * ```
140
+ */
141
+ // ============================================================================
142
+ // Shared helpers - used by defineModel and Model.override()
143
+ // ============================================================================
144
+ /** Build FieldDefs into resolved FieldDef records */
145
+ function buildFieldDefs(fields) {
146
+ const builtFields = {};
147
+ for (const [key, fieldOrBuilder] of Object.entries(fields)) {
148
+ if (FIELD_DEF in fieldOrBuilder) {
149
+ builtFields[key] = fieldOrBuilder;
150
+ }
151
+ else if ('build' in fieldOrBuilder && typeof fieldOrBuilder.build === 'function') {
152
+ builtFields[key] = fieldOrBuilder.build();
153
+ }
154
+ else {
155
+ throw new Error(`Invalid field definition for "${key}" in model`);
156
+ }
157
+ }
158
+ return builtFields;
159
+ }
160
+ /** Create field expressions from built field definitions */
161
+ function buildFieldExprs(builtFields) {
162
+ const fieldExprs = {};
163
+ for (const [key, fieldDef] of Object.entries(builtFields)) {
164
+ fieldExprs[key] = createFieldExpr(key, fieldDef);
165
+ }
166
+ return fieldExprs;
167
+ }
168
+ /** Add ref field getters/setters to a prototype (only for NEW fields, not inherited) */
169
+ function defineRefGetters(proto, builtFields) {
170
+ for (const [fieldName, fieldDef] of Object.entries(builtFields)) {
171
+ if (fieldDef.type === 'ref') {
172
+ Object.defineProperty(proto, fieldName, {
173
+ get() {
174
+ return this[FIELD_STORAGE][fieldName];
175
+ },
176
+ set(value) {
177
+ if (isReference(value)) {
178
+ this[FIELD_STORAGE][fieldName] = value;
179
+ }
180
+ else if (typeof value === 'string') {
181
+ throw new Error(`Cannot assign string to ref field "${fieldName}". Use Model.ref\`id\` instead.`);
182
+ }
183
+ else if (isPersistent(value)) {
184
+ this[FIELD_STORAGE][fieldName] = value;
185
+ }
186
+ else if (value === null || value === undefined) {
187
+ this[FIELD_STORAGE][fieldName] = value;
188
+ }
189
+ else {
190
+ throw new Error(`Invalid value for ref field "${fieldName}".`);
191
+ }
192
+ },
193
+ enumerable: true,
194
+ configurable: true,
195
+ });
196
+ }
197
+ else if (fieldDef.type === 'refs') {
198
+ Object.defineProperty(proto, fieldName, {
199
+ get() {
200
+ return this[FIELD_STORAGE][fieldName];
201
+ },
202
+ set(value) {
203
+ if (isReferences(value)) {
204
+ this[FIELD_STORAGE][fieldName] = value;
205
+ }
206
+ else if (Array.isArray(value)) {
207
+ if (value.length === 0) {
208
+ this[FIELD_STORAGE][fieldName] = new References([]);
209
+ }
210
+ else if (typeof value[0] === 'string') {
211
+ throw new Error(`Cannot assign string array to refs field "${fieldName}". Use Model.refs(...ids) instead.`);
212
+ }
213
+ else if (isPersistent(value[0])) {
214
+ this[FIELD_STORAGE][fieldName] = value;
215
+ }
216
+ }
217
+ else if (value === null || value === undefined) {
218
+ this[FIELD_STORAGE][fieldName] = value;
219
+ }
220
+ },
221
+ enumerable: true,
222
+ configurable: true,
223
+ });
224
+ }
225
+ }
226
+ }
227
+ // Implementation
228
+ // biome-ignore lint/suspicious/noExplicitAny: implementation must accept all overload forms
229
+ export function defineModel(fieldsOrConfig) {
230
+ // Detect config form: has a `fields` property whose value is NOT a FieldBuilder/FieldDef
231
+ // (a FieldBuilder has `build`, a FieldDef has FIELD_DEF - if `fields` is one of those,
232
+ // the user named a field "fields", which is the fields-only form)
233
+ const configCandidate = fieldsOrConfig;
234
+ const fieldsValue = configCandidate.fields;
235
+ const isConfig = fieldsValue !== undefined
236
+ && typeof fieldsValue === 'object'
237
+ && fieldsValue !== null
238
+ && !(FIELD_DEF in fieldsValue)
239
+ && !('build' in fieldsValue);
240
+ const fields = isConfig
241
+ ? fieldsValue
242
+ : fieldsOrConfig;
243
+ const inject = isConfig
244
+ ? configCandidate.inject
245
+ : undefined;
246
+ const permissionsFactory = isConfig ? configCandidate.permissions : undefined;
247
+ const accessFactory = isConfig ? configCandidate.access : undefined;
248
+ const explicitName = isConfig
249
+ ? configCandidate.name
250
+ : undefined;
251
+ const builtFields = buildFieldDefs(fields);
252
+ const fieldExprs = buildFieldExprs(builtFields);
253
+ // Create dual-purpose ref accessor (callable + Zod schema)
254
+ const refAccessor = createRefAccessor();
255
+ // The model class - extends BaseModel and adds static properties
256
+ class ModelImpl extends BaseModel {
257
+ static [MODEL_DEF] = true;
258
+ static [MODEL_FIELDS] = builtFields;
259
+ static fields = fieldExprs;
260
+ static ref = refAccessor;
261
+ static get [MODEL_NAME]() {
262
+ return explicitName ?? this.name;
263
+ }
264
+ static get [MODEL_STABLE_ID]() {
265
+ return `model:${explicitName ?? this.name}`;
266
+ }
267
+ static refs(...ids) {
268
+ return new References(ids);
269
+ }
270
+ static withRepository() {
271
+ return this;
272
+ }
273
+ static create(data) {
274
+ const service = this[MODEL_SERVICE];
275
+ const proto = service ?? this.prototype;
276
+ const instance = Object.create(proto);
277
+ Object.defineProperty(instance, FIELD_STORAGE, { value: {}, enumerable: false, writable: false });
278
+ for (const [key, value] of Object.entries(data)) {
279
+ instance[key] = value;
280
+ }
281
+ return instance;
282
+ }
283
+ /**
284
+ * Override this model with additional fields.
285
+ * Returns a new model class that inherits all parent fields + adds new ones.
286
+ * The ref accessor is inherited (same cache, same identity).
287
+ */
288
+ static override(overrideConfig) {
289
+ const newBuiltFields = buildFieldDefs(overrideConfig.fields);
290
+ const mergedFields = { ...this[MODEL_FIELDS], ...newBuiltFields };
291
+ const mergedFieldExprs = buildFieldExprs(mergedFields);
292
+ const overrideName = overrideConfig.name;
293
+ const ParentClass = this;
294
+ class OverrideModelImpl extends ParentClass {
295
+ static [MODEL_DEF] = true;
296
+ static [MODEL_FIELDS] = mergedFields;
297
+ static fields = mergedFieldExprs;
298
+ // ref is INHERITED from parent - same accessor, same cache
299
+ static get [MODEL_NAME]() {
300
+ return overrideName ?? this.name;
301
+ }
302
+ static get [MODEL_STABLE_ID]() {
303
+ return `model:${overrideName ?? this.name}`;
304
+ }
305
+ }
306
+ // Add getters/setters for NEW fields only (parent's are inherited via prototype chain)
307
+ defineRefGetters(OverrideModelImpl.prototype, newBuiltFields);
308
+ // Merge inject configs
309
+ if (overrideConfig.inject) {
310
+ const parentInject = ParentClass[MODEL_INJECT] ?? {};
311
+ Object.defineProperty(OverrideModelImpl, MODEL_INJECT, {
312
+ value: { ...parentInject, ...overrideConfig.inject },
313
+ enumerable: false,
314
+ configurable: true,
315
+ writable: false,
316
+ });
317
+ }
318
+ return OverrideModelImpl;
319
+ }
320
+ }
321
+ // Store inject config on the model class (if provided)
322
+ if (inject) {
323
+ Object.defineProperty(ModelImpl, MODEL_INJECT, {
324
+ value: inject,
325
+ enumerable: false,
326
+ configurable: true,
327
+ writable: false,
328
+ });
329
+ }
330
+ // Call permissions factory with field expressions and attach result as `can`
331
+ if (permissionsFactory) {
332
+ const permissionDefs = permissionsFactory(fieldExprs);
333
+ // Stamp each permission def with its action name (the key from the permissions record)
334
+ for (const [actionName, def] of Object.entries(permissionDefs)) {
335
+ if (Array.isArray(def)) {
336
+ for (const d of def) {
337
+ if (d && typeof d === 'object')
338
+ d.name = actionName;
339
+ }
340
+ }
341
+ else if (def && typeof def === 'object') {
342
+ def.name = actionName;
343
+ }
344
+ }
345
+ Object.defineProperty(ModelImpl, 'can', {
346
+ value: permissionDefs,
347
+ enumerable: true,
348
+ configurable: false,
349
+ writable: false,
350
+ });
351
+ // Store the raw permission defs for access rule evaluation
352
+ Object.defineProperty(ModelImpl, PERMISSION_DEFS, {
353
+ value: permissionDefs,
354
+ enumerable: false,
355
+ configurable: false,
356
+ writable: false,
357
+ });
358
+ // Call access factory with permission defs and store result
359
+ if (accessFactory) {
360
+ const accessRules = accessFactory(permissionDefs);
361
+ Object.defineProperty(ModelImpl, ACCESS_RULES, {
362
+ value: accessRules,
363
+ enumerable: false,
364
+ configurable: false,
365
+ writable: false,
366
+ });
367
+ }
368
+ }
369
+ // Add ref/refs field getters/setters
370
+ defineRefGetters(ModelImpl.prototype, builtFields);
371
+ return ModelImpl;
372
+ }
373
+ // ============================================================================
374
+ // Type Guards & Helpers
375
+ // ============================================================================
376
+ export function isModelClass(value) {
377
+ return (value !== null &&
378
+ typeof value === 'function' &&
379
+ MODEL_DEF in value &&
380
+ value[MODEL_DEF] === true);
381
+ }
382
+ export function getModelFields(model) {
383
+ return model[MODEL_FIELDS];
384
+ }
385
+ export function getModelName(model) {
386
+ return model[MODEL_NAME];
387
+ }
388
+ //# sourceMappingURL=define-model.js.map