@futdevpro/fsm-dynamo 1.16.7 → 1.16.9

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 (532) hide show
  1. package/.cursor/rules/__assistant_guide.mdc +30 -30
  2. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  3. package/.cursor/rules/_ag_backend.mdc +16 -16
  4. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  5. package/.cursor/rules/_ag_frontend.mdc +39 -39
  6. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  7. package/.cursor/rules/_ag_naming.mdc +115 -115
  8. package/.cursor/rules/_ag_should-be.mdc +6 -6
  9. package/.cursor/rules/ai_development_guide.md +60 -60
  10. package/.cursor/rules/cursor-rules.md +160 -160
  11. package/.cursor/rules/default-command.mdc +464 -464
  12. package/.cursor/rules/error_code_pattern.md +39 -39
  13. package/.cursor/rules/saved rule mcp server use.md +15 -15
  14. package/.vscode/settings.json +11 -11
  15. package/LICENSE +21 -21
  16. package/__documentations/2026-06-22-dyfm-error-extends-error.md +109 -0
  17. package/build/_collections/utils/log.util.d.ts +8 -8
  18. package/build/_collections/utils/log.util.d.ts.map +1 -1
  19. package/build/_collections/utils/log.util.js +18 -10
  20. package/build/_collections/utils/log.util.js.map +1 -1
  21. package/build/_models/control-models/error.control-model.d.ts +11 -2
  22. package/build/_models/control-models/error.control-model.d.ts.map +1 -1
  23. package/build/_models/control-models/error.control-model.js +56 -3
  24. package/build/_models/control-models/error.control-model.js.map +1 -1
  25. package/build/_models/data-models/metadata.data-model.d.ts +16 -0
  26. package/build/_models/data-models/metadata.data-model.d.ts.map +1 -1
  27. package/build/_models/data-models/metadata.data-model.js +37 -20
  28. package/build/_models/data-models/metadata.data-model.js.map +1 -1
  29. package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
  30. package/eslint.config.js +4 -4
  31. package/nodemon.json +22 -22
  32. package/package.json +1 -1
  33. package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
  34. package/scripts/crypto/README.md +113 -113
  35. package/scripts/crypto/demo-crypto-stability.js +120 -120
  36. package/scripts/crypto/stress-test-crypto.js +379 -379
  37. package/scripts/run-coverage-tests.js +24 -24
  38. package/spec/support/helpers/ts-node-helper.js +9 -9
  39. package/spec/support/jasmine.coverage.json +23 -23
  40. package/spec/support/jasmine.json +24 -24
  41. package/src/_collections/constants/data-sizes.const.ts +40 -40
  42. package/src/_collections/constants/error-defaults.const.ts +20 -20
  43. package/src/_collections/constants/global-settings.const.ts +24 -24
  44. package/src/_collections/constants/numbers.const.ts +40 -40
  45. package/src/_collections/constants/times.const.ts +45 -45
  46. package/src/_collections/utils/array.util.spec.ts +306 -306
  47. package/src/_collections/utils/array.util.ts +813 -813
  48. package/src/_collections/utils/async.util.spec.ts +354 -354
  49. package/src/_collections/utils/async.util.ts +197 -197
  50. package/src/_collections/utils/data.util.spec.ts +345 -345
  51. package/src/_collections/utils/data.util.ts +226 -226
  52. package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
  53. package/src/_collections/utils/json-error-helper.util.ts +301 -301
  54. package/src/_collections/utils/log.util.spec.ts +975 -975
  55. package/src/_collections/utils/log.util.ts +665 -667
  56. package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
  57. package/src/_collections/utils/math/box-bounds.util.ts +183 -183
  58. package/src/_collections/utils/math/math.util.spec.ts +94 -94
  59. package/src/_collections/utils/math/math.util.ts +141 -141
  60. package/src/_collections/utils/math/random.util.spec.ts +82 -82
  61. package/src/_collections/utils/math/random.util.ts +139 -139
  62. package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
  63. package/src/_collections/utils/math/trigonometry.util.ts +102 -102
  64. package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
  65. package/src/_collections/utils/math/vector2.util.ts +653 -653
  66. package/src/_collections/utils/object.util.spec.ts +646 -646
  67. package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
  68. package/src/_collections/utils/regex/password-regex.util.ts +65 -65
  69. package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
  70. package/src/_collections/utils/regex/regex.util.ts +6 -6
  71. package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
  72. package/src/_collections/utils/regex/username-regex.util.ts +35 -35
  73. package/src/_collections/utils/round-list.util.spec.ts +79 -79
  74. package/src/_collections/utils/round-list.util.ts +162 -162
  75. package/src/_collections/utils/stack.util.spec.ts +372 -372
  76. package/src/_collections/utils/stack.util.ts +164 -164
  77. package/src/_collections/utils/string-case.util.spec.ts +441 -441
  78. package/src/_collections/utils/string-case.util.ts +362 -362
  79. package/src/_collections/utils/string.util.spec.ts +975 -975
  80. package/src/_collections/utils/string.util.ts +449 -449
  81. package/src/_collections/utils/time.util.spec.ts +50 -50
  82. package/src/_collections/utils/time.util.ts +481 -481
  83. package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
  84. package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
  85. package/src/_collections/utils/utilities.util.spec.ts +201 -201
  86. package/src/_collections/utils/utilities.util.ts +68 -68
  87. package/src/_collections/utils/uuid.util.spec.ts +30 -30
  88. package/src/_collections/utils/uuid.util.ts +50 -50
  89. package/src/_enums/basic-property-type.enum.ts +20 -20
  90. package/src/_enums/data-model-type.enum.ts +29 -29
  91. package/src/_enums/environment-flag.enum.ts +28 -28
  92. package/src/_enums/error-level.enum.ts +43 -43
  93. package/src/_enums/http/http-call-type.enum.ts +43 -43
  94. package/src/_enums/http/http-event-type.enum.ts +40 -40
  95. package/src/_enums/http/http-response-type.enum.ts +18 -18
  96. package/src/_enums/log-style.enum.ts +44 -44
  97. package/src/_enums/server-connection-status.enum.ts +6 -6
  98. package/src/_enums/time/day-of-week.enum.ts +55 -55
  99. package/src/_enums/time/month.enum.ts +25 -25
  100. package/src/_enums/time/relative-date.enum.ts +24 -24
  101. package/src/_models/control-models/data-model-params.control-model.spec.ts +85 -85
  102. package/src/_models/control-models/data-model-params.control-model.ts +300 -300
  103. package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
  104. package/src/_models/control-models/data-property-params.control-model.ts +201 -201
  105. package/src/_models/control-models/error.control-model.spec.ts +912 -912
  106. package/src/_models/control-models/error.control-model.ts +1274 -1215
  107. package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
  108. package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
  109. package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
  110. package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
  111. package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
  112. package/src/_models/control-models/http/http-response.model-base.ts +57 -57
  113. package/src/_models/control-models/poll.control-model.spec.ts +63 -63
  114. package/src/_models/control-models/poll.control-model.ts +151 -151
  115. package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
  116. package/src/_models/control-models/range-value.control-model.ts +289 -289
  117. package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
  118. package/src/_models/control-models/server-status.control-model.ts +85 -85
  119. package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
  120. package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
  121. package/src/_models/data-models/errors.data-model.spec.ts +71 -71
  122. package/src/_models/data-models/errors.data-model.ts +175 -175
  123. package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
  124. package/src/_models/data-models/metadata.data-model.ts +153 -128
  125. package/src/_models/interfaces/box-bounds.interface.ts +7 -7
  126. package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
  127. package/src/_models/interfaces/environment/global-settings.interface.ts +47 -47
  128. package/src/_models/interfaces/error-defaults.interface.ts +11 -11
  129. package/src/_models/interfaces/paged.interface.ts +12 -12
  130. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  131. package/src/_models/interfaces/route-settings.interface.ts +15 -15
  132. package/src/_models/interfaces/search-query.interface.ts +23 -23
  133. package/src/_models/interfaces/search-result.interface.ts +5 -5
  134. package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
  135. package/src/_models/interfaces/vector2.interface.ts +20 -20
  136. package/src/_models/types/db-filter.type.ts +110 -110
  137. package/src/_models/types/db-sort.type.ts +4 -4
  138. package/src/_models/types/ds-filter.type.ts +68 -68
  139. package/src/_models/types/ds-sort.type.ts +21 -21
  140. package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
  141. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
  142. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
  143. package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
  144. package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
  145. package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
  146. package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
  147. package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
  148. package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
  149. package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
  150. package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
  151. package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
  152. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
  153. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
  154. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
  155. package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
  156. package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
  157. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
  158. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
  159. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
  160. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
  161. package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
  162. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +81 -81
  163. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
  164. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
  165. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
  166. package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
  167. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
  168. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
  169. package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
  170. package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
  171. package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
  172. package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
  173. package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
  174. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +34 -34
  175. package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
  176. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
  177. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
  178. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
  179. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
  180. package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
  181. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +99 -99
  182. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
  183. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
  184. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
  185. package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
  186. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
  187. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
  188. package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
  189. package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
  190. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +53 -53
  191. package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
  192. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
  193. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
  194. package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
  195. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
  196. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
  197. package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
  198. package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
  199. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +252 -252
  200. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
  201. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
  202. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
  203. package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
  204. package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
  205. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
  206. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
  207. package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
  208. package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
  209. package/src/_modules/ai/index.ts +27 -27
  210. package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
  211. package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
  212. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
  213. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
  214. package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
  215. package/src/_modules/ci-tools/index.ts +8 -8
  216. package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
  217. package/src/_modules/crypto/index.ts +13 -13
  218. package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
  219. package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
  220. package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
  221. package/src/_modules/custom-data/index.ts +10 -10
  222. package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
  223. package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
  224. package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +445 -445
  225. package/src/_modules/data-handler/_models/data-handler.control-model.ts +459 -459
  226. package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
  227. package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
  228. package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
  229. package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
  230. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
  231. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
  232. package/src/_modules/data-handler/index.ts +6 -6
  233. package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
  234. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
  235. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
  236. package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
  237. package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
  238. package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
  239. package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
  240. package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
  241. package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
  242. package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
  243. package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
  244. package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
  245. package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
  246. package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
  247. package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
  248. package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
  249. package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
  250. package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
  251. package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
  252. package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
  253. package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
  254. package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
  255. package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
  256. package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
  257. package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
  258. package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
  259. package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
  260. package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
  261. package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
  262. package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
  263. package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
  264. package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
  265. package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
  266. package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
  267. package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
  268. package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
  269. package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
  270. package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
  271. package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
  272. package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
  273. package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
  274. package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
  275. package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
  276. package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
  277. package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
  278. package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
  279. package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
  280. package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
  281. package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
  282. package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
  283. package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
  284. package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
  285. package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
  286. package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
  287. package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
  288. package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
  289. package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
  290. package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
  291. package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
  292. package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
  293. package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
  294. package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
  295. package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
  296. package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
  297. package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
  298. package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
  299. package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
  300. package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
  301. package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
  302. package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
  303. package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
  304. package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
  305. package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
  306. package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
  307. package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
  308. package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
  309. package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
  310. package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
  311. package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
  312. package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
  313. package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
  314. package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
  315. package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
  316. package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
  317. package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
  318. package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
  319. package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
  320. package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
  321. package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
  322. package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
  323. package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
  324. package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
  325. package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
  326. package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
  327. package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
  328. package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
  329. package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
  330. package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
  331. package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
  332. package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
  333. package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
  334. package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
  335. package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
  336. package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
  337. package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
  338. package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
  339. package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
  340. package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
  341. package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
  342. package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
  343. package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
  344. package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
  345. package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
  346. package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
  347. package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
  348. package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
  349. package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
  350. package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
  351. package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
  352. package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
  353. package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
  354. package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
  355. package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
  356. package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
  357. package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
  358. package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
  359. package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
  360. package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
  361. package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
  362. package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
  363. package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
  364. package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
  365. package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
  366. package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
  367. package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
  368. package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
  369. package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
  370. package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
  371. package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
  372. package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
  373. package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
  374. package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
  375. package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
  376. package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
  377. package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
  378. package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
  379. package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
  380. package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
  381. package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
  382. package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
  383. package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
  384. package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
  385. package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
  386. package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
  387. package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
  388. package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
  389. package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
  390. package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
  391. package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
  392. package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
  393. package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
  394. package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
  395. package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
  396. package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
  397. package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
  398. package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
  399. package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
  400. package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
  401. package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
  402. package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
  403. package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
  404. package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
  405. package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
  406. package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
  407. package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
  408. package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
  409. package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
  410. package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
  411. package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
  412. package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
  413. package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
  414. package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
  415. package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
  416. package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
  417. package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
  418. package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
  419. package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
  420. package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
  421. package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
  422. package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
  423. package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
  424. package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
  425. package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
  426. package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
  427. package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
  428. package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
  429. package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
  430. package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
  431. package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
  432. package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
  433. package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
  434. package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
  435. package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
  436. package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
  437. package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
  438. package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
  439. package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
  440. package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
  441. package/src/_modules/location/_collections/loc.util.ts +74 -74
  442. package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
  443. package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
  444. package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
  445. package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
  446. package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
  447. package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
  448. package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
  449. package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
  450. package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
  451. package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
  452. package/src/_modules/location/index.ts +22 -22
  453. package/src/_modules/messaging/README.md +279 -279
  454. package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
  455. package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
  456. package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
  457. package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
  458. package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
  459. package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
  460. package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
  461. package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
  462. package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
  463. package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
  464. package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
  465. package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
  466. package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
  467. package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
  468. package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
  469. package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
  470. package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
  471. package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
  472. package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
  473. package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
  474. package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
  475. package/src/_modules/messaging/_modules/agent/index.ts +8 -8
  476. package/src/_modules/messaging/index.ts +28 -28
  477. package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
  478. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
  479. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
  480. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
  481. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
  482. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
  483. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
  484. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
  485. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
  486. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
  487. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
  488. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
  489. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
  490. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
  491. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
  492. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
  493. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
  494. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
  495. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
  496. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
  497. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
  498. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
  499. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
  500. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
  501. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
  502. package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
  503. package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
  504. package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
  505. package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
  506. package/src/_modules/pipe/index.ts +30 -30
  507. package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
  508. package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
  509. package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
  510. package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +66 -66
  511. package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -172
  512. package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
  513. package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
  514. package/src/_modules/socket/index.ts +14 -14
  515. package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
  516. package/src/_modules/test/index.ts +5 -5
  517. package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
  518. package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
  519. package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
  520. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
  521. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
  522. package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
  523. package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
  524. package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
  525. package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
  526. package/src/_modules/usage/index.ts +11 -11
  527. package/src/index.ts +104 -104
  528. package/tsconfig.app.json +12 -12
  529. package/tsconfig.json +31 -31
  530. package/tsconfig.test.json +16 -16
  531. package/tslint.json +153 -153
  532. package/pnpm-workspace.yaml +0 -2
@@ -1,374 +1,374 @@
1
- import { DyFM_ListCollectorDataHandler } from './list-collector-data-handler.control-model';
2
- import { DyFM_Metadata } from '../../../_models/data-models/metadata.data-model';
3
- import { DyFM_ListCollectorDataHandler_Settings } from './data-handler-settings.control-model';
4
- import { DyFM_Error } from '../../../_models/control-models/error.control-model';
5
-
6
- class TestCollector extends DyFM_Metadata {
7
- items?: TestItem[];
8
- }
9
-
10
- class TestItem extends DyFM_Metadata {
11
- name?: string;
12
- }
13
-
14
- describe('| DyFM_ListCollectorDataHandler', (): void => {
15
- let handler: DyFM_ListCollectorDataHandler<TestCollector, TestItem>;
16
- let settings: DyFM_ListCollectorDataHandler_Settings<TestCollector, TestItem>;
17
-
18
- beforeEach(() => {
19
- settings = {
20
- name: 'TestCollectorHandler',
21
- listKey: 'items',
22
- get: async (loadBy?: string): Promise<TestCollector> => {
23
- return {
24
- _id: loadBy || 'default',
25
- items: [
26
- { _id: '1', name: 'item1' } as TestItem,
27
- { _id: '2', name: 'item2' } as TestItem,
28
- ],
29
- } as TestCollector;
30
- },
31
- setItem: async (item: TestItem, collectorId?: string): Promise<TestItem> => item,
32
- deleteItem: async (id: string, collectorId?: string): Promise<void> => {},
33
- defaultValue: { _id: 'default', items: [] } as TestCollector,
34
- };
35
-
36
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
37
- });
38
-
39
- it('| should create an instance with settings', (): void => {
40
- expect(handler).toBeTruthy();
41
- expect(handler.name).toBe('TestCollectorHandler');
42
- });
43
-
44
- it('| should have dataList$ observable', (): void => {
45
- expect(handler.dataList$).toBeTruthy();
46
- });
47
-
48
- it('| should have activeItem$ observable', (): void => {
49
- expect(handler.activeItem$).toBeTruthy();
50
- });
51
-
52
- it('| should get empty dataList initially', (): void => {
53
- expect(handler.dataList).toEqual([]);
54
- });
55
-
56
- it('| should set active item', (): void => {
57
- const item = { _id: '1', name: 'item1' } as TestItem;
58
- handler.setActiveItem(item);
59
-
60
- handler.activeItem$.subscribe(activeItem => {
61
- expect(activeItem).toEqual(item);
62
- });
63
- });
64
-
65
- it('| should clear data and active item', (): void => {
66
- handler.clear();
67
-
68
- expect(handler.dataList).toEqual([]);
69
- handler.activeItem$.subscribe(activeItem => {
70
- expect(activeItem).toBeNull();
71
- });
72
- });
73
-
74
- it('| should throw error when adding item without data', async (): Promise<void> => {
75
- handler.clear();
76
- const newItem = { _id: '3', name: 'item3' } as TestItem;
77
-
78
- await expectAsync(handler.addItem(newItem)).toBeRejectedWith(jasmine.any(DyFM_Error));
79
- });
80
-
81
- it('| should throw error when removing item without data', async (): Promise<void> => {
82
- // Test case for lines 204-212: removeItem throws error when list not found
83
- handler.clear();
84
-
85
- await expectAsync(handler.removeItem('1')).toBeRejectedWith(jasmine.any(DyFM_Error));
86
- });
87
-
88
- it('| should remove item with deleteItem', async (): Promise<void> => {
89
- // Test case for lines 213-226: removeItem with deleteItem
90
- // Use updateData to bypass the problematic post-process that expects an array
91
- await handler.updateData({
92
- _id: 'test',
93
- items: [
94
- { _id: '1', name: 'item1' } as TestItem,
95
- { _id: '2', name: 'item2' } as TestItem,
96
- ],
97
- } as TestCollector);
98
- const deleteItemSpy = spyOn(handler as any, 'deleteItem').and.returnValue(Promise.resolve());
99
-
100
- await handler.removeItem('1');
101
-
102
- expect(deleteItemSpy).toHaveBeenCalledWith('1', undefined);
103
- expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
104
- });
105
-
106
- it('| should remove item without deleteItem', async (): Promise<void> => {
107
- // Test case for lines 213-226: removeItem without deleteItem
108
- settings.deleteItem = undefined;
109
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
110
- // Use updateData to bypass the problematic post-process that expects an array
111
- await handler.updateData({
112
- _id: 'test',
113
- items: [
114
- { _id: '1', name: 'item1' } as TestItem,
115
- { _id: '2', name: 'item2' } as TestItem,
116
- ],
117
- } as TestCollector);
118
-
119
- await handler.removeItem('1');
120
-
121
- expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
122
- });
123
-
124
- it('| should clear active item when removing active item', async (): Promise<void> => {
125
- // Test case for lines 223-225: clear active item when removing
126
- // Use updateData to bypass the problematic post-process that expects an array
127
- await handler.updateData({
128
- _id: 'test',
129
- items: [
130
- { _id: '1', name: 'item1' } as TestItem,
131
- { _id: '2', name: 'item2' } as TestItem,
132
- ],
133
- } as TestCollector);
134
- handler.setActiveItem(handler.dataList[0]);
135
-
136
- await handler.removeItem(handler.dataList[0]._id);
137
-
138
- handler.activeItem$.subscribe(activeItem => {
139
- expect(activeItem).toBeNull();
140
- });
141
- });
142
-
143
- it('| should throw error when updating item without data', async (): Promise<void> => {
144
- // Test case for lines 238-246: updateItem throws error when list not found
145
- handler.clear();
146
- const item = { _id: '1', name: 'item1' } as TestItem;
147
-
148
- await expectAsync(handler.updateItem(item)).toBeRejectedWith(jasmine.any(DyFM_Error));
149
- });
150
-
151
- it('| should update item with setItem', async (): Promise<void> => {
152
- // Test case for lines 247-269: updateItem with setItem
153
- // Use updateData to bypass the problematic post-process that expects an array
154
- await handler.updateData({
155
- _id: 'test',
156
- items: [
157
- { _id: '1', name: 'item1' } as TestItem,
158
- { _id: '2', name: 'item2' } as TestItem,
159
- ],
160
- } as TestCollector);
161
- const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve(handler.dataList[0]));
162
-
163
- const updatedItem = { _id: '1', name: 'updated' } as TestItem;
164
- await handler.updateItem(updatedItem);
165
-
166
- expect(setItemSpy).toHaveBeenCalledWith(updatedItem, undefined);
167
- expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
168
- });
169
-
170
- it('| should update item without setItem', async (): Promise<void> => {
171
- // Test case for lines 247-269: updateItem without setItem
172
- settings.setItem = undefined;
173
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
174
- // Use updateData to bypass the problematic post-process that expects an array
175
- await handler.updateData({
176
- _id: 'test',
177
- items: [
178
- { _id: '1', name: 'item1' } as TestItem,
179
- { _id: '2', name: 'item2' } as TestItem,
180
- ],
181
- } as TestCollector);
182
-
183
- const updatedItem = { _id: '1', name: 'updated' } as TestItem;
184
- await handler.updateItem(updatedItem);
185
-
186
- expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
187
- });
188
-
189
- it('| should throw error when updating non-existent item', async (): Promise<void> => {
190
- // Test case for lines 260-268: updateItem throws error when item not found
191
- // Use updateData to bypass the problematic post-process that expects an array
192
- await handler.updateData({
193
- _id: 'test',
194
- items: [
195
- { _id: '1', name: 'item1' } as TestItem,
196
- { _id: '2', name: 'item2' } as TestItem,
197
- ],
198
- } as TestCollector);
199
- const nonExistentItem = { _id: '999', name: 'not found' } as TestItem;
200
-
201
- await expectAsync(handler.updateItem(nonExistentItem)).toBeRejected();
202
- });
203
-
204
- it('| should addItem with setItem and dontSendUpdate false', async (): Promise<void> => {
205
- // Test case for lines 173-193: addItem with setItem
206
- await handler.updateData({
207
- _id: 'test',
208
- items: [],
209
- } as TestCollector);
210
- const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
211
-
212
- const newItem = { _id: '3', name: 'item3' } as TestItem;
213
- await handler.addItem(newItem, undefined, false);
214
-
215
- expect(setItemSpy).toHaveBeenCalled();
216
- expect(handler.activeItem_BS.value).toEqual(newItem);
217
- });
218
-
219
- it('| should addItem with setItem and dontSendUpdate true', async (): Promise<void> => {
220
- // Test case for lines 173-193: addItem with dontSendUpdate
221
- // When dontSendUpdate is true, setItem should NOT be called (line 185: if (this.setItem && !dontSendUpdate))
222
- await handler.updateData({
223
- _id: 'test',
224
- items: [],
225
- } as TestCollector);
226
- const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
227
-
228
- const newItem = { _id: '3', name: 'item3' } as TestItem;
229
- await handler.addItem(newItem, undefined, true);
230
-
231
- expect(setItemSpy).not.toHaveBeenCalled();
232
- expect(handler.activeItem_BS.value).toEqual(newItem);
233
- });
234
-
235
- it('| should addItem without setItem', async (): Promise<void> => {
236
- // Test case for lines 173-193: addItem without setItem
237
- settings.setItem = undefined;
238
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
239
- await handler.updateData({
240
- _id: 'test',
241
- items: [],
242
- } as TestCollector);
243
-
244
- const newItem = { _id: '3', name: 'item3' } as TestItem;
245
- await handler.addItem(newItem);
246
-
247
- expect(handler.dataList.find(i => i._id === '3')).toBeDefined();
248
- });
249
-
250
- it('| should addItem with collectorId', async (): Promise<void> => {
251
- // Test case for lines 173-193: addItem with collectorId
252
- await handler.updateData({
253
- _id: 'test',
254
- items: [],
255
- } as TestCollector);
256
- const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
257
-
258
- const newItem = { _id: '3', name: 'item3' } as TestItem;
259
- await handler.addItem(newItem, 'collectorId');
260
-
261
- expect(setItemSpy).toHaveBeenCalledWith(newItem, 'collectorId');
262
- });
263
-
264
- it('| should addItem when listKey does not exist', async (): Promise<void> => {
265
- // Test case for line 183: addItem when listKey does not exist
266
- await handler.updateData({
267
- _id: 'test',
268
- } as TestCollector);
269
-
270
- const newItem = { _id: '3', name: 'item3' } as TestItem;
271
- await handler.addItem(newItem);
272
-
273
- expect(handler.dataList.find(i => i._id === '3')).toBeDefined();
274
- });
275
-
276
- it('| should removeItem when item not found', async (): Promise<void> => {
277
- // Test case for lines 203-226: removeItem when index === -1
278
- await handler.updateData({
279
- _id: 'test',
280
- items: [
281
- { _id: '1', name: 'item1' } as TestItem,
282
- { _id: '2', name: 'item2' } as TestItem,
283
- ],
284
- } as TestCollector);
285
-
286
- await handler.removeItem('999');
287
-
288
- // Should not throw, just do nothing
289
- expect(handler.dataList.length).toBe(2);
290
- });
291
-
292
- it('| should removeItem with collectorId parameter', async (): Promise<void> => {
293
- // Test case for lines 203-226: removeItem with collectorId
294
- await handler.updateData({
295
- _id: 'test',
296
- items: [
297
- { _id: '1', name: 'item1' } as TestItem,
298
- { _id: '2', name: 'item2' } as TestItem,
299
- ],
300
- } as TestCollector);
301
- const deleteItemSpy = spyOn(handler as any, 'deleteItem').and.returnValue(Promise.resolve());
302
-
303
- await handler.removeItem('1', 'collectorId');
304
-
305
- expect(deleteItemSpy).toHaveBeenCalledWith('1', 'collectorId');
306
- });
307
-
308
- it('| should removeItem with dontSendUpdate', async (): Promise<void> => {
309
- // Test case for lines 203-226: removeItem with dontSendUpdate
310
- await handler.updateData({
311
- _id: 'test',
312
- items: [
313
- { _id: '1', name: 'item1' } as TestItem,
314
- { _id: '2', name: 'item2' } as TestItem,
315
- ],
316
- } as TestCollector);
317
- settings.deleteItem = undefined;
318
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
319
- await handler.updateData({
320
- _id: 'test',
321
- items: [
322
- { _id: '1', name: 'item1' } as TestItem,
323
- { _id: '2', name: 'item2' } as TestItem,
324
- ],
325
- } as TestCollector);
326
-
327
- await handler.removeItem('1', undefined, true);
328
-
329
- expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
330
- });
331
-
332
- it('| should updateItem with collectorId parameter', async (): Promise<void> => {
333
- // Test case for lines 237-269: updateItem with collectorId
334
- await handler.updateData({
335
- _id: 'test',
336
- items: [
337
- { _id: '1', name: 'item1' } as TestItem,
338
- { _id: '2', name: 'item2' } as TestItem,
339
- ],
340
- } as TestCollector);
341
- const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve(handler.dataList[0]));
342
-
343
- const updatedItem = { _id: '1', name: 'updated' } as TestItem;
344
- await handler.updateItem(updatedItem, 'collectorId');
345
-
346
- expect(setItemSpy).toHaveBeenCalledWith(updatedItem, 'collectorId');
347
- });
348
-
349
- it('| should updateItem with dontSendUpdate', async (): Promise<void> => {
350
- // Test case for lines 237-269: updateItem with dontSendUpdate
351
- await handler.updateData({
352
- _id: 'test',
353
- items: [
354
- { _id: '1', name: 'item1' } as TestItem,
355
- { _id: '2', name: 'item2' } as TestItem,
356
- ],
357
- } as TestCollector);
358
- settings.setItem = undefined;
359
- handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
360
- await handler.updateData({
361
- _id: 'test',
362
- items: [
363
- { _id: '1', name: 'item1' } as TestItem,
364
- { _id: '2', name: 'item2' } as TestItem,
365
- ],
366
- } as TestCollector);
367
-
368
- const updatedItem = { _id: '1', name: 'updated' } as TestItem;
369
- await handler.updateItem(updatedItem, undefined, true);
370
-
371
- expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
372
- });
373
- });
374
-
1
+ import { DyFM_ListCollectorDataHandler } from './list-collector-data-handler.control-model';
2
+ import { DyFM_Metadata } from '../../../_models/data-models/metadata.data-model';
3
+ import { DyFM_ListCollectorDataHandler_Settings } from './data-handler-settings.control-model';
4
+ import { DyFM_Error } from '../../../_models/control-models/error.control-model';
5
+
6
+ class TestCollector extends DyFM_Metadata {
7
+ items?: TestItem[];
8
+ }
9
+
10
+ class TestItem extends DyFM_Metadata {
11
+ name?: string;
12
+ }
13
+
14
+ describe('| DyFM_ListCollectorDataHandler', (): void => {
15
+ let handler: DyFM_ListCollectorDataHandler<TestCollector, TestItem>;
16
+ let settings: DyFM_ListCollectorDataHandler_Settings<TestCollector, TestItem>;
17
+
18
+ beforeEach(() => {
19
+ settings = {
20
+ name: 'TestCollectorHandler',
21
+ listKey: 'items',
22
+ get: async (loadBy?: string): Promise<TestCollector> => {
23
+ return {
24
+ _id: loadBy || 'default',
25
+ items: [
26
+ { _id: '1', name: 'item1' } as TestItem,
27
+ { _id: '2', name: 'item2' } as TestItem,
28
+ ],
29
+ } as TestCollector;
30
+ },
31
+ setItem: async (item: TestItem, collectorId?: string): Promise<TestItem> => item,
32
+ deleteItem: async (id: string, collectorId?: string): Promise<void> => {},
33
+ defaultValue: { _id: 'default', items: [] } as TestCollector,
34
+ };
35
+
36
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
37
+ });
38
+
39
+ it('| should create an instance with settings', (): void => {
40
+ expect(handler).toBeTruthy();
41
+ expect(handler.name).toBe('TestCollectorHandler');
42
+ });
43
+
44
+ it('| should have dataList$ observable', (): void => {
45
+ expect(handler.dataList$).toBeTruthy();
46
+ });
47
+
48
+ it('| should have activeItem$ observable', (): void => {
49
+ expect(handler.activeItem$).toBeTruthy();
50
+ });
51
+
52
+ it('| should get empty dataList initially', (): void => {
53
+ expect(handler.dataList).toEqual([]);
54
+ });
55
+
56
+ it('| should set active item', (): void => {
57
+ const item = { _id: '1', name: 'item1' } as TestItem;
58
+ handler.setActiveItem(item);
59
+
60
+ handler.activeItem$.subscribe(activeItem => {
61
+ expect(activeItem).toEqual(item);
62
+ });
63
+ });
64
+
65
+ it('| should clear data and active item', (): void => {
66
+ handler.clear();
67
+
68
+ expect(handler.dataList).toEqual([]);
69
+ handler.activeItem$.subscribe(activeItem => {
70
+ expect(activeItem).toBeNull();
71
+ });
72
+ });
73
+
74
+ it('| should throw error when adding item without data', async (): Promise<void> => {
75
+ handler.clear();
76
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
77
+
78
+ await expectAsync(handler.addItem(newItem)).toBeRejectedWith(jasmine.any(DyFM_Error));
79
+ });
80
+
81
+ it('| should throw error when removing item without data', async (): Promise<void> => {
82
+ // Test case for lines 204-212: removeItem throws error when list not found
83
+ handler.clear();
84
+
85
+ await expectAsync(handler.removeItem('1')).toBeRejectedWith(jasmine.any(DyFM_Error));
86
+ });
87
+
88
+ it('| should remove item with deleteItem', async (): Promise<void> => {
89
+ // Test case for lines 213-226: removeItem with deleteItem
90
+ // Use updateData to bypass the problematic post-process that expects an array
91
+ await handler.updateData({
92
+ _id: 'test',
93
+ items: [
94
+ { _id: '1', name: 'item1' } as TestItem,
95
+ { _id: '2', name: 'item2' } as TestItem,
96
+ ],
97
+ } as TestCollector);
98
+ const deleteItemSpy = spyOn(handler as any, 'deleteItem').and.returnValue(Promise.resolve());
99
+
100
+ await handler.removeItem('1');
101
+
102
+ expect(deleteItemSpy).toHaveBeenCalledWith('1', undefined);
103
+ expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
104
+ });
105
+
106
+ it('| should remove item without deleteItem', async (): Promise<void> => {
107
+ // Test case for lines 213-226: removeItem without deleteItem
108
+ settings.deleteItem = undefined;
109
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
110
+ // Use updateData to bypass the problematic post-process that expects an array
111
+ await handler.updateData({
112
+ _id: 'test',
113
+ items: [
114
+ { _id: '1', name: 'item1' } as TestItem,
115
+ { _id: '2', name: 'item2' } as TestItem,
116
+ ],
117
+ } as TestCollector);
118
+
119
+ await handler.removeItem('1');
120
+
121
+ expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
122
+ });
123
+
124
+ it('| should clear active item when removing active item', async (): Promise<void> => {
125
+ // Test case for lines 223-225: clear active item when removing
126
+ // Use updateData to bypass the problematic post-process that expects an array
127
+ await handler.updateData({
128
+ _id: 'test',
129
+ items: [
130
+ { _id: '1', name: 'item1' } as TestItem,
131
+ { _id: '2', name: 'item2' } as TestItem,
132
+ ],
133
+ } as TestCollector);
134
+ handler.setActiveItem(handler.dataList[0]);
135
+
136
+ await handler.removeItem(handler.dataList[0]._id);
137
+
138
+ handler.activeItem$.subscribe(activeItem => {
139
+ expect(activeItem).toBeNull();
140
+ });
141
+ });
142
+
143
+ it('| should throw error when updating item without data', async (): Promise<void> => {
144
+ // Test case for lines 238-246: updateItem throws error when list not found
145
+ handler.clear();
146
+ const item = { _id: '1', name: 'item1' } as TestItem;
147
+
148
+ await expectAsync(handler.updateItem(item)).toBeRejectedWith(jasmine.any(DyFM_Error));
149
+ });
150
+
151
+ it('| should update item with setItem', async (): Promise<void> => {
152
+ // Test case for lines 247-269: updateItem with setItem
153
+ // Use updateData to bypass the problematic post-process that expects an array
154
+ await handler.updateData({
155
+ _id: 'test',
156
+ items: [
157
+ { _id: '1', name: 'item1' } as TestItem,
158
+ { _id: '2', name: 'item2' } as TestItem,
159
+ ],
160
+ } as TestCollector);
161
+ const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve(handler.dataList[0]));
162
+
163
+ const updatedItem = { _id: '1', name: 'updated' } as TestItem;
164
+ await handler.updateItem(updatedItem);
165
+
166
+ expect(setItemSpy).toHaveBeenCalledWith(updatedItem, undefined);
167
+ expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
168
+ });
169
+
170
+ it('| should update item without setItem', async (): Promise<void> => {
171
+ // Test case for lines 247-269: updateItem without setItem
172
+ settings.setItem = undefined;
173
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
174
+ // Use updateData to bypass the problematic post-process that expects an array
175
+ await handler.updateData({
176
+ _id: 'test',
177
+ items: [
178
+ { _id: '1', name: 'item1' } as TestItem,
179
+ { _id: '2', name: 'item2' } as TestItem,
180
+ ],
181
+ } as TestCollector);
182
+
183
+ const updatedItem = { _id: '1', name: 'updated' } as TestItem;
184
+ await handler.updateItem(updatedItem);
185
+
186
+ expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
187
+ });
188
+
189
+ it('| should throw error when updating non-existent item', async (): Promise<void> => {
190
+ // Test case for lines 260-268: updateItem throws error when item not found
191
+ // Use updateData to bypass the problematic post-process that expects an array
192
+ await handler.updateData({
193
+ _id: 'test',
194
+ items: [
195
+ { _id: '1', name: 'item1' } as TestItem,
196
+ { _id: '2', name: 'item2' } as TestItem,
197
+ ],
198
+ } as TestCollector);
199
+ const nonExistentItem = { _id: '999', name: 'not found' } as TestItem;
200
+
201
+ await expectAsync(handler.updateItem(nonExistentItem)).toBeRejected();
202
+ });
203
+
204
+ it('| should addItem with setItem and dontSendUpdate false', async (): Promise<void> => {
205
+ // Test case for lines 173-193: addItem with setItem
206
+ await handler.updateData({
207
+ _id: 'test',
208
+ items: [],
209
+ } as TestCollector);
210
+ const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
211
+
212
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
213
+ await handler.addItem(newItem, undefined, false);
214
+
215
+ expect(setItemSpy).toHaveBeenCalled();
216
+ expect(handler.activeItem_BS.value).toEqual(newItem);
217
+ });
218
+
219
+ it('| should addItem with setItem and dontSendUpdate true', async (): Promise<void> => {
220
+ // Test case for lines 173-193: addItem with dontSendUpdate
221
+ // When dontSendUpdate is true, setItem should NOT be called (line 185: if (this.setItem && !dontSendUpdate))
222
+ await handler.updateData({
223
+ _id: 'test',
224
+ items: [],
225
+ } as TestCollector);
226
+ const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
227
+
228
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
229
+ await handler.addItem(newItem, undefined, true);
230
+
231
+ expect(setItemSpy).not.toHaveBeenCalled();
232
+ expect(handler.activeItem_BS.value).toEqual(newItem);
233
+ });
234
+
235
+ it('| should addItem without setItem', async (): Promise<void> => {
236
+ // Test case for lines 173-193: addItem without setItem
237
+ settings.setItem = undefined;
238
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
239
+ await handler.updateData({
240
+ _id: 'test',
241
+ items: [],
242
+ } as TestCollector);
243
+
244
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
245
+ await handler.addItem(newItem);
246
+
247
+ expect(handler.dataList.find(i => i._id === '3')).toBeDefined();
248
+ });
249
+
250
+ it('| should addItem with collectorId', async (): Promise<void> => {
251
+ // Test case for lines 173-193: addItem with collectorId
252
+ await handler.updateData({
253
+ _id: 'test',
254
+ items: [],
255
+ } as TestCollector);
256
+ const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve({ _id: '3', name: 'item3' }));
257
+
258
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
259
+ await handler.addItem(newItem, 'collectorId');
260
+
261
+ expect(setItemSpy).toHaveBeenCalledWith(newItem, 'collectorId');
262
+ });
263
+
264
+ it('| should addItem when listKey does not exist', async (): Promise<void> => {
265
+ // Test case for line 183: addItem when listKey does not exist
266
+ await handler.updateData({
267
+ _id: 'test',
268
+ } as TestCollector);
269
+
270
+ const newItem = { _id: '3', name: 'item3' } as TestItem;
271
+ await handler.addItem(newItem);
272
+
273
+ expect(handler.dataList.find(i => i._id === '3')).toBeDefined();
274
+ });
275
+
276
+ it('| should removeItem when item not found', async (): Promise<void> => {
277
+ // Test case for lines 203-226: removeItem when index === -1
278
+ await handler.updateData({
279
+ _id: 'test',
280
+ items: [
281
+ { _id: '1', name: 'item1' } as TestItem,
282
+ { _id: '2', name: 'item2' } as TestItem,
283
+ ],
284
+ } as TestCollector);
285
+
286
+ await handler.removeItem('999');
287
+
288
+ // Should not throw, just do nothing
289
+ expect(handler.dataList.length).toBe(2);
290
+ });
291
+
292
+ it('| should removeItem with collectorId parameter', async (): Promise<void> => {
293
+ // Test case for lines 203-226: removeItem with collectorId
294
+ await handler.updateData({
295
+ _id: 'test',
296
+ items: [
297
+ { _id: '1', name: 'item1' } as TestItem,
298
+ { _id: '2', name: 'item2' } as TestItem,
299
+ ],
300
+ } as TestCollector);
301
+ const deleteItemSpy = spyOn(handler as any, 'deleteItem').and.returnValue(Promise.resolve());
302
+
303
+ await handler.removeItem('1', 'collectorId');
304
+
305
+ expect(deleteItemSpy).toHaveBeenCalledWith('1', 'collectorId');
306
+ });
307
+
308
+ it('| should removeItem with dontSendUpdate', async (): Promise<void> => {
309
+ // Test case for lines 203-226: removeItem with dontSendUpdate
310
+ await handler.updateData({
311
+ _id: 'test',
312
+ items: [
313
+ { _id: '1', name: 'item1' } as TestItem,
314
+ { _id: '2', name: 'item2' } as TestItem,
315
+ ],
316
+ } as TestCollector);
317
+ settings.deleteItem = undefined;
318
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
319
+ await handler.updateData({
320
+ _id: 'test',
321
+ items: [
322
+ { _id: '1', name: 'item1' } as TestItem,
323
+ { _id: '2', name: 'item2' } as TestItem,
324
+ ],
325
+ } as TestCollector);
326
+
327
+ await handler.removeItem('1', undefined, true);
328
+
329
+ expect(handler.dataList.find(i => i._id === '1')).toBeUndefined();
330
+ });
331
+
332
+ it('| should updateItem with collectorId parameter', async (): Promise<void> => {
333
+ // Test case for lines 237-269: updateItem with collectorId
334
+ await handler.updateData({
335
+ _id: 'test',
336
+ items: [
337
+ { _id: '1', name: 'item1' } as TestItem,
338
+ { _id: '2', name: 'item2' } as TestItem,
339
+ ],
340
+ } as TestCollector);
341
+ const setItemSpy = spyOn(handler as any, 'setItem').and.returnValue(Promise.resolve(handler.dataList[0]));
342
+
343
+ const updatedItem = { _id: '1', name: 'updated' } as TestItem;
344
+ await handler.updateItem(updatedItem, 'collectorId');
345
+
346
+ expect(setItemSpy).toHaveBeenCalledWith(updatedItem, 'collectorId');
347
+ });
348
+
349
+ it('| should updateItem with dontSendUpdate', async (): Promise<void> => {
350
+ // Test case for lines 237-269: updateItem with dontSendUpdate
351
+ await handler.updateData({
352
+ _id: 'test',
353
+ items: [
354
+ { _id: '1', name: 'item1' } as TestItem,
355
+ { _id: '2', name: 'item2' } as TestItem,
356
+ ],
357
+ } as TestCollector);
358
+ settings.setItem = undefined;
359
+ handler = new DyFM_ListCollectorDataHandler<TestCollector, TestItem>(settings);
360
+ await handler.updateData({
361
+ _id: 'test',
362
+ items: [
363
+ { _id: '1', name: 'item1' } as TestItem,
364
+ { _id: '2', name: 'item2' } as TestItem,
365
+ ],
366
+ } as TestCollector);
367
+
368
+ const updatedItem = { _id: '1', name: 'updated' } as TestItem;
369
+ await handler.updateItem(updatedItem, undefined, true);
370
+
371
+ expect(handler.dataList.find(i => i._id === '1')?.name).toBe('updated');
372
+ });
373
+ });
374
+