@futdevpro/nts-dynamo 1.15.103 → 1.15.104
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/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/__documentations/plans/BEDROCK-HYPERPLAN.md +95 -95
- package/_specifications/BACKLOG.md +92 -92
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/build/_collections/client-safe-error.util.d.ts +9 -3
- package/build/_collections/client-safe-error.util.d.ts.map +1 -1
- package/build/_collections/client-safe-error.util.js +32 -3
- package/build/_collections/client-safe-error.util.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +2 -2
- package/pnpm-workspace.yaml +5 -5
- 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/client-safe-error.util.spec.ts +58 -2
- package/src/_collections/client-safe-error.util.ts +38 -3
- 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/global-settings.const.ts +126 -126
- 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 +669 -669
- package/src/_models/control-models/endpoint-params.control-model.ts +628 -628
- 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 +171 -171
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/global-settings.interface.ts +286 -286
- 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 +36 -36
- 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-code-chunking.util.spec.ts +295 -295
- package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +518 -518
- 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-code-chunk.interface.ts +68 -68
- 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 +30 -30
- 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 +332 -332
- 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 +634 -634
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1033 -1033
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding-mock.service.spec.ts +115 -115
- package/src/_modules/ai/_services/ai-embedding-mock.service.ts +212 -212
- package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
- package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +110 -110
- 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 +519 -519
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
- package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +371 -371
- package/src/_modules/ai/index.ts +23 -23
- 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/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -161
- package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
- package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
- package/src/_modules/data-readers/index.ts +11 -11
- 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 +35 -35
- package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -59
- 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 +480 -480
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +198 -198
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +146 -146
- package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
- package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +106 -106
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +507 -507
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +272 -272
- package/src/_modules/local-vector-search/index.ts +16 -16
- package/src/_modules/logs/index.ts +11 -11
- package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -142
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -120
- package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
- package/src/_modules/mcp/index.ts +13 -13
- 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/scheduler/_models/scheduler-job.interface.ts +35 -35
- package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
- package/src/_modules/scheduler/index.ts +8 -8
- package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
- package/src/_modules/scheduler/scheduler.controller.ts +69 -69
- package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
- package/src/_modules/scheduler/scheduler.service.ts +176 -176
- package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
- package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -81
- package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -306
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -295
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -118
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -105
- package/src/_modules/scoped-config/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
- package/src/_modules/server/errors/errors.control-service.ts +100 -100
- package/src/_modules/server/errors/errors.controller.spec.ts +268 -268
- package/src/_modules/server/errors/errors.controller.ts +515 -515
- package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
- 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 +576 -576
- package/src/_modules/server/server-status/server-status.control-service.ts +396 -396
- package/src/_modules/server/server-status/server-status.controller.spec.ts +255 -255
- package/src/_modules/server/server-status/server-status.controller.ts +292 -292
- 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 +642 -642
- 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 +209 -209
- package/src/_services/base/archive-data.service.ts +223 -223
- package/src/_services/base/data.service.spec.ts +729 -729
- package/src/_services/base/data.service.ts +2758 -2758
- package/src/_services/base/db.service.spec.ts +160 -160
- package/src/_services/base/db.service.ts +1644 -1644
- 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 +757 -757
- package/src/_services/core/global.service.spec.ts +292 -292
- package/src/_services/core/global.service.ts +487 -487
- package/src/_services/core/memory-guard.service.spec.ts +245 -245
- package/src/_services/core/memory-guard.service.ts +481 -481
- 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/server/app.server.ts +1985 -1985
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +100 -100
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/.dynamo/logs/cicd-pipeline/output.log +0 -2796
- package/.dynamo/logs/cicd-pipeline/status.json +0 -74
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
require('ts-node').register({
|
|
2
|
-
transpileOnly: true,
|
|
3
|
-
compilerOptions: {
|
|
4
|
-
module: 'commonjs',
|
|
5
|
-
esModuleInterop: true,
|
|
6
|
-
allowSyntheticDefaultImports: true
|
|
7
|
-
}
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
// Set default timeout for all tests immediately
|
|
11
|
-
// This ensures that failed tests timeout quickly (2 seconds) instead of running for too long
|
|
12
|
-
// We set it both immediately and in a delayed callback to ensure it works even if spec files override it
|
|
13
|
-
// NOTE: This is also set in jasmine.json and jasmine.coverage.json - keep all 3 in sync!
|
|
14
|
-
const FORCE_TIMEOUT = 2000; // 2 seconds
|
|
15
|
-
|
|
16
|
-
// Function to force timeout setting - agresszíven felülírja minden timeout beállítást
|
|
17
|
-
const forceTimeout = () => {
|
|
18
|
-
if (typeof jasmine !== 'undefined') {
|
|
19
|
-
jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
20
|
-
}
|
|
21
|
-
if (typeof global !== 'undefined' && global.jasmine) {
|
|
22
|
-
global.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
23
|
-
}
|
|
24
|
-
// Try to access jasmine through window if available (for browser environments)
|
|
25
|
-
if (typeof window !== 'undefined' && window.jasmine) {
|
|
26
|
-
window.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// Set timeout immediately if jasmine is available
|
|
31
|
-
forceTimeout();
|
|
32
|
-
|
|
33
|
-
// Agresszív timeout felülírás - folyamatosan felülírja minden 100ms-ben
|
|
34
|
-
// Ez biztosítja, hogy még a spec fájlokban lévő timeout beállítások is felülírásra kerüljenek
|
|
35
|
-
const aggressiveTimeoutInterval = setInterval(() => {
|
|
36
|
-
forceTimeout();
|
|
37
|
-
}, 100);
|
|
38
|
-
|
|
39
|
-
// Stop the aggressive interval after 10 seconds (enough time for all tests to start)
|
|
40
|
-
setTimeout(() => {
|
|
41
|
-
clearInterval(aggressiveTimeoutInterval);
|
|
42
|
-
}, 10000);
|
|
43
|
-
|
|
44
|
-
// Hook into jasmine's environment if available
|
|
45
|
-
const initTimeout = () => {
|
|
46
|
-
// Try both global and local jasmine
|
|
47
|
-
const jasmineObj = (typeof global !== 'undefined' && global.jasmine) || (typeof jasmine !== 'undefined' ? jasmine : null);
|
|
48
|
-
|
|
49
|
-
if (jasmineObj && typeof jasmineObj.getEnv === 'function') {
|
|
50
|
-
try {
|
|
51
|
-
const env = jasmineObj.getEnv();
|
|
52
|
-
if (env) {
|
|
53
|
-
// Force timeout immediately
|
|
54
|
-
forceTimeout();
|
|
55
|
-
|
|
56
|
-
// Add a global beforeEach that runs in every spec file to force timeout
|
|
57
|
-
env.beforeEach(() => {
|
|
58
|
-
forceTimeout();
|
|
59
|
-
});
|
|
60
|
-
// Also add afterEach to ensure timeout is set after each test
|
|
61
|
-
env.afterEach(() => {
|
|
62
|
-
forceTimeout();
|
|
63
|
-
});
|
|
64
|
-
// Add a reporter that forces timeout on every spec start and done
|
|
65
|
-
// This ensures that even if a spec file sets timeout, it gets overridden
|
|
66
|
-
env.addReporter({
|
|
67
|
-
specStarted: () => {
|
|
68
|
-
forceTimeout();
|
|
69
|
-
},
|
|
70
|
-
specDone: () => {
|
|
71
|
-
forceTimeout();
|
|
72
|
-
},
|
|
73
|
-
suiteStarted: () => {
|
|
74
|
-
forceTimeout();
|
|
75
|
-
},
|
|
76
|
-
suiteDone: () => {
|
|
77
|
-
forceTimeout();
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
} catch (e) {
|
|
82
|
-
// Ignore errors if jasmine is not fully initialized yet
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
// Try to initialize multiple times to catch late initialization
|
|
88
|
-
initTimeout();
|
|
89
|
-
setTimeout(initTimeout, 0);
|
|
90
|
-
setTimeout(initTimeout, 50);
|
|
91
|
-
setTimeout(initTimeout, 200);
|
|
92
|
-
setTimeout(initTimeout, 1000);
|
|
93
|
-
|
|
1
|
+
require('ts-node').register({
|
|
2
|
+
transpileOnly: true,
|
|
3
|
+
compilerOptions: {
|
|
4
|
+
module: 'commonjs',
|
|
5
|
+
esModuleInterop: true,
|
|
6
|
+
allowSyntheticDefaultImports: true
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// Set default timeout for all tests immediately
|
|
11
|
+
// This ensures that failed tests timeout quickly (2 seconds) instead of running for too long
|
|
12
|
+
// We set it both immediately and in a delayed callback to ensure it works even if spec files override it
|
|
13
|
+
// NOTE: This is also set in jasmine.json and jasmine.coverage.json - keep all 3 in sync!
|
|
14
|
+
const FORCE_TIMEOUT = 2000; // 2 seconds
|
|
15
|
+
|
|
16
|
+
// Function to force timeout setting - agresszíven felülírja minden timeout beállítást
|
|
17
|
+
const forceTimeout = () => {
|
|
18
|
+
if (typeof jasmine !== 'undefined') {
|
|
19
|
+
jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
20
|
+
}
|
|
21
|
+
if (typeof global !== 'undefined' && global.jasmine) {
|
|
22
|
+
global.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
23
|
+
}
|
|
24
|
+
// Try to access jasmine through window if available (for browser environments)
|
|
25
|
+
if (typeof window !== 'undefined' && window.jasmine) {
|
|
26
|
+
window.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Set timeout immediately if jasmine is available
|
|
31
|
+
forceTimeout();
|
|
32
|
+
|
|
33
|
+
// Agresszív timeout felülírás - folyamatosan felülírja minden 100ms-ben
|
|
34
|
+
// Ez biztosítja, hogy még a spec fájlokban lévő timeout beállítások is felülírásra kerüljenek
|
|
35
|
+
const aggressiveTimeoutInterval = setInterval(() => {
|
|
36
|
+
forceTimeout();
|
|
37
|
+
}, 100);
|
|
38
|
+
|
|
39
|
+
// Stop the aggressive interval after 10 seconds (enough time for all tests to start)
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
clearInterval(aggressiveTimeoutInterval);
|
|
42
|
+
}, 10000);
|
|
43
|
+
|
|
44
|
+
// Hook into jasmine's environment if available
|
|
45
|
+
const initTimeout = () => {
|
|
46
|
+
// Try both global and local jasmine
|
|
47
|
+
const jasmineObj = (typeof global !== 'undefined' && global.jasmine) || (typeof jasmine !== 'undefined' ? jasmine : null);
|
|
48
|
+
|
|
49
|
+
if (jasmineObj && typeof jasmineObj.getEnv === 'function') {
|
|
50
|
+
try {
|
|
51
|
+
const env = jasmineObj.getEnv();
|
|
52
|
+
if (env) {
|
|
53
|
+
// Force timeout immediately
|
|
54
|
+
forceTimeout();
|
|
55
|
+
|
|
56
|
+
// Add a global beforeEach that runs in every spec file to force timeout
|
|
57
|
+
env.beforeEach(() => {
|
|
58
|
+
forceTimeout();
|
|
59
|
+
});
|
|
60
|
+
// Also add afterEach to ensure timeout is set after each test
|
|
61
|
+
env.afterEach(() => {
|
|
62
|
+
forceTimeout();
|
|
63
|
+
});
|
|
64
|
+
// Add a reporter that forces timeout on every spec start and done
|
|
65
|
+
// This ensures that even if a spec file sets timeout, it gets overridden
|
|
66
|
+
env.addReporter({
|
|
67
|
+
specStarted: () => {
|
|
68
|
+
forceTimeout();
|
|
69
|
+
},
|
|
70
|
+
specDone: () => {
|
|
71
|
+
forceTimeout();
|
|
72
|
+
},
|
|
73
|
+
suiteStarted: () => {
|
|
74
|
+
forceTimeout();
|
|
75
|
+
},
|
|
76
|
+
suiteDone: () => {
|
|
77
|
+
forceTimeout();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
} catch (e) {
|
|
82
|
+
// Ignore errors if jasmine is not fully initialized yet
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
// Try to initialize multiple times to catch late initialization
|
|
88
|
+
initTimeout();
|
|
89
|
+
setTimeout(initTimeout, 0);
|
|
90
|
+
setTimeout(initTimeout, 50);
|
|
91
|
+
setTimeout(initTimeout, 200);
|
|
92
|
+
setTimeout(initTimeout, 1000);
|
|
93
|
+
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"reporters": [
|
|
3
|
-
{
|
|
4
|
-
"name": "jasmine-json-reporter",
|
|
5
|
-
"options": {
|
|
6
|
-
"pretty": true
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"spec_dir": "src/",
|
|
11
|
-
"spec_files": [
|
|
12
|
-
"**/*.spec.ts",
|
|
13
|
-
"**/*[sS]pec.ts"
|
|
14
|
-
],
|
|
15
|
-
"helpers": [
|
|
16
|
-
"../../spec/support/helpers/ts-node-helper.js"
|
|
17
|
-
],
|
|
18
|
-
"env": {
|
|
19
|
-
"stopSpecOnExpectationFailure": false,
|
|
20
|
-
"random": true,
|
|
21
|
-
"defaultTimeoutInterval": 2000
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
1
|
+
{
|
|
2
|
+
"reporters": [
|
|
3
|
+
{
|
|
4
|
+
"name": "jasmine-json-reporter",
|
|
5
|
+
"options": {
|
|
6
|
+
"pretty": true
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"spec_dir": "src/",
|
|
11
|
+
"spec_files": [
|
|
12
|
+
"**/*.spec.ts",
|
|
13
|
+
"**/*[sS]pec.ts"
|
|
14
|
+
],
|
|
15
|
+
"helpers": [
|
|
16
|
+
"../../spec/support/helpers/ts-node-helper.js"
|
|
17
|
+
],
|
|
18
|
+
"env": {
|
|
19
|
+
"stopSpecOnExpectationFailure": false,
|
|
20
|
+
"random": true,
|
|
21
|
+
"defaultTimeoutInterval": 2000
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"reporters": [
|
|
3
|
-
{
|
|
4
|
-
"name": "jasmine-json-reporter",
|
|
5
|
-
"options": {
|
|
6
|
-
"pretty": true
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"spec_dir": "build/",
|
|
11
|
-
"spec_files": [
|
|
12
|
-
"**/*.spec.ts",
|
|
13
|
-
"**/*.spec.js",
|
|
14
|
-
"**/*[sS]pec.ts"
|
|
15
|
-
],
|
|
16
|
-
"helpers": [
|
|
17
|
-
"../spec/support/helpers/ts-node-helper.js"
|
|
18
|
-
],
|
|
19
|
-
"env": {
|
|
20
|
-
"stopSpecOnExpectationFailure": false,
|
|
21
|
-
"random": true,
|
|
22
|
-
"defaultTimeoutInterval": 2000
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"reporters": [
|
|
3
|
+
{
|
|
4
|
+
"name": "jasmine-json-reporter",
|
|
5
|
+
"options": {
|
|
6
|
+
"pretty": true
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
],
|
|
10
|
+
"spec_dir": "build/",
|
|
11
|
+
"spec_files": [
|
|
12
|
+
"**/*.spec.ts",
|
|
13
|
+
"**/*.spec.js",
|
|
14
|
+
"**/*[sS]pec.ts"
|
|
15
|
+
],
|
|
16
|
+
"helpers": [
|
|
17
|
+
"../spec/support/helpers/ts-node-helper.js"
|
|
18
|
+
],
|
|
19
|
+
"env": {
|
|
20
|
+
"stopSpecOnExpectationFailure": false,
|
|
21
|
+
"random": true,
|
|
22
|
+
"defaultTimeoutInterval": 2000
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { DyNTS_getArchivedDBName, DyNTS_archiveSuffix } from './archive.util';
|
|
2
|
-
|
|
3
|
-
describe('| DyNTS_getArchivedDBName', () => {
|
|
4
|
-
it('| should append the archive suffix to the database name', () => {
|
|
5
|
-
const dbName = 'TestDB';
|
|
6
|
-
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
7
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('| should return only the archive suffix when the database name is an empty string', () => {
|
|
11
|
-
const dbName = '';
|
|
12
|
-
const expectedArchivedName = `_${DyNTS_archiveSuffix}`;
|
|
13
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('| should handle database names with special characters', () => {
|
|
17
|
-
const dbName = 'Test_DB-123!';
|
|
18
|
-
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
19
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('| should handle database names with spaces', () => {
|
|
23
|
-
const dbName = 'Test DB Name';
|
|
24
|
-
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
25
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('| should handle database names with numbers', () => {
|
|
29
|
-
const dbName = 'DB123';
|
|
30
|
-
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
31
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('| should handle very long database names', () => {
|
|
35
|
-
const dbName = 'A'.repeat(100);
|
|
36
|
-
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
37
|
-
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('| should use the correct archive suffix constant', () => {
|
|
41
|
-
expect(DyNTS_archiveSuffix).toBe('archived');
|
|
42
|
-
const dbName = 'TestDB';
|
|
43
|
-
const result = DyNTS_getArchivedDBName(dbName);
|
|
44
|
-
expect(result).toContain('archived');
|
|
45
|
-
expect(result).toBe('TestDB_archived');
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('| DyNTS_archiveSuffix', () => {
|
|
50
|
-
it('| should have the correct value', () => {
|
|
51
|
-
expect(DyNTS_archiveSuffix).toBe('archived');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('| should be a string', () => {
|
|
55
|
-
expect(typeof DyNTS_archiveSuffix).toBe('string');
|
|
56
|
-
});
|
|
57
|
-
});
|
|
1
|
+
import { DyNTS_getArchivedDBName, DyNTS_archiveSuffix } from './archive.util';
|
|
2
|
+
|
|
3
|
+
describe('| DyNTS_getArchivedDBName', () => {
|
|
4
|
+
it('| should append the archive suffix to the database name', () => {
|
|
5
|
+
const dbName = 'TestDB';
|
|
6
|
+
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
7
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('| should return only the archive suffix when the database name is an empty string', () => {
|
|
11
|
+
const dbName = '';
|
|
12
|
+
const expectedArchivedName = `_${DyNTS_archiveSuffix}`;
|
|
13
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('| should handle database names with special characters', () => {
|
|
17
|
+
const dbName = 'Test_DB-123!';
|
|
18
|
+
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
19
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('| should handle database names with spaces', () => {
|
|
23
|
+
const dbName = 'Test DB Name';
|
|
24
|
+
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
25
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('| should handle database names with numbers', () => {
|
|
29
|
+
const dbName = 'DB123';
|
|
30
|
+
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
31
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('| should handle very long database names', () => {
|
|
35
|
+
const dbName = 'A'.repeat(100);
|
|
36
|
+
const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
|
|
37
|
+
expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('| should use the correct archive suffix constant', () => {
|
|
41
|
+
expect(DyNTS_archiveSuffix).toBe('archived');
|
|
42
|
+
const dbName = 'TestDB';
|
|
43
|
+
const result = DyNTS_getArchivedDBName(dbName);
|
|
44
|
+
expect(result).toContain('archived');
|
|
45
|
+
expect(result).toBe('TestDB_archived');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
describe('| DyNTS_archiveSuffix', () => {
|
|
50
|
+
it('| should have the correct value', () => {
|
|
51
|
+
expect(DyNTS_archiveSuffix).toBe('archived');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('| should be a string', () => {
|
|
55
|
+
expect(typeof DyNTS_archiveSuffix).toBe('string');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/** Suffix appended to database names when archived. */
|
|
4
|
-
export const DyNTS_archiveSuffix = 'archived';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Create the archive database name for a given base database.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* const name = DyNTS_getArchivedDBName('users');
|
|
12
|
-
* // => 'users_archived'
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
export function DyNTS_getArchivedDBName(dbName: string): string {
|
|
16
|
-
return `${dbName}_${DyNTS_archiveSuffix}`;
|
|
17
|
-
}
|
|
18
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/** Suffix appended to database names when archived. */
|
|
4
|
+
export const DyNTS_archiveSuffix = 'archived';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Create the archive database name for a given base database.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const name = DyNTS_getArchivedDBName('users');
|
|
12
|
+
* // => 'users_archived'
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function DyNTS_getArchivedDBName(dbName: string): string {
|
|
16
|
+
return `${dbName}_${DyNTS_archiveSuffix}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { second } from '@futdevpro/fsm-dynamo';
|
|
3
|
-
import { ConnectOptions } from 'mongoose';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const DyNTS_atlasDefaultDbOptions: ConnectOptions = {
|
|
7
|
-
directConnection: false,
|
|
8
|
-
serverSelectionTimeoutMS: 5 * second,
|
|
9
|
-
connectTimeoutMS: 10 * second,
|
|
1
|
+
|
|
2
|
+
import { second } from '@futdevpro/fsm-dynamo';
|
|
3
|
+
import { ConnectOptions } from 'mongoose';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export const DyNTS_atlasDefaultDbOptions: ConnectOptions = {
|
|
7
|
+
directConnection: false,
|
|
8
|
+
serverSelectionTimeoutMS: 5 * second,
|
|
9
|
+
connectTimeoutMS: 10 * second,
|
|
10
10
|
}
|
|
@@ -43,18 +43,74 @@ describe('| DyNTS_ClientSafeError_Util', (): void => {
|
|
|
43
43
|
expect(safe['errors']).toBeUndefined();
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
it('| MEGTARTJA a kliens-fogyasztott
|
|
46
|
+
it('| MEGTARTJA a kliens-fogyasztott mező-alakot (_message, _errorCodes, __userMessage)', (): void => {
|
|
47
47
|
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
48
48
|
const error: DyFM_Error = buildRichError();
|
|
49
49
|
|
|
50
50
|
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
// QA2-005: a `_message` ALAKJA marad, de a TARTALMA a user-safe `__userMessage` —
|
|
53
|
+
// a technikai 'internal reason' (belső URL / nyers DB-hiba osztály) nem megy ki
|
|
54
|
+
expect(safe['_message']).toBe('user facing message');
|
|
53
55
|
expect(safe['__userMessage']).toBe('user facing message');
|
|
54
56
|
expect(Array.isArray(safe['_errorCodes'])).toBeTrue();
|
|
55
57
|
expect((safe['_errorCodes'] as string[]).join(',')).toContain('DyNTS-TEST-CSE0');
|
|
56
58
|
});
|
|
57
59
|
|
|
60
|
+
it('| QA2-005: a technikai _message / _messages NEM szivárog ki (test-env-ben sem)', (): void => {
|
|
61
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
62
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
63
|
+
message: 'API call "registerAccount" failed on the other end!\nurl: http://auth-service:39005/api/account/register' +
|
|
64
|
+
'\nerror response found: E11000 duplicate key error collection',
|
|
65
|
+
userMessage: 'Registration failed!',
|
|
66
|
+
errorCode: 'DyNTS-TEST-CSE1',
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
70
|
+
const serialized: string = JSON.stringify(safe);
|
|
71
|
+
|
|
72
|
+
expect(safe['_message']).toBe('Registration failed!');
|
|
73
|
+
expect(safe['_messages']).toBeUndefined();
|
|
74
|
+
expect(serialized).not.toContain('auth-service:39005');
|
|
75
|
+
expect(serialized).not.toContain('E11000');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('| QA2-005: __userMessage nélkül a _message generikus szövegre cserélődik (nem a technikai)', (): void => {
|
|
79
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
80
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
81
|
+
message: 'raw internal detail: http://auth-service:39005/api',
|
|
82
|
+
errorCode: 'DyNTS-TEST-CSE2',
|
|
83
|
+
});
|
|
84
|
+
// a konstruktor default-userMessage viselkedésétől függetlenül: a technikai szöveg nem mehet ki
|
|
85
|
+
(error as unknown as Record<string, unknown>)['__userMessage'] = undefined;
|
|
86
|
+
|
|
87
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
88
|
+
|
|
89
|
+
expect(typeof safe['_message']).toBe('string');
|
|
90
|
+
expect(safe['_message'] as string).not.toContain('auth-service:39005');
|
|
91
|
+
expect((safe['_message'] as string).length).toBeGreaterThan(0);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('| QA2-005: az additionalContent.requestDebug env-FÜGGETLENÜL strip-elve, a többi mező marad (non-prod)', (): void => {
|
|
95
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
96
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
97
|
+
message: 'internal reason',
|
|
98
|
+
userMessage: 'user facing message',
|
|
99
|
+
errorCode: 'DyNTS-TEST-CSE3',
|
|
100
|
+
additionalContent: {
|
|
101
|
+
userId: 'u1',
|
|
102
|
+
requestDebug: { headerKeys: ['authorization', 'cookie'], remoteAddress: '172.18.0.5' },
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
107
|
+
const additionalContent: Record<string, unknown> = safe['additionalContent'] as Record<string, unknown>;
|
|
108
|
+
|
|
109
|
+
expect(additionalContent).toBeDefined();
|
|
110
|
+
expect(additionalContent['userId']).toBe('u1');
|
|
111
|
+
expect(additionalContent['requestDebug']).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
|
|
58
114
|
it('| nem-prod env: az additionalContent (diagnosztikai snapshot) MARAD', (): void => {
|
|
59
115
|
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
60
116
|
const error: DyFM_Error = buildRichError();
|
|
@@ -12,11 +12,15 @@ import { DyNTS_global_settings } from './global-settings.const';
|
|
|
12
12
|
* 1. MINDIG ki (env-független, kliens sehol nem fogyasztja → 0 regresszió):
|
|
13
13
|
* `__localStack`, `stack`, `___systemVersion`, `___issuer`, `___issuerSystem`,
|
|
14
14
|
* `___issuerService`, `confidentialContent`, `error`, `errors` (a nyers belső error-lánc
|
|
15
|
-
* stack-eket hordoz).
|
|
15
|
+
* stack-eket hordoz), `_messages` (QA2-005: technikai message-lánc — belső URL-ek, DB-hibák).
|
|
16
16
|
* 2. CSAK prod-ban ki: `additionalContent` — test/dev környezetben a diagnosztikai state-snapshot
|
|
17
|
-
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem.
|
|
17
|
+
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem. KIVÉTEL (QA2-005):
|
|
18
|
+
* az `additionalContent.requestDebug` (FR-071 header-lista/belső-IP snapshot) env-FÜGGETLENÜL
|
|
19
|
+
* strip-elve — csak az error-store-ba perzisztálódik.
|
|
18
20
|
* 3. MARAD (kliens-kompatibilitás — a FDP-kliens error-interceptorok fogyasztják):
|
|
19
|
-
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`.
|
|
21
|
+
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`. QA2-005: a `_message`
|
|
22
|
+
* TARTALMA a user-safe `__userMessage`-re cserélve (a technikai üzenet — belső BE-BE URL,
|
|
23
|
+
* nyers Mongo E11000 — nem hagyhatja el a szervert; a mező-ALAK a kliens-kompat miatt marad).
|
|
20
24
|
*
|
|
21
25
|
* NEM-DyFM error (plain Error / axios-error / bármi más): minimál `{ message }` shape — a plain
|
|
22
26
|
* Error eddig is üres `{}`-ként szerializálódott (non-enumerable mezők), az axios-jellegű error-ok
|
|
@@ -38,8 +42,16 @@ export class DyNTS_ClientSafeError_Util {
|
|
|
38
42
|
'confidentialContent',
|
|
39
43
|
'error',
|
|
40
44
|
'errors',
|
|
45
|
+
// QA2-005 (dynamo-builder MP-23 QA-gate, 2026-07-18): a technikai message-LÁNC — belső BE-BE
|
|
46
|
+
// URL-eket (pl. http://auth-service:39005/...), nyers DB-driver-hibákat (Mongo E11000) hordoz;
|
|
47
|
+
// a kliens nem fogyasztja (a display-lánc `__userMessage` → `_message`), az error-store-ban marad.
|
|
48
|
+
'_messages',
|
|
41
49
|
];
|
|
42
50
|
|
|
51
|
+
/** QA2-005 — generikus `_message` fallback, ha az errornak nincs `__userMessage`-e. */
|
|
52
|
+
private static readonly genericClientMessage: string =
|
|
53
|
+
'An internal error occurred.\nPlease contact the responsible development team.';
|
|
54
|
+
|
|
43
55
|
/**
|
|
44
56
|
* Az error kliens-safe formára hozása a HTTP-response-küldés előtt.
|
|
45
57
|
* DyFM_Error: in-place strip (1-3. szabályok szerint); nem-DyFM object: minimál `{ message }`.
|
|
@@ -53,6 +65,29 @@ export class DyNTS_ClientSafeError_Util {
|
|
|
53
65
|
delete dyError[key];
|
|
54
66
|
}
|
|
55
67
|
|
|
68
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
69
|
+
// QA2-005 — info-disclosure vágás env-FÜGGETLENÜL (test-env-ben SEM mehet ki):
|
|
70
|
+
// a) `_message` (technikai üzenet): belső BE-BE URL-t / nyers Mongo-hibát hordozhat →
|
|
71
|
+
// a response-ban a user-safe `__userMessage`-dzsel helyettesítjük. A mező ALAKJA
|
|
72
|
+
// megmarad (a kliens-interceptorok / `DyFM_extractErrorMessage` fallback-lánca és a
|
|
73
|
+
// `_message`-jelenlét-heurisztikák változatlanul működnek); a TELJES technikai üzenet
|
|
74
|
+
// az error-store-ban marad (a globalErrorHandler a strip ELŐTT perzisztál).
|
|
75
|
+
// b) `additionalContent.requestDebug` (FR-071 request-snapshot: header-kulcs-lista,
|
|
76
|
+
// belső IP, params/query): csak az error-store-ba — a response-ból mindig kimarad;
|
|
77
|
+
// az additionalContent TÖBBI (app-szintű diagnosztikai) mezője non-prod env-ben marad.
|
|
78
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
79
|
+
const userMessage: unknown = dyError['__userMessage'];
|
|
80
|
+
|
|
81
|
+
dyError['_message'] = (typeof userMessage === 'string' && userMessage)
|
|
82
|
+
? userMessage
|
|
83
|
+
: DyNTS_ClientSafeError_Util.genericClientMessage;
|
|
84
|
+
|
|
85
|
+
const additionalContent: unknown = dyError['additionalContent'];
|
|
86
|
+
|
|
87
|
+
if (additionalContent && typeof additionalContent === 'object') {
|
|
88
|
+
delete (additionalContent as Record<string, unknown>)['requestDebug'];
|
|
89
|
+
}
|
|
90
|
+
|
|
56
91
|
// prod: a diagnosztikai state-snapshot sem megy ki; test/dev: szándékosan marad (debug-UX)
|
|
57
92
|
if (DyNTS_global_settings.env_settings.environment === DyFM_EnvironmentFlag.prod) {
|
|
58
93
|
delete dyError['additionalContent'];
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { DyNTS_defaultFallbackCacheMaxAge } from './default-fallback-cache-max-age.const';
|
|
2
|
-
|
|
3
|
-
describe('| DyNTS_defaultFallbackCacheMaxAge', () => {
|
|
4
|
-
it('| should export default fallback cache max-age as 0', () => {
|
|
5
|
-
expect(DyNTS_defaultFallbackCacheMaxAge).toBe(0);
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
it('| should be a number', () => {
|
|
9
|
-
expect(typeof DyNTS_defaultFallbackCacheMaxAge).toBe('number');
|
|
10
|
-
});
|
|
11
|
-
});
|
|
1
|
+
import { DyNTS_defaultFallbackCacheMaxAge } from './default-fallback-cache-max-age.const';
|
|
2
|
+
|
|
3
|
+
describe('| DyNTS_defaultFallbackCacheMaxAge', () => {
|
|
4
|
+
it('| should export default fallback cache max-age as 0', () => {
|
|
5
|
+
expect(DyNTS_defaultFallbackCacheMaxAge).toBe(0);
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
it('| should be a number', () => {
|
|
9
|
+
expect(typeof DyNTS_defaultFallbackCacheMaxAge).toBe('number');
|
|
10
|
+
});
|
|
11
|
+
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** SPA fallback (pl. index.html) alapértelmezett cache max-age másodpercben (0 = ne cache-eljük). */
|
|
2
|
-
export const DyNTS_defaultFallbackCacheMaxAge: number = 0;
|
|
1
|
+
/** SPA fallback (pl. index.html) alapértelmezett cache max-age másodpercben (0 = ne cache-eljük). */
|
|
2
|
+
export const DyNTS_defaultFallbackCacheMaxAge: number = 0;
|