@futdevpro/nts-dynamo 1.15.98 → 1.15.100
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/logs/cicd-pipeline/output.log +2875 -0
- package/.dynamo/logs/cicd-pipeline/status.json +74 -0
- 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 +33 -0
- package/build/_collections/client-safe-error.util.d.ts.map +1 -0
- package/build/_collections/client-safe-error.util.js +68 -0
- package/build/_collections/client-safe-error.util.js.map +1 -0
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +14 -11
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +5 -1
- package/build/_services/server/app.server.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +1 -1
- 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 +95 -0
- package/src/_collections/client-safe-error.util.ts +72 -0
- 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 +109 -109
- 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 -627
- package/src/_models/control-models/endpoint-params.control-model.ts +628 -627
- 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 +259 -259
- 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-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 +272 -272
- 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 +209 -209
- package/src/_services/base/archive-data.service.ts +224 -224
- package/src/_services/base/data.service.spec.ts +729 -729
- package/src/_services/base/data.service.ts +2744 -2744
- package/src/_services/base/db.service.spec.ts +160 -160
- package/src/_services/base/db.service.ts +1592 -1592
- 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 +1945 -1941
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +101 -100
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
|
@@ -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
|
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { DyFM_EnvironmentFlag, DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
|
|
3
|
+
import { DyNTS_ClientSafeError_Util } from './client-safe-error.util';
|
|
4
|
+
import { DyNTS_global_settings } from './global-settings.const';
|
|
5
|
+
|
|
6
|
+
// A kliens-safe error-strip SSOT tesztjei (BFR-FDPAUTHSERVICE-002) — a 3 strip-szabály +
|
|
7
|
+
// a nem-DyFM fail-safe ág. A DyFM_Error mező-neveit a valós instansán verifikáljuk (no-guessing).
|
|
8
|
+
describe('| DyNTS_ClientSafeError_Util', (): void => {
|
|
9
|
+
|
|
10
|
+
/** Egy teljes-mezős DyFM_Error a strip-tesztekhez (a leak-vektor mezőkkel feltöltve). */
|
|
11
|
+
function buildRichError(): DyFM_Error {
|
|
12
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
13
|
+
message: 'internal reason',
|
|
14
|
+
userMessage: 'user facing message',
|
|
15
|
+
errorCode: 'DyNTS-TEST-CSE0',
|
|
16
|
+
error: new Error('inner cause'),
|
|
17
|
+
additionalContent: { userId: 'u1' },
|
|
18
|
+
confidentialContent: { secret: 's3cr3t' },
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return error;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
afterEach((): void => {
|
|
25
|
+
// a prod-teszt env-átállítását visszaállítjuk (a global-settings megosztott singleton)
|
|
26
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('| MINDIG strip-eli a leak-vektor mezőket (nem-prod env-ben is)', (): void => {
|
|
30
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
31
|
+
const error: DyFM_Error = buildRichError();
|
|
32
|
+
|
|
33
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
34
|
+
|
|
35
|
+
expect(safe['__localStack']).toBeUndefined();
|
|
36
|
+
expect(safe['stack']).toBeUndefined();
|
|
37
|
+
expect(safe['___systemVersion']).toBeUndefined();
|
|
38
|
+
expect(safe['___issuer']).toBeUndefined();
|
|
39
|
+
expect(safe['___issuerSystem']).toBeUndefined();
|
|
40
|
+
expect(safe['___issuerService']).toBeUndefined();
|
|
41
|
+
expect(safe['confidentialContent']).toBeUndefined();
|
|
42
|
+
expect(safe['error']).toBeUndefined();
|
|
43
|
+
expect(safe['errors']).toBeUndefined();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('| MEGTARTJA a kliens-fogyasztott mezőket (_message, _errorCodes, __userMessage)', (): void => {
|
|
47
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
48
|
+
const error: DyFM_Error = buildRichError();
|
|
49
|
+
|
|
50
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
51
|
+
|
|
52
|
+
expect(safe['_message']).toBe('internal reason');
|
|
53
|
+
expect(safe['__userMessage']).toBe('user facing message');
|
|
54
|
+
expect(Array.isArray(safe['_errorCodes'])).toBeTrue();
|
|
55
|
+
expect((safe['_errorCodes'] as string[]).join(',')).toContain('DyNTS-TEST-CSE0');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('| nem-prod env: az additionalContent (diagnosztikai snapshot) MARAD', (): void => {
|
|
59
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
60
|
+
const error: DyFM_Error = buildRichError();
|
|
61
|
+
|
|
62
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
63
|
+
|
|
64
|
+
expect(safe['additionalContent']).toEqual({ userId: 'u1' });
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('| prod env: az additionalContent IS strip-elve', (): void => {
|
|
68
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.prod;
|
|
69
|
+
const error: DyFM_Error = buildRichError();
|
|
70
|
+
|
|
71
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
72
|
+
|
|
73
|
+
expect(safe['additionalContent']).toBeUndefined();
|
|
74
|
+
// a mindig-strip lista prod-ban is érvényes
|
|
75
|
+
expect(safe['__localStack']).toBeUndefined();
|
|
76
|
+
expect(safe['stack']).toBeUndefined();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('| nem-DyFM object-error: fail-safe minimál { message } shape (axios-config nem szivárog)', (): void => {
|
|
80
|
+
const axiosLike: { message: string; config: { headers: { authorization: string } } } = {
|
|
81
|
+
message: 'Request failed with status code 401',
|
|
82
|
+
config: { headers: { authorization: 'Bearer LEAK' } },
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(axiosLike) as Record<string, unknown>;
|
|
86
|
+
|
|
87
|
+
expect(safe['message']).toBe('Request failed with status code 401');
|
|
88
|
+
expect(safe['config']).toBeUndefined();
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it('| nem-object error (string/undefined): változatlanul átmegy', (): void => {
|
|
92
|
+
expect(DyNTS_ClientSafeError_Util.toClientSafe('plain string')).toBe('plain string');
|
|
93
|
+
expect(DyNTS_ClientSafeError_Util.toClientSafe(undefined)).toBeUndefined();
|
|
94
|
+
});
|
|
95
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DyFM_EnvironmentFlag, DyFM_Error } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
|
|
3
|
+
import { DyNTS_global_settings } from './global-settings.const';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Kliens-safe error-body SSOT (BFR-FDPAUTHSERVICE-002 — error-response info-disclosure fix).
|
|
7
|
+
*
|
|
8
|
+
* A DyFM_Error HTTP-response-ba szerializálásakor a belső diagnosztikai mezők NEM mehetnek ki a
|
|
9
|
+
* kliensre — env-FÜGGETLENÜL (a korábbi prod-only strip a test/dev környezetben TELJES leaket
|
|
10
|
+
* hagyott: `__localStack` stack-trace, `___systemVersion`, issuer-lánc). A strip-szabályok:
|
|
11
|
+
*
|
|
12
|
+
* 1. MINDIG ki (env-független, kliens sehol nem fogyasztja → 0 regresszió):
|
|
13
|
+
* `__localStack`, `stack`, `___systemVersion`, `___issuer`, `___issuerSystem`,
|
|
14
|
+
* `___issuerService`, `confidentialContent`, `error`, `errors` (a nyers belső error-lánc
|
|
15
|
+
* stack-eket hordoz).
|
|
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.
|
|
18
|
+
* 3. MARAD (kliens-kompatibilitás — a FDP-kliens error-interceptorok fogyasztják):
|
|
19
|
+
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`.
|
|
20
|
+
*
|
|
21
|
+
* NEM-DyFM error (plain Error / axios-error / bármi más): minimál `{ message }` shape — a plain
|
|
22
|
+
* Error eddig is üres `{}`-ként szerializálódott (non-enumerable mezők), az axios-jellegű error-ok
|
|
23
|
+
* viszont enumerable config/request mezőkben auth-headert is szivárogtathatnak → fail-safe minimál.
|
|
24
|
+
*
|
|
25
|
+
* ⚠️ A metódus MUTÁLJA a kapott DyFM_Error-t (a meglévő endpoint-strip precedensét követve) —
|
|
26
|
+
* a hívási pont a response-küldés, ahol az error-objektum életciklusa véget ér.
|
|
27
|
+
*/
|
|
28
|
+
export class DyNTS_ClientSafeError_Util {
|
|
29
|
+
|
|
30
|
+
/** A MINDIG strip-elendő DyFM-mezők (env-független — kliens-fogyasztás nélküli leak-vektorok). */
|
|
31
|
+
private static readonly alwaysStripKeys: string[] = [
|
|
32
|
+
'__localStack',
|
|
33
|
+
'stack',
|
|
34
|
+
'___systemVersion',
|
|
35
|
+
'___issuer',
|
|
36
|
+
'___issuerSystem',
|
|
37
|
+
'___issuerService',
|
|
38
|
+
'confidentialContent',
|
|
39
|
+
'error',
|
|
40
|
+
'errors',
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Az error kliens-safe formára hozása a HTTP-response-küldés előtt.
|
|
45
|
+
* DyFM_Error: in-place strip (1-3. szabályok szerint); nem-DyFM object: minimál `{ message }`.
|
|
46
|
+
*/
|
|
47
|
+
static toClientSafe(error: unknown): unknown {
|
|
48
|
+
// DyFM_Error: célzott mező-strip, a kliens-fogyasztott mezők megtartásával
|
|
49
|
+
if (DyFM_Error.isDyFMError(error)) {
|
|
50
|
+
const dyError: Record<string, unknown> = error as unknown as Record<string, unknown>;
|
|
51
|
+
|
|
52
|
+
for (const key of DyNTS_ClientSafeError_Util.alwaysStripKeys) {
|
|
53
|
+
delete dyError[key];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// prod: a diagnosztikai state-snapshot sem megy ki; test/dev: szándékosan marad (debug-UX)
|
|
57
|
+
if (DyNTS_global_settings.env_settings.environment === DyFM_EnvironmentFlag.prod) {
|
|
58
|
+
delete dyError['additionalContent'];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return error;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// nem-DyFM object-error (plain/axios/egyéb): fail-safe minimál shape — a nyers objektum
|
|
65
|
+
// enumerable mezői (pl. axios config.headers) szivárogtathatnak
|
|
66
|
+
if (error && typeof error === 'object') {
|
|
67
|
+
return { message: (error as Error).message ?? 'Internal server error' };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -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;
|