@futdevpro/fsm-dynamo 1.15.18 → 1.15.20

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 (526) 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/.dynamo/pipeline.cicd.config.json +128 -128
  15. package/.github/workflows/main.yml +433 -433
  16. package/.vscode/settings.json +11 -11
  17. package/LICENSE +21 -21
  18. package/__documentations/2026-06-01-fr047-fc-foundation.md +48 -0
  19. package/build/_models/data-models/errors.data-model.d.ts +43 -0
  20. package/build/_models/data-models/errors.data-model.d.ts.map +1 -1
  21. package/build/_models/data-models/errors.data-model.js +30 -0
  22. package/build/_models/data-models/errors.data-model.js.map +1 -1
  23. package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
  24. package/eslint.config.js +4 -4
  25. package/nodemon.json +22 -22
  26. package/package.json +11 -11
  27. package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
  28. package/scripts/crypto/README.md +113 -113
  29. package/scripts/crypto/demo-crypto-stability.js +120 -120
  30. package/scripts/crypto/stress-test-crypto.js +379 -379
  31. package/scripts/run-coverage-tests.js +24 -24
  32. package/spec/support/helpers/ts-node-helper.js +9 -9
  33. package/spec/support/jasmine.coverage.json +23 -23
  34. package/spec/support/jasmine.json +24 -24
  35. package/src/_collections/constants/data-sizes.const.ts +40 -40
  36. package/src/_collections/constants/error-defaults.const.ts +20 -20
  37. package/src/_collections/constants/global-settings.const.ts +24 -24
  38. package/src/_collections/constants/numbers.const.ts +40 -40
  39. package/src/_collections/constants/times.const.ts +45 -45
  40. package/src/_collections/utils/array.util.spec.ts +306 -306
  41. package/src/_collections/utils/array.util.ts +813 -813
  42. package/src/_collections/utils/async.util.spec.ts +354 -354
  43. package/src/_collections/utils/async.util.ts +197 -197
  44. package/src/_collections/utils/data.util.spec.ts +345 -345
  45. package/src/_collections/utils/data.util.ts +226 -226
  46. package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
  47. package/src/_collections/utils/json-error-helper.util.ts +301 -301
  48. package/src/_collections/utils/log.util.spec.ts +975 -975
  49. package/src/_collections/utils/log.util.ts +665 -665
  50. package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
  51. package/src/_collections/utils/math/box-bounds.util.ts +183 -183
  52. package/src/_collections/utils/math/math.util.spec.ts +94 -94
  53. package/src/_collections/utils/math/math.util.ts +141 -141
  54. package/src/_collections/utils/math/random.util.spec.ts +82 -82
  55. package/src/_collections/utils/math/random.util.ts +139 -139
  56. package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
  57. package/src/_collections/utils/math/trigonometry.util.ts +102 -102
  58. package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
  59. package/src/_collections/utils/math/vector2.util.ts +653 -653
  60. package/src/_collections/utils/object.util.spec.ts +646 -646
  61. package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
  62. package/src/_collections/utils/regex/password-regex.util.ts +65 -65
  63. package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
  64. package/src/_collections/utils/regex/regex.util.ts +6 -6
  65. package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
  66. package/src/_collections/utils/regex/username-regex.util.ts +35 -35
  67. package/src/_collections/utils/round-list.util.spec.ts +79 -79
  68. package/src/_collections/utils/round-list.util.ts +162 -162
  69. package/src/_collections/utils/stack.util.spec.ts +372 -372
  70. package/src/_collections/utils/stack.util.ts +164 -164
  71. package/src/_collections/utils/string-case.util.spec.ts +441 -441
  72. package/src/_collections/utils/string-case.util.ts +362 -362
  73. package/src/_collections/utils/string.util.spec.ts +975 -975
  74. package/src/_collections/utils/string.util.ts +449 -449
  75. package/src/_collections/utils/time.util.spec.ts +50 -50
  76. package/src/_collections/utils/time.util.ts +481 -481
  77. package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
  78. package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
  79. package/src/_collections/utils/utilities.util.spec.ts +201 -201
  80. package/src/_collections/utils/utilities.util.ts +68 -68
  81. package/src/_collections/utils/uuid.util.spec.ts +30 -30
  82. package/src/_collections/utils/uuid.util.ts +50 -50
  83. package/src/_enums/basic-property-type.enum.ts +20 -20
  84. package/src/_enums/data-model-type.enum.ts +29 -29
  85. package/src/_enums/environment-flag.enum.ts +28 -28
  86. package/src/_enums/error-level.enum.ts +28 -28
  87. package/src/_enums/http/http-call-type.enum.ts +43 -43
  88. package/src/_enums/http/http-event-type.enum.ts +40 -40
  89. package/src/_enums/http/http-response-type.enum.ts +18 -18
  90. package/src/_enums/log-style.enum.ts +44 -44
  91. package/src/_enums/server-connection-status.enum.ts +6 -6
  92. package/src/_enums/time/day-of-week.enum.ts +55 -55
  93. package/src/_enums/time/month.enum.ts +25 -25
  94. package/src/_enums/time/relative-date.enum.ts +24 -24
  95. package/src/_models/control-models/data-model-params.control-model.spec.ts +85 -85
  96. package/src/_models/control-models/data-model-params.control-model.ts +300 -300
  97. package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
  98. package/src/_models/control-models/data-property-params.control-model.ts +201 -201
  99. package/src/_models/control-models/error.control-model.spec.ts +912 -912
  100. package/src/_models/control-models/error.control-model.ts +1215 -1215
  101. package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
  102. package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
  103. package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
  104. package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
  105. package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
  106. package/src/_models/control-models/http/http-response.model-base.ts +57 -57
  107. package/src/_models/control-models/poll.control-model.spec.ts +63 -63
  108. package/src/_models/control-models/poll.control-model.ts +151 -151
  109. package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
  110. package/src/_models/control-models/range-value.control-model.ts +289 -289
  111. package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
  112. package/src/_models/control-models/server-status.control-model.ts +85 -85
  113. package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
  114. package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
  115. package/src/_models/data-models/errors.data-model.spec.ts +71 -71
  116. package/src/_models/data-models/errors.data-model.ts +148 -91
  117. package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
  118. package/src/_models/data-models/metadata.data-model.ts +128 -128
  119. package/src/_models/interfaces/box-bounds.interface.ts +7 -7
  120. package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
  121. package/src/_models/interfaces/environment/global-settings.interface.ts +47 -47
  122. package/src/_models/interfaces/error-defaults.interface.ts +11 -11
  123. package/src/_models/interfaces/paged.interface.ts +12 -12
  124. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  125. package/src/_models/interfaces/route-settings.interface.ts +15 -15
  126. package/src/_models/interfaces/search-query.interface.ts +23 -23
  127. package/src/_models/interfaces/search-result.interface.ts +5 -5
  128. package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
  129. package/src/_models/interfaces/vector2.interface.ts +20 -20
  130. package/src/_models/types/db-filter.type.ts +110 -110
  131. package/src/_models/types/db-sort.type.ts +4 -4
  132. package/src/_models/types/ds-filter.type.ts +68 -68
  133. package/src/_models/types/ds-sort.type.ts +21 -21
  134. package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
  135. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
  136. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
  137. package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
  138. package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
  139. package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
  140. package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
  141. package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
  142. package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
  143. package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
  144. package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
  145. package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
  146. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
  147. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
  148. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
  149. package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
  150. package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
  151. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
  152. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
  153. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
  154. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
  155. package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
  156. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +81 -81
  157. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
  158. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
  159. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
  160. package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
  161. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
  162. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
  163. package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
  164. package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
  165. package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
  166. package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
  167. package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
  168. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +34 -34
  169. package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
  170. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
  171. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
  172. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
  173. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
  174. package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
  175. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +99 -99
  176. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
  177. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
  178. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
  179. package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
  180. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
  181. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
  182. package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
  183. package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
  184. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +53 -53
  185. package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
  186. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
  187. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
  188. package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
  189. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
  190. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
  191. package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
  192. package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
  193. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +252 -252
  194. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
  195. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
  196. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
  197. package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
  198. package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
  199. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
  200. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
  201. package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
  202. package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
  203. package/src/_modules/ai/index.ts +27 -27
  204. package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
  205. package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
  206. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
  207. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
  208. package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
  209. package/src/_modules/ci-tools/index.ts +8 -8
  210. package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
  211. package/src/_modules/crypto/index.ts +13 -13
  212. package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
  213. package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
  214. package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
  215. package/src/_modules/custom-data/index.ts +10 -10
  216. package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
  217. package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
  218. package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +445 -445
  219. package/src/_modules/data-handler/_models/data-handler.control-model.ts +459 -459
  220. package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
  221. package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
  222. package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
  223. package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
  224. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
  225. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
  226. package/src/_modules/data-handler/index.ts +6 -6
  227. package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
  228. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
  229. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
  230. package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
  231. package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
  232. package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
  233. package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
  234. package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
  235. package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
  236. package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
  237. package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
  238. package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
  239. package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
  240. package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
  241. package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
  242. package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
  243. package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
  244. package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
  245. package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
  246. package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
  247. package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
  248. package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
  249. package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
  250. package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
  251. package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
  252. package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
  253. package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
  254. package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
  255. package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
  256. package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
  257. package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
  258. package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
  259. package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
  260. package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
  261. package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
  262. package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
  263. package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
  264. package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
  265. package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
  266. package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
  267. package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
  268. package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
  269. package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
  270. package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
  271. package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
  272. package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
  273. package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
  274. package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
  275. package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
  276. package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
  277. package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
  278. package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
  279. package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
  280. package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
  281. package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
  282. package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
  283. package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
  284. package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
  285. package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
  286. package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
  287. package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
  288. package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
  289. package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
  290. package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
  291. package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
  292. package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
  293. package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
  294. package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
  295. package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
  296. package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
  297. package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
  298. package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
  299. package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
  300. package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
  301. package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
  302. package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
  303. package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
  304. package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
  305. package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
  306. package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
  307. package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
  308. package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
  309. package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
  310. package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
  311. package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
  312. package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
  313. package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
  314. package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
  315. package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
  316. package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
  317. package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
  318. package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
  319. package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
  320. package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
  321. package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
  322. package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
  323. package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
  324. package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
  325. package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
  326. package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
  327. package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
  328. package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
  329. package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
  330. package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
  331. package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
  332. package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
  333. package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
  334. package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
  335. package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
  336. package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
  337. package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
  338. package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
  339. package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
  340. package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
  341. package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
  342. package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
  343. package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
  344. package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
  345. package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
  346. package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
  347. package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
  348. package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
  349. package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
  350. package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
  351. package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
  352. package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
  353. package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
  354. package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
  355. package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
  356. package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
  357. package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
  358. package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
  359. package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
  360. package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
  361. package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
  362. package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
  363. package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
  364. package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
  365. package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
  366. package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
  367. package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
  368. package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
  369. package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
  370. package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
  371. package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
  372. package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
  373. package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
  374. package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
  375. package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
  376. package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
  377. package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
  378. package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
  379. package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
  380. package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
  381. package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
  382. package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
  383. package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
  384. package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
  385. package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
  386. package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
  387. package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
  388. package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
  389. package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
  390. package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
  391. package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
  392. package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
  393. package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
  394. package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
  395. package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
  396. package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
  397. package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
  398. package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
  399. package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
  400. package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
  401. package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
  402. package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
  403. package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
  404. package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
  405. package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
  406. package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
  407. package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
  408. package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
  409. package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
  410. package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
  411. package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
  412. package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
  413. package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
  414. package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
  415. package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
  416. package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
  417. package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
  418. package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
  419. package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
  420. package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
  421. package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
  422. package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
  423. package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
  424. package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
  425. package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
  426. package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
  427. package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
  428. package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
  429. package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
  430. package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
  431. package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
  432. package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
  433. package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
  434. package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
  435. package/src/_modules/location/_collections/loc.util.ts +74 -74
  436. package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
  437. package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
  438. package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
  439. package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
  440. package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
  441. package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
  442. package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
  443. package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
  444. package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
  445. package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
  446. package/src/_modules/location/index.ts +22 -22
  447. package/src/_modules/messaging/README.md +279 -279
  448. package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
  449. package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
  450. package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
  451. package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
  452. package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
  453. package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
  454. package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
  455. package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
  456. package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
  457. package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
  458. package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
  459. package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
  460. package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
  461. package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
  462. package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
  463. package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
  464. package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
  465. package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
  466. package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
  467. package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
  468. package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
  469. package/src/_modules/messaging/_modules/agent/index.ts +8 -8
  470. package/src/_modules/messaging/index.ts +28 -28
  471. package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
  472. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
  473. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
  474. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
  475. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
  476. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
  477. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
  478. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
  479. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
  480. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
  481. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
  482. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
  483. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
  484. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
  485. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
  486. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
  487. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
  488. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
  489. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
  490. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
  491. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
  492. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
  493. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
  494. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
  495. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
  496. package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
  497. package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
  498. package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
  499. package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
  500. package/src/_modules/pipe/index.ts +30 -30
  501. package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
  502. package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
  503. package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
  504. package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +66 -66
  505. package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -172
  506. package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
  507. package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
  508. package/src/_modules/socket/index.ts +14 -14
  509. package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
  510. package/src/_modules/test/index.ts +5 -5
  511. package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
  512. package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
  513. package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
  514. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
  515. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
  516. package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
  517. package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
  518. package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
  519. package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
  520. package/src/_modules/usage/index.ts +11 -11
  521. package/src/index.ts +102 -102
  522. package/tsconfig.app.json +12 -12
  523. package/tsconfig.json +31 -31
  524. package/tsconfig.test.json +16 -16
  525. package/tslint.json +153 -153
  526. package/pipeline.cicd.config.json +0 -128
@@ -1,302 +1,302 @@
1
- /**
2
- * JSON Error Handling Helper Utilities
3
- * Provides enhanced error handling for JSON parsing operations
4
- *
5
- * @author FutDevPro
6
- * @version 1.0.0
7
- */
8
-
9
- /**
10
- * Interface for line information extracted from JSON parsing errors
11
- */
12
- export interface JsonErrorLineInfo {
13
- /** The line number where the error occurred */
14
- lineNumber: number;
15
- /** Array of context lines around the error (typically ±5 lines) */
16
- contextLines: string[];
17
- /** The character position within the line where the error occurred */
18
- characterPosition: number;
19
- }
20
-
21
- /**
22
- * Helper class for JSON error handling and enhanced parsing
23
- */
24
- export class DyFM_JsonErrorHelper {
25
-
26
- /**
27
- * Extracts line information from JSON parsing error messages
28
- * Parses error messages like "Expected property name or '}' in JSON at position 10"
29
- * and returns the problematic line with surrounding context
30
- *
31
- * @param errorMessage - The JSON parsing error message
32
- * @param jsonInput - The original JSON input string
33
- * @param contextLines - Number of context lines to show before and after the error (default: 5)
34
- * @returns Object containing line number, context lines, and character position, or null if parsing fails
35
- *
36
- * @example
37
- * ```ts
38
- * const lineInfo = DyFM_JsonErrorHelper.extractLineInfoFromJsonError('Expected property name or "}" in JSON at position 10', '{"name": "John", "age": 30}', 5);
39
- * console.log(lineInfo); // { lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }
40
- * ```
41
- */
42
- static extractLineInfoFromJsonError(
43
- errorMessage: string,
44
- jsonInput: string,
45
- contextLines: number = 5
46
- ): JsonErrorLineInfo | null {
47
- try {
48
- // Extract position from various error message formats
49
- let positionMatch = errorMessage.match(/at position (\d+)/);
50
- if (!positionMatch) {
51
- // Handle "Unexpected end of JSON input at position 17" format
52
- positionMatch = errorMessage.match(/Unexpected end of JSON input at position (\d+)/);
53
- }
54
- if (!positionMatch) {
55
- // Handle "Unexpected token" format which might include position
56
- positionMatch = errorMessage.match(/position (\d+)/);
57
- }
58
-
59
- if (!positionMatch) {
60
- // For "Unexpected token" errors without explicit position, try to find it from the token
61
- const tokenMatch = errorMessage.match(/Unexpected token '(.)'|Unexpected token (.)/);
62
- if (tokenMatch && jsonInput.includes('\n')) {
63
- const token = tokenMatch[1] || tokenMatch[2];
64
- if (token) {
65
- // Find the first occurrence of this token (this is a simple heuristic)
66
- const tokenPosition = jsonInput.indexOf(token);
67
- if (tokenPosition !== -1) {
68
- return this.createLineInfoFromPosition(jsonInput, tokenPosition, contextLines);
69
- }
70
- }
71
- }
72
- return null;
73
- }
74
-
75
- const position = parseInt(positionMatch[1], 10);
76
- if (isNaN(position) || position < 0) {
77
- return null;
78
- }
79
-
80
- // For end-of-input errors, position might be at or beyond the string length
81
- // Allow position to be equal to jsonInput.length for end-of-input cases
82
- if (position > jsonInput.length) {
83
- return null;
84
- }
85
-
86
- return this.createLineInfoFromPosition(jsonInput, position, contextLines);
87
- } catch (error) {
88
- // If we can't parse the error, return null to fall back to simple preview
89
- return null;
90
- }
91
- }
92
-
93
- /**
94
- * Helper method to create line info from a character position
95
- * @param jsonInput - The original JSON input string
96
- * @param position - The character position where the error occurred
97
- * @param contextLines - Number of context lines to show before and after the error (default: 5)
98
- * @returns Object containing line number, context lines, and character position
99
- *
100
- * @example
101
- * ```ts
102
- * const lineInfo = DyFM_JsonErrorHelper.createLineInfoFromPosition('{"name": "John", "age": 30}', 10, 5);
103
- * console.log(lineInfo); // { lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }
104
- * ```
105
- */
106
- private static createLineInfoFromPosition(
107
- jsonInput: string,
108
- position: number,
109
- contextLines: number
110
- ): JsonErrorLineInfo {
111
- // Handle undefined or invalid input
112
- if (!jsonInput || typeof jsonInput !== 'string') {
113
- return {
114
- lineNumber: 1,
115
- contextLines: ['(invalid or empty input)'],
116
- characterPosition: 0
117
- };
118
- }
119
-
120
- // Split input into lines to find the line number
121
- const lines = jsonInput.split('\n');
122
- let currentPosition = 0;
123
- let lineNumber = 1;
124
- let characterPosition = 0;
125
-
126
- for (let i = 0; i < lines.length; i++) {
127
- const lineLength = lines[i].length;
128
- if (currentPosition + lineLength >= position) {
129
- lineNumber = i + 1;
130
- characterPosition = position - currentPosition;
131
- break;
132
- }
133
- currentPosition += lineLength + 1; // +1 for newline character
134
- }
135
-
136
- // If we didn't find the line in the loop, it's at the end
137
- if (characterPosition === 0 && lineNumber === 1) {
138
- lineNumber = lines.length;
139
- characterPosition = position - currentPosition;
140
- }
141
-
142
- // Ensure character position is not negative
143
- if (characterPosition < 0) {
144
- characterPosition = 0;
145
- }
146
-
147
- // Ensure line number is within bounds
148
- if (lineNumber > lines.length) {
149
- lineNumber = lines.length;
150
- }
151
-
152
- // Get surrounding context (±contextLines)
153
- const contextStart = Math.max(0, lineNumber - contextLines - 1);
154
- const contextEnd = Math.min(lines.length, lineNumber + contextLines);
155
- const contextLinesArray = lines.slice(contextStart, contextEnd);
156
-
157
- return {
158
- lineNumber,
159
- contextLines: contextLinesArray,
160
- characterPosition
161
- };
162
- }
163
-
164
- /**
165
- * Formats JSON error information for logging
166
- * Creates a formatted string showing the error location and context
167
- *
168
- * @param lineInfo - The line information extracted from the error
169
- * @param errorMessage - The original error message
170
- * @returns Formatted error string for logging
171
- *
172
- * @example
173
- * ```ts
174
- * const logLines = DyFM_JsonErrorHelper.formatJsonErrorForLogging({ lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }, 'Expected property name or "}" in JSON at position 10');
175
- * console.log(logLines); // [ 'JSON parsing failed: Expected property name or "}" in JSON at position 10', 'Error at line 1, character 10:', 'Context (1 lines):', ' 1: {"name": "John", "age": 30}' ]
176
- * ```
177
- */
178
- static formatJsonErrorForLogging(
179
- lineInfo: JsonErrorLineInfo,
180
- errorMessage: string
181
- ): string[] {
182
- const logLines: string[] = [];
183
-
184
- logLines.push(`JSON parsing failed: ${errorMessage}`);
185
- logLines.push(`Error at line ${lineInfo.lineNumber}, character ${lineInfo.characterPosition}:`);
186
- logLines.push(`Context (${lineInfo.contextLines.length} lines):`);
187
-
188
- // Calculate the starting line number for context
189
- const contextStartLine = Math.max(1, lineInfo.lineNumber - Math.floor(lineInfo.contextLines.length / 2));
190
-
191
- lineInfo.contextLines.forEach((line, index) => {
192
- const lineNum = contextStartLine + index;
193
- const marker = lineNum === lineInfo.lineNumber ? '>>> ' : ' ';
194
- const lineContent = line || '(empty line)';
195
- logLines.push(`${marker}${lineNum.toString().padStart(3)}: ${lineContent}`);
196
- });
197
-
198
- return logLines;
199
- }
200
-
201
- /**
202
- * Enhanced JSON.parse with detailed error reporting
203
- * Wraps JSON.parse with enhanced error handling that shows line context
204
- *
205
- * @param jsonString - The JSON string to parse
206
- * @param reviver - Optional reviver function for JSON.parse
207
- * @param contextLines - Number of context lines to show in error (default: 5)
208
- * @returns Parsed JSON object
209
- * @throws Error with detailed line information if parsing fails
210
- *
211
- * @example
212
- * ```ts
213
- * const json = '{"name": "John", "age": 30}';
214
- * const result = DyFM_JsonErrorHelper.parseJsonWithEnhancedError(json);
215
- * console.log(result); // { name: 'John', age: 30 }
216
- * ```
217
- */
218
- static parseJsonWithEnhancedError(
219
- jsonString: string,
220
- reviver?: (key: string, value: any) => any,
221
- contextLines: number = 2
222
- ): any {
223
- // Prevent infinite recursion and handle invalid input
224
- if (!jsonString || typeof jsonString !== 'string') {
225
- throw new Error(`Invalid JSON input: expected string, got ${typeof jsonString}`);
226
- }
227
-
228
- try {
229
- return JSON.parse(jsonString, reviver);
230
- } catch (error) {
231
- const errorMessage = error instanceof Error ? error.message : String(error);
232
- const originalJsonString = jsonString;
233
-
234
- // First try to extract line info from the original JSON
235
- let lineInfo = this.extractLineInfoFromJsonError(errorMessage, originalJsonString, contextLines);
236
-
237
- // If no line info was found and the JSON is on a single line, try formatting it
238
- if (!lineInfo && !originalJsonString.includes('\n')) {
239
- try {
240
- const formattedJson = this.formatJsonForBetterErrors(originalJsonString);
241
-
242
- // Try parsing the formatted JSON to get a new error with position info
243
- try {
244
- JSON.parse(formattedJson, reviver);
245
- } catch (formattedError) {
246
- const formattedErrorMessage = formattedError instanceof Error ? formattedError.message : String(formattedError);
247
- lineInfo = this.extractLineInfoFromJsonError(formattedErrorMessage, formattedJson, contextLines);
248
- }
249
- } catch (formatError) {
250
- // If formatting fails, skip enhanced error reporting
251
- lineInfo = null;
252
- }
253
- }
254
-
255
- if (lineInfo) {
256
- const formattedError = this.formatJsonErrorForLogging(lineInfo, errorMessage);
257
-
258
- throw new Error(`JSON parsing failed:\n${formattedError.join('\n')}`);
259
- } else {
260
- // Fallback to simple error if we can't extract line info
261
- throw new Error(`JSON parsing failed: ${errorMessage}`);
262
- }
263
- }
264
- }
265
-
266
- /**
267
- * Formats single-line JSON with line breaks for better error reporting
268
- * @param jsonString - The JSON string to format
269
- * @returns The formatted JSON string
270
- *
271
- * @example
272
- * ```ts
273
- * const json = '{"name": "John", "age": 30, "city": "New York"}';
274
- * const result = DyFM_JsonErrorHelper.formatJsonForBetterErrors(json);
275
- * console.log(result); // '{\n "name": "John",\n "age": 30,\n "city": "New York"\n}'
276
- * ```
277
- */
278
- private static formatJsonForBetterErrors(jsonString: string): string {
279
- if (!jsonString || typeof jsonString !== 'string') {
280
- return jsonString || '';
281
- }
282
-
283
- return jsonString
284
- .replace(/,/g, ',\n ')
285
- .replace(/{/g, '{\n ')
286
- .replace(/}/g, '\n}')
287
- .replace(/\[/g, '[\n ')
288
- .replace(/\]/g, '\n]')
289
- .replace(/\n\s*\n/g, '\n') // Remove double newlines
290
- .replace(/^\s+|\s+$/gm, function(match: string, offset: number, string: string): string {
291
- // Trim but preserve indentation structure
292
- if (!string || typeof string !== 'string') {
293
- return match;
294
- }
295
- const lines: string[] = string.slice(0, offset).split('\n');
296
- const depth: number = (string.slice(0, offset).match(/{|\[/g) || []).length -
297
- (string.slice(0, offset).match(/}|\]/g) || []).length;
298
-
299
- return ' '.repeat(Math.max(0, depth));
300
- });
301
- }
1
+ /**
2
+ * JSON Error Handling Helper Utilities
3
+ * Provides enhanced error handling for JSON parsing operations
4
+ *
5
+ * @author FutDevPro
6
+ * @version 1.0.0
7
+ */
8
+
9
+ /**
10
+ * Interface for line information extracted from JSON parsing errors
11
+ */
12
+ export interface JsonErrorLineInfo {
13
+ /** The line number where the error occurred */
14
+ lineNumber: number;
15
+ /** Array of context lines around the error (typically ±5 lines) */
16
+ contextLines: string[];
17
+ /** The character position within the line where the error occurred */
18
+ characterPosition: number;
19
+ }
20
+
21
+ /**
22
+ * Helper class for JSON error handling and enhanced parsing
23
+ */
24
+ export class DyFM_JsonErrorHelper {
25
+
26
+ /**
27
+ * Extracts line information from JSON parsing error messages
28
+ * Parses error messages like "Expected property name or '}' in JSON at position 10"
29
+ * and returns the problematic line with surrounding context
30
+ *
31
+ * @param errorMessage - The JSON parsing error message
32
+ * @param jsonInput - The original JSON input string
33
+ * @param contextLines - Number of context lines to show before and after the error (default: 5)
34
+ * @returns Object containing line number, context lines, and character position, or null if parsing fails
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const lineInfo = DyFM_JsonErrorHelper.extractLineInfoFromJsonError('Expected property name or "}" in JSON at position 10', '{"name": "John", "age": 30}', 5);
39
+ * console.log(lineInfo); // { lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }
40
+ * ```
41
+ */
42
+ static extractLineInfoFromJsonError(
43
+ errorMessage: string,
44
+ jsonInput: string,
45
+ contextLines: number = 5
46
+ ): JsonErrorLineInfo | null {
47
+ try {
48
+ // Extract position from various error message formats
49
+ let positionMatch = errorMessage.match(/at position (\d+)/);
50
+ if (!positionMatch) {
51
+ // Handle "Unexpected end of JSON input at position 17" format
52
+ positionMatch = errorMessage.match(/Unexpected end of JSON input at position (\d+)/);
53
+ }
54
+ if (!positionMatch) {
55
+ // Handle "Unexpected token" format which might include position
56
+ positionMatch = errorMessage.match(/position (\d+)/);
57
+ }
58
+
59
+ if (!positionMatch) {
60
+ // For "Unexpected token" errors without explicit position, try to find it from the token
61
+ const tokenMatch = errorMessage.match(/Unexpected token '(.)'|Unexpected token (.)/);
62
+ if (tokenMatch && jsonInput.includes('\n')) {
63
+ const token = tokenMatch[1] || tokenMatch[2];
64
+ if (token) {
65
+ // Find the first occurrence of this token (this is a simple heuristic)
66
+ const tokenPosition = jsonInput.indexOf(token);
67
+ if (tokenPosition !== -1) {
68
+ return this.createLineInfoFromPosition(jsonInput, tokenPosition, contextLines);
69
+ }
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+
75
+ const position = parseInt(positionMatch[1], 10);
76
+ if (isNaN(position) || position < 0) {
77
+ return null;
78
+ }
79
+
80
+ // For end-of-input errors, position might be at or beyond the string length
81
+ // Allow position to be equal to jsonInput.length for end-of-input cases
82
+ if (position > jsonInput.length) {
83
+ return null;
84
+ }
85
+
86
+ return this.createLineInfoFromPosition(jsonInput, position, contextLines);
87
+ } catch (error) {
88
+ // If we can't parse the error, return null to fall back to simple preview
89
+ return null;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Helper method to create line info from a character position
95
+ * @param jsonInput - The original JSON input string
96
+ * @param position - The character position where the error occurred
97
+ * @param contextLines - Number of context lines to show before and after the error (default: 5)
98
+ * @returns Object containing line number, context lines, and character position
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const lineInfo = DyFM_JsonErrorHelper.createLineInfoFromPosition('{"name": "John", "age": 30}', 10, 5);
103
+ * console.log(lineInfo); // { lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }
104
+ * ```
105
+ */
106
+ private static createLineInfoFromPosition(
107
+ jsonInput: string,
108
+ position: number,
109
+ contextLines: number
110
+ ): JsonErrorLineInfo {
111
+ // Handle undefined or invalid input
112
+ if (!jsonInput || typeof jsonInput !== 'string') {
113
+ return {
114
+ lineNumber: 1,
115
+ contextLines: ['(invalid or empty input)'],
116
+ characterPosition: 0
117
+ };
118
+ }
119
+
120
+ // Split input into lines to find the line number
121
+ const lines = jsonInput.split('\n');
122
+ let currentPosition = 0;
123
+ let lineNumber = 1;
124
+ let characterPosition = 0;
125
+
126
+ for (let i = 0; i < lines.length; i++) {
127
+ const lineLength = lines[i].length;
128
+ if (currentPosition + lineLength >= position) {
129
+ lineNumber = i + 1;
130
+ characterPosition = position - currentPosition;
131
+ break;
132
+ }
133
+ currentPosition += lineLength + 1; // +1 for newline character
134
+ }
135
+
136
+ // If we didn't find the line in the loop, it's at the end
137
+ if (characterPosition === 0 && lineNumber === 1) {
138
+ lineNumber = lines.length;
139
+ characterPosition = position - currentPosition;
140
+ }
141
+
142
+ // Ensure character position is not negative
143
+ if (characterPosition < 0) {
144
+ characterPosition = 0;
145
+ }
146
+
147
+ // Ensure line number is within bounds
148
+ if (lineNumber > lines.length) {
149
+ lineNumber = lines.length;
150
+ }
151
+
152
+ // Get surrounding context (±contextLines)
153
+ const contextStart = Math.max(0, lineNumber - contextLines - 1);
154
+ const contextEnd = Math.min(lines.length, lineNumber + contextLines);
155
+ const contextLinesArray = lines.slice(contextStart, contextEnd);
156
+
157
+ return {
158
+ lineNumber,
159
+ contextLines: contextLinesArray,
160
+ characterPosition
161
+ };
162
+ }
163
+
164
+ /**
165
+ * Formats JSON error information for logging
166
+ * Creates a formatted string showing the error location and context
167
+ *
168
+ * @param lineInfo - The line information extracted from the error
169
+ * @param errorMessage - The original error message
170
+ * @returns Formatted error string for logging
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * const logLines = DyFM_JsonErrorHelper.formatJsonErrorForLogging({ lineNumber: 1, contextLines: [ '{"name": "John", "age": 30}' ], characterPosition: 10 }, 'Expected property name or "}" in JSON at position 10');
175
+ * console.log(logLines); // [ 'JSON parsing failed: Expected property name or "}" in JSON at position 10', 'Error at line 1, character 10:', 'Context (1 lines):', ' 1: {"name": "John", "age": 30}' ]
176
+ * ```
177
+ */
178
+ static formatJsonErrorForLogging(
179
+ lineInfo: JsonErrorLineInfo,
180
+ errorMessage: string
181
+ ): string[] {
182
+ const logLines: string[] = [];
183
+
184
+ logLines.push(`JSON parsing failed: ${errorMessage}`);
185
+ logLines.push(`Error at line ${lineInfo.lineNumber}, character ${lineInfo.characterPosition}:`);
186
+ logLines.push(`Context (${lineInfo.contextLines.length} lines):`);
187
+
188
+ // Calculate the starting line number for context
189
+ const contextStartLine = Math.max(1, lineInfo.lineNumber - Math.floor(lineInfo.contextLines.length / 2));
190
+
191
+ lineInfo.contextLines.forEach((line, index) => {
192
+ const lineNum = contextStartLine + index;
193
+ const marker = lineNum === lineInfo.lineNumber ? '>>> ' : ' ';
194
+ const lineContent = line || '(empty line)';
195
+ logLines.push(`${marker}${lineNum.toString().padStart(3)}: ${lineContent}`);
196
+ });
197
+
198
+ return logLines;
199
+ }
200
+
201
+ /**
202
+ * Enhanced JSON.parse with detailed error reporting
203
+ * Wraps JSON.parse with enhanced error handling that shows line context
204
+ *
205
+ * @param jsonString - The JSON string to parse
206
+ * @param reviver - Optional reviver function for JSON.parse
207
+ * @param contextLines - Number of context lines to show in error (default: 5)
208
+ * @returns Parsed JSON object
209
+ * @throws Error with detailed line information if parsing fails
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * const json = '{"name": "John", "age": 30}';
214
+ * const result = DyFM_JsonErrorHelper.parseJsonWithEnhancedError(json);
215
+ * console.log(result); // { name: 'John', age: 30 }
216
+ * ```
217
+ */
218
+ static parseJsonWithEnhancedError(
219
+ jsonString: string,
220
+ reviver?: (key: string, value: any) => any,
221
+ contextLines: number = 2
222
+ ): any {
223
+ // Prevent infinite recursion and handle invalid input
224
+ if (!jsonString || typeof jsonString !== 'string') {
225
+ throw new Error(`Invalid JSON input: expected string, got ${typeof jsonString}`);
226
+ }
227
+
228
+ try {
229
+ return JSON.parse(jsonString, reviver);
230
+ } catch (error) {
231
+ const errorMessage = error instanceof Error ? error.message : String(error);
232
+ const originalJsonString = jsonString;
233
+
234
+ // First try to extract line info from the original JSON
235
+ let lineInfo = this.extractLineInfoFromJsonError(errorMessage, originalJsonString, contextLines);
236
+
237
+ // If no line info was found and the JSON is on a single line, try formatting it
238
+ if (!lineInfo && !originalJsonString.includes('\n')) {
239
+ try {
240
+ const formattedJson = this.formatJsonForBetterErrors(originalJsonString);
241
+
242
+ // Try parsing the formatted JSON to get a new error with position info
243
+ try {
244
+ JSON.parse(formattedJson, reviver);
245
+ } catch (formattedError) {
246
+ const formattedErrorMessage = formattedError instanceof Error ? formattedError.message : String(formattedError);
247
+ lineInfo = this.extractLineInfoFromJsonError(formattedErrorMessage, formattedJson, contextLines);
248
+ }
249
+ } catch (formatError) {
250
+ // If formatting fails, skip enhanced error reporting
251
+ lineInfo = null;
252
+ }
253
+ }
254
+
255
+ if (lineInfo) {
256
+ const formattedError = this.formatJsonErrorForLogging(lineInfo, errorMessage);
257
+
258
+ throw new Error(`JSON parsing failed:\n${formattedError.join('\n')}`);
259
+ } else {
260
+ // Fallback to simple error if we can't extract line info
261
+ throw new Error(`JSON parsing failed: ${errorMessage}`);
262
+ }
263
+ }
264
+ }
265
+
266
+ /**
267
+ * Formats single-line JSON with line breaks for better error reporting
268
+ * @param jsonString - The JSON string to format
269
+ * @returns The formatted JSON string
270
+ *
271
+ * @example
272
+ * ```ts
273
+ * const json = '{"name": "John", "age": 30, "city": "New York"}';
274
+ * const result = DyFM_JsonErrorHelper.formatJsonForBetterErrors(json);
275
+ * console.log(result); // '{\n "name": "John",\n "age": 30,\n "city": "New York"\n}'
276
+ * ```
277
+ */
278
+ private static formatJsonForBetterErrors(jsonString: string): string {
279
+ if (!jsonString || typeof jsonString !== 'string') {
280
+ return jsonString || '';
281
+ }
282
+
283
+ return jsonString
284
+ .replace(/,/g, ',\n ')
285
+ .replace(/{/g, '{\n ')
286
+ .replace(/}/g, '\n}')
287
+ .replace(/\[/g, '[\n ')
288
+ .replace(/\]/g, '\n]')
289
+ .replace(/\n\s*\n/g, '\n') // Remove double newlines
290
+ .replace(/^\s+|\s+$/gm, function(match: string, offset: number, string: string): string {
291
+ // Trim but preserve indentation structure
292
+ if (!string || typeof string !== 'string') {
293
+ return match;
294
+ }
295
+ const lines: string[] = string.slice(0, offset).split('\n');
296
+ const depth: number = (string.slice(0, offset).match(/{|\[/g) || []).length -
297
+ (string.slice(0, offset).match(/}|\]/g) || []).length;
298
+
299
+ return ' '.repeat(Math.max(0, depth));
300
+ });
301
+ }
302
302
  }