divhunt 2.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 (473) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +86 -0
  3. package/addons/core/clients/LICENSE.txt +40 -0
  4. package/addons/core/clients/README.md +123 -0
  5. package/addons/core/clients/back/grpc/addon.js +25 -0
  6. package/addons/core/clients/back/grpc/item/catch/add.js +8 -0
  7. package/addons/core/clients/back/grpc/item/functions/connect.js +73 -0
  8. package/addons/core/clients/back/grpc/item/functions/resolve.js +41 -0
  9. package/addons/core/clients/back/grpc/item/functions/stream.js +103 -0
  10. package/addons/core/clients/back/grpc/load.js +11 -0
  11. package/addons/core/clients/back/grpc/service.proto +20 -0
  12. package/addons/core/clients/back/http/addon.js +21 -0
  13. package/addons/core/clients/back/http/item/catch/add.js +18 -0
  14. package/addons/core/clients/back/http/item/functions/gRPC/create.js +192 -0
  15. package/addons/core/clients/back/http/item/functions/gRPC/execute.js +15 -0
  16. package/addons/core/clients/back/http/item/functions/http/create.js +143 -0
  17. package/addons/core/clients/back/http/item/functions/http/delete.js +8 -0
  18. package/addons/core/clients/back/http/item/functions/http/get.js +8 -0
  19. package/addons/core/clients/back/http/item/functions/http/post.js +8 -0
  20. package/addons/core/clients/back/http/item/functions/http/put.js +8 -0
  21. package/addons/core/clients/back/http/item/functions/http/request.js +15 -0
  22. package/addons/core/clients/back/http/load.js +17 -0
  23. package/addons/core/commands/LICENSE.txt +40 -0
  24. package/addons/core/commands/README.md +294 -0
  25. package/addons/core/commands/back/addon.js +31 -0
  26. package/addons/core/commands/back/functions/find.js +54 -0
  27. package/addons/core/commands/back/functions/grpc/client.js +155 -0
  28. package/addons/core/commands/back/functions/grpc/server.js +71 -0
  29. package/addons/core/commands/back/functions/http/server.js +91 -0
  30. package/addons/core/commands/back/item/functions/run.js +82 -0
  31. package/addons/core/commands/back/items/many.js +76 -0
  32. package/addons/core/commands/back/items/one.js +78 -0
  33. package/addons/core/commands/back/items/run.js +51 -0
  34. package/addons/core/commands/back/load.js +20 -0
  35. package/addons/core/commands/front/#register/addon.js +11 -0
  36. package/addons/core/commands/front/functions/find.js +24 -0
  37. package/addons/core/commands/front/item/functions/run.js +98 -0
  38. package/addons/core/commands/front/items/elements/table/table.css +18 -0
  39. package/addons/core/commands/front/items/elements/table/table.js +254 -0
  40. package/addons/core/database/README.md +276 -0
  41. package/addons/core/database/back/addon.js +14 -0
  42. package/addons/core/database/back/events/addon.add.js +18 -0
  43. package/addons/core/database/back/events/middleware/addon.items.find.js +24 -0
  44. package/addons/core/database/back/events/middleware/item.crud.create.js +24 -0
  45. package/addons/core/database/back/events/middleware/item.crud.delete.js +24 -0
  46. package/addons/core/database/back/events/middleware/item.crud.update.js +24 -0
  47. package/addons/core/database/back/functions/create.js +6 -0
  48. package/addons/core/database/back/functions/delete.js +6 -0
  49. package/addons/core/database/back/functions/find/builder.js +160 -0
  50. package/addons/core/database/back/functions/find/count.js +12 -0
  51. package/addons/core/database/back/functions/find/filter.js +37 -0
  52. package/addons/core/database/back/functions/find/filters.js +7 -0
  53. package/addons/core/database/back/functions/find/many.js +93 -0
  54. package/addons/core/database/back/functions/find/methods.js +235 -0
  55. package/addons/core/database/back/functions/find/plain.js +25 -0
  56. package/addons/core/database/back/functions/find/validation.js +214 -0
  57. package/addons/core/database/back/functions/find.js +25 -0
  58. package/addons/core/database/back/functions/update.js +6 -0
  59. package/addons/core/database/back/item/catch/add.js +25 -0
  60. package/addons/core/database/back/item/functions/create.js +93 -0
  61. package/addons/core/database/back/item/functions/delete.js +25 -0
  62. package/addons/core/database/back/item/functions/find.js +19 -0
  63. package/addons/core/database/back/item/functions/save.js +15 -0
  64. package/addons/core/database/back/item/functions/transaction.js +17 -0
  65. package/addons/core/database/back/item/functions/update.js +76 -0
  66. package/addons/core/database/back/items/commands/expose.js +321 -0
  67. package/addons/core/database/back/load.js +68 -0
  68. package/addons/core/database/front/#register/addon.js +4 -0
  69. package/addons/core/database/front/events/addon.add.js +13 -0
  70. package/addons/core/database/front/functions/find.js +142 -0
  71. package/addons/core/queue/README.md +216 -0
  72. package/addons/core/queue/back/addon.js +21 -0
  73. package/addons/core/queue/back/functions/calculate/art.js +12 -0
  74. package/addons/core/queue/back/functions/calculate/rps.js +22 -0
  75. package/addons/core/queue/back/item/catch/add.js +6 -0
  76. package/addons/core/queue/back/item/catch/remove.js +6 -0
  77. package/addons/core/queue/back/item/functions/add.js +15 -0
  78. package/addons/core/queue/back/item/functions/start.js +135 -0
  79. package/addons/core/queue/back/load.js +12 -0
  80. package/addons/core/queue/index.js +66 -0
  81. package/addons/core/queue/package.json +13 -0
  82. package/addons/core/servers/README.md +85 -0
  83. package/addons/core/servers/back/grpc/addon.js +23 -0
  84. package/addons/core/servers/back/grpc/item/catch/add.js +6 -0
  85. package/addons/core/servers/back/grpc/item/functions/resolve.js +41 -0
  86. package/addons/core/servers/back/grpc/item/functions/start.js +65 -0
  87. package/addons/core/servers/back/grpc/item/functions/stream.js +68 -0
  88. package/addons/core/servers/back/grpc/load.js +9 -0
  89. package/addons/core/servers/back/grpc/service.proto +20 -0
  90. package/addons/core/servers/back/http/addon.js +15 -0
  91. package/addons/core/servers/back/http/functions/extract/data.js +232 -0
  92. package/addons/core/servers/back/http/item/catch/add.js +6 -0
  93. package/addons/core/servers/back/http/item/functions/start.js +135 -0
  94. package/addons/core/servers/back/http/load.js +8 -0
  95. package/addons/float/modals/front/css/modals.css +26 -0
  96. package/addons/float/modals/front/js/#register/addon.js +10 -0
  97. package/addons/float/modals/front/js/item/catch/add.js +48 -0
  98. package/addons/float/modals/front/js/item/catch/remove.js +9 -0
  99. package/addons/float/overlays/front/css/overlays.css +29 -0
  100. package/addons/float/overlays/front/js/#register/addon.js +17 -0
  101. package/addons/float/overlays/front/js/events/click.js +27 -0
  102. package/addons/float/overlays/front/js/events/escape.js +18 -0
  103. package/addons/float/overlays/front/js/functions/flip.js +74 -0
  104. package/addons/float/overlays/front/js/functions/index.js +17 -0
  105. package/addons/float/overlays/front/js/functions/position.js +63 -0
  106. package/addons/float/overlays/front/js/item/catch/add.js +121 -0
  107. package/addons/float/overlays/front/js/item/catch/remove.js +16 -0
  108. package/addons/float/popups/css/popups.css +4 -0
  109. package/addons/float/popups/js/#register/addon.js +18 -0
  110. package/addons/float/popups/js/item/catch/add.js +7 -0
  111. package/addons/float/popups/js/item/catch/remove.js +7 -0
  112. package/addons/float/popups/js/item/catch/set.js +73 -0
  113. package/addons/float/popups/js/items/directives/popup.js +54 -0
  114. package/addons/float/toasts/#register/addon.js +17 -0
  115. package/addons/float/toasts/item/catch/add.js +7 -0
  116. package/addons/float/toasts/item/catch/remove.js +7 -0
  117. package/addons/float/toasts/item/catch/set.js +86 -0
  118. package/addons/float/toasts/items/elements/toast/toast.css +84 -0
  119. package/addons/float/toasts/items/elements/toast/toast.js +61 -0
  120. package/addons/float/tooltips/#register/addon.js +15 -0
  121. package/addons/float/tooltips/item/catch/add.js +7 -0
  122. package/addons/float/tooltips/item/catch/remove.js +26 -0
  123. package/addons/float/tooltips/item/catch/set.js +65 -0
  124. package/addons/float/tooltips/items/directives/tooltip.js +74 -0
  125. package/addons/float/tooltips/items/elements/tooltip.css +64 -0
  126. package/addons/float/tooltips/items/elements/tooltip.js +42 -0
  127. package/addons/modules/actions/front/addon.js +19 -0
  128. package/addons/modules/actions/front/functions/run.js +230 -0
  129. package/addons/modules/actions/front/load.js +5 -0
  130. package/addons/modules/bugs/front/addon.js +16 -0
  131. package/addons/modules/bugs/front/functions/clear.js +14 -0
  132. package/addons/modules/bugs/front/functions/push.js +15 -0
  133. package/addons/modules/bugs/front/functions/resolve.js +13 -0
  134. package/addons/modules/bugs/front/item/catch/add.js +9 -0
  135. package/addons/modules/bugs/front/load.js +9 -0
  136. package/addons/modules/events/front/addon.js +11 -0
  137. package/addons/modules/events/front/functions/clear.js +9 -0
  138. package/addons/modules/events/front/functions/emit.js +60 -0
  139. package/addons/modules/events/front/functions/off.js +23 -0
  140. package/addons/modules/events/front/functions/on.js +40 -0
  141. package/addons/modules/events/front/functions/once.js +6 -0
  142. package/addons/modules/events/front/load.js +9 -0
  143. package/addons/modules/schedules/back/addon.js +26 -0
  144. package/addons/modules/schedules/back/functions/disable.js +17 -0
  145. package/addons/modules/schedules/back/functions/enable.js +17 -0
  146. package/addons/modules/schedules/back/functions/next.js +142 -0
  147. package/addons/modules/schedules/back/functions/start.js +126 -0
  148. package/addons/modules/schedules/back/functions/stop.js +38 -0
  149. package/addons/modules/schedules/back/functions/trigger.js +134 -0
  150. package/addons/modules/schedules/back/items/create.js +82 -0
  151. package/addons/modules/schedules/back/items/delete.js +38 -0
  152. package/addons/modules/schedules/back/items/many.js +90 -0
  153. package/addons/modules/schedules/back/items/one.js +48 -0
  154. package/addons/modules/schedules/back/items/update.js +115 -0
  155. package/addons/modules/schedules/back/load.js +16 -0
  156. package/addons/modules/schedules/front/addon.js +23 -0
  157. package/addons/modules/schedules/front/functions/disable.js +17 -0
  158. package/addons/modules/schedules/front/functions/enable.js +17 -0
  159. package/addons/modules/schedules/front/functions/next.js +142 -0
  160. package/addons/modules/schedules/front/functions/start.js +126 -0
  161. package/addons/modules/schedules/front/functions/stop.js +38 -0
  162. package/addons/modules/schedules/front/functions/trigger.js +161 -0
  163. package/addons/modules/schedules/front/load.js +10 -0
  164. package/addons/modules/shortcuts/front/#register/addon.js +22 -0
  165. package/addons/modules/shortcuts/front/functions/context.js +13 -0
  166. package/addons/modules/shortcuts/front/functions/disable.js +15 -0
  167. package/addons/modules/shortcuts/front/functions/enable.js +15 -0
  168. package/addons/modules/shortcuts/front/functions/register.js +170 -0
  169. package/addons/modules/shortcuts/front/functions/trigger.js +140 -0
  170. package/addons/modules/shortcuts/front/functions/unregister.js +19 -0
  171. package/addons/modules/shortcuts/front/load.js +12 -0
  172. package/addons/modules/sources/back/addon.js +23 -0
  173. package/addons/modules/sources/back/functions/run.js +252 -0
  174. package/addons/modules/sources/back/items/create.js +74 -0
  175. package/addons/modules/sources/back/items/delete.js +36 -0
  176. package/addons/modules/sources/back/items/many.js +80 -0
  177. package/addons/modules/sources/back/items/one.js +46 -0
  178. package/addons/modules/sources/back/items/run.js +28 -0
  179. package/addons/modules/sources/back/items/update.js +110 -0
  180. package/addons/modules/sources/back/load.js +12 -0
  181. package/addons/modules/sources/front/addon.js +20 -0
  182. package/addons/modules/sources/front/functions/run.js +279 -0
  183. package/addons/modules/sources/front/load.js +5 -0
  184. package/addons/modules/variables/addon.js +12 -0
  185. package/addons/modules/variables/functions/filter.js +24 -0
  186. package/addons/modules/variables/functions/process.js +52 -0
  187. package/addons/modules/variables/item/catch/add.js +13 -0
  188. package/addons/modules/variables/load.js +8 -0
  189. package/addons/render/assets/back/README.md +1 -0
  190. package/addons/render/assets/back/addon.js +15 -0
  191. package/addons/render/assets/back/functions/css.js +32 -0
  192. package/addons/render/assets/back/functions/js.js +32 -0
  193. package/addons/render/assets/back/functions/scan/directories.js +38 -0
  194. package/addons/render/assets/back/functions/scan/files.js +58 -0
  195. package/addons/render/assets/back/functions/utils/read.js +26 -0
  196. package/addons/render/assets/back/functions/utils/transform.js +34 -0
  197. package/addons/render/assets/back/items/commands/css.js +20 -0
  198. package/addons/render/assets/back/items/commands/js.js +19 -0
  199. package/addons/render/assets/back/items/html/css.js +18 -0
  200. package/addons/render/assets/back/items/html/js.js +18 -0
  201. package/addons/render/assets/back/load.js +23 -0
  202. package/addons/render/directives/front/js/#register/addon.js +32 -0
  203. package/addons/render/directives/front/js/functions/process/attributes.js +47 -0
  204. package/addons/render/directives/front/js/functions/process/data.js +74 -0
  205. package/addons/render/directives/front/js/functions/process/match.js +43 -0
  206. package/addons/render/directives/front/js/functions/process.js +57 -0
  207. package/addons/render/directives/front/js/items/100-if.js +24 -0
  208. package/addons/render/directives/front/js/items/1000-render.js +36 -0
  209. package/addons/render/directives/front/js/items/110-show.js +25 -0
  210. package/addons/render/directives/front/js/items/160-slot.js +32 -0
  211. package/addons/render/directives/front/js/items/200-for.js +79 -0
  212. package/addons/render/directives/front/js/items/500-blur.js +46 -0
  213. package/addons/render/directives/front/js/items/500-change.js +53 -0
  214. package/addons/render/directives/front/js/items/500-click-outside.js +50 -0
  215. package/addons/render/directives/front/js/items/500-click.js +52 -0
  216. package/addons/render/directives/front/js/items/500-double-click.js +52 -0
  217. package/addons/render/directives/front/js/items/500-focus.js +46 -0
  218. package/addons/render/directives/front/js/items/500-input.js +46 -0
  219. package/addons/render/directives/front/js/items/500-keydown.js +53 -0
  220. package/addons/render/directives/front/js/items/500-keyup.js +53 -0
  221. package/addons/render/directives/front/js/items/500-mouse-enter.js +61 -0
  222. package/addons/render/directives/front/js/items/500-mouse-leave.js +61 -0
  223. package/addons/render/directives/front/js/items/500-mouse-move.js +45 -0
  224. package/addons/render/directives/front/js/items/500-scroll.js +45 -0
  225. package/addons/render/directives/front/js/items/500-submit.js +52 -0
  226. package/addons/render/directives/front/js/items/650-fetch.js +189 -0
  227. package/addons/render/directives/front/js/items/660-form.js +291 -0
  228. package/addons/render/directives/front/js/items/700-text.js +50 -0
  229. package/addons/render/directives/front/js/items/750-html.js +44 -0
  230. package/addons/render/elements/front/#register/addon.js +12 -0
  231. package/addons/render/elements/front/item/catch/add.js +9 -0
  232. package/addons/render/elements/front/items/directives/element.js +76 -0
  233. package/addons/render/elements/front/items/self/base/menu/menu.js +96 -0
  234. package/addons/render/elements/front/items/self/base/menu/styles/base.css +116 -0
  235. package/addons/render/elements/front/items/self/base/menu/styles/sizes.css +27 -0
  236. package/addons/render/elements/front/items/self/base/menu/styles/variants.css +99 -0
  237. package/addons/render/elements/front/items/self/base/tag/tag.css +199 -0
  238. package/addons/render/elements/front/items/self/base/tag/tag.js +37 -0
  239. package/addons/render/elements/front/items/self/cards/basic/basic.js +89 -0
  240. package/addons/render/elements/front/items/self/cards/basic/styles/base.css +66 -0
  241. package/addons/render/elements/front/items/self/cards/basic/styles/sizes.css +32 -0
  242. package/addons/render/elements/front/items/self/cards/basic/styles/variants.css +99 -0
  243. package/addons/render/elements/front/items/self/cards/list/list.js +108 -0
  244. package/addons/render/elements/front/items/self/cards/list/styles/base.css +96 -0
  245. package/addons/render/elements/front/items/self/cards/list/styles/sizes.css +32 -0
  246. package/addons/render/elements/front/items/self/cards/list/styles/variants.css +99 -0
  247. package/addons/render/elements/front/items/self/cards/media/media.js +116 -0
  248. package/addons/render/elements/front/items/self/cards/media/styles/base.css +126 -0
  249. package/addons/render/elements/front/items/self/cards/media/styles/sizes.css +49 -0
  250. package/addons/render/elements/front/items/self/cards/media/styles/variants.css +74 -0
  251. package/addons/render/elements/front/items/self/cards/profile/profile.js +95 -0
  252. package/addons/render/elements/front/items/self/cards/profile/styles/base.css +142 -0
  253. package/addons/render/elements/front/items/self/cards/profile/styles/sizes.css +43 -0
  254. package/addons/render/elements/front/items/self/cards/profile/styles/variants.css +131 -0
  255. package/addons/render/elements/front/items/self/cards/stat/stat.js +117 -0
  256. package/addons/render/elements/front/items/self/cards/stat/styles/base.css +97 -0
  257. package/addons/render/elements/front/items/self/cards/stat/styles/sizes.css +49 -0
  258. package/addons/render/elements/front/items/self/cards/stat/styles/variants.css +124 -0
  259. package/addons/render/elements/front/items/self/content/html/html.css +93 -0
  260. package/addons/render/elements/front/items/self/content/html/html.js +40 -0
  261. package/addons/render/elements/front/items/self/content/markdown/markdown.css +200 -0
  262. package/addons/render/elements/front/items/self/content/markdown/markdown.js +120 -0
  263. package/addons/render/elements/front/items/self/data/comments/comments.css +253 -0
  264. package/addons/render/elements/front/items/self/data/comments/comments.js +134 -0
  265. package/addons/render/elements/front/items/self/data/files/files.css +116 -0
  266. package/addons/render/elements/front/items/self/data/files/files.js +85 -0
  267. package/addons/render/elements/front/items/self/data/folders/folders.css +104 -0
  268. package/addons/render/elements/front/items/self/data/folders/folders.js +73 -0
  269. package/addons/render/elements/front/items/self/data/inbox/inbox.css +225 -0
  270. package/addons/render/elements/front/items/self/data/inbox/inbox.js +111 -0
  271. package/addons/render/elements/front/items/self/data/logs/logs.css +133 -0
  272. package/addons/render/elements/front/items/self/data/logs/logs.js +65 -0
  273. package/addons/render/elements/front/items/self/data/plans/plans.css +231 -0
  274. package/addons/render/elements/front/items/self/data/plans/plans.js +104 -0
  275. package/addons/render/elements/front/items/self/data/properties/properties.css +108 -0
  276. package/addons/render/elements/front/items/self/data/properties/properties.js +156 -0
  277. package/addons/render/elements/front/items/self/data/table/table.css +153 -0
  278. package/addons/render/elements/front/items/self/data/table/table.js +106 -0
  279. package/addons/render/elements/front/items/self/data/timeline/timeline.css +127 -0
  280. package/addons/render/elements/front/items/self/data/timeline/timeline.js +57 -0
  281. package/addons/render/elements/front/items/self/feedback/alert/alert.css +258 -0
  282. package/addons/render/elements/front/items/self/feedback/alert/alert.js +67 -0
  283. package/addons/render/elements/front/items/self/feedback/confirm/confirm.css +229 -0
  284. package/addons/render/elements/front/items/self/feedback/confirm/confirm.js +81 -0
  285. package/addons/render/elements/front/items/self/feedback/loader/loader.css +203 -0
  286. package/addons/render/elements/front/items/self/feedback/loader/loader.js +25 -0
  287. package/addons/render/elements/front/items/self/feedback/progress/progress.css +136 -0
  288. package/addons/render/elements/front/items/self/feedback/progress/progress.js +40 -0
  289. package/addons/render/elements/front/items/self/form/button/button.js +105 -0
  290. package/addons/render/elements/front/items/self/form/button/styles/base.css +176 -0
  291. package/addons/render/elements/front/items/self/form/button/styles/sizes.css +78 -0
  292. package/addons/render/elements/front/items/self/form/button/styles/variants.css +421 -0
  293. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +57 -0
  294. package/addons/render/elements/front/items/self/form/checkbox/styles/base.css +52 -0
  295. package/addons/render/elements/front/items/self/form/checkbox/styles/sizes.css +39 -0
  296. package/addons/render/elements/front/items/self/form/checkbox/styles/variants.css +121 -0
  297. package/addons/render/elements/front/items/self/form/field/field.css +96 -0
  298. package/addons/render/elements/front/items/self/form/field/field.js +39 -0
  299. package/addons/render/elements/front/items/self/form/input/input.css +111 -0
  300. package/addons/render/elements/front/items/self/form/input/input.js +78 -0
  301. package/addons/render/elements/front/items/self/form/input/styles/base.css +26 -0
  302. package/addons/render/elements/front/items/self/form/input/styles/sizes.css +15 -0
  303. package/addons/render/elements/front/items/self/form/input/styles/variants.css +98 -0
  304. package/addons/render/elements/front/items/self/form/radio/radio.js +57 -0
  305. package/addons/render/elements/front/items/self/form/radio/styles/base.css +48 -0
  306. package/addons/render/elements/front/items/self/form/radio/styles/sizes.css +36 -0
  307. package/addons/render/elements/front/items/self/form/radio/styles/variants.css +121 -0
  308. package/addons/render/elements/front/items/self/form/rating/rating.css +95 -0
  309. package/addons/render/elements/front/items/self/form/rating/rating.js +88 -0
  310. package/addons/render/elements/front/items/self/form/section/section.css +107 -0
  311. package/addons/render/elements/front/items/self/form/section/section.js +39 -0
  312. package/addons/render/elements/front/items/self/form/slider/slider.css +244 -0
  313. package/addons/render/elements/front/items/self/form/slider/slider.js +69 -0
  314. package/addons/render/elements/front/items/self/form/textarea/textarea.css +117 -0
  315. package/addons/render/elements/front/items/self/form/textarea/textarea.js +69 -0
  316. package/addons/render/elements/front/items/self/layout/empty/empty.css +154 -0
  317. package/addons/render/elements/front/items/self/layout/empty/empty.js +43 -0
  318. package/addons/render/elements/front/items/self/layout/heading/heading.css +117 -0
  319. package/addons/render/elements/front/items/self/layout/heading/heading.js +47 -0
  320. package/addons/render/elements/front/items/self/layout/hero/hero.js +88 -0
  321. package/addons/render/elements/front/items/self/layout/hero/styles/base.css +81 -0
  322. package/addons/render/elements/front/items/self/layout/hero/styles/sizes.css +24 -0
  323. package/addons/render/elements/front/items/self/layout/hero/styles/variants.css +98 -0
  324. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/_class/addon.js +9 -0
  325. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/functions/get.js +22 -0
  326. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.css +13 -0
  327. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.js +51 -0
  328. package/addons/render/elements/front/items/self/navigation/footer/addon/_class/addon.js +11 -0
  329. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/columns.js +11 -0
  330. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/get.js +34 -0
  331. package/addons/render/elements/front/items/self/navigation/footer/footer.css +283 -0
  332. package/addons/render/elements/front/items/self/navigation/footer/footer.js +139 -0
  333. package/addons/render/elements/front/items/self/navigation/navbar/addon/_class/addon.js +13 -0
  334. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/active.js +7 -0
  335. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/get.js +31 -0
  336. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +140 -0
  337. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +118 -0
  338. package/addons/render/elements/front/items/self/navigation/pagination/pagination.css +160 -0
  339. package/addons/render/elements/front/items/self/navigation/pagination/pagination.js +131 -0
  340. package/addons/render/elements/front/items/self/navigation/sidebar/addon/_class/addon.js +12 -0
  341. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/active.js +7 -0
  342. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/get.js +35 -0
  343. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/groups.js +10 -0
  344. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +278 -0
  345. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +85 -0
  346. package/addons/render/elements/front/items/self/navigation/stepper/stepper.css +202 -0
  347. package/addons/render/elements/front/items/self/navigation/stepper/stepper.js +82 -0
  348. package/addons/render/elements/front/items/self/navigation/tabs/addon.js +32 -0
  349. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +239 -0
  350. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +76 -0
  351. package/addons/render/elements/front/items/self/preview/html/html.css +377 -0
  352. package/addons/render/elements/front/items/self/preview/html/html.js +107 -0
  353. package/addons/render/html/addon.js +13 -0
  354. package/addons/render/html/functions/render.js +85 -0
  355. package/addons/render/html/item/functions/render.js +66 -0
  356. package/addons/render/html/items/assets/favicon.js +12 -0
  357. package/addons/render/html/items/fonts/outfit.js +12 -0
  358. package/addons/render/html/items/fonts/preconnect.js +24 -0
  359. package/addons/render/html/items/meta/charset.js +11 -0
  360. package/addons/render/html/items/meta/description.js +12 -0
  361. package/addons/render/html/items/meta/title.js +9 -0
  362. package/addons/render/html/items/meta/viewport.js +12 -0
  363. package/addons/render/html/items/seo/robots.js +12 -0
  364. package/addons/render/html/items/seo/theme-color.js +12 -0
  365. package/addons/render/html/load.js +26 -0
  366. package/addons/render/items/js/#register/addon.js +14 -0
  367. package/addons/render/items/js/functions/count.js +9 -0
  368. package/addons/render/items/js/functions/get.js +34 -0
  369. package/addons/render/items/js/functions/groups.js +16 -0
  370. package/addons/render/items/js/functions/render.js +44 -0
  371. package/addons/render/items/js/item/catch/add.js +18 -0
  372. package/addons/render/pages/front/css/page.css +17 -0
  373. package/addons/render/pages/front/js/#register/addon.js +29 -0
  374. package/addons/render/pages/front/js/events/click.js +27 -0
  375. package/addons/render/pages/front/js/events/load.js +25 -0
  376. package/addons/render/pages/front/js/functions/change.js +119 -0
  377. package/addons/render/pages/front/js/functions/match.js +34 -0
  378. package/addons/render/pages/front/js/functions/open.js +19 -0
  379. package/addons/render/pages/front/js/item/catch/add.js +24 -0
  380. package/addons/render/pages/front/js/item/catch/remove.js +17 -0
  381. package/addons/render/pages/front/js/item/functions/enter.js +45 -0
  382. package/addons/render/pages/front/js/item/functions/leave.js +27 -0
  383. package/addons/render/pages/front/js/item/functions/render.js +33 -0
  384. package/addons/render/pages/front/js/items/commands/change.js +41 -0
  385. package/addons/render/pages/front/js/items/shortcuts/home.js +9 -0
  386. package/addons/render/pages/front/js/items/shortcuts/login.js +9 -0
  387. package/addons/render/tags/addon.js +11 -0
  388. package/addons/render/tags/functions/groups.js +13 -0
  389. package/addons/render/tags/functions/validate.js +51 -0
  390. package/addons/render/tags/items/block.js +131 -0
  391. package/addons/render/tags/items/form.js +112 -0
  392. package/addons/render/tags/items/media.js +64 -0
  393. package/addons/render/tags/items/meta.js +28 -0
  394. package/addons/render/tags/items/semantic.js +114 -0
  395. package/addons/render/tags/items/table.js +92 -0
  396. package/addons/render/tags/items/text-inline.js +215 -0
  397. package/addons/render/tags/load.js +16 -0
  398. package/addons/render/transforms/front/js/#register/addon.js +11 -0
  399. package/addons/render/transforms/front/js/functions/load/assets.js +49 -0
  400. package/addons/render/transforms/front/js/items/directives/transform.js +40 -0
  401. package/addons/render/transforms/front/js/items/self/accordion.js +174 -0
  402. package/addons/render/transforms/front/js/items/self/chart/area.js +156 -0
  403. package/addons/render/transforms/front/js/items/self/chart/bar.js +140 -0
  404. package/addons/render/transforms/front/js/items/self/chart/bubble.js +169 -0
  405. package/addons/render/transforms/front/js/items/self/chart/doughnut.js +127 -0
  406. package/addons/render/transforms/front/js/items/self/chart/line.js +152 -0
  407. package/addons/render/transforms/front/js/items/self/chart/pie.js +125 -0
  408. package/addons/render/transforms/front/js/items/self/chart/radar.js +157 -0
  409. package/addons/render/transforms/front/js/items/self/chart/scatter.js +152 -0
  410. package/addons/render/transforms/front/js/items/self/codeflask.js +99 -0
  411. package/addons/render/transforms/front/js/items/self/codemirror.js +231 -0
  412. package/addons/render/transforms/front/js/items/self/comparison.js +142 -0
  413. package/addons/render/transforms/front/js/items/self/heatmap.js +494 -0
  414. package/addons/render/transforms/front/js/items/self/interact.js +277 -0
  415. package/addons/render/transforms/front/js/items/self/particles.js +329 -0
  416. package/addons/render/transforms/front/js/items/self/sparkline.js +240 -0
  417. package/addons/render/transforms/front/js/items/self/swiper.js +143 -0
  418. package/addons/render/transforms/front/js/items/self/tabs.js +460 -0
  419. package/addons/render/transforms/front/js/items/self/typed.js +173 -0
  420. package/docs/addons.md +281 -0
  421. package/docs/architecture.md +190 -0
  422. package/docs/commands.md +308 -0
  423. package/docs/database.md +171 -0
  424. package/docs/frontend.md +379 -0
  425. package/docs/servers.md +133 -0
  426. package/lib/LICENSE.txt +40 -0
  427. package/lib/README.md +132 -0
  428. package/lib/browser.js +26 -0
  429. package/lib/events.js +108 -0
  430. package/lib/load.js +39 -0
  431. package/lib/src/classes/addon/class.js +86 -0
  432. package/lib/src/classes/addon/classes/item/class.js +27 -0
  433. package/lib/src/classes/addon/classes/item/mixins/crud.js +30 -0
  434. package/lib/src/classes/addon/classes/item/mixins/functions.js +11 -0
  435. package/lib/src/classes/addon/classes/item/mixins/get.js +78 -0
  436. package/lib/src/classes/addon/classes/item/mixins/remove.js +11 -0
  437. package/lib/src/classes/addon/classes/item/mixins/set.js +69 -0
  438. package/lib/src/classes/addon/classes/item/mixins/store.js +58 -0
  439. package/lib/src/classes/addon/classes/render/class.js +117 -0
  440. package/lib/src/classes/addon/classes/render/mixins/compile.js +91 -0
  441. package/lib/src/classes/addon/classes/render/mixins/dom.js +18 -0
  442. package/lib/src/classes/addon/classes/render/mixins/events.js +152 -0
  443. package/lib/src/classes/addon/classes/render/mixins/get.js +56 -0
  444. package/lib/src/classes/addon/classes/render/mixins/methods.js +191 -0
  445. package/lib/src/classes/addon/classes/render/mixins/process.js +88 -0
  446. package/lib/src/classes/addon/classes/render/mixins/set.js +36 -0
  447. package/lib/src/classes/addon/mixins/fields.js +85 -0
  448. package/lib/src/classes/addon/mixins/find.js +14 -0
  449. package/lib/src/classes/addon/mixins/functions.js +131 -0
  450. package/lib/src/classes/addon/mixins/get.js +11 -0
  451. package/lib/src/classes/addon/mixins/items.js +176 -0
  452. package/lib/src/classes/addon/mixins/remove.js +12 -0
  453. package/lib/src/classes/addon/mixins/render.js +57 -0
  454. package/lib/src/classes/addon/mixins/store.js +52 -0
  455. package/lib/src/classes/addon/mixins/table.js +37 -0
  456. package/lib/src/divhunt.js +84 -0
  457. package/lib/src/mixins/addons.js +150 -0
  458. package/lib/src/mixins/binaries.js +89 -0
  459. package/lib/src/mixins/data.js +312 -0
  460. package/lib/src/mixins/dependencies.js +99 -0
  461. package/lib/src/mixins/dom.js +167 -0
  462. package/lib/src/mixins/emitter.js +77 -0
  463. package/lib/src/mixins/function.js +82 -0
  464. package/lib/src/mixins/generate.js +73 -0
  465. package/lib/src/mixins/helper.js +317 -0
  466. package/lib/src/mixins/logger.js +75 -0
  467. package/lib/src/mixins/middleware.js +52 -0
  468. package/lib/src/mixins/overrides.js +37 -0
  469. package/lib/src/mixins/request.js +28 -0
  470. package/lib/src/mixins/route.js +191 -0
  471. package/lib/src/mixins/string.js +196 -0
  472. package/lib/src/mixins/validate.js +78 -0
  473. package/package.json +70 -0
@@ -0,0 +1,216 @@
1
+ # Queue
2
+
3
+ A lightweight task queue management system for handling asynchronous operations with concurrency control.
4
+
5
+ ## Usage
6
+
7
+ Create a queue instance:
8
+
9
+ ```javascript
10
+ const myQueue = queue.Item(
11
+ {
12
+ id: 'my-queue',
13
+ concurrency: 5,
14
+ timeout: 3000,
15
+ onTaskStart: (task, batch) =>
16
+ {
17
+ console.log(`Task ${task.id} started`);
18
+ },
19
+ onTaskEnd: (task, batch) =>
20
+ {
21
+ console.log(`Task ${task.id} ended, success: ${task.success}`);
22
+ },
23
+ onEmpty: (batch) =>
24
+ {
25
+ console.log('Queue is empty');
26
+ }
27
+ });
28
+ ```
29
+
30
+ Add tasks to the queue:
31
+
32
+ ```javascript
33
+ myQueue.Fn('add', null, { url: 'https://example.com' }, (data, resolve) =>
34
+ {
35
+ try
36
+ {
37
+ fetch(data.url).then(response =>
38
+ {
39
+ if (!response.ok) throw new Error('Network response failed');
40
+ return response.json();
41
+ })
42
+ .then(result =>
43
+ {
44
+ resolve(); // Tasks completed
45
+ })
46
+ .catch(error =>
47
+ {
48
+ throw new Error(`Fetch failed: ${error.message}`);
49
+ });
50
+ }
51
+ catch (error)
52
+ {
53
+ // Task wont fail since error hasn't been throw, but timeout will kick in
54
+ console.error(error);
55
+ }
56
+ });
57
+ ```
58
+
59
+ ## Configuration
60
+
61
+ The queue accepts the following configuration options:
62
+
63
+ - `id`: Unique identifier for the queue
64
+ - `concurrency`: Maximum number of tasks to process simultaneously (default: 10)
65
+ - `timeout`: Task timeout in milliseconds (default: 5000)
66
+ - `running`: Whether the queue is actively processing tasks (default: true)
67
+
68
+ ## Events
69
+
70
+ Callback functions that can be defined:
71
+
72
+ - `onTaskStart`: Called when a task begins processing
73
+ - `onTaskEnd`: Called when a task completes (success or failure)
74
+ - `onEmpty`: Called when the queue becomes empty
75
+ - `onRun`: Called when the queue starts processing a batch of tasks
76
+ - `whileRunning`: Called periodically while tasks are being processed
77
+
78
+ ## Task Format
79
+
80
+ Tasks have the following properties:
81
+
82
+ - `id`: Unique identifier (auto-generated if null is provided)
83
+ - `data`: Custom data passed to the task callback
84
+ - `callback`: Function to execute the task logic
85
+ - `success`: Result status after completion
86
+ - `duration`: Processing time in milliseconds
87
+
88
+ ## Batch Statistics
89
+
90
+ During processing, the batch object provides:
91
+
92
+ - `active`: Number of currently running tasks
93
+ - `processed`: Total completed tasks in current batch
94
+ - `succeeded`: Number of successful tasks
95
+ - `failed`: Number of failed tasks
96
+ - `reset()`: Method to reset batch counters
97
+
98
+ ## Error Handling
99
+
100
+ Tasks automatically fail when an error is thrown within the callback function. Use try/catch blocks and throw appropriate errors:
101
+
102
+ ```javascript
103
+ myQueue.Fn('add', null, data, (data, resolve) =>
104
+ {
105
+ try
106
+ {
107
+ // Task logic
108
+ if (!data.isValid)
109
+ {
110
+ throw new Error('Invalid data provided');
111
+ }
112
+ resolve();
113
+ }
114
+ catch (error)
115
+ {
116
+ // Will be captured by queue error handling
117
+ throw new Error(`Task failed: ${error.message}`);
118
+ }
119
+ });
120
+ ```
121
+
122
+ ## Utility Functions
123
+
124
+ The queue includes utility functions:
125
+
126
+ ### Calculate Requests Per Second
127
+
128
+ ```javascript
129
+ const timestamps = [/* array of task completion timestamps */];
130
+ const rps = myQueue.Fn('calculate.rps', timestamps);
131
+ console.log(rps[100]); // RPS over the last 100 tasks
132
+ ```
133
+
134
+ ### Calculate Average Response Time
135
+
136
+ ```javascript
137
+ const durations = [/* array of task durations */];
138
+ const art = myQueue.Fn('calculate.art', durations);
139
+ console.log(art[100]); // Average response time over the last 100 tasks
140
+ ```
141
+
142
+ ## Controlling Queue Execution
143
+
144
+ Pause queue processing:
145
+
146
+ ```javascript
147
+ myQueue.Set('running', false);
148
+ ```
149
+
150
+ Resume queue processing:
151
+
152
+ ```javascript
153
+ myQueue.Set('running', true);
154
+ ```
155
+
156
+ ## Advanced Example
157
+
158
+ Here's a complete example of a queue that processes web requests:
159
+
160
+ ```javascript
161
+ import queue from '#queue/load.js';
162
+
163
+ const scrapeQueue = queue.Item(
164
+ {
165
+ id: 'scraper',
166
+ concurrency: 3,
167
+ timeout: 10000,
168
+ onTaskStart: (task, batch) =>
169
+ {
170
+ console.log(`Scraping ${task.data.url}`);
171
+ },
172
+ onTaskEnd: (task, batch) =>
173
+ {
174
+ console.log(`Completed ${task.data.url} in ${task.duration}ms`);
175
+ console.log(`Batch stats - Active: ${batch.active}, Succeeded: ${batch.succeeded}, Failed: ${batch.failed}`);
176
+ },
177
+ onEmpty: (batch) =>
178
+ {
179
+ console.log('All scraping tasks completed');
180
+ },
181
+ onRun: (batch) =>
182
+ {
183
+ console.log('Starting batch processing');
184
+ },
185
+ whileRunning: (batch) =>
186
+ {
187
+ console.log(`Processing... ${batch.active} tasks active`);
188
+ }
189
+ });
190
+
191
+ // Add multiple tasks
192
+ const urls = [
193
+ 'https://example.com',
194
+ 'https://example.org',
195
+ 'https://example.net'
196
+ ];
197
+
198
+ urls.forEach(url =>
199
+ {
200
+ scrapeQueue.Fn('add', null, { url }, async (data, resolve) =>
201
+ {
202
+ try
203
+ {
204
+ const response = await fetch(data.url);
205
+ if (!response.ok) throw new Error(`HTTP error ${response.status}`);
206
+ const html = await response.text();
207
+ // Process HTML
208
+ resolve();
209
+ }
210
+ catch (error)
211
+ {
212
+ throw new Error(`Scrape failed for ${data.url}: ${error.message}`);
213
+ }
214
+ });
215
+ });
216
+ ```
@@ -0,0 +1,21 @@
1
+ import divhunt from '#framework/load.js';
2
+
3
+ const queue = divhunt.Addon('queue', (addon) =>
4
+ {
5
+ addon.Field('id', ['string']);
6
+
7
+ addon.Field('concurrency', ['number', 10]);
8
+ addon.Field('timeout', ['number', 5000]);
9
+
10
+ addon.Field('onTaskStart', ['function']);
11
+ addon.Field('onTaskEnd', ['function']);
12
+ addon.Field('onEmpty', ['function']);
13
+ addon.Field('onRun', ['function']);
14
+ addon.Field('whileRunning', ['function']);
15
+
16
+ addon.Field('running', ['boolean', true]);
17
+
18
+ addon.Field('tasks', ['array', []]);
19
+ });
20
+
21
+ export default queue;
@@ -0,0 +1,12 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ queue.Fn('calculate.art', function(durations = [])
4
+ {
5
+ return {
6
+ 10: durations.length >= 10 ? parseFloat((durations.slice(-10).reduce((sum, t) => sum + t, 0) / 10).toFixed(2)) : null,
7
+ 100: durations.length >= 100 ? parseFloat((durations.slice(-100).reduce((sum, t) => sum + t, 0) / 100).toFixed(2)) : null,
8
+ 250: durations.length >= 250 ? parseFloat((durations.slice(-250).reduce((sum, t) => sum + t, 0) / 250).toFixed(2)) : null,
9
+ 500: durations.length >= 500 ? parseFloat((durations.slice(-500).reduce((sum, t) => sum + t, 0) / 500).toFixed(2)) : null,
10
+ 1000: durations.length >= 1000 ? parseFloat((durations.slice(-1000).reduce((sum, t) => sum + t, 0) / 1000).toFixed(2)) : null
11
+ };
12
+ });
@@ -0,0 +1,22 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ queue.Fn('calculate.rps', function(timestamps = [])
4
+ {
5
+ this.methods.calculateRateForWindow = (windowTimestamps) =>
6
+ {
7
+ if(windowTimestamps.length < 2) return 0;
8
+
9
+ const timeSpanSeconds = (windowTimestamps[windowTimestamps.length - 1] - windowTimestamps[0]) / 1000;
10
+ if(timeSpanSeconds === 0) return 0;
11
+
12
+ return parseFloat((windowTimestamps.length / timeSpanSeconds).toFixed(2));
13
+ };
14
+
15
+ return {
16
+ 10: timestamps.length >= 10 ? this.methods.calculateRateForWindow(timestamps.slice(-10)) : null,
17
+ 100: timestamps.length >= 100 ? this.methods.calculateRateForWindow(timestamps.slice(-100)) : null,
18
+ 250: timestamps.length >= 250 ? this.methods.calculateRateForWindow(timestamps.slice(-250)) : null,
19
+ 500: timestamps.length >= 500 ? this.methods.calculateRateForWindow(timestamps.slice(-500)) : null,
20
+ 1000: timestamps.length >= 1000 ? this.methods.calculateRateForWindow(timestamps.slice(-1000)) : null,
21
+ };
22
+ });
@@ -0,0 +1,6 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ queue.ItemOn('add', (item) =>
4
+ {
5
+ item.Fn('start');
6
+ })
@@ -0,0 +1,6 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ queue.ItemOn('remove', (item) =>
4
+ {
5
+ item.Set('running', false);
6
+ })
@@ -0,0 +1,15 @@
1
+ import divhunt from '#framework/load.js';
2
+ import queue from '#queue/addon.js';
3
+
4
+ queue.Fn('item.add', function(item, id, data, callback)
5
+ {
6
+ const tasks = item.Get('tasks');
7
+
8
+ if(id === null)
9
+ {
10
+ id = divhunt.GenerateUID();
11
+ }
12
+
13
+ tasks.push({id, data, callback});
14
+ item.Set('tasks', tasks);
15
+ });
@@ -0,0 +1,135 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ queue.Fn('item.start', async function(item)
4
+ {
5
+ const batch = {
6
+ active: 0,
7
+ processed: 0,
8
+ succeeded: 0,
9
+ failed: 0,
10
+ reset: function()
11
+ {
12
+ item.Get('onReset') && item.Get('onReset')(batch);
13
+
14
+ this.active = 0;
15
+ this.processed = 0;
16
+ this.succeeded = 0;
17
+ this.failed = 0;
18
+ }
19
+ };
20
+
21
+ this.methods.runTask = (task) =>
22
+ {
23
+ return new Promise((resolve, reject) =>
24
+ {
25
+ let ended = false;
26
+
27
+ const timeout = setTimeout(() =>
28
+ {
29
+ ended = true;
30
+ reject(new Error('Task timeout'));
31
+ }, item.Get('timeout'));
32
+
33
+ try
34
+ {
35
+ task.callback(task.data, () =>
36
+ {
37
+ clearTimeout(timeout);
38
+
39
+ if(!ended)
40
+ {
41
+ resolve();
42
+ }
43
+ });
44
+ }
45
+ catch(error)
46
+ {
47
+ clearTimeout(timeout);
48
+ reject(error);
49
+ }
50
+ });
51
+ };
52
+
53
+ this.methods.processNextTask = async () =>
54
+ {
55
+ if(!item.Get('tasks').length)
56
+ {
57
+ return false;
58
+ }
59
+
60
+ const task = item.Get('tasks').shift();
61
+ const now = performance.now();
62
+
63
+ batch.active++;
64
+
65
+ item.Get('onTaskStart') && item.Get('onTaskStart')(task, batch);
66
+
67
+ try
68
+ {
69
+ await this.methods.runTask(task);
70
+
71
+ batch.succeeded++;
72
+ task.success = true;
73
+ }
74
+ catch(error)
75
+ {
76
+ batch.failed++;
77
+ task.success = false;
78
+ }
79
+ finally
80
+ {
81
+ task.duration = performance.now() - now;
82
+
83
+ batch.active--;
84
+ batch.processed++;
85
+
86
+ item.Get('onTaskEnd') && item.Get('onTaskEnd')(task, batch);
87
+
88
+ if(item.Get('tasks').length && item.Get('running'))
89
+ {
90
+ this.methods.processNextTask();
91
+ }
92
+ }
93
+ };
94
+
95
+ this.methods.run = async () =>
96
+ {
97
+ batch.reset();
98
+
99
+ if(!item.Get('tasks').length)
100
+ {
101
+ item.Get('onEmpty') && item.Get('onEmpty')(batch);
102
+ return false;
103
+ }
104
+
105
+ item.Get('onRun') && item.Get('onRun')(batch);
106
+
107
+ const concurrency = Math.min(item.Get('concurrency'), item.Get('tasks').length);
108
+
109
+ for(let i = 0; i < concurrency; i++)
110
+ {
111
+ this.methods.processNextTask();
112
+ }
113
+
114
+ while(batch.active > 0)
115
+ {
116
+ item.Get('whileRunning') && item.Get('whileRunning')(batch);
117
+ await new Promise(resolve => setTimeout(resolve, 1000));
118
+ }
119
+
120
+ return item.Get('tasks').length > 0;
121
+ };
122
+
123
+ while(true)
124
+ {
125
+ if(!item.Get('running'))
126
+ {
127
+ await new Promise(resolve => setTimeout(resolve, 1000));
128
+ }
129
+ else
130
+ {
131
+ const remain = await this.methods.run();
132
+ await new Promise(resolve => setTimeout(resolve, remain ? 10 : 100));
133
+ }
134
+ }
135
+ });
@@ -0,0 +1,12 @@
1
+ import queue from '#queue/addon.js';
2
+
3
+ import '#queue/functions/calculate/art.js';
4
+ import '#queue/functions/calculate/rps.js';
5
+
6
+ import '#queue/item/functions/start.js';
7
+ import '#queue/item/functions/add.js';
8
+
9
+ import '#queue/item/catch/add.js';
10
+ import '#queue/item/catch/remove.js';
11
+
12
+ export default queue;
@@ -0,0 +1,66 @@
1
+ import queue from '#queue/load.js';
2
+
3
+ const mainQueue = queue.Item({
4
+ id: 'main',
5
+ onTaskStart: (task, batch) =>
6
+ {
7
+ },
8
+ onTaskEnd: (task, batch) =>
9
+ {
10
+ },
11
+ onRun: () =>
12
+ {
13
+ },
14
+ whileRunning: (batch) =>
15
+ {
16
+ console.log('ACTIVE :1', batch.active);
17
+ }
18
+ });
19
+
20
+ mainQueue.Fn('add', null, {}, (data, resolve) =>
21
+ {
22
+ setTimeout(() => {
23
+ resolve();
24
+ }, 1500)
25
+ });
26
+
27
+ setInterval(() =>
28
+ {
29
+ mainQueue.Fn('add', null, {}, (data, resolve) =>
30
+ {
31
+ setTimeout(() => {
32
+ resolve();
33
+ }, 1500)
34
+ });
35
+
36
+ }, 1);
37
+
38
+
39
+
40
+ // const scrapper = workers.Fn('client.gRPC', '192.168.0.101:50001');
41
+
42
+ // async function main()
43
+ // {
44
+ // try
45
+ // {
46
+ // const actions = [{
47
+ // name: 'navigate',
48
+ // properties: {
49
+ // url: 'https://mondorama.rs',
50
+ // waitUntil: 'networkidle'
51
+ // }
52
+ // }, {
53
+ // name: 'seo',
54
+ // }];
55
+
56
+ // const scrape = await scrapper.execute('scrape', {actions});
57
+
58
+ // console.log(scrape.data.context.seo);
59
+ // }
60
+ // catch(error)
61
+ // {
62
+ // console.log(error.message);
63
+ // }
64
+ // }
65
+
66
+ // main();
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "addon-queue",
3
+ "type": "module",
4
+ "imports": {
5
+ "#queue/*": "./back/*",
6
+ "#framework/*": "./lib/framework/*"
7
+ },
8
+ "main": "index.js",
9
+ "dependencies": {
10
+ "@grpc/grpc-js": "^1.13.3",
11
+ "@grpc/proto-loader": "^0.7.15"
12
+ }
13
+ }
@@ -0,0 +1,85 @@
1
+ # Servers Module
2
+
3
+ HTTP and gRPC server implementations for the application framework providing multiple communication protocols.
4
+
5
+ ## HTTP Server
6
+
7
+ REST API server with comprehensive request handling and middleware integration.
8
+
9
+ ### Features
10
+
11
+ **Request Processing:**
12
+ - Automatic data parsing from query parameters and request body
13
+ - Type conversion with hints (`:string`, `:number`, `:boolean`, `:array`, `:object`)
14
+ - URL parameter extraction from dynamic routes
15
+ - JSON body parsing for POST/PUT requests
16
+
17
+ **Response Formatting:**
18
+ - Multiple content types: JSON, HTML, CSS, JavaScript
19
+ - Automatic response wrapping with data, message, code, and duration
20
+ - Error handling with standardized error responses
21
+ - Request timing and performance metrics
22
+
23
+ **Middleware Integration:**
24
+ - Command routing through middleware system
25
+ - Request/response lifecycle hooks
26
+ - Error catching and logging
27
+ - Custom callback support for request handling
28
+
29
+ ### Configuration
30
+
31
+ ```javascript
32
+ serversHTTP.Item({
33
+ id: 'main',
34
+ port: 3000,
35
+ onStart: (server) => console.log('HTTP server started'),
36
+ onRequest: (http) => {
37
+ console.log(`${http.request.method} ${http.request.url}`);
38
+ },
39
+ onError: (error) => console.log('Server error:', error),
40
+ onComplete: (http) => {
41
+ console.log(`Request completed in ${http.time}ms`);
42
+ }
43
+ });
44
+ ```
45
+
46
+ ## gRPC Server
47
+
48
+ High-performance bidirectional streaming server using Protocol Buffers for real-time communication.
49
+
50
+ ### Features
51
+
52
+ **Streaming Communication:**
53
+ - Universal service with single stream method
54
+ - Bidirectional streaming for real-time data exchange
55
+ - JSON message serialization over Protocol Buffers
56
+ - Stream lifecycle management with connection tracking
57
+
58
+ **Command Integration:**
59
+ - Direct command execution through streaming interface
60
+ - Promise-based request/response pattern
61
+ - Automatic command resolution and timeout handling
62
+ - Error propagation and handling
63
+
64
+ **Stream Management:**
65
+ - Connection lifecycle callbacks (connect, data, close, end, error)
66
+ - Stream identification and tracking
67
+ - Request/response correlation with unique IDs
68
+ - Timeout handling for pending requests
69
+
70
+ ### Configuration
71
+
72
+ ```javascript
73
+ serversGRPC.Item({
74
+ port: 50000,
75
+ onStart: () => console.log('gRPC server started'),
76
+ onStreamConnect: (stream) => console.log('Stream connected'),
77
+ onStreamData: async (stream, payload) => {
78
+ // Handle incoming command requests
79
+ const response = await executeCommand(payload);
80
+ stream.respond(response.data, response.message, response.code);
81
+ },
82
+ onStreamClose: (stream) => console.log('Stream closed'),
83
+ onStreamError: (stream, error) => console.log('Stream error:', error)
84
+ });
85
+ ```
@@ -0,0 +1,23 @@
1
+ // © 2025 Divhunt GmbH — Licensed under the Divhunt Framework License. See LICENSE for terms.
2
+
3
+ import divhunt from '#framework/load.js';
4
+
5
+ const serversGRPC = divhunt.Addon('servers.grpc', (addon) =>
6
+ {
7
+ addon.Field('id', ['string']);
8
+ addon.Field('instance', ['object']);
9
+ addon.Field('port', ['number', 50000]);
10
+ addon.Field('host', ['string', '0.0.0.0']);
11
+
12
+ addon.Field('onError', ['function']);
13
+ addon.Field('onStart', ['function']);
14
+
15
+ addon.Field('onStreamConnect', ['function']);
16
+ addon.Field('onStreamError', ['function']);
17
+ addon.Field('onStreamEnd', ['function']);
18
+ addon.Field('onStreamData', ['function']);
19
+ addon.Field('onStreamRequest', ['function']);
20
+ addon.Field('onStreamRespond', ['function']);
21
+ });
22
+
23
+ export default serversGRPC;
@@ -0,0 +1,6 @@
1
+ import serversGRPC from '#servers/grpc/addon.js';
2
+
3
+ serversGRPC.ItemOn('add', function(item)
4
+ {
5
+ item.Fn('start');
6
+ });
@@ -0,0 +1,41 @@
1
+ // © 2025 Divhunt GmbH — Licensed under the Divhunt Framework License. See LICENSE for terms.
2
+
3
+ import serversGRPC from '#servers/grpc/addon.js';
4
+
5
+ const promises = {};
6
+
7
+ serversGRPC.Fn('item.resolve', function(item, id, payload = null, onChunk = null)
8
+ {
9
+ if(payload === null)
10
+ {
11
+ const timeout = setTimeout(() =>
12
+ {
13
+ promises[id].resolve({data: null, message: 'Request timed out after 60 seconds. No response received.', code: 500, id, time: 60000});
14
+ delete(promises[id]);
15
+ }, 60000);
16
+
17
+ return new Promise((resolve) =>
18
+ {
19
+ promises[id] = { resolve, timeout, onChunk, time: performance.now() };
20
+ });
21
+ }
22
+
23
+ if(!promises[id])
24
+ {
25
+ return;
26
+ }
27
+
28
+ if(promises[id].onChunk && !payload.end)
29
+ {
30
+ promises[id].onChunk(payload);
31
+ }
32
+
33
+ if(payload.end)
34
+ {
35
+ payload.time = (performance.now() - promises[id].time).toFixed(2);
36
+ promises[id].resolve(payload);
37
+ clearTimeout(promises[id].timeout);
38
+
39
+ delete promises[id];
40
+ }
41
+ });