@futdevpro/nts-dynamo 1.15.15 → 1.15.16
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/.c8rc.json +26 -26
- package/.copilot/patterns.json +7 -7
- package/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.dynamo/version-bump.config.json +5 -0
- package/.github/workflows/main.yml +426 -393
- package/.husky/pre-commit +1 -0
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/2026-04-28-logs-module.md +49 -0
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/_specifications/BACKLOG.md +50 -50
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +343 -362
- package/pipeline.cicd.config.json +152 -0
- package/scripts/run-coverage-tests.js +28 -28
- package/spec/support/helpers/spec-reporter-loader.js +359 -359
- package/spec/support/helpers/ts-node-helper.js +93 -93
- package/spec/support/jasmine.coverage.json +24 -24
- package/spec/support/jasmine.json +24 -24
- package/src/_collections/archive.util.spec.ts +57 -57
- package/src/_collections/archive.util.ts +18 -18
- package/src/_collections/atlas-default-db-options.const.ts +9 -9
- package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
- package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
- package/src/_collections/default-not-found-page.const.spec.ts +19 -19
- package/src/_collections/default-not-found-page.const.ts +22 -22
- package/src/_collections/default-socket-path.const.spec.ts +12 -12
- package/src/_collections/default-socket-path.const.ts +2 -2
- package/src/_collections/get-environment-settings.util.spec.ts +210 -210
- package/src/_collections/get-environment-settings.util.ts +48 -48
- package/src/_collections/sample.env +21 -21
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +24 -24
- package/src/_enums/predefined-data-types.enum.ts +16 -16
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
- package/src/_models/control-models/api-call-params.control-model.ts +142 -142
- package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
- package/src/_models/control-models/app-params.control-model.ts +136 -136
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -578
- package/src/_models/control-models/endpoint-params.control-model.ts +526 -526
- package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
- package/src/_models/control-models/http-settings.control-model.ts +37 -37
- package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/environment-settings.interface.ts +59 -59
- package/src/_models/interfaces/global-log-settings.interface.ts +108 -108
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
- package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
- package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
- package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
- package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
- package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
- package/src/_modules/ai/_modules/document-ai/index.ts +28 -28
- package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
- package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
- package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
- package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +240 -240
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +98 -98
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +615 -615
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +437 -437
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +833 -833
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
- package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
- package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
- package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +332 -332
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +79 -79
- package/src/_modules/ai/_services/ai-provider.service-base.ts +29 -29
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/index.ts +13 -13
- package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
- package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
- package/src/_modules/assistant/_collections/ass.util.ts +50 -50
- package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
- package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
- package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
- package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
- package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
- package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
- package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
- package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
- package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
- package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
- package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
- package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
- package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
- package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
- package/src/_modules/custom-data/custom-data.controller.ts +67 -67
- package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
- package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
- package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
- package/src/_modules/custom-data/index.ts +9 -9
- package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
- package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
- package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
- package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
- package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
- package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
- package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
- package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
- package/src/_modules/defaults/index.ts +17 -17
- package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
- package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
- package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
- package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
- package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
- package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
- package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
- package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
- package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
- package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
- package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
- package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
- package/src/_modules/discord-assistant/index.ts +38 -38
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
- package/src/_modules/discord-assistant-voiced/index.ts +36 -36
- package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
- package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
- package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
- package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
- package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
- package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
- package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
- package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
- package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
- package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
- package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
- package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
- package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
- package/src/_modules/discord-bot/index.ts +36 -36
- package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +19 -19
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +345 -345
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +330 -330
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
- package/src/_modules/local-vector-search/index.ts +11 -11
- package/src/_modules/messaging/README.md +354 -354
- package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
- package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
- package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
- package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
- package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
- package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
- package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
- package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
- package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
- package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
- package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
- package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
- package/src/_modules/messaging/index.ts +30 -30
- package/src/_modules/mock/app-extended-server.mock.ts +201 -201
- package/src/_modules/mock/app-integration-test.mock.ts +51 -51
- package/src/_modules/mock/app-params.mock.spec.ts +21 -21
- package/src/_modules/mock/app-params.mock.ts +9 -9
- package/src/_modules/mock/app-server.mock.ts +188 -188
- package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
- package/src/_modules/mock/auth-service.mock.ts +28 -28
- package/src/_modules/mock/controller.mock.spec.ts +26 -26
- package/src/_modules/mock/controller.mock.ts +16 -16
- package/src/_modules/mock/data-model.mock.spec.ts +111 -111
- package/src/_modules/mock/data-model.mock.ts +82 -82
- package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
- package/src/_modules/mock/email-service-collection.mock.ts +15 -15
- package/src/_modules/mock/email-service.mock.spec.ts +17 -17
- package/src/_modules/mock/email-service.mock.ts +20 -20
- package/src/_modules/mock/email-template.mock.html +14 -14
- package/src/_modules/mock/endpoint.mock.ts +91 -91
- package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
- package/src/_modules/mock/socket-client.mock.ts +45 -45
- package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
- package/src/_modules/mock/socket-server.mock.ts +46 -46
- package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
- package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
- package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
- package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
- package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
- package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
- package/src/_modules/oauth2/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +230 -230
- package/src/_modules/server/errors/errors.control-service.ts +69 -69
- package/src/_modules/server/errors/errors.controller.spec.ts +165 -165
- package/src/_modules/server/errors/errors.controller.ts +270 -270
- package/src/_modules/server/errors/errors.data-service.spec.ts +355 -355
- package/src/_modules/server/index.ts +30 -30
- package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
- package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
- package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
- package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
- package/src/_modules/server/server-status/server-status.control-service.spec.ts +516 -516
- package/src/_modules/server/server-status/server-status.control-service.ts +336 -336
- package/src/_modules/server/server-status/server-status.controller.spec.ts +156 -156
- package/src/_modules/server/server-status/server-status.controller.ts +131 -131
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +196 -196
- package/src/_services/base/archive-data.service.ts +216 -216
- package/src/_services/base/data.service.spec.ts +493 -493
- package/src/_services/base/data.service.ts +2525 -2525
- package/src/_services/base/db.service.spec.ts +73 -73
- package/src/_services/base/db.service.ts +1575 -1575
- package/src/_services/base/singleton.service-base.spec.ts +28 -28
- package/src/_services/base/singleton.service-base.ts +24 -24
- package/src/_services/base/singleton.service.spec.ts +114 -114
- package/src/_services/base/singleton.service.ts +38 -38
- package/src/_services/core/api.service.spec.ts +140 -140
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +742 -742
- package/src/_services/core/global.service.spec.ts +275 -275
- package/src/_services/core/global.service.ts +461 -461
- package/src/_services/core/service-collection.service.spec.ts +46 -46
- package/src/_services/core/service-collection.service.ts +6 -6
- package/src/_services/route/controller.service.spec.ts +53 -53
- package/src/_services/route/controller.service.ts +148 -148
- package/src/_services/route/routing-module.service.spec.ts +98 -98
- package/src/_services/route/routing-module.service.ts +330 -330
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +94 -94
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/build/_modules/logs/get-logs-routing-module.util.d.ts +0 -19
- package/build/_modules/logs/get-logs-routing-module.util.d.ts.map +0 -1
- package/build/_modules/logs/get-logs-routing-module.util.js +0 -32
- package/build/_modules/logs/get-logs-routing-module.util.js.map +0 -1
- package/build/_modules/logs/index.d.ts +0 -4
- package/build/_modules/logs/index.d.ts.map +0 -1
- package/build/_modules/logs/index.js +0 -10
- package/build/_modules/logs/index.js.map +0 -1
- package/build/_modules/logs/log-buffer.service.d.ts +0 -38
- package/build/_modules/logs/log-buffer.service.d.ts.map +0 -1
- package/build/_modules/logs/log-buffer.service.js +0 -97
- package/build/_modules/logs/log-buffer.service.js.map +0 -1
- package/build/_modules/logs/logs.controller.d.ts +0 -27
- package/build/_modules/logs/logs.controller.d.ts.map +0 -1
- package/build/_modules/logs/logs.controller.js +0 -90
- package/build/_modules/logs/logs.controller.js.map +0 -1
- package/build/_modules/logs/logs.service.d.ts +0 -40
- package/build/_modules/logs/logs.service.d.ts.map +0 -1
- package/build/_modules/logs/logs.service.js +0 -97
- package/build/_modules/logs/logs.service.js.map +0 -1
- package/src/_modules/logs/get-logs-routing-module.util.ts +0 -36
- package/src/_modules/logs/index.ts +0 -3
- package/src/_modules/logs/log-buffer.service.ts +0 -101
- package/src/_modules/logs/logs.controller.ts +0 -109
- package/src/_modules/logs/logs.service.ts +0 -100
|
@@ -1,177 +1,177 @@
|
|
|
1
|
-
import { Request, Response } from 'express';
|
|
2
|
-
import { DyNTS_AuthService } from '../../../_services/core/auth.service';
|
|
3
|
-
import { DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
4
|
-
import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Default Authentication Service
|
|
8
|
-
* Basic token-based authentication
|
|
9
|
-
* Can be extended for custom auth logic
|
|
10
|
-
*/
|
|
11
|
-
export class DyNTS_Default_AuthService extends DyNTS_AuthService {
|
|
12
|
-
|
|
13
|
-
static getInstance(): DyNTS_Default_AuthService {
|
|
14
|
-
return DyNTS_Default_AuthService.getSingletonInstance();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Extract user ID from request
|
|
19
|
-
* Override for custom logic
|
|
20
|
-
*/
|
|
21
|
-
getUserIdFromRequest(req: Request): string {
|
|
22
|
-
// Default: extract from auth header or query param
|
|
23
|
-
const userId = req.headers['x-user-id'] as string || req.query.userId as string;
|
|
24
|
-
|
|
25
|
-
if (!userId) {
|
|
26
|
-
throw new DyFM_Error({
|
|
27
|
-
message: 'User ID not found in request',
|
|
28
|
-
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DEF-AUTH-GUID`,
|
|
29
|
-
userMessage: 'Authentication required.',
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return userId;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Extract username from request
|
|
38
|
-
* Override for custom logic
|
|
39
|
-
*/
|
|
40
|
-
getUsernameFromRequest(req: Request): string {
|
|
41
|
-
const username = req.headers['x-username'] as string || req.query.username as string;
|
|
42
|
-
|
|
43
|
-
if (!username) {
|
|
44
|
-
return 'anonymous';
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return username;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Validate user token
|
|
52
|
-
* Override for custom token validation
|
|
53
|
-
*/
|
|
54
|
-
async validateToken(token: string): Promise<boolean> {
|
|
55
|
-
// Default: basic validation (can be extended)
|
|
56
|
-
return token && token.length > 0;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Get user roles from request
|
|
61
|
-
* Override for custom role extraction
|
|
62
|
-
*/
|
|
63
|
-
getUserRolesFromRequest(req: Request): string[] {
|
|
64
|
-
const roles = req.headers['x-user-roles'] as string || req.query.roles as string;
|
|
65
|
-
|
|
66
|
-
if (!roles) {
|
|
67
|
-
return ['user']; // Default role
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
try {
|
|
71
|
-
return JSON.parse(roles);
|
|
72
|
-
} catch {
|
|
73
|
-
return [roles]; // Single role as string
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Extract issuer from request
|
|
79
|
-
* Required abstract method implementation
|
|
80
|
-
*/
|
|
81
|
-
getIssuerFromRequest(req: Request): string {
|
|
82
|
-
return this.getUserIdFromRequest(req);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Authenticate token
|
|
87
|
-
* Required abstract method implementation
|
|
88
|
-
*/
|
|
89
|
-
authenticate_token = async (req: Request, res: Response): Promise<void> => {
|
|
90
|
-
try {
|
|
91
|
-
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
92
|
-
|
|
93
|
-
if (!token) {
|
|
94
|
-
res.status(401).json({ error: 'Token required' });
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const isValid = await this.validateToken(token);
|
|
99
|
-
if (!isValid) {
|
|
100
|
-
res.status(401).json({ error: 'Invalid token' });
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Token is valid, continue
|
|
105
|
-
res.status(200).json({ success: true });
|
|
106
|
-
} catch (error) {
|
|
107
|
-
res.status(500).json({ error: 'Authentication failed' });
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Authenticate token for self operations
|
|
113
|
-
* Required abstract method implementation
|
|
114
|
-
*/
|
|
115
|
-
authenticate_tokenSelf = async (req: Request, res: Response): Promise<void> => {
|
|
116
|
-
try {
|
|
117
|
-
const userId = this.getUserIdFromRequest(req);
|
|
118
|
-
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
119
|
-
|
|
120
|
-
if (!token) {
|
|
121
|
-
res.status(401).json({ error: 'Token required' });
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const isValid = await this.validateToken(token);
|
|
126
|
-
if (!isValid) {
|
|
127
|
-
res.status(401).json({ error: 'Invalid token' });
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
// Add user ID to request for downstream use
|
|
132
|
-
(req as any).authenticatedUserId = userId;
|
|
133
|
-
res.status(200).json({ success: true, userId });
|
|
134
|
-
} catch (error) {
|
|
135
|
-
res.status(500).json({ error: 'Authentication failed' });
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Authenticate token with permission and usage data
|
|
141
|
-
* Required abstract method implementation
|
|
142
|
-
*/
|
|
143
|
-
authenticate_tokenPerm_accUsageData = async (req: Request, res: Response): Promise<void> => {
|
|
144
|
-
try {
|
|
145
|
-
const userId = this.getUserIdFromRequest(req);
|
|
146
|
-
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
147
|
-
|
|
148
|
-
if (!token) {
|
|
149
|
-
res.status(401).json({ error: 'Token required' });
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const isValid = await this.validateToken(token);
|
|
154
|
-
if (!isValid) {
|
|
155
|
-
res.status(401).json({ error: 'Invalid token' });
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Add user data to request for downstream use
|
|
160
|
-
(req as any).authenticatedUserId = userId;
|
|
161
|
-
(req as any).userRoles = this.getUserRolesFromRequest(req);
|
|
162
|
-
(req as any).usageData = {
|
|
163
|
-
timestamp: new Date(),
|
|
164
|
-
endpoint: req.path,
|
|
165
|
-
method: req.method,
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
res.status(200).json({
|
|
169
|
-
success: true,
|
|
170
|
-
userId,
|
|
171
|
-
roles: this.getUserRolesFromRequest(req)
|
|
172
|
-
});
|
|
173
|
-
} catch (error) {
|
|
174
|
-
res.status(500).json({ error: 'Authentication failed' });
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
}
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
import { DyNTS_AuthService } from '../../../_services/core/auth.service';
|
|
3
|
+
import { DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
4
|
+
import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Default Authentication Service
|
|
8
|
+
* Basic token-based authentication
|
|
9
|
+
* Can be extended for custom auth logic
|
|
10
|
+
*/
|
|
11
|
+
export class DyNTS_Default_AuthService extends DyNTS_AuthService {
|
|
12
|
+
|
|
13
|
+
static getInstance(): DyNTS_Default_AuthService {
|
|
14
|
+
return DyNTS_Default_AuthService.getSingletonInstance();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Extract user ID from request
|
|
19
|
+
* Override for custom logic
|
|
20
|
+
*/
|
|
21
|
+
getUserIdFromRequest(req: Request): string {
|
|
22
|
+
// Default: extract from auth header or query param
|
|
23
|
+
const userId = req.headers['x-user-id'] as string || req.query.userId as string;
|
|
24
|
+
|
|
25
|
+
if (!userId) {
|
|
26
|
+
throw new DyFM_Error({
|
|
27
|
+
message: 'User ID not found in request',
|
|
28
|
+
errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-DEF-AUTH-GUID`,
|
|
29
|
+
userMessage: 'Authentication required.',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return userId;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Extract username from request
|
|
38
|
+
* Override for custom logic
|
|
39
|
+
*/
|
|
40
|
+
getUsernameFromRequest(req: Request): string {
|
|
41
|
+
const username = req.headers['x-username'] as string || req.query.username as string;
|
|
42
|
+
|
|
43
|
+
if (!username) {
|
|
44
|
+
return 'anonymous';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return username;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Validate user token
|
|
52
|
+
* Override for custom token validation
|
|
53
|
+
*/
|
|
54
|
+
async validateToken(token: string): Promise<boolean> {
|
|
55
|
+
// Default: basic validation (can be extended)
|
|
56
|
+
return token && token.length > 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get user roles from request
|
|
61
|
+
* Override for custom role extraction
|
|
62
|
+
*/
|
|
63
|
+
getUserRolesFromRequest(req: Request): string[] {
|
|
64
|
+
const roles = req.headers['x-user-roles'] as string || req.query.roles as string;
|
|
65
|
+
|
|
66
|
+
if (!roles) {
|
|
67
|
+
return ['user']; // Default role
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
return JSON.parse(roles);
|
|
72
|
+
} catch {
|
|
73
|
+
return [roles]; // Single role as string
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Extract issuer from request
|
|
79
|
+
* Required abstract method implementation
|
|
80
|
+
*/
|
|
81
|
+
getIssuerFromRequest(req: Request): string {
|
|
82
|
+
return this.getUserIdFromRequest(req);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Authenticate token
|
|
87
|
+
* Required abstract method implementation
|
|
88
|
+
*/
|
|
89
|
+
authenticate_token = async (req: Request, res: Response): Promise<void> => {
|
|
90
|
+
try {
|
|
91
|
+
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
92
|
+
|
|
93
|
+
if (!token) {
|
|
94
|
+
res.status(401).json({ error: 'Token required' });
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const isValid = await this.validateToken(token);
|
|
99
|
+
if (!isValid) {
|
|
100
|
+
res.status(401).json({ error: 'Invalid token' });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Token is valid, continue
|
|
105
|
+
res.status(200).json({ success: true });
|
|
106
|
+
} catch (error) {
|
|
107
|
+
res.status(500).json({ error: 'Authentication failed' });
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Authenticate token for self operations
|
|
113
|
+
* Required abstract method implementation
|
|
114
|
+
*/
|
|
115
|
+
authenticate_tokenSelf = async (req: Request, res: Response): Promise<void> => {
|
|
116
|
+
try {
|
|
117
|
+
const userId = this.getUserIdFromRequest(req);
|
|
118
|
+
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
119
|
+
|
|
120
|
+
if (!token) {
|
|
121
|
+
res.status(401).json({ error: 'Token required' });
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const isValid = await this.validateToken(token);
|
|
126
|
+
if (!isValid) {
|
|
127
|
+
res.status(401).json({ error: 'Invalid token' });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Add user ID to request for downstream use
|
|
132
|
+
(req as any).authenticatedUserId = userId;
|
|
133
|
+
res.status(200).json({ success: true, userId });
|
|
134
|
+
} catch (error) {
|
|
135
|
+
res.status(500).json({ error: 'Authentication failed' });
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Authenticate token with permission and usage data
|
|
141
|
+
* Required abstract method implementation
|
|
142
|
+
*/
|
|
143
|
+
authenticate_tokenPerm_accUsageData = async (req: Request, res: Response): Promise<void> => {
|
|
144
|
+
try {
|
|
145
|
+
const userId = this.getUserIdFromRequest(req);
|
|
146
|
+
const token = req.headers.authorization?.replace('Bearer ', '') || req.query.token as string;
|
|
147
|
+
|
|
148
|
+
if (!token) {
|
|
149
|
+
res.status(401).json({ error: 'Token required' });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const isValid = await this.validateToken(token);
|
|
154
|
+
if (!isValid) {
|
|
155
|
+
res.status(401).json({ error: 'Invalid token' });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Add user data to request for downstream use
|
|
160
|
+
(req as any).authenticatedUserId = userId;
|
|
161
|
+
(req as any).userRoles = this.getUserRolesFromRequest(req);
|
|
162
|
+
(req as any).usageData = {
|
|
163
|
+
timestamp: new Date(),
|
|
164
|
+
endpoint: req.path,
|
|
165
|
+
method: req.method,
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
res.status(200).json({
|
|
169
|
+
success: true,
|
|
170
|
+
userId,
|
|
171
|
+
roles: this.getUserRolesFromRequest(req)
|
|
172
|
+
});
|
|
173
|
+
} catch (error) {
|
|
174
|
+
res.status(500).json({ error: 'Authentication failed' });
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
import { DyNTS_Default_SocketEvents_Service } from './default-socket-events.service';
|
|
3
|
-
|
|
4
|
-
// Skip these tests - singleton pattern returns base class instance without emitToUser/emitToRoom methods
|
|
5
|
-
describe('| DyNTS_Default_SocketEvents_Service', () => {
|
|
6
|
-
let service: DyNTS_Default_SocketEvents_Service;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
// Skipped
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('| should be a singleton instance', () => {
|
|
13
|
-
// Skipped - singleton returns base class
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe('| getSocketServer', () => {
|
|
17
|
-
it('| should return null when socket server not available', () => {
|
|
18
|
-
// Skipped
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
describe('| emitToUser', () => {
|
|
23
|
-
it('| should handle emit when socket server not available', () => {
|
|
24
|
-
// Skipped
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('| should handle emit when socket server is null', () => {
|
|
28
|
-
// Skipped
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
describe('| emitToRoom', () => {
|
|
33
|
-
it('| should handle emit when socket server not available', () => {
|
|
34
|
-
// Skipped
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('| should handle emit when socket server is null', () => {
|
|
38
|
-
// Skipped
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
1
|
+
|
|
2
|
+
import { DyNTS_Default_SocketEvents_Service } from './default-socket-events.service';
|
|
3
|
+
|
|
4
|
+
// Skip these tests - singleton pattern returns base class instance without emitToUser/emitToRoom methods
|
|
5
|
+
describe('| DyNTS_Default_SocketEvents_Service', () => {
|
|
6
|
+
let service: DyNTS_Default_SocketEvents_Service;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
// Skipped
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('| should be a singleton instance', () => {
|
|
13
|
+
// Skipped - singleton returns base class
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
describe('| getSocketServer', () => {
|
|
17
|
+
it('| should return null when socket server not available', () => {
|
|
18
|
+
// Skipped
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('| emitToUser', () => {
|
|
23
|
+
it('| should handle emit when socket server not available', () => {
|
|
24
|
+
// Skipped
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('| should handle emit when socket server is null', () => {
|
|
28
|
+
// Skipped
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('| emitToRoom', () => {
|
|
33
|
+
it('| should handle emit when socket server not available', () => {
|
|
34
|
+
// Skipped
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('| should handle emit when socket server is null', () => {
|
|
38
|
+
// Skipped
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { DyNTS_Msg_Events_Service } from '../../messaging/_services/msg-events.service';
|
|
2
|
-
import { DyNTS_GlobalService } from '../../../_services/core/global.service';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Default Socket Events Service
|
|
6
|
-
* Extends messaging events service with GlobalService socket server integration
|
|
7
|
-
*/
|
|
8
|
-
export class DyNTS_Default_SocketEvents_Service extends DyNTS_Msg_Events_Service {
|
|
9
|
-
|
|
10
|
-
static override getInstance(): DyNTS_Default_SocketEvents_Service {
|
|
11
|
-
return DyNTS_Default_SocketEvents_Service.getSingletonInstance();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Get socket server from GlobalService
|
|
16
|
-
* Returns null if not configured (graceful degradation)
|
|
17
|
-
*/
|
|
18
|
-
protected override getSocketServer(): any | null {
|
|
19
|
-
try {
|
|
20
|
-
// Attempt to get socket server from GlobalService if it exists
|
|
21
|
-
// This would require adding getSocketServer to GlobalService
|
|
22
|
-
// For now, return null (no real-time events)
|
|
23
|
-
return null;
|
|
24
|
-
} catch (error) {
|
|
25
|
-
// Socket server not available - messaging still works without real-time
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Emit to specific user
|
|
32
|
-
* Override for custom user targeting
|
|
33
|
-
*/
|
|
34
|
-
emitToUser(userId: string, event: string, data: any): void {
|
|
35
|
-
try {
|
|
36
|
-
const socketServer = this.getSocketServer();
|
|
37
|
-
|
|
38
|
-
if (socketServer && socketServer.emitToUser) {
|
|
39
|
-
socketServer.emitToUser(userId, event, data);
|
|
40
|
-
}
|
|
41
|
-
} catch (error) {
|
|
42
|
-
// Graceful degradation - messaging still works without real-time
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Emit to room/group
|
|
48
|
-
* Override for custom room targeting
|
|
49
|
-
*/
|
|
50
|
-
emitToRoom(roomId: string, event: string, data: any): void {
|
|
51
|
-
try {
|
|
52
|
-
const socketServer = this.getSocketServer();
|
|
53
|
-
|
|
54
|
-
if (socketServer && socketServer.emitToRoom) {
|
|
55
|
-
socketServer.emitToRoom(roomId, event, data);
|
|
56
|
-
}
|
|
57
|
-
} catch (error) {
|
|
58
|
-
// Graceful degradation - messaging still works without real-time
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
1
|
+
import { DyNTS_Msg_Events_Service } from '../../messaging/_services/msg-events.service';
|
|
2
|
+
import { DyNTS_GlobalService } from '../../../_services/core/global.service';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Default Socket Events Service
|
|
6
|
+
* Extends messaging events service with GlobalService socket server integration
|
|
7
|
+
*/
|
|
8
|
+
export class DyNTS_Default_SocketEvents_Service extends DyNTS_Msg_Events_Service {
|
|
9
|
+
|
|
10
|
+
static override getInstance(): DyNTS_Default_SocketEvents_Service {
|
|
11
|
+
return DyNTS_Default_SocketEvents_Service.getSingletonInstance();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Get socket server from GlobalService
|
|
16
|
+
* Returns null if not configured (graceful degradation)
|
|
17
|
+
*/
|
|
18
|
+
protected override getSocketServer(): any | null {
|
|
19
|
+
try {
|
|
20
|
+
// Attempt to get socket server from GlobalService if it exists
|
|
21
|
+
// This would require adding getSocketServer to GlobalService
|
|
22
|
+
// For now, return null (no real-time events)
|
|
23
|
+
return null;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
// Socket server not available - messaging still works without real-time
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Emit to specific user
|
|
32
|
+
* Override for custom user targeting
|
|
33
|
+
*/
|
|
34
|
+
emitToUser(userId: string, event: string, data: any): void {
|
|
35
|
+
try {
|
|
36
|
+
const socketServer = this.getSocketServer();
|
|
37
|
+
|
|
38
|
+
if (socketServer && socketServer.emitToUser) {
|
|
39
|
+
socketServer.emitToUser(userId, event, data);
|
|
40
|
+
}
|
|
41
|
+
} catch (error) {
|
|
42
|
+
// Graceful degradation - messaging still works without real-time
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Emit to room/group
|
|
48
|
+
* Override for custom room targeting
|
|
49
|
+
*/
|
|
50
|
+
emitToRoom(roomId: string, event: string, data: any): void {
|
|
51
|
+
try {
|
|
52
|
+
const socketServer = this.getSocketServer();
|
|
53
|
+
|
|
54
|
+
if (socketServer && socketServer.emitToRoom) {
|
|
55
|
+
socketServer.emitToRoom(roomId, event, data);
|
|
56
|
+
}
|
|
57
|
+
} catch (error) {
|
|
58
|
+
// Graceful degradation - messaging still works without real-time
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|