@prestizni-software/server-dem 0.7.4 → 0.7.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 (517) hide show
  1. package/AutoUpdateClientManagerClass.d.ts +141 -0
  2. package/AutoUpdateClientManagerClass.js +656 -0
  3. package/AutoUpdateClientManagerClass.js.map +1 -0
  4. package/AutoUpdateManagerClass.d.ts +102 -0
  5. package/AutoUpdateManagerClass.js +117 -0
  6. package/AutoUpdateManagerClass.js.map +1 -0
  7. package/AutoUpdateServerManagerClass.d.ts +208 -0
  8. package/AutoUpdateServerManagerClass.js +913 -0
  9. package/AutoUpdateServerManagerClass.js.map +1 -0
  10. package/AutoUpdatedClientObjectClass.d.ts +215 -0
  11. package/AutoUpdatedClientObjectClass.js +911 -0
  12. package/AutoUpdatedClientObjectClass.js.map +1 -0
  13. package/AutoUpdatedServerObjectClass.d.ts +134 -0
  14. package/AutoUpdatedServerObjectClass.js +346 -0
  15. package/AutoUpdatedServerObjectClass.js.map +1 -0
  16. package/ClientTypes.d.ts +15 -0
  17. package/ClientTypes.js +52 -0
  18. package/ClientTypes.js.map +1 -0
  19. package/CommonTypes.d.ts +259 -0
  20. package/CommonTypes.js +233 -0
  21. package/CommonTypes.js.map +1 -0
  22. package/CommonTypes_server.d.ts +1 -0
  23. package/CommonTypes_server.js +2 -0
  24. package/CommonTypes_server.js.map +1 -0
  25. package/{dist/DEMErrors.js.map → DEMErrors.js.map} +1 -1
  26. package/ServerTypes.d.ts +16 -0
  27. package/ServerTypes.js +60 -0
  28. package/ServerTypes.js.map +1 -0
  29. package/client.d.ts +6 -0
  30. package/client.js +7 -0
  31. package/client.js.map +1 -0
  32. package/coverage/lcov-report/block-navigation.js +71 -0
  33. package/coverage/lcov-report/block-navigation.js.map +1 -0
  34. package/coverage/lcov-report/prettify.js +478 -0
  35. package/coverage/lcov-report/prettify.js.map +1 -0
  36. package/coverage/lcov-report/sorter.js +177 -0
  37. package/coverage/lcov-report/sorter.js.map +1 -0
  38. package/dist/AutoUpdateClientManagerClass.d.ts +20 -0
  39. package/dist/AutoUpdateClientManagerClass.js +283 -0
  40. package/dist/AutoUpdateClientManagerClass.js.map +1 -0
  41. package/dist/AutoUpdateManagerClass.d.ts +17 -96
  42. package/dist/AutoUpdateManagerClass.js +15 -73
  43. package/dist/AutoUpdateManagerClass.js.map +1 -1
  44. package/dist/AutoUpdateServerManagerClass.d.ts +18 -207
  45. package/dist/AutoUpdateServerManagerClass.js +198 -680
  46. package/dist/AutoUpdateServerManagerClass.js.map +1 -1
  47. package/dist/AutoUpdatedClientObjectClass.d.ts +63 -206
  48. package/dist/AutoUpdatedClientObjectClass.js +660 -707
  49. package/dist/AutoUpdatedClientObjectClass.js.map +1 -1
  50. package/dist/AutoUpdatedServerObjectClass.d.ts +13 -126
  51. package/dist/AutoUpdatedServerObjectClass.js +92 -315
  52. package/dist/AutoUpdatedServerObjectClass.js.map +1 -1
  53. package/dist/ClientTypes.d.ts +13 -0
  54. package/dist/ClientTypes.js +70 -0
  55. package/dist/ClientTypes.js.map +1 -0
  56. package/dist/CommonTypes.d.ts +3 -266
  57. package/dist/CommonTypes.js +4 -234
  58. package/dist/CommonTypes.js.map +1 -1
  59. package/dist/CommonTypes_server.d.ts +1 -1
  60. package/dist/CommonTypes_server.js +2 -1
  61. package/dist/CommonTypes_server.js.map +1 -1
  62. package/dist/ServerTypes.d.ts +13 -0
  63. package/dist/ServerTypes.js +78 -0
  64. package/dist/ServerTypes.js.map +1 -0
  65. package/dist/TestTypes.d.ts +1 -0
  66. package/dist/TestTypes.js +7 -0
  67. package/dist/TestTypes.js.map +1 -0
  68. package/dist/client.d.ts +1 -0
  69. package/dist/client.js +12 -0
  70. package/dist/client.js.map +1 -0
  71. package/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
  72. package/dist/coverage/lcov-report/block-navigation.js +71 -0
  73. package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  74. package/dist/coverage/lcov-report/prettify.d.ts +0 -0
  75. package/dist/coverage/lcov-report/prettify.js +736 -0
  76. package/dist/coverage/lcov-report/prettify.js.map +1 -0
  77. package/dist/coverage/lcov-report/sorter.d.ts +1 -0
  78. package/dist/coverage/lcov-report/sorter.js +177 -0
  79. package/dist/coverage/lcov-report/sorter.js.map +1 -0
  80. package/dist/dist/AutoUpdateClientManagerClass.d.ts +19 -0
  81. package/dist/dist/AutoUpdateClientManagerClass.js +284 -0
  82. package/dist/dist/AutoUpdateClientManagerClass.js.map +1 -0
  83. package/dist/dist/AutoUpdateManagerClass.d.ts +23 -0
  84. package/dist/dist/AutoUpdateManagerClass.js +60 -0
  85. package/dist/dist/AutoUpdateManagerClass.js.map +1 -0
  86. package/dist/dist/AutoUpdateServerManagerClass.d.ts +50 -0
  87. package/dist/dist/AutoUpdateServerManagerClass.js +413 -0
  88. package/dist/dist/AutoUpdateServerManagerClass.js.map +1 -0
  89. package/dist/dist/AutoUpdatedClientObjectClass.d.ts +72 -0
  90. package/dist/dist/AutoUpdatedClientObjectClass.js +865 -0
  91. package/dist/dist/AutoUpdatedClientObjectClass.js.map +1 -0
  92. package/dist/dist/AutoUpdatedServerObjectClass.d.ts +15 -0
  93. package/dist/dist/AutoUpdatedServerObjectClass.js +124 -0
  94. package/dist/dist/AutoUpdatedServerObjectClass.js.map +1 -0
  95. package/dist/dist/ClientTypes.d.ts +13 -0
  96. package/dist/dist/ClientTypes.js +71 -0
  97. package/dist/dist/ClientTypes.js.map +1 -0
  98. package/dist/dist/CommonTypes.d.ts +3 -0
  99. package/dist/dist/CommonTypes.js +20 -0
  100. package/dist/dist/CommonTypes.js.map +1 -0
  101. package/dist/dist/CommonTypes_server.d.ts +1 -0
  102. package/dist/dist/CommonTypes_server.js +4 -0
  103. package/dist/dist/CommonTypes_server.js.map +1 -0
  104. package/dist/dist/ServerTypes.d.ts +13 -0
  105. package/dist/dist/ServerTypes.js +79 -0
  106. package/dist/dist/ServerTypes.js.map +1 -0
  107. package/dist/dist/TestTypes.d.ts +1 -0
  108. package/dist/dist/TestTypes.js +8 -0
  109. package/dist/dist/TestTypes.js.map +1 -0
  110. package/dist/dist/client.d.ts +1 -0
  111. package/dist/dist/client.js +13 -0
  112. package/dist/dist/client.js.map +1 -0
  113. package/dist/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
  114. package/dist/dist/coverage/lcov-report/block-navigation.js +71 -0
  115. package/dist/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  116. package/dist/dist/coverage/lcov-report/prettify.d.ts +0 -0
  117. package/dist/dist/coverage/lcov-report/prettify.js +736 -0
  118. package/dist/dist/coverage/lcov-report/prettify.js.map +1 -0
  119. package/dist/dist/coverage/lcov-report/sorter.d.ts +1 -0
  120. package/dist/dist/coverage/lcov-report/sorter.js +177 -0
  121. package/dist/dist/coverage/lcov-report/sorter.js.map +1 -0
  122. package/dist/dist/dist/AutoUpdateClientManagerClass.d.ts +19 -0
  123. package/dist/dist/dist/AutoUpdateClientManagerClass.js +285 -0
  124. package/dist/dist/dist/AutoUpdateClientManagerClass.js.map +1 -0
  125. package/dist/dist/dist/AutoUpdateManagerClass.d.ts +23 -0
  126. package/dist/dist/dist/AutoUpdateManagerClass.js +61 -0
  127. package/dist/dist/dist/AutoUpdateManagerClass.js.map +1 -0
  128. package/dist/dist/dist/AutoUpdateServerManagerClass.d.ts +158 -0
  129. package/dist/dist/dist/AutoUpdateServerManagerClass.js +414 -0
  130. package/dist/dist/dist/AutoUpdateServerManagerClass.js.map +1 -0
  131. package/dist/dist/dist/AutoUpdatedClientObjectClass.d.ts +72 -0
  132. package/dist/dist/dist/AutoUpdatedClientObjectClass.js +866 -0
  133. package/dist/dist/dist/AutoUpdatedClientObjectClass.js.map +1 -0
  134. package/dist/dist/dist/AutoUpdatedServerObjectClass.d.ts +15 -0
  135. package/dist/dist/dist/AutoUpdatedServerObjectClass.js +125 -0
  136. package/dist/dist/dist/AutoUpdatedServerObjectClass.js.map +1 -0
  137. package/dist/dist/dist/ClientTypes.d.ts +13 -0
  138. package/dist/dist/dist/ClientTypes.js +72 -0
  139. package/dist/dist/dist/ClientTypes.js.map +1 -0
  140. package/dist/dist/dist/CommonTypes.d.ts +3 -0
  141. package/dist/dist/dist/CommonTypes.js +21 -0
  142. package/dist/dist/dist/CommonTypes.js.map +1 -0
  143. package/dist/dist/dist/CommonTypes_server.d.ts +1 -0
  144. package/dist/dist/dist/CommonTypes_server.js +5 -0
  145. package/dist/dist/dist/CommonTypes_server.js.map +1 -0
  146. package/dist/dist/dist/ServerTypes.d.ts +13 -0
  147. package/dist/dist/dist/ServerTypes.js +80 -0
  148. package/dist/dist/dist/ServerTypes.js.map +1 -0
  149. package/dist/dist/dist/TestTypes.d.ts +1 -0
  150. package/dist/dist/dist/TestTypes.js +9 -0
  151. package/dist/dist/dist/TestTypes.js.map +1 -0
  152. package/dist/dist/dist/client.d.ts +1 -0
  153. package/dist/dist/dist/client.js +14 -0
  154. package/dist/dist/dist/client.js.map +1 -0
  155. package/dist/dist/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
  156. package/dist/dist/dist/coverage/lcov-report/block-navigation.js +71 -0
  157. package/dist/dist/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  158. package/dist/dist/dist/coverage/lcov-report/prettify.d.ts +0 -0
  159. package/dist/dist/dist/coverage/lcov-report/prettify.js +736 -0
  160. package/dist/dist/dist/coverage/lcov-report/prettify.js.map +1 -0
  161. package/dist/dist/dist/coverage/lcov-report/sorter.d.ts +1 -0
  162. package/dist/dist/dist/coverage/lcov-report/sorter.js +177 -0
  163. package/dist/dist/dist/coverage/lcov-report/sorter.js.map +1 -0
  164. package/dist/dist/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
  165. package/dist/dist/dist/expo-test/app/(tabs)/_layout.js +27 -0
  166. package/dist/dist/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
  167. package/dist/dist/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
  168. package/dist/dist/dist/expo-test/app/(tabs)/explore.js +95 -0
  169. package/dist/dist/dist/expo-test/app/(tabs)/explore.js.map +1 -0
  170. package/dist/dist/dist/expo-test/app/(tabs)/index.d.ts +1 -0
  171. package/dist/dist/dist/expo-test/app/(tabs)/index.js +81 -0
  172. package/dist/dist/dist/expo-test/app/(tabs)/index.js.map +1 -0
  173. package/dist/dist/dist/expo-test/app/_layout.d.ts +4 -0
  174. package/dist/dist/dist/expo-test/app/_layout.js +22 -0
  175. package/dist/dist/dist/expo-test/app/_layout.js.map +1 -0
  176. package/dist/dist/dist/expo-test/app/modal.d.ts +1 -0
  177. package/dist/dist/dist/expo-test/app/modal.js +28 -0
  178. package/dist/dist/dist/expo-test/app/modal.js.map +1 -0
  179. package/dist/dist/dist/expo-test/components/external-link.d.ts +4 -0
  180. package/dist/dist/dist/expo-test/components/external-link.js +18 -0
  181. package/dist/dist/dist/expo-test/components/external-link.js.map +1 -0
  182. package/dist/dist/dist/expo-test/components/haptic-tab.d.ts +1 -0
  183. package/dist/dist/dist/expo-test/components/haptic-tab.js +15 -0
  184. package/dist/dist/dist/expo-test/components/haptic-tab.js.map +1 -0
  185. package/dist/dist/dist/expo-test/components/hello-wave.d.ts +1 -0
  186. package/dist/dist/dist/expo-test/components/hello-wave.js +19 -0
  187. package/dist/dist/dist/expo-test/components/hello-wave.js.map +1 -0
  188. package/dist/dist/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
  189. package/dist/dist/dist/expo-test/components/parallax-scroll-view.js +53 -0
  190. package/dist/dist/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
  191. package/dist/dist/dist/expo-test/components/themed-text.d.ts +7 -0
  192. package/dist/dist/dist/expo-test/components/themed-text.js +43 -0
  193. package/dist/dist/dist/expo-test/components/themed-text.js.map +1 -0
  194. package/dist/dist/dist/expo-test/components/themed-view.d.ts +6 -0
  195. package/dist/dist/dist/expo-test/components/themed-view.js +10 -0
  196. package/dist/dist/dist/expo-test/components/themed-view.js.map +1 -0
  197. package/dist/dist/dist/expo-test/components/ui/collapsible.d.ts +4 -0
  198. package/dist/dist/dist/expo-test/components/ui/collapsible.js +34 -0
  199. package/dist/dist/dist/expo-test/components/ui/collapsible.js.map +1 -0
  200. package/dist/dist/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
  201. package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
  202. package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.js +14 -0
  203. package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
  204. package/dist/dist/dist/expo-test/components/ui/icon-symbol.js +25 -0
  205. package/dist/dist/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
  206. package/dist/dist/dist/expo-test/constants/theme.d.ts +26 -0
  207. package/dist/dist/dist/expo-test/constants/theme.js +53 -0
  208. package/dist/dist/dist/expo-test/constants/theme.js.map +1 -0
  209. package/dist/dist/dist/expo-test/eslint.config.d.ts +2 -0
  210. package/dist/dist/dist/expo-test/eslint.config.js +11 -0
  211. package/dist/dist/dist/expo-test/eslint.config.js.map +1 -0
  212. package/dist/dist/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
  213. package/dist/dist/dist/expo-test/hooks/use-color-scheme.js +5 -0
  214. package/dist/dist/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
  215. package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
  216. package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.js +20 -0
  217. package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
  218. package/dist/dist/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
  219. package/dist/dist/dist/expo-test/hooks/use-theme-color.js +20 -0
  220. package/dist/dist/dist/expo-test/hooks/use-theme-color.js.map +1 -0
  221. package/dist/dist/dist/expo-test/scripts/reset-project.d.ts +2 -0
  222. package/dist/dist/dist/expo-test/scripts/reset-project.js +98 -0
  223. package/dist/dist/dist/expo-test/scripts/reset-project.js.map +1 -0
  224. package/dist/dist/dist/jest.config.d.ts +21 -0
  225. package/dist/dist/dist/jest.config.js +20 -0
  226. package/dist/dist/dist/jest.config.js.map +1 -0
  227. package/dist/dist/dist/server.d.ts +1 -0
  228. package/dist/dist/dist/server.js +16 -0
  229. package/dist/dist/dist/server.js.map +1 -0
  230. package/dist/dist/dist/socket_test.d.ts +1 -0
  231. package/dist/dist/dist/socket_test.js +24 -0
  232. package/dist/dist/dist/socket_test.js.map +1 -0
  233. package/dist/dist/dist/test.d.ts +1 -0
  234. package/dist/dist/dist/test.js +7 -0
  235. package/dist/dist/dist/test.js.map +1 -0
  236. package/dist/dist/dist/test_client.d.ts +1 -0
  237. package/dist/dist/dist/test_client.js +26 -0
  238. package/dist/dist/dist/test_client.js.map +1 -0
  239. package/dist/dist/dist/test_lib.d.ts +2 -0
  240. package/dist/dist/dist/test_lib.js +85 -0
  241. package/dist/dist/dist/test_lib.js.map +1 -0
  242. package/dist/dist/dist/test_server.d.ts +1 -0
  243. package/dist/dist/dist/test_server.js +54 -0
  244. package/dist/dist/dist/test_server.js.map +1 -0
  245. package/dist/dist/dist/tests/dem.test.d.ts +1 -0
  246. package/dist/dist/dist/tests/dem.test.js +341 -0
  247. package/dist/dist/dist/tests/dem.test.js.map +1 -0
  248. package/dist/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
  249. package/dist/dist/expo-test/app/(tabs)/_layout.js +26 -0
  250. package/dist/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
  251. package/dist/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
  252. package/dist/dist/expo-test/app/(tabs)/explore.js +94 -0
  253. package/dist/dist/expo-test/app/(tabs)/explore.js.map +1 -0
  254. package/dist/dist/expo-test/app/(tabs)/index.d.ts +1 -0
  255. package/dist/dist/expo-test/app/(tabs)/index.js +80 -0
  256. package/dist/dist/expo-test/app/(tabs)/index.js.map +1 -0
  257. package/dist/dist/expo-test/app/_layout.d.ts +4 -0
  258. package/dist/dist/expo-test/app/_layout.js +21 -0
  259. package/dist/dist/expo-test/app/_layout.js.map +1 -0
  260. package/dist/dist/expo-test/app/modal.d.ts +1 -0
  261. package/dist/dist/expo-test/app/modal.js +27 -0
  262. package/dist/dist/expo-test/app/modal.js.map +1 -0
  263. package/dist/dist/expo-test/components/external-link.d.ts +4 -0
  264. package/dist/dist/expo-test/components/external-link.js +17 -0
  265. package/dist/dist/expo-test/components/external-link.js.map +1 -0
  266. package/dist/dist/expo-test/components/haptic-tab.d.ts +1 -0
  267. package/dist/dist/expo-test/components/haptic-tab.js +14 -0
  268. package/dist/dist/expo-test/components/haptic-tab.js.map +1 -0
  269. package/dist/dist/expo-test/components/hello-wave.d.ts +1 -0
  270. package/dist/dist/expo-test/components/hello-wave.js +18 -0
  271. package/dist/dist/expo-test/components/hello-wave.js.map +1 -0
  272. package/dist/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
  273. package/dist/dist/expo-test/components/parallax-scroll-view.js +52 -0
  274. package/dist/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
  275. package/dist/dist/expo-test/components/themed-text.d.ts +7 -0
  276. package/dist/dist/expo-test/components/themed-text.js +42 -0
  277. package/dist/dist/expo-test/components/themed-text.js.map +1 -0
  278. package/dist/dist/expo-test/components/themed-view.d.ts +6 -0
  279. package/dist/dist/expo-test/components/themed-view.js +9 -0
  280. package/dist/dist/expo-test/components/themed-view.js.map +1 -0
  281. package/dist/dist/expo-test/components/ui/collapsible.d.ts +4 -0
  282. package/dist/dist/expo-test/components/ui/collapsible.js +33 -0
  283. package/dist/dist/expo-test/components/ui/collapsible.js.map +1 -0
  284. package/dist/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
  285. package/dist/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
  286. package/dist/dist/expo-test/components/ui/icon-symbol.ios.js +13 -0
  287. package/dist/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
  288. package/dist/dist/expo-test/components/ui/icon-symbol.js +24 -0
  289. package/dist/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
  290. package/dist/dist/expo-test/constants/theme.d.ts +26 -0
  291. package/dist/dist/expo-test/constants/theme.js +52 -0
  292. package/dist/dist/expo-test/constants/theme.js.map +1 -0
  293. package/dist/dist/expo-test/eslint.config.d.ts +2 -0
  294. package/dist/dist/expo-test/eslint.config.js +11 -0
  295. package/dist/dist/expo-test/eslint.config.js.map +1 -0
  296. package/dist/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
  297. package/dist/dist/expo-test/hooks/use-color-scheme.js +4 -0
  298. package/dist/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
  299. package/dist/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
  300. package/dist/dist/expo-test/hooks/use-color-scheme.web.js +19 -0
  301. package/dist/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
  302. package/dist/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
  303. package/dist/dist/expo-test/hooks/use-theme-color.js +19 -0
  304. package/dist/dist/expo-test/hooks/use-theme-color.js.map +1 -0
  305. package/dist/dist/expo-test/scripts/reset-project.d.ts +2 -0
  306. package/dist/dist/expo-test/scripts/reset-project.js +98 -0
  307. package/dist/dist/expo-test/scripts/reset-project.js.map +1 -0
  308. package/dist/dist/jest.config.d.ts +21 -0
  309. package/dist/dist/jest.config.js +19 -0
  310. package/dist/dist/jest.config.js.map +1 -0
  311. package/dist/dist/server.d.ts +1 -0
  312. package/dist/dist/server.js +15 -0
  313. package/dist/dist/server.js.map +1 -0
  314. package/dist/dist/socket_test.d.ts +1 -0
  315. package/dist/dist/socket_test.js +23 -0
  316. package/dist/dist/socket_test.js.map +1 -0
  317. package/dist/dist/test.d.ts +1 -0
  318. package/dist/dist/test.js +6 -0
  319. package/dist/dist/test.js.map +1 -0
  320. package/dist/dist/test_client.d.ts +1 -0
  321. package/dist/dist/test_client.js +25 -0
  322. package/dist/dist/test_client.js.map +1 -0
  323. package/dist/dist/test_lib.d.ts +2 -0
  324. package/dist/dist/test_lib.js +84 -0
  325. package/dist/dist/test_lib.js.map +1 -0
  326. package/dist/dist/test_server.d.ts +1 -0
  327. package/dist/dist/test_server.js +53 -0
  328. package/dist/dist/test_server.js.map +1 -0
  329. package/dist/dist/tests/dem.test.d.ts +1 -0
  330. package/dist/dist/tests/dem.test.js +340 -0
  331. package/dist/dist/tests/dem.test.js.map +1 -0
  332. package/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
  333. package/dist/expo-test/app/(tabs)/_layout.js +25 -0
  334. package/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
  335. package/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
  336. package/dist/expo-test/app/(tabs)/explore.js +93 -0
  337. package/dist/expo-test/app/(tabs)/explore.js.map +1 -0
  338. package/dist/expo-test/app/(tabs)/index.d.ts +1 -0
  339. package/dist/expo-test/app/(tabs)/index.js +79 -0
  340. package/dist/expo-test/app/(tabs)/index.js.map +1 -0
  341. package/dist/expo-test/app/_layout.d.ts +4 -0
  342. package/dist/expo-test/app/_layout.js +20 -0
  343. package/dist/expo-test/app/_layout.js.map +1 -0
  344. package/dist/expo-test/app/modal.d.ts +1 -0
  345. package/dist/expo-test/app/modal.js +26 -0
  346. package/dist/expo-test/app/modal.js.map +1 -0
  347. package/dist/expo-test/components/external-link.d.ts +4 -0
  348. package/dist/expo-test/components/external-link.js +16 -0
  349. package/dist/expo-test/components/external-link.js.map +1 -0
  350. package/dist/expo-test/components/haptic-tab.d.ts +1 -0
  351. package/dist/expo-test/components/haptic-tab.js +13 -0
  352. package/dist/expo-test/components/haptic-tab.js.map +1 -0
  353. package/dist/expo-test/components/hello-wave.d.ts +1 -0
  354. package/dist/expo-test/components/hello-wave.js +17 -0
  355. package/dist/expo-test/components/hello-wave.js.map +1 -0
  356. package/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
  357. package/dist/expo-test/components/parallax-scroll-view.js +51 -0
  358. package/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
  359. package/dist/expo-test/components/themed-text.d.ts +7 -0
  360. package/dist/expo-test/components/themed-text.js +41 -0
  361. package/dist/expo-test/components/themed-text.js.map +1 -0
  362. package/dist/expo-test/components/themed-view.d.ts +6 -0
  363. package/dist/expo-test/components/themed-view.js +8 -0
  364. package/dist/expo-test/components/themed-view.js.map +1 -0
  365. package/dist/expo-test/components/ui/collapsible.d.ts +4 -0
  366. package/dist/expo-test/components/ui/collapsible.js +32 -0
  367. package/dist/expo-test/components/ui/collapsible.js.map +1 -0
  368. package/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
  369. package/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
  370. package/dist/expo-test/components/ui/icon-symbol.ios.js +12 -0
  371. package/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
  372. package/dist/expo-test/components/ui/icon-symbol.js +23 -0
  373. package/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
  374. package/dist/expo-test/constants/theme.d.ts +26 -0
  375. package/dist/expo-test/constants/theme.js +51 -0
  376. package/dist/expo-test/constants/theme.js.map +1 -0
  377. package/dist/expo-test/eslint.config.d.ts +2 -0
  378. package/dist/expo-test/eslint.config.js +11 -0
  379. package/dist/expo-test/eslint.config.js.map +1 -0
  380. package/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
  381. package/dist/expo-test/hooks/use-color-scheme.js +3 -0
  382. package/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
  383. package/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
  384. package/dist/expo-test/hooks/use-color-scheme.web.js +18 -0
  385. package/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
  386. package/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
  387. package/dist/expo-test/hooks/use-theme-color.js +18 -0
  388. package/dist/expo-test/hooks/use-theme-color.js.map +1 -0
  389. package/dist/expo-test/scripts/reset-project.d.ts +2 -0
  390. package/dist/expo-test/scripts/reset-project.js +98 -0
  391. package/dist/expo-test/scripts/reset-project.js.map +1 -0
  392. package/dist/jest.config.d.ts +21 -0
  393. package/dist/jest.config.js +18 -0
  394. package/dist/jest.config.js.map +1 -0
  395. package/dist/server.d.ts +1 -8
  396. package/dist/server.js +13 -8
  397. package/dist/server.js.map +1 -1
  398. package/dist/socket_test.d.ts +1 -0
  399. package/dist/socket_test.js +22 -0
  400. package/dist/socket_test.js.map +1 -0
  401. package/dist/test.d.ts +1 -0
  402. package/dist/test.js +5 -0
  403. package/dist/test.js.map +1 -0
  404. package/dist/test_client.d.ts +1 -0
  405. package/dist/test_client.js +24 -0
  406. package/dist/test_client.js.map +1 -0
  407. package/dist/test_lib.d.ts +12 -0
  408. package/dist/test_lib.js +83 -0
  409. package/dist/test_lib.js.map +1 -0
  410. package/dist/test_server.d.ts +1 -0
  411. package/dist/test_server.js +52 -0
  412. package/dist/test_server.js.map +1 -0
  413. package/dist/tests/dem.test.d.ts +1 -0
  414. package/dist/tests/dem.test.js +339 -0
  415. package/dist/tests/dem.test.js.map +1 -0
  416. package/expo-test/app/(tabs)/_layout.d.ts +2 -0
  417. package/expo-test/app/(tabs)/_layout.js +24 -0
  418. package/expo-test/app/(tabs)/_layout.js.map +1 -0
  419. package/expo-test/app/(tabs)/explore.d.ts +1 -0
  420. package/expo-test/app/(tabs)/explore.js +92 -0
  421. package/expo-test/app/(tabs)/explore.js.map +1 -0
  422. package/expo-test/app/(tabs)/index.d.ts +1 -0
  423. package/expo-test/app/(tabs)/index.js +78 -0
  424. package/expo-test/app/(tabs)/index.js.map +1 -0
  425. package/expo-test/app/_layout.d.ts +5 -0
  426. package/expo-test/app/_layout.js +19 -0
  427. package/expo-test/app/_layout.js.map +1 -0
  428. package/expo-test/app/modal.d.ts +1 -0
  429. package/expo-test/app/modal.js +25 -0
  430. package/expo-test/app/modal.js.map +1 -0
  431. package/expo-test/components/external-link.d.ts +7 -0
  432. package/expo-test/components/external-link.js +15 -0
  433. package/expo-test/components/external-link.js.map +1 -0
  434. package/expo-test/components/haptic-tab.d.ts +2 -0
  435. package/expo-test/components/haptic-tab.js +12 -0
  436. package/expo-test/components/haptic-tab.js.map +1 -0
  437. package/expo-test/components/hello-wave.d.ts +1 -0
  438. package/expo-test/components/hello-wave.js +16 -0
  439. package/expo-test/components/hello-wave.js.map +1 -0
  440. package/expo-test/components/parallax-scroll-view.d.ts +10 -0
  441. package/expo-test/components/parallax-scroll-view.js +50 -0
  442. package/expo-test/components/parallax-scroll-view.js.map +1 -0
  443. package/expo-test/components/themed-text.d.ts +7 -0
  444. package/expo-test/components/themed-text.js +40 -0
  445. package/expo-test/components/themed-text.js.map +1 -0
  446. package/expo-test/components/themed-view.d.ts +6 -0
  447. package/expo-test/components/themed-view.js +7 -0
  448. package/expo-test/components/themed-view.js.map +1 -0
  449. package/expo-test/components/ui/collapsible.d.ts +4 -0
  450. package/expo-test/components/ui/collapsible.js +31 -0
  451. package/expo-test/components/ui/collapsible.js.map +1 -0
  452. package/expo-test/components/ui/icon-symbol.d.ts +25 -0
  453. package/expo-test/components/ui/icon-symbol.ios.d.ts +9 -0
  454. package/expo-test/components/ui/icon-symbol.ios.js +11 -0
  455. package/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
  456. package/expo-test/components/ui/icon-symbol.js +22 -0
  457. package/expo-test/components/ui/icon-symbol.js.map +1 -0
  458. package/expo-test/constants/theme.d.ts +32 -0
  459. package/expo-test/constants/theme.js +50 -0
  460. package/expo-test/constants/theme.js.map +1 -0
  461. package/expo-test/eslint.config.d.ts +2 -0
  462. package/expo-test/eslint.config.js +11 -0
  463. package/expo-test/eslint.config.js.map +1 -0
  464. package/expo-test/hooks/use-color-scheme.d.ts +1 -0
  465. package/expo-test/hooks/use-color-scheme.js +2 -0
  466. package/expo-test/hooks/use-color-scheme.js.map +1 -0
  467. package/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
  468. package/expo-test/hooks/use-color-scheme.web.js +17 -0
  469. package/expo-test/hooks/use-color-scheme.web.js.map +1 -0
  470. package/expo-test/hooks/use-theme-color.d.ts +9 -0
  471. package/expo-test/hooks/use-theme-color.js +17 -0
  472. package/expo-test/hooks/use-theme-color.js.map +1 -0
  473. package/expo-test/scripts/reset-project.d.ts +2 -0
  474. package/expo-test/scripts/reset-project.js +98 -0
  475. package/expo-test/scripts/reset-project.js.map +1 -0
  476. package/index.d.ts +4 -0
  477. package/index.js +5 -0
  478. package/index.js.map +1 -0
  479. package/jest.config.d.ts +3 -0
  480. package/jest.config.js +17 -0
  481. package/jest.config.js.map +1 -0
  482. package/package.json +23 -42
  483. package/server.d.ts +8 -0
  484. package/server.js +9 -0
  485. package/server.js.map +1 -0
  486. package/sync/ServerChangeTracker.js.map +1 -0
  487. package/version.d.ts +21 -0
  488. package/version.js +22 -0
  489. package/version.js.map +1 -0
  490. package/README.md +0 -18
  491. package/dist/sync/ServerChangeTracker.js.map +0 -1
  492. package/dist/tsconfig.tsbuildinfo +0 -1
  493. /package/{dist/DEMErrors.d.ts → DEMErrors.d.ts} +0 -0
  494. /package/{dist/DEMErrors.js → DEMErrors.js} +0 -0
  495. /package/{dist/sync → sync}/ClientStateReconciler.d.ts +0 -0
  496. /package/{dist/sync → sync}/ClientStateReconciler.js +0 -0
  497. /package/{dist/sync → sync}/ClientStateReconciler.js.map +0 -0
  498. /package/{dist/sync → sync}/ServerChangeTracker.d.ts +0 -0
  499. /package/{dist/sync → sync}/ServerChangeTracker.js +0 -0
  500. /package/{dist/sync → sync}/index.d.ts +0 -0
  501. /package/{dist/sync → sync}/index.js +0 -0
  502. /package/{dist/sync → sync}/index.js.map +0 -0
  503. /package/{dist/sync → sync}/storage/IClientStorageAdapter.d.ts +0 -0
  504. /package/{dist/sync → sync}/storage/IClientStorageAdapter.js +0 -0
  505. /package/{dist/sync → sync}/storage/IClientStorageAdapter.js.map +0 -0
  506. /package/{dist/sync → sync}/storage/IndexedDbStorageAdapter.d.ts +0 -0
  507. /package/{dist/sync → sync}/storage/IndexedDbStorageAdapter.js +0 -0
  508. /package/{dist/sync → sync}/storage/IndexedDbStorageAdapter.js.map +0 -0
  509. /package/{dist/sync → sync}/storage/LocalStorageAdapter.d.ts +0 -0
  510. /package/{dist/sync → sync}/storage/LocalStorageAdapter.js +0 -0
  511. /package/{dist/sync → sync}/storage/LocalStorageAdapter.js.map +0 -0
  512. /package/{dist/sync → sync}/storage/MemoryStorageAdapter.d.ts +0 -0
  513. /package/{dist/sync → sync}/storage/MemoryStorageAdapter.js +0 -0
  514. /package/{dist/sync → sync}/storage/MemoryStorageAdapter.js.map +0 -0
  515. /package/{dist/sync → sync}/types.d.ts +0 -0
  516. /package/{dist/sync → sync}/types.js +0 -0
  517. /package/{dist/sync → sync}/types.js.map +0 -0
@@ -0,0 +1,865 @@
1
+ import "reflect-metadata";
2
+ import _ from "lodash";
3
+ import { ObjectId } from "bson";
4
+ import { stringSimilarity } from "string-similarity-js";
5
+ export async function createAutoUpdatedClass(classParam, className, socket, data, loggers, parentManager, emitter, callback) {
6
+ if (typeof data !== "string" && data._id) {
7
+ processIsRefProperties(data, classParam.prototype, undefined, [], loggers);
8
+ }
9
+ const props = Reflect.getMetadata("props", classParam.prototype);
10
+ const instance = new AutoUpdatedClientObject(socket, data, loggers, props, className, classParam, parentManager, callback, emitter, false);
11
+ return instance;
12
+ }
13
+ export class AutoUpdatedClientObject {
14
+ socket;
15
+ data;
16
+ isServer = false;
17
+ loggers = {
18
+ info: () => { },
19
+ debug: () => { },
20
+ error: () => { },
21
+ warn: () => { },
22
+ };
23
+ isLoading = true;
24
+ emitter;
25
+ properties;
26
+ className;
27
+ parentManager;
28
+ isLoadingReferences = true;
29
+ classProp;
30
+ EmitterID = new ObjectId().toHexString();
31
+ toChangeOnParents = [];
32
+ callbacks;
33
+ referencesLoaded = false;
34
+ loadShit = async () => {
35
+ if (this.isLoaded) {
36
+ try {
37
+ await this.loadForceReferences();
38
+ for (const thing of this.toChangeOnParents) {
39
+ await this.setValue__(thing.key, thing.value);
40
+ }
41
+ }
42
+ catch (error) {
43
+ this.loggers.error("Error loading references");
44
+ this.loggers.error(error.message);
45
+ this.loggers.error(error.stack);
46
+ }
47
+ this.isLoadingReferences = false;
48
+ return;
49
+ }
50
+ await new Promise((resolve, reject) => {
51
+ this.emitter.once("pre-loaded" + this.EmitterID, (failed, reason) => {
52
+ if (failed) {
53
+ reject(new Error(reason));
54
+ }
55
+ else
56
+ resolve();
57
+ });
58
+ });
59
+ try {
60
+ await this.loadForceReferences();
61
+ for (const thing of this.toChangeOnParents) {
62
+ await this.setValue__(thing.key, thing.value);
63
+ }
64
+ this.isLoadingReferences = false;
65
+ }
66
+ catch (error) {
67
+ this.isLoadingReferences = false;
68
+ this.loggers.error("Error loading references");
69
+ this.loggers.error(error.message);
70
+ this.loggers.error(error.stack);
71
+ }
72
+ this.callbacks.new(this);
73
+ };
74
+ constructor(socket, data, loggers, properties, className, classProperty, parentManager, callback, emitter, isServer = false) {
75
+ this.isServer = isServer;
76
+ this.emitter = emitter;
77
+ this.classProp = classProperty;
78
+ this.isLoadingReferences = true;
79
+ this.isLoading = true;
80
+ this.parentManager = parentManager;
81
+ this.className = className;
82
+ this.properties = properties;
83
+ this.callbacks = callback;
84
+ this.loggers.debug = (s) => loggers.debug("[DEM - " +
85
+ this.className +
86
+ ": " +
87
+ (this.data?._id ?? "not loaded") +
88
+ "] " +
89
+ s);
90
+ this.loggers.info = (s) => loggers.info("[DEM - " +
91
+ this.className +
92
+ ": " +
93
+ (this.data?._id ?? "not loaded") +
94
+ "] " +
95
+ s);
96
+ this.loggers.error = (s) => loggers.error("[DEM - " +
97
+ this.className +
98
+ ": " +
99
+ (this.data?._id ?? "not loaded") +
100
+ "] " +
101
+ s);
102
+ this.loggers.warn = (s) => loggers.warn("[DEM - " +
103
+ this.className +
104
+ ": " +
105
+ (this.data?._id ?? "not loaded") +
106
+ "] " +
107
+ s);
108
+ for (const prop of properties) {
109
+ if (typeof prop !== "string")
110
+ throw new Error("Property '" + prop.toString() + "' is not a string");
111
+ if (prop.includes("."))
112
+ throw new Error("Property '" +
113
+ prop.toString() +
114
+ "' constain the illegal character '.'");
115
+ }
116
+ this.socket = socket;
117
+ if (typeof data === "string") {
118
+ if (this.isServer) {
119
+ this.isLoading = false;
120
+ this.data = { _id: data };
121
+ return;
122
+ }
123
+ if (!data || data === "" || data === "undefined") {
124
+ this.loggers.error("Cannot create a new AutoUpdatedClientClass with an empty string for ID. Data typeof: " +
125
+ typeof data +
126
+ " Data: " +
127
+ data);
128
+ throw new Error("Cannot create a new AutoUpdatedClientClass with an empty string for ID.");
129
+ }
130
+ this.loggers.debug("Getting new object from server " + this.className + " - " + data);
131
+ this.socket.emit("get" + this.className + data, null, (res) => {
132
+ if (!res.success) {
133
+ this.isLoading = false;
134
+ this.loggers.error("Could not load data from server: " + res.message);
135
+ this.emitter.emit("pre-loaded" + this.EmitterID);
136
+ return;
137
+ }
138
+ this.data = res.data;
139
+ this.isLoading = false;
140
+ this.emitter.emit("pre-loaded" + this.EmitterID);
141
+ this.openSockets();
142
+ });
143
+ this.data = { _id: data };
144
+ }
145
+ else {
146
+ this.isLoading = true;
147
+ this.data = data;
148
+ const dataKeys = Object.keys(data);
149
+ for (const key of this.properties) {
150
+ if (typeof key !== "string")
151
+ throw new Error("Only string keys allowed. Not this shit: " + String(key));
152
+ dataKeys.splice(dataKeys.indexOf(key), 1);
153
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, key);
154
+ if (isRef) {
155
+ if (Array.isArray(this.data[key])) {
156
+ this.data[key] = this.data[key].map((obj) => obj._id?.toString() ?? obj?.toString());
157
+ }
158
+ else {
159
+ this.data[key] =
160
+ this.data[key]?._id?.toString() ??
161
+ this.data[key]?.toString();
162
+ }
163
+ }
164
+ }
165
+ if (dataKeys.includes("__v"))
166
+ dataKeys.splice(dataKeys.indexOf("__v"), 1);
167
+ if (dataKeys.length > 0)
168
+ this.loggers.warn((dataKeys.length > 1 ? "Properties " : "Property ") +
169
+ dataKeys.join(", ") +
170
+ (dataKeys.length > 1 ? " were " : " was ") +
171
+ "unexpected. These properties are not known by the class. Please check your level of skill issue. Known properties are:\n" +
172
+ this.properties.join("\n"));
173
+ if ((!this.data._id || this.data._id === "") && !this.isServer)
174
+ this.handleNewObject(data);
175
+ else {
176
+ this.isLoading = false;
177
+ if (!this.isServer)
178
+ this.openSockets();
179
+ }
180
+ }
181
+ this.generateSettersAndGetters();
182
+ }
183
+ handleNewObject(data) {
184
+ this.isLoading = true;
185
+ if (!this.className)
186
+ throw new Error("Cannot create a new AutoUpdatedClientClass without a class name.");
187
+ this.loggers.debug(this.className + " - Requesting new object creation on server");
188
+ for (const key of this.properties) {
189
+ if (typeof key !== "string")
190
+ continue;
191
+ let pointer = getMetadataRecursive("refsTo", this.classProp.prototype, key);
192
+ if (pointer) {
193
+ pointer = pointer.split(":");
194
+ if (pointer.length != 2)
195
+ throw new Error("population ref incorrectly defined. Sould be 'ParentClass:PropName.Path'");
196
+ const temp = data[key];
197
+ delete data[key];
198
+ if (temp)
199
+ this.toChangeOnParents.push({ key: key, value: temp });
200
+ }
201
+ }
202
+ try {
203
+ data = _.cloneDeep(data);
204
+ }
205
+ catch (error) {
206
+ this.loggers.error("Most likely cycled object: " + error.message);
207
+ this.loggers.error(error.stack);
208
+ }
209
+ this.socket.emit("new" + this.className, data, (res) => {
210
+ if (!res.success) {
211
+ this.isLoading = false;
212
+ this.loggers.error("Could not create data on server: " + res.message);
213
+ this.emitter.emit("pre-loaded" + this.EmitterID, true, res.message);
214
+ return;
215
+ }
216
+ this.data = res.data;
217
+ this.isLoading = false;
218
+ this.loggers.debug("Created new object: " + this.data._id);
219
+ this.emitter.emit("pre-loaded" + this.EmitterID);
220
+ if (!this.isServer)
221
+ this.openSockets();
222
+ });
223
+ }
224
+ get extractedData() {
225
+ const extracted = processIsRefProperties(this.data, this.classProp.prototype, null, [], {}, this.loggers).newData;
226
+ return _.cloneDeep(extracted);
227
+ }
228
+ get isLoaded() {
229
+ return !this.isLoading;
230
+ }
231
+ async isPreLoadedAsync() {
232
+ await this.loadShit();
233
+ this.generateSettersAndGetters();
234
+ return true;
235
+ }
236
+ loadMissingReferences() {
237
+ if (this.referencesLoaded)
238
+ return;
239
+ this.referencesLoaded = true;
240
+ this.checkForMissingRefs();
241
+ this.generateSettersAndGetters();
242
+ }
243
+ openSockets() {
244
+ const event = "update" + this.className + this.data._id.toString();
245
+ this.socket.on(event, async (update) => {
246
+ await this.handleUpdateRequest(update);
247
+ });
248
+ }
249
+ async handleUpdateRequest(update) {
250
+ try {
251
+ await this.setValue__(update.key, update.value, true);
252
+ this.loggers.debug(`Applied patch ${update.key} set to ${update.value}`);
253
+ // Return success with the applied patch
254
+ return { success: true, data: undefined, message: "" };
255
+ }
256
+ catch (error) {
257
+ this.loggers.error(`[${this.data._id}] Error applying patch: ` +
258
+ error.message +
259
+ "\n" +
260
+ error.stack);
261
+ return {
262
+ success: false,
263
+ message: "Error applying update: " + error.message,
264
+ };
265
+ }
266
+ }
267
+ generateSettersAndGetters() {
268
+ for (const key of this.properties) {
269
+ if (typeof key !== "string")
270
+ return;
271
+ const k = key;
272
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, key);
273
+ Object.defineProperty(this, key, {
274
+ get: () => {
275
+ if (isRef) {
276
+ if (Array.isArray(this.data[k])) {
277
+ const filtered = this.data[k]
278
+ .map((id) => this.findReference(id))
279
+ .filter(Boolean);
280
+ if (filtered.length !== this.data[k].length &&
281
+ this.parentManager.isLoaded)
282
+ this.data[k] = filtered.map((obj) => obj._id?.toString() ?? obj.toString());
283
+ return filtered;
284
+ }
285
+ else {
286
+ const result = this.findReference(this.data[k]);
287
+ if (!result && this.data[k] && this.parentManager.isLoaded)
288
+ this.data[k] = undefined;
289
+ return result;
290
+ }
291
+ }
292
+ else
293
+ return this.data[k];
294
+ },
295
+ set: () => {
296
+ throw new Error(`Cannot set ${key} this way, use "setValue" function.`);
297
+ },
298
+ enumerable: true,
299
+ configurable: true,
300
+ });
301
+ }
302
+ }
303
+ findReference(id) {
304
+ if (typeof id !== "string" && !ObjectId.isValid(id))
305
+ return id;
306
+ for (const manager of Object.values(this.parentManager.managers)) {
307
+ const result = manager.getObject(id.toString());
308
+ if (result)
309
+ return result;
310
+ }
311
+ return undefined;
312
+ }
313
+ async setValue(key, val) {
314
+ const result = await this.setValue__(key, val);
315
+ if (this.isLoaded)
316
+ this.callbacks.update(this, key);
317
+ return result;
318
+ }
319
+ async setValue__(key, val, silent = false, noGet = false, noUpdate = false) {
320
+ let message = "Setting value " + key + " of " + this.className + " to ";
321
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, key);
322
+ if (isRef)
323
+ val = Array.isArray(val)
324
+ ? val.map((v) => {
325
+ return v._id?.toString() ?? v;
326
+ })
327
+ : (val?._id ?? val);
328
+ message += JSON.stringify(val);
329
+ this.loggers.debug(message);
330
+ try {
331
+ if (val instanceof AutoUpdatedClientObject)
332
+ val = val.extractedData._id;
333
+ const path = key.split(".");
334
+ let obj = this.data;
335
+ let lastClass = this;
336
+ let lastPath = path[0];
337
+ for (let i = 0; i < path.length - 1; i++) {
338
+ if (typeof obj[path[i]] === "string" ||
339
+ ObjectId.isValid(obj[path[i]])) {
340
+ let temp;
341
+ try {
342
+ temp = this.resolveReference(obj[path[i]]?.toString());
343
+ }
344
+ catch (error) {
345
+ message +=
346
+ "\n Error: likely undefined property on path: " +
347
+ path +
348
+ " on index: " +
349
+ i +
350
+ " with error: " +
351
+ error.message;
352
+ }
353
+ if (!temp) {
354
+ message +=
355
+ "\nLikely undefined property " +
356
+ path[i] +
357
+ " on path: " +
358
+ path +
359
+ " at index: " +
360
+ i;
361
+ this.loggers.warn("Failed to set value for " + this.className + "\n" + message);
362
+ return {
363
+ success: false,
364
+ msg: message,
365
+ };
366
+ }
367
+ lastClass = temp;
368
+ lastPath = path.slice(i + 1).join(".");
369
+ const res = await lastClass.setValue(lastPath, val);
370
+ if (!noUpdate)
371
+ await this.onUpdate(noUpdate);
372
+ return res;
373
+ }
374
+ else
375
+ obj = obj[path[i]];
376
+ }
377
+ if (lastClass !== this) {
378
+ message +=
379
+ "\n What the actual fuckity fuck error on path: " +
380
+ path +
381
+ " on index: " +
382
+ (path.length - 1);
383
+ this.loggers.error("Failed to set value for " + this.className + "\n" + message);
384
+ return {
385
+ success: false,
386
+ msg: message,
387
+ };
388
+ }
389
+ if (!this.properties.includes(lastPath) &&
390
+ !lastPath.includes(".")) {
391
+ let nearest = "";
392
+ for (const prop of this.properties) {
393
+ if (typeof prop !== "string")
394
+ continue;
395
+ if (stringSimilarity(lastPath, prop) > 0 &&
396
+ stringSimilarity(lastPath, prop) > stringSimilarity(nearest, prop)) {
397
+ nearest = prop;
398
+ }
399
+ }
400
+ throw new Error(`Property ${lastPath} not found in class ${this.className}, did you mean ${nearest ?? "--No similar prop found--"}?`);
401
+ }
402
+ let success;
403
+ try {
404
+ let isPopulated = getMetadataRecursive("refsTo", this.classProp.prototype, lastPath);
405
+ if (isPopulated) {
406
+ isPopulated = isPopulated.split(":");
407
+ const parentObj = this.parentManager.managers[isPopulated[0]].getObject(val);
408
+ if (!parentObj) {
409
+ message +=
410
+ "\nFailed to set value for " +
411
+ this.className +
412
+ " parent not found";
413
+ this.loggers.error(message);
414
+ return { success: false, msg: message };
415
+ }
416
+ if (parentObj.getValue(isPopulated[1]) &&
417
+ !Array.isArray(parentObj.getValue(isPopulated[1]))) {
418
+ message +=
419
+ "\nThis is a 1:1 relationship and the parent already has a parent with the ID: " +
420
+ (parentObj.getValue(isPopulated[1])._id?.toString() ??
421
+ parentObj.getValue(isPopulated[1]).toString()) +
422
+ this.loggers.error(message);
423
+ return { success: false, msg: message };
424
+ }
425
+ let res;
426
+ if (this.isServer) {
427
+ const value = parentObj.getValue(isPopulated[1]);
428
+ if (Array.isArray(value)) {
429
+ res = await parentObj.setValue__(isPopulated[1], value.concat(this.data._id.toString()), false, false, true);
430
+ }
431
+ else
432
+ res = await parentObj.setValue__(isPopulated[1], this.data._id.toString(), false, false, true);
433
+ }
434
+ else
435
+ ({ res, val } = await this.preInnerSetValue(noGet, key, val, lastPath, silent, noUpdate));
436
+ success = res.success;
437
+ message +=
438
+ "\nReport from inner setValue function: " +
439
+ res.msg.split("\n").join("\n ");
440
+ }
441
+ else {
442
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, key);
443
+ if (isRef && this.isServer && ObjectId.isValid(val))
444
+ val = Array.isArray(val)
445
+ ? val.map((v) => new ObjectId(v))
446
+ : new ObjectId(val);
447
+ let res;
448
+ ({ res, val } = await this.preInnerSetValue(noGet, key, val, lastPath, silent, noUpdate));
449
+ if (res.success) {
450
+ const originalValue = obj[path.at(-1)];
451
+ if (!Array.isArray(val) && Array.isArray(originalValue)) {
452
+ if (!originalValue.includes(val))
453
+ originalValue.push(val);
454
+ val = originalValue;
455
+ }
456
+ else
457
+ obj[path.at(-1)] = val;
458
+ }
459
+ success = res.success;
460
+ message += "\nReport from inner setValue function: \n " + res.msg;
461
+ }
462
+ }
463
+ catch (error) {
464
+ success = false;
465
+ message += "\nError from inner setValue function: \n " + error.message;
466
+ }
467
+ if (!success) {
468
+ this.loggers.warn("Failed to set value for " + this.className + "\n" + message);
469
+ return { success: false, msg: message };
470
+ }
471
+ const pathArr = lastPath.split(".");
472
+ if (pathArr.length === 1) {
473
+ this.data[key] = val;
474
+ }
475
+ else {
476
+ const last = pathArr.splice(-1, 1);
477
+ let ref = this;
478
+ for (const p of pathArr) {
479
+ ref = ref[p];
480
+ }
481
+ ref[last.at(-1)] = val;
482
+ }
483
+ if (!noUpdate)
484
+ await this.onUpdate(noUpdate);
485
+ this.findAndLoadReferences(lastPath, val);
486
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, path.at(-1));
487
+ if (isRef && this.parentManager.isLoaded) {
488
+ this.contactChildren();
489
+ }
490
+ return {
491
+ success: true,
492
+ msg: "Successfully set " + key + " to " + val,
493
+ };
494
+ }
495
+ catch (error) {
496
+ this.loggers.error("An error occurred setting value for " +
497
+ this.className +
498
+ "\n" +
499
+ message +
500
+ "\n Random error here: " +
501
+ error.message +
502
+ "\n" +
503
+ error.stack);
504
+ this.loggers.error(error);
505
+ return {
506
+ success: false,
507
+ msg: message +
508
+ "\n Random error here: " +
509
+ error.message +
510
+ "\n" +
511
+ error.stack,
512
+ };
513
+ }
514
+ }
515
+ async preInnerSetValue(noGet, key, val, lastPath, silent, noUpdate) {
516
+ if (!noGet &&
517
+ this.isServer &&
518
+ this.getValue(key) &&
519
+ Array.isArray(this.getValue(key)) &&
520
+ !Array.isArray(val)) {
521
+ val = this.getValue(key).concat(val);
522
+ }
523
+ const res = await this.setValueInternal(lastPath, val, silent, noUpdate);
524
+ if (!noGet &&
525
+ !this.isServer &&
526
+ this.getValue(key) &&
527
+ Array.isArray(this.getValue(key)) &&
528
+ !Array.isArray(val)) {
529
+ val = [
530
+ ...new Set(this.getValue(key)
531
+ .concat(val)
532
+ .map((v) => v.toString())),
533
+ ];
534
+ }
535
+ return { res, val };
536
+ }
537
+ findAndLoadReferences(lastPath, value) {
538
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, lastPath);
539
+ if (isRef) {
540
+ for (const id of Array.isArray(value) ? value : [value]) {
541
+ let result;
542
+ for (const manager of Object.values(this.parentManager.managers)) {
543
+ result = manager.getObject(id?.toString());
544
+ if (result)
545
+ break;
546
+ }
547
+ if (!result) {
548
+ this.loggers.warn("Failed to update childerns parent for " +
549
+ this.className +
550
+ " updating " +
551
+ id +
552
+ "'s parent to " +
553
+ this.data._id);
554
+ continue;
555
+ }
556
+ this.referencesLoaded = false;
557
+ result.loadMissingReferences();
558
+ }
559
+ }
560
+ }
561
+ getValue(key) {
562
+ let value;
563
+ for (const part of key.split(".")) {
564
+ try {
565
+ if (value)
566
+ value = value[part];
567
+ else
568
+ value = this[part];
569
+ }
570
+ catch (error) {
571
+ this.loggers.error("Error getting value for " +
572
+ this.className +
573
+ " on key " +
574
+ key +
575
+ " on index " +
576
+ part +
577
+ ":" +
578
+ error.message);
579
+ }
580
+ }
581
+ return value;
582
+ }
583
+ async setValueInternal(key, value, silent = false, noUpdate = false) {
584
+ const update = this.makeUpdate(key, value);
585
+ const promise = new Promise((resolve) => {
586
+ if (silent) {
587
+ if (noUpdate)
588
+ return;
589
+ return this.onUpdate(true).then(() => {
590
+ return resolve({ success: true, msg: "Success - silent" });
591
+ });
592
+ }
593
+ try {
594
+ this.socket.emit("update" + this.className + this.data._id, update, async (res) => {
595
+ if (!res.success) {
596
+ this.loggers.error("Error sending update: " + res.message);
597
+ resolve({ success: false, msg: res.message });
598
+ return;
599
+ }
600
+ if (!noUpdate)
601
+ await this.onUpdate(noUpdate);
602
+ resolve({
603
+ success: res.success,
604
+ msg: res.message ?? "Success",
605
+ });
606
+ });
607
+ }
608
+ catch (error) {
609
+ this.loggers.error("Error sending update:" + error.message);
610
+ this.loggers.error(error.stack);
611
+ resolve({ success: false, msg: error.message });
612
+ }
613
+ });
614
+ return promise;
615
+ }
616
+ makeUpdate(key, value) {
617
+ try {
618
+ const id = this.data._id.toString();
619
+ return { _id: id, key, value };
620
+ }
621
+ catch (error) {
622
+ this.loggers.error("Probably missing the fucking identifier ['_id'] again: " +
623
+ error.message);
624
+ throw error;
625
+ }
626
+ }
627
+ async onUpdate(noUpdate) {
628
+ return;
629
+ }
630
+ // return a properly typed AutoUpdatedClientClass (or null)
631
+ // inside AutoUpdatedClientClass
632
+ resolveReference(id) {
633
+ if (!this.parentManager)
634
+ throw new Error("No Manager");
635
+ for (const manager of Object.values(this.parentManager.managers)) {
636
+ const data = manager.getObject(id);
637
+ if (data)
638
+ return data;
639
+ }
640
+ return null;
641
+ }
642
+ async loadForceReferences(obj = this.data, proto = this.classProp.prototype, alreadySeen = []) {
643
+ const props = Reflect.getMetadata("props", proto) || [];
644
+ for (const key of props) {
645
+ if (typeof key !== "string")
646
+ return;
647
+ const isRef = Reflect.getMetadata("isRef", proto, key);
648
+ const pointer = Reflect.getMetadata("refsTo", proto, key);
649
+ if (pointer && obj === this.data && obj[key])
650
+ await this.createdWithParent(pointer.split(":"), obj[key]);
651
+ if (isRef) {
652
+ await this.handleLoad(obj, key, alreadySeen);
653
+ }
654
+ await this.checkRecursiveReferenceLoading(obj, key, alreadySeen);
655
+ }
656
+ }
657
+ async checkRecursiveReferenceLoading(obj, key, alreadySeen) {
658
+ const val = obj ? obj[key] : null;
659
+ if (val && typeof val === "object") {
660
+ const nestedProto = Object.getPrototypeOf(val);
661
+ if (nestedProto && !alreadySeen.includes(val)) {
662
+ alreadySeen.push(val);
663
+ await this.loadForceReferences(val, nestedProto, alreadySeen);
664
+ }
665
+ }
666
+ }
667
+ async handleLoad(obj, key, alreadySeen) {
668
+ if (!this.parentManager)
669
+ throw new Error("No manager");
670
+ const refId = obj[key];
671
+ if (refId) {
672
+ for (const manager of Object.values(this.parentManager.managers)) {
673
+ const result = manager.getObject(refId);
674
+ if (result && !alreadySeen.includes(refId)) {
675
+ alreadySeen.push(refId);
676
+ await result.loadForceReferences(undefined, undefined, alreadySeen);
677
+ break;
678
+ }
679
+ }
680
+ }
681
+ }
682
+ async createdWithParent(pointer, parent) {
683
+ if (pointer.length !== 2) {
684
+ throw new Error("Invalid pointer: " +
685
+ JSON.stringify(pointer) +
686
+ " for " +
687
+ this.className +
688
+ ", poiter must be 'className:pathToParentProperty'");
689
+ }
690
+ if (!parent)
691
+ throw new Error("Invalid pointer: " +
692
+ JSON.stringify(pointer) +
693
+ " for " +
694
+ this.className +
695
+ ", parent is null");
696
+ const obj = this.parentManager.managers[pointer[0]]?.getObject(parent._id?.toString() ?? parent.toString());
697
+ const val = obj?.getValue(pointer[1]);
698
+ if (!val)
699
+ return;
700
+ if (Array.isArray(val)) {
701
+ const originalLength = val.length;
702
+ const filtred = val.filter(Boolean);
703
+ if (filtred.length !== originalLength) {
704
+ await obj?.setValue(pointer[1], filtred);
705
+ this.loggers.warn("Array value changed from " +
706
+ originalLength +
707
+ " to " +
708
+ filtred.length +
709
+ " - some values were undefined");
710
+ }
711
+ if (filtred
712
+ .map((id) => id?._id.toString())
713
+ .includes(this.data._id))
714
+ obj?.contactChildren();
715
+ else
716
+ await obj?.setValue(pointer[1], [
717
+ ...new Set([...filtred, this.data._id]),
718
+ ]);
719
+ }
720
+ else if (val?.toString() === this.data?._id.toString())
721
+ obj?.contactChildren();
722
+ else
723
+ await obj?.setValue(pointer[1], this.data?._id.toString());
724
+ }
725
+ async destroy(once = false) {
726
+ if (!once) {
727
+ return await this.parentManager.deleteObject(this.data._id);
728
+ }
729
+ await this.callbacks.delete(this);
730
+ const res = await new Promise((resolve) => {
731
+ this.socket.emit("delete" + this.className, this.data._id, (res) => {
732
+ if (!res.success) {
733
+ this.loggers.error("Error deleting object from database - " +
734
+ this.className +
735
+ " - " +
736
+ this.data._id);
737
+ this.loggers.error(res.message);
738
+ resolve({
739
+ success: false,
740
+ message: res.message,
741
+ });
742
+ return;
743
+ }
744
+ this.socket.removeAllListeners("update" + this.className + this.data._id);
745
+ this.socket.removeAllListeners("delete" + this.className);
746
+ this.wipeSelf();
747
+ resolve({
748
+ success: true,
749
+ message: "Deleted",
750
+ });
751
+ });
752
+ });
753
+ return res;
754
+ }
755
+ checkForMissingRefs() {
756
+ for (const prop of this.properties) {
757
+ let pointer = getMetadataRecursive("refsTo", this.classProp.prototype, prop.toString());
758
+ if (pointer) {
759
+ pointer = pointer.split(":");
760
+ if (pointer.length != 2)
761
+ throw new Error("population rf incorrectly defined. Sould be 'ParentClass:PropName'");
762
+ this.findMissingObjectReference(prop, pointer);
763
+ }
764
+ }
765
+ }
766
+ findMissingObjectReference(prop, pointer) {
767
+ const ac = this.parentManager.managers[pointer[0]];
768
+ if (!ac)
769
+ throw new Error(`No AutoUpdateManager found for class ${pointer[0]}`);
770
+ for (const obj of ac.objectsAsArray) {
771
+ let eData = obj.extractedData;
772
+ let found;
773
+ for (const pathPart of pointer[1].split(".")) {
774
+ if (!eData[pathPart] ||
775
+ (Array.isArray(eData[pathPart]) &&
776
+ !eData[pathPart]
777
+ .map((id) => id.toString())
778
+ .includes(this._id.toString())) ||
779
+ (!Array.isArray(eData[pathPart]) &&
780
+ eData[pathPart].toString() !== this.data._id.toString())) {
781
+ found = false;
782
+ break;
783
+ }
784
+ found = eData = eData[pathPart];
785
+ }
786
+ if (found) {
787
+ this.data[prop] = obj._id;
788
+ return;
789
+ }
790
+ }
791
+ }
792
+ wipeSelf() {
793
+ if (this.data.Wiped)
794
+ return;
795
+ const _id = this.data._id.toString();
796
+ for (const key of Object.keys(this.data)) {
797
+ delete this.data[key];
798
+ }
799
+ this.data = { Wiped: true };
800
+ this.loggers.info(`[${_id}] ${this.className} object wiped`);
801
+ }
802
+ contactChildren() {
803
+ for (const prop of this.properties) {
804
+ const pointer = getMetadataRecursive("refsTo", this.classProp.prototype, prop.toString());
805
+ const isRef = getMetadataRecursive("isRef", this.classProp.prototype, prop.toString());
806
+ if (isRef && !pointer) {
807
+ if (!this.getValue(prop))
808
+ continue;
809
+ if (Array.isArray(this.getValue(prop))) {
810
+ for (const child of this.getValue(prop)) {
811
+ try {
812
+ child?.loadMissingReferences();
813
+ }
814
+ catch (error) {
815
+ this.loggers.error(error.message);
816
+ }
817
+ }
818
+ }
819
+ else
820
+ this.getValue(prop)?.loadMissingReferences();
821
+ }
822
+ }
823
+ }
824
+ }
825
+ export function processIsRefProperties(instance, target, prefix = null, allProps = [], newData = {}, loggers = console) {
826
+ const props = Reflect.getMetadata("props", target) || [];
827
+ for (const prop of props) {
828
+ const path = prefix ? `${prefix}.${prop}` : prop;
829
+ allProps.push(path);
830
+ newData[prop] = ObjectId.isValid(instance[prop])
831
+ ? instance[prop]?.toString()
832
+ : instance[prop];
833
+ if (Reflect.getMetadata("isRef", target, prop)) {
834
+ if (Array.isArray(instance[prop]))
835
+ newData[prop] = instance[prop]
836
+ .map((item) => item?._id?.toString() ?? item?.toString() ?? undefined)
837
+ .filter(Boolean);
838
+ else
839
+ newData[prop] =
840
+ instance[prop]?._id?.toString() ??
841
+ instance[prop]?.toString() ??
842
+ undefined;
843
+ }
844
+ const type = Reflect.getMetadata("design:type", target, prop);
845
+ if (type?.prototype) {
846
+ const nestedProps = Reflect.getMetadata("props", type.prototype);
847
+ if (nestedProps && instance[prop]) {
848
+ newData[prop] = processIsRefProperties(instance[prop], type.prototype, path, allProps, undefined, loggers).newData;
849
+ }
850
+ }
851
+ }
852
+ return { allProps, newData };
853
+ }
854
+ export function getMetadataRecursive(metaKey, proto, prop) {
855
+ while (proto) {
856
+ const meta = Reflect.getMetadata(metaKey, proto, prop);
857
+ if (meta)
858
+ return meta;
859
+ proto = Object.getPrototypeOf(proto);
860
+ }
861
+ return undefined;
862
+ }
863
+ //# sourceMappingURL=AutoUpdatedClientObjectClass.js.map
864
+ //# sourceMappingURL=AutoUpdatedClientObjectClass.js.map
865
+ //# sourceMappingURL=AutoUpdatedClientObjectClass.js.map