@nu-art/thunderstorm-frontend 0.400.5

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 (635) hide show
  1. package/_ats/ATS_ActionProcessor/ATS_ActionProcessor.d.ts +17 -0
  2. package/_ats/ATS_ActionProcessor/ATS_ActionProcessor.js +52 -0
  3. package/_ats/ATS_ActionProcessor/ATS_ActionProcessor.scss +43 -0
  4. package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.d.ts +25 -0
  5. package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.js +88 -0
  6. package/_ats/ATS_AppConfigEditor/ATS_AppConfigEditor.scss +117 -0
  7. package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.d.ts +17 -0
  8. package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.js +45 -0
  9. package/_ats/ATS_CollectionUpgrades/ATS_CollectionUpgrades.scss +24 -0
  10. package/_ats/ATS_CrudOperations/ATS_CrudOperations.d.ts +29 -0
  11. package/_ats/ATS_CrudOperations/ATS_CrudOperations.js +93 -0
  12. package/_ats/ATS_CrudOperations/ATS_CrudOperations.scss +46 -0
  13. package/_ats/ATS_CrudOperations/ui-components.d.ts +24 -0
  14. package/_ats/ATS_CrudOperations/ui-components.js +11 -0
  15. package/_ats/ATS_EditableItem/ATS_EditableItem.d.ts +16 -0
  16. package/_ats/ATS_EditableItem/ATS_EditableItem.js +48 -0
  17. package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.d.ts +18 -0
  18. package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.js +28 -0
  19. package/_ats/ATS_IDBCacheComparison/ATS_IDBCacheComparison.scss +7 -0
  20. package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.d.ts +23 -0
  21. package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.js +66 -0
  22. package/_ats/ATS_IDBCacheComparison/Component_CollectionGrid.scss +52 -0
  23. package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.d.ts +17 -0
  24. package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.js +30 -0
  25. package/_ats/ATS_IDBCacheComparison/Dialog_IDBCacheComparison.scss +25 -0
  26. package/_ats/ATS_Printables/ATS_AbstractPrintable.d.ts +16 -0
  27. package/_ats/ATS_Printables/ATS_AbstractPrintable.js +37 -0
  28. package/_ats/ATS_Printables/ATS_Printable.d.ts +13 -0
  29. package/_ats/ATS_Printables/ATS_Printable.js +45 -0
  30. package/_ats/ATS_Printables/ATS_Printable.scss +40 -0
  31. package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.d.ts +33 -0
  32. package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.js +80 -0
  33. package/_ats/ATS_ProtoComponent/ATS_ProtoComponent.scss +19 -0
  34. package/_ats/ATS_SyncEnv/ATS_SyncEnv.d.ts +51 -0
  35. package/_ats/ATS_SyncEnv/ATS_SyncEnv.js +215 -0
  36. package/_ats/ATS_SyncEnv/ATS_SyncEnv.scss +172 -0
  37. package/_ats/ATS_Toaster/ATS_Toaster.d.ts +23 -0
  38. package/_ats/ATS_Toaster/ATS_Toaster.js +48 -0
  39. package/_ats/ATS_Toaster/ATS_Toaster.scss +2 -0
  40. package/_ats/ATS_Toaster/index.d.ts +1 -0
  41. package/_ats/ATS_Toaster/index.js +1 -0
  42. package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.d.ts +18 -0
  43. package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.js +41 -0
  44. package/_ats/dialogs/Dialog_ActionProcessorConfirmation/Dialog_ActionProcessorConfirmation.scss +71 -0
  45. package/_ats/dialogs/index.d.ts +1 -0
  46. package/_ats/dialogs/index.js +1 -0
  47. package/_ats/index.d.ts +8 -0
  48. package/_ats/index.js +8 -0
  49. package/_entity/app-config/ModuleFE_AppConfig.d.ts +24 -0
  50. package/_entity/app-config/ModuleFE_AppConfig.js +52 -0
  51. package/_entity/app-config/index.d.ts +2 -0
  52. package/_entity/app-config/index.js +2 -0
  53. package/_entity/app-config/module-pack.d.ts +1 -0
  54. package/_entity/app-config/module-pack.js +2 -0
  55. package/_entity/editable-test/ModuleFE_EditableTest.d.ts +11 -0
  56. package/_entity/editable-test/ModuleFE_EditableTest.js +12 -0
  57. package/_entity/editable-test/index.d.ts +2 -0
  58. package/_entity/editable-test/index.js +2 -0
  59. package/_entity/editable-test/module-pack.d.ts +1 -0
  60. package/_entity/editable-test/module-pack.js +2 -0
  61. package/_entity/editable-test/ui-components.d.ts +37 -0
  62. package/_entity/editable-test/ui-components.js +21 -0
  63. package/_entity.d.ts +2 -0
  64. package/_entity.js +2 -0
  65. package/_to-refactor/MenuAndButton.d.ts +1 -0
  66. package/_to-refactor/MenuAndButton.js +87 -0
  67. package/behavior-functions/index.d.ts +1 -0
  68. package/behavior-functions/index.js +1 -0
  69. package/behavior-functions/scroll-into-view.d.ts +6 -0
  70. package/behavior-functions/scroll-into-view.js +55 -0
  71. package/component-modules/ModuleFE_Dialog.d.ts +27 -0
  72. package/component-modules/ModuleFE_Dialog.js +48 -0
  73. package/component-modules/ModuleFE_Notifications.d.ts +45 -0
  74. package/component-modules/ModuleFE_Notifications.js +133 -0
  75. package/component-modules/ModuleFE_Toaster.d.ts +28 -0
  76. package/component-modules/ModuleFE_Toaster.js +97 -0
  77. package/component-modules/mouse-interactivity/ModuleFE_MouseInteractivity.d.ts +9 -0
  78. package/component-modules/mouse-interactivity/ModuleFE_MouseInteractivity.js +35 -0
  79. package/component-modules/mouse-interactivity/helper-functions.d.ts +108 -0
  80. package/component-modules/mouse-interactivity/helper-functions.js +339 -0
  81. package/component-modules/mouse-interactivity/index.d.ts +3 -0
  82. package/component-modules/mouse-interactivity/index.js +3 -0
  83. package/component-modules/mouse-interactivity/types.d.ts +37 -0
  84. package/component-modules/mouse-interactivity/types.js +2 -0
  85. package/components/ActionButton.d.ts +7 -0
  86. package/components/ActionButton.js +29 -0
  87. package/components/AwaitModules/AwaitModules.d.ts +40 -0
  88. package/components/AwaitModules/AwaitModules.js +95 -0
  89. package/components/AwaitModules/AwaitModules.scss +53 -0
  90. package/components/AwaitSync/AwaitSync.d.ts +18 -0
  91. package/components/AwaitSync/AwaitSync.js +25 -0
  92. package/components/AwaitSync/AwaitSync.scss +13 -0
  93. package/components/Button/ATS_Button.d.ts +21 -0
  94. package/components/Button/ATS_Button.js +66 -0
  95. package/components/Button/ATS_Button.scss +19 -0
  96. package/components/Button/Button.d.ts +40 -0
  97. package/components/Button/Button.js +94 -0
  98. package/components/Button/Button.scss +151 -0
  99. package/components/FrameLayout/FrameLayout.d.ts +7 -0
  100. package/components/FrameLayout/FrameLayout.js +10 -0
  101. package/components/FrameLayout/FrameLayout.scss +5 -0
  102. package/components/FrameLayout/index.d.ts +1 -0
  103. package/components/FrameLayout/index.js +1 -0
  104. package/components/GenericDropDown/GenericDropDownV3.d.ts +108 -0
  105. package/components/GenericDropDown/GenericDropDownV3.js +98 -0
  106. package/components/GenericDropDown/index.d.ts +1 -0
  107. package/components/GenericDropDown/index.js +1 -0
  108. package/components/GenericRenderer/Component_GenericRenderer.d.ts +15 -0
  109. package/components/GenericRenderer/Component_GenericRenderer.js +13 -0
  110. package/components/HeightBounder.d.ts +11 -0
  111. package/components/HeightBounder.js +25 -0
  112. package/components/Label/ATS_Label.d.ts +12 -0
  113. package/components/Label/ATS_Label.js +34 -0
  114. package/components/Label/ATS_Label.scss +24 -0
  115. package/components/Label/Label.d.ts +30 -0
  116. package/components/Label/Label.js +84 -0
  117. package/components/Label/Label.scss +89 -0
  118. package/components/Layouts/Layouts.d.ts +38 -0
  119. package/components/Layouts/Layouts.js +56 -0
  120. package/components/Layouts/_Layouts.scss +53 -0
  121. package/components/Layouts/_Layouts_.scss +69 -0
  122. package/components/Layouts/index.d.ts +1 -0
  123. package/components/Layouts/index.js +21 -0
  124. package/components/Page_ItemsEditor/Page_ItemsEditor.d.ts +66 -0
  125. package/components/Page_ItemsEditor/Page_ItemsEditor.js +134 -0
  126. package/components/Page_ItemsEditor/Page_ItemsEditor.scss +104 -0
  127. package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.d.ts +16 -0
  128. package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.js +15 -0
  129. package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/ItemEditor_DefaultFilter.scss +4 -0
  130. package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/index.d.ts +1 -0
  131. package/components/Page_ItemsEditor/defaults/ItemEditor_DefaultFilter/index.js +1 -0
  132. package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.d.ts +26 -0
  133. package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.js +68 -0
  134. package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/ItemEditor_DefaultList.scss +4 -0
  135. package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/index.d.ts +1 -0
  136. package/components/Page_ItemsEditor/defaults/ItemEditor_ListRenderer/index.js +1 -0
  137. package/components/Page_ItemsEditor/index.d.ts +1 -0
  138. package/components/Page_ItemsEditor/index.js +1 -0
  139. package/components/Page_ItemsEditor/types.d.ts +4 -0
  140. package/components/Page_ItemsEditor/types.js +1 -0
  141. package/components/RelativeLayout/RelativeLayout.d.ts +7 -0
  142. package/components/RelativeLayout/RelativeLayout.js +10 -0
  143. package/components/RelativeLayout/RelativeLayout.scss +3 -0
  144. package/components/RelativeLayout/index.d.ts +1 -0
  145. package/components/RelativeLayout/index.js +1 -0
  146. package/components/Show.d.ts +20 -0
  147. package/components/Show.js +30 -0
  148. package/components/TS_AppTools/TS_AppTools.d.ts +30 -0
  149. package/components/TS_AppTools/TS_AppTools.js +144 -0
  150. package/components/TS_AppTools/TS_AppTools.scss +193 -0
  151. package/components/TS_AppTools/TS_AppTools_Default.d.ts +7 -0
  152. package/components/TS_AppTools/TS_AppTools_Default.js +16 -0
  153. package/components/TS_AppTools/index.d.ts +2 -0
  154. package/components/TS_AppTools/index.js +22 -0
  155. package/components/TS_AppTools/types.d.ts +19 -0
  156. package/components/TS_AppTools/types.js +6 -0
  157. package/components/TS_ButtonGroup/TS_ButtonGroup.d.ts +12 -0
  158. package/components/TS_ButtonGroup/TS_ButtonGroup.js +94 -0
  159. package/components/TS_ButtonGroup/TS_ButtonGroup.scss +58 -0
  160. package/components/TS_ButtonGroup/index.d.ts +2 -0
  161. package/components/TS_ButtonGroup/index.js +2 -0
  162. package/components/TS_ButtonGroup/types.d.ts +38 -0
  163. package/components/TS_ButtonGroup/types.js +1 -0
  164. package/components/TS_ButtonLoader/TS_ButtonLoader.d.ts +5 -0
  165. package/components/TS_ButtonLoader/TS_ButtonLoader.js +8 -0
  166. package/components/TS_ButtonLoader/TS_ButtonLoader.scss +63 -0
  167. package/components/TS_ButtonLoader/index.d.ts +1 -0
  168. package/components/TS_ButtonLoader/index.js +1 -0
  169. package/components/TS_Card/TS_Card.d.ts +7 -0
  170. package/components/TS_Card/TS_Card.js +14 -0
  171. package/components/TS_Card/TS_Card.scss +7 -0
  172. package/components/TS_Card/index.d.ts +1 -0
  173. package/components/TS_Card/index.js +1 -0
  174. package/components/TS_Checkbox/ATS_CheckboxV2.d.ts +3 -0
  175. package/components/TS_Checkbox/ATS_CheckboxV2.js +30 -0
  176. package/components/TS_Checkbox/ATS_CheckboxV2.scss +4 -0
  177. package/components/TS_Checkbox/TS_Checkbox.d.ts +48 -0
  178. package/components/TS_Checkbox/TS_Checkbox.js +46 -0
  179. package/components/TS_Checkbox/TS_Checkbox.scss +62 -0
  180. package/components/TS_Checkbox/TS_CheckboxV2.d.ts +37 -0
  181. package/components/TS_Checkbox/TS_CheckboxV2.js +53 -0
  182. package/components/TS_Checkbox/TS_CheckboxV2.scss +97 -0
  183. package/components/TS_Checkbox/index.d.ts +1 -0
  184. package/components/TS_Checkbox/index.js +21 -0
  185. package/components/TS_CheckboxGroup/ATS_CheckboxGroup.d.ts +19 -0
  186. package/components/TS_CheckboxGroup/ATS_CheckboxGroup.js +89 -0
  187. package/components/TS_CheckboxGroup/ATS_CheckboxGroup.scss +6 -0
  188. package/components/TS_CheckboxGroup/TS_CheckboxGroup.d.ts +35 -0
  189. package/components/TS_CheckboxGroup/TS_CheckboxGroup.js +47 -0
  190. package/components/TS_CheckboxGroup/TS_CheckboxGroup.scss +32 -0
  191. package/components/TS_CheckboxGroup/index.d.ts +1 -0
  192. package/components/TS_CheckboxGroup/index.js +1 -0
  193. package/components/TS_CollapsableContainer/TS_CollapsableContainer.d.ts +44 -0
  194. package/components/TS_CollapsableContainer/TS_CollapsableContainer.js +80 -0
  195. package/components/TS_CollapsableContainer/TS_CollapsableContainer.scss +47 -0
  196. package/components/TS_CollapsableContainer/index.d.ts +1 -0
  197. package/components/TS_CollapsableContainer/index.js +1 -0
  198. package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.d.ts +36 -0
  199. package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.js +46 -0
  200. package/components/TS_CollapsableContainerV2/TS_CollapsableContainerV2.scss +66 -0
  201. package/components/TS_CollapsableContainerV2/ats.d.ts +3 -0
  202. package/components/TS_CollapsableContainerV2/ats.js +39 -0
  203. package/components/TS_CollapsableContainerV2/ats.scss +35 -0
  204. package/components/TS_CollapsableContainerV2/index.d.ts +2 -0
  205. package/components/TS_CollapsableContainerV2/index.js +2 -0
  206. package/components/TS_ComponentTransition/TS_ComponentTransition.d.ts +25 -0
  207. package/components/TS_ComponentTransition/TS_ComponentTransition.js +65 -0
  208. package/components/TS_ComponentTransition/index.d.ts +1 -0
  209. package/components/TS_ComponentTransition/index.js +1 -0
  210. package/components/TS_CopyToClipboard/TS_CopyToClipboard.d.ts +4 -0
  211. package/components/TS_CopyToClipboard/TS_CopyToClipboard.js +11 -0
  212. package/components/TS_CopyToClipboard/index.d.ts +1 -0
  213. package/components/TS_CopyToClipboard/index.js +21 -0
  214. package/components/TS_Dialog/TS_Dialog.d.ts +89 -0
  215. package/components/TS_Dialog/TS_Dialog.js +140 -0
  216. package/components/TS_Dialog/TS_Dialog.scss +116 -0
  217. package/components/TS_Dialog/TS_DialogOverlay.d.ts +15 -0
  218. package/components/TS_Dialog/TS_DialogOverlay.js +48 -0
  219. package/components/TS_Dialog/TS_DialogOverlay.scss +41 -0
  220. package/components/TS_Dialog/TS_SimpleDialog.d.ts +21 -0
  221. package/components/TS_Dialog/TS_SimpleDialog.js +37 -0
  222. package/components/TS_Dialog/TS_SimpleDialog.scss +5 -0
  223. package/components/TS_Dialog/TS_SimpleDialogue.d.ts +28 -0
  224. package/components/TS_Dialog/TS_SimpleDialogue.js +38 -0
  225. package/components/TS_Dialog/index.d.ts +2 -0
  226. package/components/TS_Dialog/index.js +22 -0
  227. package/components/TS_DragAndDrop/TS_DragAndDrop.d.ts +48 -0
  228. package/components/TS_DragAndDrop/TS_DragAndDrop.js +105 -0
  229. package/components/TS_DragAndDrop/TS_DragAndDrop.scss +61 -0
  230. package/components/TS_DragAndDrop/index.d.ts +1 -0
  231. package/components/TS_DragAndDrop/index.js +21 -0
  232. package/components/TS_Dropdown/TS_DropDown.d.ts +120 -0
  233. package/components/TS_Dropdown/TS_DropDown.js +332 -0
  234. package/components/TS_Dropdown/TS_DropDown.scss +134 -0
  235. package/components/TS_Dropdown/index.d.ts +1 -0
  236. package/components/TS_Dropdown/index.js +21 -0
  237. package/components/TS_EditableContent/TS_EditableContent.d.ts +19 -0
  238. package/components/TS_EditableContent/TS_EditableContent.js +32 -0
  239. package/components/TS_EditableContent/types.d.ts +4 -0
  240. package/components/TS_EditableContent/types.js +1 -0
  241. package/components/TS_EditableItemComponent/TS_EditableItemComponent.d.ts +23 -0
  242. package/components/TS_EditableItemComponent/TS_EditableItemComponent.js +47 -0
  243. package/components/TS_EditableItemController/TS_EditableItemController.d.ts +36 -0
  244. package/components/TS_EditableItemController/TS_EditableItemController.js +54 -0
  245. package/components/TS_EditableItemController/TS_EditableItemController.scss +3 -0
  246. package/components/TS_EditableItemController/index.d.ts +1 -0
  247. package/components/TS_EditableItemController/index.js +1 -0
  248. package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.d.ts +32 -0
  249. package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.js +53 -0
  250. package/components/TS_EditableItemControllerProto/TS_EditableItemControllerProto.scss +3 -0
  251. package/components/TS_EditableItemControllerProto/index.d.ts +1 -0
  252. package/components/TS_EditableItemControllerProto/index.js +1 -0
  253. package/components/TS_EditableItemStatus/TS_EditableItemStatus.d.ts +20 -0
  254. package/components/TS_EditableItemStatus/TS_EditableItemStatus.js +34 -0
  255. package/components/TS_EditableText/TS_EditableText.d.ts +57 -0
  256. package/components/TS_EditableText/TS_EditableText.js +100 -0
  257. package/components/TS_EditableText/TS_EditableText.scss +90 -0
  258. package/components/TS_EditableText/index.d.ts +1 -0
  259. package/components/TS_EditableText/index.js +1 -0
  260. package/components/TS_ErrorBoundary/TS_ErrorBoundary.d.ts +54 -0
  261. package/components/TS_ErrorBoundary/TS_ErrorBoundary.js +103 -0
  262. package/components/TS_ErrorBoundary/TS_ErrorBoundary.scss +95 -0
  263. package/components/TS_ErrorBoundary/index.d.ts +1 -0
  264. package/components/TS_ErrorBoundary/index.js +21 -0
  265. package/components/TS_Form/TS_Form.d.ts +9 -0
  266. package/components/TS_Form/TS_Form.js +11 -0
  267. package/components/TS_Form/TS_Form.scss +0 -0
  268. package/components/TS_Form/consts.d.ts +1 -0
  269. package/components/TS_Form/consts.js +1 -0
  270. package/components/TS_Form/index.d.ts +3 -0
  271. package/components/TS_Form/index.js +3 -0
  272. package/components/TS_Form/types.d.ts +13 -0
  273. package/components/TS_Form/types.js +1 -0
  274. package/components/TS_GridTableProto/TS_GridTableProto.d.ts +18 -0
  275. package/components/TS_GridTableProto/TS_GridTableProto.js +22 -0
  276. package/components/TS_GridTableProto/TS_GridTableProto.scss +4 -0
  277. package/components/TS_GridTableProto/index.d.ts +1 -0
  278. package/components/TS_GridTableProto/index.js +1 -0
  279. package/components/TS_Input/ATS_TextArea.d.ts +14 -0
  280. package/components/TS_Input/ATS_TextArea.js +24 -0
  281. package/components/TS_Input/ATS_TextArea.scss +24 -0
  282. package/components/TS_Input/TS_BaseInput.d.ts +44 -0
  283. package/components/TS_Input/TS_BaseInput.js +47 -0
  284. package/components/TS_Input/TS_Input.d.ts +24 -0
  285. package/components/TS_Input/TS_Input.js +53 -0
  286. package/components/TS_Input/TS_Input.scss +64 -0
  287. package/components/TS_Input/TS_TextArea.d.ts +14 -0
  288. package/components/TS_Input/TS_TextArea.js +72 -0
  289. package/components/TS_Input/TS_TextArea.scss +41 -0
  290. package/components/TS_Input/index.d.ts +4 -0
  291. package/components/TS_Input/index.js +25 -0
  292. package/components/TS_JSONViewer/TS_JSONViewer.d.ts +18 -0
  293. package/components/TS_JSONViewer/TS_JSONViewer.js +64 -0
  294. package/components/TS_JSONViewer/TS_JSONViewer.scss +87 -0
  295. package/components/TS_JSONViewer/types.d.ts +10 -0
  296. package/components/TS_JSONViewer/types.js +1 -0
  297. package/components/TS_Link/TS_Link.d.ts +15 -0
  298. package/components/TS_Link/TS_Link.js +36 -0
  299. package/components/TS_Link/TS_Link.scss +32 -0
  300. package/components/TS_Link/index.d.ts +1 -0
  301. package/components/TS_Link/index.js +21 -0
  302. package/components/TS_ListOrganizer/TS_ListOrganizer.d.ts +33 -0
  303. package/components/TS_ListOrganizer/TS_ListOrganizer.js +64 -0
  304. package/components/TS_ListOrganizer/TS_ListOrganizer.scss +37 -0
  305. package/components/TS_ListOrganizer/index.d.ts +1 -0
  306. package/components/TS_ListOrganizer/index.js +21 -0
  307. package/components/TS_Loader/TS_Loader.d.ts +6 -0
  308. package/components/TS_Loader/TS_Loader.js +9 -0
  309. package/components/TS_Loader/TS_Loader.scss +71 -0
  310. package/components/TS_Loader/index.d.ts +1 -0
  311. package/components/TS_Loader/index.js +1 -0
  312. package/components/TS_MemoryMonitor/TS_MemoryMonitor.d.ts +10 -0
  313. package/components/TS_MemoryMonitor/TS_MemoryMonitor.js +48 -0
  314. package/components/TS_MemoryMonitor/TS_MemoryMonitor.scss +31 -0
  315. package/components/TS_MemoryMonitor/index.d.ts +1 -0
  316. package/components/TS_MemoryMonitor/index.js +21 -0
  317. package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.d.ts +9 -0
  318. package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.js +28 -0
  319. package/components/TS_MouseInteractivity/TS_PopUp/TS_PopUp.scss +53 -0
  320. package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.d.ts +12 -0
  321. package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.js +65 -0
  322. package/components/TS_MouseInteractivity/TS_Tooltip/TS_ToolTip.scss +46 -0
  323. package/components/TS_MouseInteractivity/base/TS_MouseInteractivity.d.ts +18 -0
  324. package/components/TS_MouseInteractivity/base/TS_MouseInteractivity.js +100 -0
  325. package/components/TS_MouseInteractivity/index.d.ts +2 -0
  326. package/components/TS_MouseInteractivity/index.js +22 -0
  327. package/components/TS_MultiSelect/TS_MultiSelect.scss +34 -0
  328. package/components/TS_MultiSelect/TS_MultiSelect_V2.d.ts +36 -0
  329. package/components/TS_MultiSelect/TS_MultiSelect_V2.js +41 -0
  330. package/components/TS_MultiSelect/index.d.ts +1 -0
  331. package/components/TS_MultiSelect/index.js +21 -0
  332. package/components/TS_Notifications/TS_Notifications.d.ts +22 -0
  333. package/components/TS_Notifications/TS_Notifications.js +96 -0
  334. package/components/TS_Notifications/TS_Notifications.scss +120 -0
  335. package/components/TS_Notifications/genericNotificationAction.d.ts +8 -0
  336. package/components/TS_Notifications/genericNotificationAction.js +16 -0
  337. package/components/TS_Notifications/index.d.ts +2 -0
  338. package/components/TS_Notifications/index.js +2 -0
  339. package/components/TS_Overlay/TS_Overlay.d.ts +12 -0
  340. package/components/TS_Overlay/TS_Overlay.js +32 -0
  341. package/components/TS_Overlay/TS_Overlay.scss +41 -0
  342. package/components/TS_Overlay/index.d.ts +1 -0
  343. package/components/TS_Overlay/index.js +21 -0
  344. package/components/TS_Printable/TS_Printable.d.ts +13 -0
  345. package/components/TS_Printable/TS_Printable.js +20 -0
  346. package/components/TS_Printable/TS_Printable.scss +47 -0
  347. package/components/TS_Printable/index.d.ts +1 -0
  348. package/components/TS_Printable/index.js +21 -0
  349. package/components/TS_ProgressBar/TS_ProgressBar.d.ts +22 -0
  350. package/components/TS_ProgressBar/TS_ProgressBar.js +47 -0
  351. package/components/TS_ProgressBar/TS_ProgressBar.scss +79 -0
  352. package/components/TS_ProgressBar/index.d.ts +1 -0
  353. package/components/TS_ProgressBar/index.js +1 -0
  354. package/components/TS_PropRenderer/TS_PropRenderer.d.ts +18 -0
  355. package/components/TS_PropRenderer/TS_PropRenderer.js +36 -0
  356. package/components/TS_PropRenderer/TS_PropRenderer.scss +19 -0
  357. package/components/TS_PropRenderer/index.d.ts +1 -0
  358. package/components/TS_PropRenderer/index.js +1 -0
  359. package/components/TS_Radio/TS_Radio.d.ts +34 -0
  360. package/components/TS_Radio/TS_Radio.js +49 -0
  361. package/components/TS_Radio/TS_Radio.scss +68 -0
  362. package/components/TS_Radio/index.d.ts +1 -0
  363. package/components/TS_Radio/index.js +1 -0
  364. package/components/TS_ReadMore/TS_ReadMore.d.ts +26 -0
  365. package/components/TS_ReadMore/TS_ReadMore.js +86 -0
  366. package/components/TS_ReadMore/TS_ReadMore.scss +36 -0
  367. package/components/TS_ReadMore/index.d.ts +1 -0
  368. package/components/TS_ReadMore/index.js +1 -0
  369. package/components/TS_Slider/TS_Slider.d.ts +26 -0
  370. package/components/TS_Slider/TS_Slider.js +42 -0
  371. package/components/TS_Slider/TS_Slider.scss +68 -0
  372. package/components/TS_Slider/index.d.ts +1 -0
  373. package/components/TS_Slider/index.js +1 -0
  374. package/components/TS_Space/TS_Space.d.ts +8 -0
  375. package/components/TS_Space/TS_Space.js +8 -0
  376. package/components/TS_Space/index.d.ts +1 -0
  377. package/components/TS_Space/index.js +1 -0
  378. package/components/TS_Space/ts-space.scss +3 -0
  379. package/components/TS_Table/TS_Table.d.ts +42 -0
  380. package/components/TS_Table/TS_Table.js +74 -0
  381. package/components/TS_Table/TS_Table.scss +51 -0
  382. package/components/TS_Table/index.d.ts +1 -0
  383. package/components/TS_Table/index.js +21 -0
  384. package/components/TS_Tabs/TS_Tabs.d.ts +55 -0
  385. package/components/TS_Tabs/TS_Tabs.js +102 -0
  386. package/components/TS_Tabs/TS_Tabs.scss +103 -0
  387. package/components/TS_Tabs/index.d.ts +1 -0
  388. package/components/TS_Tabs/index.js +21 -0
  389. package/components/TS_Toaster/TS_Toast.d.ts +5 -0
  390. package/components/TS_Toaster/TS_Toast.js +9 -0
  391. package/components/TS_Toaster/TS_Toast.scss +80 -0
  392. package/components/TS_Toaster/TS_ToastOverlay.d.ts +16 -0
  393. package/components/TS_Toaster/TS_ToastOverlay.js +26 -0
  394. package/components/TS_Toaster/TS_ToastOverlay.scss +33 -0
  395. package/components/TS_Toaster/index.d.ts +2 -0
  396. package/components/TS_Toaster/index.js +22 -0
  397. package/components/TS_Toggle/ATS_Toggle.d.ts +11 -0
  398. package/components/TS_Toggle/ATS_Toggle.js +18 -0
  399. package/components/TS_Toggle/TS_Toggle.d.ts +21 -0
  400. package/components/TS_Toggle/TS_Toggle.js +26 -0
  401. package/components/TS_Toggle/TS_Toggle.scss +56 -0
  402. package/components/TS_Toggle/index.d.ts +2 -0
  403. package/components/TS_Toggle/index.js +2 -0
  404. package/components/TS_Toggler/TS_Toggler.d.ts +23 -0
  405. package/components/TS_Toggler/TS_Toggler.js +50 -0
  406. package/components/TS_Toggler/TS_Toggler.scss +83 -0
  407. package/components/TS_Toggler/index.d.ts +1 -0
  408. package/components/TS_Toggler/index.js +1 -0
  409. package/components/TS_Tree/SimpleTreeNodeRenderer.d.ts +9 -0
  410. package/components/TS_Tree/SimpleTreeNodeRenderer.js +53 -0
  411. package/components/TS_Tree/TS_Tree.d.ts +68 -0
  412. package/components/TS_Tree/TS_Tree.js +174 -0
  413. package/components/TS_Tree/TS_Tree.scss +44 -0
  414. package/components/TS_Tree/index.d.ts +3 -0
  415. package/components/TS_Tree/index.js +23 -0
  416. package/components/TS_Tree/types.d.ts +4 -0
  417. package/components/TS_Tree/types.js +21 -0
  418. package/components/TS_V2_Input/TS_InputV2.d.ts +93 -0
  419. package/components/TS_V2_Input/TS_InputV2.js +220 -0
  420. package/components/TS_V2_Input/index.d.ts +1 -0
  421. package/components/TS_V2_Input/index.js +21 -0
  422. package/components/TS_V2_TextArea/TS_BaseInput.d.ts +42 -0
  423. package/components/TS_V2_TextArea/TS_BaseInput.js +46 -0
  424. package/components/TS_V2_TextArea/TS_TextAreaV2.d.ts +78 -0
  425. package/components/TS_V2_TextArea/TS_TextAreaV2.js +178 -0
  426. package/components/TS_V2_TextArea/TS_TextAreaV2.scss +49 -0
  427. package/components/TS_V2_TextArea/index.d.ts +2 -0
  428. package/components/TS_V2_TextArea/index.js +22 -0
  429. package/components/TS_VirtualizedList/TS_VirtualizedList.d.ts +14 -0
  430. package/components/TS_VirtualizedList/TS_VirtualizedList.js +22 -0
  431. package/components/TS_VirtualizedList/index.d.ts +1 -0
  432. package/components/TS_VirtualizedList/index.js +1 -0
  433. package/components/Video/Video.d.ts +16 -0
  434. package/components/Video/Video.js +40 -0
  435. package/components/Video/VideoDialog.d.ts +20 -0
  436. package/components/Video/VideoDialog.js +44 -0
  437. package/components/Video/VideoDialog.scss +31 -0
  438. package/components/Video/types.d.ts +20 -0
  439. package/components/Video/types.js +1 -0
  440. package/components/_TS_MultiSelect/DBItemDropDownMultiSelector.d.ts +57 -0
  441. package/components/_TS_MultiSelect/DBItemDropDownMultiSelector.js +63 -0
  442. package/components/adapter/Adapter.d.ts +139 -0
  443. package/components/adapter/Adapter.js +259 -0
  444. package/components/adapter/BaseRenderer.d.ts +24 -0
  445. package/components/adapter/BaseRenderer.js +31 -0
  446. package/components/ats-group.d.ts +2 -0
  447. package/components/ats-group.js +14 -0
  448. package/components/form/Form.d.ts +24 -0
  449. package/components/form/Form.js +34 -0
  450. package/components/form/types.d.ts +23 -0
  451. package/components/form/types.js +21 -0
  452. package/components/formv3/FormV3.d.ts +25 -0
  453. package/components/formv3/FormV3.js +23 -0
  454. package/components/formv3/types.d.ts +29 -0
  455. package/components/formv3/types.js +1 -0
  456. package/components/treeicons.d.ts +10 -0
  457. package/components/treeicons.js +3 -0
  458. package/components/types.d.ts +23 -0
  459. package/components/types.js +22 -0
  460. package/components/utils.d.ts +1 -0
  461. package/components/utils.js +7 -0
  462. package/consts.d.ts +2 -0
  463. package/consts.js +2 -0
  464. package/core/AppPage.d.ts +11 -0
  465. package/core/AppPage.js +52 -0
  466. package/core/AppPageV2.d.ts +9 -0
  467. package/core/AppPageV2.js +53 -0
  468. package/core/AppWrapper.d.ts +4 -0
  469. package/core/AppWrapper.js +34 -0
  470. package/core/ComponentAsync.d.ts +16 -0
  471. package/core/ComponentAsync.js +64 -0
  472. package/core/ComponentBase.d.ts +28 -0
  473. package/core/ComponentBase.js +152 -0
  474. package/core/ComponentSync.d.ts +13 -0
  475. package/core/ComponentSync.js +49 -0
  476. package/core/Controller.d.ts +13 -0
  477. package/core/Controller.js +28 -0
  478. package/core/IndexedDB.d.ts +42 -0
  479. package/core/IndexedDB.js +259 -0
  480. package/core/IndexedDBV3.d.ts +43 -0
  481. package/core/IndexedDBV3.js +259 -0
  482. package/core/IndexedDBV4/IndexedDB_Database.d.ts +20 -0
  483. package/core/IndexedDBV4/IndexedDB_Database.js +268 -0
  484. package/core/IndexedDBV4/IndexedDB_Store.d.ts +34 -0
  485. package/core/IndexedDBV4/IndexedDB_Store.js +207 -0
  486. package/core/IndexedDBV4/ModuleFE_IDBManager.d.ts +11 -0
  487. package/core/IndexedDBV4/ModuleFE_IDBManager.js +19 -0
  488. package/core/IndexedDBV4/types.d.ts +16 -0
  489. package/core/IndexedDBV4/types.js +1 -0
  490. package/core/SimpleScriptInjector.d.ts +13 -0
  491. package/core/SimpleScriptInjector.js +42 -0
  492. package/core/Thunder.d.ts +37 -0
  493. package/core/Thunder.js +139 -0
  494. package/core/ThunderstormDefaultApp.d.ts +12 -0
  495. package/core/ThunderstormDefaultApp.js +29 -0
  496. package/core/consts.d.ts +6 -0
  497. package/core/consts.js +2 -0
  498. package/core/db-api-gen/consts.d.ts +22 -0
  499. package/core/db-api-gen/consts.js +25 -0
  500. package/core/db-api-gen/db-def.d.ts +9 -0
  501. package/core/db-api-gen/db-def.js +16 -0
  502. package/core/db-api-gen/types.d.ts +23 -0
  503. package/core/db-api-gen/types.js +3 -0
  504. package/core/proto-component/ProtoComponent.d.ts +57 -0
  505. package/core/proto-component/ProtoComponent.js +73 -0
  506. package/core/proto-component/UrlState.d.ts +42 -0
  507. package/core/proto-component/UrlState.js +59 -0
  508. package/core/proto-component/index.d.ts +2 -0
  509. package/core/proto-component/index.js +2 -0
  510. package/core/proto-component/types.d.ts +25 -0
  511. package/core/proto-component/types.js +15 -0
  512. package/core/thunder-dispatcher.d.ts +13 -0
  513. package/core/thunder-dispatcher.js +69 -0
  514. package/core/thunder-helpers.d.ts +7 -0
  515. package/core/thunder-helpers.js +171 -0
  516. package/core/thunder-modulepack.d.ts +3 -0
  517. package/core/thunder-modulepack.js +34 -0
  518. package/core/typed-api.d.ts +6 -0
  519. package/core/typed-api.js +41 -0
  520. package/core/types.d.ts +6 -0
  521. package/core/types.js +1 -0
  522. package/editable-item.d.ts +7 -0
  523. package/editable-item.js +7 -0
  524. package/index.d.ts +112 -0
  525. package/index.js +134 -0
  526. package/modules/ModuleFE_BaseTheme.d.ts +18 -0
  527. package/modules/ModuleFE_BaseTheme.js +27 -0
  528. package/modules/ModuleFE_BroadcastChannel/ModuleFE_BroadcastChannel.d.ts +20 -0
  529. package/modules/ModuleFE_BroadcastChannel/ModuleFE_BroadcastChannel.js +66 -0
  530. package/modules/ModuleFE_BrowserHistory.d.ts +46 -0
  531. package/modules/ModuleFE_BrowserHistory.js +165 -0
  532. package/modules/ModuleFE_BrowserHistoryV2.d.ts +43 -0
  533. package/modules/ModuleFE_BrowserHistoryV2.js +113 -0
  534. package/modules/ModuleFE_CSVParser.d.ts +12 -0
  535. package/modules/ModuleFE_CSVParser.js +52 -0
  536. package/modules/ModuleFE_CollectionActions.d.ts +10 -0
  537. package/modules/ModuleFE_CollectionActions.js +18 -0
  538. package/modules/ModuleFE_ConnectivityModule.d.ts +15 -0
  539. package/modules/ModuleFE_ConnectivityModule.js +31 -0
  540. package/modules/ModuleFE_ForceUpgrade.d.ts +20 -0
  541. package/modules/ModuleFE_ForceUpgrade.js +54 -0
  542. package/modules/ModuleFE_LocalStorage.d.ts +46 -0
  543. package/modules/ModuleFE_LocalStorage.js +179 -0
  544. package/modules/ModuleFE_Locale.d.ts +44 -0
  545. package/modules/ModuleFE_Locale.js +83 -0
  546. package/modules/ModuleFE_Print.d.ts +16 -0
  547. package/modules/ModuleFE_Print.js +116 -0
  548. package/modules/ModuleFE_StorageCleaner.d.ts +17 -0
  549. package/modules/ModuleFE_StorageCleaner.js +90 -0
  550. package/modules/ModuleFE_Thunderstorm.d.ts +31 -0
  551. package/modules/ModuleFE_Thunderstorm.js +122 -0
  552. package/modules/ModuleFE_Utils/ModuleFE_Utils.d.ts +29 -0
  553. package/modules/ModuleFE_Utils/ModuleFE_Utils.js +43 -0
  554. package/modules/ModuleFE_Window.d.ts +19 -0
  555. package/modules/ModuleFE_Window.js +42 -0
  556. package/modules/ModuleFE_WindowMessenger.d.ts +62 -0
  557. package/modules/ModuleFE_WindowMessenger.js +128 -0
  558. package/modules/action-processor/ModuleFE_ActionProcessor.d.ts +9 -0
  559. package/modules/action-processor/ModuleFE_ActionProcessor.js +14 -0
  560. package/modules/archiving/ModuleFE_Archiving.d.ts +8 -0
  561. package/modules/archiving/ModuleFE_Archiving.js +15 -0
  562. package/modules/clearWebsiteDataDispatcher.d.ts +5 -0
  563. package/modules/clearWebsiteDataDispatcher.js +2 -0
  564. package/modules/component-loader/ReactEntryComponentInjector.d.ts +23 -0
  565. package/modules/component-loader/ReactEntryComponentInjector.js +59 -0
  566. package/modules/component-loader/entry-component-loading-module.d.ts +7 -0
  567. package/modules/component-loader/entry-component-loading-module.js +52 -0
  568. package/modules/component-loader/index.d.ts +2 -0
  569. package/modules/component-loader/index.js +2 -0
  570. package/modules/db-api-gen/ModuleFE_BaseApi.d.ts +45 -0
  571. package/modules/db-api-gen/ModuleFE_BaseApi.js +152 -0
  572. package/modules/db-api-gen/ModuleFE_BaseDB.d.ts +146 -0
  573. package/modules/db-api-gen/ModuleFE_BaseDB.js +433 -0
  574. package/modules/db-api-gen/types.d.ts +13 -0
  575. package/modules/db-api-gen/types.js +6 -0
  576. package/modules/http/ModuleFE_XHR.d.ts +20 -0
  577. package/modules/http/ModuleFE_XHR.js +175 -0
  578. package/modules/routing/LocationChangeListener.d.ts +6 -0
  579. package/modules/routing/LocationChangeListener.js +15 -0
  580. package/modules/routing/ModuleFE_Routing.d.ts +30 -0
  581. package/modules/routing/ModuleFE_Routing.js +122 -0
  582. package/modules/routing/ModuleFE_RoutingV2.d.ts +25 -0
  583. package/modules/routing/ModuleFE_RoutingV2.js +143 -0
  584. package/modules/routing/index.d.ts +5 -0
  585. package/modules/routing/index.js +5 -0
  586. package/modules/routing/route.d.ts +22 -0
  587. package/modules/routing/route.js +83 -0
  588. package/modules/routing/types.d.ts +20 -0
  589. package/modules/routing/types.js +1 -0
  590. package/modules/sync-env/ModuleFE_SyncEnvV2.d.ts +8 -0
  591. package/modules/sync-env/ModuleFE_SyncEnvV2.js +18 -0
  592. package/modules/sync-manager/ModuleFE_SyncManager.d.ts +59 -0
  593. package/modules/sync-manager/ModuleFE_SyncManager.js +378 -0
  594. package/modules/sync-manager/ModuleFE_SyncManager_CSV.d.ts +11 -0
  595. package/modules/sync-manager/ModuleFE_SyncManager_CSV.js +121 -0
  596. package/package.json +107 -0
  597. package/server-info/Button_VersionUpdate.d.ts +15 -0
  598. package/server-info/Button_VersionUpdate.js +29 -0
  599. package/server-info/Button_VersionUpdate.scss +29 -0
  600. package/server-info/ModuleFE_ServerInfo.d.ts +26 -0
  601. package/server-info/ModuleFE_ServerInfo.js +73 -0
  602. package/server-info/index.d.ts +2 -0
  603. package/server-info/index.js +2 -0
  604. package/shared.d.ts +1 -0
  605. package/shared.js +21 -0
  606. package/styles/declaration/basic.scss +155 -0
  607. package/styles/declaration/mixins.scss +58 -0
  608. package/styles/impl/basic.scss +141 -0
  609. package/styles/impl/icons.scss +34 -0
  610. package/styles.scss +40 -0
  611. package/utils/EditableItem.d.ts +240 -0
  612. package/utils/EditableItem.js +552 -0
  613. package/utils/console/LogClient_ConsoleInterceptor.d.ts +5 -0
  614. package/utils/console/LogClient_ConsoleInterceptor.js +70 -0
  615. package/utils/perform-action/genereteToasts.d.ts +3 -0
  616. package/utils/perform-action/genereteToasts.js +14 -0
  617. package/utils/perform-action/index.d.ts +2 -0
  618. package/utils/perform-action/index.js +2 -0
  619. package/utils/perform-action/notification-dispatchers.d.ts +6 -0
  620. package/utils/perform-action/notification-dispatchers.js +2 -0
  621. package/utils/perform-action/performAction.d.ts +34 -0
  622. package/utils/perform-action/performAction.js +77 -0
  623. package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.d.ts +8 -0
  624. package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.js +11 -0
  625. package/utils/perform-action/resolve-dependency-toast/ResolveDependencyToast.scss +12 -0
  626. package/utils/tools.d.ts +31 -0
  627. package/utils/tools.js +138 -0
  628. package/utils/types.d.ts +3 -0
  629. package/utils/types.js +1 -0
  630. package/widgets/FieldEditor.d.ts +29 -0
  631. package/widgets/FieldEditor.js +47 -0
  632. package/widgets/FieldEditorClick.d.ts +33 -0
  633. package/widgets/FieldEditorClick.js +49 -0
  634. package/widgets/FieldEditorWithButtons.d.ts +32 -0
  635. package/widgets/FieldEditorWithButtons.js +42 -0
@@ -0,0 +1,378 @@
1
+ /*
2
+ * Database API Generator is a utility library for Thunderstorm.
3
+ *
4
+ * Given proper configurations it will dynamically generate APIs to your Firestore
5
+ * collections, will assert uniqueness and restrict deletion... and more
6
+ *
7
+ * Copyright (C) 2020 Adam van der Kruk aka TacB0sS
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * http://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ import { _keys, BadImplementationException, debounce, exists, filterDuplicates, flatArray, generateHex, Module, MUSTNeverHappenException, reduceToMap, removeFromArrayByIndex, removeItemFromArray, resolveContent, RuntimeModules, Second } from '@nu-art/ts-common';
22
+ import { apiWithBody } from '../../core/typed-api.js';
23
+ import { SmartSync_DeltaSync, SmartSync_FullSync, SmartSync_UpToDateSync } from '@nu-art/thunderstorm-shared/sync-manager/types';
24
+ import { ThunderDispatcher } from '../../core/thunder-dispatcher.js';
25
+ import { DataStatus, EventType_Query } from '../../core/db-api-gen/consts.js';
26
+ import { QueueV2 } from '@nu-art/ts-common/utils/queue-v2';
27
+ import { dispatch_QueryAwaitedModules } from '../../components/AwaitModules/AwaitModules.js';
28
+ import { ModuleFE_ConnectivityModule } from '../ModuleFE_ConnectivityModule.js';
29
+ import { ModuleSyncType } from '../db-api-gen/types.js';
30
+ import { ApiDef_SyncManager } from '@nu-art/thunderstorm-shared/sync-manager/apis';
31
+ import { ModuleFE_FirebaseListener } from '@nu-art/firebase-frontend/ModuleFE_FirebaseListener/ModuleFE_FirebaseListener';
32
+ export const Default_SyncManagerNodePath = '/state/ModuleBE_SyncManager/syncData'; // Hardcoded path for now per Adam's request, should be const somewhere.
33
+ const dispatch_OnPermissibleModulesUpdated = new ThunderDispatcher('__onPermissibleModulesUpdated');
34
+ export class ModuleFE_SyncManager_Class extends Module {
35
+ async __onConnectivityChange() {
36
+ if (ModuleFE_ConnectivityModule.isConnected()) {
37
+ this.logInfo(`Browser gained network connectivity- initiating smartSync.`);
38
+ await this.debounceSyncImpl();
39
+ }
40
+ else {
41
+ this.logWarningBold(`Browser lost network connectivity!`);
42
+ }
43
+ }
44
+ // ######################### Class Properties #########################
45
+ // All the modules that a user has permissions to view and with the last updated timestamp of each collection
46
+ syncedModules = [];
47
+ currentlySyncingModules = [];
48
+ syncFirebaseListener;
49
+ outOfSyncCollections = new Set();
50
+ syncing;
51
+ pendingSync;
52
+ cancelledSyncs = [];
53
+ cleanIDBOnFullSync = true;
54
+ syncManagerNodePath = Default_SyncManagerNodePath;
55
+ smartSyncApiUrl;
56
+ currentSyncData;
57
+ _smartSyncCompleted;
58
+ _onSyncDataChanged;
59
+ _debounceTimeout = 2 * Second;
60
+ _debounceMaxTimeout = 10 * Second;
61
+ syncDebouncer;
62
+ syncQueue;
63
+ constructor() {
64
+ super();
65
+ this.syncQueue = new QueueV2('Sync Queue', this.performSync)
66
+ .setParallelCount(4)
67
+ .setSorter(data => {
68
+ if (data.sync === SmartSync_UpToDateSync)
69
+ return 0;
70
+ if (data.sync === SmartSync_DeltaSync)
71
+ return 1;
72
+ //Is full sync
73
+ const priorityModuleKeys = filterDuplicates(flatArray(dispatch_QueryAwaitedModules.dispatchUI())).map(module => module.dbDef.dbKey);
74
+ return priorityModuleKeys.includes(data.dbKey) ? 2 : 3;
75
+ })
76
+ .setOnQueueEmpty(this.clearSyncingStatus);
77
+ // this.setMinLevel(LogLevel.Debug);
78
+ }
79
+ // ######################### Public Methods #########################
80
+ setShouldCleanIDBOnFullSync = (cleanIDBOnFullSync) => {
81
+ this.cleanIDBOnFullSync = cleanIDBOnFullSync;
82
+ };
83
+ getPermissibleModuleNames = () => this.syncedModules.map(moduleSyncData => moduleSyncData.dbKey);
84
+ getCurrentlySyncingModules = () => this.currentlySyncingModules.map(module => module.module);
85
+ cancelSync = () => {
86
+ this.cancelledSyncs = this.currentlySyncingModules.map(module => {
87
+ module.request?.abort();
88
+ return module.syncId;
89
+ });
90
+ this.currentlySyncingModules.splice(0, this.currentlySyncingModules.length);
91
+ this.syncing = false;
92
+ this.pendingSync = false;
93
+ this.syncQueue.cancelAll();
94
+ };
95
+ // ######################### Smart Sync #########################
96
+ getModulesToSync = () => RuntimeModules().filter((module) => module.syncType === ModuleSyncType.APISync);
97
+ getLocalSyncData = () => {
98
+ const existingDBModules = this.getModulesToSync();
99
+ return existingDBModules.map(module => {
100
+ const lastSync = module.IDB.getLastSync();
101
+ return ({
102
+ dbKey: module.dbDef.dbKey,
103
+ lastUpdated: lastSync
104
+ });
105
+ });
106
+ };
107
+ smartSync = async () => {
108
+ //If syncing currently, flag pending sync and return
109
+ if (this.syncing) {
110
+ this.pendingSync = true;
111
+ return;
112
+ }
113
+ this.syncing = true;
114
+ const request = {
115
+ modules: this.getLocalSyncData()
116
+ };
117
+ // if the module have a custom base url for this api apply it to the api def keeping the original path
118
+ const customBase = resolveContent(this.smartSyncApiUrl);
119
+ if (customBase)
120
+ ApiDef_SyncManager.v1.smartSync.fullUrl = customBase;
121
+ // implement the smart sync call internal so no one will initiate it from the anywhere in the code, except this module
122
+ try {
123
+ await apiWithBody(ApiDef_SyncManager.v1.smartSync, this.onSmartSyncCompleted)(request).executeSync();
124
+ }
125
+ catch (e) {
126
+ this.logError(e);
127
+ this.syncing = false;
128
+ this.pendingSync = false;
129
+ return;
130
+ }
131
+ // //If queue is empty
132
+ // if (!this.syncQueue.getLength())
133
+ // await this.clearSyncingStatus();
134
+ };
135
+ clearSyncingStatus = async () => {
136
+ //Un-flag currently syncing
137
+ this.syncing = false;
138
+ //If a sync is pending
139
+ if (this.pendingSync) {
140
+ delete this.pendingSync;
141
+ await this.debounceSyncImpl();
142
+ }
143
+ };
144
+ async debounceSyncImpl() {
145
+ // Everytime after the first, we'll have the debounceSync const ready, amd debounce the call.
146
+ if (exists(this.syncDebouncer))
147
+ return this.syncDebouncer();
148
+ // Since RTDB event arrives upon start listening we would like to perform a first sync immediately,
149
+ // therefore we call sync directly for the first event and create the debounce function right after for all the consecutive events
150
+ this.syncDebouncer = debounce(async () => {
151
+ if (!this.syncFirebaseListener)
152
+ return this.logWarning('Ignoring sync data state, listener is undefined');
153
+ this.logDebug(`Collections out of sync:`, this.outOfSyncCollections);
154
+ this.outOfSyncCollections.clear();
155
+ await this.smartSync();
156
+ }, this._debounceTimeout, this._debounceMaxTimeout);
157
+ this.logInfo('Performing Immediate Sync', '');
158
+ await this.smartSync();
159
+ }
160
+ // ######################### onSmartSyncCompleted #########################
161
+ /**
162
+ * Perform no sync, delta sync and full sync on modules. Intention is to get all modules to DataStatus "ContainsData".
163
+ */
164
+ onSmartSyncCompleted = async (response) => {
165
+ this.logInfo(`onSmartSyncCompleted (${response.modules.length})`, response);
166
+ this._smartSyncCompleted?.(this.currentSyncData);
167
+ const currentSyncedModulesLength = this.syncedModules.length;
168
+ this.syncedModules = response.modules.map(item => ({ dbKey: item.dbKey, lastUpdated: item.lastUpdated }));
169
+ response.modules.forEach(module => this.syncQueue.addItem(module));
170
+ //Start off the syncing
171
+ this.syncQueue.executeSync();
172
+ if (currentSyncedModulesLength !== response.modules.length)
173
+ dispatch_OnPermissibleModulesUpdated.dispatchUI();
174
+ };
175
+ // ######################### Sync operations #########################
176
+ performSync = (data) => {
177
+ const rtModule = RuntimeModules().find(rtModule => rtModule.dbDef?.dbKey === data.dbKey);
178
+ if (!rtModule)
179
+ throw new MUSTNeverHappenException(`Trying to queue a module to sync without an existing rtModule: ${data.dbKey}`);
180
+ switch (data.sync) {
181
+ case SmartSync_UpToDateSync:
182
+ return this.performNoSync(data);
183
+ case SmartSync_DeltaSync:
184
+ return this.performDeltaSync(data);
185
+ case SmartSync_FullSync:
186
+ return this.performFullSync(data);
187
+ default:
188
+ // @ts-ignore
189
+ throw new BadImplementationException(`No handling for sync key ${data.sync}`);
190
+ }
191
+ };
192
+ performNoSync = async (data) => {
193
+ const rtModule = RuntimeModules().find(rtModule => rtModule.dbDef?.dbKey === data.dbKey);
194
+ if (!rtModule)
195
+ throw new MUSTNeverHappenException(`Trying perform NoSync without an existing rtModule: ${data.dbKey}`);
196
+ //If the cache is already loaded no need to reload
197
+ if (rtModule.getDataStatus() === DataStatus.ContainsData)
198
+ return;
199
+ this.currentlySyncingModules.push({ module: rtModule, syncId: this.generateSyncRequestId() });
200
+ this.logVerbose(`Performing NoSyncOperation for module ${rtModule.getName()}`);
201
+ this.logVerbose(`No sync for: ${rtModule.dbDef.dbKey}, Already UpToDate.`);
202
+ try {
203
+ rtModule.logVerbose(`Updating Cache: ${rtModule.dbDef.dbKey}`);
204
+ await rtModule.cache.load();
205
+ rtModule.logVerbose(`Firing event (DataStatus.ContainsData): ${rtModule.dbDef.dbKey}`);
206
+ rtModule.setDataStatus(DataStatus.ContainsData);
207
+ }
208
+ catch (e) {
209
+ this.logError(e);
210
+ }
211
+ finally {
212
+ const indexOfModuleToRemove = this.currentlySyncingModules.findIndex(module => module.module.dbDef?.dbKey === data.dbKey);
213
+ removeFromArrayByIndex(this.currentlySyncingModules, indexOfModuleToRemove);
214
+ }
215
+ };
216
+ performDeltaSync = async (data) => {
217
+ const rtModule = RuntimeModules().find(rtModule => rtModule.dbDef?.dbKey === data.dbKey);
218
+ if (!rtModule)
219
+ throw new MUSTNeverHappenException(`Trying perform DeltaSync without an existing rtModule: ${data.dbKey}`);
220
+ this.logDebug(`Performing DeltaSyncOperation for module ${rtModule.getName()}`);
221
+ try {
222
+ this.currentlySyncingModules.push({ module: rtModule, syncId: this.generateSyncRequestId() });
223
+ rtModule.logVerbose(`Firing event (DataStatus.UpdatingData): ${rtModule.dbDef.dbKey}`);
224
+ rtModule.setDataStatus(DataStatus.UpdatingData);
225
+ if (data.items.toUpdate.length)
226
+ await rtModule.onEntriesUpdated(data.items.toUpdate);
227
+ if (data.items.toDelete.length)
228
+ await rtModule.onEntriesDeleted((data.items.toDelete));
229
+ rtModule.IDB.setLastUpdated(data.lastUpdated);
230
+ this.logDebug(`Delta Sync Completed: ${rtModule.dbDef.dbKey}`);
231
+ await rtModule.cache.load();
232
+ rtModule.setDataStatus(DataStatus.ContainsData);
233
+ }
234
+ catch (e) {
235
+ this.logError(e);
236
+ }
237
+ finally {
238
+ const indexOfModuleToRemove = this.currentlySyncingModules.findIndex(module => module.module.dbDef?.dbKey === data.dbKey);
239
+ removeFromArrayByIndex(this.currentlySyncingModules, indexOfModuleToRemove);
240
+ }
241
+ };
242
+ performFullSync = async (data) => {
243
+ const rtModule = RuntimeModules().find(rtModule => rtModule.dbDef?.dbKey === data.dbKey);
244
+ if (!rtModule)
245
+ throw new MUSTNeverHappenException(`Trying perform DeltaSync without an existing rtModule: ${data.dbKey}`);
246
+ this.logDebug(`Performing FullSyncOperation for module ${rtModule.getName()}`);
247
+ const syncId = this.generateSyncRequestId();
248
+ this.currentlySyncingModules.push({ module: rtModule, syncId: syncId });
249
+ try {
250
+ // if the backend have decided module collection needs a full sync, we need to clean local idb and cache
251
+ if (this.cleanIDBOnFullSync) {
252
+ rtModule.logVerbose(`Cleaning IDB: ${rtModule.dbDef.dbKey}`);
253
+ await rtModule.IDB.clear(); // Also sets the module's data status to NoData.
254
+ }
255
+ rtModule.logVerbose(`Cleaning Cache: ${rtModule.dbDef.dbKey}`);
256
+ rtModule.cache.clear();
257
+ // for full sync go fetch all db items
258
+ rtModule.logVerbose(`Syncing: ${rtModule.dbDef.dbKey}`);
259
+ let allItems;
260
+ try {
261
+ if (this.cancelledSyncs.includes(syncId)) {
262
+ this.removeFromCancelledSyncs(syncId);
263
+ return;
264
+ }
265
+ const baseHttpRequest = rtModule.v1.query({ where: {} });
266
+ const indexOfModuleToUpdate = this.currentlySyncingModules.findIndex(module => module.module.dbDef?.dbKey === data.dbKey);
267
+ this.currentlySyncingModules[indexOfModuleToUpdate].request = baseHttpRequest;
268
+ allItems = await baseHttpRequest.executeSync();
269
+ }
270
+ catch (e) {
271
+ if (this.cancelledSyncs.includes(syncId)) {
272
+ this.removeFromCancelledSyncs(syncId);
273
+ return;
274
+ }
275
+ throw e;
276
+ }
277
+ rtModule.logVerbose(`Updating IDB: ${rtModule.dbDef.dbKey}`);
278
+ if (this.cancelledSyncs.includes(syncId)) {
279
+ this.removeFromCancelledSyncs(syncId);
280
+ return;
281
+ }
282
+ await rtModule.IDB.syncIndexDb(allItems);
283
+ rtModule.IDB.setLastUpdated(data.lastUpdated);
284
+ rtModule.logVerbose(`Updating Cache: ${rtModule.dbDef.dbKey}`);
285
+ rtModule.logVerbose(`allItems length ${allItems.length}`);
286
+ await rtModule.cache.load();
287
+ rtModule.logVerbose(`IDB items length ${(await rtModule.IDB.query()).length}`);
288
+ rtModule.logVerbose(`cache items length ${rtModule.cache.all().length}`);
289
+ rtModule.logVerbose(`Firing event (DataStatus.ContainsData): ${rtModule.dbDef.dbKey}`);
290
+ rtModule.setDataStatus(DataStatus.ContainsData);
291
+ rtModule.logVerbose(`Firing event (EventType_Query): ${rtModule.dbDef.dbKey}`);
292
+ this.logDebug(`Full Sync Completed: ${rtModule.dbDef.dbKey}`);
293
+ if (allItems.length === 0)
294
+ return;
295
+ rtModule.dispatchMulti(EventType_Query, allItems);
296
+ }
297
+ catch (e) {
298
+ this.logError(`Error while syncing collection '${rtModule.dbDef.dbKey}'`, e);
299
+ throw e;
300
+ }
301
+ finally {
302
+ const indexOfModuleToRemove = this.currentlySyncingModules.findIndex(module => module.module.dbDef?.dbKey === data.dbKey);
303
+ removeFromArrayByIndex(this.currentlySyncingModules, indexOfModuleToRemove);
304
+ }
305
+ };
306
+ generateSyncRequestId = () => {
307
+ return generateHex(12);
308
+ };
309
+ removeFromCancelledSyncs = (syncId) => {
310
+ if (!syncId) {
311
+ this.logError(`ID ${syncId} doesn't exist in cancelledSyncs, redundant attempt to remove it.`);
312
+ return;
313
+ }
314
+ removeItemFromArray(this.cancelledSyncs, syncId);
315
+ };
316
+ // ######################### Listening #########################
317
+ startListening() {
318
+ const nodePath = resolveContent(this.syncManagerNodePath);
319
+ if (this.syncFirebaseListener) {
320
+ this.logWarning(`Trying to start listening on --- ${nodePath} --- but the listener already exists.`);
321
+ return;
322
+ }
323
+ this.syncFirebaseListener = ModuleFE_FirebaseListener
324
+ .createListener(nodePath)
325
+ .startListening(this.onSyncDataChanged);
326
+ }
327
+ stopListening() {
328
+ this.logDebug(`Stop listening on ${resolveContent(this.syncManagerNodePath)}`);
329
+ this.syncFirebaseListener?.stopListening();
330
+ this.syncFirebaseListener = undefined;
331
+ delete this.syncDebouncer;
332
+ }
333
+ onSyncDataChanged = async (snapshot) => {
334
+ this.logDebug('Received firebase state data');
335
+ // remoteSyncData is the data we received from the firebase listener, that just detected a change.
336
+ const rtdbSyncData = snapshot.val();
337
+ // if exists trigger the external callback
338
+ this._onSyncDataChanged?.(rtdbSyncData);
339
+ if (!rtdbSyncData)
340
+ return await this.debounceSyncImpl();
341
+ this.currentSyncData = rtdbSyncData;
342
+ // localSyncData is the data we just collected from the IDB regarding all existing modules.
343
+ const localSyncData = reduceToMap(this.getLocalSyncData(), data => data.dbKey, data => ({ lastUpdated: data.lastUpdated }));
344
+ _keys(rtdbSyncData).forEach((dbKey) => {
345
+ // this Should be taken care of by the below condition because both local and remote will return last updated 0
346
+ // if (!exists(this.remoteSyncData[dbKey]))
347
+ // return;
348
+ if (!localSyncData[dbKey])
349
+ return;
350
+ if (rtdbSyncData[dbKey].lastUpdated <= localSyncData[dbKey].lastUpdated)
351
+ return;
352
+ this.outOfSyncCollections.add(dbKey);
353
+ });
354
+ //todo This fixed the issue when we received delta sync and not up-to-date, see if this code can go
355
+ // // If there are no changes, just set all modules' data status to ContainsData
356
+ // if (this.outOfSyncCollections.size === 0) {
357
+ // // on sync completed
358
+ // const allModulesAreUpToDate: NoNeedToSyncModule[] = (_keys(localSyncData) as string[]).map(dbKey =>
359
+ // ({
360
+ // dbKey: dbKey,
361
+ // lastUpdated: localSyncData[dbKey]?.lastUpdated ?? 0,
362
+ // sync: SmartSync_UpToDateSync
363
+ // }));
364
+ // const setAllModulesAsContainData: Response_SmartSync = {modules: allModulesAreUpToDate};
365
+ // await this.onSmartSyncCompleted(setAllModulesAsContainData);
366
+ // }
367
+ // If there are changes, call sync
368
+ return await this.debounceSyncImpl();
369
+ };
370
+ // ######################### setNodeContext #########################
371
+ setNodeContext = (nodeContextResolver) => this.syncManagerNodePath = nodeContextResolver;
372
+ setSmartSyncUrl = (baseUrlResolver) => this.smartSyncApiUrl = baseUrlResolver;
373
+ setOnSyncCompleted = (smartSyncCompleted) => this._smartSyncCompleted = smartSyncCompleted;
374
+ setOnSyncDataChanged = (onSyncDataChanged) => this._onSyncDataChanged = onSyncDataChanged;
375
+ setDebounceTimeout = (debounceTimeout) => this._debounceTimeout = debounceTimeout;
376
+ setDebounceMaxTimeout = (debounceTimeout) => this._debounceMaxTimeout = debounceTimeout;
377
+ }
378
+ export const ModuleFE_SyncManager = new ModuleFE_SyncManager_Class();
@@ -0,0 +1,11 @@
1
+ import { Module } from '@nu-art/ts-common';
2
+ import { Readable } from 'stream';
3
+ import { PapaparseConfig } from '../ModuleFE_CSVParser.js';
4
+ export declare class ModuleFE_SyncManager_CSV_Class extends Module {
5
+ constructor();
6
+ private getModulesToSync;
7
+ syncFromCSVUrl: (url: string, config?: PapaparseConfig) => Promise<void>;
8
+ readyAllModules: () => Promise<void>;
9
+ syncFromBackupStream: (stream: Readable) => Promise<void>;
10
+ }
11
+ export declare const ModuleFE_SyncManager_CSV: ModuleFE_SyncManager_CSV_Class;
@@ -0,0 +1,121 @@
1
+ import { _keys, arrayToMap, mergeObject, Module, RuntimeModules } from '@nu-art/ts-common';
2
+ import { Writable } from 'stream';
3
+ import { DataStatus } from '../../core/db-api-gen/consts.js';
4
+ import { ModuleFE_CSVParser } from '../ModuleFE_CSVParser.js';
5
+ import { ModuleSyncType } from '../db-api-gen/types.js';
6
+ import { Thunder } from '../../core/Thunder.js';
7
+ import { HeaderKey_ContentType } from '../../shared.js';
8
+ export class ModuleFE_SyncManager_CSV_Class extends Module {
9
+ constructor() {
10
+ super();
11
+ }
12
+ getModulesToSync = () => RuntimeModules().filter((module) => module.syncType === ModuleSyncType.CSVSync);
13
+ syncFromCSVUrl = async (url, config) => {
14
+ const modules = arrayToMap(this.getModulesToSync(), i => i.dbDef.dbKey);
15
+ const start = performance.now();
16
+ const itemsToSync = [];
17
+ const errors = [];
18
+ await new Promise(resolve => {
19
+ const isEmulator = Thunder.getInstance().getConfig().label?.toLowerCase() === 'local';
20
+ const downloadRequestHeaders = isEmulator ? undefined : { [HeaderKey_ContentType]: 'text/csv' };
21
+ const finalConfig = config ? mergeObject({ downloadRequestHeaders }, config) : { downloadRequestHeaders };
22
+ ModuleFE_CSVParser.fromURL(url, {
23
+ transform: (value, field) => field === 'document' ? JSON.parse(value) : value,
24
+ step: async (results) => {
25
+ if (results.errors?.length)
26
+ return errors.push(...results.errors);
27
+ const item = results.data;
28
+ const module = modules[item.dbKey];
29
+ if (!module)
30
+ return;
31
+ itemsToSync.push(item);
32
+ },
33
+ complete: async () => {
34
+ for (const moduleKey of _keys(modules)) {
35
+ const items = itemsToSync.filter(item => item.dbKey === moduleKey);
36
+ const module = modules[moduleKey];
37
+ // Get all docs to upsert
38
+ const documents = items.map(i => i.document);
39
+ // Run upgrade processors on them from the module
40
+ await module.upgradeInstances(documents);
41
+ // Upsert items to the idb
42
+ await module.IDB.syncIndexDb(documents);
43
+ await module.cache.load();
44
+ module.setDataStatus(DataStatus.ContainsData);
45
+ }
46
+ const end = performance.now();
47
+ this.logInfo(`sync took ${((end - start) / 1000).toFixed(3)} seconds`);
48
+ if (errors.length)
49
+ this.logError('Parsed with errors', ...errors);
50
+ resolve();
51
+ },
52
+ ...finalConfig,
53
+ error: (error) => {
54
+ this.logError(`CSV Parsing failed`, error);
55
+ }
56
+ });
57
+ });
58
+ };
59
+ readyAllModules = async () => {
60
+ const modules = this.getModulesToSync();
61
+ this.logDebug('Readying modules', modules);
62
+ for (const module of modules) {
63
+ await module.cache.load();
64
+ module.setDataStatus(DataStatus.ContainsData);
65
+ }
66
+ };
67
+ syncFromBackupStream = async (stream) => {
68
+ const modules = this.getModulesToSync();
69
+ this.logInfo('Modules', modules);
70
+ const writer = new ModuleIDBWriter(modules);
71
+ await new Promise((resolve, reject) => {
72
+ stream.pipe(writer)
73
+ .on('error', err => reject(err))
74
+ .on('close', () => {
75
+ modules.forEach(module => {
76
+ module.setDataStatus(DataStatus.ContainsData);
77
+ });
78
+ resolve();
79
+ });
80
+ });
81
+ };
82
+ }
83
+ export const ModuleFE_SyncManager_CSV = new ModuleFE_SyncManager_CSV_Class();
84
+ class ModuleIDBWriter extends Writable {
85
+ modules;
86
+ moduleNameMap;
87
+ paginationSize;
88
+ itemsToUpsert = [];
89
+ constructor(modules, paginationSize = 1000) {
90
+ super();
91
+ this.modules = modules;
92
+ this.paginationSize = paginationSize;
93
+ this.moduleNameMap = modules.reduce((acc, curr) => {
94
+ acc[curr.dbDef.backend.name] = curr;
95
+ return acc;
96
+ }, {});
97
+ }
98
+ async _write(chunk, encoding, callback) {
99
+ console.log('WRITE');
100
+ this.itemsToUpsert.push(chunk);
101
+ await this.upsertItems();
102
+ callback();
103
+ }
104
+ async _final(callback) {
105
+ await this.upsertItems(true);
106
+ callback();
107
+ }
108
+ upsertItems = async (force = false) => {
109
+ const itemCount = this.itemsToUpsert.length;
110
+ if ((itemCount < this.paginationSize) && !force)
111
+ return;
112
+ for (const item of this.itemsToUpsert) {
113
+ const module = this.moduleNameMap[item.dbKey];
114
+ if (!module)
115
+ continue;
116
+ const document = JSON.parse(item.document);
117
+ await module.IDB.storeWrapper.upsert(document);
118
+ }
119
+ this.itemsToUpsert = [];
120
+ };
121
+ }
package/package.json ADDED
@@ -0,0 +1,107 @@
1
+ {
2
+ "name": "@nu-art/thunderstorm-frontend",
3
+ "version": "0.400.5",
4
+ "description": "Thunderstorm Frontend",
5
+ "keywords": [
6
+ "TacB0sS",
7
+ "express",
8
+ "infra",
9
+ "nu-art",
10
+ "thunderstorm",
11
+ "typescript"
12
+ ],
13
+ "homepage": "https://github.com/nu-art-js/thunderstorm",
14
+ "bugs": {
15
+ "url": "https://github.com/nu-art-js/thunderstorm/issues"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+ssh://git@github.com:nu-art-js/thunderstorm.git"
20
+ },
21
+ "license": "Apache-2.0",
22
+ "author": "TacB0sS",
23
+ "scripts": {
24
+ "build": "tsc"
25
+ },
26
+ "contributors": [
27
+ {
28
+ "name": "TacB0sS"
29
+ },
30
+ {
31
+ "name": "Cipher",
32
+ "url": "https://www.linkedin.com/in/itay-leybovich-470b87229/"
33
+ }
34
+ ],
35
+ "publishConfig": {
36
+ "directory": "dist",
37
+ "linkDirectory": true
38
+ },
39
+ "dependencies": {
40
+ "@nu-art/thunderstorm-shared": "0.400.5",
41
+ "@nu-art/firebase-frontend": "0.400.5",
42
+ "@nu-art/firebase-shared": "0.400.5",
43
+ "@nu-art/ts-common": "0.400.5",
44
+ "@nu-art/ts-styles": "0.400.5",
45
+ "abort-controller": "^3.0.0",
46
+ "axios": "^1.13.1",
47
+ "body-parser": "^1.19.0",
48
+ "browserify-zlib": "^0.2.0",
49
+ "buffer": "^6.0.3",
50
+ "compression": "^1.7.4",
51
+ "cors": "^2.8.5",
52
+ "crypto-browserify": "^3.12.0",
53
+ "csstype": "^3.0.0",
54
+ "express": "^4.18.2",
55
+ "firebase": "^11.9.0",
56
+ "firebase-admin": "13.4.0",
57
+ "firebase-functions": "6.3.2",
58
+ "history": "^4.9.0",
59
+ "moment": "^2.29.4",
60
+ "pako": "^2.1.0",
61
+ "papaparse": "^5.4.1",
62
+ "qs": "^6.6.0",
63
+ "react": "^18.0.0",
64
+ "react-dom": "^18.0.0",
65
+ "react-router-dom": "^6.9.0",
66
+ "react-virtualized-auto-sizer": "^1.0.12",
67
+ "react-window": "^1.8.8",
68
+ "request": "^2.88.0",
69
+ "stream-browserify": "^3.0.0",
70
+ "util": "^0.12.4"
71
+ },
72
+ "devDependencies": {
73
+ "@types/papaparse": "^5.3.14",
74
+ "@types/pako": "^2.0.0",
75
+ "@types/cors": "^2.8.17",
76
+ "@types/react": "^18.0.0",
77
+ "@types/react-dom": "^18.0.0",
78
+ "@types/react-router": "^5.1.20",
79
+ "@types/react-router-dom": "^5.3.3",
80
+ "@types/compression": "^1.7.0",
81
+ "@types/express": "^4.17.17",
82
+ "@types/history": "^4.7.2",
83
+ "@types/request": "^2.48.1",
84
+ "@types/chrome": "^0.0.202",
85
+ "@types/react-window": "^1.8.5",
86
+ "@types/react-virtualized-auto-sizer": "^1.0.1"
87
+ },
88
+ "unitConfig": {
89
+ "type": "typescript-lib"
90
+ },
91
+ "type": "module",
92
+ "exports": {
93
+ ".": {
94
+ "types": "./index.d.ts",
95
+ "import": "./index.js"
96
+ },
97
+ "./editable-item": {
98
+ "types": "./editable-item.d.ts",
99
+ "import": "./editable-item.js"
100
+ },
101
+ "./*": {
102
+ "types": "./*.d.ts",
103
+ "import": "./*.js"
104
+ },
105
+ "./styles": "./styles.scss"
106
+ }
107
+ }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ComponentSync } from '../core/ComponentSync.js';
3
+ import { OnServerInfoUpdatedListener } from './ModuleFE_ServerInfo.js';
4
+ import './Button_VersionUpdate.scss';
5
+ export type Props = {
6
+ updateVersion?: () => void;
7
+ buttonContent?: React.JSX.Element;
8
+ };
9
+ export declare class Button_VersionUpdate extends ComponentSync<Props> implements OnServerInfoUpdatedListener {
10
+ __onServerInfoUpdated: () => void;
11
+ protected updateVersion: () => Promise<void>;
12
+ protected getLatestVersion(): string;
13
+ protected getButtonToRender(): import("react/jsx-runtime").JSX.Element;
14
+ render(): React.JSX.Element;
15
+ }
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { ComponentSync } from '../core/ComponentSync.js';
3
+ import { ModuleFE_ServerInfo } from './ModuleFE_ServerInfo.js';
4
+ import './Button_VersionUpdate.scss';
5
+ export class Button_VersionUpdate extends ComponentSync {
6
+ __onServerInfoUpdated = () => {
7
+ this.forceUpdate();
8
+ };
9
+ updateVersion = async () => {
10
+ if (this.props.updateVersion) {
11
+ this.props.updateVersion();
12
+ return;
13
+ }
14
+ ModuleFE_ServerInfo.Update.updateAndRefreshPage();
15
+ };
16
+ getLatestVersion() {
17
+ return ModuleFE_ServerInfo.Version.getLatestVersion();
18
+ }
19
+ getButtonToRender() {
20
+ const ButtonContent = this.props.buttonContent ? this.props.buttonContent : `Version ${this.getLatestVersion()} available. Click to update`;
21
+ return _jsx("div", { className: 'version-update-message', onClick: () => this.updateVersion(), children: ButtonContent });
22
+ }
23
+ render() {
24
+ const shouldUpdateVersion = ModuleFE_ServerInfo.Version.shouldUpdateVersion();
25
+ if (!shouldUpdateVersion)
26
+ return _jsx(_Fragment, {});
27
+ return this.getButtonToRender();
28
+ }
29
+ }