@futdevpro/fsm-dynamo 1.16.33 → 1.16.35

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