@futdevpro/nts-dynamo 1.15.56 → 1.15.58

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.
Files changed (450) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  7. package/.cursor/rules/_ag_frontend.mdc +39 -39
  8. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  9. package/.cursor/rules/_ag_naming.mdc +115 -115
  10. package/.cursor/rules/_ag_should-be.mdc +6 -6
  11. package/.cursor/rules/ai_development_guide.md +60 -60
  12. package/.cursor/rules/cursor-rules.md +160 -160
  13. package/.cursor/rules/default-command.mdc +464 -464
  14. package/.cursor/rules/error_code_pattern.md +39 -39
  15. package/.cursor/rules/saved rule mcp server use.md +15 -15
  16. package/.dynamo/logs/cicd-pipeline/output.log +2844 -0
  17. package/.dynamo/logs/cicd-pipeline/status.json +94 -0
  18. package/.github/workflows/main.yml +432 -432
  19. package/.vscode/settings.json +10 -10
  20. package/HOWTO.md +15 -15
  21. package/LICENSE +21 -21
  22. package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
  23. package/_specifications/BACKLOG.md +92 -92
  24. package/_specifications/TODO.md +15 -15
  25. package/_specifications/agent.md +138 -138
  26. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.d.ts +110 -0
  27. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.d.ts.map +1 -0
  28. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.js +419 -0
  29. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.js.map +1 -0
  30. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.d.ts +50 -0
  31. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.d.ts.map +1 -0
  32. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.js +3 -0
  33. package/build/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.js.map +1 -0
  34. package/build/_modules/ai/_modules/document-ai/index.d.ts +2 -0
  35. package/build/_modules/ai/_modules/document-ai/index.d.ts.map +1 -1
  36. package/build/_modules/ai/_modules/document-ai/index.js +2 -0
  37. package/build/_modules/ai/_modules/document-ai/index.js.map +1 -1
  38. package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts +81 -0
  39. package/build/_modules/ai/_services/ai-embedding-mock.service.d.ts.map +1 -0
  40. package/build/_modules/ai/_services/ai-embedding-mock.service.js +167 -0
  41. package/build/_modules/ai/_services/ai-embedding-mock.service.js.map +1 -0
  42. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts +52 -0
  43. package/build/_modules/ai/_services/ai-embedding-provider.registry.d.ts.map +1 -0
  44. package/build/_modules/ai/_services/ai-embedding-provider.registry.js +79 -0
  45. package/build/_modules/ai/_services/ai-embedding-provider.registry.js.map +1 -0
  46. package/build/_modules/ai/_services/lmstudio-embedding.control-service.d.ts +111 -0
  47. package/build/_modules/ai/_services/lmstudio-embedding.control-service.d.ts.map +1 -0
  48. package/build/_modules/ai/_services/lmstudio-embedding.control-service.js +298 -0
  49. package/build/_modules/ai/_services/lmstudio-embedding.control-service.js.map +1 -0
  50. package/build/_modules/ai/index.d.ts +3 -0
  51. package/build/_modules/ai/index.d.ts.map +1 -1
  52. package/build/_modules/ai/index.js +4 -0
  53. package/build/_modules/ai/index.js.map +1 -1
  54. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.d.ts +59 -0
  55. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.d.ts.map +1 -0
  56. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.js +169 -0
  57. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.js.map +1 -0
  58. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.d.ts +32 -0
  59. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.d.ts.map +1 -0
  60. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.js +8 -0
  61. package/build/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.js.map +1 -0
  62. package/build/_modules/data-readers/index.d.ts +3 -0
  63. package/build/_modules/data-readers/index.d.ts.map +1 -0
  64. package/build/_modules/data-readers/index.js +11 -0
  65. package/build/_modules/data-readers/index.js.map +1 -0
  66. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.d.ts +36 -0
  67. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.d.ts.map +1 -0
  68. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.js +54 -0
  69. package/build/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.js.map +1 -0
  70. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.d.ts +70 -0
  71. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.d.ts.map +1 -0
  72. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.js +123 -0
  73. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.js.map +1 -0
  74. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.d.ts +43 -0
  75. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.d.ts.map +1 -0
  76. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.js +72 -0
  77. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.js.map +1 -0
  78. package/build/_modules/local-vector-search/index.d.ts +3 -0
  79. package/build/_modules/local-vector-search/index.d.ts.map +1 -1
  80. package/build/_modules/local-vector-search/index.js +4 -0
  81. package/build/_modules/local-vector-search/index.js.map +1 -1
  82. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.d.ts +109 -0
  83. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.d.ts.map +1 -0
  84. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.js +14 -0
  85. package/build/_modules/mcp/_models/interfaces/dynts-mcp.interface.js.map +1 -0
  86. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.d.ts +71 -0
  87. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.d.ts.map +1 -0
  88. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.js +99 -0
  89. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.js.map +1 -0
  90. package/build/_modules/mcp/_services/dynts-mcp.adapter.d.ts +57 -0
  91. package/build/_modules/mcp/_services/dynts-mcp.adapter.d.ts.map +1 -0
  92. package/build/_modules/mcp/_services/dynts-mcp.adapter.js +134 -0
  93. package/build/_modules/mcp/_services/dynts-mcp.adapter.js.map +1 -0
  94. package/build/_modules/mcp/index.d.ts +4 -0
  95. package/build/_modules/mcp/index.d.ts.map +1 -0
  96. package/build/_modules/mcp/index.js +13 -0
  97. package/build/_modules/mcp/index.js.map +1 -0
  98. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.d.ts +19 -0
  99. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.d.ts.map +1 -0
  100. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.js +23 -0
  101. package/build/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.js.map +1 -0
  102. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.d.ts +44 -0
  103. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.d.ts.map +1 -0
  104. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.js +68 -0
  105. package/build/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.js.map +1 -0
  106. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.d.ts +89 -0
  107. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.d.ts.map +1 -0
  108. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.js +3 -0
  109. package/build/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.js.map +1 -0
  110. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.d.ts +84 -0
  111. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.d.ts.map +1 -0
  112. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.js +220 -0
  113. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.js.map +1 -0
  114. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.d.ts +54 -0
  115. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.d.ts.map +1 -0
  116. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.js +76 -0
  117. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.js.map +1 -0
  118. package/build/_modules/scoped-config/index.d.ts +6 -0
  119. package/build/_modules/scoped-config/index.d.ts.map +1 -0
  120. package/build/_modules/scoped-config/index.js +15 -0
  121. package/build/_modules/scoped-config/index.js.map +1 -0
  122. package/eslint.config.js +3 -3
  123. package/nodemon.json +24 -24
  124. package/package.json +58 -2
  125. package/pnpm-workspace.yaml +5 -4
  126. package/scripts/run-coverage-tests.js +28 -28
  127. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  128. package/spec/support/helpers/ts-node-helper.js +93 -93
  129. package/spec/support/jasmine.coverage.json +24 -24
  130. package/spec/support/jasmine.json +24 -24
  131. package/src/_collections/archive.util.spec.ts +57 -57
  132. package/src/_collections/archive.util.ts +18 -18
  133. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  134. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  135. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  136. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  137. package/src/_collections/default-not-found-page.const.ts +22 -22
  138. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  139. package/src/_collections/default-socket-path.const.ts +2 -2
  140. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  141. package/src/_collections/get-environment-settings.util.ts +48 -48
  142. package/src/_collections/global-settings.const.ts +82 -82
  143. package/src/_collections/sample.env +21 -21
  144. package/src/_collections/star.controller.spec.ts +224 -224
  145. package/src/_collections/star.controller.ts +129 -129
  146. package/src/_enums/data-model-type.enum.ts +14 -14
  147. package/src/_enums/data-service-function.enum.ts +24 -24
  148. package/src/_enums/predefined-data-types.enum.ts +16 -16
  149. package/src/_enums/route-security.enum.ts +12 -12
  150. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  151. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  152. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  153. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  154. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  155. package/src/_models/control-models/app-params.control-model.ts +136 -136
  156. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  157. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  158. package/src/_models/control-models/endpoint-params.control-model.spec.ts +627 -627
  159. package/src/_models/control-models/endpoint-params.control-model.ts +627 -627
  160. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  161. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  162. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  163. package/src/_models/control-models/system-control.control-model.ts +12 -12
  164. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  165. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  166. package/src/_models/interfaces/global-log-settings.interface.ts +171 -171
  167. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  168. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  169. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  170. package/src/_models/interfaces/static-client-settings.interface.ts +28 -28
  171. package/src/_models/types/db-update.type.ts +100 -100
  172. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  173. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  174. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  175. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  176. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  177. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  178. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -0
  179. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +520 -0
  180. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  181. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  182. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  183. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  184. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  185. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  186. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -0
  187. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  188. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  189. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  190. package/src/_modules/ai/_modules/document-ai/index.ts +30 -28
  191. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  192. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  193. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  194. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  195. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  196. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  197. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  198. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  199. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  200. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  201. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  202. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  203. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  204. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
  205. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  206. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
  207. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
  208. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
  209. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1033 -1033
  210. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  211. package/src/_modules/ai/_services/ai-embedding-mock.service.spec.ts +115 -0
  212. package/src/_modules/ai/_services/ai-embedding-mock.service.ts +219 -0
  213. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -0
  214. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +110 -0
  215. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  216. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  217. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  218. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  219. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  220. package/src/_modules/ai/_services/ai-llm.service-base.ts +519 -519
  221. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
  222. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  223. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -0
  224. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +378 -0
  225. package/src/_modules/ai/index.ts +18 -13
  226. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  227. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  228. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  229. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  230. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  231. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  232. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  233. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  234. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  235. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  236. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  237. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  238. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  239. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  240. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  241. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  242. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  243. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  244. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  245. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  246. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  247. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  248. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  249. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  250. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  251. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  252. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  253. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  254. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  255. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  256. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  257. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  258. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  259. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  260. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  261. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  262. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  263. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  264. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  265. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  266. package/src/_modules/custom-data/index.ts +9 -9
  267. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -0
  268. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +192 -0
  269. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -0
  270. package/src/_modules/data-readers/index.ts +11 -0
  271. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  272. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  273. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  274. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  275. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  276. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  277. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  278. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  279. package/src/_modules/defaults/index.ts +17 -17
  280. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  281. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  282. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  283. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  284. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  285. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  286. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  287. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  288. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  289. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  290. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  291. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  292. package/src/_modules/discord-assistant/index.ts +38 -38
  293. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  294. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  295. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  296. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  297. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  298. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  299. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  300. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  301. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  302. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  303. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  304. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  305. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  306. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  307. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  308. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  309. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  310. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  311. package/src/_modules/discord-bot/index.ts +36 -36
  312. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
  313. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -0
  314. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  315. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  316. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  317. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
  318. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
  319. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +198 -0
  320. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +146 -0
  321. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -0
  322. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +106 -0
  323. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -393
  324. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +220 -220
  325. package/src/_modules/local-vector-search/index.ts +17 -12
  326. package/src/_modules/logs/index.ts +11 -11
  327. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -0
  328. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -0
  329. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -0
  330. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +157 -0
  331. package/src/_modules/mcp/index.ts +13 -0
  332. package/src/_modules/messaging/README.md +354 -354
  333. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  334. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  335. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  336. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  337. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  338. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  339. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  340. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  341. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  342. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  343. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  344. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  345. package/src/_modules/messaging/index.ts +30 -30
  346. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  347. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  348. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  349. package/src/_modules/mock/app-params.mock.ts +9 -9
  350. package/src/_modules/mock/app-server.mock.ts +188 -188
  351. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  352. package/src/_modules/mock/auth-service.mock.ts +28 -28
  353. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  354. package/src/_modules/mock/controller.mock.ts +16 -16
  355. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  356. package/src/_modules/mock/data-model.mock.ts +82 -82
  357. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  358. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  359. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  360. package/src/_modules/mock/email-service.mock.ts +20 -20
  361. package/src/_modules/mock/email-template.mock.html +14 -14
  362. package/src/_modules/mock/endpoint.mock.ts +91 -91
  363. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  364. package/src/_modules/mock/socket-client.mock.ts +45 -45
  365. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  366. package/src/_modules/mock/socket-server.mock.ts +46 -46
  367. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  368. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  369. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  370. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  371. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  372. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  373. package/src/_modules/oauth2/index.ts +17 -17
  374. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -0
  375. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -0
  376. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +109 -0
  377. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -0
  378. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -0
  379. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -0
  380. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -0
  381. package/src/_modules/scoped-config/index.ts +17 -0
  382. package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
  383. package/src/_modules/server/errors/errors.control-service.ts +85 -85
  384. package/src/_modules/server/errors/errors.controller.spec.ts +241 -241
  385. package/src/_modules/server/errors/errors.controller.ts +431 -431
  386. package/src/_modules/server/errors/errors.data-service.spec.ts +361 -361
  387. package/src/_modules/server/index.ts +30 -30
  388. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  389. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  390. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  391. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  392. package/src/_modules/server/server-status/server-status.control-service.spec.ts +576 -576
  393. package/src/_modules/server/server-status/server-status.control-service.ts +396 -396
  394. package/src/_modules/server/server-status/server-status.controller.spec.ts +240 -240
  395. package/src/_modules/server/server-status/server-status.controller.ts +253 -253
  396. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  397. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  398. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  399. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -164
  400. package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -210
  401. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +46 -46
  402. package/src/_modules/socket/_models/socket-server-service-params.control-model.ts +22 -22
  403. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  404. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  405. package/src/_modules/socket/_services/socket-server.service.spec.ts +11 -11
  406. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  407. package/src/_modules/socket/app-extended.server.ts +630 -630
  408. package/src/_modules/socket/index.ts +42 -42
  409. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  410. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  411. package/src/_modules/test/index.ts +11 -11
  412. package/src/_modules/test/test.controller.spec.ts +72 -72
  413. package/src/_modules/test/test.controller.ts +115 -115
  414. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  415. package/src/_modules/usage/index.ts +15 -15
  416. package/src/_modules/usage/usage.controller.spec.ts +81 -81
  417. package/src/_modules/usage/usage.controller.ts +126 -126
  418. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  419. package/src/_modules/usage/usage.data-service.ts +185 -185
  420. package/src/_services/base/api.service-base.spec.ts +125 -125
  421. package/src/_services/base/api.service-base.ts +74 -74
  422. package/src/_services/base/archive-data.service.spec.ts +196 -196
  423. package/src/_services/base/archive-data.service.ts +216 -216
  424. package/src/_services/base/data.service.spec.ts +674 -674
  425. package/src/_services/base/data.service.ts +2719 -2719
  426. package/src/_services/base/db.service.spec.ts +73 -73
  427. package/src/_services/base/db.service.ts +1575 -1575
  428. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  429. package/src/_services/base/singleton.service-base.ts +24 -24
  430. package/src/_services/base/singleton.service.spec.ts +114 -114
  431. package/src/_services/base/singleton.service.ts +38 -38
  432. package/src/_services/core/api.service.spec.ts +140 -140
  433. package/src/_services/core/auth.service.spec.ts +159 -159
  434. package/src/_services/core/auth.service.ts +174 -174
  435. package/src/_services/core/email.service.spec.ts +85 -85
  436. package/src/_services/core/email.service.ts +742 -742
  437. package/src/_services/core/global.service.spec.ts +275 -275
  438. package/src/_services/core/global.service.ts +461 -461
  439. package/src/_services/core/service-collection.service.spec.ts +46 -46
  440. package/src/_services/core/service-collection.service.ts +6 -6
  441. package/src/_services/route/controller.service.spec.ts +53 -53
  442. package/src/_services/route/controller.service.ts +148 -148
  443. package/src/_services/route/routing-module.service.spec.ts +98 -98
  444. package/src/_services/route/routing-module.service.ts +330 -330
  445. package/src/_services/server/app.server.ts +1726 -1726
  446. package/src/_services/shared.static-service.spec.ts +99 -99
  447. package/src/_services/shared.static-service.ts +78 -78
  448. package/src/index.ts +96 -96
  449. package/tsconfig.app.json +12 -12
  450. package/tsconfig.json +42 -42
@@ -1,418 +1,418 @@
1
-
2
- import { DyNTS_LVS_DocChunkDataService } from './lvs-doc-chunk-data.service';
3
- import { DyFM_OAI_Settings, DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
4
- import { DyNTS_DAI_DocChunk, DyNTS_DAI_docChunk_dataParams } from '../../ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model';
5
- import { DyNTS_DAI_DocPage } from '../../ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model';
6
- import { DyNTS_DAI_DocChunkCompareResult } from '../../ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface';
7
- import { DyNTS_DAI_CompareResult_Type } from '../../ai/_modules/document-ai/_enums/dai-compare-result-type.enum';
8
- import { DyFM_Error, DyFM_EnvironmentFlag } from '@futdevpro/fsm-dynamo';
9
- import { DyNTS_DAI_DocChunking_Util } from '../../ai/_modules/document-ai/_collections/dai-chunking.util';
10
- import { DyNTS_DAI_Document_Util } from '../../ai/_modules/document-ai/_collections/dai-document.util';
11
- import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
12
- import { DyNTS_GlobalService } from '../../../_services/core/global.service';
13
-
14
- describe('| DyNTS_LVS_DocChunkDataService', () => {
15
- let service: DyNTS_LVS_DocChunkDataService;
16
- let mockOpenAISettings: DyFM_OAI_Settings;
17
- let mockDBService: jasmine.SpyObj<{
18
- find: (filter: unknown) => Promise<unknown[]>;
19
- findOne: (filter: unknown) => Promise<unknown>;
20
- getDataById: (id: string) => Promise<unknown>;
21
- getAll: () => Promise<unknown[]>;
22
- createData: (data: unknown, issuer: string) => Promise<unknown>;
23
- modifyData: (data: unknown, issuer: string, dontUpdateModified?: boolean) => Promise<unknown>;
24
- markDeletedById: (id: string, issuer: string) => Promise<void>;
25
- }>;
26
-
27
- beforeEach(() => {
28
- DyNTS_global_settings.env_settings = {
29
- environment: DyFM_EnvironmentFlag.local,
30
- mongoUri: 'mongodb://localhost:27017/test',
31
- } as typeof DyNTS_global_settings.env_settings;
32
-
33
- mockDBService = jasmine.createSpyObj('DyNTS_DBService', [
34
- 'find',
35
- 'findOne',
36
- 'getDataById',
37
- 'getAll',
38
- 'getDataListByIds',
39
- 'getDataByDependencyId',
40
- 'getDataListByDependencyId',
41
- 'getDataListByDependencyIds',
42
- 'createData',
43
- 'modifyData',
44
- 'updateOne',
45
- 'markDeletedById',
46
- 'trueDeleteDataById',
47
- 'trueDeleteAllData',
48
- 'restoreDeletedById',
49
- ]);
50
- spyOn(DyNTS_GlobalService, 'getDBService').and.returnValue(mockDBService as never);
51
- spyOn(DyNTS_GlobalService, 'getDBServiceByKey').and.returnValue(mockDBService as never);
52
-
53
- mockOpenAISettings = {
54
- config: {
55
- apiKey: 'test-api-key',
56
- organization: 'test-org',
57
- },
58
- defaultSettings: {
59
- useModel: DyFM_OAI_Model.textEmbedding_3Small,
60
- },
61
- };
62
-
63
- service = new DyNTS_LVS_DocChunkDataService(
64
- 'test-issuer',
65
- mockOpenAISettings
66
- );
67
- service.clickupWorkspaceId = 'workspace-123';
68
- });
69
-
70
- describe('| constructor', () => {
71
- it('| should initialize with issuer and settings', () => {
72
- expect((service as any).issuer).toBe('test-issuer');
73
- expect((service as any).openAISettings).toEqual(mockOpenAISettings);
74
- });
75
- });
76
-
77
- describe('| getDocumentDataService', () => {
78
- it('| should return document data service', () => {
79
- const result = service.getDocumentDataService();
80
-
81
- expect(result).toBeDefined();
82
- expect((result as any).issuer).toBe('test-issuer');
83
- });
84
- });
85
-
86
- describe('| getDocPageDataService', () => {
87
- it('| should return doc page data service', () => {
88
- const result = service.getDocPageDataService();
89
-
90
- expect(result).toBeDefined();
91
- expect((result as any).issuer).toBe('test-issuer');
92
- });
93
- });
94
-
95
- describe('| getPageLink', () => {
96
- it('| should return page link', () => {
97
- const mockPage = {
98
- name: 'Test Page',
99
- externalDocumentId: 'doc-123',
100
- externalPageId: 'page-456',
101
- } as any;
102
-
103
- spyOn(DyNTS_DAI_Document_Util, 'getClickupPageLink').and.returnValue('[Test Page](link)');
104
-
105
- const result = service.getPageLink(mockPage);
106
-
107
- expect(result).toBe('[Test Page](link)');
108
- expect(DyNTS_DAI_Document_Util.getClickupPageLink).toHaveBeenCalledWith(
109
- 'Test Page',
110
- 'workspace-123',
111
- 'doc-123',
112
- 'page-456'
113
- );
114
- });
115
- });
116
-
117
- describe('| chunkPage', () => {
118
- it('| should chunk page content', async () => {
119
- const mockPage: DyNTS_DAI_DocPage = {
120
- _id: 'page-123',
121
- name: 'Test Page',
122
- content: '# Test\n\nContent here',
123
- chunks: [],
124
- externalDocumentId: 'doc-123',
125
- externalPageId: 'page-456',
126
- } as any;
127
-
128
- spyOn(DyNTS_DAI_DocChunking_Util, 'chunkMdContent').and.returnValue(Promise.resolve([
129
- {
130
- _id: 'chunk-1',
131
- chunkContent: '# Test\n\nContent here',
132
- chunkIndex: 0,
133
- } as any,
134
- ]));
135
-
136
- const result = await service.chunkPage(mockPage);
137
-
138
- expect(result).toBeDefined();
139
- expect(result.length).toBeGreaterThan(0);
140
- expect(DyNTS_DAI_DocChunking_Util.chunkMdContent).toHaveBeenCalled();
141
- });
142
-
143
- it('| should handle chunking errors', async () => {
144
- const mockPage: DyNTS_DAI_DocPage = {
145
- _id: 'page-123',
146
- name: 'Test Page',
147
- content: '# Test\n\nContent here',
148
- chunks: [],
149
- } as any;
150
-
151
- const error = new Error('Chunking failed');
152
- spyOn(DyNTS_DAI_DocChunking_Util, 'chunkMdContent').and.returnValue(Promise.reject(error));
153
-
154
- try {
155
- await service.chunkPage(mockPage);
156
- fail('Should have thrown an error');
157
- } catch (err) {
158
- expect(err).toBeInstanceOf(DyFM_Error);
159
- expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-CP0');
160
- }
161
- });
162
- });
163
-
164
- describe('| compareChunk', () => {
165
- it('| should return equal when chunks are identical', async () => {
166
- const oldChunk: DyNTS_DAI_DocChunk = {
167
- _id: 'chunk-1',
168
- chunkContent: 'Test content',
169
- path: 'test/path',
170
- documentName: 'Test Doc',
171
- pageName: 'Test Page',
172
- pageLink: '[Test Page](link)',
173
- allFlaggedParents: ['flag1', 'flag2'],
174
- } as any;
175
-
176
- const newChunk: DyNTS_DAI_DocChunk = {
177
- _id: 'chunk-1',
178
- chunkContent: 'Test content',
179
- path: 'test/path',
180
- documentName: 'Test Doc',
181
- pageName: 'Test Page',
182
- pageLink: '[Test Page](link)',
183
- allFlaggedParents: ['flag1', 'flag2'],
184
- } as any;
185
-
186
- const result = await service.compareChunk(newChunk, oldChunk);
187
-
188
- expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.equal);
189
- expect(result.newChunk).toBe(newChunk);
190
- expect(result.oldChunk).toBe(oldChunk);
191
- });
192
-
193
- it('| should return modified when chunks differ', async () => {
194
- const oldChunk: DyNTS_DAI_DocChunk = {
195
- _id: 'chunk-1',
196
- chunkContent: 'Old content',
197
- path: 'test/path',
198
- documentName: 'Test Doc',
199
- pageName: 'Test Page',
200
- pageLink: '[Test Page](link)',
201
- allFlaggedParents: ['flag1'],
202
- } as any;
203
-
204
- const newChunk: DyNTS_DAI_DocChunk = {
205
- _id: 'chunk-1',
206
- chunkContent: 'New content',
207
- path: 'test/path',
208
- documentName: 'Test Doc',
209
- pageName: 'Test Page',
210
- pageLink: '[Test Page](link)',
211
- allFlaggedParents: ['flag1'],
212
- } as any;
213
-
214
- const result = await service.compareChunk(newChunk, oldChunk);
215
-
216
- expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.modified);
217
- expect(result.newChunk).toBe(newChunk);
218
- expect(result.oldChunk).toBe(oldChunk);
219
- });
220
-
221
- it('| should throw error if oldChunk is missing', async () => {
222
- const newChunk: DyNTS_DAI_DocChunk = {
223
- _id: 'chunk-1',
224
- chunkContent: 'New content',
225
- } as any;
226
-
227
- try {
228
- await service.compareChunk(newChunk, null as any);
229
- fail('Should have thrown an error');
230
- } catch (err) {
231
- expect(err).toBeInstanceOf(DyFM_Error);
232
- expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-CC1');
233
- }
234
- });
235
-
236
- it('| should detect changes in allFlaggedParents', async () => {
237
- const oldChunk: DyNTS_DAI_DocChunk = {
238
- _id: 'chunk-1',
239
- chunkContent: 'Test content',
240
- path: 'test/path',
241
- documentName: 'Test Doc',
242
- pageName: 'Test Page',
243
- pageLink: '[Test Page](link)',
244
- allFlaggedParents: ['flag1'],
245
- } as any;
246
-
247
- const newChunk: DyNTS_DAI_DocChunk = {
248
- _id: 'chunk-1',
249
- chunkContent: 'Test content',
250
- path: 'test/path',
251
- documentName: 'Test Doc',
252
- pageName: 'Test Page',
253
- pageLink: '[Test Page](link)',
254
- allFlaggedParents: ['flag1', 'flag2'],
255
- } as any;
256
-
257
- const result = await service.compareChunk(newChunk, oldChunk);
258
-
259
- expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.modified);
260
- });
261
- });
262
-
263
- describe('| processNewPage', () => {
264
- it('| should process new page and return compare results', async () => {
265
- const mockPage: DyNTS_DAI_DocPage = {
266
- _id: 'page-123',
267
- name: 'Test Page',
268
- content: '# Test\n\nContent here',
269
- chunks: [],
270
- documentId: 'doc-123',
271
- externalDocumentId: 'ext-doc-123',
272
- externalPageId: 'ext-page-123',
273
- } as any;
274
-
275
- const mockChunk: DyNTS_DAI_DocChunk = {
276
- _id: 'chunk-1',
277
- chunkContent: 'Test content',
278
- chunkIndex: 0,
279
- } as any;
280
-
281
- spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockChunk]));
282
- spyOn(service, 'saveData').and.returnValue(Promise.resolve(mockChunk));
283
-
284
- const result = await service.processNewPage(mockPage);
285
-
286
- expect(result).toBeDefined();
287
- expect(result.length).toBe(1);
288
- expect(result[0].result).toBe(DyNTS_DAI_CompareResult_Type.new);
289
- expect(result[0].newChunk).toBe(mockChunk);
290
- expect(result[0].oldChunk).toBeNull();
291
- });
292
-
293
- it('| should handle processing errors', async () => {
294
- const mockPage: DyNTS_DAI_DocPage = {
295
- _id: 'page-123',
296
- name: 'Test Page',
297
- content: '# Test\n\nContent here',
298
- chunks: [],
299
- } as any;
300
-
301
- const error = new Error('Processing failed');
302
- spyOn(service, 'chunkPage').and.returnValue(Promise.reject(error));
303
-
304
- try {
305
- await service.processNewPage(mockPage);
306
- fail('Should have thrown an error');
307
- } catch (err) {
308
- expect(err).toBeInstanceOf(DyFM_Error);
309
- expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-PNP0');
310
- }
311
- });
312
- });
313
-
314
- describe('| processPage', () => {
315
- it('| should process page and return compare results', async () => {
316
- const mockPage: DyNTS_DAI_DocPage = {
317
- _id: 'page-123',
318
- name: 'Test Page',
319
- content: '# Test\n\nContent here',
320
- chunks: [],
321
- documentId: 'doc-123',
322
- externalDocumentId: 'ext-doc-123',
323
- externalPageId: 'ext-page-123',
324
- } as any;
325
-
326
- const mockNewChunk: DyNTS_DAI_DocChunk = {
327
- _id: 'chunk-1',
328
- chunkContent: 'New content',
329
- chunkIndex: 0,
330
- } as any;
331
-
332
- const mockOldChunk: DyNTS_DAI_DocChunk = {
333
- _id: 'chunk-1',
334
- chunkContent: 'Old content',
335
- chunkIndex: 0,
336
- } as any;
337
-
338
- spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockNewChunk]));
339
- spyOn(service, 'findDataList').and.returnValue(Promise.resolve([mockOldChunk]));
340
- spyOn(service, 'compareChunk').and.returnValue(Promise.resolve({
341
- result: DyNTS_DAI_CompareResult_Type.modified,
342
- newChunk: mockNewChunk,
343
- oldChunk: mockOldChunk,
344
- }));
345
- spyOn(service, 'saveData').and.returnValue(Promise.resolve(mockNewChunk));
346
-
347
- const result = await service.processPage(mockPage);
348
-
349
- expect(result).toBeDefined();
350
- expect(result.length).toBeGreaterThan(0);
351
- });
352
-
353
- it('| should handle processing errors', async () => {
354
- const mockPage: DyNTS_DAI_DocPage = {
355
- _id: 'page-123',
356
- name: 'Test Page',
357
- content: '# Test\n\nContent here',
358
- chunks: [],
359
- } as any;
360
-
361
- const error = new Error('Processing failed');
362
- spyOn(service, 'chunkPage').and.returnValue(Promise.reject(error));
363
-
364
- try {
365
- await service.processPage(mockPage);
366
- fail('Should have thrown an error');
367
- } catch (err) {
368
- expect(err).toBeInstanceOf(DyFM_Error);
369
- expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-PP0');
370
- }
371
- });
372
-
373
- it('| should delete old chunks when new page has fewer chunks', async () => {
374
- const mockPage: DyNTS_DAI_DocPage = {
375
- _id: 'page-123',
376
- name: 'Test Page',
377
- content: '# Test\n\nContent here',
378
- chunks: [],
379
- documentId: 'doc-123',
380
- externalDocumentId: 'ext-doc-123',
381
- externalPageId: 'ext-page-123',
382
- } as any;
383
-
384
- const mockNewChunk: DyNTS_DAI_DocChunk = {
385
- _id: 'chunk-1',
386
- chunkContent: 'New content',
387
- chunkIndex: 0,
388
- } as any;
389
-
390
- const mockOldChunk1: DyNTS_DAI_DocChunk = {
391
- _id: 'chunk-1',
392
- chunkContent: 'Old content',
393
- chunkIndex: 0,
394
- } as any;
395
-
396
- const mockOldChunk2: DyNTS_DAI_DocChunk = {
397
- _id: 'chunk-2',
398
- chunkContent: 'Old content 2',
399
- chunkIndex: 1,
400
- } as any;
401
-
402
- spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockNewChunk]));
403
- spyOn(service, 'findDataList').and.returnValue(Promise.resolve([mockOldChunk1, mockOldChunk2]));
404
- spyOn(service, 'compareChunk').and.returnValue(Promise.resolve({
405
- result: DyNTS_DAI_CompareResult_Type.equal,
406
- newChunk: mockNewChunk,
407
- oldChunk: mockOldChunk1,
408
- }));
409
- spyOn(service, 'deleteData').and.returnValue(Promise.resolve());
410
-
411
- const result = await service.processPage(mockPage);
412
-
413
- expect(service.deleteData).toHaveBeenCalledWith('chunk-2');
414
- expect(result.some(r => r.result === DyNTS_DAI_CompareResult_Type.deleted)).toBeTrue();
415
- });
416
- });
417
- });
418
-
1
+
2
+ import { DyNTS_LVS_DocChunkDataService } from './lvs-doc-chunk-data.service';
3
+ import { DyFM_OAI_Settings, DyFM_OAI_Model } from '@futdevpro/fsm-dynamo/ai/open-ai';
4
+ import { DyNTS_DAI_DocChunk, DyNTS_DAI_docChunk_dataParams } from '../../ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model';
5
+ import { DyNTS_DAI_DocPage } from '../../ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model';
6
+ import { DyNTS_DAI_DocChunkCompareResult } from '../../ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface';
7
+ import { DyNTS_DAI_CompareResult_Type } from '../../ai/_modules/document-ai/_enums/dai-compare-result-type.enum';
8
+ import { DyFM_Error, DyFM_EnvironmentFlag } from '@futdevpro/fsm-dynamo';
9
+ import { DyNTS_DAI_DocChunking_Util } from '../../ai/_modules/document-ai/_collections/dai-chunking.util';
10
+ import { DyNTS_DAI_Document_Util } from '../../ai/_modules/document-ai/_collections/dai-document.util';
11
+ import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
12
+ import { DyNTS_GlobalService } from '../../../_services/core/global.service';
13
+
14
+ describe('| DyNTS_LVS_DocChunkDataService', () => {
15
+ let service: DyNTS_LVS_DocChunkDataService;
16
+ let mockOpenAISettings: DyFM_OAI_Settings;
17
+ let mockDBService: jasmine.SpyObj<{
18
+ find: (filter: unknown) => Promise<unknown[]>;
19
+ findOne: (filter: unknown) => Promise<unknown>;
20
+ getDataById: (id: string) => Promise<unknown>;
21
+ getAll: () => Promise<unknown[]>;
22
+ createData: (data: unknown, issuer: string) => Promise<unknown>;
23
+ modifyData: (data: unknown, issuer: string, dontUpdateModified?: boolean) => Promise<unknown>;
24
+ markDeletedById: (id: string, issuer: string) => Promise<void>;
25
+ }>;
26
+
27
+ beforeEach(() => {
28
+ DyNTS_global_settings.env_settings = {
29
+ environment: DyFM_EnvironmentFlag.local,
30
+ mongoUri: 'mongodb://localhost:27017/test',
31
+ } as typeof DyNTS_global_settings.env_settings;
32
+
33
+ mockDBService = jasmine.createSpyObj('DyNTS_DBService', [
34
+ 'find',
35
+ 'findOne',
36
+ 'getDataById',
37
+ 'getAll',
38
+ 'getDataListByIds',
39
+ 'getDataByDependencyId',
40
+ 'getDataListByDependencyId',
41
+ 'getDataListByDependencyIds',
42
+ 'createData',
43
+ 'modifyData',
44
+ 'updateOne',
45
+ 'markDeletedById',
46
+ 'trueDeleteDataById',
47
+ 'trueDeleteAllData',
48
+ 'restoreDeletedById',
49
+ ]);
50
+ spyOn(DyNTS_GlobalService, 'getDBService').and.returnValue(mockDBService as never);
51
+ spyOn(DyNTS_GlobalService, 'getDBServiceByKey').and.returnValue(mockDBService as never);
52
+
53
+ mockOpenAISettings = {
54
+ config: {
55
+ apiKey: 'test-api-key',
56
+ organization: 'test-org',
57
+ },
58
+ defaultSettings: {
59
+ useModel: DyFM_OAI_Model.textEmbedding_3Small,
60
+ },
61
+ };
62
+
63
+ service = new DyNTS_LVS_DocChunkDataService(
64
+ 'test-issuer',
65
+ mockOpenAISettings
66
+ );
67
+ service.clickupWorkspaceId = 'workspace-123';
68
+ });
69
+
70
+ describe('| constructor', () => {
71
+ it('| should initialize with issuer and settings', () => {
72
+ expect((service as any).issuer).toBe('test-issuer');
73
+ expect((service as any).openAISettings).toEqual(mockOpenAISettings);
74
+ });
75
+ });
76
+
77
+ describe('| getDocumentDataService', () => {
78
+ it('| should return document data service', () => {
79
+ const result = service.getDocumentDataService();
80
+
81
+ expect(result).toBeDefined();
82
+ expect((result as any).issuer).toBe('test-issuer');
83
+ });
84
+ });
85
+
86
+ describe('| getDocPageDataService', () => {
87
+ it('| should return doc page data service', () => {
88
+ const result = service.getDocPageDataService();
89
+
90
+ expect(result).toBeDefined();
91
+ expect((result as any).issuer).toBe('test-issuer');
92
+ });
93
+ });
94
+
95
+ describe('| getPageLink', () => {
96
+ it('| should return page link', () => {
97
+ const mockPage = {
98
+ name: 'Test Page',
99
+ externalDocumentId: 'doc-123',
100
+ externalPageId: 'page-456',
101
+ } as any;
102
+
103
+ spyOn(DyNTS_DAI_Document_Util, 'getClickupPageLink').and.returnValue('[Test Page](link)');
104
+
105
+ const result = service.getPageLink(mockPage);
106
+
107
+ expect(result).toBe('[Test Page](link)');
108
+ expect(DyNTS_DAI_Document_Util.getClickupPageLink).toHaveBeenCalledWith(
109
+ 'Test Page',
110
+ 'workspace-123',
111
+ 'doc-123',
112
+ 'page-456'
113
+ );
114
+ });
115
+ });
116
+
117
+ describe('| chunkPage', () => {
118
+ it('| should chunk page content', async () => {
119
+ const mockPage: DyNTS_DAI_DocPage = {
120
+ _id: 'page-123',
121
+ name: 'Test Page',
122
+ content: '# Test\n\nContent here',
123
+ chunks: [],
124
+ externalDocumentId: 'doc-123',
125
+ externalPageId: 'page-456',
126
+ } as any;
127
+
128
+ spyOn(DyNTS_DAI_DocChunking_Util, 'chunkMdContent').and.returnValue(Promise.resolve([
129
+ {
130
+ _id: 'chunk-1',
131
+ chunkContent: '# Test\n\nContent here',
132
+ chunkIndex: 0,
133
+ } as any,
134
+ ]));
135
+
136
+ const result = await service.chunkPage(mockPage);
137
+
138
+ expect(result).toBeDefined();
139
+ expect(result.length).toBeGreaterThan(0);
140
+ expect(DyNTS_DAI_DocChunking_Util.chunkMdContent).toHaveBeenCalled();
141
+ });
142
+
143
+ it('| should handle chunking errors', async () => {
144
+ const mockPage: DyNTS_DAI_DocPage = {
145
+ _id: 'page-123',
146
+ name: 'Test Page',
147
+ content: '# Test\n\nContent here',
148
+ chunks: [],
149
+ } as any;
150
+
151
+ const error = new Error('Chunking failed');
152
+ spyOn(DyNTS_DAI_DocChunking_Util, 'chunkMdContent').and.returnValue(Promise.reject(error));
153
+
154
+ try {
155
+ await service.chunkPage(mockPage);
156
+ fail('Should have thrown an error');
157
+ } catch (err) {
158
+ expect(err).toBeInstanceOf(DyFM_Error);
159
+ expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-CP0');
160
+ }
161
+ });
162
+ });
163
+
164
+ describe('| compareChunk', () => {
165
+ it('| should return equal when chunks are identical', async () => {
166
+ const oldChunk: DyNTS_DAI_DocChunk = {
167
+ _id: 'chunk-1',
168
+ chunkContent: 'Test content',
169
+ path: 'test/path',
170
+ documentName: 'Test Doc',
171
+ pageName: 'Test Page',
172
+ pageLink: '[Test Page](link)',
173
+ allFlaggedParents: ['flag1', 'flag2'],
174
+ } as any;
175
+
176
+ const newChunk: DyNTS_DAI_DocChunk = {
177
+ _id: 'chunk-1',
178
+ chunkContent: 'Test content',
179
+ path: 'test/path',
180
+ documentName: 'Test Doc',
181
+ pageName: 'Test Page',
182
+ pageLink: '[Test Page](link)',
183
+ allFlaggedParents: ['flag1', 'flag2'],
184
+ } as any;
185
+
186
+ const result = await service.compareChunk(newChunk, oldChunk);
187
+
188
+ expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.equal);
189
+ expect(result.newChunk).toBe(newChunk);
190
+ expect(result.oldChunk).toBe(oldChunk);
191
+ });
192
+
193
+ it('| should return modified when chunks differ', async () => {
194
+ const oldChunk: DyNTS_DAI_DocChunk = {
195
+ _id: 'chunk-1',
196
+ chunkContent: 'Old content',
197
+ path: 'test/path',
198
+ documentName: 'Test Doc',
199
+ pageName: 'Test Page',
200
+ pageLink: '[Test Page](link)',
201
+ allFlaggedParents: ['flag1'],
202
+ } as any;
203
+
204
+ const newChunk: DyNTS_DAI_DocChunk = {
205
+ _id: 'chunk-1',
206
+ chunkContent: 'New content',
207
+ path: 'test/path',
208
+ documentName: 'Test Doc',
209
+ pageName: 'Test Page',
210
+ pageLink: '[Test Page](link)',
211
+ allFlaggedParents: ['flag1'],
212
+ } as any;
213
+
214
+ const result = await service.compareChunk(newChunk, oldChunk);
215
+
216
+ expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.modified);
217
+ expect(result.newChunk).toBe(newChunk);
218
+ expect(result.oldChunk).toBe(oldChunk);
219
+ });
220
+
221
+ it('| should throw error if oldChunk is missing', async () => {
222
+ const newChunk: DyNTS_DAI_DocChunk = {
223
+ _id: 'chunk-1',
224
+ chunkContent: 'New content',
225
+ } as any;
226
+
227
+ try {
228
+ await service.compareChunk(newChunk, null as any);
229
+ fail('Should have thrown an error');
230
+ } catch (err) {
231
+ expect(err).toBeInstanceOf(DyFM_Error);
232
+ expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-CC1');
233
+ }
234
+ });
235
+
236
+ it('| should detect changes in allFlaggedParents', async () => {
237
+ const oldChunk: DyNTS_DAI_DocChunk = {
238
+ _id: 'chunk-1',
239
+ chunkContent: 'Test content',
240
+ path: 'test/path',
241
+ documentName: 'Test Doc',
242
+ pageName: 'Test Page',
243
+ pageLink: '[Test Page](link)',
244
+ allFlaggedParents: ['flag1'],
245
+ } as any;
246
+
247
+ const newChunk: DyNTS_DAI_DocChunk = {
248
+ _id: 'chunk-1',
249
+ chunkContent: 'Test content',
250
+ path: 'test/path',
251
+ documentName: 'Test Doc',
252
+ pageName: 'Test Page',
253
+ pageLink: '[Test Page](link)',
254
+ allFlaggedParents: ['flag1', 'flag2'],
255
+ } as any;
256
+
257
+ const result = await service.compareChunk(newChunk, oldChunk);
258
+
259
+ expect(result.result).toBe(DyNTS_DAI_CompareResult_Type.modified);
260
+ });
261
+ });
262
+
263
+ describe('| processNewPage', () => {
264
+ it('| should process new page and return compare results', async () => {
265
+ const mockPage: DyNTS_DAI_DocPage = {
266
+ _id: 'page-123',
267
+ name: 'Test Page',
268
+ content: '# Test\n\nContent here',
269
+ chunks: [],
270
+ documentId: 'doc-123',
271
+ externalDocumentId: 'ext-doc-123',
272
+ externalPageId: 'ext-page-123',
273
+ } as any;
274
+
275
+ const mockChunk: DyNTS_DAI_DocChunk = {
276
+ _id: 'chunk-1',
277
+ chunkContent: 'Test content',
278
+ chunkIndex: 0,
279
+ } as any;
280
+
281
+ spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockChunk]));
282
+ spyOn(service, 'saveData').and.returnValue(Promise.resolve(mockChunk));
283
+
284
+ const result = await service.processNewPage(mockPage);
285
+
286
+ expect(result).toBeDefined();
287
+ expect(result.length).toBe(1);
288
+ expect(result[0].result).toBe(DyNTS_DAI_CompareResult_Type.new);
289
+ expect(result[0].newChunk).toBe(mockChunk);
290
+ expect(result[0].oldChunk).toBeNull();
291
+ });
292
+
293
+ it('| should handle processing errors', async () => {
294
+ const mockPage: DyNTS_DAI_DocPage = {
295
+ _id: 'page-123',
296
+ name: 'Test Page',
297
+ content: '# Test\n\nContent here',
298
+ chunks: [],
299
+ } as any;
300
+
301
+ const error = new Error('Processing failed');
302
+ spyOn(service, 'chunkPage').and.returnValue(Promise.reject(error));
303
+
304
+ try {
305
+ await service.processNewPage(mockPage);
306
+ fail('Should have thrown an error');
307
+ } catch (err) {
308
+ expect(err).toBeInstanceOf(DyFM_Error);
309
+ expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-PNP0');
310
+ }
311
+ });
312
+ });
313
+
314
+ describe('| processPage', () => {
315
+ it('| should process page and return compare results', async () => {
316
+ const mockPage: DyNTS_DAI_DocPage = {
317
+ _id: 'page-123',
318
+ name: 'Test Page',
319
+ content: '# Test\n\nContent here',
320
+ chunks: [],
321
+ documentId: 'doc-123',
322
+ externalDocumentId: 'ext-doc-123',
323
+ externalPageId: 'ext-page-123',
324
+ } as any;
325
+
326
+ const mockNewChunk: DyNTS_DAI_DocChunk = {
327
+ _id: 'chunk-1',
328
+ chunkContent: 'New content',
329
+ chunkIndex: 0,
330
+ } as any;
331
+
332
+ const mockOldChunk: DyNTS_DAI_DocChunk = {
333
+ _id: 'chunk-1',
334
+ chunkContent: 'Old content',
335
+ chunkIndex: 0,
336
+ } as any;
337
+
338
+ spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockNewChunk]));
339
+ spyOn(service, 'findDataList').and.returnValue(Promise.resolve([mockOldChunk]));
340
+ spyOn(service, 'compareChunk').and.returnValue(Promise.resolve({
341
+ result: DyNTS_DAI_CompareResult_Type.modified,
342
+ newChunk: mockNewChunk,
343
+ oldChunk: mockOldChunk,
344
+ }));
345
+ spyOn(service, 'saveData').and.returnValue(Promise.resolve(mockNewChunk));
346
+
347
+ const result = await service.processPage(mockPage);
348
+
349
+ expect(result).toBeDefined();
350
+ expect(result.length).toBeGreaterThan(0);
351
+ });
352
+
353
+ it('| should handle processing errors', async () => {
354
+ const mockPage: DyNTS_DAI_DocPage = {
355
+ _id: 'page-123',
356
+ name: 'Test Page',
357
+ content: '# Test\n\nContent here',
358
+ chunks: [],
359
+ } as any;
360
+
361
+ const error = new Error('Processing failed');
362
+ spyOn(service, 'chunkPage').and.returnValue(Promise.reject(error));
363
+
364
+ try {
365
+ await service.processPage(mockPage);
366
+ fail('Should have thrown an error');
367
+ } catch (err) {
368
+ expect(err).toBeInstanceOf(DyFM_Error);
369
+ expect((err as DyFM_Error)._errorCode).toContain('DCH-CSB-PP0');
370
+ }
371
+ });
372
+
373
+ it('| should delete old chunks when new page has fewer chunks', async () => {
374
+ const mockPage: DyNTS_DAI_DocPage = {
375
+ _id: 'page-123',
376
+ name: 'Test Page',
377
+ content: '# Test\n\nContent here',
378
+ chunks: [],
379
+ documentId: 'doc-123',
380
+ externalDocumentId: 'ext-doc-123',
381
+ externalPageId: 'ext-page-123',
382
+ } as any;
383
+
384
+ const mockNewChunk: DyNTS_DAI_DocChunk = {
385
+ _id: 'chunk-1',
386
+ chunkContent: 'New content',
387
+ chunkIndex: 0,
388
+ } as any;
389
+
390
+ const mockOldChunk1: DyNTS_DAI_DocChunk = {
391
+ _id: 'chunk-1',
392
+ chunkContent: 'Old content',
393
+ chunkIndex: 0,
394
+ } as any;
395
+
396
+ const mockOldChunk2: DyNTS_DAI_DocChunk = {
397
+ _id: 'chunk-2',
398
+ chunkContent: 'Old content 2',
399
+ chunkIndex: 1,
400
+ } as any;
401
+
402
+ spyOn(service, 'chunkPage').and.returnValue(Promise.resolve([mockNewChunk]));
403
+ spyOn(service, 'findDataList').and.returnValue(Promise.resolve([mockOldChunk1, mockOldChunk2]));
404
+ spyOn(service, 'compareChunk').and.returnValue(Promise.resolve({
405
+ result: DyNTS_DAI_CompareResult_Type.equal,
406
+ newChunk: mockNewChunk,
407
+ oldChunk: mockOldChunk1,
408
+ }));
409
+ spyOn(service, 'deleteData').and.returnValue(Promise.resolve());
410
+
411
+ const result = await service.processPage(mockPage);
412
+
413
+ expect(service.deleteData).toHaveBeenCalledWith('chunk-2');
414
+ expect(result.some(r => r.result === DyNTS_DAI_CompareResult_Type.deleted)).toBeTrue();
415
+ });
416
+ });
417
+ });
418
+