@treenity/core 1.0.47 → 3.0.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 (696) hide show
  1. package/dist/chain.d.ts +20 -0
  2. package/dist/chain.d.ts.map +1 -0
  3. package/dist/chain.js +59 -0
  4. package/dist/chain.js.map +1 -0
  5. package/dist/client/handle.d.ts +13 -0
  6. package/dist/client/handle.d.ts.map +1 -0
  7. package/dist/client/handle.js +46 -0
  8. package/dist/client/handle.js.map +1 -0
  9. package/dist/client/index.d.ts +21 -0
  10. package/dist/client/index.d.ts.map +1 -0
  11. package/dist/client/index.js +5 -0
  12. package/dist/client/index.js.map +1 -0
  13. package/dist/client/trpc.d.ts +13 -0
  14. package/dist/client/trpc.d.ts.map +1 -0
  15. package/dist/client/trpc.js +78 -0
  16. package/dist/client/trpc.js.map +1 -0
  17. package/dist/client.d.ts +2 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +2 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/comp/handle.d.ts +14 -0
  22. package/dist/comp/handle.d.ts.map +1 -0
  23. package/dist/comp/handle.js +21 -0
  24. package/dist/comp/handle.js.map +1 -0
  25. package/dist/comp/index.d.ts +42 -0
  26. package/dist/comp/index.d.ts.map +1 -0
  27. package/dist/comp/index.js +126 -0
  28. package/dist/comp/index.js.map +1 -0
  29. package/dist/comp/needs.d.ts +26 -0
  30. package/dist/comp/needs.d.ts.map +1 -0
  31. package/dist/comp/needs.js +101 -0
  32. package/dist/comp/needs.js.map +1 -0
  33. package/dist/comp/validate.d.ts +13 -0
  34. package/dist/comp/validate.d.ts.map +1 -0
  35. package/dist/comp/validate.js +117 -0
  36. package/dist/comp/validate.js.map +1 -0
  37. package/dist/comp.d.ts +2 -0
  38. package/dist/comp.d.ts.map +1 -0
  39. package/dist/comp.js +2 -0
  40. package/dist/comp.js.map +1 -0
  41. package/dist/contexts/schema/index.d.ts +7 -0
  42. package/dist/contexts/schema/index.d.ts.map +1 -0
  43. package/dist/contexts/schema/index.js +2 -0
  44. package/dist/contexts/schema/index.js.map +1 -0
  45. package/dist/contexts/schema.d.ts +2 -0
  46. package/dist/contexts/schema.d.ts.map +1 -0
  47. package/dist/contexts/schema.js +2 -0
  48. package/dist/contexts/schema.js.map +1 -0
  49. package/dist/contexts/service/index.d.ts +31 -0
  50. package/dist/contexts/service/index.d.ts.map +1 -0
  51. package/dist/contexts/service/index.js +16 -0
  52. package/dist/contexts/service/index.js.map +1 -0
  53. package/dist/contexts/service.d.ts +1 -14
  54. package/dist/contexts/service.d.ts.map +1 -1
  55. package/dist/contexts/service.js +2 -0
  56. package/dist/contexts/service.js.map +1 -0
  57. package/dist/contexts/telegram/index.d.ts +19 -0
  58. package/dist/contexts/telegram/index.d.ts.map +1 -0
  59. package/dist/contexts/telegram/index.js +89 -0
  60. package/dist/contexts/telegram/index.js.map +1 -0
  61. package/dist/contexts/text/index.d.ts +7 -0
  62. package/dist/contexts/text/index.d.ts.map +1 -0
  63. package/dist/contexts/text/index.js +9 -0
  64. package/dist/contexts/text/index.js.map +1 -0
  65. package/dist/contexts/text.d.ts +2 -0
  66. package/dist/contexts/text.d.ts.map +1 -0
  67. package/dist/contexts/text.js +2 -0
  68. package/dist/contexts/text.js.map +1 -0
  69. package/dist/core/component.d.ts +41 -0
  70. package/dist/core/component.d.ts.map +1 -0
  71. package/dist/core/component.js +105 -0
  72. package/dist/core/component.js.map +1 -0
  73. package/dist/core/context.d.ts +5 -0
  74. package/dist/core/context.d.ts.map +1 -0
  75. package/dist/core/context.js +3 -0
  76. package/dist/core/context.js.map +1 -0
  77. package/dist/core/index.d.ts +5 -0
  78. package/dist/core/index.d.ts.map +1 -0
  79. package/dist/core/index.js +8 -0
  80. package/dist/core/index.js.map +1 -0
  81. package/dist/core/path.d.ts +7 -0
  82. package/dist/core/path.d.ts.map +1 -0
  83. package/dist/core/path.js +37 -0
  84. package/dist/core/path.js.map +1 -0
  85. package/dist/core/registry.d.ts +16 -0
  86. package/dist/core/registry.d.ts.map +1 -0
  87. package/dist/core/registry.js +100 -0
  88. package/dist/core/registry.js.map +1 -0
  89. package/dist/core.d.ts +2 -0
  90. package/dist/core.d.ts.map +1 -0
  91. package/dist/core.js +2 -0
  92. package/dist/core.js.map +1 -0
  93. package/dist/log.d.ts +8 -0
  94. package/dist/log.d.ts.map +1 -0
  95. package/dist/log.js +31 -0
  96. package/dist/log.js.map +1 -0
  97. package/dist/mod/discover.d.ts +4 -0
  98. package/dist/mod/discover.d.ts.map +1 -0
  99. package/dist/mod/discover.js +103 -0
  100. package/dist/mod/discover.js.map +1 -0
  101. package/dist/mod/examples/ticker/seed.d.ts +3 -0
  102. package/dist/mod/examples/ticker/seed.d.ts.map +1 -0
  103. package/dist/mod/examples/ticker/seed.js +16 -0
  104. package/dist/mod/examples/ticker/seed.js.map +1 -0
  105. package/dist/mod/examples/ticker/service.d.ts +2 -0
  106. package/dist/mod/examples/ticker/service.d.ts.map +1 -0
  107. package/dist/mod/examples/ticker/service.js +18 -0
  108. package/dist/mod/examples/ticker/service.js.map +1 -0
  109. package/dist/mod/examples/ticker/types.d.ts +16 -0
  110. package/dist/mod/examples/ticker/types.d.ts.map +1 -0
  111. package/dist/mod/examples/ticker/types.js +20 -0
  112. package/dist/mod/examples/ticker/types.js.map +1 -0
  113. package/dist/mod/examples/ticker/view.d.ts +2 -0
  114. package/dist/mod/examples/ticker/view.d.ts.map +1 -0
  115. package/dist/mod/examples/ticker/view.js +10 -0
  116. package/dist/mod/examples/ticker/view.js.map +1 -0
  117. package/dist/mod/index.d.ts +11 -0
  118. package/dist/mod/index.d.ts.map +1 -0
  119. package/dist/mod/index.js +8 -0
  120. package/dist/mod/index.js.map +1 -0
  121. package/dist/mod/loader.d.ts +18 -0
  122. package/dist/mod/loader.d.ts.map +1 -0
  123. package/dist/mod/loader.js +154 -0
  124. package/dist/mod/loader.js.map +1 -0
  125. package/dist/mod/optimistic.d.ts +34 -0
  126. package/dist/mod/optimistic.d.ts.map +1 -0
  127. package/dist/mod/optimistic.js +176 -0
  128. package/dist/mod/optimistic.js.map +1 -0
  129. package/dist/mod/prefab.d.ts +18 -0
  130. package/dist/mod/prefab.d.ts.map +1 -0
  131. package/dist/mod/prefab.js +42 -0
  132. package/dist/mod/prefab.js.map +1 -0
  133. package/dist/mod/tracking.d.ts +8 -0
  134. package/dist/mod/tracking.d.ts.map +1 -0
  135. package/dist/mod/tracking.js +44 -0
  136. package/dist/mod/tracking.js.map +1 -0
  137. package/dist/mod/types.d.ts +31 -0
  138. package/dist/mod/types.d.ts.map +1 -0
  139. package/dist/mod/types.js +5 -0
  140. package/dist/mod/types.js.map +1 -0
  141. package/dist/mod.d.ts +2 -0
  142. package/dist/mod.d.ts.map +1 -0
  143. package/dist/mod.js +2 -0
  144. package/dist/mod.js.map +1 -0
  145. package/dist/mods/autostart/server.d.ts +2 -0
  146. package/dist/mods/autostart/server.d.ts.map +1 -0
  147. package/dist/mods/autostart/server.js +2 -0
  148. package/dist/mods/autostart/server.js.map +1 -0
  149. package/dist/mods/autostart/service.d.ts +14 -0
  150. package/dist/mods/autostart/service.d.ts.map +1 -0
  151. package/dist/mods/autostart/service.js +88 -0
  152. package/dist/mods/autostart/service.js.map +1 -0
  153. package/dist/mods/llm/index.d.ts +13 -0
  154. package/dist/mods/llm/index.d.ts.map +1 -0
  155. package/dist/mods/llm/index.js +43 -0
  156. package/dist/mods/llm/index.js.map +1 -0
  157. package/dist/mods/llm/server.d.ts +2 -0
  158. package/dist/mods/llm/server.d.ts.map +1 -0
  159. package/dist/mods/llm/server.js +2 -0
  160. package/dist/mods/llm/server.js.map +1 -0
  161. package/dist/mods/mcp/server.d.ts +3 -0
  162. package/dist/mods/mcp/server.d.ts.map +1 -0
  163. package/dist/mods/mcp/server.js +3 -0
  164. package/dist/mods/mcp/server.js.map +1 -0
  165. package/dist/mods/mcp/service.d.ts +2 -0
  166. package/dist/mods/mcp/service.d.ts.map +1 -0
  167. package/dist/mods/mcp/service.js +17 -0
  168. package/dist/mods/mcp/service.js.map +1 -0
  169. package/dist/mods/mcp/types.d.ts +5 -0
  170. package/dist/mods/mcp/types.d.ts.map +1 -0
  171. package/dist/mods/mcp/types.js +7 -0
  172. package/dist/mods/mcp/types.js.map +1 -0
  173. package/dist/mods/treenity/agent-port.d.ts +2 -0
  174. package/dist/mods/treenity/agent-port.d.ts.map +1 -0
  175. package/dist/mods/treenity/agent-port.js +76 -0
  176. package/dist/mods/treenity/agent-port.js.map +1 -0
  177. package/dist/mods/treenity/groups.d.ts +2 -0
  178. package/dist/mods/treenity/groups.d.ts.map +1 -0
  179. package/dist/mods/treenity/groups.js +18 -0
  180. package/dist/mods/treenity/groups.js.map +1 -0
  181. package/dist/mods/treenity/mod-type.d.ts +2 -0
  182. package/dist/mods/treenity/mod-type.d.ts.map +1 -0
  183. package/dist/mods/treenity/mod-type.js +9 -0
  184. package/dist/mods/treenity/mod-type.js.map +1 -0
  185. package/dist/mods/treenity/seed.d.ts +2 -0
  186. package/dist/mods/treenity/seed.d.ts.map +1 -0
  187. package/dist/mods/treenity/seed.js +53 -0
  188. package/dist/mods/treenity/seed.js.map +1 -0
  189. package/dist/mods/treenity/server.d.ts +5 -0
  190. package/dist/mods/treenity/server.d.ts.map +1 -0
  191. package/dist/mods/treenity/server.js +5 -0
  192. package/dist/mods/treenity/server.js.map +1 -0
  193. package/dist/mods/treenity/system.d.ts +36 -0
  194. package/dist/mods/treenity/system.d.ts.map +1 -0
  195. package/dist/mods/treenity/system.js +61 -0
  196. package/dist/mods/treenity/system.js.map +1 -0
  197. package/dist/mods/uix/client.d.ts +3 -0
  198. package/dist/mods/uix/client.d.ts.map +1 -0
  199. package/dist/mods/uix/client.js +96 -0
  200. package/dist/mods/uix/client.js.map +1 -0
  201. package/dist/mods/uix/compile.d.ts +7 -0
  202. package/dist/mods/uix/compile.d.ts.map +1 -0
  203. package/dist/mods/uix/compile.js +94 -0
  204. package/dist/mods/uix/compile.js.map +1 -0
  205. package/dist/mods/uix/jsx-parser.d.ts +2 -0
  206. package/dist/mods/uix/jsx-parser.d.ts.map +1 -0
  207. package/dist/mods/uix/jsx-parser.js +565 -0
  208. package/dist/mods/uix/jsx-parser.js.map +1 -0
  209. package/dist/mods/uix/verify.d.ts +7 -0
  210. package/dist/mods/uix/verify.d.ts.map +1 -0
  211. package/dist/mods/uix/verify.js +59 -0
  212. package/dist/mods/uix/verify.js.map +1 -0
  213. package/dist/schema/catalog.d.ts +23 -0
  214. package/dist/schema/catalog.d.ts.map +1 -0
  215. package/dist/schema/catalog.js +82 -0
  216. package/dist/schema/catalog.js.map +1 -0
  217. package/dist/schema/extract-schemas.d.ts +5 -0
  218. package/dist/schema/extract-schemas.d.ts.map +1 -0
  219. package/dist/schema/extract-schemas.js +444 -0
  220. package/dist/schema/extract-schemas.js.map +1 -0
  221. package/dist/schema/load.d.ts +2 -0
  222. package/dist/schema/load.d.ts.map +1 -0
  223. package/dist/schema/load.js +23 -0
  224. package/dist/schema/load.js.map +1 -0
  225. package/dist/schema/test-fixture.types.d.ts +2 -0
  226. package/dist/schema/test-fixture.types.d.ts.map +1 -0
  227. package/dist/schema/test-fixture.types.js +19 -0
  228. package/dist/schema/test-fixture.types.js.map +1 -0
  229. package/dist/schema/test-opaque.d.ts +3 -0
  230. package/dist/schema/test-opaque.d.ts.map +1 -0
  231. package/dist/schema/test-opaque.js +43 -0
  232. package/dist/schema/test-opaque.js.map +1 -0
  233. package/dist/schema/types.d.ts +37 -0
  234. package/dist/schema/types.d.ts.map +1 -0
  235. package/dist/schema/types.js +3 -0
  236. package/dist/schema/types.js.map +1 -0
  237. package/dist/server/actions.d.ts +35 -0
  238. package/dist/server/actions.d.ts.map +1 -0
  239. package/dist/server/actions.js +170 -0
  240. package/dist/server/actions.js.map +1 -0
  241. package/dist/server/agent.d.ts +6 -0
  242. package/dist/server/agent.d.ts.map +1 -0
  243. package/dist/server/agent.js +15 -0
  244. package/dist/server/agent.js.map +1 -0
  245. package/dist/server/auth.d.ts +39 -0
  246. package/dist/server/auth.d.ts.map +1 -0
  247. package/dist/server/auth.js +335 -0
  248. package/dist/server/auth.js.map +1 -0
  249. package/dist/server/client.d.ts +183 -0
  250. package/dist/server/client.d.ts.map +1 -0
  251. package/dist/server/client.js +22 -0
  252. package/dist/server/client.js.map +1 -0
  253. package/dist/server/cookies.d.ts +5 -0
  254. package/dist/server/cookies.d.ts.map +1 -0
  255. package/dist/server/cookies.js +24 -0
  256. package/dist/server/cookies.js.map +1 -0
  257. package/dist/server/doc-index.d.ts +38 -0
  258. package/dist/server/doc-index.d.ts.map +1 -0
  259. package/dist/server/doc-index.js +244 -0
  260. package/dist/server/doc-index.js.map +1 -0
  261. package/dist/server/errors.d.ts +7 -0
  262. package/dist/server/errors.d.ts.map +1 -0
  263. package/dist/server/errors.js +11 -0
  264. package/dist/server/errors.js.map +1 -0
  265. package/dist/server/factory.d.ts +23 -0
  266. package/dist/server/factory.d.ts.map +1 -0
  267. package/dist/server/factory.js +70 -0
  268. package/dist/server/factory.js.map +1 -0
  269. package/dist/server/main.d.ts +6 -0
  270. package/dist/server/main.d.ts.map +1 -0
  271. package/dist/server/main.js +45 -0
  272. package/dist/server/main.js.map +1 -0
  273. package/dist/server/mcp.d.ts +5 -0
  274. package/dist/server/mcp.d.ts.map +1 -0
  275. package/dist/server/mcp.js +280 -0
  276. package/dist/server/mcp.js.map +1 -0
  277. package/dist/server/migrate.d.ts +3 -0
  278. package/dist/server/migrate.d.ts.map +1 -0
  279. package/dist/server/migrate.js +56 -0
  280. package/dist/server/migrate.js.map +1 -0
  281. package/dist/server/mod-catalog.d.ts +14 -0
  282. package/dist/server/mod-catalog.d.ts.map +1 -0
  283. package/dist/server/mod-catalog.js +40 -0
  284. package/dist/server/mod-catalog.js.map +1 -0
  285. package/dist/server/mods-mount.d.ts +4 -0
  286. package/dist/server/mods-mount.d.ts.map +1 -0
  287. package/dist/server/mods-mount.js +169 -0
  288. package/dist/server/mods-mount.js.map +1 -0
  289. package/dist/server/mount-adapters.d.ts +9 -0
  290. package/dist/server/mount-adapters.d.ts.map +1 -0
  291. package/dist/server/mount-adapters.js +75 -0
  292. package/dist/server/mount-adapters.js.map +1 -0
  293. package/dist/server/mount.d.ts +3 -0
  294. package/dist/server/mount.d.ts.map +1 -0
  295. package/dist/server/mount.js +195 -0
  296. package/dist/server/mount.js.map +1 -0
  297. package/dist/server/prefab.d.ts +18 -0
  298. package/dist/server/prefab.d.ts.map +1 -0
  299. package/dist/server/prefab.js +70 -0
  300. package/dist/server/prefab.js.map +1 -0
  301. package/dist/server/seed/index.d.ts +6 -0
  302. package/dist/server/seed/index.d.ts.map +1 -0
  303. package/dist/server/seed/index.js +16 -0
  304. package/dist/server/seed/index.js.map +1 -0
  305. package/dist/server/server.d.ts +28 -0
  306. package/dist/server/server.d.ts.map +1 -0
  307. package/dist/server/server.js +117 -0
  308. package/dist/server/server.js.map +1 -0
  309. package/dist/server/sub.d.ts +34 -0
  310. package/dist/server/sub.d.ts.map +1 -0
  311. package/dist/server/sub.js +174 -0
  312. package/dist/server/sub.js.map +1 -0
  313. package/dist/server/trpc.d.ts +192 -0
  314. package/dist/server/trpc.d.ts.map +1 -0
  315. package/dist/server/trpc.js +319 -0
  316. package/dist/server/trpc.js.map +1 -0
  317. package/dist/server/types-mount.d.ts +3 -0
  318. package/dist/server/types-mount.d.ts.map +1 -0
  319. package/dist/server/types-mount.js +144 -0
  320. package/dist/server/types-mount.js.map +1 -0
  321. package/dist/server/validate.d.ts +3 -0
  322. package/dist/server/validate.d.ts.map +1 -0
  323. package/dist/server/validate.js +20 -0
  324. package/dist/server/validate.js.map +1 -0
  325. package/dist/server/volatile.d.ts +11 -0
  326. package/dist/server/volatile.d.ts.map +1 -0
  327. package/dist/server/volatile.js +26 -0
  328. package/dist/server/volatile.js.map +1 -0
  329. package/dist/server/watch.d.ts +23 -0
  330. package/dist/server/watch.d.ts.map +1 -0
  331. package/dist/server/watch.js +178 -0
  332. package/dist/server/watch.js.map +1 -0
  333. package/dist/tree/cache.d.ts +3 -0
  334. package/dist/tree/cache.d.ts.map +1 -0
  335. package/dist/tree/cache.js +48 -0
  336. package/dist/tree/cache.js.map +1 -0
  337. package/dist/tree/fs.d.ts +3 -0
  338. package/dist/tree/fs.d.ts.map +1 -0
  339. package/dist/tree/fs.js +274 -0
  340. package/dist/tree/fs.js.map +1 -0
  341. package/dist/tree/index.d.ts +38 -0
  342. package/dist/tree/index.d.ts.map +1 -0
  343. package/dist/tree/index.js +182 -0
  344. package/dist/tree/index.js.map +1 -0
  345. package/dist/tree/inflight.d.ts +2 -0
  346. package/dist/tree/inflight.d.ts.map +1 -0
  347. package/dist/tree/inflight.js +15 -0
  348. package/dist/tree/inflight.js.map +1 -0
  349. package/dist/tree/json-codec.d.ts +2 -0
  350. package/dist/tree/json-codec.d.ts.map +1 -0
  351. package/dist/tree/json-codec.js +13 -0
  352. package/dist/tree/json-codec.js.map +1 -0
  353. package/dist/tree/mimefs.d.ts +13 -0
  354. package/dist/tree/mimefs.d.ts.map +1 -0
  355. package/dist/tree/mimefs.js +124 -0
  356. package/dist/tree/mimefs.js.map +1 -0
  357. package/dist/tree/mongo.d.ts +5 -0
  358. package/dist/tree/mongo.d.ts.map +1 -0
  359. package/dist/tree/mongo.js +110 -0
  360. package/dist/tree/mongo.js.map +1 -0
  361. package/dist/tree/patch.d.ts +30 -0
  362. package/dist/tree/patch.d.ts.map +1 -0
  363. package/dist/tree/patch.js +112 -0
  364. package/dist/tree/patch.js.map +1 -0
  365. package/dist/tree/query.d.ts +12 -0
  366. package/dist/tree/query.d.ts.map +1 -0
  367. package/dist/tree/query.js +61 -0
  368. package/dist/tree/query.js.map +1 -0
  369. package/dist/tree/repath.d.ts +3 -0
  370. package/dist/tree/repath.d.ts.map +1 -0
  371. package/dist/tree/repath.js +38 -0
  372. package/dist/tree/repath.js.map +1 -0
  373. package/dist/tree-chain.d.ts +18 -0
  374. package/dist/tree-chain.d.ts.map +1 -0
  375. package/dist/tree-chain.js +109 -0
  376. package/dist/tree-chain.js.map +1 -0
  377. package/dist/tree.d.ts +2 -0
  378. package/dist/tree.d.ts.map +1 -0
  379. package/dist/tree.js +2 -0
  380. package/dist/tree.js.map +1 -0
  381. package/dist/uri.d.ts +11 -0
  382. package/dist/uri.d.ts.map +1 -0
  383. package/dist/uri.js +79 -0
  384. package/dist/uri.js.map +1 -0
  385. package/package.json +39 -40
  386. package/src/chain.test.ts +190 -0
  387. package/src/chain.ts +82 -0
  388. package/src/client/client.test.ts +192 -0
  389. package/src/client/handle.ts +53 -0
  390. package/src/client/index.ts +18 -0
  391. package/src/client/trpc.ts +91 -0
  392. package/src/client.ts +1 -0
  393. package/src/comp/CLAUDE.md +14 -0
  394. package/src/comp/handle.ts +36 -0
  395. package/src/comp/index.test.ts +129 -0
  396. package/src/comp/index.ts +175 -0
  397. package/src/comp/needs.test.ts +499 -0
  398. package/src/comp/needs.ts +113 -0
  399. package/src/comp/validate.test.ts +304 -0
  400. package/src/comp/validate.ts +125 -0
  401. package/src/comp.ts +1 -0
  402. package/src/contexts/schema/index.ts +7 -0
  403. package/src/contexts/schema.ts +1 -0
  404. package/src/contexts/service/index.test.ts +323 -0
  405. package/src/contexts/service/index.ts +43 -0
  406. package/src/contexts/service.ts +1 -0
  407. package/src/contexts/telegram/index.ts +115 -0
  408. package/src/contexts/text/index.test.ts +31 -0
  409. package/src/contexts/text/index.ts +18 -0
  410. package/src/contexts/text.ts +1 -0
  411. package/src/core/component.ts +151 -0
  412. package/src/core/context.ts +14 -0
  413. package/src/core/index.test.ts +203 -0
  414. package/src/core/index.ts +9 -0
  415. package/src/core/path.ts +35 -0
  416. package/src/core/registry.ts +115 -0
  417. package/src/core.ts +1 -0
  418. package/src/log.test.ts +70 -0
  419. package/src/log.ts +28 -0
  420. package/src/mod/discover.test.ts +133 -0
  421. package/src/mod/discover.ts +100 -0
  422. package/src/mod/docs/00-index.md +19 -0
  423. package/src/mod/docs/01-primitives.md +38 -0
  424. package/src/mod/docs/02-core-api.md +68 -0
  425. package/src/mod/docs/03-registry.md +30 -0
  426. package/src/mod/docs/04-store.md +62 -0
  427. package/src/mod/docs/05-comp.md +111 -0
  428. package/src/mod/docs/06-actions.md +193 -0
  429. package/src/mod/docs/07-realtime.md +100 -0
  430. package/src/mod/docs/08-services.md +33 -0
  431. package/src/mod/docs/09-mounts.md +43 -0
  432. package/src/mod/docs/10-acl.md +60 -0
  433. package/src/mod/docs/11-server.md +62 -0
  434. package/src/mod/docs/12-conventions.md +65 -0
  435. package/src/mod/docs/13-example.md +132 -0
  436. package/src/mod/docs/14-mod-format.md +304 -0
  437. package/src/mod/docs/15-documenting-types.md +156 -0
  438. package/src/mod/examples/ticker/seed.ts +19 -0
  439. package/src/mod/examples/ticker/service.ts +20 -0
  440. package/src/mod/examples/ticker/ticker.test.ts +18 -0
  441. package/src/mod/examples/ticker/types.ts +22 -0
  442. package/src/mod/examples/ticker/view.tsx +19 -0
  443. package/src/mod/index.ts +12 -0
  444. package/src/mod/loader.test.ts +168 -0
  445. package/src/mod/loader.ts +174 -0
  446. package/src/mod/optimistic.test.ts +446 -0
  447. package/src/mod/optimistic.ts +210 -0
  448. package/src/mod/prefab.ts +62 -0
  449. package/src/mod/tracking.test.ts +59 -0
  450. package/src/mod/tracking.ts +51 -0
  451. package/src/mod/types.ts +40 -0
  452. package/src/mod.ts +1 -0
  453. package/src/mods/autostart/CLAUDE.md +6 -0
  454. package/src/mods/autostart/autostart.test.ts +85 -0
  455. package/src/mods/autostart/server.ts +1 -0
  456. package/src/mods/autostart/service.ts +98 -0
  457. package/src/mods/llm/CLAUDE.md +6 -0
  458. package/src/mods/llm/index.ts +57 -0
  459. package/src/mods/llm/llm.test.ts +109 -0
  460. package/src/mods/llm/server.ts +1 -0
  461. package/src/mods/mcp/CLAUDE.md +6 -0
  462. package/src/mods/mcp/server.ts +2 -0
  463. package/src/mods/mcp/service.ts +19 -0
  464. package/src/mods/mcp/types.ts +7 -0
  465. package/src/mods/treenity/agent-port.ts +93 -0
  466. package/src/mods/treenity/groups.ts +19 -0
  467. package/src/mods/treenity/mod-type.ts +10 -0
  468. package/src/mods/treenity/seed.ts +56 -0
  469. package/src/mods/treenity/server.ts +4 -0
  470. package/src/mods/treenity/system.ts +70 -0
  471. package/src/mods/uix/CLAUDE.md +7 -0
  472. package/src/mods/uix/client.ts +117 -0
  473. package/src/mods/uix/compile.test.ts +228 -0
  474. package/src/mods/uix/compile.ts +110 -0
  475. package/src/mods/uix/jsx-parser.test.ts +554 -0
  476. package/src/mods/uix/jsx-parser.ts +489 -0
  477. package/src/mods/uix/lazy-load.test.ts +261 -0
  478. package/src/mods/uix/uix-repomix.md +3509 -0
  479. package/src/mods/uix/verify.ts +68 -0
  480. package/src/schema/CLAUDE.md +13 -0
  481. package/src/schema/catalog.ts +101 -0
  482. package/src/schema/extract-schemas.test.ts +84 -0
  483. package/src/schema/extract-schemas.ts +462 -0
  484. package/src/schema/generated/autostart.json +44 -0
  485. package/src/schema/generated/board.column.json +25 -0
  486. package/src/schema/generated/board.task.json +147 -0
  487. package/src/schema/generated/brahman.action.back.json +12 -0
  488. package/src/schema/generated/brahman.action.broadcast.json +31 -0
  489. package/src/schema/generated/brahman.action.call.json +57 -0
  490. package/src/schema/generated/brahman.action.emittext.json +23 -0
  491. package/src/schema/generated/brahman.action.eval.json +23 -0
  492. package/src/schema/generated/brahman.action.file.json +28 -0
  493. package/src/schema/generated/brahman.action.forward.json +29 -0
  494. package/src/schema/generated/brahman.action.getvalue.json +28 -0
  495. package/src/schema/generated/brahman.action.ifelse.json +42 -0
  496. package/src/schema/generated/brahman.action.keywordselect.json +46 -0
  497. package/src/schema/generated/brahman.action.message.json +127 -0
  498. package/src/schema/generated/brahman.action.onerror.json +29 -0
  499. package/src/schema/generated/brahman.action.page.json +22 -0
  500. package/src/schema/generated/brahman.action.params.json +36 -0
  501. package/src/schema/generated/brahman.action.question.json +43 -0
  502. package/src/schema/generated/brahman.action.remove.json +12 -0
  503. package/src/schema/generated/brahman.action.resethistory.json +12 -0
  504. package/src/schema/generated/brahman.action.resetsession.json +12 -0
  505. package/src/schema/generated/brahman.action.selectlang.json +20 -0
  506. package/src/schema/generated/brahman.action.setvalue.json +27 -0
  507. package/src/schema/generated/brahman.action.tag.json +27 -0
  508. package/src/schema/generated/brahman.bot.json +68 -0
  509. package/src/schema/generated/brahman.page.json +25 -0
  510. package/src/schema/generated/brahman.session.json +29 -0
  511. package/src/schema/generated/brahman.user.json +58 -0
  512. package/src/schema/generated/cafe.contact.json +56 -0
  513. package/src/schema/generated/cafe.mail.json +29 -0
  514. package/src/schema/generated/default.json +15 -0
  515. package/src/schema/generated/doc.page.json +23 -0
  516. package/src/schema/generated/examples.demo.generator.json +16 -0
  517. package/src/schema/generated/examples.demo.sensor.json +35 -0
  518. package/src/schema/generated/groups.json +20 -0
  519. package/src/schema/generated/launcher.json +91 -0
  520. package/src/schema/generated/mcp.server.json +15 -0
  521. package/src/schema/generated/mindmap.map.json +22 -0
  522. package/src/schema/generated/sim.agent.json +24 -0
  523. package/src/schema/generated/sim.ai.json +24 -0
  524. package/src/schema/generated/sim.config.json +38 -0
  525. package/src/schema/generated/sim.descriptive.json +26 -0
  526. package/src/schema/generated/sim.events.json +47 -0
  527. package/src/schema/generated/sim.item.json +20 -0
  528. package/src/schema/generated/sim.memory.json +17 -0
  529. package/src/schema/generated/sim.nearby.json +17 -0
  530. package/src/schema/generated/sim.position.json +25 -0
  531. package/src/schema/generated/sim.round.json +64 -0
  532. package/src/schema/generated/sim.world.json +32 -0
  533. package/src/schema/generated/t.agent.port.json +74 -0
  534. package/src/schema/generated/t.llm.json +20 -0
  535. package/src/schema/generated/t.mod.json +27 -0
  536. package/src/schema/generated/t3d.animator.json +46 -0
  537. package/src/schema/generated/t3d.audio.json +58 -0
  538. package/src/schema/generated/t3d.camera.json +50 -0
  539. package/src/schema/generated/t3d.collider.json +84 -0
  540. package/src/schema/generated/t3d.light.json +90 -0
  541. package/src/schema/generated/t3d.line.json +47 -0
  542. package/src/schema/generated/t3d.lod.json +28 -0
  543. package/src/schema/generated/t3d.material.json +131 -0
  544. package/src/schema/generated/t3d.mesh.json +65 -0
  545. package/src/schema/generated/t3d.object.json +64 -0
  546. package/src/schema/generated/t3d.particles.json +109 -0
  547. package/src/schema/generated/t3d.rigidbody.json +81 -0
  548. package/src/schema/generated/t3d.scene.json +7 -0
  549. package/src/schema/generated/t3d.script.json +23 -0
  550. package/src/schema/generated/t3d.text.json +86 -0
  551. package/src/schema/generated/t3d.trail.json +45 -0
  552. package/src/schema/generated/task.json +96 -0
  553. package/src/schema/generated/test.fixture.json +43 -0
  554. package/src/schema/generated/ticker.config.json +43 -0
  555. package/src/schema/generated/ticker.price.json +20 -0
  556. package/src/schema/generated/todo.item.json +25 -0
  557. package/src/schema/generated/todo.list.json +33 -0
  558. package/src/schema/generated/treenity.system.json +259 -0
  559. package/src/schema/generated/whisper.audio.json +25 -0
  560. package/src/schema/generated/whisper.checklist.json +17 -0
  561. package/src/schema/generated/whisper.config.json +30 -0
  562. package/src/schema/generated/whisper.inbox.json +24 -0
  563. package/src/schema/generated/whisper.meta.json +35 -0
  564. package/src/schema/generated/whisper.text.json +16 -0
  565. package/src/schema/load.ts +24 -0
  566. package/src/schema/schema.test.ts +86 -0
  567. package/src/schema/test-fixture.types.ts +21 -0
  568. package/src/schema/test-opaque.ts +42 -0
  569. package/src/schema/types.ts +33 -0
  570. package/src/server/CLAUDE.md +26 -0
  571. package/src/server/actions.test.ts +272 -0
  572. package/src/server/actions.ts +274 -0
  573. package/src/server/agent-sub.test.ts +90 -0
  574. package/src/server/agent.test.ts +305 -0
  575. package/src/server/agent.ts +17 -0
  576. package/src/server/api.test.ts +454 -0
  577. package/src/server/auth.test.ts +441 -0
  578. package/src/server/auth.ts +386 -0
  579. package/src/server/client.ts +24 -0
  580. package/src/server/conditions.test.ts +128 -0
  581. package/src/server/cookies.ts +25 -0
  582. package/src/server/coverage.test.ts +827 -0
  583. package/src/server/doc-index.ts +286 -0
  584. package/src/server/e2e.test.ts +966 -0
  585. package/src/server/errors.ts +11 -0
  586. package/src/server/factory.ts +99 -0
  587. package/src/server/main.ts +56 -0
  588. package/src/server/mcp.ts +326 -0
  589. package/src/server/migrate.test.ts +123 -0
  590. package/src/server/migrate.ts +62 -0
  591. package/src/server/mod-catalog.ts +59 -0
  592. package/src/server/mods-mount.ts +179 -0
  593. package/src/server/mount-adapters.ts +82 -0
  594. package/src/server/mount.parametrized.test.ts +52 -0
  595. package/src/server/mount.query.test.ts +127 -0
  596. package/src/server/mount.test.ts +497 -0
  597. package/src/server/mount.ts +208 -0
  598. package/src/server/prefab.test.ts +415 -0
  599. package/src/server/prefab.ts +104 -0
  600. package/src/server/seed/index.ts +24 -0
  601. package/src/server/server.ts +153 -0
  602. package/src/server/stress.test.ts +844 -0
  603. package/src/server/sub.test.ts +55 -0
  604. package/src/server/sub.ts +224 -0
  605. package/src/server/trpc.ts +369 -0
  606. package/src/server/types-mount.ts +142 -0
  607. package/src/server/validate.test.ts +91 -0
  608. package/src/server/validate.ts +22 -0
  609. package/src/server/volatile.test.ts +140 -0
  610. package/src/server/volatile.ts +32 -0
  611. package/src/server/watch.test.ts +594 -0
  612. package/src/server/watch.ts +202 -0
  613. package/src/server/workflow.test.ts +82 -0
  614. package/src/tree/CLAUDE.md +13 -0
  615. package/src/tree/cache.test.ts +213 -0
  616. package/src/tree/cache.ts +51 -0
  617. package/src/tree/fs.test.ts +247 -0
  618. package/src/tree/fs.ts +251 -0
  619. package/src/tree/index.test.ts +164 -0
  620. package/src/tree/index.ts +216 -0
  621. package/src/tree/inflight.ts +15 -0
  622. package/src/tree/json-codec.ts +16 -0
  623. package/src/tree/mimefs.test.ts +289 -0
  624. package/src/tree/mimefs.ts +142 -0
  625. package/src/tree/mongo.ts +125 -0
  626. package/src/tree/patch.test.ts +192 -0
  627. package/src/tree/patch.ts +133 -0
  628. package/src/tree/query.test.ts +110 -0
  629. package/src/tree/query.ts +70 -0
  630. package/src/tree/repath.test.ts +86 -0
  631. package/src/tree/repath.ts +53 -0
  632. package/src/tree-chain.test.ts +723 -0
  633. package/src/tree-chain.ts +144 -0
  634. package/src/tree.ts +1 -0
  635. package/src/uri.test.ts +86 -0
  636. package/src/uri.ts +82 -0
  637. package/CHANGELOG.md +0 -305
  638. package/README.md +0 -18
  639. package/dist/context.d.ts +0 -41
  640. package/dist/context.d.ts.map +0 -1
  641. package/dist/context.mjs +0 -81
  642. package/dist/context.mjs.map +0 -1
  643. package/dist/contexts/node-engine.d.ts +0 -12
  644. package/dist/contexts/node-engine.d.ts.map +0 -1
  645. package/dist/contexts/node-engine.mjs +0 -7
  646. package/dist/contexts/node-engine.mjs.map +0 -1
  647. package/dist/contexts/noflo/types.d.ts +0 -20
  648. package/dist/contexts/noflo/types.d.ts.map +0 -1
  649. package/dist/contexts/object.d.ts +0 -11
  650. package/dist/contexts/object.d.ts.map +0 -1
  651. package/dist/contexts/object.mjs +0 -15
  652. package/dist/contexts/object.mjs.map +0 -1
  653. package/dist/contexts/proto.d.ts +0 -11
  654. package/dist/contexts/proto.d.ts.map +0 -1
  655. package/dist/contexts/proto.mjs +0 -7
  656. package/dist/contexts/proto.mjs.map +0 -1
  657. package/dist/contexts/react-context.d.ts +0 -21
  658. package/dist/contexts/react-context.d.ts.map +0 -1
  659. package/dist/contexts/react-context.mjs +0 -24
  660. package/dist/contexts/react-context.mjs.map +0 -1
  661. package/dist/contexts/service.mjs +0 -7
  662. package/dist/contexts/service.mjs.map +0 -1
  663. package/dist/get-type-cache.d.ts +0 -2
  664. package/dist/get-type-cache.d.ts.map +0 -1
  665. package/dist/get-type-cache.mjs +0 -7
  666. package/dist/get-type-cache.mjs.map +0 -1
  667. package/dist/index.d.ts +0 -13
  668. package/dist/index.d.ts.map +0 -1
  669. package/dist/index.mjs +0 -10
  670. package/dist/index.mjs.map +0 -1
  671. package/dist/link/link.d.ts +0 -25
  672. package/dist/link/link.d.ts.map +0 -1
  673. package/dist/link/link.mjs +0 -72
  674. package/dist/link/link.mjs.map +0 -1
  675. package/dist/link/link.test.d.ts +0 -2
  676. package/dist/link/link.test.d.ts.map +0 -1
  677. package/dist/loading.d.ts +0 -9
  678. package/dist/loading.d.ts.map +0 -1
  679. package/dist/meta-type.d.ts +0 -58
  680. package/dist/meta-type.d.ts.map +0 -1
  681. package/dist/meta-type.mjs +0 -104
  682. package/dist/meta-type.mjs.map +0 -1
  683. package/dist/meta.d.ts +0 -20
  684. package/dist/meta.d.ts.map +0 -1
  685. package/dist/meta.mjs +0 -16
  686. package/dist/meta.mjs.map +0 -1
  687. package/dist/node/index.d.ts +0 -2
  688. package/dist/node/index.d.ts.map +0 -1
  689. package/dist/node/types.d.ts +0 -37
  690. package/dist/node/types.d.ts.map +0 -1
  691. package/dist/test/context.test.d.ts +0 -2
  692. package/dist/test/context.test.d.ts.map +0 -1
  693. package/dist/types.d.ts +0 -14
  694. package/dist/types.d.ts.map +0 -1
  695. package/dist/types.mjs +0 -16
  696. package/dist/types.mjs.map +0 -1
@@ -0,0 +1,144 @@
1
+ // treeChain — tree-aware Proxy chain
2
+ // Navigate tree via dots, auto-follow refs, execute actions, typed components.
3
+ // Layer L2: uses Tree (L1) + comp (L2). No server dependency.
4
+
5
+ import { isComponent, isRef, normalizeType, resolve, type NodeData } from '#core'
6
+ import { getComp, type Class, type TypeClass, type Raw } from '#comp'
7
+ import type { Tree } from '#tree'
8
+ import type { Chain } from './chain'
9
+
10
+ type Spec = { cls: Class | null; key?: string }
11
+ type Op = string | [string, unknown[]]
12
+
13
+ // ── Public types ──
14
+ // Intersection trick: TreeChainAPI has named props with specific types,
15
+ // index signature adds `& TreeChain` via intersection (not interface — no conflicts).
16
+ // Result: t.scanner → TreeChain, t.scanner(Scanner) → Chain<Scanner>, await t → NodeData.
17
+
18
+ type TreeChainAPI = {
19
+ <T>(cls: TypeClass<T>): Chain<T>
20
+ readonly $path: string
21
+ $get<T>(cls: Class<T>, key?: string): Chain<T>
22
+ $children(query?: Record<string, unknown>): Promise<NodeData[]>
23
+ $set<T>(cls: Class<T>, data?: Partial<Raw<T>>): Promise<void>
24
+ then<R1 = NodeData, R2 = never>(
25
+ onfulfilled?: ((value: NodeData) => R1 | PromiseLike<R1>) | null,
26
+ onrejected?: ((reason: any) => R2 | PromiseLike<R2>) | null,
27
+ ): Promise<R1 | R2>
28
+ }
29
+
30
+ export type TreeChain = TreeChainAPI & { [k: string]: TreeChain }
31
+
32
+ const EMPTY_FN = () => {}
33
+ const NO_OPS: Op[] = []
34
+
35
+ async function exec(tree: Tree, path: string, spec: Spec | null, ops: Op[]): Promise<any> {
36
+ const node = await tree.get(path)
37
+ if (!node) throw new Error(`Node not found: ${path}`)
38
+
39
+ let cur: any = node
40
+ let curType = node.$type
41
+
42
+ // Apply $get — extract typed or named component
43
+ if (spec) {
44
+ if (spec.key) {
45
+ const ck = node[spec.key]
46
+ if (!isComponent(ck)) throw new Error(`Component "${spec.key}" not found on ${path}`)
47
+ cur = ck
48
+ curType = cur.$type
49
+ } else if (spec.cls) {
50
+ const comp = getComp(node, spec.cls)
51
+ if (!comp) throw new Error(`Type "${normalizeType(spec.cls)}" not found on ${path}`)
52
+ cur = comp
53
+ curType = comp.$type ?? curType
54
+ }
55
+ }
56
+
57
+ // Walk ops: field reads and action calls
58
+ for (const op of ops) {
59
+ if (typeof op === 'string') {
60
+ // Field read
61
+ cur = cur[op]
62
+ if (cur == null) throw new Error(`Field "${op}" is null at ${path}`)
63
+
64
+ // Auto-follow $ref
65
+ if (isRef(cur)) {
66
+ const target = await tree.get(cur.$ref)
67
+ if (!target) throw new Error(`Ref not found: ${cur.$ref}`)
68
+ cur = target
69
+ curType = target.$type
70
+ }
71
+ } else {
72
+ // Action call: [name, args]
73
+ const [action, args] = op
74
+ const handler = resolve(curType, `action:${action}`)
75
+ if (!handler) throw new Error(`No action "${action}" for type "${curType}"`)
76
+ cur = await (handler as any)(null, args[0])
77
+ }
78
+ }
79
+
80
+ return cur
81
+ }
82
+
83
+ function make(tree: Tree, path: string, spec: Spec | null, ops: Op[]): any {
84
+ return new Proxy(EMPTY_FN as any, {
85
+ get: (_, p: string | symbol) => {
86
+ if (p === Symbol.toPrimitive || p === Symbol.toStringTag) return `TreeChain(${path})`
87
+ if (typeof p === 'symbol') return undefined
88
+
89
+ if (p === '$path') return path
90
+
91
+ if (p === 'then') {
92
+ return (res: any, rej: any) => exec(tree, path, spec, ops).then(res, rej)
93
+ }
94
+
95
+ if (p === '$get') {
96
+ return (cls: Class | null, key?: string) =>
97
+ make(tree, path, { cls, key }, NO_OPS)
98
+ }
99
+
100
+ if (p === '$children') {
101
+ return (query?: Record<string, unknown>) =>
102
+ tree.getChildren(path, query ? { query } : undefined).then(r => r.items)
103
+ }
104
+
105
+ if (p === '$set') {
106
+ return (cls: Class, data?: Record<string, unknown>) =>
107
+ tree.set({ $path: path, $type: normalizeType(cls), ...data })
108
+ }
109
+
110
+ // After [Class] or ops started — accumulate as field ops
111
+ if (spec || ops.length > 0) {
112
+ return make(tree, path, spec, [...ops, p])
113
+ }
114
+
115
+ // Child navigation — string concat, no array allocation
116
+ return make(tree, path === '/' ? `/${p}` : `${path}/${p}`, null, NO_OPS)
117
+ },
118
+
119
+ apply: (_, __, args) => {
120
+ // Action call — spec set, last op is string → convert to action
121
+ if (spec && ops.length > 0) {
122
+ const last = ops[ops.length - 1]
123
+ if (typeof last === 'string') {
124
+ return make(tree, path, spec, [...ops.slice(0, -1), [last, args]])
125
+ }
126
+ }
127
+
128
+ // Class narrowing: proxy(Scanner) → set spec
129
+ const cls = args[0]
130
+ if (args.length === 1 && typeof cls === 'function' && cls.$type) {
131
+ return make(tree, path, { cls, key: undefined }, NO_OPS)
132
+ }
133
+
134
+ throw new Error('Call with Class first: t.path(Type).action()')
135
+ },
136
+ })
137
+ }
138
+
139
+ export function treeChain(tree: Tree, basePath?: string): TreeChain {
140
+ const path = basePath
141
+ ? (basePath.startsWith('/') ? basePath : '/' + basePath)
142
+ : '/'
143
+ return make(tree, path, null, NO_OPS)
144
+ }
package/src/tree.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './tree/index.ts';
@@ -0,0 +1,86 @@
1
+ import assert from 'node:assert/strict';
2
+ import { describe, it } from 'node:test';
3
+ import { parseURI } from './uri';
4
+
5
+ describe('parseURI', () => {
6
+ it('read field on $type', () => {
7
+ const r = parseURI('/sys/types/cafe/contact#schema')
8
+ assert.deepEqual(r, { path: '/sys/types/cafe/contact', field: 'schema' })
9
+ })
10
+
11
+ it('read field on named component', () => {
12
+ const r = parseURI('/users/me#profile.email')
13
+ assert.deepEqual(r, { path: '/users/me', key: 'profile', field: 'email' })
14
+ })
15
+
16
+ it('action without key', () => {
17
+ const r = parseURI('/cafe/contact#submit()')
18
+ assert.deepEqual(r, { path: '/cafe/contact', action: 'submit' })
19
+ })
20
+
21
+ it('action on named component', () => {
22
+ const r = parseURI('/cafe/contact#contact.submit()')
23
+ assert.deepEqual(r, { path: '/cafe/contact', key: 'contact', action: 'submit' })
24
+ })
25
+
26
+ it('action with query params (standard order: ?query#fragment)', () => {
27
+ const r = parseURI('/users?role=admin&limit=10#find()')
28
+ assert.deepEqual(r, {
29
+ path: '/users',
30
+ action: 'find',
31
+ data: { role: 'admin', limit: 10 },
32
+ })
33
+ })
34
+
35
+ it('nested dot-notation params', () => {
36
+ const r = parseURI('/col?age.$gt=10&age.$lt=50#find()')
37
+ assert.deepEqual(r, {
38
+ path: '/col',
39
+ action: 'find',
40
+ data: { age: { $gt: 10, $lt: 50 } },
41
+ })
42
+ })
43
+
44
+ it('boolean and null coercion in params', () => {
45
+ const r = parseURI('/x?a=true&b=false&c=null#do()')
46
+ assert.deepEqual(r, {
47
+ path: '/x',
48
+ action: 'do',
49
+ data: { a: true, b: false, c: null },
50
+ })
51
+ })
52
+
53
+ it('url-encoded values', () => {
54
+ const r = parseURI('/x?q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82#find()')
55
+ assert.deepEqual(r, {
56
+ path: '/x',
57
+ action: 'find',
58
+ data: { q: 'привет' },
59
+ })
60
+ })
61
+
62
+ it('path-only URI returns just path', () => {
63
+ const r = parseURI('/some/path')
64
+ assert.deepEqual(r, { path: '/some/path' })
65
+ })
66
+
67
+ it('empty fragment returns just path', () => {
68
+ const r = parseURI('/some/path#')
69
+ assert.deepEqual(r, { path: '/some/path' })
70
+ })
71
+
72
+ it('throws on empty name after key', () => {
73
+ assert.throws(() => parseURI('/x#key.'), /Empty name/)
74
+ })
75
+
76
+ it('empty parens = action, not field named "()"', () => {
77
+ const r = parseURI('/x#do()')
78
+ assert.equal(r.action, 'do')
79
+ assert.equal(r.field, undefined)
80
+ })
81
+
82
+ it('no query = no data field', () => {
83
+ const r = parseURI('/x#submit()')
84
+ assert.equal(r.data, undefined)
85
+ })
86
+ })
package/src/uri.ts ADDED
@@ -0,0 +1,82 @@
1
+ // Treenity URI — universal intra-node addressing (D17)
2
+ // Standard URL order: /path[?query]#[key.]name[()]
3
+ // Parsed via native URL — free encoding, edge case handling.
4
+ // () = action call, no () = field read
5
+ // Query: dot-notation for nesting (age.$gt=10 → { age: { $gt: 10 } })
6
+
7
+ export interface TreenityURI {
8
+ path: string
9
+ key?: string
10
+ field?: string
11
+ action?: string
12
+ data?: Record<string, unknown>
13
+ }
14
+
15
+ export function parseURI(uri: string): TreenityURI {
16
+ const url = new URL(uri, 'treenity://t')
17
+
18
+ const path = url.pathname
19
+ if (!path.startsWith('/')) throw new Error('Path must start with /')
20
+
21
+ const result: TreenityURI = { path }
22
+
23
+ const fragment = url.hash.slice(1) // strip leading #
24
+ if (fragment) {
25
+ const isCall = fragment.endsWith('()')
26
+ const clean = isCall ? fragment.slice(0, -2) : fragment
27
+ if (!clean) throw new Error('Empty name in URI fragment')
28
+
29
+ const dot = clean.indexOf('.')
30
+ const key = dot > -1 ? clean.slice(0, dot) : undefined
31
+ const name = dot > -1 ? clean.slice(dot + 1) : clean
32
+ if (!name) throw new Error('Empty name in URI fragment')
33
+
34
+ if (key) result.key = key
35
+ if (isCall) result.action = name; else result.field = name
36
+ }
37
+
38
+ const data = url.search ? expandDots(url.searchParams) : undefined
39
+ if (data) result.data = data
40
+ return result
41
+ }
42
+
43
+ /** Extract value from node by parsed URI (key + field) */
44
+ export function deriveURI<T>(node: Record<string, unknown> | undefined, uri: TreenityURI): T | undefined {
45
+ if (!node) return undefined
46
+ if (!uri.key && !uri.field) return node as T
47
+ const comp = uri.key ? node[uri.key] : node
48
+ if (comp === undefined) return undefined
49
+ if (!uri.field) return comp as T
50
+ return (comp as Record<string, unknown>)?.[uri.field] as T
51
+ }
52
+
53
+ /** Expand URLSearchParams with dot-notation into nested object */
54
+ function expandDots(params: URLSearchParams): Record<string, unknown> {
55
+ const result: Record<string, unknown> = {}
56
+ for (const [key, val] of params) setNested(result, key, coerce(val))
57
+ return result
58
+ }
59
+
60
+ function coerce(v: string): unknown {
61
+ if (v === 'true') return true
62
+ if (v === 'false') return false
63
+ if (v === 'null') return null
64
+ const n = Number(v)
65
+ if (v !== '' && !isNaN(n)) return n
66
+ return v
67
+ }
68
+
69
+ function setNested(obj: Record<string, unknown>, path: string, val: unknown) {
70
+ const parts = path.split('.')
71
+ let cur = obj
72
+
73
+ for (let i = 0; i < parts.length - 1; i++) {
74
+ const p = parts[i]
75
+ if (!(p in cur) || typeof cur[p] !== 'object' || cur[p] === null) {
76
+ cur[p] = {}
77
+ }
78
+ cur = cur[p] as Record<string, unknown>
79
+ }
80
+
81
+ cur[parts[parts.length - 1]] = val
82
+ }
package/CHANGELOG.md DELETED
@@ -1,305 +0,0 @@
1
- # @treenity/core
2
-
3
- ## 1.0.47
4
-
5
- ### Patch Changes
6
-
7
- - update version
8
-
9
- ## 1.0.46
10
-
11
- ### Patch Changes
12
-
13
- - Updated dependencies
14
- - @treenity/call-chain@1.0.31
15
- - @treenity/js-shared@1.0.34
16
-
17
- ## 1.0.45
18
-
19
- ### Patch Changes
20
-
21
- - Updated dependencies
22
- - @treenity/call-chain@1.0.30
23
-
24
- ## 1.0.44
25
-
26
- ### Patch Changes
27
-
28
- - Update libs
29
- - Updated dependencies
30
- - @treenity/call-chain@1.0.29
31
- - @treenity/js-shared@1.0.33
32
-
33
- ## 1.0.43
34
-
35
- ### Patch Changes
36
-
37
- - Update version
38
- - Updated dependencies
39
- - @treenity/call-chain@1.0.28
40
- - @treenity/js-shared@1.0.32
41
-
42
- ## 1.0.42
43
-
44
- ### Patch Changes
45
-
46
- - Update version
47
- - Updated dependencies
48
- - @treenity/call-chain@1.0.27
49
- - @treenity/js-shared@1.0.31
50
-
51
- ## 1.0.41
52
-
53
- ### Patch Changes
54
-
55
- - Update version
56
-
57
- ## 1.0.40
58
-
59
- ### Patch Changes
60
-
61
- - Updated dependencies
62
- - @treenity/js-shared@1.0.30
63
-
64
- ## 1.0.39
65
-
66
- ### Patch Changes
67
-
68
- - Update libs
69
- - Updated dependencies
70
- - @treenity/call-chain@1.0.26
71
- - @treenity/js-shared@1.0.29
72
-
73
- ## 1.0.38
74
-
75
- ### Patch Changes
76
-
77
- - Update version
78
-
79
- ## 1.0.37
80
-
81
- ### Patch Changes
82
-
83
- - Updated dependencies
84
- - @treenity/js-shared@1.0.28
85
-
86
- ## 1.0.36
87
-
88
- ### Patch Changes
89
-
90
- - Update versions
91
-
92
- ## 1.0.35
93
-
94
- ### Patch Changes
95
-
96
- - Update version
97
- - Updated dependencies
98
- - @treenity/call-chain@1.0.25
99
-
100
- ## 1.0.34
101
-
102
- ### Patch Changes
103
-
104
- - update create feathers client in repositroy
105
- - Updated dependencies
106
- - @treenity/js-shared@1.0.27
107
-
108
- ## 1.0.33
109
-
110
- ### Patch Changes
111
-
112
- - update version
113
- - Updated dependencies
114
- - @treenity/js-shared@1.0.26
115
-
116
- ## 1.0.32
117
-
118
- ### Patch Changes
119
-
120
- - Some change
121
- - Updated dependencies
122
- - @treenity/js-shared@1.0.25
123
-
124
- ## 1.0.31
125
-
126
- ### Patch Changes
127
-
128
- - Updated dependencies
129
- - @treenity/js-shared@1.0.24
130
-
131
- ## 1.0.30
132
-
133
- ### Patch Changes
134
-
135
- - Update libs
136
-
137
- ## 1.0.29
138
-
139
- ### Patch Changes
140
-
141
- - Update webeditor and add new register component
142
-
143
- ## 1.0.28
144
-
145
- ### Patch Changes
146
-
147
- - Fix styles in admin components
148
-
149
- ## 1.0.27
150
-
151
- ### Patch Changes
152
-
153
- - Giga update
154
-
155
- ## 1.0.26
156
-
157
- ### Patch Changes
158
-
159
- - Updated dependencies
160
- - @treenity/js-shared@1.0.23
161
-
162
- ## 1.0.25
163
-
164
- ### Patch Changes
165
-
166
- - Update libs
167
-
168
- ## 1.0.24
169
-
170
- ### Patch Changes
171
-
172
- - Fix create entity and add entity meta add, fixed patches feathers transport common
173
- - Updated dependencies
174
- - @treenity/js-shared@1.0.22
175
-
176
- ## 1.0.23
177
-
178
- ### Patch Changes
179
-
180
- - Add entity and other changes
181
- - Updated dependencies
182
- - @treenity/js-shared@1.0.21
183
-
184
- ## 1.0.22
185
-
186
- ### Patch Changes
187
-
188
- - Update deps
189
- - Updated dependencies
190
- - @treenity/js-shared@1.0.20
191
-
192
- ## 1.0.21
193
-
194
- ### Patch Changes
195
-
196
- - Update versions
197
-
198
- ## 1.0.20
199
-
200
- ### Patch Changes
201
-
202
- - Updated dependencies
203
- - @treenity/js-shared@1.0.19
204
-
205
- ## 1.0.19
206
-
207
- ### Patch Changes
208
-
209
- - Update something
210
- - Updated dependencies
211
- - @treenity/js-shared@1.0.18
212
-
213
- ## 1.0.18
214
-
215
- ### Patch Changes
216
-
217
- - Update version for stabilization build
218
- - Updated dependencies
219
- - @treenity/js-shared@1.0.17
220
-
221
- ## 1.0.17
222
-
223
- ### Patch Changes
224
-
225
- - Add types
226
- - Updated dependencies
227
- - @treenity/js-shared@1.0.16
228
-
229
- ## 1.0.16
230
-
231
- ### Patch Changes
232
-
233
- - Updated dependencies
234
- - @treenity/js-shared@1.0.15
235
-
236
- ## 1.0.15
237
-
238
- ### Patch Changes
239
-
240
- - Update versions
241
- - Updated dependencies
242
- - @treenity/js-shared@1.0.14
243
-
244
- ## 1.0.14
245
-
246
- ### Patch Changes
247
-
248
- - Some changes
249
- - Updated dependencies
250
- - @treenity/js-shared@1.0.13
251
-
252
- ## 1.0.13
253
-
254
- ### Patch Changes
255
-
256
- - Updated packages version
257
- - Updated dependencies
258
- - @treenity/js-shared@1.0.12
259
-
260
- ## 1.0.12
261
-
262
- ### Patch Changes
263
-
264
- - Updated libs
265
- - Updated dependencies
266
- - @treenity/js-shared@1.0.11
267
-
268
- ## 1.0.11
269
-
270
- ### Patch Changes
271
-
272
- - Changed version
273
- - Updated dependencies
274
- - @treenity/js-shared@1.0.10
275
-
276
- ## 1.0.10
277
-
278
- ### Patch Changes
279
-
280
- - Updated libs
281
- - Updated dependencies
282
- - @treenity/js-shared@1.0.9
283
-
284
- ## 1.0.9
285
-
286
- ### Patch Changes
287
-
288
- - Updated dependencies
289
- - @treenity/js-shared@1.0.8
290
-
291
- ## 1.0.8
292
-
293
- ### Patch Changes
294
-
295
- - Updated versions
296
- - Updated dependencies
297
- - @treenity/js-shared@1.0.5
298
-
299
- ## 1.0.7
300
-
301
- ### Patch Changes
302
-
303
- - Updated version to update new front-proxy
304
- - Updated dependencies
305
- - @treenity/js-shared@1.0.4
package/README.md DELETED
@@ -1,18 +0,0 @@
1
- # @treenity/core docs
2
- ### Installation
3
- Create token with "api" **scope** [here](https://gitlab.com/-/profile/personal_access_tokens).
4
- Add private registry info to .npmrc file in root of project
5
- ```
6
- @cluster:registry=https://gitlab.com/api/v4/projects/35830151/packages/npm/
7
- //gitlab.com/api/v4/projects/35830151/packages/npm/:_authToken=${TOKEN}
8
- ```
9
- Install:
10
- ```
11
- TOKEN=<access_token> npm i @cluster/protocol
12
- ```
13
-
14
- ### Publish new version
15
- To publish new version you need gilab api access key:
16
- ```bash
17
- MY_TOKEN=<access_token> npm publish
18
- ```
package/dist/context.d.ts DELETED
@@ -1,41 +0,0 @@
1
- /// <reference types="react" />
2
- import { ReactTypeContext } from './contexts/react-context';
3
- import { MetaName, MetaType } from './meta-type';
4
- export interface TypeContextInfo<C, O> {
5
- id: string;
6
- context: string;
7
- subContext: string;
8
- component: C;
9
- options: O;
10
- }
11
- export declare const registerComp: <T>(type: MetaName<T>, component: any) => (ctx: ReactTypeContext) => TypeContextInfo<import("react").FC<{
12
- value: any;
13
- node: import("./node").Node;
14
- onChange(setter: (m: any) => any): void;
15
- }>, import("./contexts/react-context").ReactContextOptions>;
16
- export interface Context<C, O> {
17
- name: string;
18
- items: Map<string, TypeContextInfo<C, O>>;
19
- add<T, C1 extends C>(typeName: MetaName<T>, component: C1, options?: O): TypeContextInfo<C, O>;
20
- add<T, C1 extends C>(subContext: string, typeName: MetaName<T>, component: C1, options?: O): TypeContextInfo<C, O>;
21
- get<T>(typeName: MetaName<T>): Promise<[C, O]>;
22
- get<T>(subContext: string, typeName: MetaName<T>): Promise<[C, O]>;
23
- getInfo<T>(typeName: MetaName<T>): Promise<TypeContextInfo<C, O>>;
24
- getInfo<T>(subContext: string, typeName: MetaName<T>): Promise<TypeContextInfo<C, O>>;
25
- getSync<T>(typeName: MetaName<T>): TypeContextInfo<C, O> | undefined;
26
- getSync<T>(subContext: string, typeName: MetaName<T>): TypeContextInfo<C, O> | undefined;
27
- search(query: string): Promise<TypeContextInfo<C, O>[]>;
28
- search(subContext: string, query: string): Promise<TypeContextInfo<C, O>[]>;
29
- }
30
- export declare class ContextImpl<C, O> implements Context<C, O> {
31
- name: string;
32
- items: Map<string, TypeContextInfo<C, O>>;
33
- constructor(name: string);
34
- add(...args: any[]): TypeContextInfo<C, O>;
35
- metaType<T>(subContext: string, typeName?: MetaName<T>): MetaType<any>;
36
- getInfo<T>(subContext: string, typeName?: MetaName<T>): Promise<TypeContextInfo<C, O>>;
37
- getSync<T>(subContext: string, typeName?: MetaName<T>): TypeContextInfo<C, O> | undefined;
38
- get<T>(subContext: string, typeName?: MetaName<T>): Promise<[C, O]>;
39
- search(subContext: string, query?: string): Promise<TypeContextInfo<C, O>[]>;
40
- }
41
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,CAAC;IACb,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,eAAO,MAAM,YAAY,YACb,SAAS,CAAC,CAAC,aAAa,GAAG,WAC/B,gBAAgB;;;;2DACuB,CAAC;AAEhD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1C,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,SAAS,EAAE,EAAE,EACb,OAAO,CAAC,EAAE,CAAC,GACV,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEtF,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IACrE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC7E;AAMD,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAGlC,IAAI,EAAE,MAAM;IAF/B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAa;gBAEnC,IAAI,EAAE,MAAM;IAM/B,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAuB1C,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;IAUtE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAYtF,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAOzF,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAO7D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAgBnF"}