@onetype/framework 2.0.42 → 2.0.43

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 (346) hide show
  1. package/addons/ai/addon.js +78 -0
  2. package/addons/ai/addons/agents/item/functions/describe.js +28 -0
  3. package/addons/ai/addons/agents/item/functions/execute.js +41 -0
  4. package/addons/ai/addons/agents/item/functions/messages.js +38 -0
  5. package/addons/ai/addons/agents/item/functions/run.js +49 -0
  6. package/addons/ai/addons/agents/item/functions/schema.js +45 -0
  7. package/addons/ai/addons/agents/load.js +9 -0
  8. package/addons/ai/addons/orchestrators/item/functions/agents/execute.js +14 -0
  9. package/addons/ai/addons/orchestrators/item/functions/agents/steps.js +23 -0
  10. package/addons/ai/addons/orchestrators/item/functions/modes/action.js +131 -0
  11. package/addons/ai/addons/orchestrators/item/functions/run.js +28 -0
  12. package/addons/ai/addons/orchestrators/item/functions/utils/emit.js +11 -0
  13. package/addons/ai/addons/orchestrators/item/functions/utils/history.js +8 -0
  14. package/addons/ai/addons/orchestrators/item/functions/utils/state.js +29 -0
  15. package/addons/ai/addons/orchestrators/load.js +15 -0
  16. package/addons/ai/addons/pipelines/functions/execute.js +56 -0
  17. package/addons/ai/addons/pipelines/functions/run.js +72 -0
  18. package/addons/ai/addons/pipelines/load.js +6 -0
  19. package/addons/ai/addons/providers/functions/default.js +8 -0
  20. package/addons/ai/addons/providers/item/functions/request.js +108 -0
  21. package/addons/ai/addons/providers/items/nue.js +69 -0
  22. package/addons/ai/addons/providers/items/ollama.js +79 -0
  23. package/addons/ai/addons/providers/load.js +8 -0
  24. package/addons/ai/items/agents/steps.js +159 -0
  25. package/addons/ai/items/agents/summary.js +29 -0
  26. package/addons/ai/items/orchestrators/general.js +7 -0
  27. package/addons/ai/load.js +13 -0
  28. package/addons/ai/test/agents.js +149 -0
  29. package/addons/ai/test/index.js +63 -0
  30. package/addons/core/assets/back/functions/utils/transform.js +21 -23
  31. package/addons/core/assets/back/items/html/css.js +2 -2
  32. package/addons/core/assets/back/items/html/js.js +2 -2
  33. package/addons/core/clients/back/http/item/functions/gRPC/create.js +3 -3
  34. package/addons/core/clients/back/http/item/functions/http/create.js +3 -3
  35. package/addons/core/commands/back/functions/grpc/client.js +3 -3
  36. package/addons/core/commands/back/functions/grpc/server.js +2 -2
  37. package/addons/core/commands/core/addon.js +4 -1
  38. package/addons/core/commands/core/functions/run.js +1 -1
  39. package/addons/core/commands/core/item/functions/run.js +1 -1
  40. package/addons/core/commands/core/load.js +27 -9
  41. package/addons/core/database/back/events/addon.add.js +1 -1
  42. package/addons/core/database/back/events/middleware/addon.items.find.js +2 -2
  43. package/addons/core/database/back/events/middleware/item.crud.create.js +2 -2
  44. package/addons/core/database/back/events/middleware/item.crud.delete.js +2 -2
  45. package/addons/core/database/back/events/middleware/item.crud.update.js +2 -2
  46. package/addons/core/database/back/item/functions/create.js +4 -3
  47. package/addons/core/database/back/item/functions/delete.js +1 -1
  48. package/addons/core/database/back/item/functions/find.js +1 -1
  49. package/addons/core/database/back/item/functions/update.js +3 -3
  50. package/addons/core/database/front/events/addon.add.js +1 -1
  51. package/addons/core/servers/back/grpc/item/functions/start.js +1 -1
  52. package/addons/core/servers/back/http/item/functions/start.js +6 -6
  53. package/addons/float/overlays/css/overlay.css +35 -0
  54. package/addons/float/overlays/js/addon.js +18 -0
  55. package/addons/float/overlays/js/events/click.js +27 -0
  56. package/addons/float/overlays/js/events/escape.js +18 -0
  57. package/addons/float/overlays/js/functions/flip.js +51 -0
  58. package/addons/float/overlays/js/functions/index.js +17 -0
  59. package/addons/float/overlays/js/functions/position.js +62 -0
  60. package/addons/float/overlays/js/functions/reposition.js +29 -0
  61. package/addons/float/overlays/js/item/catch/add.js +123 -0
  62. package/addons/float/overlays/js/item/catch/remove.js +29 -0
  63. package/addons/float/popup/css/popup.css +93 -0
  64. package/addons/float/popup/js/addon.js +34 -0
  65. package/addons/float/popup/js/functions/close.js +25 -0
  66. package/addons/float/popup/js/functions/modal.js +31 -0
  67. package/addons/float/popup/js/functions/popup.js +21 -0
  68. package/addons/float/popup/js/functions/toast.js +55 -0
  69. package/addons/float/popup/js/functions/tooltip.js +34 -0
  70. package/addons/float/popup/js/items/directives/popup.js +58 -0
  71. package/addons/float/popup/js/items/directives/tooltip.js +72 -0
  72. package/addons/render/directives/front/{js/#register/addon.js → addon.js} +8 -8
  73. package/addons/render/directives/front/{js/functions → functions}/process/attributes.js +7 -2
  74. package/addons/render/directives/front/{js/functions → functions}/process/match.js +8 -8
  75. package/addons/render/directives/front/functions/process.js +88 -0
  76. package/{lib/items/directives → addons/render/directives/front/items/self}/1000-render.js +1 -0
  77. package/{lib/items/directives → addons/render/directives/front/items/self}/110-show.js +3 -5
  78. package/{lib/items/directives → addons/render/directives/front/items/self}/160-slot.js +1 -0
  79. package/{lib/items/directives → addons/render/directives/front/items/self}/200-for.js +3 -3
  80. package/addons/render/directives/front/items/self/500-click-outside.js +45 -0
  81. package/addons/render/directives/front/items/self/500-events.js +68 -0
  82. package/addons/render/directives/front/items/self/500-mouse-enter.js +62 -0
  83. package/addons/render/directives/front/items/self/500-mouse-leave.js +62 -0
  84. package/{lib/items/directives → addons/render/directives/front/items/self}/650-fetch.js +2 -3
  85. package/{lib/items/directives → addons/render/directives/front/items/self}/660-form.js +5 -6
  86. package/addons/render/{elements/front/items/directives → directives/front/items/self}/element.js +7 -1
  87. package/addons/render/directives/front/items/self/node.js +43 -0
  88. package/{lib/items/elements → addons/render/elements/front/items/self}/cards/pricing/pricing.js +2 -2
  89. package/addons/render/elements/front/items/self/core/builder/builder.css +180 -0
  90. package/addons/render/elements/front/items/self/core/builder/builder.js +257 -0
  91. package/addons/render/elements/front/items/self/core/repeater/repeater.css +197 -0
  92. package/addons/render/elements/front/items/self/core/repeater/repeater.js +224 -0
  93. package/{lib/items/elements → addons/render/elements/front/items/self}/form/button/button.js +2 -2
  94. package/{lib/items/elements → addons/render/elements/front/items/self}/form/checkbox/checkbox.js +21 -8
  95. package/{lib/items/elements → addons/render/elements/front/items/self}/form/color/color.css +28 -0
  96. package/{lib/items/elements → addons/render/elements/front/items/self}/form/color/color.js +35 -13
  97. package/{lib/items/elements → addons/render/elements/front/items/self}/form/date/date.js +3 -4
  98. package/{lib/items/elements → addons/render/elements/front/items/self}/form/input/input.js +40 -4
  99. package/{lib/items/elements → addons/render/elements/front/items/self}/form/radio/radio.js +24 -6
  100. package/{lib/items/elements → addons/render/elements/front/items/self}/form/rating/rating.js +2 -1
  101. package/{lib/items/elements → addons/render/elements/front/items/self}/form/select/select.js +3 -7
  102. package/{lib/items/elements → addons/render/elements/front/items/self}/form/slider/slider.js +89 -74
  103. package/{lib/items/elements → addons/render/elements/front/items/self}/form/tags/tags.js +5 -5
  104. package/{lib/items/elements → addons/render/elements/front/items/self}/form/textarea/textarea.js +41 -6
  105. package/{lib/items/elements → addons/render/elements/front/items/self}/form/toggle/toggle.css +4 -0
  106. package/{lib/items/elements → addons/render/elements/front/items/self}/form/toggle/toggle.js +7 -8
  107. package/{lib/items/elements → addons/render/elements/front/items/self}/global/code/code.js +3 -4
  108. package/{lib/items/elements → addons/render/elements/front/items/self}/global/faq/faq.js +2 -2
  109. package/{lib/items/elements → addons/render/elements/front/items/self}/global/heading/heading.js +6 -17
  110. package/addons/render/elements/front/items/self/global/markdown/markdown.js +26 -0
  111. package/{lib/items/elements → addons/render/elements/front/items/self}/global/menu/menu.js +1 -1
  112. package/{lib/items/elements → addons/render/elements/front/items/self}/global/tags/tags.js +1 -1
  113. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/navbar/navbar.js +5 -1
  114. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/sidebar/sidebar.js +1 -1
  115. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/tabs/tabs.js +1 -1
  116. package/{lib/items/elements → addons/render/elements/front/items/self}/status/code/code.css +1 -1
  117. package/{lib/items/elements → addons/render/elements/front/items/self}/status/empty/empty.css +1 -1
  118. package/{lib/items/elements → addons/render/elements/front/items/self}/status/empty/empty.js +4 -0
  119. package/{lib/items/elements → addons/render/elements/front/items/self}/status/error/error.css +1 -1
  120. package/{lib/items/elements → addons/render/elements/front/items/self}/status/error/error.js +1 -1
  121. package/{lib/items/elements → addons/render/elements/front/items/self}/status/loading/loading.css +8 -1
  122. package/addons/render/pages/core/load.js +1 -1
  123. package/addons/render/pages/front/events/click.js +1 -1
  124. package/addons/render/pages/front/events/load.js +6 -16
  125. package/addons/render/pages/front/functions/change.js +21 -110
  126. package/addons/render/pages/front/functions/match.js +2 -3
  127. package/addons/render/pages/front/functions/open.js +3 -35
  128. package/addons/render/pages/front/functions/resolve.js +30 -0
  129. package/addons/render/pages/front/item/catch/add.js +12 -10
  130. package/addons/render/pages/front/item/catch/remove.js +5 -7
  131. package/addons/render/pages/front/item/functions/enter.js +15 -28
  132. package/addons/render/pages/front/item/functions/leave.js +6 -8
  133. package/addons/render/pages/front/items/commands/change.js +60 -0
  134. package/addons/render/pages/front/items/commands/list.js +38 -0
  135. package/addons/render/pages/front/items/directives/change.js +1 -1
  136. package/addons/render/transforms/css/transforms.css +4 -0
  137. package/addons/render/transforms/{addon.js → js/addon.js} +7 -0
  138. package/addons/render/transforms/js/item/functions/run.js +87 -0
  139. package/addons/services/cloudflare/images/back/addon.js +23 -0
  140. package/addons/services/cloudflare/images/back/expose.js +22 -0
  141. package/addons/services/cloudflare/images/back/functions/api.js +47 -0
  142. package/addons/services/cloudflare/images/back/functions/meta/detect.js +28 -0
  143. package/addons/services/cloudflare/images/back/functions/meta/dimensions/gif.js +11 -0
  144. package/addons/services/cloudflare/images/back/functions/meta/dimensions/jpeg.js +31 -0
  145. package/addons/services/cloudflare/images/back/functions/meta/dimensions/png.js +11 -0
  146. package/addons/services/cloudflare/images/back/functions/meta/dimensions/webp.js +36 -0
  147. package/addons/services/cloudflare/images/back/functions/meta.js +16 -0
  148. package/addons/services/cloudflare/images/back/items/commands/delete.js +38 -0
  149. package/addons/services/cloudflare/images/back/items/commands/get.js +56 -0
  150. package/addons/services/cloudflare/images/back/items/commands/list.js +49 -0
  151. package/addons/services/cloudflare/images/back/items/commands/upload.js +79 -0
  152. package/addons/services/cloudflare/images/back/load.js +21 -0
  153. package/addons/services/cloudflare/images/front/items/elements/browse/browse.css +235 -0
  154. package/addons/services/cloudflare/images/front/items/elements/browse/browse.js +193 -0
  155. package/addons/services/cloudflare/images/front/items/elements/input/input.css +154 -0
  156. package/addons/services/cloudflare/images/front/items/elements/input/input.js +147 -0
  157. package/addons/services/cloudflare/images/sql.txt +43 -0
  158. package/lib/events.js +12 -12
  159. package/lib/load.js +11 -49
  160. package/lib/src/classes/addon/class.js +1 -2
  161. package/lib/src/classes/addon/classes/item/mixins/get.js +3 -3
  162. package/lib/src/classes/addon/classes/item/mixins/set.js +3 -5
  163. package/lib/src/classes/addon/classes/item/mixins/store.js +1 -1
  164. package/lib/src/classes/addon/classes/render/class.js +8 -22
  165. package/lib/src/classes/addon/classes/render/mixins/compile.js +6 -4
  166. package/lib/src/classes/addon/classes/render/mixins/dom.js +3 -1
  167. package/lib/src/classes/addon/classes/render/mixins/events.js +30 -43
  168. package/lib/src/classes/addon/classes/render/mixins/get.js +0 -5
  169. package/lib/src/classes/addon/classes/render/mixins/methods.js +105 -40
  170. package/lib/src/classes/addon/classes/render/mixins/process.js +7 -3
  171. package/lib/src/classes/addon/classes/render/mixins/set.js +3 -1
  172. package/lib/src/classes/addon/mixins/fields.js +4 -6
  173. package/lib/src/classes/addon/mixins/functions.js +11 -11
  174. package/lib/src/classes/addon/mixins/items.js +17 -9
  175. package/lib/src/classes/addon/mixins/render.js +1 -1
  176. package/lib/src/classes/addon/mixins/table.js +1 -1
  177. package/lib/src/classes/error/class.js +10 -0
  178. package/lib/src/mixins/addons.js +7 -20
  179. package/lib/src/mixins/assets.js +1 -1
  180. package/lib/src/mixins/data.js +14 -14
  181. package/lib/src/mixins/dependencies.js +5 -5
  182. package/lib/src/mixins/dom.js +204 -201
  183. package/lib/src/mixins/emitter.js +13 -14
  184. package/lib/src/mixins/error.js +14 -1
  185. package/lib/src/mixins/function.js +1 -0
  186. package/lib/src/mixins/generate.js +1 -1
  187. package/lib/src/mixins/helper.js +3 -31
  188. package/lib/{items/elements/global/markdown → src/mixins}/markdown.js +90 -139
  189. package/lib/src/mixins/middleware.js +2 -2
  190. package/lib/src/mixins/observer.js +337 -0
  191. package/lib/src/mixins/request.js +2 -2
  192. package/lib/src/mixins/route.js +11 -2
  193. package/lib/src/mixins/state.js +17 -3
  194. package/lib/src/onetype.js +11 -18
  195. package/lib/styles/classes/layout.css +1 -3
  196. package/lib/styles/variables.css +2 -1
  197. package/package.json +5 -7
  198. package/README.md +0 -86
  199. package/addons/ai/agents/addon.js +0 -23
  200. package/addons/ai/agents/functions/parse.js +0 -129
  201. package/addons/ai/agents/item/functions/run.js +0 -218
  202. package/addons/ai/agents/load.js +0 -8
  203. package/addons/ai/orchestrator/addon.js +0 -25
  204. package/addons/ai/orchestrator/item/functions/run.js +0 -277
  205. package/addons/ai/orchestrator/item/functions/state/agent.js +0 -41
  206. package/addons/ai/orchestrator/item/functions/state/conclusion.js +0 -27
  207. package/addons/ai/orchestrator/item/functions/state/done.js +0 -40
  208. package/addons/ai/orchestrator/item/functions/state/execute.js +0 -16
  209. package/addons/ai/orchestrator/item/functions/state/goal.js +0 -34
  210. package/addons/ai/orchestrator/item/functions/state/input.js +0 -55
  211. package/addons/ai/orchestrator/item/functions/state/summary.js +0 -26
  212. package/addons/ai/orchestrator/items/agents/achievable.js +0 -37
  213. package/addons/ai/orchestrator/items/agents/agent.js +0 -46
  214. package/addons/ai/orchestrator/items/agents/conclusion.js +0 -41
  215. package/addons/ai/orchestrator/items/agents/done.js +0 -40
  216. package/addons/ai/orchestrator/items/agents/goal.js +0 -58
  217. package/addons/ai/orchestrator/items/agents/input.js +0 -34
  218. package/addons/ai/orchestrator/items/agents/planner.js +0 -30
  219. package/addons/ai/orchestrator/items/agents/summary.js +0 -29
  220. package/addons/ai/orchestrator/items/chat.js +0 -10
  221. package/addons/ai/orchestrator/load.js +0 -25
  222. package/addons/ai/providers/addon.js +0 -16
  223. package/addons/ai/providers/functions/default.js +0 -14
  224. package/addons/ai/providers/item/functions/request.js +0 -62
  225. package/addons/ai/providers/items/nue.js +0 -98
  226. package/addons/ai/providers/load.js +0 -10
  227. package/addons/core/queue/index.js +0 -66
  228. package/addons/float/modals/front/css/modals.css +0 -26
  229. package/addons/float/modals/front/js/addon.js +0 -10
  230. package/addons/float/modals/front/js/item/catch/add.js +0 -48
  231. package/addons/float/modals/front/js/item/catch/remove.js +0 -9
  232. package/addons/float/overlays/front/css/overlays.css +0 -29
  233. package/addons/float/overlays/front/js/addon.js +0 -17
  234. package/addons/float/overlays/front/js/events/click.js +0 -27
  235. package/addons/float/overlays/front/js/events/escape.js +0 -18
  236. package/addons/float/overlays/front/js/functions/flip.js +0 -74
  237. package/addons/float/overlays/front/js/functions/index.js +0 -17
  238. package/addons/float/overlays/front/js/functions/position.js +0 -63
  239. package/addons/float/overlays/front/js/item/catch/add.js +0 -121
  240. package/addons/float/overlays/front/js/item/catch/remove.js +0 -16
  241. package/addons/float/popups/css/popups.css +0 -4
  242. package/addons/float/popups/js/addon.js +0 -18
  243. package/addons/float/popups/js/item/catch/add.js +0 -7
  244. package/addons/float/popups/js/item/catch/remove.js +0 -7
  245. package/addons/float/popups/js/item/catch/set.js +0 -73
  246. package/addons/float/popups/js/items/directives/popup.js +0 -54
  247. package/addons/float/toasts/addon.js +0 -17
  248. package/addons/float/toasts/item/catch/add.js +0 -7
  249. package/addons/float/toasts/item/catch/remove.js +0 -7
  250. package/addons/float/toasts/item/catch/set.js +0 -86
  251. package/addons/float/toasts/items/elements/toast/toast.css +0 -84
  252. package/addons/float/toasts/items/elements/toast/toast.js +0 -61
  253. package/addons/float/tooltips/addon.js +0 -15
  254. package/addons/float/tooltips/item/catch/add.js +0 -7
  255. package/addons/float/tooltips/item/catch/remove.js +0 -26
  256. package/addons/float/tooltips/item/catch/set.js +0 -65
  257. package/addons/float/tooltips/items/directives/tooltip.js +0 -74
  258. package/addons/float/tooltips/items/elements/tooltip.css +0 -64
  259. package/addons/float/tooltips/items/elements/tooltip.js +0 -42
  260. package/addons/render/directives/front/js/functions/process.js +0 -57
  261. package/addons/render/transforms/item/functions/run.js +0 -18
  262. package/docs/addons.md +0 -281
  263. package/docs/architecture.md +0 -238
  264. package/docs/commands.md +0 -308
  265. package/docs/database.md +0 -171
  266. package/docs/frontend.md +0 -396
  267. package/docs/servers.md +0 -187
  268. package/examples/basic-api/README.md +0 -34
  269. package/examples/basic-api/addons/tasks/addon.js +0 -10
  270. package/examples/basic-api/addons/tasks/items/commands/create.js +0 -22
  271. package/examples/basic-api/addons/tasks/items/commands/delete.js +0 -26
  272. package/examples/basic-api/addons/tasks/items/commands/list.js +0 -17
  273. package/examples/basic-api/addons/tasks/items/commands/toggle.js +0 -26
  274. package/examples/basic-api/addons/tasks/load.js +0 -8
  275. package/examples/basic-api/index.js +0 -15
  276. package/examples/basic-api/package.json +0 -7
  277. package/examples/basic-front/back/assets.js +0 -12
  278. package/examples/basic-front/back/index.js +0 -13
  279. package/examples/basic-front/back/items/commands/html.js +0 -14
  280. package/examples/basic-front/back/items/commands/test.js +0 -19
  281. package/examples/basic-front/back/items/html/fonts.js +0 -12
  282. package/examples/basic-front/front/pages/home.js +0 -16
  283. package/examples/basic-front/front/styles/main.css +0 -31
  284. package/examples/basic-front/front/test.js +0 -7
  285. package/examples/basic-front/package.json +0 -7
  286. package/lib/items/directives/500-blur.js +0 -46
  287. package/lib/items/directives/500-change.js +0 -53
  288. package/lib/items/directives/500-click-outside.js +0 -50
  289. package/lib/items/directives/500-click.js +0 -52
  290. package/lib/items/directives/500-double-click.js +0 -52
  291. package/lib/items/directives/500-focus.js +0 -46
  292. package/lib/items/directives/500-input.js +0 -46
  293. package/lib/items/directives/500-keydown.js +0 -53
  294. package/lib/items/directives/500-keyup.js +0 -53
  295. package/lib/items/directives/500-mouse-enter.js +0 -61
  296. package/lib/items/directives/500-mouse-leave.js +0 -61
  297. package/lib/items/directives/500-mouse-move.js +0 -45
  298. package/lib/items/directives/500-scroll.js +0 -45
  299. package/lib/items/directives/500-submit.js +0 -52
  300. package/lib/items/elements/ai/chat/chat.css +0 -710
  301. package/lib/items/elements/ai/chat/chat.js +0 -429
  302. package/lib/src/mixins/logger.js +0 -83
  303. package/lib/styles/queries.css +0 -6
  304. package/lists.md +0 -586
  305. package/orchestrator.md +0 -288
  306. /package/addons/modules/shortcuts/front/{#register/addon.js → addon.js} +0 -0
  307. /package/addons/render/directives/front/{js/functions → functions}/process/data.js +0 -0
  308. /package/{lib/items/directives → addons/render/directives/front/items/self}/100-if.js +0 -0
  309. /package/{lib/items/directives → addons/render/directives/front/items/self}/700-text.js +0 -0
  310. /package/{lib/items/directives → addons/render/directives/front/items/self}/750-html.js +0 -0
  311. /package/addons/render/elements/front/{#register/addon.js → addon.js} +0 -0
  312. /package/{lib/items/elements → addons/render/elements/front/items/self}/cards/pricing/pricing.css +0 -0
  313. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/button/button.css +0 -0
  314. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/checkbox/checkbox.css +0 -0
  315. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/date/date.css +0 -0
  316. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/field/field.css +0 -0
  317. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/field/field.js +0 -0
  318. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/input/input.css +0 -0
  319. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/radio/radio.css +0 -0
  320. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/rating/rating.css +0 -0
  321. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/section/section.css +0 -0
  322. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/section/section.js +0 -0
  323. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/select/select.css +0 -0
  324. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/slider/slider.css +0 -0
  325. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/tags/tags.css +0 -0
  326. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/textarea/textarea.css +0 -0
  327. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/code/code.css +0 -0
  328. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/faq/faq.css +0 -0
  329. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/heading/heading.css +0 -0
  330. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/markdown/markdown.css +0 -0
  331. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/menu/menu.css +0 -0
  332. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/notice/notice.css +0 -0
  333. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/notice/notice.js +0 -0
  334. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/parameters/parameters.css +0 -0
  335. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/parameters/parameters.js +0 -0
  336. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/tags/tags.css +0 -0
  337. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/navbar/navbar.css +0 -0
  338. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/sidebar/sidebar.css +0 -0
  339. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/tabs/tabs.css +0 -0
  340. /package/{lib/items/elements → addons/render/elements/front/items/self}/status/code/code.js +0 -0
  341. /package/{lib/items/elements → addons/render/elements/front/items/self}/status/loading/loading.js +0 -0
  342. /package/addons/render/transforms/{functions → js/functions}/data.js +0 -0
  343. /package/addons/render/transforms/{functions → js/functions}/run.js +0 -0
  344. /package/addons/render/transforms/{functions → js/functions}/runtime.js +0 -0
  345. /package/addons/render/transforms/{item → js/item}/functions/load.js +0 -0
  346. /package/addons/render/transforms/{items/directives → js/items/self}/transform.js +0 -0
package/docs/addons.md DELETED
@@ -1,281 +0,0 @@
1
- # Addons
2
-
3
- Everything in the framework is an addon. An addon is a typed, persistent entity with fields, items, functions, lifecycle events, and in-memory storage.
4
-
5
- ## Defining an addon
6
-
7
- An addon is defined in an `addon.js` file:
8
-
9
- ```js
10
- import onetype from '#framework/load.js';
11
-
12
- const users = onetype.Addon('users', (addon) => {
13
- addon.Table('users');
14
-
15
- addon.Field('id', ['string']);
16
- addon.Field('name', ['string']);
17
- addon.Field('email', ['string']);
18
- addon.Field('password', ['string']);
19
- addon.Field('is_verified', ['boolean']);
20
- addon.Field('created_at', ['string']);
21
- });
22
-
23
- export default users;
24
- ```
25
-
26
- ## Table
27
-
28
- `addon.Table(tableName, columnPrefix)` maps the addon to a PostgreSQL table.
29
-
30
- ```js
31
- addon.Table('offers', 'offer_');
32
- ```
33
-
34
- With prefix `offer_`, field `name` maps to column `offer_name` in the database. Without a prefix, field names match column names directly.
35
-
36
- ## Fields
37
-
38
- `addon.Field(name, [type, default, required])`
39
-
40
- ```js
41
- addon.Field('id', ['number|string']); // union type
42
- addon.Field('name', ['string', null, true]); // required
43
- addon.Field('status', ['string', 'Draft']); // with default
44
- addon.Field('tags', ['array']);
45
- addon.Field('metadata', ['object']);
46
- addon.Field('active', ['boolean', false]);
47
- ```
48
-
49
- **Types:** `string`, `number`, `boolean`, `array`, `object`, `function`, `binary`.
50
-
51
- **Union types:** `'number|string'` accepts either type.
52
-
53
- Every `Get()` and `Set()` runs through field transform pipelines (`get[]`, `set[]`) then validates against the schema.
54
-
55
- ## Items
56
-
57
- Items are instances of an addon. Full CRUD through middleware chains.
58
-
59
- ```js
60
- // Create an item (in-memory)
61
- const user = users.Item({
62
- name: 'Dejan',
63
- email: 'hi@iamdejan.com'
64
- });
65
-
66
- // Persist to database
67
- await user.Create();
68
-
69
- // Read fields
70
- user.Get('name'); // single field
71
- user.Get(['id', 'name', 'email', 'created_at']); // multiple → plain object
72
-
73
- // Update
74
- user.Set('name', 'Dejan Tomic');
75
- await user.Update();
76
-
77
- // Delete
78
- await user.Delete();
79
-
80
- // Remove from memory (without database delete)
81
- user.Remove();
82
- ```
83
-
84
- ### Bulk operations
85
-
86
- ```js
87
- // Add multiple items at once
88
- addon.ItemsAdd(items, null, false);
89
-
90
- // Remove all items from memory
91
- addon.ItemsRemove(false);
92
-
93
- // Get all items
94
- const all = Object.values(addon.Items());
95
- ```
96
-
97
- ### Get by ID
98
-
99
- ```js
100
- const user = users.Item(42); // get by ID
101
- const user = users.ItemGet(42); // same thing
102
- ```
103
-
104
- ## Functions
105
-
106
- Functions are reusable business logic attached to an addon.
107
-
108
- ```js
109
- // Define
110
- users.Fn('password.hash', async function(password) {
111
- return await bcrypt.hash(password, 10);
112
- });
113
-
114
- users.Fn('password.verify', async function(password, hash) {
115
- return await bcrypt.compare(password, hash);
116
- });
117
-
118
- // Call
119
- const hash = await users.Fn('password.hash', 'secret123');
120
- const valid = await users.Fn('password.verify', 'secret123', hash);
121
- ```
122
-
123
- Functions can have any number of arguments. Inside the function, `this` gives access to the addon's methods.
124
-
125
- ## Lifecycle events
126
-
127
- React to item operations:
128
-
129
- ```js
130
- // When an item is added
131
- users.ItemOn('add', function(item) {
132
- console.log('User added:', item.Get('name'));
133
- });
134
-
135
- // When a field is set
136
- users.ItemOn('set', async function(item, key, value) {
137
- if (key === 'password' && value) {
138
- // false = skip callbacks, prevents infinite loop
139
- item.Set('password', await users.Fn('password.hash', value), false);
140
- }
141
- });
142
-
143
- // When an item is modified (before data changes)
144
- users.ItemOn('modify', function(item, key, value, prevValue) {
145
- console.log(`${key}: ${prevValue} → ${value}`);
146
- });
147
-
148
- // When an item is removed
149
- users.ItemOn('remove', function(item) {
150
- console.log('User removed:', item.Get('id'));
151
- });
152
- ```
153
-
154
- **Available events:** `add`, `added`, `set`, `modify`, `modified`, `remove`, `removed`.
155
-
156
- The `callback` parameter on `Set(key, value, callback)` controls whether lifecycle events fire. Pass `false` to skip them — essential when setting values inside a `set` listener to avoid loops.
157
-
158
- ## AddonReady
159
-
160
- Wait for an addon to be loaded before using it:
161
-
162
- ```js
163
- onetype.AddonReady('commands', (commands) => {
164
- commands.Item({
165
- id: 'users:create',
166
- method: 'POST',
167
- endpoint: '/api/users',
168
- // ...
169
- });
170
- });
171
- ```
172
-
173
- Import order doesn't matter. `AddonReady` handles async dependency resolution.
174
-
175
- ## Preloading data
176
-
177
- Load database data into memory on startup:
178
-
179
- ```js
180
- onetype.AddonReady('organizations', async function(organizations) {
181
- await organizations.Find()?.limit(50000).many(true);
182
- console.log(`Loaded ${Object.keys(organizations.Items()).length} items`);
183
-
184
- // Optional: periodic refresh
185
- setInterval(async () => {
186
- const items = await organizations.Find()?.limit(50000).many();
187
- organizations.ItemsRemove(false);
188
- items.forEach(item => organizations.Item(item.data));
189
- }, 600000);
190
- });
191
- ```
192
-
193
- `.many(true)` loads query results into in-memory addon storage.
194
-
195
- ## Store
196
-
197
- Per-item and per-addon in-memory key-value storage:
198
-
199
- ```js
200
- // Set
201
- connection.StoreSet('node', nodeItem);
202
- connection.StoreSet('stream', streamObject);
203
-
204
- // Get
205
- const node = connection.StoreGet('node');
206
- const stream = connection.StoreGet('stream');
207
- ```
208
-
209
- Useful for attaching runtime state to items without persisting it.
210
-
211
- ## DataSchema
212
-
213
- Register a named schema for use in command `in`/`out` validation:
214
-
215
- ```js
216
- onetype.DataSchema('user', {
217
- id: ['string'],
218
- name: ['string', null, true],
219
- email: ['string', null, true],
220
- is_verified: ['boolean'],
221
- created_at: ['string']
222
- });
223
- ```
224
-
225
- Reference it in commands with `config: 'user'`.
226
-
227
- ## Addon file structure
228
-
229
- Each addon follows this convention:
230
-
231
- ```
232
- addons/users/
233
- addon.js Define addon, table, fields
234
- load.js Import addon + commands + functions + events
235
- functions/
236
- password/
237
- hash.js
238
- verify.js
239
- items/
240
- commands/
241
- create.js
242
- get.many.js
243
- get.one.js
244
- update.js
245
- delete.js
246
- item/
247
- catch/
248
- set.js Lifecycle hooks
249
- events/
250
- ready.back.js Startup logic (preload data, etc.)
251
- ```
252
-
253
- The `load.js` file imports everything and is the single entry point:
254
-
255
- ```js
256
- import onetype from '#framework/load.js';
257
- import users from './addon.js';
258
-
259
- import './items/commands/create.js';
260
- import './items/commands/get.many.js';
261
- import './items/commands/get.one.js';
262
- import './items/commands/update.js';
263
- import './items/commands/delete.js';
264
-
265
- import './functions/password/hash.js';
266
- import './functions/password/verify.js';
267
-
268
- import './item/catch/set.js';
269
-
270
- import './events/ready.back.js';
271
-
272
- onetype.DataSchema('user', {
273
- id: ['string'],
274
- name: ['string', null, true],
275
- email: ['string', null, true],
276
- is_verified: ['boolean'],
277
- created_at: ['string']
278
- });
279
-
280
- export default users;
281
- ```
@@ -1,238 +0,0 @@
1
- # Architecture
2
-
3
- ## File structure
4
-
5
- ```
6
- lib/ Core OneType class + mixins
7
- load.js Entry point — creates OneType instance, registers all assets, handles signals
8
- src/
9
- onetype.js Main class (mixin-composed)
10
- mixins/ Addons, Emitter, Middleware, Data, DOM, Route,
11
- Function, Generate, Binaries, Helper, Cookie, Assets, and more
12
- classes/
13
- addon/ OneTypeAddon + mixins (fields, items, functions, find, render, store)
14
- classes/
15
- item/ OneTypeAddonItem + mixins (get, set, crud, functions, store)
16
- render/ OneTypeAddonRender + mixins (compile, dom, process, events)
17
- styles/ Shared CSS (variables, reset, queries, utility classes)
18
- items/
19
- elements/ Shared UI elements (grouped, IDs are group-prefixed)
20
- form/ button, checkbox, field, input, radio, rating, section, slider, textarea
21
- global/ card, code, faq, heading, markdown, notice, parameters, tabs, tags
22
- sections/ footer, hero, navbar, stats
23
- status/ code, empty, error, loading
24
- transforms/ Shared transforms
25
- accordion, chart, codeflask, codemirror, comparison,
26
- heatmap, interact, particles, sparkline, swiper, tabs, typed
27
-
28
- addons/ Built-in addon library
29
- core/
30
- database/ PostgreSQL ORM (Knex, fluent query builder, 17+ operators)
31
- servers/ HTTP + gRPC servers
32
- clients/ HTTP + gRPC clients
33
- commands/ Typed API command system
34
- queue/ Concurrency task queue
35
- assets/ Convention-based asset bundler (terser)
36
- render/
37
- directives/ ot-if, ot-for, ot-click, ot-fetch, ot-show, ot-html, ot-text
38
- pages/ SPA page router with CSS Grid layouts + async data loading
39
- elements/ UI component addon (registration, directives)
40
- html/ HTML document builder
41
- tags/ HTML tag system
42
- transforms/ Transform addon (registration, loading, directives)
43
- modules/
44
- variables/ Named variable registry
45
- actions/ Action triggers
46
- events/ Event bindings
47
- schedules/ Cron-like scheduling
48
- shortcuts/ Keyboard shortcut bindings
49
- sources/ Data source registry
50
- float/
51
- modals/ Modal dialogs
52
- toasts/ Toast notifications
53
- tooltips/ Tooltip system
54
- popups/ Popup menus
55
- overlays/ Overlay backdrops
56
- ```
57
-
58
- ## Application structure
59
-
60
- A typical application built on the framework:
61
-
62
- ```
63
- my-app/
64
- package.json Import aliases (#framework/*, #database/*, etc.)
65
- index.js Entry point — imports framework, addons, database, servers
66
- addons/
67
- users/ Application addon
68
- addon.js
69
- load.js
70
- functions/
71
- items/commands/
72
- item/catch/
73
- events/
74
- items/
75
- database/
76
- primary.js Database connection
77
- servers/
78
- http.js HTTP server config
79
- ```
80
-
81
- Entry point:
82
-
83
- ```js
84
- import onetype from '#framework/load.js';
85
- import commands from '#commands/load.js';
86
- import database from '#database/load.js';
87
-
88
- import './addons/users/load.js';
89
- import './addons/offers/load.js';
90
-
91
- import './items/database/primary.js';
92
- import './items/servers/http.js';
93
- ```
94
-
95
- ## Import aliases
96
-
97
- The framework uses Node.js package imports (`#` prefix) defined in `package.json`:
98
-
99
- ```json
100
- {
101
- "imports": {
102
- "#framework/*": "./lib/*",
103
- "#database/*": "./addons/core/database/back/*",
104
- "#servers/*": "./addons/core/servers/back/*",
105
- "#clients/*": "./addons/core/clients/back/*",
106
- "#commands/*": "./addons/core/commands/*",
107
- "#queue/*": "./addons/core/queue/back/*",
108
- "#assets/*": "./addons/core/assets/back/*",
109
- "#html/*": "./addons/render/html/*",
110
- "#directives/*": "./addons/render/directives/*",
111
- "#pages/*": "./addons/render/pages/*",
112
- "#elements/*": "./addons/render/elements/*",
113
- "#tags/*": "./addons/render/tags/*",
114
- "#sources/*": "./addons/modules/sources/*",
115
- "#variables/*": "./addons/modules/variables/*"
116
- }
117
- }
118
- ```
119
-
120
- ## Design decisions
121
-
122
- ### Mixin composition over inheritance
123
-
124
- Both `OneType` and `OneTypeAddon` use `Object.assign(Class.prototype, mixin)`. No class hierarchies, no diamond problems. Each mixin is a plain object of methods merged onto the prototype:
125
-
126
- ```js
127
- import AddonItemGet from './mixins/get.js';
128
- import AddonItemSet from './mixins/set.js';
129
- import AddonItemCrud from './mixins/crud.js';
130
-
131
- Object.assign(OneTypeAddonItem.prototype, AddonItemGet);
132
- Object.assign(OneTypeAddonItem.prototype, AddonItemSet);
133
- Object.assign(OneTypeAddonItem.prototype, AddonItemCrud);
134
- ```
135
-
136
- ### Middleware as the extension point
137
-
138
- CRUD operations and queries are middleware chains:
139
- - `item.crud.create` — intercepted by database addon for INSERT
140
- - `item.crud.update` — intercepted for UPDATE
141
- - `item.crud.delete` — intercepted for DELETE
142
- - `addon.items.find` — intercepted for SELECT
143
-
144
- Without the database addon, everything works in-memory. Swap storage without touching business logic.
145
-
146
- ### Self-registering imports
147
-
148
- Importing an addon's `load.js` registers it with the framework. No manual wiring, no dependency injection container, no configuration object. `AddonReady` handles async dependency resolution — import order doesn't matter.
149
-
150
- ### Field transforms
151
-
152
- Every field has `get[]` and `set[]` arrays of transform functions plus a `define` schema:
153
-
154
- ```
155
- Set('name', value)
156
- → run set[] transforms
157
- → validate against define schema
158
- → fire lifecycle callbacks
159
- → store in item.data
160
- ```
161
-
162
- Computed fields, type coercion, and normalization are declared at the field level.
163
-
164
- ### Proxy-driven reactivity
165
-
166
- Render components return a `Proxy`. Setting a property schedules a debounced `Update()`:
167
-
168
- ```
169
- this.count++
170
- → Proxy trap
171
- → schedule Update() (16ms debounce)
172
- → re-compile template
173
- → DOM diff
174
- → patch changes
175
- ```
176
-
177
- Batched updates, no virtual DOM overhead.
178
-
179
- ### Binary transport over gRPC
180
-
181
- gRPC messages are JSON strings. Buffers can't be embedded directly. The framework extracts all Buffer instances into a separate `map<string, bytes>` field before sending:
182
-
183
- ```
184
- Send: { data: { file: <Buffer> } }
185
- → extract: { data: { file: "$$bin_0" }, binaries: { "$$bin_0": <Buffer> } }
186
- → send JSON + binaries separately
187
-
188
- Receive:
189
- → inject: { data: { file: <Buffer> } }
190
- ```
191
-
192
- Transparent binary transport over the same stream.
193
-
194
- ### Centralized asset registry
195
-
196
- All asset paths are registered centrally in `lib/load.js` via `onetype.Assets(id, url, config)`. This decouples asset path knowledge from individual addons — the framework controls what gets bundled, regardless of whether a backend addon is loaded.
197
-
198
- ```js
199
- // lib/load.js — top-level registrations
200
- onetype.Assets('framework', import.meta.url, { js: { path: '.', exclude: ['load.js', 'items', 'styles'] } });
201
- onetype.Assets('styles', import.meta.url, { css: 'styles' });
202
- onetype.Assets('commands', import.meta.url, { js: { path: '../addons/core/commands', exclude: ['../addons/core/commands/back'] } });
203
- ```
204
-
205
- Shared elements and transforms use `onetype.AddonReady` to register only after their parent addon is loaded. The JS files themselves contain the wrapper:
206
-
207
- ```js
208
- // lib/items/elements/form/button/button.js
209
- onetype.AddonReady('elements', (elements) =>
210
- {
211
- elements.ItemAdd({ id: 'form-button', ... });
212
- });
213
-
214
- // lib/items/transforms/swiper/swiper.js
215
- onetype.AddonReady('transforms', (transforms) =>
216
- {
217
- transforms.ItemAdd({ id: 'swiper', ... });
218
- });
219
- ```
220
-
221
- Element IDs are group-prefixed: `form-button`, `global-card`, `sections-navbar`, `status-loading`. HTML tags follow the same pattern: `<e-form-button>`, `<e-global-card>`, `<e-status-loading>`.
222
-
223
- The import function reads from the registry to resolve paths:
224
-
225
- ```js
226
- assets.Fn('import', ['framework', 'styles', 'commands', 'elements/form/input', 'transforms/swiper']);
227
- ```
228
-
229
- ### Convention-based bundling
230
-
231
- No webpack, no build configuration. The asset bundler:
232
- 1. Scans directories recursively
233
- 2. Prioritizes `addon.js` files
234
- 3. Strips `import`/`export` statements
235
- 4. Concatenates by priority order
236
- 5. Minifies via terser
237
-
238
- ES module source files become a browser-loadable bundle.