@futdevpro/nts-dynamo 1.15.151 → 1.15.153
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/__main.mdc +64 -64
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_debug.mdc +7 -7
- package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -372
- package/.cursor/rules/_ag_file-refactoring.mdc +113 -113
- package/.cursor/rules/_ag_fixes_rules.mdc +5 -5
- 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_running_commands.mdc +4 -4
- package/.cursor/rules/_ag_server-controller.mdc +5 -5
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/_ag_swearing.mdc +47 -47
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/ai_directives.md +114 -114
- 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/pipeline.cicd.config.json +190 -190
- package/.dynamo/version-bump.config.json +5 -5
- package/.github/workflows/main.yml +438 -438
- package/.husky/pre-commit +3 -3
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/README.md +780 -754
- package/__documentations/2026-04-28-logs-module.md +49 -49
- package/__documentations/2026-05-17-oai-compatible-providers.md +229 -229
- package/__documentations/2026-05-17-static-client-serving-howto.md +144 -144
- package/__documentations/2026-06-01-fr041-cors-middleware.md +96 -96
- package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +81 -81
- package/__documentations/2026-06-15-fr193-memory-guard.md +73 -73
- package/__documentations/2026-08-08-fr292-app-version-header.md +38 -38
- package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +124 -124
- package/__documentations/2026-08-18-artifact-compiler.md +46 -46
- package/__documentations/2026-08-18-mongo-transaction-control-service.md +82 -82
- package/__documentations/2026-08-18-standalone-account-security-and-privacy-bedrock.md +132 -132
- package/__documentations/2026-08-21-distributed-rate-limit-bfr-ctm-010.md +59 -59
- package/__documentations/2026-08-22-npm-token-state-classifier.md +92 -92
- 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/_modules/server/index.d.ts +4 -0
- package/build/_modules/server/index.d.ts.map +1 -1
- package/build/_modules/server/index.js +4 -0
- package/build/_modules/server/index.js.map +1 -1
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts +14 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js +18 -0
- package/build/_modules/server/server-status/db-readiness-probe-code.type-enum.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts +8 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js +12 -0
- package/build/_modules/server/server-status/db-readiness-probe-stage.type-enum.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts +14 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.js +126 -0
- package/build/_modules/server/server-status/db-readiness-probe.control-service.js.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts +18 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.d.ts.map +1 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.js +3 -0
- package/build/_modules/server/server-status/db-readiness-probe.interface.js.map +1 -0
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +1 -1
- package/pnpm-workspace.yaml +6 -6
- package/scripts/_seed-out/aim-seed.fixtures.ts +161 -161
- package/scripts/_seed-out/llm-expand-raw.json +59 -59
- package/scripts/_seed-out/seed-raw.json +152 -152
- package/scripts/ai-fixture-seed.js +126 -126
- 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/app-version-header.util.spec.ts +108 -108
- package/src/_collections/app-version-header.util.ts +74 -74
- package/src/_collections/archive-service-registry.const.ts +21 -21
- 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 +151 -151
- package/src/_collections/client-safe-error.util.ts +107 -107
- 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/field-encryption.util.spec.ts +195 -195
- package/src/_collections/field-encryption.util.ts +222 -222
- 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/load-shed.util.spec.ts +62 -62
- package/src/_collections/load-shed.util.ts +51 -51
- package/src/_collections/mongo-reconnect-guard.util.spec.ts +52 -52
- package/src/_collections/mongo-reconnect-guard.util.ts +172 -172
- package/src/_collections/npm-token-check.util.spec.ts +218 -218
- package/src/_collections/npm-token-check.util.ts +327 -327
- package/src/_collections/sample.env +21 -21
- package/src/_collections/security-headers.util.spec.ts +98 -98
- package/src/_collections/security-headers.util.ts +96 -96
- package/src/_collections/signed-url.util.spec.ts +198 -198
- package/src/_collections/signed-url.util.ts +170 -170
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_collections/static-cache-control.util.spec.ts +47 -47
- package/src/_collections/static-cache-control.util.ts +25 -25
- 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 +664 -664
- 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/data-models/schema-migration.data-model.ts +50 -50
- package/src/_models/interfaces/app-version-header-settings.interface.ts +17 -17
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/compare-data-options.interface.ts +27 -27
- package/src/_models/interfaces/compare-data-result.interface.ts +12 -12
- package/src/_models/interfaces/cors-settings.interface.spec.ts +52 -52
- package/src/_models/interfaces/cors-settings.interface.ts +56 -56
- package/src/_models/interfaces/db-query-options.interface.ts +33 -33
- 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 +294 -294
- package/src/_models/interfaces/migration-entry.interface.ts +19 -19
- package/src/_models/interfaces/mongo-transaction-settings.interface.ts +9 -9
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/security-headers-settings.interface.ts +50 -50
- package/src/_models/interfaces/signed-url-verify-result.interface.ts +13 -13
- 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/account-security/_enums/account-challenge-purpose.type-enum.ts +5 -5
- package/src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts +6 -6
- package/src/_modules/account-security/_enums/account-session-state.type-enum.ts +6 -6
- package/src/_modules/account-security/_models/account-challenge-adapter.interface.ts +17 -17
- package/src/_modules/account-security/_models/account-challenge-issued.interface.ts +6 -6
- package/src/_modules/account-security/_models/account-challenge-record.interface.ts +13 -13
- package/src/_modules/account-security/_models/account-challenge-result.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-challenge-settings.interface.ts +9 -9
- package/src/_modules/account-security/_models/account-password-policy.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-password-verification.interface.ts +5 -5
- package/src/_modules/account-security/_models/account-refresh-token-record.interface.ts +13 -13
- package/src/_modules/account-security/_models/account-session-adapter.interface.ts +19 -19
- package/src/_modules/account-security/_models/account-session-claims.interface.ts +7 -7
- package/src/_modules/account-security/_models/account-session-context.interface.ts +6 -6
- package/src/_modules/account-security/_models/account-session-create.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-session-record.interface.ts +21 -21
- package/src/_modules/account-security/_models/account-session-rotate.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-session-settings.interface.ts +11 -11
- package/src/_modules/account-security/_models/account-session-token-pair.interface.ts +8 -8
- package/src/_modules/account-security/_models/account-session-view.interface.ts +13 -13
- package/src/_modules/account-security/account-challenge.control-service.spec.ts +195 -195
- package/src/_modules/account-security/account-challenge.control-service.ts +164 -164
- package/src/_modules/account-security/account-password.control-service.spec.ts +96 -96
- package/src/_modules/account-security/account-password.control-service.ts +288 -288
- package/src/_modules/account-security/account-session.control-service.spec.ts +294 -294
- package/src/_modules/account-security/account-session.control-service.ts +376 -376
- package/src/_modules/account-security/index.ts +31 -31
- package/src/_modules/admin-auth/_models/admin-api-key-config.interface.ts +33 -33
- package/src/_modules/admin-auth/admin-api-key.auth-service.spec.ts +200 -200
- package/src/_modules/admin-auth/admin-api-key.auth-service.ts +220 -220
- package/src/_modules/admin-auth/index.ts +2 -2
- package/src/_modules/ai/_collections/ai-model-config-validator.util.spec.ts +150 -150
- package/src/_modules/ai/_collections/ai-model-config-validator.util.ts +131 -131
- package/src/_modules/ai/_collections/ai-provider-error.util.ts +144 -144
- 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/_models/interfaces/dynts-ai-cost-event-callback.interface.ts +14 -14
- package/src/_modules/ai/_models/interfaces/dynts-ai-cost-event.interface.ts +56 -56
- package/src/_modules/ai/_models/interfaces/dynts-ai-provider-error.interface.ts +16 -16
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.ts +72 -72
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.ts +71 -71
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.ts +57 -57
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.ts +60 -60
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.ts +56 -56
- package/src/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.ts +117 -117
- package/src/_modules/ai/_modules/ai-mock/_enums/aim-modality.enum.ts +28 -28
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-call-input.interface.ts +14 -14
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-error.interface.ts +11 -11
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-fixture.interface.ts +30 -30
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-request.interface.ts +19 -19
- package/src/_modules/ai/_modules/ai-mock/_models/interfaces/aim-service-collection.interface.ts +20 -20
- package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
- package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.ts +134 -134
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.ts +127 -127
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.ts +105 -105
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.ts +50 -50
- package/src/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.ts +65 -65
- package/src/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.ts +92 -92
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.ts +112 -112
- package/src/_modules/ai/_modules/ai-mock/_services/aim-mock.service.ts +155 -155
- package/src/_modules/ai/_modules/ai-mock/fixtures/aim-text.fixtures.ts +649 -649
- package/src/_modules/ai/_modules/ai-mock/index.ts +47 -47
- 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 +552 -552
- 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-doc-page.data-service.ts +572 -572
- 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-document.data-service.ts +435 -435
- 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-embedding.control-service.ts +132 -132
- 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 +1085 -1085
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_modules/open-ai/index.ts +74 -74
- package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
- package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
- 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.reconciler.spec.ts +133 -133
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
- package/src/_modules/ai/_services/ai-provider.service-base.ts +67 -67
- 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 +399 -399
- package/src/_modules/ai/index.ts +33 -33
- package/src/_modules/artifact-compiler/_enums/artifact-compile-outcome.type-enum.ts +5 -5
- package/src/_modules/artifact-compiler/_enums/artifact-compile-stage.type-enum.ts +8 -8
- package/src/_modules/artifact-compiler/_enums/artifact-retry-class.type-enum.ts +6 -6
- package/src/_modules/artifact-compiler/_models/artifact-compile.interface.ts +35 -35
- package/src/_modules/artifact-compiler/artifact-compiler.control-service.spec.ts +151 -151
- package/src/_modules/artifact-compiler/artifact-compiler.control-service.ts +356 -356
- package/src/_modules/artifact-compiler/index.ts +9 -9
- 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-io.control-service.ts +74 -74
- 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/assistant/index.ts +19 -19
- 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-message-wrapper.interface.ts +90 -90
- 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/discord-bot/_services/dib-messaging-provider.control-service.ts +641 -641
- package/src/_modules/bot/_modules/discord-bot/index.ts +12 -12
- 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/slack-bot/index.ts +12 -12
- 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/_modules/teams-bot/index.ts +11 -11
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-commands.control-service.ts +158 -158
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-io.control-service.ts +329 -329
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-main.control-service.ts +489 -489
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.ts +158 -158
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/bot/_services/bot-routines.control-service.ts +78 -78
- package/src/_modules/bot/index.ts +37 -37
- 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 +176 -176
- 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/_services/dibo-routines.control-service.ts +97 -97
- 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 +60 -60
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-bm25.util.spec.ts +159 -159
- package/src/_modules/local-vector-search/_services/lvs-bm25.util.ts +206 -206
- 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 +214 -214
- package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
- 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 +130 -130
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
- package/src/_modules/local-vector-search/index.ts +16 -16
- package/src/_modules/logs/_models/file-log-entry.interface.ts +13 -13
- package/src/_modules/logs/_models/file-log-read-result.interface.ts +37 -37
- package/src/_modules/logs/file-log.service.spec.ts +341 -341
- package/src/_modules/logs/file-log.service.ts +466 -466
- package/src/_modules/logs/file-logs.controller.spec.ts +245 -245
- package/src/_modules/logs/file-logs.controller.ts +165 -165
- package/src/_modules/logs/get-file-logs-routing-module.util.ts +51 -51
- package/src/_modules/logs/get-logs-routing-module.util.ts +36 -36
- package/src/_modules/logs/index.ts +11 -11
- package/src/_modules/logs/log-buffer.service.ts +101 -101
- package/src/_modules/logs/logs.controller.ts +109 -109
- package/src/_modules/logs/logs.service.ts +100 -100
- package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +151 -151
- package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +125 -125
- 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/_collections/msg.util.ts +83 -83
- 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/_services/msg.controller.ts +370 -370
- 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/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.ts +5 -5
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.ts +10 -10
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.ts +7 -7
- package/src/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.ts +15 -15
- package/src/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.ts +12 -12
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.ts +15 -15
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.ts +13 -13
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.ts +14 -14
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.ts +8 -8
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor.interface.ts +17 -17
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.ts +21 -21
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.ts +10 -10
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.ts +11 -11
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.ts +13 -13
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.ts +19 -19
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.ts +9 -9
- package/src/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-request-open.interface.ts +10 -10
- package/src/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.ts +7 -7
- package/src/_modules/privacy-lifecycle/_models/privacy-request-record.interface.ts +21 -21
- package/src/_modules/privacy-lifecycle/_models/privacy-request-result.interface.ts +8 -8
- package/src/_modules/privacy-lifecycle/_models/privacy-request-view.interface.ts +20 -20
- package/src/_modules/privacy-lifecycle/index.ts +40 -40
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.spec.ts +206 -206
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.ts +253 -253
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.spec.ts +353 -353
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.ts +586 -586
- package/src/_modules/rate-limit/_enums/rate-limit-store-kind.type-enum.ts +5 -5
- package/src/_modules/rate-limit/_models/rate-limit-config.interface.ts +82 -82
- package/src/_modules/rate-limit/_models/rate-limit-consume-request.interface.ts +9 -9
- package/src/_modules/rate-limit/_models/rate-limit-consume-result.interface.ts +6 -6
- package/src/_modules/rate-limit/_models/rate-limit-policy.interface.ts +16 -16
- package/src/_modules/rate-limit/_models/rate-limit-store.interface.ts +9 -9
- package/src/_modules/rate-limit/index.ts +8 -8
- package/src/_modules/rate-limit/rate-limit-in-memory.store.ts +91 -91
- package/src/_modules/rate-limit/rate-limit.middleware.spec.ts +488 -488
- package/src/_modules/rate-limit/rate-limit.middleware.ts +504 -504
- 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 +82 -82
- 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 +312 -312
- package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +311 -311
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +123 -123
- package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +108 -108
- package/src/_modules/scoped-config/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +246 -246
- package/src/_modules/server/errors/errors.control-service.ts +100 -100
- package/src/_modules/server/errors/errors.controller.spec.ts +340 -340
- package/src/_modules/server/errors/errors.controller.ts +559 -559
- package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
- package/src/_modules/server/errors/errors.data-service.ts +867 -867
- package/src/_modules/server/index.ts +34 -30
- package/src/_modules/server/server-status/db-readiness-probe-code.type-enum.ts +13 -0
- package/src/_modules/server/server-status/db-readiness-probe-stage.type-enum.ts +7 -0
- package/src/_modules/server/server-status/db-readiness-probe.control-service.spec.ts +235 -0
- package/src/_modules/server/server-status/db-readiness-probe.control-service.ts +158 -0
- package/src/_modules/server/server-status/db-readiness-probe.interface.ts +20 -0
- 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 +672 -672
- package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
- package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
- package/src/_modules/server/server-status/server-status.controller.ts +336 -336
- 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 +165 -165
- package/src/_modules/socket/_models/socket-presence.control-model.ts +211 -211
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +33 -33
- 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 +272 -272
- package/src/_modules/socket/_services/socket-server.service.ts +1037 -1037
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +648 -648
- 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/test-email-sink/_collections/test-email-pattern.const.ts +10 -10
- package/src/_modules/test-email-sink/_models/data-models/dynts-sent-test-mail.data-model.ts +41 -41
- package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.ts +112 -112
- package/src/_modules/test-email-sink/_services/dynts-test-email-sink.service.ts +141 -141
- package/src/_modules/test-email-sink/get-sent-mail-routing-module.util.ts +29 -29
- package/src/_modules/test-email-sink/index.ts +11 -11
- package/src/_modules/test-email-sink/test-email-sink.controller.ts +83 -83
- 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 +106 -106
- package/src/_modules/usage/usage.controller.ts +140 -140
- 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 +228 -228
- package/src/_services/base/data.service.spec.ts +784 -784
- package/src/_services/base/data.service.ts +2792 -2792
- package/src/_services/base/db.service.encryption.spec.ts +76 -76
- package/src/_services/base/db.service.spec.ts +160 -160
- package/src/_services/base/db.service.ts +1698 -1698
- 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 +187 -187
- package/src/_services/core/api.service.ts +627 -627
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/collection-growth-monitor.service.spec.ts +119 -119
- package/src/_services/core/collection-growth-monitor.service.ts +234 -234
- package/src/_services/core/db-stats.service.ts +104 -104
- package/src/_services/core/diagnostics.service.spec.ts +44 -44
- package/src/_services/core/diagnostics.service.ts +158 -158
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +757 -757
- package/src/_services/core/event-loop-diag.service.spec.ts +22 -22
- package/src/_services/core/event-loop-diag.service.ts +144 -144
- 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/migration-runner.service.spec.ts +91 -91
- package/src/_services/core/migration-runner.service.ts +106 -106
- package/src/_services/core/mongo-transaction.control-service.spec.ts +165 -165
- package/src/_services/core/mongo-transaction.control-service.ts +148 -148
- package/src/_services/core/request-hunter.service.spec.ts +124 -124
- package/src/_services/core/request-hunter.service.ts +157 -157
- 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-retention.spec.ts +106 -106
- package/src/_services/server/app.server.ts +2012 -2012
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +117 -117
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/.dynamo/logs/cicd-pipeline/output.log +0 -2883
- 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,108 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DYNTS_APP_VERSION_HEADER,
|
|
3
|
-
DyNTS_createAppVersionHeaderMiddleware,
|
|
4
|
-
DyNTS_resolveExposeHeaders,
|
|
5
|
-
} from './app-version-header.util';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* FR-292 — a deployolt app-verzió minden válaszon.
|
|
9
|
-
*
|
|
10
|
-
* A garanciák, amiket ez a spec ŐRIZ:
|
|
11
|
-
* - ISMERETLEN verziónál NINCS header (a `unknown-version` hamis „új verzió"-riasztást adna),
|
|
12
|
-
* - a verzió a hívás pillanatában olvasódik (az app-params KÉSŐBB tölti be — egy induláskor
|
|
13
|
-
* befagyasztott érték örökre `unknown` maradna),
|
|
14
|
-
* - a CORS expose-lista BŐVÜL, nem felülíródik (különben más headerek olvashatatlanná válnának),
|
|
15
|
-
* - a bővítés IDEMPOTENS (kétszeri felszerelés nem duplikál).
|
|
16
|
-
*/
|
|
17
|
-
describe('| FR-292 app-version response header', () => {
|
|
18
|
-
|
|
19
|
-
/** Minimal Express-válasz stub — csak a header-tárolás kell hozzá. */
|
|
20
|
-
function makeRes(): { headers: Record<string, string>; setHeader: Function; getHeader: Function } {
|
|
21
|
-
const headers: Record<string, string> = {};
|
|
22
|
-
return {
|
|
23
|
-
headers: headers,
|
|
24
|
-
setHeader: (name: string, value: string): void => { headers[name] = value; },
|
|
25
|
-
getHeader: (name: string): string | undefined => headers[name],
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
describe('| DyNTS_resolveExposeHeaders', () => {
|
|
30
|
-
|
|
31
|
-
it('| ures listabol a header neve lesz', () => {
|
|
32
|
-
expect(DyNTS_resolveExposeHeaders(undefined, 'X-App-Version')).toBe('X-App-Version');
|
|
33
|
-
expect(DyNTS_resolveExposeHeaders('', 'X-App-Version')).toBe('X-App-Version');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
it('| a MEGLEVO listat megtartja es hozzafuz (nem felulir)', () => {
|
|
38
|
-
expect(DyNTS_resolveExposeHeaders('Content-Length, Content-Type', 'X-App-Version'))
|
|
39
|
-
.toBe('Content-Length, Content-Type, X-App-Version');
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
it('| idempotens — ha mar benne van, nem duplikal (kis-nagybetu fuggetlenul)', () => {
|
|
44
|
-
expect(DyNTS_resolveExposeHeaders('Content-Type, X-App-Version', 'X-App-Version'))
|
|
45
|
-
.toBe('Content-Type, X-App-Version');
|
|
46
|
-
expect(DyNTS_resolveExposeHeaders('content-type, x-app-version', 'X-App-Version'))
|
|
47
|
-
.toBe('content-type, x-app-version');
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
describe('| DyNTS_createAppVersionHeaderMiddleware', () => {
|
|
53
|
-
|
|
54
|
-
it('| kiirja a verziot ES exposeolja a CORS-nak', () => {
|
|
55
|
-
const res = makeRes();
|
|
56
|
-
let nextCalled: boolean = false;
|
|
57
|
-
DyNTS_createAppVersionHeaderMiddleware((): string => '01.15.460')(
|
|
58
|
-
{} as never, res as never, ((): void => { nextCalled = true; }) as never,
|
|
59
|
-
);
|
|
60
|
-
expect(res.headers[DYNTS_APP_VERSION_HEADER]).toBe('01.15.460');
|
|
61
|
-
expect(res.headers['Access-Control-Expose-Headers']).toContain(DYNTS_APP_VERSION_HEADER);
|
|
62
|
-
expect(nextCalled).toBe(true);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
it('| ISMERETLEN verzional nem ir headert — de a lancot TOVABBENGEDI', () => {
|
|
67
|
-
for (const version of [undefined, '', 'unknown-version']) {
|
|
68
|
-
const res = makeRes();
|
|
69
|
-
let nextCalled: boolean = false;
|
|
70
|
-
DyNTS_createAppVersionHeaderMiddleware((): string | undefined => version)(
|
|
71
|
-
{} as never, res as never, ((): void => { nextCalled = true; }) as never,
|
|
72
|
-
);
|
|
73
|
-
expect(res.headers[DYNTS_APP_VERSION_HEADER]).withContext(String(version)).toBeUndefined();
|
|
74
|
-
expect(nextCalled).withContext(String(version)).toBe(true);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* A verziót a HÍVÁSKOR kell olvasni: a `systemVersion` az app-params betöltésekor áll be,
|
|
81
|
-
* ami a middleware felszerelése UTÁN történik. Ha a middleware befagyasztaná az értéket,
|
|
82
|
-
* a fejléc örökre hiányozna — pont a friss deployon.
|
|
83
|
-
*/
|
|
84
|
-
it('| a verziot HIVASKOR olvassa, nem felszereleskor', () => {
|
|
85
|
-
let current: string = 'unknown-version';
|
|
86
|
-
const middleware = DyNTS_createAppVersionHeaderMiddleware((): string => current);
|
|
87
|
-
|
|
88
|
-
const firstRes = makeRes();
|
|
89
|
-
middleware({} as never, firstRes as never, ((): void => undefined) as never);
|
|
90
|
-
expect(firstRes.headers[DYNTS_APP_VERSION_HEADER]).toBeUndefined();
|
|
91
|
-
|
|
92
|
-
current = '01.15.461'; // app-params betoltodott
|
|
93
|
-
const secondRes = makeRes();
|
|
94
|
-
middleware({} as never, secondRes as never, ((): void => undefined) as never);
|
|
95
|
-
expect(secondRes.headers[DYNTS_APP_VERSION_HEADER]).toBe('01.15.461');
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
it('| egyedi header-nev is hasznalhato', () => {
|
|
100
|
-
const res = makeRes();
|
|
101
|
-
DyNTS_createAppVersionHeaderMiddleware((): string => '1.2.3', 'X-Custom-Version')(
|
|
102
|
-
{} as never, res as never, ((): void => undefined) as never,
|
|
103
|
-
);
|
|
104
|
-
expect(res.headers['X-Custom-Version']).toBe('1.2.3');
|
|
105
|
-
expect(res.headers['Access-Control-Expose-Headers']).toBe('X-Custom-Version');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
1
|
+
import {
|
|
2
|
+
DYNTS_APP_VERSION_HEADER,
|
|
3
|
+
DyNTS_createAppVersionHeaderMiddleware,
|
|
4
|
+
DyNTS_resolveExposeHeaders,
|
|
5
|
+
} from './app-version-header.util';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* FR-292 — a deployolt app-verzió minden válaszon.
|
|
9
|
+
*
|
|
10
|
+
* A garanciák, amiket ez a spec ŐRIZ:
|
|
11
|
+
* - ISMERETLEN verziónál NINCS header (a `unknown-version` hamis „új verzió"-riasztást adna),
|
|
12
|
+
* - a verzió a hívás pillanatában olvasódik (az app-params KÉSŐBB tölti be — egy induláskor
|
|
13
|
+
* befagyasztott érték örökre `unknown` maradna),
|
|
14
|
+
* - a CORS expose-lista BŐVÜL, nem felülíródik (különben más headerek olvashatatlanná válnának),
|
|
15
|
+
* - a bővítés IDEMPOTENS (kétszeri felszerelés nem duplikál).
|
|
16
|
+
*/
|
|
17
|
+
describe('| FR-292 app-version response header', () => {
|
|
18
|
+
|
|
19
|
+
/** Minimal Express-válasz stub — csak a header-tárolás kell hozzá. */
|
|
20
|
+
function makeRes(): { headers: Record<string, string>; setHeader: Function; getHeader: Function } {
|
|
21
|
+
const headers: Record<string, string> = {};
|
|
22
|
+
return {
|
|
23
|
+
headers: headers,
|
|
24
|
+
setHeader: (name: string, value: string): void => { headers[name] = value; },
|
|
25
|
+
getHeader: (name: string): string | undefined => headers[name],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('| DyNTS_resolveExposeHeaders', () => {
|
|
30
|
+
|
|
31
|
+
it('| ures listabol a header neve lesz', () => {
|
|
32
|
+
expect(DyNTS_resolveExposeHeaders(undefined, 'X-App-Version')).toBe('X-App-Version');
|
|
33
|
+
expect(DyNTS_resolveExposeHeaders('', 'X-App-Version')).toBe('X-App-Version');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
it('| a MEGLEVO listat megtartja es hozzafuz (nem felulir)', () => {
|
|
38
|
+
expect(DyNTS_resolveExposeHeaders('Content-Length, Content-Type', 'X-App-Version'))
|
|
39
|
+
.toBe('Content-Length, Content-Type, X-App-Version');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
it('| idempotens — ha mar benne van, nem duplikal (kis-nagybetu fuggetlenul)', () => {
|
|
44
|
+
expect(DyNTS_resolveExposeHeaders('Content-Type, X-App-Version', 'X-App-Version'))
|
|
45
|
+
.toBe('Content-Type, X-App-Version');
|
|
46
|
+
expect(DyNTS_resolveExposeHeaders('content-type, x-app-version', 'X-App-Version'))
|
|
47
|
+
.toBe('content-type, x-app-version');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
describe('| DyNTS_createAppVersionHeaderMiddleware', () => {
|
|
53
|
+
|
|
54
|
+
it('| kiirja a verziot ES exposeolja a CORS-nak', () => {
|
|
55
|
+
const res = makeRes();
|
|
56
|
+
let nextCalled: boolean = false;
|
|
57
|
+
DyNTS_createAppVersionHeaderMiddleware((): string => '01.15.460')(
|
|
58
|
+
{} as never, res as never, ((): void => { nextCalled = true; }) as never,
|
|
59
|
+
);
|
|
60
|
+
expect(res.headers[DYNTS_APP_VERSION_HEADER]).toBe('01.15.460');
|
|
61
|
+
expect(res.headers['Access-Control-Expose-Headers']).toContain(DYNTS_APP_VERSION_HEADER);
|
|
62
|
+
expect(nextCalled).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
it('| ISMERETLEN verzional nem ir headert — de a lancot TOVABBENGEDI', () => {
|
|
67
|
+
for (const version of [undefined, '', 'unknown-version']) {
|
|
68
|
+
const res = makeRes();
|
|
69
|
+
let nextCalled: boolean = false;
|
|
70
|
+
DyNTS_createAppVersionHeaderMiddleware((): string | undefined => version)(
|
|
71
|
+
{} as never, res as never, ((): void => { nextCalled = true; }) as never,
|
|
72
|
+
);
|
|
73
|
+
expect(res.headers[DYNTS_APP_VERSION_HEADER]).withContext(String(version)).toBeUndefined();
|
|
74
|
+
expect(nextCalled).withContext(String(version)).toBe(true);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* A verziót a HÍVÁSKOR kell olvasni: a `systemVersion` az app-params betöltésekor áll be,
|
|
81
|
+
* ami a middleware felszerelése UTÁN történik. Ha a middleware befagyasztaná az értéket,
|
|
82
|
+
* a fejléc örökre hiányozna — pont a friss deployon.
|
|
83
|
+
*/
|
|
84
|
+
it('| a verziot HIVASKOR olvassa, nem felszereleskor', () => {
|
|
85
|
+
let current: string = 'unknown-version';
|
|
86
|
+
const middleware = DyNTS_createAppVersionHeaderMiddleware((): string => current);
|
|
87
|
+
|
|
88
|
+
const firstRes = makeRes();
|
|
89
|
+
middleware({} as never, firstRes as never, ((): void => undefined) as never);
|
|
90
|
+
expect(firstRes.headers[DYNTS_APP_VERSION_HEADER]).toBeUndefined();
|
|
91
|
+
|
|
92
|
+
current = '01.15.461'; // app-params betoltodott
|
|
93
|
+
const secondRes = makeRes();
|
|
94
|
+
middleware({} as never, secondRes as never, ((): void => undefined) as never);
|
|
95
|
+
expect(secondRes.headers[DYNTS_APP_VERSION_HEADER]).toBe('01.15.461');
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
it('| egyedi header-nev is hasznalhato', () => {
|
|
100
|
+
const res = makeRes();
|
|
101
|
+
DyNTS_createAppVersionHeaderMiddleware((): string => '1.2.3', 'X-Custom-Version')(
|
|
102
|
+
{} as never, res as never, ((): void => undefined) as never,
|
|
103
|
+
);
|
|
104
|
+
expect(res.headers['X-Custom-Version']).toBe('1.2.3');
|
|
105
|
+
expect(res.headers['Access-Control-Expose-Headers']).toBe('X-Custom-Version');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
import * as Express from 'express';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* FR-292 (2026-08-08) — a DEPLOYOLT app-verzió kiírása MINDEN válasz headerébe.
|
|
5
|
-
*
|
|
6
|
-
* **Miért kell:** a böngészőben nyitva hagyott SPA a memóriájában tartja a bundle-t, és a
|
|
7
|
-
* deploy után is a RÉGI kódot futtatja, amíg a felhasználó újra nem tölt. Ez nem elméleti:
|
|
8
|
-
* egy órákig nyitva hagyott dashboard-fülön hiányzó gombokat / régi viselkedést mutat, és
|
|
9
|
-
* a felhasználó (jogosan) azt hiszi, hogy a funkció nincs kész.
|
|
10
|
-
*
|
|
11
|
-
* Az itteni megoldás **nem polling**: a szerver minden válaszra ráteszi a saját deployolt
|
|
12
|
-
* app-verzióját, a kliens pedig a MÁR MEGLÉVŐ hívásaiból olvassa ki (ngx oldalon a
|
|
13
|
-
* `DyNX_AppVersion_Interceptor`). Nulla extra kérés, nulla extra terhelés — a jelzés
|
|
14
|
-
* „ingyen" utazik azon, ami úgyis megy.
|
|
15
|
-
*
|
|
16
|
-
* **CORS:** cross-origin kliens csak akkor OLVASHATJA a headert, ha az szerepel az
|
|
17
|
-
* `Access-Control-Expose-Headers`-ben. Ezért a middleware a meglévő értékhez HOZZÁFŰZ
|
|
18
|
-
* (nem felülír) — ezért kell a CORS-mount UTÁN felszerelni.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/** A deployolt app-verziót hordozó response-header neve (a kliens ezt olvassa). */
|
|
22
|
-
export const DYNTS_APP_VERSION_HEADER: string = 'X-App-Version';
|
|
23
|
-
|
|
24
|
-
/** Az `Access-Control-Expose-Headers` header neve — hogy ne szórjuk el string-literálként. */
|
|
25
|
-
const EXPOSE_HEADERS_HEADER: string = 'Access-Control-Expose-Headers';
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Kiszámolja az `Access-Control-Expose-Headers` ÚJ értékét úgy, hogy a meglévő listát
|
|
29
|
-
* megtartja és a verzió-headert csak akkor fűzi hozzá, ha még nincs benne (idempotens).
|
|
30
|
-
*
|
|
31
|
-
* Tiszta függvény: Express nélkül unit-tesztelhető.
|
|
32
|
-
*
|
|
33
|
-
* @param currentValue a válaszon MÁR beállított érték (a CORS-middleware-től), ha van
|
|
34
|
-
* @param headerName a hozzáfűzendő header neve
|
|
35
|
-
*/
|
|
36
|
-
export function DyNTS_resolveExposeHeaders(currentValue: string | undefined, headerName: string): string {
|
|
37
|
-
if (!currentValue) {
|
|
38
|
-
return headerName;
|
|
39
|
-
}
|
|
40
|
-
const alreadyExposed: boolean = currentValue
|
|
41
|
-
.split(',')
|
|
42
|
-
.some((entry: string): boolean => entry.trim().toLowerCase() === headerName.toLowerCase());
|
|
43
|
-
|
|
44
|
-
return alreadyExposed ? currentValue : `${currentValue}, ${headerName}`;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Express-middleware, ami minden válaszra ráteszi a deployolt app-verziót.
|
|
49
|
-
*
|
|
50
|
-
* A verziót FÜGGVÉNYKÉNT kapja (nem értékként), mert a `DyNTS_global_settings.systemVersion`
|
|
51
|
-
* az app-params betöltésekor áll be — egy induláskor kiolvasott érték `unknown-version`
|
|
52
|
-
* maradhatna örökre.
|
|
53
|
-
*
|
|
54
|
-
* @param getAppVersion a deployolt app-verziót visszaadó getter
|
|
55
|
-
* @param headerName felülírható header-név (default: `X-App-Version`)
|
|
56
|
-
*/
|
|
57
|
-
export function DyNTS_createAppVersionHeaderMiddleware(
|
|
58
|
-
getAppVersion: () => string | undefined,
|
|
59
|
-
headerName: string = DYNTS_APP_VERSION_HEADER,
|
|
60
|
-
): Express.RequestHandler {
|
|
61
|
-
return (_req: Express.Request, res: Express.Response, next: Express.NextFunction): void => {
|
|
62
|
-
const appVersion: string | undefined = getAppVersion();
|
|
63
|
-
// Ismeretlen verziónál NEM írunk headert: egy `unknown-version` jelzés rosszabb a
|
|
64
|
-
// semminél — a kliens „új verzió van" hamis riasztást adna belőle.
|
|
65
|
-
if (appVersion && appVersion !== 'unknown-version') {
|
|
66
|
-
res.setHeader(headerName, appVersion);
|
|
67
|
-
res.setHeader(
|
|
68
|
-
EXPOSE_HEADERS_HEADER,
|
|
69
|
-
DyNTS_resolveExposeHeaders(res.getHeader(EXPOSE_HEADERS_HEADER)?.toString(), headerName),
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
next();
|
|
73
|
-
};
|
|
74
|
-
}
|
|
1
|
+
import * as Express from 'express';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* FR-292 (2026-08-08) — a DEPLOYOLT app-verzió kiírása MINDEN válasz headerébe.
|
|
5
|
+
*
|
|
6
|
+
* **Miért kell:** a böngészőben nyitva hagyott SPA a memóriájában tartja a bundle-t, és a
|
|
7
|
+
* deploy után is a RÉGI kódot futtatja, amíg a felhasználó újra nem tölt. Ez nem elméleti:
|
|
8
|
+
* egy órákig nyitva hagyott dashboard-fülön hiányzó gombokat / régi viselkedést mutat, és
|
|
9
|
+
* a felhasználó (jogosan) azt hiszi, hogy a funkció nincs kész.
|
|
10
|
+
*
|
|
11
|
+
* Az itteni megoldás **nem polling**: a szerver minden válaszra ráteszi a saját deployolt
|
|
12
|
+
* app-verzióját, a kliens pedig a MÁR MEGLÉVŐ hívásaiból olvassa ki (ngx oldalon a
|
|
13
|
+
* `DyNX_AppVersion_Interceptor`). Nulla extra kérés, nulla extra terhelés — a jelzés
|
|
14
|
+
* „ingyen" utazik azon, ami úgyis megy.
|
|
15
|
+
*
|
|
16
|
+
* **CORS:** cross-origin kliens csak akkor OLVASHATJA a headert, ha az szerepel az
|
|
17
|
+
* `Access-Control-Expose-Headers`-ben. Ezért a middleware a meglévő értékhez HOZZÁFŰZ
|
|
18
|
+
* (nem felülír) — ezért kell a CORS-mount UTÁN felszerelni.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/** A deployolt app-verziót hordozó response-header neve (a kliens ezt olvassa). */
|
|
22
|
+
export const DYNTS_APP_VERSION_HEADER: string = 'X-App-Version';
|
|
23
|
+
|
|
24
|
+
/** Az `Access-Control-Expose-Headers` header neve — hogy ne szórjuk el string-literálként. */
|
|
25
|
+
const EXPOSE_HEADERS_HEADER: string = 'Access-Control-Expose-Headers';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Kiszámolja az `Access-Control-Expose-Headers` ÚJ értékét úgy, hogy a meglévő listát
|
|
29
|
+
* megtartja és a verzió-headert csak akkor fűzi hozzá, ha még nincs benne (idempotens).
|
|
30
|
+
*
|
|
31
|
+
* Tiszta függvény: Express nélkül unit-tesztelhető.
|
|
32
|
+
*
|
|
33
|
+
* @param currentValue a válaszon MÁR beállított érték (a CORS-middleware-től), ha van
|
|
34
|
+
* @param headerName a hozzáfűzendő header neve
|
|
35
|
+
*/
|
|
36
|
+
export function DyNTS_resolveExposeHeaders(currentValue: string | undefined, headerName: string): string {
|
|
37
|
+
if (!currentValue) {
|
|
38
|
+
return headerName;
|
|
39
|
+
}
|
|
40
|
+
const alreadyExposed: boolean = currentValue
|
|
41
|
+
.split(',')
|
|
42
|
+
.some((entry: string): boolean => entry.trim().toLowerCase() === headerName.toLowerCase());
|
|
43
|
+
|
|
44
|
+
return alreadyExposed ? currentValue : `${currentValue}, ${headerName}`;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Express-middleware, ami minden válaszra ráteszi a deployolt app-verziót.
|
|
49
|
+
*
|
|
50
|
+
* A verziót FÜGGVÉNYKÉNT kapja (nem értékként), mert a `DyNTS_global_settings.systemVersion`
|
|
51
|
+
* az app-params betöltésekor áll be — egy induláskor kiolvasott érték `unknown-version`
|
|
52
|
+
* maradhatna örökre.
|
|
53
|
+
*
|
|
54
|
+
* @param getAppVersion a deployolt app-verziót visszaadó getter
|
|
55
|
+
* @param headerName felülírható header-név (default: `X-App-Version`)
|
|
56
|
+
*/
|
|
57
|
+
export function DyNTS_createAppVersionHeaderMiddleware(
|
|
58
|
+
getAppVersion: () => string | undefined,
|
|
59
|
+
headerName: string = DYNTS_APP_VERSION_HEADER,
|
|
60
|
+
): Express.RequestHandler {
|
|
61
|
+
return (_req: Express.Request, res: Express.Response, next: Express.NextFunction): void => {
|
|
62
|
+
const appVersion: string | undefined = getAppVersion();
|
|
63
|
+
// Ismeretlen verziónál NEM írunk headert: egy `unknown-version` jelzés rosszabb a
|
|
64
|
+
// semminél — a kliens „új verzió van" hamis riasztást adna belőle.
|
|
65
|
+
if (appVersion && appVersion !== 'unknown-version') {
|
|
66
|
+
res.setHeader(headerName, appVersion);
|
|
67
|
+
res.setHeader(
|
|
68
|
+
EXPOSE_HEADERS_HEADER,
|
|
69
|
+
DyNTS_resolveExposeHeaders(res.getHeader(EXPOSE_HEADERS_HEADER)?.toString(), headerName),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
next();
|
|
73
|
+
};
|
|
74
|
+
}
|