@futdevpro/nts-dynamo 1.15.15 → 1.15.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.c8rc.json +26 -26
- package/.copilot/patterns.json +7 -7
- package/.cursor/rules/__assistant_guide.mdc +30 -30
- package/.cursor/rules/_ag_backend-structure.mdc +85 -85
- package/.cursor/rules/_ag_backend.mdc +16 -16
- package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
- package/.cursor/rules/_ag_frontend.mdc +39 -39
- package/.cursor/rules/_ag_import-rules.mdc +44 -44
- package/.cursor/rules/_ag_naming.mdc +115 -115
- package/.cursor/rules/_ag_should-be.mdc +6 -6
- package/.cursor/rules/ai_development_guide.md +60 -60
- package/.cursor/rules/cursor-rules.md +160 -160
- package/.cursor/rules/default-command.mdc +464 -464
- package/.cursor/rules/error_code_pattern.md +39 -39
- package/.cursor/rules/saved rule mcp server use.md +15 -15
- package/.dynamo/version-bump.config.json +5 -0
- package/.github/workflows/main.yml +426 -393
- package/.husky/pre-commit +1 -0
- package/.vscode/settings.json +10 -10
- package/HOWTO.md +15 -15
- package/LICENSE +21 -21
- package/__documentations/2026-04-28-logs-module.md +49 -0
- package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
- package/_specifications/BACKLOG.md +50 -50
- package/_specifications/TODO.md +15 -15
- package/_specifications/agent.md +138 -138
- package/eslint.config.js +3 -3
- package/nodemon.json +24 -24
- package/package.json +343 -362
- package/pipeline.cicd.config.json +152 -0
- package/pnpm-workspace.yaml +2 -0
- package/scripts/run-coverage-tests.js +28 -28
- package/spec/support/helpers/spec-reporter-loader.js +359 -359
- package/spec/support/helpers/ts-node-helper.js +93 -93
- package/spec/support/jasmine.coverage.json +24 -24
- package/spec/support/jasmine.json +24 -24
- package/src/_collections/archive.util.spec.ts +57 -57
- package/src/_collections/archive.util.ts +18 -18
- package/src/_collections/atlas-default-db-options.const.ts +9 -9
- package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
- package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
- package/src/_collections/default-not-found-page.const.spec.ts +19 -19
- package/src/_collections/default-not-found-page.const.ts +22 -22
- package/src/_collections/default-socket-path.const.spec.ts +12 -12
- package/src/_collections/default-socket-path.const.ts +2 -2
- package/src/_collections/get-environment-settings.util.spec.ts +210 -210
- package/src/_collections/get-environment-settings.util.ts +48 -48
- package/src/_collections/sample.env +21 -21
- package/src/_collections/star.controller.spec.ts +224 -224
- package/src/_collections/star.controller.ts +129 -129
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +24 -24
- package/src/_enums/predefined-data-types.enum.ts +16 -16
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
- package/src/_models/control-models/api-call-params.control-model.ts +142 -142
- package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
- package/src/_models/control-models/app-params.control-model.ts +136 -136
- package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -578
- package/src/_models/control-models/endpoint-params.control-model.ts +526 -526
- package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
- package/src/_models/control-models/http-settings.control-model.ts +37 -37
- package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/environment-settings.interface.ts +59 -59
- package/src/_models/interfaces/global-log-settings.interface.ts +108 -108
- package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
- package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
- package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
- package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
- package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
- package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
- package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
- package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
- package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
- package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
- package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
- package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
- package/src/_modules/ai/_modules/document-ai/index.ts +28 -28
- package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
- package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
- package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
- package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
- package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
- package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +240 -240
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +98 -98
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +615 -615
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +437 -437
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +833 -833
- package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
- package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
- package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
- package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
- package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
- package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
- package/src/_modules/ai/_services/ai-llm.service-base.ts +332 -332
- package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +79 -79
- package/src/_modules/ai/_services/ai-provider.service-base.ts +29 -29
- package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
- package/src/_modules/ai/index.ts +13 -13
- package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
- package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
- package/src/_modules/assistant/_collections/ass.util.ts +50 -50
- package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
- package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
- package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
- package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
- package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
- package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
- package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
- package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
- package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
- package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
- package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
- package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
- package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
- package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
- package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
- package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
- package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
- package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
- package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
- package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
- package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
- package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
- package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
- package/src/_modules/custom-data/custom-data.controller.ts +67 -67
- package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
- package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
- package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
- package/src/_modules/custom-data/index.ts +9 -9
- package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
- package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
- package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
- package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
- package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
- package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
- package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
- package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
- package/src/_modules/defaults/index.ts +17 -17
- package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
- package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
- package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
- package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
- package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
- package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
- package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
- package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
- package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
- package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
- package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
- package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
- package/src/_modules/discord-assistant/index.ts +38 -38
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
- package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
- package/src/_modules/discord-assistant-voiced/index.ts +36 -36
- package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
- package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
- package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
- package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
- package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
- package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
- package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
- package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
- package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
- package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
- package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
- package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
- package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
- package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
- package/src/_modules/discord-bot/index.ts +36 -36
- package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +19 -19
- package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
- package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +345 -345
- package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +330 -330
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
- package/src/_modules/local-vector-search/index.ts +11 -11
- package/src/_modules/messaging/README.md +354 -354
- package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
- package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
- package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
- package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
- package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
- package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
- package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
- package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
- package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
- package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
- package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
- package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
- package/src/_modules/messaging/index.ts +30 -30
- package/src/_modules/mock/app-extended-server.mock.ts +201 -201
- package/src/_modules/mock/app-integration-test.mock.ts +51 -51
- package/src/_modules/mock/app-params.mock.spec.ts +21 -21
- package/src/_modules/mock/app-params.mock.ts +9 -9
- package/src/_modules/mock/app-server.mock.ts +188 -188
- package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
- package/src/_modules/mock/auth-service.mock.ts +28 -28
- package/src/_modules/mock/controller.mock.spec.ts +26 -26
- package/src/_modules/mock/controller.mock.ts +16 -16
- package/src/_modules/mock/data-model.mock.spec.ts +111 -111
- package/src/_modules/mock/data-model.mock.ts +82 -82
- package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
- package/src/_modules/mock/email-service-collection.mock.ts +15 -15
- package/src/_modules/mock/email-service.mock.spec.ts +17 -17
- package/src/_modules/mock/email-service.mock.ts +20 -20
- package/src/_modules/mock/email-template.mock.html +14 -14
- package/src/_modules/mock/endpoint.mock.ts +91 -91
- package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
- package/src/_modules/mock/socket-client.mock.ts +45 -45
- package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
- package/src/_modules/mock/socket-server.mock.ts +46 -46
- package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
- package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
- package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
- package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
- package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
- package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
- package/src/_modules/oauth2/index.ts +17 -17
- package/src/_modules/server/errors/errors.control-service.spec.ts +230 -230
- package/src/_modules/server/errors/errors.control-service.ts +69 -69
- package/src/_modules/server/errors/errors.controller.spec.ts +165 -165
- package/src/_modules/server/errors/errors.controller.ts +270 -270
- package/src/_modules/server/errors/errors.data-service.spec.ts +355 -355
- package/src/_modules/server/index.ts +30 -30
- package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
- package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
- package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
- package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
- package/src/_modules/server/server-status/server-status.control-service.spec.ts +516 -516
- package/src/_modules/server/server-status/server-status.control-service.ts +336 -336
- package/src/_modules/server/server-status/server-status.controller.spec.ts +156 -156
- package/src/_modules/server/server-status/server-status.controller.ts +131 -131
- package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
- package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
- package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
- package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
- package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
- package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
- package/src/_modules/socket/_services/socket-client.service.ts +260 -260
- package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
- package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
- package/src/_modules/socket/app-extended.server.ts +630 -630
- package/src/_modules/socket/index.ts +42 -42
- package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +11 -11
- package/src/_modules/test/test.controller.spec.ts +72 -72
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +15 -15
- package/src/_modules/usage/usage.controller.spec.ts +81 -81
- package/src/_modules/usage/usage.controller.ts +126 -126
- package/src/_modules/usage/usage.data-service.spec.ts +332 -332
- package/src/_modules/usage/usage.data-service.ts +185 -185
- package/src/_services/base/api.service-base.spec.ts +125 -125
- package/src/_services/base/api.service-base.ts +74 -74
- package/src/_services/base/archive-data.service.spec.ts +196 -196
- package/src/_services/base/archive-data.service.ts +216 -216
- package/src/_services/base/data.service.spec.ts +493 -493
- package/src/_services/base/data.service.ts +2525 -2525
- package/src/_services/base/db.service.spec.ts +73 -73
- package/src/_services/base/db.service.ts +1575 -1575
- package/src/_services/base/singleton.service-base.spec.ts +28 -28
- package/src/_services/base/singleton.service-base.ts +24 -24
- package/src/_services/base/singleton.service.spec.ts +114 -114
- package/src/_services/base/singleton.service.ts +38 -38
- package/src/_services/core/api.service.spec.ts +140 -140
- package/src/_services/core/auth.service.spec.ts +159 -159
- package/src/_services/core/auth.service.ts +174 -174
- package/src/_services/core/email.service.spec.ts +85 -85
- package/src/_services/core/email.service.ts +742 -742
- package/src/_services/core/global.service.spec.ts +275 -275
- package/src/_services/core/global.service.ts +461 -461
- package/src/_services/core/service-collection.service.spec.ts +46 -46
- package/src/_services/core/service-collection.service.ts +6 -6
- package/src/_services/route/controller.service.spec.ts +53 -53
- package/src/_services/route/controller.service.ts +148 -148
- package/src/_services/route/routing-module.service.spec.ts +98 -98
- package/src/_services/route/routing-module.service.ts +330 -330
- package/src/_services/shared.static-service.spec.ts +99 -99
- package/src/_services/shared.static-service.ts +78 -78
- package/src/index.ts +94 -94
- package/tsconfig.app.json +12 -12
- package/tsconfig.json +42 -42
- package/build/_modules/logs/get-logs-routing-module.util.d.ts +0 -19
- package/build/_modules/logs/get-logs-routing-module.util.d.ts.map +0 -1
- package/build/_modules/logs/get-logs-routing-module.util.js +0 -32
- package/build/_modules/logs/get-logs-routing-module.util.js.map +0 -1
- package/build/_modules/logs/index.d.ts +0 -4
- package/build/_modules/logs/index.d.ts.map +0 -1
- package/build/_modules/logs/index.js +0 -10
- package/build/_modules/logs/index.js.map +0 -1
- package/build/_modules/logs/log-buffer.service.d.ts +0 -38
- package/build/_modules/logs/log-buffer.service.d.ts.map +0 -1
- package/build/_modules/logs/log-buffer.service.js +0 -97
- package/build/_modules/logs/log-buffer.service.js.map +0 -1
- package/build/_modules/logs/logs.controller.d.ts +0 -27
- package/build/_modules/logs/logs.controller.d.ts.map +0 -1
- package/build/_modules/logs/logs.controller.js +0 -90
- package/build/_modules/logs/logs.controller.js.map +0 -1
- package/build/_modules/logs/logs.service.d.ts +0 -40
- package/build/_modules/logs/logs.service.d.ts.map +0 -1
- package/build/_modules/logs/logs.service.js +0 -97
- package/build/_modules/logs/logs.service.js.map +0 -1
- package/src/_modules/logs/get-logs-routing-module.util.ts +0 -36
- package/src/_modules/logs/index.ts +0 -3
- package/src/_modules/logs/log-buffer.service.ts +0 -101
- package/src/_modules/logs/logs.controller.ts +0 -109
- package/src/_modules/logs/logs.service.ts +0 -100
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
import { DyNTS_OAuth2_Controller } from './oauth2.controller';
|
|
3
|
-
import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
|
|
4
|
-
import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
|
|
5
|
-
import { DyNTS_OAuth2_AuthService } from '../_services/oauth2.auth-service';
|
|
6
|
-
import { DyNTS_OAuth2_ControlService } from '../_services/oauth2.control-service';
|
|
7
|
-
|
|
8
|
-
describe('| DyNTS_OAuth2_Controller', () => {
|
|
9
|
-
let controller: DyNTS_OAuth2_Controller;
|
|
10
|
-
let mockAuthService: jasmine.SpyObj<DyNTS_OAuth2_AuthService>;
|
|
11
|
-
let mockControlService: jasmine.SpyObj<DyNTS_OAuth2_ControlService>;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
// Reset singleton instances to prevent state leakage between tests
|
|
15
|
-
(DyNTS_OAuth2_Controller as any).instance = undefined;
|
|
16
|
-
(DyNTS_OAuth2_ControlService as any).instance = undefined;
|
|
17
|
-
(DyNTS_OAuth2_AuthService as any).instance = undefined;
|
|
18
|
-
|
|
19
|
-
// Mock the services to prevent circular dependency
|
|
20
|
-
mockAuthService = jasmine.createSpyObj('DyNTS_OAuth2_AuthService', [
|
|
21
|
-
'authenticate_token',
|
|
22
|
-
'getTokenFromRequest',
|
|
23
|
-
]);
|
|
24
|
-
mockControlService = jasmine.createSpyObj('DyNTS_OAuth2_ControlService', [
|
|
25
|
-
'handleAuthorizationRequest',
|
|
26
|
-
'handleTokenRequest',
|
|
27
|
-
'handleUserInfoRequest',
|
|
28
|
-
'handleTokenRevocation',
|
|
29
|
-
]);
|
|
30
|
-
|
|
31
|
-
spyOn(DyNTS_OAuth2_AuthService, 'getInstance').and.returnValue(mockAuthService);
|
|
32
|
-
spyOn(DyNTS_OAuth2_ControlService, 'getInstance').and.returnValue(mockControlService);
|
|
33
|
-
|
|
34
|
-
// Now we can safely get the Controller instance
|
|
35
|
-
controller = DyNTS_OAuth2_Controller.getInstance();
|
|
36
|
-
|
|
37
|
-
// Replace the services with our mocks
|
|
38
|
-
(controller as any).authService = mockAuthService;
|
|
39
|
-
(controller as any).controlService = mockControlService;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('| should be a singleton instance', () => {
|
|
43
|
-
const instance1 = DyNTS_OAuth2_Controller.getInstance();
|
|
44
|
-
const instance2 = DyNTS_OAuth2_Controller.getInstance();
|
|
45
|
-
|
|
46
|
-
expect(instance1).toBe(instance2);
|
|
47
|
-
expect(instance1).toBeInstanceOf(DyNTS_OAuth2_Controller);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('| setupEndpoints', () => {
|
|
51
|
-
it('| should setup all OAuth2 endpoints', () => {
|
|
52
|
-
controller.setupEndpoints();
|
|
53
|
-
|
|
54
|
-
expect(controller.endpoints).toBeDefined();
|
|
55
|
-
expect(controller.endpoints.length).toBe(4);
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('| should setup authorize endpoint', () => {
|
|
59
|
-
controller.setupEndpoints();
|
|
60
|
-
|
|
61
|
-
const authorizeEndpoint = controller.endpoints.find(ep => ep.name === 'authorize');
|
|
62
|
-
expect(authorizeEndpoint).toBeDefined();
|
|
63
|
-
expect(authorizeEndpoint?.type).toBe(DyFM_HttpCallType.get);
|
|
64
|
-
expect(authorizeEndpoint?.endpoint).toBe('/oauth2/authorize');
|
|
65
|
-
expect((authorizeEndpoint as any)?.tasks).toBeDefined();
|
|
66
|
-
expect((authorizeEndpoint as any)?.tasks?.length).toBe(1);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('| should setup token endpoint', () => {
|
|
70
|
-
controller.setupEndpoints();
|
|
71
|
-
|
|
72
|
-
const tokenEndpoint = controller.endpoints.find(ep => ep.name === 'token');
|
|
73
|
-
expect(tokenEndpoint).toBeDefined();
|
|
74
|
-
expect(tokenEndpoint?.type).toBe(DyFM_HttpCallType.post);
|
|
75
|
-
expect(tokenEndpoint?.endpoint).toBe('/oauth2/token');
|
|
76
|
-
expect((tokenEndpoint as any)?.tasks).toBeDefined();
|
|
77
|
-
expect((tokenEndpoint as any)?.tasks?.length).toBe(1);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('| should setup userinfo endpoint', () => {
|
|
81
|
-
controller.setupEndpoints();
|
|
82
|
-
|
|
83
|
-
const userinfoEndpoint = controller.endpoints.find(ep => ep.name === 'userinfo');
|
|
84
|
-
expect(userinfoEndpoint).toBeDefined();
|
|
85
|
-
expect(userinfoEndpoint?.type).toBe(DyFM_HttpCallType.get);
|
|
86
|
-
expect(userinfoEndpoint?.endpoint).toBe('/oauth2/userinfo');
|
|
87
|
-
expect((userinfoEndpoint as any)?.preProcesses).toBeDefined();
|
|
88
|
-
expect((userinfoEndpoint as any)?.preProcesses?.length).toBe(1);
|
|
89
|
-
expect((userinfoEndpoint as any)?.tasks).toBeDefined();
|
|
90
|
-
expect((userinfoEndpoint as any)?.tasks?.length).toBe(1);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
it('| should setup revoke endpoint', () => {
|
|
94
|
-
controller.setupEndpoints();
|
|
95
|
-
|
|
96
|
-
const revokeEndpoint = controller.endpoints.find(ep => ep.name === 'revoke');
|
|
97
|
-
expect(revokeEndpoint).toBeDefined();
|
|
98
|
-
expect(revokeEndpoint?.type).toBe(DyFM_HttpCallType.post);
|
|
99
|
-
expect(revokeEndpoint?.endpoint).toBe('/oauth2/revoke');
|
|
100
|
-
expect((revokeEndpoint as any)?.preProcesses).toBeDefined();
|
|
101
|
-
expect((revokeEndpoint as any)?.preProcesses?.length).toBe(1);
|
|
102
|
-
expect((revokeEndpoint as any)?.tasks).toBeDefined();
|
|
103
|
-
expect((revokeEndpoint as any)?.tasks?.length).toBe(1);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
|
|
1
|
+
|
|
2
|
+
import { DyNTS_OAuth2_Controller } from './oauth2.controller';
|
|
3
|
+
import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
|
|
4
|
+
import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
|
|
5
|
+
import { DyNTS_OAuth2_AuthService } from '../_services/oauth2.auth-service';
|
|
6
|
+
import { DyNTS_OAuth2_ControlService } from '../_services/oauth2.control-service';
|
|
7
|
+
|
|
8
|
+
describe('| DyNTS_OAuth2_Controller', () => {
|
|
9
|
+
let controller: DyNTS_OAuth2_Controller;
|
|
10
|
+
let mockAuthService: jasmine.SpyObj<DyNTS_OAuth2_AuthService>;
|
|
11
|
+
let mockControlService: jasmine.SpyObj<DyNTS_OAuth2_ControlService>;
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
// Reset singleton instances to prevent state leakage between tests
|
|
15
|
+
(DyNTS_OAuth2_Controller as any).instance = undefined;
|
|
16
|
+
(DyNTS_OAuth2_ControlService as any).instance = undefined;
|
|
17
|
+
(DyNTS_OAuth2_AuthService as any).instance = undefined;
|
|
18
|
+
|
|
19
|
+
// Mock the services to prevent circular dependency
|
|
20
|
+
mockAuthService = jasmine.createSpyObj('DyNTS_OAuth2_AuthService', [
|
|
21
|
+
'authenticate_token',
|
|
22
|
+
'getTokenFromRequest',
|
|
23
|
+
]);
|
|
24
|
+
mockControlService = jasmine.createSpyObj('DyNTS_OAuth2_ControlService', [
|
|
25
|
+
'handleAuthorizationRequest',
|
|
26
|
+
'handleTokenRequest',
|
|
27
|
+
'handleUserInfoRequest',
|
|
28
|
+
'handleTokenRevocation',
|
|
29
|
+
]);
|
|
30
|
+
|
|
31
|
+
spyOn(DyNTS_OAuth2_AuthService, 'getInstance').and.returnValue(mockAuthService);
|
|
32
|
+
spyOn(DyNTS_OAuth2_ControlService, 'getInstance').and.returnValue(mockControlService);
|
|
33
|
+
|
|
34
|
+
// Now we can safely get the Controller instance
|
|
35
|
+
controller = DyNTS_OAuth2_Controller.getInstance();
|
|
36
|
+
|
|
37
|
+
// Replace the services with our mocks
|
|
38
|
+
(controller as any).authService = mockAuthService;
|
|
39
|
+
(controller as any).controlService = mockControlService;
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('| should be a singleton instance', () => {
|
|
43
|
+
const instance1 = DyNTS_OAuth2_Controller.getInstance();
|
|
44
|
+
const instance2 = DyNTS_OAuth2_Controller.getInstance();
|
|
45
|
+
|
|
46
|
+
expect(instance1).toBe(instance2);
|
|
47
|
+
expect(instance1).toBeInstanceOf(DyNTS_OAuth2_Controller);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe('| setupEndpoints', () => {
|
|
51
|
+
it('| should setup all OAuth2 endpoints', () => {
|
|
52
|
+
controller.setupEndpoints();
|
|
53
|
+
|
|
54
|
+
expect(controller.endpoints).toBeDefined();
|
|
55
|
+
expect(controller.endpoints.length).toBe(4);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('| should setup authorize endpoint', () => {
|
|
59
|
+
controller.setupEndpoints();
|
|
60
|
+
|
|
61
|
+
const authorizeEndpoint = controller.endpoints.find(ep => ep.name === 'authorize');
|
|
62
|
+
expect(authorizeEndpoint).toBeDefined();
|
|
63
|
+
expect(authorizeEndpoint?.type).toBe(DyFM_HttpCallType.get);
|
|
64
|
+
expect(authorizeEndpoint?.endpoint).toBe('/oauth2/authorize');
|
|
65
|
+
expect((authorizeEndpoint as any)?.tasks).toBeDefined();
|
|
66
|
+
expect((authorizeEndpoint as any)?.tasks?.length).toBe(1);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('| should setup token endpoint', () => {
|
|
70
|
+
controller.setupEndpoints();
|
|
71
|
+
|
|
72
|
+
const tokenEndpoint = controller.endpoints.find(ep => ep.name === 'token');
|
|
73
|
+
expect(tokenEndpoint).toBeDefined();
|
|
74
|
+
expect(tokenEndpoint?.type).toBe(DyFM_HttpCallType.post);
|
|
75
|
+
expect(tokenEndpoint?.endpoint).toBe('/oauth2/token');
|
|
76
|
+
expect((tokenEndpoint as any)?.tasks).toBeDefined();
|
|
77
|
+
expect((tokenEndpoint as any)?.tasks?.length).toBe(1);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('| should setup userinfo endpoint', () => {
|
|
81
|
+
controller.setupEndpoints();
|
|
82
|
+
|
|
83
|
+
const userinfoEndpoint = controller.endpoints.find(ep => ep.name === 'userinfo');
|
|
84
|
+
expect(userinfoEndpoint).toBeDefined();
|
|
85
|
+
expect(userinfoEndpoint?.type).toBe(DyFM_HttpCallType.get);
|
|
86
|
+
expect(userinfoEndpoint?.endpoint).toBe('/oauth2/userinfo');
|
|
87
|
+
expect((userinfoEndpoint as any)?.preProcesses).toBeDefined();
|
|
88
|
+
expect((userinfoEndpoint as any)?.preProcesses?.length).toBe(1);
|
|
89
|
+
expect((userinfoEndpoint as any)?.tasks).toBeDefined();
|
|
90
|
+
expect((userinfoEndpoint as any)?.tasks?.length).toBe(1);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('| should setup revoke endpoint', () => {
|
|
94
|
+
controller.setupEndpoints();
|
|
95
|
+
|
|
96
|
+
const revokeEndpoint = controller.endpoints.find(ep => ep.name === 'revoke');
|
|
97
|
+
expect(revokeEndpoint).toBeDefined();
|
|
98
|
+
expect(revokeEndpoint?.type).toBe(DyFM_HttpCallType.post);
|
|
99
|
+
expect(revokeEndpoint?.endpoint).toBe('/oauth2/revoke');
|
|
100
|
+
expect((revokeEndpoint as any)?.preProcesses).toBeDefined();
|
|
101
|
+
expect((revokeEndpoint as any)?.preProcesses?.length).toBe(1);
|
|
102
|
+
expect((revokeEndpoint as any)?.tasks).toBeDefined();
|
|
103
|
+
expect((revokeEndpoint as any)?.tasks?.length).toBe(1);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { Request, Response } from 'express';
|
|
2
|
-
import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
|
|
3
|
-
import { DyNTS_Controller } from '../../../_services/route/controller.service';
|
|
4
|
-
import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
|
|
5
|
-
import { DyNTS_OAuth2_AuthService } from '../_services/oauth2.auth-service';
|
|
6
|
-
import { DyNTS_OAuth2_ControlService } from '../_services/oauth2.control-service';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* OAuth2 Controller implementation
|
|
10
|
-
*
|
|
11
|
-
* This controller handles OAuth2 specific endpoints and authentication flows
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* const oauth2Controller = DyNTS_OAuth2_Controller.getInstance();
|
|
15
|
-
* oauth2Controller.setupEndpoints();
|
|
16
|
-
*/
|
|
17
|
-
export class DyNTS_OAuth2_Controller extends DyNTS_Controller {
|
|
18
|
-
static getInstance(): DyNTS_OAuth2_Controller {
|
|
19
|
-
return DyNTS_OAuth2_Controller.getSingletonInstance();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
private readonly authService: DyNTS_OAuth2_AuthService = DyNTS_OAuth2_AuthService.getInstance();
|
|
23
|
-
private readonly controlService: DyNTS_OAuth2_ControlService = DyNTS_OAuth2_ControlService.getInstance();
|
|
24
|
-
|
|
25
|
-
setupEndpoints(): void {
|
|
26
|
-
this.endpoints = [
|
|
27
|
-
new DyNTS_Endpoint_Params({
|
|
28
|
-
name: 'authorize',
|
|
29
|
-
type: DyFM_HttpCallType.get,
|
|
30
|
-
endpoint: '/oauth2/authorize',
|
|
31
|
-
tasks: [
|
|
32
|
-
async (req: Request, res: Response): Promise<void> => {
|
|
33
|
-
// TODO: Implement OAuth2 authorization endpoint
|
|
34
|
-
// 1. Validate client_id and redirect_uri
|
|
35
|
-
// 2. Check if user is already authenticated
|
|
36
|
-
// 3. If not authenticated, redirect to login page
|
|
37
|
-
// 4. If authenticated, show consent page
|
|
38
|
-
// 5. Handle user consent
|
|
39
|
-
// 6. Generate authorization code or access token
|
|
40
|
-
// 7. Redirect back to client with code/token
|
|
41
|
-
await this.controlService.handleAuthorizationRequest(req, res);
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
}),
|
|
45
|
-
|
|
46
|
-
new DyNTS_Endpoint_Params({
|
|
47
|
-
name: 'token',
|
|
48
|
-
type: DyFM_HttpCallType.post,
|
|
49
|
-
endpoint: '/oauth2/token',
|
|
50
|
-
tasks: [
|
|
51
|
-
async (req: Request, res: Response): Promise<void> => {
|
|
52
|
-
// TODO: Implement OAuth2 token endpoint
|
|
53
|
-
// 1. Validate client credentials
|
|
54
|
-
// 2. Handle different grant types:
|
|
55
|
-
// - authorization_code
|
|
56
|
-
// - refresh_token
|
|
57
|
-
// - client_credentials
|
|
58
|
-
// - password
|
|
59
|
-
// 3. Generate appropriate tokens
|
|
60
|
-
// 4. Return token response
|
|
61
|
-
await this.controlService.handleTokenRequest(req, res);
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
}),
|
|
65
|
-
|
|
66
|
-
new DyNTS_Endpoint_Params({
|
|
67
|
-
name: 'userinfo',
|
|
68
|
-
type: DyFM_HttpCallType.get,
|
|
69
|
-
endpoint: '/oauth2/userinfo',
|
|
70
|
-
preProcesses: [this.authService.authenticate_token],
|
|
71
|
-
tasks: [
|
|
72
|
-
async (req: Request, res: Response): Promise<void> => {
|
|
73
|
-
// TODO: Implement OAuth2 userinfo endpoint
|
|
74
|
-
// 1. Extract user information from token
|
|
75
|
-
// 2. Validate token scope
|
|
76
|
-
// 3. Return user information based on scope
|
|
77
|
-
await this.controlService.handleUserInfoRequest(req, res);
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
}),
|
|
81
|
-
|
|
82
|
-
new DyNTS_Endpoint_Params({
|
|
83
|
-
name: 'revoke',
|
|
84
|
-
type: DyFM_HttpCallType.post,
|
|
85
|
-
endpoint: '/oauth2/revoke',
|
|
86
|
-
preProcesses: [this.authService.authenticate_token],
|
|
87
|
-
tasks: [
|
|
88
|
-
async (req: Request, res: Response): Promise<void> => {
|
|
89
|
-
// TODO: Implement OAuth2 token revocation endpoint
|
|
90
|
-
// 1. Validate token
|
|
91
|
-
// 2. Revoke token and any associated refresh tokens
|
|
92
|
-
// 3. Clear token from storage/cache
|
|
93
|
-
await this.controlService.handleTokenRevocation(req, res);
|
|
94
|
-
},
|
|
95
|
-
],
|
|
96
|
-
}),
|
|
97
|
-
];
|
|
98
|
-
}
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
|
|
3
|
+
import { DyNTS_Controller } from '../../../_services/route/controller.service';
|
|
4
|
+
import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
|
|
5
|
+
import { DyNTS_OAuth2_AuthService } from '../_services/oauth2.auth-service';
|
|
6
|
+
import { DyNTS_OAuth2_ControlService } from '../_services/oauth2.control-service';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* OAuth2 Controller implementation
|
|
10
|
+
*
|
|
11
|
+
* This controller handles OAuth2 specific endpoints and authentication flows
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const oauth2Controller = DyNTS_OAuth2_Controller.getInstance();
|
|
15
|
+
* oauth2Controller.setupEndpoints();
|
|
16
|
+
*/
|
|
17
|
+
export class DyNTS_OAuth2_Controller extends DyNTS_Controller {
|
|
18
|
+
static getInstance(): DyNTS_OAuth2_Controller {
|
|
19
|
+
return DyNTS_OAuth2_Controller.getSingletonInstance();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private readonly authService: DyNTS_OAuth2_AuthService = DyNTS_OAuth2_AuthService.getInstance();
|
|
23
|
+
private readonly controlService: DyNTS_OAuth2_ControlService = DyNTS_OAuth2_ControlService.getInstance();
|
|
24
|
+
|
|
25
|
+
setupEndpoints(): void {
|
|
26
|
+
this.endpoints = [
|
|
27
|
+
new DyNTS_Endpoint_Params({
|
|
28
|
+
name: 'authorize',
|
|
29
|
+
type: DyFM_HttpCallType.get,
|
|
30
|
+
endpoint: '/oauth2/authorize',
|
|
31
|
+
tasks: [
|
|
32
|
+
async (req: Request, res: Response): Promise<void> => {
|
|
33
|
+
// TODO: Implement OAuth2 authorization endpoint
|
|
34
|
+
// 1. Validate client_id and redirect_uri
|
|
35
|
+
// 2. Check if user is already authenticated
|
|
36
|
+
// 3. If not authenticated, redirect to login page
|
|
37
|
+
// 4. If authenticated, show consent page
|
|
38
|
+
// 5. Handle user consent
|
|
39
|
+
// 6. Generate authorization code or access token
|
|
40
|
+
// 7. Redirect back to client with code/token
|
|
41
|
+
await this.controlService.handleAuthorizationRequest(req, res);
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
}),
|
|
45
|
+
|
|
46
|
+
new DyNTS_Endpoint_Params({
|
|
47
|
+
name: 'token',
|
|
48
|
+
type: DyFM_HttpCallType.post,
|
|
49
|
+
endpoint: '/oauth2/token',
|
|
50
|
+
tasks: [
|
|
51
|
+
async (req: Request, res: Response): Promise<void> => {
|
|
52
|
+
// TODO: Implement OAuth2 token endpoint
|
|
53
|
+
// 1. Validate client credentials
|
|
54
|
+
// 2. Handle different grant types:
|
|
55
|
+
// - authorization_code
|
|
56
|
+
// - refresh_token
|
|
57
|
+
// - client_credentials
|
|
58
|
+
// - password
|
|
59
|
+
// 3. Generate appropriate tokens
|
|
60
|
+
// 4. Return token response
|
|
61
|
+
await this.controlService.handleTokenRequest(req, res);
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
}),
|
|
65
|
+
|
|
66
|
+
new DyNTS_Endpoint_Params({
|
|
67
|
+
name: 'userinfo',
|
|
68
|
+
type: DyFM_HttpCallType.get,
|
|
69
|
+
endpoint: '/oauth2/userinfo',
|
|
70
|
+
preProcesses: [this.authService.authenticate_token],
|
|
71
|
+
tasks: [
|
|
72
|
+
async (req: Request, res: Response): Promise<void> => {
|
|
73
|
+
// TODO: Implement OAuth2 userinfo endpoint
|
|
74
|
+
// 1. Extract user information from token
|
|
75
|
+
// 2. Validate token scope
|
|
76
|
+
// 3. Return user information based on scope
|
|
77
|
+
await this.controlService.handleUserInfoRequest(req, res);
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
}),
|
|
81
|
+
|
|
82
|
+
new DyNTS_Endpoint_Params({
|
|
83
|
+
name: 'revoke',
|
|
84
|
+
type: DyFM_HttpCallType.post,
|
|
85
|
+
endpoint: '/oauth2/revoke',
|
|
86
|
+
preProcesses: [this.authService.authenticate_token],
|
|
87
|
+
tasks: [
|
|
88
|
+
async (req: Request, res: Response): Promise<void> => {
|
|
89
|
+
// TODO: Implement OAuth2 token revocation endpoint
|
|
90
|
+
// 1. Validate token
|
|
91
|
+
// 2. Revoke token and any associated refresh tokens
|
|
92
|
+
// 3. Clear token from storage/cache
|
|
93
|
+
await this.controlService.handleTokenRevocation(req, res);
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
}),
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
99
|
}
|