@futdevpro/fsm-dynamo 1.16.30 → 1.16.33

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 (578) 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 -109
  17. package/build/_modules/game/_collections/audio-mixer.util.d.ts +55 -0
  18. package/build/_modules/game/_collections/audio-mixer.util.d.ts.map +1 -0
  19. package/build/_modules/game/_collections/audio-mixer.util.js +114 -0
  20. package/build/_modules/game/_collections/audio-mixer.util.js.map +1 -0
  21. package/build/_modules/game/_collections/audio-scale.util.d.ts +57 -0
  22. package/build/_modules/game/_collections/audio-scale.util.d.ts.map +1 -0
  23. package/build/_modules/game/_collections/audio-scale.util.js +105 -0
  24. package/build/_modules/game/_collections/audio-scale.util.js.map +1 -0
  25. package/build/_modules/game/_enums/audio-channel.enum.d.ts +21 -0
  26. package/build/_modules/game/_enums/audio-channel.enum.d.ts.map +1 -0
  27. package/build/_modules/game/_enums/audio-channel.enum.js +25 -0
  28. package/build/_modules/game/_enums/audio-channel.enum.js.map +1 -0
  29. package/build/_modules/game/_models/audio-mixer-config.interface.d.ts +37 -0
  30. package/build/_modules/game/_models/audio-mixer-config.interface.d.ts.map +1 -0
  31. package/build/_modules/game/_models/audio-mixer-config.interface.js +3 -0
  32. package/build/_modules/game/_models/audio-mixer-config.interface.js.map +1 -0
  33. package/build/_modules/game/_models/audio-mixer-settings.interface.d.ts +23 -0
  34. package/build/_modules/game/_models/audio-mixer-settings.interface.d.ts.map +1 -0
  35. package/build/_modules/game/_models/audio-mixer-settings.interface.js +3 -0
  36. package/build/_modules/game/_models/audio-mixer-settings.interface.js.map +1 -0
  37. package/build/_modules/game/_models/audio-mixer-state.interface.d.ts +19 -0
  38. package/build/_modules/game/_models/audio-mixer-state.interface.d.ts.map +1 -0
  39. package/build/_modules/game/_models/audio-mixer-state.interface.js +3 -0
  40. package/build/_modules/game/_models/audio-mixer-state.interface.js.map +1 -0
  41. package/build/_modules/game/_models/audio-mixer.control-model.d.ts +123 -0
  42. package/build/_modules/game/_models/audio-mixer.control-model.d.ts.map +1 -0
  43. package/build/_modules/game/_models/audio-mixer.control-model.js +312 -0
  44. package/build/_modules/game/_models/audio-mixer.control-model.js.map +1 -0
  45. package/build/_modules/game/_models/audio-scale.interface.d.ts +18 -0
  46. package/build/_modules/game/_models/audio-scale.interface.d.ts.map +1 -0
  47. package/build/_modules/game/_models/audio-scale.interface.js +3 -0
  48. package/build/_modules/game/_models/audio-scale.interface.js.map +1 -0
  49. package/build/_modules/game/_models/seeded-random-state.interface.d.ts +17 -0
  50. package/build/_modules/game/_models/seeded-random-state.interface.d.ts.map +1 -0
  51. package/build/_modules/game/_models/seeded-random-state.interface.js +3 -0
  52. package/build/_modules/game/_models/seeded-random-state.interface.js.map +1 -0
  53. package/build/_modules/game/_models/seeded-random.control-model.d.ts +125 -0
  54. package/build/_modules/game/_models/seeded-random.control-model.d.ts.map +1 -0
  55. package/build/_modules/game/_models/seeded-random.control-model.js +263 -0
  56. package/build/_modules/game/_models/seeded-random.control-model.js.map +1 -0
  57. package/build/_modules/game/index.d.ts +11 -0
  58. package/build/_modules/game/index.d.ts.map +1 -0
  59. package/build/_modules/game/index.js +17 -0
  60. package/build/_modules/game/index.js.map +1 -0
  61. package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
  62. package/eslint.config.js +4 -4
  63. package/nodemon.json +22 -22
  64. package/package.json +11 -2
  65. package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
  66. package/scripts/crypto/README.md +113 -113
  67. package/scripts/crypto/demo-crypto-stability.js +120 -120
  68. package/scripts/crypto/stress-test-crypto.js +379 -379
  69. package/scripts/run-coverage-tests.js +24 -24
  70. package/spec/support/helpers/ts-node-helper.js +9 -9
  71. package/spec/support/jasmine.coverage.json +23 -23
  72. package/spec/support/jasmine.json +24 -24
  73. package/src/_collections/constants/data-sizes.const.ts +40 -40
  74. package/src/_collections/constants/error-defaults.const.ts +20 -20
  75. package/src/_collections/constants/global-settings.const.ts +24 -24
  76. package/src/_collections/constants/numbers.const.ts +40 -40
  77. package/src/_collections/constants/times.const.ts +45 -45
  78. package/src/_collections/utils/array.util.spec.ts +306 -306
  79. package/src/_collections/utils/array.util.ts +813 -813
  80. package/src/_collections/utils/async.util.spec.ts +354 -354
  81. package/src/_collections/utils/async.util.ts +197 -197
  82. package/src/_collections/utils/data.util.spec.ts +345 -345
  83. package/src/_collections/utils/data.util.ts +226 -226
  84. package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
  85. package/src/_collections/utils/json-error-helper.util.ts +301 -301
  86. package/src/_collections/utils/log.util.spec.ts +975 -975
  87. package/src/_collections/utils/log.util.ts +667 -667
  88. package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
  89. package/src/_collections/utils/math/box-bounds.util.ts +183 -183
  90. package/src/_collections/utils/math/math.util.spec.ts +94 -94
  91. package/src/_collections/utils/math/math.util.ts +141 -141
  92. package/src/_collections/utils/math/random.util.spec.ts +82 -82
  93. package/src/_collections/utils/math/random.util.ts +139 -139
  94. package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
  95. package/src/_collections/utils/math/trigonometry.util.ts +102 -102
  96. package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
  97. package/src/_collections/utils/math/vector2.util.ts +653 -653
  98. package/src/_collections/utils/object.util.spec.ts +646 -646
  99. package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
  100. package/src/_collections/utils/regex/password-regex.util.ts +65 -65
  101. package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
  102. package/src/_collections/utils/regex/regex.util.ts +6 -6
  103. package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
  104. package/src/_collections/utils/regex/username-regex.util.ts +35 -35
  105. package/src/_collections/utils/round-list.util.spec.ts +79 -79
  106. package/src/_collections/utils/round-list.util.ts +162 -162
  107. package/src/_collections/utils/stack.util.spec.ts +372 -372
  108. package/src/_collections/utils/stack.util.ts +164 -164
  109. package/src/_collections/utils/string-case.util.spec.ts +441 -441
  110. package/src/_collections/utils/string-case.util.ts +362 -362
  111. package/src/_collections/utils/string.util.spec.ts +975 -975
  112. package/src/_collections/utils/string.util.ts +449 -449
  113. package/src/_collections/utils/time.util.spec.ts +50 -50
  114. package/src/_collections/utils/time.util.ts +481 -481
  115. package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
  116. package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
  117. package/src/_collections/utils/utilities.util.spec.ts +201 -201
  118. package/src/_collections/utils/utilities.util.ts +68 -68
  119. package/src/_collections/utils/uuid.util.spec.ts +30 -30
  120. package/src/_collections/utils/uuid.util.ts +50 -50
  121. package/src/_enums/basic-property-type.enum.ts +20 -20
  122. package/src/_enums/data-model-type.enum.ts +29 -29
  123. package/src/_enums/environment-flag.enum.ts +28 -28
  124. package/src/_enums/error-level.enum.ts +43 -43
  125. package/src/_enums/http/http-call-type.enum.ts +43 -43
  126. package/src/_enums/http/http-event-type.enum.ts +40 -40
  127. package/src/_enums/http/http-response-type.enum.ts +18 -18
  128. package/src/_enums/log-style.enum.ts +44 -44
  129. package/src/_enums/server-connection-status.enum.ts +6 -6
  130. package/src/_enums/time/day-of-week.enum.ts +55 -55
  131. package/src/_enums/time/month.enum.ts +25 -25
  132. package/src/_enums/time/relative-date.enum.ts +24 -24
  133. package/src/_models/control-models/data-model-params.control-model.spec.ts +133 -133
  134. package/src/_models/control-models/data-model-params.control-model.ts +352 -352
  135. package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
  136. package/src/_models/control-models/data-property-params.control-model.ts +210 -210
  137. package/src/_models/control-models/error.control-model.spec.ts +912 -912
  138. package/src/_models/control-models/error.control-model.ts +1274 -1274
  139. package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
  140. package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
  141. package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
  142. package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
  143. package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
  144. package/src/_models/control-models/http/http-response.model-base.ts +57 -57
  145. package/src/_models/control-models/poll.control-model.spec.ts +63 -63
  146. package/src/_models/control-models/poll.control-model.ts +151 -151
  147. package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
  148. package/src/_models/control-models/range-value.control-model.ts +289 -289
  149. package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
  150. package/src/_models/control-models/server-status.control-model.ts +94 -94
  151. package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
  152. package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
  153. package/src/_models/data-models/errors.data-model.spec.ts +71 -71
  154. package/src/_models/data-models/errors.data-model.ts +175 -175
  155. package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
  156. package/src/_models/data-models/metadata.data-model.ts +153 -153
  157. package/src/_models/interfaces/box-bounds.interface.ts +7 -7
  158. package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
  159. package/src/_models/interfaces/environment/global-settings.interface.ts +47 -47
  160. package/src/_models/interfaces/error-defaults.interface.ts +11 -11
  161. package/src/_models/interfaces/paged.interface.ts +12 -12
  162. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  163. package/src/_models/interfaces/route-settings.interface.ts +15 -15
  164. package/src/_models/interfaces/search-query.interface.ts +23 -23
  165. package/src/_models/interfaces/search-result.interface.ts +5 -5
  166. package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
  167. package/src/_models/interfaces/vector2.interface.ts +20 -20
  168. package/src/_models/types/db-filter.type.ts +110 -110
  169. package/src/_models/types/db-sort.type.ts +4 -4
  170. package/src/_models/types/ds-filter.type.ts +68 -68
  171. package/src/_models/types/ds-sort.type.ts +21 -21
  172. package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
  173. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
  174. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
  175. package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
  176. package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
  177. package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
  178. package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
  179. package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
  180. package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
  181. package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
  182. package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
  183. package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
  184. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
  185. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
  186. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
  187. package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
  188. package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
  189. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
  190. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
  191. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
  192. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
  193. package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
  194. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +135 -135
  195. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
  196. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
  197. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
  198. package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
  199. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
  200. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
  201. package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
  202. package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
  203. package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
  204. package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
  205. package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
  206. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +40 -40
  207. package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
  208. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
  209. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
  210. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
  211. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
  212. package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
  213. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +161 -161
  214. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
  215. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
  216. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
  217. package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
  218. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
  219. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
  220. package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
  221. package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
  222. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +59 -59
  223. package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
  224. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
  225. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
  226. package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
  227. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
  228. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
  229. package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
  230. package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
  231. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +404 -404
  232. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
  233. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
  234. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
  235. package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
  236. package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
  237. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
  238. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
  239. package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
  240. package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
  241. package/src/_modules/ai/index.ts +27 -27
  242. package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
  243. package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
  244. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
  245. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
  246. package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
  247. package/src/_modules/ci-tools/index.ts +8 -8
  248. package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
  249. package/src/_modules/crypto/index.ts +13 -13
  250. package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
  251. package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
  252. package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
  253. package/src/_modules/custom-data/index.ts +10 -10
  254. package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
  255. package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
  256. package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +473 -473
  257. package/src/_modules/data-handler/_models/data-handler.control-model.ts +486 -486
  258. package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
  259. package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
  260. package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
  261. package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
  262. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
  263. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
  264. package/src/_modules/data-handler/index.ts +6 -6
  265. package/src/_modules/game/_collections/audio-mixer.util.spec.ts +198 -0
  266. package/src/_modules/game/_collections/audio-mixer.util.ts +143 -0
  267. package/src/_modules/game/_collections/audio-scale.util.spec.ts +140 -0
  268. package/src/_modules/game/_collections/audio-scale.util.ts +129 -0
  269. package/src/_modules/game/_enums/audio-channel.enum.ts +22 -0
  270. package/src/_modules/game/_models/audio-mixer-config.interface.ts +45 -0
  271. package/src/_modules/game/_models/audio-mixer-settings.interface.ts +28 -0
  272. package/src/_modules/game/_models/audio-mixer-state.interface.ts +23 -0
  273. package/src/_modules/game/_models/audio-mixer.control-model.spec.ts +306 -0
  274. package/src/_modules/game/_models/audio-mixer.control-model.ts +378 -0
  275. package/src/_modules/game/_models/audio-scale.interface.ts +21 -0
  276. package/src/_modules/game/_models/seeded-random-state.interface.ts +21 -0
  277. package/src/_modules/game/_models/seeded-random.control-model.spec.ts +290 -0
  278. package/src/_modules/game/_models/seeded-random.control-model.ts +311 -0
  279. package/src/_modules/game/index.ts +15 -0
  280. package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
  281. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
  282. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
  283. package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
  284. package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
  285. package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
  286. package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
  287. package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
  288. package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
  289. package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
  290. package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
  291. package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
  292. package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
  293. package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
  294. package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
  295. package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
  296. package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
  297. package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
  298. package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
  299. package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
  300. package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
  301. package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
  302. package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
  303. package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
  304. package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
  305. package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
  306. package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
  307. package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
  308. package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
  309. package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
  310. package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
  311. package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
  312. package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
  313. package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
  314. package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
  315. package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
  316. package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
  317. package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
  318. package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
  319. package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
  320. package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
  321. package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
  322. package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
  323. package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
  324. package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
  325. package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
  326. package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
  327. package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
  328. package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
  329. package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
  330. package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
  331. package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
  332. package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
  333. package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
  334. package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
  335. package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
  336. package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
  337. package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
  338. package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
  339. package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
  340. package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
  341. package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
  342. package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
  343. package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
  344. package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
  345. package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
  346. package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
  347. package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
  348. package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
  349. package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
  350. package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
  351. package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
  352. package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
  353. package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
  354. package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
  355. package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
  356. package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
  357. package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
  358. package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
  359. package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
  360. package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
  361. package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
  362. package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
  363. package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
  364. package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
  365. package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
  366. package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
  367. package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
  368. package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
  369. package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
  370. package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
  371. package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
  372. package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
  373. package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
  374. package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
  375. package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
  376. package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
  377. package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
  378. package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
  379. package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
  380. package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
  381. package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
  382. package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
  383. package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
  384. package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
  385. package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
  386. package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
  387. package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
  388. package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
  389. package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
  390. package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
  391. package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
  392. package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
  393. package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
  394. package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
  395. package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
  396. package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
  397. package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
  398. package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
  399. package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
  400. package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
  401. package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
  402. package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
  403. package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
  404. package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
  405. package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
  406. package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
  407. package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
  408. package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
  409. package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
  410. package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
  411. package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
  412. package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
  413. package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
  414. package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
  415. package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
  416. package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
  417. package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
  418. package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
  419. package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
  420. package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
  421. package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
  422. package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
  423. package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
  424. package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
  425. package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
  426. package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
  427. package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
  428. package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
  429. package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
  430. package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
  431. package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
  432. package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
  433. package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
  434. package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
  435. package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
  436. package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
  437. package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
  438. package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
  439. package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
  440. package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
  441. package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
  442. package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
  443. package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
  444. package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
  445. package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
  446. package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
  447. package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
  448. package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
  449. package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
  450. package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
  451. package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
  452. package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
  453. package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
  454. package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
  455. package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
  456. package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
  457. package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
  458. package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
  459. package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
  460. package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
  461. package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
  462. package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
  463. package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
  464. package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
  465. package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
  466. package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
  467. package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
  468. package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
  469. package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
  470. package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
  471. package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
  472. package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
  473. package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
  474. package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
  475. package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
  476. package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
  477. package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
  478. package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
  479. package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
  480. package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
  481. package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
  482. package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
  483. package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
  484. package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
  485. package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
  486. package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
  487. package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
  488. package/src/_modules/location/_collections/loc.util.ts +74 -74
  489. package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
  490. package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
  491. package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
  492. package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
  493. package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
  494. package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
  495. package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
  496. package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
  497. package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
  498. package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
  499. package/src/_modules/location/index.ts +22 -22
  500. package/src/_modules/messaging/README.md +279 -279
  501. package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
  502. package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
  503. package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
  504. package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
  505. package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
  506. package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
  507. package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
  508. package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
  509. package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
  510. package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
  511. package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
  512. package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
  513. package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
  514. package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
  515. package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
  516. package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
  517. package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
  518. package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
  519. package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
  520. package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
  521. package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
  522. package/src/_modules/messaging/_modules/agent/index.ts +8 -8
  523. package/src/_modules/messaging/index.ts +28 -28
  524. package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
  525. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
  526. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
  527. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
  528. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
  529. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
  530. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
  531. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
  532. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
  533. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
  534. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
  535. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
  536. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
  537. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
  538. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
  539. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
  540. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
  541. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
  542. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
  543. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
  544. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
  545. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
  546. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
  547. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
  548. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
  549. package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
  550. package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
  551. package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
  552. package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
  553. package/src/_modules/pipe/index.ts +30 -30
  554. package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
  555. package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
  556. package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
  557. package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +66 -66
  558. package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -172
  559. package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
  560. package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
  561. package/src/_modules/socket/index.ts +14 -14
  562. package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
  563. package/src/_modules/test/index.ts +5 -5
  564. package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
  565. package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
  566. package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
  567. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
  568. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
  569. package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
  570. package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
  571. package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
  572. package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
  573. package/src/_modules/usage/index.ts +11 -11
  574. package/src/index.ts +104 -104
  575. package/tsconfig.app.json +12 -12
  576. package/tsconfig.json +31 -31
  577. package/tsconfig.test.json +16 -16
  578. package/tslint.json +153 -153
@@ -1,1274 +1,1274 @@
1
- import { DyFM_error_defaults } from '../../_collections/constants/error-defaults.const';
2
- import { DyFM_Log } from '../../_collections/utils/log.util';
3
- import { DyFM_Object } from '../../_collections/utils/object.util';
4
- import { DyFM_getLocalStackLocation } from '../../_collections/utils/stack.util';
5
- import { DyFM_ErrorLevel } from '../../_enums/error-level.enum';
6
- import { DyFM_LogStyle } from '../../_enums/log-style.enum';
7
- import { DyFM_Metadata } from '../data-models/metadata.data-model';
8
- import { DyFM_HttpErrorResponse, DyFM_httpErrorResponse_name } from './http/http-error-response.control-model';
9
-
10
- export const DyFM_errorFlag = 'DYNAMO-ERROR-OBJECT';
11
- export const DyFM_errorĐFlagParts= [
12
- 'DyNTS-',
13
- 'DyFM-',
14
- 'DyNX_',
15
- 'DyNM_',
16
- 'DyBu_',
17
- 'DyCLI_',
18
- ]
19
-
20
- export interface DyFM_ValidationError {
21
- message: string;
22
- /** @deprecated use message instead */
23
- userMessage?: string;
24
- code: string;
25
- }
26
-
27
- export type DyFM_ValidationErrors = {
28
- [key: string]: DyFM_ValidationError;
29
- }
30
-
31
- export type DyFM_AnyError = DyFM_Error | DyFM_HttpErrorResponse | Error | any | unknown;
32
- export type DyFM_NonHttpError = DyFM_Error | Error;
33
-
34
- export interface DyFM_Error_Settings {
35
- _id?: string;
36
-
37
- handled?: boolean;
38
- status?: number;
39
-
40
- errorCode?: string;
41
- message?: string;
42
- /** @deprecated use message instead */
43
- userMessage?: string;
44
- /** message translation code */
45
- userMessageTranslateCode?: string;
46
- addECToUserMsg?: boolean;
47
-
48
- error?: DyFM_AnyError;
49
- errors?: DyFM_AnyError[];
50
- validationErrors?: DyFM_ValidationErrors;
51
-
52
- issuer?: string;
53
- issuerSystem?: string;
54
- issuerService?: string;
55
- systemVersion?: string;
56
-
57
- level?: DyFM_ErrorLevel;
58
-
59
- levelUpThis?: boolean;
60
- additionalContent?: any;
61
- confidentialContent?: any;
62
- stack?: string;
63
-
64
- allowCircular?: boolean;
65
- modestLog?: boolean;
66
- log?: boolean;
67
-
68
- __localStack?: string;
69
- __created?: Date;
70
- __createdBy?: string;
71
- __lastModified?: Date;
72
- __lastModifiedBy?: string;
73
- __v?: number;
74
- }
75
-
76
- export class DyFM_Error extends Error implements DyFM_Metadata {
77
- readonly flag = DyFM_errorFlag + '-v2';
78
-
79
- // ─── DyFM_Metadata mezok (implements DyFM_Metadata) ─────────────────────────
80
- // A DyFM_Error mostantol `extends Error` — igy `err instanceof Error === true`, es a
81
- // Node 22 strict unhandled-rejection riport a VALODI throw-site stacket mutatja (a korabbi
82
- // `extends DyFM_Metadata` mellett a bare-object Promise rejection veletlen specet blame-elt).
83
- // A metadata-orokles helyett strukturalisan IMPLEMENTALJUK a DyFM_Metadata-t: a mezoket itt
84
- // deklaraljuk, az init-logikat a constructorban a DyFM_Metadata.applyMetadata statikus vegzi.
85
- _id?: string;
86
- __created?: Date;
87
- __createdBy?: string;
88
- __lastModified?: Date;
89
- __lastModifiedBy?: string;
90
- __v?: number;
91
- _deleted?: Date;
92
- _deletedBy?: string;
93
- _archived?: Date;
94
- _originalId?: string;
95
-
96
- _errorCode?: string;
97
- _errorCodes?: string[] = [];
98
-
99
- /** contains all sub error messages, in reversed order */
100
- _message?: string;
101
- _messages?: string[] = [];
102
-
103
- /** @deprecated use _message instead */
104
- __userMessage?: string;
105
- /** contains all sub error messages, in reversed order
106
- * @deprecated use _messages instead
107
- */
108
- __userMessages?: string[] = [];
109
- /** message translation code */
110
- __userMessageTranslateCode?: string;
111
-
112
- ___handled?: boolean;
113
- ___logged?: boolean;
114
- ___status?: number;
115
-
116
- ___issuer?: string;
117
- ___issuerSystem?: string;
118
- ___issuerService?: string;
119
- ___systemVersion?: string;
120
-
121
- error?: DyFM_AnyError;
122
- errors?: DyFM_AnyError[] = [];
123
- validationErrors?: DyFM_ValidationErrors;
124
-
125
- // `stack` az Error-bol jon (`extends Error`) — itt NEM deklaraljuk ujra, kulonben a
126
- // class-field-init undefined-dal felulirna a natancsolt stacket a super() utan.
127
- __localStack?: string;
128
-
129
- level?: DyFM_ErrorLevel;
130
-
131
- levelUpThis?: boolean;
132
- additionalContent?: any = {};
133
- confidentialContent?: any = {};
134
-
135
- constructor(
136
- set?: DyFM_Error_Settings
137
- ) {
138
- // az Error-constructort a nyers input-message-dzsel hivjuk (a vegleges _message kesobb all
139
- // ossze; a natancsolt Error.message-et a constructor vegen allitjuk ra) — super() KOTELEZOEN
140
- // az elso utasitas, a this- erintese elott.
141
- super(set?.message);
142
-
143
- // a natancsolt Error.name -> 'DyFM_Error' (non-enumerable, hogy a szerializalt shape ne
144
- // valtozzon): igy a logok / Node-riport "DyFM_Error: ..."-kent jelennek meg, nem "Error: ...".
145
- Object.defineProperty(this, 'name', {
146
- value: 'DyFM_Error',
147
- enumerable: false,
148
- writable: true,
149
- configurable: true,
150
- });
151
-
152
- // metadata-init: a korabbi `super(set, { issuer })` helyett (a super most az Error),
153
- // target-alapon a DyFM_Metadata.applyMetadata statikuson at.
154
- DyFM_Metadata.applyMetadata(
155
- this,
156
- set,
157
- {
158
- issuer: set?.issuerService ??
159
- (set?.error as DyFM_Error)?.___issuerService ??
160
- DyFM_error_defaults.issuerService,
161
- }
162
- );
163
-
164
- try {
165
- if (!set) {
166
- set = {};
167
- }
168
-
169
- /** set simple properties */
170
- this.___handled = Boolean(set.handled ?? (set.error as DyFM_Error)?.___handled);
171
- this.___status = set.status ?? (set.error as DyFM_Error)?.___status;
172
- this.___issuer = set.issuer ??
173
- (set.error as DyFM_Error)?.___issuer ??
174
- DyFM_error_defaults.issuer;
175
- this.___issuerSystem = set.issuerSystem ??
176
- (set.error as DyFM_Error)?.___issuerSystem ??
177
- DyFM_error_defaults.issuerSystem;
178
- this.___issuerService = set.issuerService ??
179
- (set.error as DyFM_Error)?.___issuerService ??
180
- DyFM_error_defaults.issuerService;
181
- this.___systemVersion = set.systemVersion ??
182
- (set.error as DyFM_Error)?.___systemVersion ??
183
- DyFM_error_defaults.systemVersion;
184
- this.__localStack = (set as DyFM_Error)?.__localStack ??
185
- (set.error as DyFM_Error)?.__localStack ??
186
- DyFM_getLocalStackLocation();
187
-
188
- this.validationErrors = set.validationErrors ?? (set.error as DyFM_Error)?.validationErrors;
189
-
190
- this.level = set.level ?? (set.error as DyFM_Error)?.level ?? DyFM_ErrorLevel.error;
191
-
192
- this.levelUpThis = set.levelUpThis;
193
-
194
- set.allowCircular = set.allowCircular ??
195
- set.additionalContent?.allowCircular ??
196
- (set.error as DyFM_Error)?.additionalContent?.allowCircular ??
197
- false;
198
-
199
- if (set.allowCircular) {
200
- this.additionalContent.allowCircular = true;
201
- }
202
-
203
- if (((set as DyFM_Error)?.error as DyFM_Error)?.___logged) {
204
- this.___logged = true;
205
- }
206
-
207
- if (
208
- !set.allowCircular &&
209
- set.additionalContent &&
210
- Object.keys(set.additionalContent)?.length
211
- ) {
212
- try {
213
- JSON.stringify(set.additionalContent);
214
- } catch {
215
- DyFM_Log.error(
216
- 'Internal Dynamo ERROR: additionalContent is not JSON.stringifyable... ' +
217
- '(it will be removed!)',
218
- '\nerrorCode:', set.errorCode,
219
- /* 'additionalContent:', set.additionalContent, */
220
- );
221
- delete set.additionalContent;
222
- }
223
- }
224
-
225
- if (
226
- !set.allowCircular &&
227
- !set.additionalContent?.allowCircular &&
228
- (set.error as DyFM_Error)?.additionalContent &&
229
- !(set.error as DyFM_Error)?.additionalContent?.allowCircular &&
230
- Object.keys((set.error as DyFM_Error)?.additionalContent)?.length
231
- ) {
232
- try {
233
- JSON.stringify((set.error as DyFM_Error)?.additionalContent);
234
- } catch {
235
- DyFM_Log.error(
236
- 'Internal Dynamo ERROR: additionalContent is not JSON.stringifyable... ' +
237
- '(it will be removed!)',
238
- '\nerrorCode:', set.errorCode,
239
- /* 'additionalContent:', (set.error as DyFM_Error)?.additionalContent, */
240
- );
241
- delete (set.error as DyFM_Error)?.additionalContent;
242
- }
243
- }
244
-
245
- // ADDITIONAL CONTENT
246
- if ((set.error as DyFM_Error)?.additionalContent) {
247
- Object.assign(this.additionalContent, (set.error as DyFM_Error)?.additionalContent);
248
- }
249
-
250
- if (set.additionalContent) {
251
- Object.assign(this.additionalContent, set.additionalContent);
252
- }
253
-
254
- // CONFIDENTIAL CONTENT
255
- if ((set.error as DyFM_Error)?.confidentialContent) {
256
- Object.assign(this.confidentialContent, (set.error as DyFM_Error)?.confidentialContent);
257
- }
258
-
259
- if (set.confidentialContent) {
260
- Object.assign(this.confidentialContent, set.confidentialContent);
261
- }
262
-
263
- // ERROR CODE
264
- if (!set.errorCode) {
265
- set.errorCode = DyFM_error_defaults.errorCode;
266
- }
267
-
268
- /** set default error (self defined) */
269
- if (!set.error) {
270
- set.error = new Error();
271
- const errorStack: string[] = set.error.stack?.split('\n');
272
-
273
- errorStack.splice(1, 1);
274
- set.error.stack = errorStack.join('\n');
275
- }
276
-
277
- if ((set as DyFM_NonHttpError)?.stack) {
278
- this.stack = (set as DyFM_NonHttpError)?.stack;
279
- } else if ((set.error as DyFM_NonHttpError)?.stack) {
280
- this.stack = (set.error as DyFM_NonHttpError)?.stack;
281
- } else if (
282
- (set.error as DyFM_HttpErrorResponse)?.name === DyFM_httpErrorResponse_name &&
283
- (set.error as DyFM_HttpErrorResponse)?.error?.stack
284
- ) {
285
- this.stack = (set.error as DyFM_HttpErrorResponse)?.error?.stack;
286
- } else {
287
- this.stack = new Error().stack;
288
- }
289
-
290
- /** set errorCodes */
291
- let previousErrorCodes: string[] = [];
292
-
293
- if ((set.error as DyFM_Error)?._errorCodes) {
294
- previousErrorCodes.push(...((set.error as DyFM_Error)?._errorCodes ?? []));
295
- }
296
-
297
- if (!set.errorCode) {
298
- set.errorCode = DyFM_error_defaults.errorCode;
299
- }
300
- previousErrorCodes = previousErrorCodes.filter(
301
- (code: string): boolean => code !== set.errorCode
302
- );
303
- this._errorCodes = [ ...previousErrorCodes, set.errorCode ].filter(Boolean);
304
-
305
- /** bring up non NTS and non default first error */
306
- const filteredErrorCodes: string[] = this._errorCodes.filter(
307
- (code: string): boolean =>
308
- code && code !== DyFM_error_defaults.errorCode &&
309
- !DyFM_errorĐFlagParts.some((part: string): boolean => code.includes(part))
310
- );
311
-
312
- this._errorCode = filteredErrorCodes[0] ?? this._errorCodes?.[0];
313
- const highlightedErrorCodeIndex: number = this._errorCodes.findIndex(
314
- (code: string): boolean => code === filteredErrorCodes?.[0]
315
- );
316
-
317
- /** set message */
318
- if (!set.message) {
319
- if (typeof set.error === 'string') {
320
- /** string error */
321
- set.message = set.error;
322
- } else if (
323
- !(set.error as DyFM_Error)?.flag?.includes('DYNAMO') &&
324
- (set.error as Error)?.message
325
- ) {
326
- /** simple - non-dynamo - error */
327
- set.message = (set.error as Error)?.message;
328
- } else if ((set.error as Error).stack) {
329
- /** error not defined - self defining */
330
- const posFull: string[] = (set.error as Error).stack?.split('\n')?.[1]?.split('\\');
331
-
332
- if (posFull?.[posFull?.length - 1]) {
333
- set.message = DyFM_error_defaults.message + '; ' + posFull[posFull.length - 1];
334
- } else {
335
- set.message = DyFM_error_defaults.message;
336
- }
337
- }
338
- }
339
- /** set messages */
340
- let previousMessages: string[] = [];
341
-
342
- if ((set.error as DyFM_Error)?._messages) {
343
- previousMessages.push(...((set.error as DyFM_Error)?._messages ?? []));
344
- } else if ((set.error as Error)?.message) {
345
- previousErrorCodes.push((set.error as Error)?.message);
346
- }
347
- previousMessages = previousMessages.filter(
348
- (msg: string): boolean => msg !== set.message
349
- );
350
- this._messages = [ ...previousMessages, set.message ].filter(Boolean);
351
-
352
- if (
353
- -1 < highlightedErrorCodeIndex &&
354
- this._messages[highlightedErrorCodeIndex] &&
355
- this._messages[highlightedErrorCodeIndex] !== DyFM_error_defaults.message
356
- ) {
357
- this._message = this._messages[highlightedErrorCodeIndex];
358
- } else {
359
- this._message = this._messages?.[0];
360
- }
361
-
362
- /** @deprecated use _messages instead */
363
- let previousUserMessages: string[] = [];
364
-
365
- if ((set.error as DyFM_Error)?.__userMessages) {
366
- previousUserMessages.push(...((set.error as DyFM_Error)?.__userMessages ?? []));
367
- }
368
-
369
- if (!set.userMessage) {
370
- set.userMessage = DyFM_error_defaults.userMessage;
371
- }
372
-
373
- if (
374
- set.addECToUserMsg &&
375
- set.userMessage !== DyFM_error_defaults.userMessage &&
376
- set.errorCode
377
- ) {
378
- set.userMessage += `\n ErrorCode: ${set.errorCode}`;
379
- }
380
- previousUserMessages = previousUserMessages.filter(
381
- (msg: string): boolean => msg !== set.userMessage
382
- );
383
- this.__userMessages = [ ...previousUserMessages, set.userMessage ].filter(Boolean);
384
-
385
- if (
386
- -1 < highlightedErrorCodeIndex &&
387
- this.__userMessages[highlightedErrorCodeIndex] &&
388
- this.__userMessages[highlightedErrorCodeIndex] !== DyFM_error_defaults.userMessage
389
- ) {
390
- this.__userMessage = this.__userMessages[highlightedErrorCodeIndex];
391
- } else {
392
- this.__userMessage = this.__userMessages.filter(
393
- (msg: string): boolean => msg && msg !== DyFM_error_defaults.userMessage
394
- )?.[0];
395
- }
396
-
397
- /** set userMessageTranslateCode */
398
- set.userMessageTranslateCode =
399
- set.userMessageTranslateCode ??
400
- (set.error as DyFM_Error)?.__userMessageTranslateCode;
401
-
402
- /** set errors */
403
- let previousErrors: DyFM_AnyError[] = [];
404
-
405
- if ((set.error as DyFM_Error)?.errors?.length) {
406
- previousErrors.push(...(set.error as DyFM_Error).errors);
407
- } else if (typeof (set.error as DyFM_Error)?.errors == 'object') {
408
- this.additionalContent.errors = (set.error as DyFM_Error).errors;
409
- }
410
- previousErrors = previousErrors.filter(
411
- (error: DyFM_AnyError): boolean => error !== set.error
412
- );
413
- this.errors = [ ...previousErrors, set.error ].filter(Boolean);
414
-
415
- if (set.errors) {
416
- if (0 < this.errors.length) {
417
- this.errors.push(...(set.errors ?? []));
418
- } else {
419
- this.errors.push(
420
- new Error('there are multiple errors. check errors after this one'),
421
- ...(set.errors ?? []),
422
- );
423
- }
424
- }
425
- this.error = this.errors?.[0];
426
- this.errors = this.errors.map((subError: DyFM_AnyError): any => {
427
- if ((subError as DyFM_Error)?.errors) {
428
- subError = { ...subError } as DyFM_Error;
429
- delete subError.errors;
430
- delete subError.additionalContent;
431
- }
432
-
433
- if (((subError as DyFM_Error).error as DyFM_Error)?.errors) {
434
- (subError as DyFM_Error).error = { ...(subError as DyFM_Error).error } as DyFM_Error;
435
- delete ((subError as DyFM_Error).error as DyFM_Error).errors;
436
- delete ((subError as DyFM_Error).error as DyFM_Error).additionalContent;
437
- }
438
-
439
- return subError;
440
- });
441
-
442
- this.errors = this.errors.filter((error: DyFM_AnyError): boolean =>
443
- Boolean(error) && (error instanceof Error || Boolean(Object.keys(error).length))
444
- );
445
-
446
- // ─── `extends Error` szerializacios igazitasok ─────────────────────────
447
- // A natancsolt Error a stacket NON-ENUMERABLE own-property-kent kezeli, igy a
448
- // `{ ...this }` spread (getErrorsFlat) es a JSON.stringify (getParsable / perzisztalas)
449
- // elejtene. Enumerable-kent ujradefinialjuk, hogy a szerializacios utak megtartsak.
450
- if (this.stack !== undefined) {
451
- Object.defineProperty(this, 'stack', {
452
- value: this.stack,
453
- enumerable: true,
454
- writable: true,
455
- configurable: true,
456
- });
457
- }
458
-
459
- // A natancsolt Error.message-et a sajat _message-unkre allitjuk (NON-enumerable marad,
460
- // hogy a szerializalt shape valtozatlan legyen — a forras tovabbra is a _message): igy a
461
- // `(err as Error).message` fogyasztok ES a Node 22 unhandled-rejection printer a valodi
462
- // uzenetet latjak, nem ures stringet.
463
- Object.defineProperty(this, 'message', {
464
- value: this._message ?? this.__userMessage ?? '',
465
- enumerable: false,
466
- writable: true,
467
- configurable: true,
468
- });
469
-
470
- DyFM_Object.safeCleanObject(this);
471
-
472
- if (!set.allowCircular) {
473
- this.errors = this.errors.filter((subError: DyFM_AnyError): boolean => {
474
- if (subError instanceof Error) {
475
- return true;
476
- }
477
-
478
- try {
479
- JSON.stringify(subError);
480
-
481
- return true;
482
- } catch (error) {
483
- DyFM_Log.error(
484
- 'Internal Dynamo ERROR: error is not JSON.stringifyable... ' +
485
- '(it will be removed!)',
486
- '\nerrorCode:', (subError as DyFM_Error)?._errorCode,
487
- );
488
-
489
- return false;
490
- }
491
- });
492
- }
493
-
494
-
495
-
496
- if (set.modestLog) {
497
- console.error(this._message ?? this.__userMessage ?? this.error);
498
- }
499
-
500
- if (set.log) {
501
- console.error(this);
502
- }
503
- } catch (error) {
504
- DyFM_Log.H_error(
505
- 'Internal Dynamo ERROR: Failed to create DyFM_Error...' +
506
- 'error:\n', error,
507
- 'stack:', new Error().stack,
508
- 'set:', set
509
- );
510
- }
511
- }
512
-
513
- getErrorSimplified(): DyFM_Error_Settings {
514
- return {
515
- errorCode: this._errorCode,
516
- message: this._message,
517
- userMessage: this.__userMessage,
518
- stack: this.stack,
519
- };
520
- }
521
-
522
- getErrorsFlat(): DyFM_Error {
523
- const error: any = { ...this };
524
-
525
- if ((error.error as DyFM_Error)?.error) {
526
- delete (error.error as DyFM_Error).error;
527
- }
528
-
529
- if ((error.error as DyFM_Error)?.errors) {
530
- delete (error.error as DyFM_Error).errors;
531
- }
532
-
533
- error.errors = error.errors.map(
534
- (subError: DyFM_Error): Partial<DyFM_Error> =>
535
- error instanceof Error ? error : ({ ...subError })
536
- );
537
-
538
- error.errors.forEach((subError: DyFM_Error): void => {
539
- if (subError.errors) {
540
- delete subError.errors;
541
- }
542
-
543
- if ((subError.error as DyFM_Error)?.errors) {
544
- delete (subError.error as DyFM_Error).errors;
545
- }
546
-
547
- if ((subError.error as DyFM_Error)?.error) {
548
- delete (subError.error as DyFM_Error).error;
549
- }
550
-
551
- if (subError.additionalContent) {
552
- delete subError.additionalContent;
553
- }
554
- });
555
-
556
- return error;
557
- }
558
-
559
- logShort(
560
- title: string,
561
- setLog?: boolean,
562
- forceLog?: boolean,
563
- /* logType?: DyFM_Log_Type, */
564
- ): void {
565
- if (this.___logged && !forceLog) {
566
- DyFM_Log.warn(`logShort: already logged (${this._errorCode})`);
567
- return;
568
- }
569
-
570
- /* switch (logType) { */
571
- DyFM_Log.testError(
572
- title,
573
- '\n ErrorCode:', this._errorCode,
574
- '\n Message:', this._message?.replaceAll?.('\n', '\n '),
575
- );
576
-
577
- if (setLog) {
578
- this.___logged = true;
579
- }
580
- }
581
-
582
- warnShort(
583
- title: string,
584
- setLog?: boolean,
585
- forceLog?: boolean,
586
- ): void {
587
- if (this.___logged && !forceLog) {
588
- DyFM_Log.warn(`warnShort: already logged (${this._errorCode})`);
589
- return;
590
- }
591
-
592
- DyFM_Log.testWarn(
593
- title,
594
- '\n ErrorCode:', this._errorCode,
595
- '\n Message:', this._message?.replaceAll?.('\n', '\n '),
596
- );
597
-
598
- if (setLog) {
599
- this.___logged = true;
600
- }
601
- }
602
-
603
- logSimple(
604
- title: string,
605
- logAdditionalContent?: boolean,
606
- forceLog?: boolean,
607
- logNodeModules?: boolean
608
- ): void {
609
- if (this.___logged && !forceLog) {
610
- DyFM_Log.warn(`logSimple: already logged ${title} (${this._message}; ${this._errorCode})`);
611
- return;
612
- }
613
-
614
- // remove node_modules from stack and replace with '...'
615
- /* const stack: string = this.stack?.split?.('\n').map((line: string): string => {
616
- if (line.includes('node_modules')) {
617
- return '...';
618
- }
619
- return line;
620
- }).filter((line: string, index: number, array: string[]): boolean => {
621
- if (line === '...' && index < array.length - 1 && array[index + 1] === '...') {
622
- return false;
623
- }
624
- return true;
625
- }).join('\n'); */
626
-
627
- DyFM_Log.H_error(
628
- title,
629
- `\n${DyFM_Log.errorStyle}ErrorCode:`, this._errorCode,
630
- `\n${DyFM_Log.errorStyle}${DyFM_LogStyle.bold}Message:`,
631
- this._message?.replaceAll?.('\n', '\n '),
632
- `\n\n${DyFM_LogStyle.reset}${DyFM_Log.errorStyle}UserMessage:`,
633
- this.__userMessage?.replaceAll?.('\n', '\n '),
634
- this.__localStack ?
635
- `\n${DyFM_Log.errorStyle}LocalStack:\n ` + this.__localStack : '',
636
- `\n\n${DyFM_Log.errorStyle}Stack:`, this.stack?.replaceAll?.('\n', '\n '),
637
- logAdditionalContent && this.additionalContent ?
638
- `\n\n${DyFM_Log.errorStyle}AdditionalContent:\n` + this.additionalContent : '',
639
- );
640
-
641
- this.___logged = true;
642
- }
643
-
644
- /* static getSimpleLogContent(error: DyFM_Error): string {
645
- return `\n${DyFM_Log.errorStyle}ErrorCode:`, this._errorCode,
646
- `\n${DyFM_Log.errorStyle}${DyFM_LogStyle.bold}Message:`,
647
- this._message?.replaceAll?.('\n', '\n '),
648
- `\n\n${DyFM_LogStyle.reset}${DyFM_Log.errorStyle}UserMessage:`,
649
- this.__userMessage?.replaceAll?.('\n', '\n '),
650
- this.__localStack ?
651
- `\n${DyFM_Log.errorStyle}LocalStack:\n ` + this.__localStack : '',
652
- `\n\n${DyFM_Log.errorStyle}Stack:`, this.stack?.replaceAll?.('\n', '\n '),
653
- logAdditionalContent && this.additionalContent ?
654
- `\n\n${DyFM_Log.errorStyle}AdditionalContent:\n` + this.additionalContent : '' */
655
-
656
- /**
657
- * Checks if the error is parsable,
658
- * simplifies the error,
659
- * and returns the error as a string.
660
- */
661
- getParsable(): string {
662
- try {
663
- const flat = this.getErrorsFlat();
664
- return JSON.stringify(flat);
665
- } catch (error) {
666
- DyFM_Log.error('Error getting parsable error', error);
667
- return JSON.stringify(this.getErrorSimplified());
668
- }
669
- }
670
-
671
- static logSimple(message: string, error: DyFM_AnyError): void {
672
- if (error instanceof DyFM_Error) {
673
- error.logSimple(message);
674
- } else {
675
- DyFM_Log.T_error(message, error);
676
- }
677
- }
678
-
679
- static getErrorMessage(error: DyFM_AnyError): string {
680
- return (error as DyFM_Error)?._message ??
681
- (error as Error)?.message ??
682
- ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?._message ??
683
- ((error as DyFM_HttpErrorResponse)?.error as Error)?.message;
684
- }
685
-
686
- /**
687
- * Returns the message of the error.
688
- * Returns the userMessage if the message is not set.
689
- * (prioritizes the message over the userMessage)
690
- */
691
- static getAnyMessage(error: DyFM_AnyError): string {
692
- return this.getErrorMessage(error) ?? this.getUserMessage(error);
693
- }
694
-
695
- static getUserMessage(error: DyFM_AnyError): string {
696
- return (error as DyFM_Error)?.__userMessage ??
697
- ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?.__userMessage ??
698
- (error as DyFM_Error_Settings)?.userMessage;
699
- }
700
-
701
- /**
702
- * Returns the user message of the error.
703
- * Returns the message if the userMessage is not set.
704
- * (prioritizes the userMessage over the message)
705
- */
706
- static getAnyUserMessage(error: DyFM_AnyError): string {
707
- return this.getUserMessage(error) ?? this.getErrorMessage(error);
708
- }
709
-
710
- /**
711
- * A hiba szemantikus szöveges változata: saját üzenet + zárójelben a _messages lista első eleme
712
- * (gyökér Dynamo Error üzenete), ha van lánc. Nem az object láncon járunk végig, a _messages-t használjuk.
713
- */
714
- static getSemanticMessage(error: DyFM_AnyError): string {
715
- const ourMessage: string = this.getErrorMessage(error);
716
- if (!this.isDyFMError(error)) {
717
- return ourMessage;
718
- }
719
- const messages: string[] | undefined = (error as DyFM_Error)._messages;
720
- const firstMessage: string | undefined =
721
- messages && messages.length > 1 ? messages[0] : undefined;
722
- if (firstMessage && firstMessage !== ourMessage) {
723
- return `${ourMessage} (${firstMessage})`;
724
- }
725
- return ourMessage;
726
- }
727
-
728
- static getErrorStatus(error: DyFM_AnyError): number {
729
- return (error as DyFM_Error)?.___status ??
730
- (error as DyFM_HttpErrorResponse)?.status ??
731
- ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?.___status ?? 500;
732
- }
733
-
734
- static getErrorCode(error: DyFM_AnyError): string {
735
- return (error as DyFM_Error)?._errorCode ??
736
- ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?._errorCode ??
737
- (error as any)?.errorCode ??
738
- (error as any)?.error?.errorCode ??
739
- (error as any)?.code ??
740
- (error as any)?.error?.code;
741
- }
742
-
743
- static getErrorStack(error: DyFM_AnyError): string {
744
- return (error as DyFM_Error)?.stack ??
745
- ((error as DyFM_HttpErrorResponse)?.error as DyFM_NonHttpError)?.stack;
746
- }
747
-
748
- static isDyFMError(error: any): error is DyFM_Error {
749
- return (error as DyFM_Error)?.flag?.includes('DYNAMO');
750
- }
751
-
752
- static isAnyDyFMError(error: any): error is DyFM_AnyError {
753
- return this.isDyFMError(error) ||
754
- (error as DyFM_HttpErrorResponse)?.name === DyFM_httpErrorResponse_name ||
755
- error instanceof Error;
756
- }
757
-
758
- static deleteErrorContent(error: DyFM_Error): void {
759
- delete error.confidentialContent;
760
- delete error.additionalContent;
761
- delete error.error;
762
- delete error.errors;
763
- delete error.stack;
764
- }
765
-
766
- static getStatusText(status: number): string {
767
- switch (status) {
768
- case 100:
769
- return 'Continue';
770
- case 101:
771
- return 'Switching Protocols';
772
- case 102:
773
- return 'Processing';
774
- case 103:
775
- return 'Early Hints';
776
-
777
- case 200:
778
- return 'OK';
779
- case 201:
780
- return 'Created';
781
- case 202:
782
- return 'Accepted';
783
- case 203:
784
- return 'Non-Authoritative Information';
785
- case 204:
786
- return 'No Content';
787
- case 205:
788
- return 'Reset Content';
789
- case 206:
790
- return 'Partial Content';
791
- case 207:
792
- return 'Multi-Status';
793
- case 208:
794
- return 'Already Reported';
795
- case 226:
796
- return 'IM Used';
797
-
798
- case 300:
799
- return 'Multiple Choices';
800
- case 301:
801
- return 'Moved Permanently';
802
- case 302:
803
- return 'Found';
804
- case 303:
805
- return 'See Other';
806
- case 304:
807
- return 'Not Modified';
808
- case 305:
809
- return 'Use Proxy';
810
- case 306:
811
- return 'Switch Proxy';
812
- case 307:
813
- return 'Temporary Redirect';
814
- case 308:
815
- return 'Permanent Redirect';
816
-
817
- case 400:
818
- return 'Bad Request';
819
- case 401:
820
- return 'Unauthorized';
821
- case 402:
822
- return 'Payment Required';
823
- case 403:
824
- return 'Forbidden';
825
- case 404:
826
- return 'Not Found';
827
- case 405:
828
- return 'Method Not Allowed';
829
- case 406:
830
- return 'Not Acceptable';
831
- case 407:
832
- return 'Proxy Authentication Required';
833
- case 408:
834
- return 'Request Timeout';
835
- case 409:
836
- return 'Conflict';
837
- case 410:
838
- return 'Gone';
839
- case 411:
840
- return 'Length Required';
841
- case 412:
842
- return 'Precondition Failed';
843
- case 413:
844
- return 'Payload Too Large';
845
- case 414:
846
- return 'URI Too Long';
847
- case 415:
848
- return 'Unsupported Media Type';
849
- case 416:
850
- return 'Range Not Satisfiable';
851
- case 417:
852
- return 'Expectation Failed';
853
- case 418:
854
- return "I'm a teapot";
855
- case 421:
856
- return 'Misdirected Request';
857
- case 422:
858
- return 'Unprocessable Entity';
859
- case 423:
860
- return 'Locked';
861
- case 424:
862
- return 'Failed Dependency';
863
- case 425:
864
- return 'Too Early';
865
- case 426:
866
- return 'Upgrade Required';
867
- case 428:
868
- return 'Precondition Required';
869
- case 429:
870
- return 'Too Many Requests';
871
- case 431:
872
- return 'Request Header Fields Too Large';
873
- case 451:
874
- return 'Unavailable For Legal Reasons';
875
-
876
- case 500:
877
- return 'Internal Server Error';
878
- case 501:
879
- return 'Not Implemented';
880
- case 502:
881
- return 'Bad Gateway';
882
- case 503:
883
- return 'Service Unavailable';
884
- case 504:
885
- return 'Gateway Timeout';
886
- case 505:
887
- return 'HTTP Version Not Supported';
888
- case 506:
889
- return 'Variant Also Negotiates';
890
- case 507:
891
- return 'Insufficient Storage';
892
- case 508:
893
- return 'Loop Detected';
894
- case 510:
895
- return 'Not Extended';
896
- case 511:
897
- return 'Network Authentication Required';
898
-
899
- default:
900
- return 'Unknown';
901
- }
902
- }
903
- }
904
-
905
- /*
906
-
907
- // //
908
- // RESPONSE STATUS //
909
- // //
910
-
911
- 1XX informational response
912
-
913
- 100 Continue
914
- 101 Switching Protocols
915
- 102 Processing
916
- 103 Early Hints
917
-
918
-
919
- 2XX success
920
-
921
- 200 OK
922
- 201 Created
923
- 202 Accepted
924
- 203 Non-Authoritative Information
925
- 204 No Content
926
- 205 Reset Content
927
- 206 Partial Content
928
- 207 Multi-Status
929
- 208 Already Reported
930
- 226 IM Used
931
-
932
-
933
- 3XX redirection
934
-
935
- 300 Multiple Choices
936
- 301 Moved Permanently
937
- 302 Found
938
- 303 See Other
939
- 304 Not Modified
940
- 305 Use Proxy
941
- 306 Switch Proxy
942
- 307 Temporary Redirect
943
- 308 Permanent Redirect
944
-
945
-
946
- 4XX client n network errors
947
-
948
- 400 Bad Request
949
- 401 Unauthorized
950
- 402 Payment Required
951
- 403 Forbidden
952
- 404 Not Found
953
- 405 Method Not Allowed
954
- 406 Not Acceptable
955
- 407 Proxy Authentication Required
956
- 408 Request Timeout
957
- 409 Conflict
958
- 410 Gone
959
- 411 Length Required
960
- 412 Precondition Failed
961
- 413 Payload Too Large
962
- 414 URI Too Long
963
- 415 Unsupported Media Type
964
- 416 Range Not Satisfiable
965
- 417 Expectation Failed
966
- 418 I'm a teapot
967
- 421 Misdirected Request
968
- 422 Unprocessable Entity
969
- 423 Locked
970
- 424 Failed Dependency
971
- 425 Too Early
972
- 426 Upgrade Required
973
- 428 Precondition Required
974
- 429 Too Many Requests
975
- 431 Request Header Fields Too Large
976
- 451 Unavailable For Legal Reasons
977
-
978
-
979
- 5XX server errors
980
-
981
- 500 Internal Server Error
982
- 501 Not Implemented
983
- 502 Bad Gateway
984
- 503 Service Unavailable
985
- 504 Gateway Timeout
986
- 505 HTTP Version Not Supported
987
- 506 Variant Also Negotiates
988
- 507 Insufficient Storage
989
- 508 Loop Detected
990
- 510 Not Extended
991
- 511 Network Authentication Required
992
-
993
-
994
- Unofficial codes
995
-
996
- 103 Checkpoint
997
-
998
- 218 This is fine (Apache Web Server)
999
-
1000
- 419 Page Expired (Laravel Framework)
1001
- 420 Enhance Your Calm (Twitter)
1002
- 430 Request Header Fields Too Large (Shopify)
1003
- 440 Login Time-out
1004
- 444 No Response
1005
- 449 Retry With
1006
- 450 Blocked by Windows Parental Controls (Microsoft)
1007
- 451 Redirect
1008
- 494 Request header too large
1009
- 495 SSL Certificate Error
1010
- 496 SSL Certificate Required
1011
- 497 HTTP Request Sent to HTTPS Port
1012
- 498 Invalid Token (Esri)
1013
- 499 Client Closed Request
1014
- 499 Token Required (Esri)
1015
-
1016
- 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)
1017
- 520 Web Server Returned an any Error
1018
- 521 Web Server Is Down
1019
- 522 Connection Timed Out
1020
- 523 Origin Is Unreachable
1021
- 524 A Timeout Occurred
1022
- 525 SSL Handshake Failed
1023
- 526 Invalid SSL Certificate
1024
- 527 Railgun Error
1025
- 529 Site is overloaded
1026
- 530 Site is frozen
1027
- 598 (Informal convention) Network read timeout error
1028
-
1029
-
1030
-
1031
- 530
1032
-
1033
- 460
1034
- 463
1035
-
1036
- */
1037
-
1038
-
1039
-
1040
-
1041
- /**
1042
- * Returns the average of two numbers.
1043
- *
1044
- * @remarks
1045
- * This method is part of the {@link core-library#Statistics | Statistics subsystem}.
1046
- *
1047
- * @param x - The first input number
1048
- * @param y - The second input number
1049
- * @returns The arithmetic mean of `x` and `y`
1050
- *
1051
- * @beta
1052
- * @returns true if the specified tag is surrounded with `{`
1053
- * and `}` characters.
1054
- *
1055
- * @example
1056
- * Prints "true" for `{@link}` but "false" for `@internal`:
1057
- * ```ts
1058
- * console.log(isInlineTag('{@link}'));
1059
- * console.log(isInlineTag('@internal'));
1060
- * ```
1061
- *
1062
- *
1063
- * @alpha
1064
- * v
1065
- * sadfas d
1066
- * fs
1067
- * daf
1068
- * d as
1069
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1070
- * a
1071
- * @beta
1072
- * v
1073
- * sadfas d
1074
- * fs
1075
- * daf
1076
- * d as
1077
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1078
- * b
1079
- * @decorator
1080
- * v
1081
- * sadfas d
1082
- * fs
1083
- * daf
1084
- * d as
1085
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1086
- * dc
1087
- * @deprecated
1088
- * v
1089
- * sadfas d
1090
- * fs
1091
- * daf
1092
- * d as
1093
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1094
- * dp
1095
- * @defaultValue
1096
- * v
1097
- * sadfas d
1098
- * fs
1099
- * daf
1100
- * d as
1101
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1102
- * dv
1103
- * @eventProperty
1104
- * v
1105
- * sadfas d
1106
- * fs
1107
- * daf
1108
- * d as
1109
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1110
- * ep
1111
- * @example
1112
- * v
1113
- * sadfas d
1114
- * fs
1115
- * daf
1116
- * d as
1117
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1118
- * ex
1119
- * @experimental
1120
- * v
1121
- * sadfas d
1122
- * fs
1123
- * daf
1124
- * d as
1125
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1126
- * exp
1127
- * @inheritDoc
1128
- * v
1129
- * sadfas d
1130
- * fs
1131
- * daf
1132
- * d as
1133
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1134
- * in
1135
- * @internal
1136
- * v
1137
- * sadfas d
1138
- * fs
1139
- * daf
1140
- * d as
1141
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1142
- * int
1143
- * @label
1144
- * v
1145
- * sadfas d
1146
- * fs
1147
- * daf
1148
- * d as
1149
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1150
- * lab
1151
- * @link
1152
- * v
1153
- * sadfas d
1154
- * fs
1155
- * daf
1156
- * d as
1157
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1158
- * li
1159
- * @override
1160
- * v
1161
- * sadfas d
1162
- * fs
1163
- * daf
1164
- * d as
1165
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1166
- * v
1167
- * sadfas d
1168
- * fs
1169
- * daf
1170
- * d as
1171
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1172
- * ov
1173
- * @packageDocumentation
1174
- * v
1175
- * sadfas d
1176
- * fs
1177
- * daf
1178
- * d as
1179
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1180
- * pad
1181
- * @param
1182
- * v
1183
- * sadfas d
1184
- * fs
1185
- * daf
1186
- * d as
1187
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1188
- * par
1189
- * @privateRemarks
1190
- * v
1191
- * sadfas d
1192
- * fs
1193
- * daf
1194
- * d as
1195
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1196
- * pr
1197
- * @public
1198
- * v
1199
- * sadfas d
1200
- * fs
1201
- * daf
1202
- * d as
1203
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1204
- * p
1205
- * @readonly
1206
- * v
1207
- * sadfas d
1208
- * fs
1209
- * daf
1210
- * d as
1211
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1212
- * re
1213
- * @remarks
1214
- * v
1215
- * sadfas d
1216
- * fs
1217
- * daf
1218
- * d as
1219
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1220
- * rem
1221
- * @returns
1222
- * v
1223
- * sadfas d
1224
- * fs
1225
- * daf
1226
- * d as
1227
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1228
- * ret
1229
- * @sealed
1230
- * v
1231
- * sadfas d
1232
- * fs
1233
- * daf
1234
- * d as
1235
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1236
- * sea
1237
- * @see
1238
- * v
1239
- * sadfas d
1240
- * fs
1241
- * daf
1242
- * d as
1243
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1244
- * see
1245
- * @throws
1246
- * v
1247
- * sadfas d
1248
- * fs
1249
- * daf
1250
- * d as
1251
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1252
- * th
1253
- * @typeParam
1254
- * v
1255
- * sadfas d
1256
- * fs
1257
- * daf
1258
- * d as
1259
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1260
- * typ
1261
- * @virtual
1262
- * v
1263
- * sadfas d
1264
- * fs
1265
- * daf
1266
- * d as
1267
- * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1268
- *
1269
- *
1270
- * @see {@link http://example.com/@internal LINK}
1271
- * @see {@link http://example.com/@internal http://example.com/@internal}
1272
- */
1273
- export interface TestDocumentationComments {}
1274
-
1
+ import { DyFM_error_defaults } from '../../_collections/constants/error-defaults.const';
2
+ import { DyFM_Log } from '../../_collections/utils/log.util';
3
+ import { DyFM_Object } from '../../_collections/utils/object.util';
4
+ import { DyFM_getLocalStackLocation } from '../../_collections/utils/stack.util';
5
+ import { DyFM_ErrorLevel } from '../../_enums/error-level.enum';
6
+ import { DyFM_LogStyle } from '../../_enums/log-style.enum';
7
+ import { DyFM_Metadata } from '../data-models/metadata.data-model';
8
+ import { DyFM_HttpErrorResponse, DyFM_httpErrorResponse_name } from './http/http-error-response.control-model';
9
+
10
+ export const DyFM_errorFlag = 'DYNAMO-ERROR-OBJECT';
11
+ export const DyFM_errorĐFlagParts= [
12
+ 'DyNTS-',
13
+ 'DyFM-',
14
+ 'DyNX_',
15
+ 'DyNM_',
16
+ 'DyBu_',
17
+ 'DyCLI_',
18
+ ]
19
+
20
+ export interface DyFM_ValidationError {
21
+ message: string;
22
+ /** @deprecated use message instead */
23
+ userMessage?: string;
24
+ code: string;
25
+ }
26
+
27
+ export type DyFM_ValidationErrors = {
28
+ [key: string]: DyFM_ValidationError;
29
+ }
30
+
31
+ export type DyFM_AnyError = DyFM_Error | DyFM_HttpErrorResponse | Error | any | unknown;
32
+ export type DyFM_NonHttpError = DyFM_Error | Error;
33
+
34
+ export interface DyFM_Error_Settings {
35
+ _id?: string;
36
+
37
+ handled?: boolean;
38
+ status?: number;
39
+
40
+ errorCode?: string;
41
+ message?: string;
42
+ /** @deprecated use message instead */
43
+ userMessage?: string;
44
+ /** message translation code */
45
+ userMessageTranslateCode?: string;
46
+ addECToUserMsg?: boolean;
47
+
48
+ error?: DyFM_AnyError;
49
+ errors?: DyFM_AnyError[];
50
+ validationErrors?: DyFM_ValidationErrors;
51
+
52
+ issuer?: string;
53
+ issuerSystem?: string;
54
+ issuerService?: string;
55
+ systemVersion?: string;
56
+
57
+ level?: DyFM_ErrorLevel;
58
+
59
+ levelUpThis?: boolean;
60
+ additionalContent?: any;
61
+ confidentialContent?: any;
62
+ stack?: string;
63
+
64
+ allowCircular?: boolean;
65
+ modestLog?: boolean;
66
+ log?: boolean;
67
+
68
+ __localStack?: string;
69
+ __created?: Date;
70
+ __createdBy?: string;
71
+ __lastModified?: Date;
72
+ __lastModifiedBy?: string;
73
+ __v?: number;
74
+ }
75
+
76
+ export class DyFM_Error extends Error implements DyFM_Metadata {
77
+ readonly flag = DyFM_errorFlag + '-v2';
78
+
79
+ // ─── DyFM_Metadata mezok (implements DyFM_Metadata) ─────────────────────────
80
+ // A DyFM_Error mostantol `extends Error` — igy `err instanceof Error === true`, es a
81
+ // Node 22 strict unhandled-rejection riport a VALODI throw-site stacket mutatja (a korabbi
82
+ // `extends DyFM_Metadata` mellett a bare-object Promise rejection veletlen specet blame-elt).
83
+ // A metadata-orokles helyett strukturalisan IMPLEMENTALJUK a DyFM_Metadata-t: a mezoket itt
84
+ // deklaraljuk, az init-logikat a constructorban a DyFM_Metadata.applyMetadata statikus vegzi.
85
+ _id?: string;
86
+ __created?: Date;
87
+ __createdBy?: string;
88
+ __lastModified?: Date;
89
+ __lastModifiedBy?: string;
90
+ __v?: number;
91
+ _deleted?: Date;
92
+ _deletedBy?: string;
93
+ _archived?: Date;
94
+ _originalId?: string;
95
+
96
+ _errorCode?: string;
97
+ _errorCodes?: string[] = [];
98
+
99
+ /** contains all sub error messages, in reversed order */
100
+ _message?: string;
101
+ _messages?: string[] = [];
102
+
103
+ /** @deprecated use _message instead */
104
+ __userMessage?: string;
105
+ /** contains all sub error messages, in reversed order
106
+ * @deprecated use _messages instead
107
+ */
108
+ __userMessages?: string[] = [];
109
+ /** message translation code */
110
+ __userMessageTranslateCode?: string;
111
+
112
+ ___handled?: boolean;
113
+ ___logged?: boolean;
114
+ ___status?: number;
115
+
116
+ ___issuer?: string;
117
+ ___issuerSystem?: string;
118
+ ___issuerService?: string;
119
+ ___systemVersion?: string;
120
+
121
+ error?: DyFM_AnyError;
122
+ errors?: DyFM_AnyError[] = [];
123
+ validationErrors?: DyFM_ValidationErrors;
124
+
125
+ // `stack` az Error-bol jon (`extends Error`) — itt NEM deklaraljuk ujra, kulonben a
126
+ // class-field-init undefined-dal felulirna a natancsolt stacket a super() utan.
127
+ __localStack?: string;
128
+
129
+ level?: DyFM_ErrorLevel;
130
+
131
+ levelUpThis?: boolean;
132
+ additionalContent?: any = {};
133
+ confidentialContent?: any = {};
134
+
135
+ constructor(
136
+ set?: DyFM_Error_Settings
137
+ ) {
138
+ // az Error-constructort a nyers input-message-dzsel hivjuk (a vegleges _message kesobb all
139
+ // ossze; a natancsolt Error.message-et a constructor vegen allitjuk ra) — super() KOTELEZOEN
140
+ // az elso utasitas, a this- erintese elott.
141
+ super(set?.message);
142
+
143
+ // a natancsolt Error.name -> 'DyFM_Error' (non-enumerable, hogy a szerializalt shape ne
144
+ // valtozzon): igy a logok / Node-riport "DyFM_Error: ..."-kent jelennek meg, nem "Error: ...".
145
+ Object.defineProperty(this, 'name', {
146
+ value: 'DyFM_Error',
147
+ enumerable: false,
148
+ writable: true,
149
+ configurable: true,
150
+ });
151
+
152
+ // metadata-init: a korabbi `super(set, { issuer })` helyett (a super most az Error),
153
+ // target-alapon a DyFM_Metadata.applyMetadata statikuson at.
154
+ DyFM_Metadata.applyMetadata(
155
+ this,
156
+ set,
157
+ {
158
+ issuer: set?.issuerService ??
159
+ (set?.error as DyFM_Error)?.___issuerService ??
160
+ DyFM_error_defaults.issuerService,
161
+ }
162
+ );
163
+
164
+ try {
165
+ if (!set) {
166
+ set = {};
167
+ }
168
+
169
+ /** set simple properties */
170
+ this.___handled = Boolean(set.handled ?? (set.error as DyFM_Error)?.___handled);
171
+ this.___status = set.status ?? (set.error as DyFM_Error)?.___status;
172
+ this.___issuer = set.issuer ??
173
+ (set.error as DyFM_Error)?.___issuer ??
174
+ DyFM_error_defaults.issuer;
175
+ this.___issuerSystem = set.issuerSystem ??
176
+ (set.error as DyFM_Error)?.___issuerSystem ??
177
+ DyFM_error_defaults.issuerSystem;
178
+ this.___issuerService = set.issuerService ??
179
+ (set.error as DyFM_Error)?.___issuerService ??
180
+ DyFM_error_defaults.issuerService;
181
+ this.___systemVersion = set.systemVersion ??
182
+ (set.error as DyFM_Error)?.___systemVersion ??
183
+ DyFM_error_defaults.systemVersion;
184
+ this.__localStack = (set as DyFM_Error)?.__localStack ??
185
+ (set.error as DyFM_Error)?.__localStack ??
186
+ DyFM_getLocalStackLocation();
187
+
188
+ this.validationErrors = set.validationErrors ?? (set.error as DyFM_Error)?.validationErrors;
189
+
190
+ this.level = set.level ?? (set.error as DyFM_Error)?.level ?? DyFM_ErrorLevel.error;
191
+
192
+ this.levelUpThis = set.levelUpThis;
193
+
194
+ set.allowCircular = set.allowCircular ??
195
+ set.additionalContent?.allowCircular ??
196
+ (set.error as DyFM_Error)?.additionalContent?.allowCircular ??
197
+ false;
198
+
199
+ if (set.allowCircular) {
200
+ this.additionalContent.allowCircular = true;
201
+ }
202
+
203
+ if (((set as DyFM_Error)?.error as DyFM_Error)?.___logged) {
204
+ this.___logged = true;
205
+ }
206
+
207
+ if (
208
+ !set.allowCircular &&
209
+ set.additionalContent &&
210
+ Object.keys(set.additionalContent)?.length
211
+ ) {
212
+ try {
213
+ JSON.stringify(set.additionalContent);
214
+ } catch {
215
+ DyFM_Log.error(
216
+ 'Internal Dynamo ERROR: additionalContent is not JSON.stringifyable... ' +
217
+ '(it will be removed!)',
218
+ '\nerrorCode:', set.errorCode,
219
+ /* 'additionalContent:', set.additionalContent, */
220
+ );
221
+ delete set.additionalContent;
222
+ }
223
+ }
224
+
225
+ if (
226
+ !set.allowCircular &&
227
+ !set.additionalContent?.allowCircular &&
228
+ (set.error as DyFM_Error)?.additionalContent &&
229
+ !(set.error as DyFM_Error)?.additionalContent?.allowCircular &&
230
+ Object.keys((set.error as DyFM_Error)?.additionalContent)?.length
231
+ ) {
232
+ try {
233
+ JSON.stringify((set.error as DyFM_Error)?.additionalContent);
234
+ } catch {
235
+ DyFM_Log.error(
236
+ 'Internal Dynamo ERROR: additionalContent is not JSON.stringifyable... ' +
237
+ '(it will be removed!)',
238
+ '\nerrorCode:', set.errorCode,
239
+ /* 'additionalContent:', (set.error as DyFM_Error)?.additionalContent, */
240
+ );
241
+ delete (set.error as DyFM_Error)?.additionalContent;
242
+ }
243
+ }
244
+
245
+ // ADDITIONAL CONTENT
246
+ if ((set.error as DyFM_Error)?.additionalContent) {
247
+ Object.assign(this.additionalContent, (set.error as DyFM_Error)?.additionalContent);
248
+ }
249
+
250
+ if (set.additionalContent) {
251
+ Object.assign(this.additionalContent, set.additionalContent);
252
+ }
253
+
254
+ // CONFIDENTIAL CONTENT
255
+ if ((set.error as DyFM_Error)?.confidentialContent) {
256
+ Object.assign(this.confidentialContent, (set.error as DyFM_Error)?.confidentialContent);
257
+ }
258
+
259
+ if (set.confidentialContent) {
260
+ Object.assign(this.confidentialContent, set.confidentialContent);
261
+ }
262
+
263
+ // ERROR CODE
264
+ if (!set.errorCode) {
265
+ set.errorCode = DyFM_error_defaults.errorCode;
266
+ }
267
+
268
+ /** set default error (self defined) */
269
+ if (!set.error) {
270
+ set.error = new Error();
271
+ const errorStack: string[] = set.error.stack?.split('\n');
272
+
273
+ errorStack.splice(1, 1);
274
+ set.error.stack = errorStack.join('\n');
275
+ }
276
+
277
+ if ((set as DyFM_NonHttpError)?.stack) {
278
+ this.stack = (set as DyFM_NonHttpError)?.stack;
279
+ } else if ((set.error as DyFM_NonHttpError)?.stack) {
280
+ this.stack = (set.error as DyFM_NonHttpError)?.stack;
281
+ } else if (
282
+ (set.error as DyFM_HttpErrorResponse)?.name === DyFM_httpErrorResponse_name &&
283
+ (set.error as DyFM_HttpErrorResponse)?.error?.stack
284
+ ) {
285
+ this.stack = (set.error as DyFM_HttpErrorResponse)?.error?.stack;
286
+ } else {
287
+ this.stack = new Error().stack;
288
+ }
289
+
290
+ /** set errorCodes */
291
+ let previousErrorCodes: string[] = [];
292
+
293
+ if ((set.error as DyFM_Error)?._errorCodes) {
294
+ previousErrorCodes.push(...((set.error as DyFM_Error)?._errorCodes ?? []));
295
+ }
296
+
297
+ if (!set.errorCode) {
298
+ set.errorCode = DyFM_error_defaults.errorCode;
299
+ }
300
+ previousErrorCodes = previousErrorCodes.filter(
301
+ (code: string): boolean => code !== set.errorCode
302
+ );
303
+ this._errorCodes = [ ...previousErrorCodes, set.errorCode ].filter(Boolean);
304
+
305
+ /** bring up non NTS and non default first error */
306
+ const filteredErrorCodes: string[] = this._errorCodes.filter(
307
+ (code: string): boolean =>
308
+ code && code !== DyFM_error_defaults.errorCode &&
309
+ !DyFM_errorĐFlagParts.some((part: string): boolean => code.includes(part))
310
+ );
311
+
312
+ this._errorCode = filteredErrorCodes[0] ?? this._errorCodes?.[0];
313
+ const highlightedErrorCodeIndex: number = this._errorCodes.findIndex(
314
+ (code: string): boolean => code === filteredErrorCodes?.[0]
315
+ );
316
+
317
+ /** set message */
318
+ if (!set.message) {
319
+ if (typeof set.error === 'string') {
320
+ /** string error */
321
+ set.message = set.error;
322
+ } else if (
323
+ !(set.error as DyFM_Error)?.flag?.includes('DYNAMO') &&
324
+ (set.error as Error)?.message
325
+ ) {
326
+ /** simple - non-dynamo - error */
327
+ set.message = (set.error as Error)?.message;
328
+ } else if ((set.error as Error).stack) {
329
+ /** error not defined - self defining */
330
+ const posFull: string[] = (set.error as Error).stack?.split('\n')?.[1]?.split('\\');
331
+
332
+ if (posFull?.[posFull?.length - 1]) {
333
+ set.message = DyFM_error_defaults.message + '; ' + posFull[posFull.length - 1];
334
+ } else {
335
+ set.message = DyFM_error_defaults.message;
336
+ }
337
+ }
338
+ }
339
+ /** set messages */
340
+ let previousMessages: string[] = [];
341
+
342
+ if ((set.error as DyFM_Error)?._messages) {
343
+ previousMessages.push(...((set.error as DyFM_Error)?._messages ?? []));
344
+ } else if ((set.error as Error)?.message) {
345
+ previousErrorCodes.push((set.error as Error)?.message);
346
+ }
347
+ previousMessages = previousMessages.filter(
348
+ (msg: string): boolean => msg !== set.message
349
+ );
350
+ this._messages = [ ...previousMessages, set.message ].filter(Boolean);
351
+
352
+ if (
353
+ -1 < highlightedErrorCodeIndex &&
354
+ this._messages[highlightedErrorCodeIndex] &&
355
+ this._messages[highlightedErrorCodeIndex] !== DyFM_error_defaults.message
356
+ ) {
357
+ this._message = this._messages[highlightedErrorCodeIndex];
358
+ } else {
359
+ this._message = this._messages?.[0];
360
+ }
361
+
362
+ /** @deprecated use _messages instead */
363
+ let previousUserMessages: string[] = [];
364
+
365
+ if ((set.error as DyFM_Error)?.__userMessages) {
366
+ previousUserMessages.push(...((set.error as DyFM_Error)?.__userMessages ?? []));
367
+ }
368
+
369
+ if (!set.userMessage) {
370
+ set.userMessage = DyFM_error_defaults.userMessage;
371
+ }
372
+
373
+ if (
374
+ set.addECToUserMsg &&
375
+ set.userMessage !== DyFM_error_defaults.userMessage &&
376
+ set.errorCode
377
+ ) {
378
+ set.userMessage += `\n ErrorCode: ${set.errorCode}`;
379
+ }
380
+ previousUserMessages = previousUserMessages.filter(
381
+ (msg: string): boolean => msg !== set.userMessage
382
+ );
383
+ this.__userMessages = [ ...previousUserMessages, set.userMessage ].filter(Boolean);
384
+
385
+ if (
386
+ -1 < highlightedErrorCodeIndex &&
387
+ this.__userMessages[highlightedErrorCodeIndex] &&
388
+ this.__userMessages[highlightedErrorCodeIndex] !== DyFM_error_defaults.userMessage
389
+ ) {
390
+ this.__userMessage = this.__userMessages[highlightedErrorCodeIndex];
391
+ } else {
392
+ this.__userMessage = this.__userMessages.filter(
393
+ (msg: string): boolean => msg && msg !== DyFM_error_defaults.userMessage
394
+ )?.[0];
395
+ }
396
+
397
+ /** set userMessageTranslateCode */
398
+ set.userMessageTranslateCode =
399
+ set.userMessageTranslateCode ??
400
+ (set.error as DyFM_Error)?.__userMessageTranslateCode;
401
+
402
+ /** set errors */
403
+ let previousErrors: DyFM_AnyError[] = [];
404
+
405
+ if ((set.error as DyFM_Error)?.errors?.length) {
406
+ previousErrors.push(...(set.error as DyFM_Error).errors);
407
+ } else if (typeof (set.error as DyFM_Error)?.errors == 'object') {
408
+ this.additionalContent.errors = (set.error as DyFM_Error).errors;
409
+ }
410
+ previousErrors = previousErrors.filter(
411
+ (error: DyFM_AnyError): boolean => error !== set.error
412
+ );
413
+ this.errors = [ ...previousErrors, set.error ].filter(Boolean);
414
+
415
+ if (set.errors) {
416
+ if (0 < this.errors.length) {
417
+ this.errors.push(...(set.errors ?? []));
418
+ } else {
419
+ this.errors.push(
420
+ new Error('there are multiple errors. check errors after this one'),
421
+ ...(set.errors ?? []),
422
+ );
423
+ }
424
+ }
425
+ this.error = this.errors?.[0];
426
+ this.errors = this.errors.map((subError: DyFM_AnyError): any => {
427
+ if ((subError as DyFM_Error)?.errors) {
428
+ subError = { ...subError } as DyFM_Error;
429
+ delete subError.errors;
430
+ delete subError.additionalContent;
431
+ }
432
+
433
+ if (((subError as DyFM_Error).error as DyFM_Error)?.errors) {
434
+ (subError as DyFM_Error).error = { ...(subError as DyFM_Error).error } as DyFM_Error;
435
+ delete ((subError as DyFM_Error).error as DyFM_Error).errors;
436
+ delete ((subError as DyFM_Error).error as DyFM_Error).additionalContent;
437
+ }
438
+
439
+ return subError;
440
+ });
441
+
442
+ this.errors = this.errors.filter((error: DyFM_AnyError): boolean =>
443
+ Boolean(error) && (error instanceof Error || Boolean(Object.keys(error).length))
444
+ );
445
+
446
+ // ─── `extends Error` szerializacios igazitasok ─────────────────────────
447
+ // A natancsolt Error a stacket NON-ENUMERABLE own-property-kent kezeli, igy a
448
+ // `{ ...this }` spread (getErrorsFlat) es a JSON.stringify (getParsable / perzisztalas)
449
+ // elejtene. Enumerable-kent ujradefinialjuk, hogy a szerializacios utak megtartsak.
450
+ if (this.stack !== undefined) {
451
+ Object.defineProperty(this, 'stack', {
452
+ value: this.stack,
453
+ enumerable: true,
454
+ writable: true,
455
+ configurable: true,
456
+ });
457
+ }
458
+
459
+ // A natancsolt Error.message-et a sajat _message-unkre allitjuk (NON-enumerable marad,
460
+ // hogy a szerializalt shape valtozatlan legyen — a forras tovabbra is a _message): igy a
461
+ // `(err as Error).message` fogyasztok ES a Node 22 unhandled-rejection printer a valodi
462
+ // uzenetet latjak, nem ures stringet.
463
+ Object.defineProperty(this, 'message', {
464
+ value: this._message ?? this.__userMessage ?? '',
465
+ enumerable: false,
466
+ writable: true,
467
+ configurable: true,
468
+ });
469
+
470
+ DyFM_Object.safeCleanObject(this);
471
+
472
+ if (!set.allowCircular) {
473
+ this.errors = this.errors.filter((subError: DyFM_AnyError): boolean => {
474
+ if (subError instanceof Error) {
475
+ return true;
476
+ }
477
+
478
+ try {
479
+ JSON.stringify(subError);
480
+
481
+ return true;
482
+ } catch (error) {
483
+ DyFM_Log.error(
484
+ 'Internal Dynamo ERROR: error is not JSON.stringifyable... ' +
485
+ '(it will be removed!)',
486
+ '\nerrorCode:', (subError as DyFM_Error)?._errorCode,
487
+ );
488
+
489
+ return false;
490
+ }
491
+ });
492
+ }
493
+
494
+
495
+
496
+ if (set.modestLog) {
497
+ console.error(this._message ?? this.__userMessage ?? this.error);
498
+ }
499
+
500
+ if (set.log) {
501
+ console.error(this);
502
+ }
503
+ } catch (error) {
504
+ DyFM_Log.H_error(
505
+ 'Internal Dynamo ERROR: Failed to create DyFM_Error...' +
506
+ 'error:\n', error,
507
+ 'stack:', new Error().stack,
508
+ 'set:', set
509
+ );
510
+ }
511
+ }
512
+
513
+ getErrorSimplified(): DyFM_Error_Settings {
514
+ return {
515
+ errorCode: this._errorCode,
516
+ message: this._message,
517
+ userMessage: this.__userMessage,
518
+ stack: this.stack,
519
+ };
520
+ }
521
+
522
+ getErrorsFlat(): DyFM_Error {
523
+ const error: any = { ...this };
524
+
525
+ if ((error.error as DyFM_Error)?.error) {
526
+ delete (error.error as DyFM_Error).error;
527
+ }
528
+
529
+ if ((error.error as DyFM_Error)?.errors) {
530
+ delete (error.error as DyFM_Error).errors;
531
+ }
532
+
533
+ error.errors = error.errors.map(
534
+ (subError: DyFM_Error): Partial<DyFM_Error> =>
535
+ error instanceof Error ? error : ({ ...subError })
536
+ );
537
+
538
+ error.errors.forEach((subError: DyFM_Error): void => {
539
+ if (subError.errors) {
540
+ delete subError.errors;
541
+ }
542
+
543
+ if ((subError.error as DyFM_Error)?.errors) {
544
+ delete (subError.error as DyFM_Error).errors;
545
+ }
546
+
547
+ if ((subError.error as DyFM_Error)?.error) {
548
+ delete (subError.error as DyFM_Error).error;
549
+ }
550
+
551
+ if (subError.additionalContent) {
552
+ delete subError.additionalContent;
553
+ }
554
+ });
555
+
556
+ return error;
557
+ }
558
+
559
+ logShort(
560
+ title: string,
561
+ setLog?: boolean,
562
+ forceLog?: boolean,
563
+ /* logType?: DyFM_Log_Type, */
564
+ ): void {
565
+ if (this.___logged && !forceLog) {
566
+ DyFM_Log.warn(`logShort: already logged (${this._errorCode})`);
567
+ return;
568
+ }
569
+
570
+ /* switch (logType) { */
571
+ DyFM_Log.testError(
572
+ title,
573
+ '\n ErrorCode:', this._errorCode,
574
+ '\n Message:', this._message?.replaceAll?.('\n', '\n '),
575
+ );
576
+
577
+ if (setLog) {
578
+ this.___logged = true;
579
+ }
580
+ }
581
+
582
+ warnShort(
583
+ title: string,
584
+ setLog?: boolean,
585
+ forceLog?: boolean,
586
+ ): void {
587
+ if (this.___logged && !forceLog) {
588
+ DyFM_Log.warn(`warnShort: already logged (${this._errorCode})`);
589
+ return;
590
+ }
591
+
592
+ DyFM_Log.testWarn(
593
+ title,
594
+ '\n ErrorCode:', this._errorCode,
595
+ '\n Message:', this._message?.replaceAll?.('\n', '\n '),
596
+ );
597
+
598
+ if (setLog) {
599
+ this.___logged = true;
600
+ }
601
+ }
602
+
603
+ logSimple(
604
+ title: string,
605
+ logAdditionalContent?: boolean,
606
+ forceLog?: boolean,
607
+ logNodeModules?: boolean
608
+ ): void {
609
+ if (this.___logged && !forceLog) {
610
+ DyFM_Log.warn(`logSimple: already logged ${title} (${this._message}; ${this._errorCode})`);
611
+ return;
612
+ }
613
+
614
+ // remove node_modules from stack and replace with '...'
615
+ /* const stack: string = this.stack?.split?.('\n').map((line: string): string => {
616
+ if (line.includes('node_modules')) {
617
+ return '...';
618
+ }
619
+ return line;
620
+ }).filter((line: string, index: number, array: string[]): boolean => {
621
+ if (line === '...' && index < array.length - 1 && array[index + 1] === '...') {
622
+ return false;
623
+ }
624
+ return true;
625
+ }).join('\n'); */
626
+
627
+ DyFM_Log.H_error(
628
+ title,
629
+ `\n${DyFM_Log.errorStyle}ErrorCode:`, this._errorCode,
630
+ `\n${DyFM_Log.errorStyle}${DyFM_LogStyle.bold}Message:`,
631
+ this._message?.replaceAll?.('\n', '\n '),
632
+ `\n\n${DyFM_LogStyle.reset}${DyFM_Log.errorStyle}UserMessage:`,
633
+ this.__userMessage?.replaceAll?.('\n', '\n '),
634
+ this.__localStack ?
635
+ `\n${DyFM_Log.errorStyle}LocalStack:\n ` + this.__localStack : '',
636
+ `\n\n${DyFM_Log.errorStyle}Stack:`, this.stack?.replaceAll?.('\n', '\n '),
637
+ logAdditionalContent && this.additionalContent ?
638
+ `\n\n${DyFM_Log.errorStyle}AdditionalContent:\n` + this.additionalContent : '',
639
+ );
640
+
641
+ this.___logged = true;
642
+ }
643
+
644
+ /* static getSimpleLogContent(error: DyFM_Error): string {
645
+ return `\n${DyFM_Log.errorStyle}ErrorCode:`, this._errorCode,
646
+ `\n${DyFM_Log.errorStyle}${DyFM_LogStyle.bold}Message:`,
647
+ this._message?.replaceAll?.('\n', '\n '),
648
+ `\n\n${DyFM_LogStyle.reset}${DyFM_Log.errorStyle}UserMessage:`,
649
+ this.__userMessage?.replaceAll?.('\n', '\n '),
650
+ this.__localStack ?
651
+ `\n${DyFM_Log.errorStyle}LocalStack:\n ` + this.__localStack : '',
652
+ `\n\n${DyFM_Log.errorStyle}Stack:`, this.stack?.replaceAll?.('\n', '\n '),
653
+ logAdditionalContent && this.additionalContent ?
654
+ `\n\n${DyFM_Log.errorStyle}AdditionalContent:\n` + this.additionalContent : '' */
655
+
656
+ /**
657
+ * Checks if the error is parsable,
658
+ * simplifies the error,
659
+ * and returns the error as a string.
660
+ */
661
+ getParsable(): string {
662
+ try {
663
+ const flat = this.getErrorsFlat();
664
+ return JSON.stringify(flat);
665
+ } catch (error) {
666
+ DyFM_Log.error('Error getting parsable error', error);
667
+ return JSON.stringify(this.getErrorSimplified());
668
+ }
669
+ }
670
+
671
+ static logSimple(message: string, error: DyFM_AnyError): void {
672
+ if (error instanceof DyFM_Error) {
673
+ error.logSimple(message);
674
+ } else {
675
+ DyFM_Log.T_error(message, error);
676
+ }
677
+ }
678
+
679
+ static getErrorMessage(error: DyFM_AnyError): string {
680
+ return (error as DyFM_Error)?._message ??
681
+ (error as Error)?.message ??
682
+ ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?._message ??
683
+ ((error as DyFM_HttpErrorResponse)?.error as Error)?.message;
684
+ }
685
+
686
+ /**
687
+ * Returns the message of the error.
688
+ * Returns the userMessage if the message is not set.
689
+ * (prioritizes the message over the userMessage)
690
+ */
691
+ static getAnyMessage(error: DyFM_AnyError): string {
692
+ return this.getErrorMessage(error) ?? this.getUserMessage(error);
693
+ }
694
+
695
+ static getUserMessage(error: DyFM_AnyError): string {
696
+ return (error as DyFM_Error)?.__userMessage ??
697
+ ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?.__userMessage ??
698
+ (error as DyFM_Error_Settings)?.userMessage;
699
+ }
700
+
701
+ /**
702
+ * Returns the user message of the error.
703
+ * Returns the message if the userMessage is not set.
704
+ * (prioritizes the userMessage over the message)
705
+ */
706
+ static getAnyUserMessage(error: DyFM_AnyError): string {
707
+ return this.getUserMessage(error) ?? this.getErrorMessage(error);
708
+ }
709
+
710
+ /**
711
+ * A hiba szemantikus szöveges változata: saját üzenet + zárójelben a _messages lista első eleme
712
+ * (gyökér Dynamo Error üzenete), ha van lánc. Nem az object láncon járunk végig, a _messages-t használjuk.
713
+ */
714
+ static getSemanticMessage(error: DyFM_AnyError): string {
715
+ const ourMessage: string = this.getErrorMessage(error);
716
+ if (!this.isDyFMError(error)) {
717
+ return ourMessage;
718
+ }
719
+ const messages: string[] | undefined = (error as DyFM_Error)._messages;
720
+ const firstMessage: string | undefined =
721
+ messages && messages.length > 1 ? messages[0] : undefined;
722
+ if (firstMessage && firstMessage !== ourMessage) {
723
+ return `${ourMessage} (${firstMessage})`;
724
+ }
725
+ return ourMessage;
726
+ }
727
+
728
+ static getErrorStatus(error: DyFM_AnyError): number {
729
+ return (error as DyFM_Error)?.___status ??
730
+ (error as DyFM_HttpErrorResponse)?.status ??
731
+ ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?.___status ?? 500;
732
+ }
733
+
734
+ static getErrorCode(error: DyFM_AnyError): string {
735
+ return (error as DyFM_Error)?._errorCode ??
736
+ ((error as DyFM_HttpErrorResponse)?.error as DyFM_Error)?._errorCode ??
737
+ (error as any)?.errorCode ??
738
+ (error as any)?.error?.errorCode ??
739
+ (error as any)?.code ??
740
+ (error as any)?.error?.code;
741
+ }
742
+
743
+ static getErrorStack(error: DyFM_AnyError): string {
744
+ return (error as DyFM_Error)?.stack ??
745
+ ((error as DyFM_HttpErrorResponse)?.error as DyFM_NonHttpError)?.stack;
746
+ }
747
+
748
+ static isDyFMError(error: any): error is DyFM_Error {
749
+ return (error as DyFM_Error)?.flag?.includes('DYNAMO');
750
+ }
751
+
752
+ static isAnyDyFMError(error: any): error is DyFM_AnyError {
753
+ return this.isDyFMError(error) ||
754
+ (error as DyFM_HttpErrorResponse)?.name === DyFM_httpErrorResponse_name ||
755
+ error instanceof Error;
756
+ }
757
+
758
+ static deleteErrorContent(error: DyFM_Error): void {
759
+ delete error.confidentialContent;
760
+ delete error.additionalContent;
761
+ delete error.error;
762
+ delete error.errors;
763
+ delete error.stack;
764
+ }
765
+
766
+ static getStatusText(status: number): string {
767
+ switch (status) {
768
+ case 100:
769
+ return 'Continue';
770
+ case 101:
771
+ return 'Switching Protocols';
772
+ case 102:
773
+ return 'Processing';
774
+ case 103:
775
+ return 'Early Hints';
776
+
777
+ case 200:
778
+ return 'OK';
779
+ case 201:
780
+ return 'Created';
781
+ case 202:
782
+ return 'Accepted';
783
+ case 203:
784
+ return 'Non-Authoritative Information';
785
+ case 204:
786
+ return 'No Content';
787
+ case 205:
788
+ return 'Reset Content';
789
+ case 206:
790
+ return 'Partial Content';
791
+ case 207:
792
+ return 'Multi-Status';
793
+ case 208:
794
+ return 'Already Reported';
795
+ case 226:
796
+ return 'IM Used';
797
+
798
+ case 300:
799
+ return 'Multiple Choices';
800
+ case 301:
801
+ return 'Moved Permanently';
802
+ case 302:
803
+ return 'Found';
804
+ case 303:
805
+ return 'See Other';
806
+ case 304:
807
+ return 'Not Modified';
808
+ case 305:
809
+ return 'Use Proxy';
810
+ case 306:
811
+ return 'Switch Proxy';
812
+ case 307:
813
+ return 'Temporary Redirect';
814
+ case 308:
815
+ return 'Permanent Redirect';
816
+
817
+ case 400:
818
+ return 'Bad Request';
819
+ case 401:
820
+ return 'Unauthorized';
821
+ case 402:
822
+ return 'Payment Required';
823
+ case 403:
824
+ return 'Forbidden';
825
+ case 404:
826
+ return 'Not Found';
827
+ case 405:
828
+ return 'Method Not Allowed';
829
+ case 406:
830
+ return 'Not Acceptable';
831
+ case 407:
832
+ return 'Proxy Authentication Required';
833
+ case 408:
834
+ return 'Request Timeout';
835
+ case 409:
836
+ return 'Conflict';
837
+ case 410:
838
+ return 'Gone';
839
+ case 411:
840
+ return 'Length Required';
841
+ case 412:
842
+ return 'Precondition Failed';
843
+ case 413:
844
+ return 'Payload Too Large';
845
+ case 414:
846
+ return 'URI Too Long';
847
+ case 415:
848
+ return 'Unsupported Media Type';
849
+ case 416:
850
+ return 'Range Not Satisfiable';
851
+ case 417:
852
+ return 'Expectation Failed';
853
+ case 418:
854
+ return "I'm a teapot";
855
+ case 421:
856
+ return 'Misdirected Request';
857
+ case 422:
858
+ return 'Unprocessable Entity';
859
+ case 423:
860
+ return 'Locked';
861
+ case 424:
862
+ return 'Failed Dependency';
863
+ case 425:
864
+ return 'Too Early';
865
+ case 426:
866
+ return 'Upgrade Required';
867
+ case 428:
868
+ return 'Precondition Required';
869
+ case 429:
870
+ return 'Too Many Requests';
871
+ case 431:
872
+ return 'Request Header Fields Too Large';
873
+ case 451:
874
+ return 'Unavailable For Legal Reasons';
875
+
876
+ case 500:
877
+ return 'Internal Server Error';
878
+ case 501:
879
+ return 'Not Implemented';
880
+ case 502:
881
+ return 'Bad Gateway';
882
+ case 503:
883
+ return 'Service Unavailable';
884
+ case 504:
885
+ return 'Gateway Timeout';
886
+ case 505:
887
+ return 'HTTP Version Not Supported';
888
+ case 506:
889
+ return 'Variant Also Negotiates';
890
+ case 507:
891
+ return 'Insufficient Storage';
892
+ case 508:
893
+ return 'Loop Detected';
894
+ case 510:
895
+ return 'Not Extended';
896
+ case 511:
897
+ return 'Network Authentication Required';
898
+
899
+ default:
900
+ return 'Unknown';
901
+ }
902
+ }
903
+ }
904
+
905
+ /*
906
+
907
+ // //
908
+ // RESPONSE STATUS //
909
+ // //
910
+
911
+ 1XX informational response
912
+
913
+ 100 Continue
914
+ 101 Switching Protocols
915
+ 102 Processing
916
+ 103 Early Hints
917
+
918
+
919
+ 2XX success
920
+
921
+ 200 OK
922
+ 201 Created
923
+ 202 Accepted
924
+ 203 Non-Authoritative Information
925
+ 204 No Content
926
+ 205 Reset Content
927
+ 206 Partial Content
928
+ 207 Multi-Status
929
+ 208 Already Reported
930
+ 226 IM Used
931
+
932
+
933
+ 3XX redirection
934
+
935
+ 300 Multiple Choices
936
+ 301 Moved Permanently
937
+ 302 Found
938
+ 303 See Other
939
+ 304 Not Modified
940
+ 305 Use Proxy
941
+ 306 Switch Proxy
942
+ 307 Temporary Redirect
943
+ 308 Permanent Redirect
944
+
945
+
946
+ 4XX client n network errors
947
+
948
+ 400 Bad Request
949
+ 401 Unauthorized
950
+ 402 Payment Required
951
+ 403 Forbidden
952
+ 404 Not Found
953
+ 405 Method Not Allowed
954
+ 406 Not Acceptable
955
+ 407 Proxy Authentication Required
956
+ 408 Request Timeout
957
+ 409 Conflict
958
+ 410 Gone
959
+ 411 Length Required
960
+ 412 Precondition Failed
961
+ 413 Payload Too Large
962
+ 414 URI Too Long
963
+ 415 Unsupported Media Type
964
+ 416 Range Not Satisfiable
965
+ 417 Expectation Failed
966
+ 418 I'm a teapot
967
+ 421 Misdirected Request
968
+ 422 Unprocessable Entity
969
+ 423 Locked
970
+ 424 Failed Dependency
971
+ 425 Too Early
972
+ 426 Upgrade Required
973
+ 428 Precondition Required
974
+ 429 Too Many Requests
975
+ 431 Request Header Fields Too Large
976
+ 451 Unavailable For Legal Reasons
977
+
978
+
979
+ 5XX server errors
980
+
981
+ 500 Internal Server Error
982
+ 501 Not Implemented
983
+ 502 Bad Gateway
984
+ 503 Service Unavailable
985
+ 504 Gateway Timeout
986
+ 505 HTTP Version Not Supported
987
+ 506 Variant Also Negotiates
988
+ 507 Insufficient Storage
989
+ 508 Loop Detected
990
+ 510 Not Extended
991
+ 511 Network Authentication Required
992
+
993
+
994
+ Unofficial codes
995
+
996
+ 103 Checkpoint
997
+
998
+ 218 This is fine (Apache Web Server)
999
+
1000
+ 419 Page Expired (Laravel Framework)
1001
+ 420 Enhance Your Calm (Twitter)
1002
+ 430 Request Header Fields Too Large (Shopify)
1003
+ 440 Login Time-out
1004
+ 444 No Response
1005
+ 449 Retry With
1006
+ 450 Blocked by Windows Parental Controls (Microsoft)
1007
+ 451 Redirect
1008
+ 494 Request header too large
1009
+ 495 SSL Certificate Error
1010
+ 496 SSL Certificate Required
1011
+ 497 HTTP Request Sent to HTTPS Port
1012
+ 498 Invalid Token (Esri)
1013
+ 499 Client Closed Request
1014
+ 499 Token Required (Esri)
1015
+
1016
+ 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)
1017
+ 520 Web Server Returned an any Error
1018
+ 521 Web Server Is Down
1019
+ 522 Connection Timed Out
1020
+ 523 Origin Is Unreachable
1021
+ 524 A Timeout Occurred
1022
+ 525 SSL Handshake Failed
1023
+ 526 Invalid SSL Certificate
1024
+ 527 Railgun Error
1025
+ 529 Site is overloaded
1026
+ 530 Site is frozen
1027
+ 598 (Informal convention) Network read timeout error
1028
+
1029
+
1030
+
1031
+ 530
1032
+
1033
+ 460
1034
+ 463
1035
+
1036
+ */
1037
+
1038
+
1039
+
1040
+
1041
+ /**
1042
+ * Returns the average of two numbers.
1043
+ *
1044
+ * @remarks
1045
+ * This method is part of the {@link core-library#Statistics | Statistics subsystem}.
1046
+ *
1047
+ * @param x - The first input number
1048
+ * @param y - The second input number
1049
+ * @returns The arithmetic mean of `x` and `y`
1050
+ *
1051
+ * @beta
1052
+ * @returns true if the specified tag is surrounded with `{`
1053
+ * and `}` characters.
1054
+ *
1055
+ * @example
1056
+ * Prints "true" for `{@link}` but "false" for `@internal`:
1057
+ * ```ts
1058
+ * console.log(isInlineTag('{@link}'));
1059
+ * console.log(isInlineTag('@internal'));
1060
+ * ```
1061
+ *
1062
+ *
1063
+ * @alpha
1064
+ * v
1065
+ * sadfas d
1066
+ * fs
1067
+ * daf
1068
+ * d as
1069
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1070
+ * a
1071
+ * @beta
1072
+ * v
1073
+ * sadfas d
1074
+ * fs
1075
+ * daf
1076
+ * d as
1077
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1078
+ * b
1079
+ * @decorator
1080
+ * v
1081
+ * sadfas d
1082
+ * fs
1083
+ * daf
1084
+ * d as
1085
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1086
+ * dc
1087
+ * @deprecated
1088
+ * v
1089
+ * sadfas d
1090
+ * fs
1091
+ * daf
1092
+ * d as
1093
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1094
+ * dp
1095
+ * @defaultValue
1096
+ * v
1097
+ * sadfas d
1098
+ * fs
1099
+ * daf
1100
+ * d as
1101
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1102
+ * dv
1103
+ * @eventProperty
1104
+ * v
1105
+ * sadfas d
1106
+ * fs
1107
+ * daf
1108
+ * d as
1109
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1110
+ * ep
1111
+ * @example
1112
+ * v
1113
+ * sadfas d
1114
+ * fs
1115
+ * daf
1116
+ * d as
1117
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1118
+ * ex
1119
+ * @experimental
1120
+ * v
1121
+ * sadfas d
1122
+ * fs
1123
+ * daf
1124
+ * d as
1125
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1126
+ * exp
1127
+ * @inheritDoc
1128
+ * v
1129
+ * sadfas d
1130
+ * fs
1131
+ * daf
1132
+ * d as
1133
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1134
+ * in
1135
+ * @internal
1136
+ * v
1137
+ * sadfas d
1138
+ * fs
1139
+ * daf
1140
+ * d as
1141
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1142
+ * int
1143
+ * @label
1144
+ * v
1145
+ * sadfas d
1146
+ * fs
1147
+ * daf
1148
+ * d as
1149
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1150
+ * lab
1151
+ * @link
1152
+ * v
1153
+ * sadfas d
1154
+ * fs
1155
+ * daf
1156
+ * d as
1157
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1158
+ * li
1159
+ * @override
1160
+ * v
1161
+ * sadfas d
1162
+ * fs
1163
+ * daf
1164
+ * d as
1165
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1166
+ * v
1167
+ * sadfas d
1168
+ * fs
1169
+ * daf
1170
+ * d as
1171
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1172
+ * ov
1173
+ * @packageDocumentation
1174
+ * v
1175
+ * sadfas d
1176
+ * fs
1177
+ * daf
1178
+ * d as
1179
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1180
+ * pad
1181
+ * @param
1182
+ * v
1183
+ * sadfas d
1184
+ * fs
1185
+ * daf
1186
+ * d as
1187
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1188
+ * par
1189
+ * @privateRemarks
1190
+ * v
1191
+ * sadfas d
1192
+ * fs
1193
+ * daf
1194
+ * d as
1195
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1196
+ * pr
1197
+ * @public
1198
+ * v
1199
+ * sadfas d
1200
+ * fs
1201
+ * daf
1202
+ * d as
1203
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1204
+ * p
1205
+ * @readonly
1206
+ * v
1207
+ * sadfas d
1208
+ * fs
1209
+ * daf
1210
+ * d as
1211
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1212
+ * re
1213
+ * @remarks
1214
+ * v
1215
+ * sadfas d
1216
+ * fs
1217
+ * daf
1218
+ * d as
1219
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1220
+ * rem
1221
+ * @returns
1222
+ * v
1223
+ * sadfas d
1224
+ * fs
1225
+ * daf
1226
+ * d as
1227
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1228
+ * ret
1229
+ * @sealed
1230
+ * v
1231
+ * sadfas d
1232
+ * fs
1233
+ * daf
1234
+ * d as
1235
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1236
+ * sea
1237
+ * @see
1238
+ * v
1239
+ * sadfas d
1240
+ * fs
1241
+ * daf
1242
+ * d as
1243
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1244
+ * see
1245
+ * @throws
1246
+ * v
1247
+ * sadfas d
1248
+ * fs
1249
+ * daf
1250
+ * d as
1251
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1252
+ * th
1253
+ * @typeParam
1254
+ * v
1255
+ * sadfas d
1256
+ * fs
1257
+ * daf
1258
+ * d as
1259
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1260
+ * typ
1261
+ * @virtual
1262
+ * v
1263
+ * sadfas d
1264
+ * fs
1265
+ * daf
1266
+ * d as
1267
+ * dafs // asd"" sa `sadf ` sadf asd******* asdf asd"" f asd
1268
+ *
1269
+ *
1270
+ * @see {@link http://example.com/@internal LINK}
1271
+ * @see {@link http://example.com/@internal http://example.com/@internal}
1272
+ */
1273
+ export interface TestDocumentationComments {}
1274
+