@treenity/core 1.0.48 → 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 -314
  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,314 +0,0 @@
1
- # @treenity/core
2
-
3
- ## 1.0.48
4
-
5
- ### Patch Changes
6
-
7
- - Update version
8
- - Updated dependencies
9
- - @treenity/call-chain@1.0.32
10
- - @treenity/js-shared@1.0.35
11
-
12
- ## 1.0.47
13
-
14
- ### Patch Changes
15
-
16
- - update version
17
-
18
- ## 1.0.46
19
-
20
- ### Patch Changes
21
-
22
- - Updated dependencies
23
- - @treenity/call-chain@1.0.31
24
- - @treenity/js-shared@1.0.34
25
-
26
- ## 1.0.45
27
-
28
- ### Patch Changes
29
-
30
- - Updated dependencies
31
- - @treenity/call-chain@1.0.30
32
-
33
- ## 1.0.44
34
-
35
- ### Patch Changes
36
-
37
- - Update libs
38
- - Updated dependencies
39
- - @treenity/call-chain@1.0.29
40
- - @treenity/js-shared@1.0.33
41
-
42
- ## 1.0.43
43
-
44
- ### Patch Changes
45
-
46
- - Update version
47
- - Updated dependencies
48
- - @treenity/call-chain@1.0.28
49
- - @treenity/js-shared@1.0.32
50
-
51
- ## 1.0.42
52
-
53
- ### Patch Changes
54
-
55
- - Update version
56
- - Updated dependencies
57
- - @treenity/call-chain@1.0.27
58
- - @treenity/js-shared@1.0.31
59
-
60
- ## 1.0.41
61
-
62
- ### Patch Changes
63
-
64
- - Update version
65
-
66
- ## 1.0.40
67
-
68
- ### Patch Changes
69
-
70
- - Updated dependencies
71
- - @treenity/js-shared@1.0.30
72
-
73
- ## 1.0.39
74
-
75
- ### Patch Changes
76
-
77
- - Update libs
78
- - Updated dependencies
79
- - @treenity/call-chain@1.0.26
80
- - @treenity/js-shared@1.0.29
81
-
82
- ## 1.0.38
83
-
84
- ### Patch Changes
85
-
86
- - Update version
87
-
88
- ## 1.0.37
89
-
90
- ### Patch Changes
91
-
92
- - Updated dependencies
93
- - @treenity/js-shared@1.0.28
94
-
95
- ## 1.0.36
96
-
97
- ### Patch Changes
98
-
99
- - Update versions
100
-
101
- ## 1.0.35
102
-
103
- ### Patch Changes
104
-
105
- - Update version
106
- - Updated dependencies
107
- - @treenity/call-chain@1.0.25
108
-
109
- ## 1.0.34
110
-
111
- ### Patch Changes
112
-
113
- - update create feathers client in repositroy
114
- - Updated dependencies
115
- - @treenity/js-shared@1.0.27
116
-
117
- ## 1.0.33
118
-
119
- ### Patch Changes
120
-
121
- - update version
122
- - Updated dependencies
123
- - @treenity/js-shared@1.0.26
124
-
125
- ## 1.0.32
126
-
127
- ### Patch Changes
128
-
129
- - Some change
130
- - Updated dependencies
131
- - @treenity/js-shared@1.0.25
132
-
133
- ## 1.0.31
134
-
135
- ### Patch Changes
136
-
137
- - Updated dependencies
138
- - @treenity/js-shared@1.0.24
139
-
140
- ## 1.0.30
141
-
142
- ### Patch Changes
143
-
144
- - Update libs
145
-
146
- ## 1.0.29
147
-
148
- ### Patch Changes
149
-
150
- - Update webeditor and add new register component
151
-
152
- ## 1.0.28
153
-
154
- ### Patch Changes
155
-
156
- - Fix styles in admin components
157
-
158
- ## 1.0.27
159
-
160
- ### Patch Changes
161
-
162
- - Giga update
163
-
164
- ## 1.0.26
165
-
166
- ### Patch Changes
167
-
168
- - Updated dependencies
169
- - @treenity/js-shared@1.0.23
170
-
171
- ## 1.0.25
172
-
173
- ### Patch Changes
174
-
175
- - Update libs
176
-
177
- ## 1.0.24
178
-
179
- ### Patch Changes
180
-
181
- - Fix create entity and add entity meta add, fixed patches feathers transport common
182
- - Updated dependencies
183
- - @treenity/js-shared@1.0.22
184
-
185
- ## 1.0.23
186
-
187
- ### Patch Changes
188
-
189
- - Add entity and other changes
190
- - Updated dependencies
191
- - @treenity/js-shared@1.0.21
192
-
193
- ## 1.0.22
194
-
195
- ### Patch Changes
196
-
197
- - Update deps
198
- - Updated dependencies
199
- - @treenity/js-shared@1.0.20
200
-
201
- ## 1.0.21
202
-
203
- ### Patch Changes
204
-
205
- - Update versions
206
-
207
- ## 1.0.20
208
-
209
- ### Patch Changes
210
-
211
- - Updated dependencies
212
- - @treenity/js-shared@1.0.19
213
-
214
- ## 1.0.19
215
-
216
- ### Patch Changes
217
-
218
- - Update something
219
- - Updated dependencies
220
- - @treenity/js-shared@1.0.18
221
-
222
- ## 1.0.18
223
-
224
- ### Patch Changes
225
-
226
- - Update version for stabilization build
227
- - Updated dependencies
228
- - @treenity/js-shared@1.0.17
229
-
230
- ## 1.0.17
231
-
232
- ### Patch Changes
233
-
234
- - Add types
235
- - Updated dependencies
236
- - @treenity/js-shared@1.0.16
237
-
238
- ## 1.0.16
239
-
240
- ### Patch Changes
241
-
242
- - Updated dependencies
243
- - @treenity/js-shared@1.0.15
244
-
245
- ## 1.0.15
246
-
247
- ### Patch Changes
248
-
249
- - Update versions
250
- - Updated dependencies
251
- - @treenity/js-shared@1.0.14
252
-
253
- ## 1.0.14
254
-
255
- ### Patch Changes
256
-
257
- - Some changes
258
- - Updated dependencies
259
- - @treenity/js-shared@1.0.13
260
-
261
- ## 1.0.13
262
-
263
- ### Patch Changes
264
-
265
- - Updated packages version
266
- - Updated dependencies
267
- - @treenity/js-shared@1.0.12
268
-
269
- ## 1.0.12
270
-
271
- ### Patch Changes
272
-
273
- - Updated libs
274
- - Updated dependencies
275
- - @treenity/js-shared@1.0.11
276
-
277
- ## 1.0.11
278
-
279
- ### Patch Changes
280
-
281
- - Changed version
282
- - Updated dependencies
283
- - @treenity/js-shared@1.0.10
284
-
285
- ## 1.0.10
286
-
287
- ### Patch Changes
288
-
289
- - Updated libs
290
- - Updated dependencies
291
- - @treenity/js-shared@1.0.9
292
-
293
- ## 1.0.9
294
-
295
- ### Patch Changes
296
-
297
- - Updated dependencies
298
- - @treenity/js-shared@1.0.8
299
-
300
- ## 1.0.8
301
-
302
- ### Patch Changes
303
-
304
- - Updated versions
305
- - Updated dependencies
306
- - @treenity/js-shared@1.0.5
307
-
308
- ## 1.0.7
309
-
310
- ### Patch Changes
311
-
312
- - Updated version to update new front-proxy
313
- - Updated dependencies
314
- - @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":"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"}