@futdevpro/fsm-dynamo 1.15.20 → 1.15.22

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 (925) 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-fr048-code-review.md +153 -0
  19. package/__documentations/2026-06-01-fr047-p1-function-calling-vocabulary.md +75 -0
  20. package/__documentations/plans/00-MASTER-ngx-models-fsm-merge.md +70 -0
  21. package/__documentations/plans/01-naming-convention-DyNM-to-DyFM.md +103 -0
  22. package/__documentations/plans/02-consumer-rollout.md +84 -0
  23. package/build/_enums/error-level.enum.d.ts +14 -1
  24. package/build/_enums/error-level.enum.d.ts.map +1 -1
  25. package/build/_enums/error-level.enum.js +13 -0
  26. package/build/_enums/error-level.enum.js.map +1 -1
  27. package/build/_models/data-models/errors.data-model.d.ts +8 -0
  28. package/build/_models/data-models/errors.data-model.d.ts.map +1 -1
  29. package/build/_models/data-models/errors.data-model.js +9 -0
  30. package/build/_models/data-models/errors.data-model.js.map +1 -1
  31. package/build/_modules/ngx-models/_collections/angular-placeholders.d.ts +34 -0
  32. package/build/_modules/ngx-models/_collections/angular-placeholders.d.ts.map +1 -0
  33. package/build/_modules/ngx-models/_collections/angular-placeholders.js +3 -0
  34. package/build/_modules/ngx-models/_collections/angular-placeholders.js.map +1 -0
  35. package/build/_modules/ngx-models/_collections/button-new-style-settings-presets.const.d.ts +54 -0
  36. package/build/_modules/ngx-models/_collections/button-new-style-settings-presets.const.d.ts.map +1 -0
  37. package/build/_modules/ngx-models/_collections/button-new-style-settings-presets.const.js +174 -0
  38. package/build/_modules/ngx-models/_collections/button-new-style-settings-presets.const.js.map +1 -0
  39. package/build/_modules/ngx-models/_collections/dynamo-global.settings.d.ts +13 -0
  40. package/build/_modules/ngx-models/_collections/dynamo-global.settings.d.ts.map +1 -0
  41. package/build/_modules/ngx-models/_collections/dynamo-global.settings.js +92 -0
  42. package/build/_modules/ngx-models/_collections/dynamo-global.settings.js.map +1 -0
  43. package/build/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.d.ts +14 -0
  44. package/build/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.d.ts.map +1 -0
  45. package/build/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.js +18 -0
  46. package/build/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.js.map +1 -0
  47. package/build/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.d.ts +12 -0
  48. package/build/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.d.ts.map +1 -0
  49. package/build/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.js +16 -0
  50. package/build/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.js.map +1 -0
  51. package/build/_modules/ngx-models/_enums/button-new/button-new-size.enum.d.ts +15 -0
  52. package/build/_modules/ngx-models/_enums/button-new/button-new-size.enum.d.ts.map +1 -0
  53. package/build/_modules/ngx-models/_enums/button-new/button-new-size.enum.js +19 -0
  54. package/build/_modules/ngx-models/_enums/button-new/button-new-size.enum.js.map +1 -0
  55. package/build/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.d.ts +17 -0
  56. package/build/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.d.ts.map +1 -0
  57. package/build/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.js +21 -0
  58. package/build/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.js.map +1 -0
  59. package/build/_modules/ngx-models/_enums/button-type.enum.d.ts +34 -0
  60. package/build/_modules/ngx-models/_enums/button-type.enum.d.ts.map +1 -0
  61. package/build/_modules/ngx-models/_enums/button-type.enum.js +39 -0
  62. package/build/_modules/ngx-models/_enums/button-type.enum.js.map +1 -0
  63. package/build/_modules/ngx-models/_enums/checkbox-label-position.enum.d.ts +8 -0
  64. package/build/_modules/ngx-models/_enums/checkbox-label-position.enum.d.ts.map +1 -0
  65. package/build/_modules/ngx-models/_enums/checkbox-label-position.enum.js +12 -0
  66. package/build/_modules/ngx-models/_enums/checkbox-label-position.enum.js.map +1 -0
  67. package/build/_modules/ngx-models/_enums/container-type.enum.d.ts +11 -0
  68. package/build/_modules/ngx-models/_enums/container-type.enum.d.ts.map +1 -0
  69. package/build/_modules/ngx-models/_enums/container-type.enum.js +15 -0
  70. package/build/_modules/ngx-models/_enums/container-type.enum.js.map +1 -0
  71. package/build/_modules/ngx-models/_enums/errors/error-level.enum.d.ts +14 -0
  72. package/build/_modules/ngx-models/_enums/errors/error-level.enum.d.ts.map +1 -0
  73. package/build/_modules/ngx-models/_enums/errors/error-level.enum.js +18 -0
  74. package/build/_modules/ngx-models/_enums/errors/error-level.enum.js.map +1 -0
  75. package/build/_modules/ngx-models/_enums/errors/error-notification-color.enum.d.ts +14 -0
  76. package/build/_modules/ngx-models/_enums/errors/error-notification-color.enum.d.ts.map +1 -0
  77. package/build/_modules/ngx-models/_enums/errors/error-notification-color.enum.js +18 -0
  78. package/build/_modules/ngx-models/_enums/errors/error-notification-color.enum.js.map +1 -0
  79. package/build/_modules/ngx-models/_enums/errors/error-ui-mode.enum.d.ts +14 -0
  80. package/build/_modules/ngx-models/_enums/errors/error-ui-mode.enum.d.ts.map +1 -0
  81. package/build/_modules/ngx-models/_enums/errors/error-ui-mode.enum.js +18 -0
  82. package/build/_modules/ngx-models/_enums/errors/error-ui-mode.enum.js.map +1 -0
  83. package/build/_modules/ngx-models/_enums/field-appearance.enum.d.ts +8 -0
  84. package/build/_modules/ngx-models/_enums/field-appearance.enum.d.ts.map +1 -0
  85. package/build/_modules/ngx-models/_enums/field-appearance.enum.js +17 -0
  86. package/build/_modules/ngx-models/_enums/field-appearance.enum.js.map +1 -0
  87. package/build/_modules/ngx-models/_enums/field-type.enum.d.ts +33 -0
  88. package/build/_modules/ngx-models/_enums/field-type.enum.d.ts.map +1 -0
  89. package/build/_modules/ngx-models/_enums/field-type.enum.js +50 -0
  90. package/build/_modules/ngx-models/_enums/field-type.enum.js.map +1 -0
  91. package/build/_modules/ngx-models/_enums/file-type.enum.d.ts +12 -0
  92. package/build/_modules/ngx-models/_enums/file-type.enum.d.ts.map +1 -0
  93. package/build/_modules/ngx-models/_enums/file-type.enum.js +16 -0
  94. package/build/_modules/ngx-models/_enums/file-type.enum.js.map +1 -0
  95. package/build/_modules/ngx-models/_enums/flex/flex-layout-align.enum.d.ts +18 -0
  96. package/build/_modules/ngx-models/_enums/flex/flex-layout-align.enum.d.ts.map +1 -0
  97. package/build/_modules/ngx-models/_enums/flex/flex-layout-align.enum.js +25 -0
  98. package/build/_modules/ngx-models/_enums/flex/flex-layout-align.enum.js.map +1 -0
  99. package/build/_modules/ngx-models/_enums/flex/flex-layout.enum.d.ts +6 -0
  100. package/build/_modules/ngx-models/_enums/flex/flex-layout.enum.d.ts.map +1 -0
  101. package/build/_modules/ngx-models/_enums/flex/flex-layout.enum.js +10 -0
  102. package/build/_modules/ngx-models/_enums/flex/flex-layout.enum.js.map +1 -0
  103. package/build/_modules/ngx-models/_enums/form-access.enum.d.ts +9 -0
  104. package/build/_modules/ngx-models/_enums/form-access.enum.d.ts.map +1 -0
  105. package/build/_modules/ngx-models/_enums/form-access.enum.js +13 -0
  106. package/build/_modules/ngx-models/_enums/form-access.enum.js.map +1 -0
  107. package/build/_modules/ngx-models/_enums/form-reset-data.enum.d.ts +12 -0
  108. package/build/_modules/ngx-models/_enums/form-reset-data.enum.d.ts.map +1 -0
  109. package/build/_modules/ngx-models/_enums/form-reset-data.enum.js +16 -0
  110. package/build/_modules/ngx-models/_enums/form-reset-data.enum.js.map +1 -0
  111. package/build/_modules/ngx-models/_enums/form-store-on.enum.d.ts +8 -0
  112. package/build/_modules/ngx-models/_enums/form-store-on.enum.d.ts.map +1 -0
  113. package/build/_modules/ngx-models/_enums/form-store-on.enum.js +12 -0
  114. package/build/_modules/ngx-models/_enums/form-store-on.enum.js.map +1 -0
  115. package/build/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.d.ts +21 -0
  116. package/build/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.d.ts.map +1 -0
  117. package/build/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.js +25 -0
  118. package/build/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.js.map +1 -0
  119. package/build/_modules/ngx-models/_enums/frames/header-item-type.enum.d.ts +16 -0
  120. package/build/_modules/ngx-models/_enums/frames/header-item-type.enum.d.ts.map +1 -0
  121. package/build/_modules/ngx-models/_enums/frames/header-item-type.enum.js +20 -0
  122. package/build/_modules/ngx-models/_enums/frames/header-item-type.enum.js.map +1 -0
  123. package/build/_modules/ngx-models/_enums/frames/header-position.enum.d.ts +11 -0
  124. package/build/_modules/ngx-models/_enums/frames/header-position.enum.d.ts.map +1 -0
  125. package/build/_modules/ngx-models/_enums/frames/header-position.enum.js +15 -0
  126. package/build/_modules/ngx-models/_enums/frames/header-position.enum.js.map +1 -0
  127. package/build/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.d.ts +14 -0
  128. package/build/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.d.ts.map +1 -0
  129. package/build/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.js +18 -0
  130. package/build/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.js.map +1 -0
  131. package/build/_modules/ngx-models/_enums/html/input-types.enum.d.ts +26 -0
  132. package/build/_modules/ngx-models/_enums/html/input-types.enum.d.ts.map +1 -0
  133. package/build/_modules/ngx-models/_enums/html/input-types.enum.js +30 -0
  134. package/build/_modules/ngx-models/_enums/html/input-types.enum.js.map +1 -0
  135. package/build/_modules/ngx-models/_enums/material-color.enum.d.ts +14 -0
  136. package/build/_modules/ngx-models/_enums/material-color.enum.d.ts.map +1 -0
  137. package/build/_modules/ngx-models/_enums/material-color.enum.js +18 -0
  138. package/build/_modules/ngx-models/_enums/material-color.enum.js.map +1 -0
  139. package/build/_modules/ngx-models/_enums/material-tooltip-position.enum.d.ts +13 -0
  140. package/build/_modules/ngx-models/_enums/material-tooltip-position.enum.d.ts.map +1 -0
  141. package/build/_modules/ngx-models/_enums/material-tooltip-position.enum.js +17 -0
  142. package/build/_modules/ngx-models/_enums/material-tooltip-position.enum.js.map +1 -0
  143. package/build/_modules/ngx-models/_enums/preconfigured-field-type.enum.d.ts +8 -0
  144. package/build/_modules/ngx-models/_enums/preconfigured-field-type.enum.d.ts.map +1 -0
  145. package/build/_modules/ngx-models/_enums/preconfigured-field-type.enum.js +12 -0
  146. package/build/_modules/ngx-models/_enums/preconfigured-field-type.enum.js.map +1 -0
  147. package/build/_modules/ngx-models/_enums/storage-type.enum.d.ts +9 -0
  148. package/build/_modules/ngx-models/_enums/storage-type.enum.d.ts.map +1 -0
  149. package/build/_modules/ngx-models/_enums/storage-type.enum.js +17 -0
  150. package/build/_modules/ngx-models/_enums/storage-type.enum.js.map +1 -0
  151. package/build/_modules/ngx-models/_enums/validator-type.enum.d.ts +7 -0
  152. package/build/_modules/ngx-models/_enums/validator-type.enum.d.ts.map +1 -0
  153. package/build/_modules/ngx-models/_enums/validator-type.enum.js +11 -0
  154. package/build/_modules/ngx-models/_enums/validator-type.enum.js.map +1 -0
  155. package/build/_modules/ngx-models/_enums/voice/audio-mime-type.enum.d.ts +15 -0
  156. package/build/_modules/ngx-models/_enums/voice/audio-mime-type.enum.d.ts.map +1 -0
  157. package/build/_modules/ngx-models/_enums/voice/audio-mime-type.enum.js +19 -0
  158. package/build/_modules/ngx-models/_enums/voice/audio-mime-type.enum.js.map +1 -0
  159. package/build/_modules/ngx-models/_enums/voice/voice-provider-type.enum.d.ts +24 -0
  160. package/build/_modules/ngx-models/_enums/voice/voice-provider-type.enum.d.ts.map +1 -0
  161. package/build/_modules/ngx-models/_enums/voice/voice-provider-type.enum.js +31 -0
  162. package/build/_modules/ngx-models/_enums/voice/voice-provider-type.enum.js.map +1 -0
  163. package/build/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.d.ts +21 -0
  164. package/build/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.d.ts.map +1 -0
  165. package/build/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.js +25 -0
  166. package/build/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.js.map +1 -0
  167. package/build/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.d.ts +24 -0
  168. package/build/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.d.ts.map +1 -0
  169. package/build/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.js +35 -0
  170. package/build/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.js.map +1 -0
  171. package/build/_modules/ngx-models/_models/control-models/button-params.control-model.d.ts +47 -0
  172. package/build/_modules/ngx-models/_models/control-models/button-params.control-model.d.ts.map +1 -0
  173. package/build/_modules/ngx-models/_models/control-models/button-params.control-model.js +262 -0
  174. package/build/_modules/ngx-models/_models/control-models/button-params.control-model.js.map +1 -0
  175. package/build/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.d.ts +22 -0
  176. package/build/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.d.ts.map +1 -0
  177. package/build/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.js +28 -0
  178. package/build/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.js.map +1 -0
  179. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts +94 -0
  180. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts.map +1 -0
  181. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js +105 -0
  182. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js.map +1 -0
  183. package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.d.ts +129 -0
  184. package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.d.ts.map +1 -0
  185. package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.js +350 -0
  186. package/build/_modules/ngx-models/_models/control-models/data-handler.control-model.js.map +1 -0
  187. package/build/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.d.ts +32 -0
  188. package/build/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.d.ts.map +1 -0
  189. package/build/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.js +45 -0
  190. package/build/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.js.map +1 -0
  191. package/build/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.d.ts +27 -0
  192. package/build/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.d.ts.map +1 -0
  193. package/build/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.js +33 -0
  194. package/build/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.js.map +1 -0
  195. package/build/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.d.ts +38 -0
  196. package/build/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.d.ts.map +1 -0
  197. package/build/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.js +43 -0
  198. package/build/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.js.map +1 -0
  199. package/build/_modules/ngx-models/_models/control-models/field-settings.control-model.d.ts +102 -0
  200. package/build/_modules/ngx-models/_models/control-models/field-settings.control-model.d.ts.map +1 -0
  201. package/build/_modules/ngx-models/_models/control-models/field-settings.control-model.js +110 -0
  202. package/build/_modules/ngx-models/_models/control-models/field-settings.control-model.js.map +1 -0
  203. package/build/_modules/ngx-models/_models/control-models/form-settings.control-model.d.ts +125 -0
  204. package/build/_modules/ngx-models/_models/control-models/form-settings.control-model.d.ts.map +1 -0
  205. package/build/_modules/ngx-models/_models/control-models/form-settings.control-model.js +134 -0
  206. package/build/_modules/ngx-models/_models/control-models/form-settings.control-model.js.map +1 -0
  207. package/build/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.d.ts +18 -0
  208. package/build/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.d.ts.map +1 -0
  209. package/build/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.js +26 -0
  210. package/build/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.js.map +1 -0
  211. package/build/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.d.ts +20 -0
  212. package/build/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.d.ts.map +1 -0
  213. package/build/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.js +28 -0
  214. package/build/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.js.map +1 -0
  215. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.d.ts +61 -0
  216. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.d.ts.map +1 -0
  217. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.js +57 -0
  218. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.js.map +1 -0
  219. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.d.ts +17 -0
  220. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.d.ts.map +1 -0
  221. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.js +3 -0
  222. package/build/_modules/ngx-models/_models/control-models/forms-new/field-new-types.js.map +1 -0
  223. package/build/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.d.ts +29 -0
  224. package/build/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.d.ts.map +1 -0
  225. package/build/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.js +37 -0
  226. package/build/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.js.map +1 -0
  227. package/build/_modules/ngx-models/_models/control-models/forms-new/index.d.ts +11 -0
  228. package/build/_modules/ngx-models/_models/control-models/forms-new/index.d.ts.map +1 -0
  229. package/build/_modules/ngx-models/_models/control-models/forms-new/index.js +16 -0
  230. package/build/_modules/ngx-models/_models/control-models/forms-new/index.js.map +1 -0
  231. package/build/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.d.ts +18 -0
  232. package/build/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.d.ts.map +1 -0
  233. package/build/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.js +28 -0
  234. package/build/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.js.map +1 -0
  235. package/build/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.d.ts +18 -0
  236. package/build/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.d.ts.map +1 -0
  237. package/build/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.js +26 -0
  238. package/build/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.js.map +1 -0
  239. package/build/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.d.ts +35 -0
  240. package/build/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.d.ts.map +1 -0
  241. package/build/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.js +32 -0
  242. package/build/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.js.map +1 -0
  243. package/build/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.d.ts +22 -0
  244. package/build/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.d.ts.map +1 -0
  245. package/build/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.js +32 -0
  246. package/build/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.js.map +1 -0
  247. package/build/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.d.ts +16 -0
  248. package/build/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.d.ts.map +1 -0
  249. package/build/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.js +24 -0
  250. package/build/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.js.map +1 -0
  251. package/build/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.d.ts +36 -0
  252. package/build/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.d.ts.map +1 -0
  253. package/build/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.js +46 -0
  254. package/build/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.js.map +1 -0
  255. package/build/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.d.ts +28 -0
  256. package/build/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.d.ts.map +1 -0
  257. package/build/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.js +36 -0
  258. package/build/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.js.map +1 -0
  259. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.d.ts +38 -0
  260. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.d.ts.map +1 -0
  261. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.js +49 -0
  262. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.js.map +1 -0
  263. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.d.ts +21 -0
  264. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.d.ts.map +1 -0
  265. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.js +29 -0
  266. package/build/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.js.map +1 -0
  267. package/build/_modules/ngx-models/_models/control-models/select.control-model.d.ts +17 -0
  268. package/build/_modules/ngx-models/_models/control-models/select.control-model.d.ts.map +1 -0
  269. package/build/_modules/ngx-models/_models/control-models/select.control-model.js +29 -0
  270. package/build/_modules/ngx-models/_models/control-models/select.control-model.js.map +1 -0
  271. package/build/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.d.ts +58 -0
  272. package/build/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.d.ts.map +1 -0
  273. package/build/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.js +24 -0
  274. package/build/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.js.map +1 -0
  275. package/build/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.d.ts +32 -0
  276. package/build/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.d.ts.map +1 -0
  277. package/build/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.js +38 -0
  278. package/build/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.js.map +1 -0
  279. package/build/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.d.ts +28 -0
  280. package/build/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.d.ts.map +1 -0
  281. package/build/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.js +33 -0
  282. package/build/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.js.map +1 -0
  283. package/build/_modules/ngx-models/_models/interfaces/button-new-settings.interface.d.ts +62 -0
  284. package/build/_modules/ngx-models/_models/interfaces/button-new-settings.interface.d.ts.map +1 -0
  285. package/build/_modules/ngx-models/_models/interfaces/button-new-settings.interface.js +3 -0
  286. package/build/_modules/ngx-models/_models/interfaces/button-new-settings.interface.js.map +1 -0
  287. package/build/_modules/ngx-models/_models/interfaces/confirm-settings.interface.d.ts +17 -0
  288. package/build/_modules/ngx-models/_models/interfaces/confirm-settings.interface.d.ts.map +1 -0
  289. package/build/_modules/ngx-models/_models/interfaces/confirm-settings.interface.js +3 -0
  290. package/build/_modules/ngx-models/_models/interfaces/confirm-settings.interface.js.map +1 -0
  291. package/build/_modules/ngx-models/_models/interfaces/global-settings.interface.d.ts +54 -0
  292. package/build/_modules/ngx-models/_models/interfaces/global-settings.interface.d.ts.map +1 -0
  293. package/build/_modules/ngx-models/_models/interfaces/global-settings.interface.js +3 -0
  294. package/build/_modules/ngx-models/_models/interfaces/global-settings.interface.js.map +1 -0
  295. package/build/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.d.ts +38 -0
  296. package/build/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.d.ts.map +1 -0
  297. package/build/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.js +3 -0
  298. package/build/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.js.map +1 -0
  299. package/build/_modules/ngx-models/_models/interfaces/storage.service.d.ts +5 -0
  300. package/build/_modules/ngx-models/_models/interfaces/storage.service.d.ts.map +1 -0
  301. package/build/_modules/ngx-models/_models/interfaces/storage.service.js +45 -0
  302. package/build/_modules/ngx-models/_models/interfaces/storage.service.js.map +1 -0
  303. package/build/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.d.ts +20 -0
  304. package/build/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.d.ts.map +1 -0
  305. package/build/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.js +3 -0
  306. package/build/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.js.map +1 -0
  307. package/build/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.d.ts +15 -0
  308. package/build/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.d.ts.map +1 -0
  309. package/build/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.js +3 -0
  310. package/build/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.js.map +1 -0
  311. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.d.ts +15 -0
  312. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.d.ts.map +1 -0
  313. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.js +3 -0
  314. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.js.map +1 -0
  315. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.d.ts +16 -0
  316. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.d.ts.map +1 -0
  317. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.js +3 -0
  318. package/build/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.js.map +1 -0
  319. package/build/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.d.ts +19 -0
  320. package/build/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.d.ts.map +1 -0
  321. package/build/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.js +3 -0
  322. package/build/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.js.map +1 -0
  323. package/build/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.d.ts +22 -0
  324. package/build/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.d.ts.map +1 -0
  325. package/build/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.js +3 -0
  326. package/build/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.js.map +1 -0
  327. package/build/_modules/ngx-models/_utils/shared.service.d.ts +132 -0
  328. package/build/_modules/ngx-models/_utils/shared.service.d.ts.map +1 -0
  329. package/build/_modules/ngx-models/_utils/shared.service.js +415 -0
  330. package/build/_modules/ngx-models/_utils/shared.service.js.map +1 -0
  331. package/build/_modules/ngx-models/index.d.ts +65 -0
  332. package/build/_modules/ngx-models/index.d.ts.map +1 -0
  333. package/build/_modules/ngx-models/index.js +90 -0
  334. package/build/_modules/ngx-models/index.js.map +1 -0
  335. package/build/_modules/socket/_models/sck-socket-event.control-model.js +1 -1
  336. package/eslint.config.js +4 -4
  337. package/nodemon.json +22 -22
  338. package/package.json +10 -1
  339. package/scripts/crypto/CRYPTO-STABILITY-SOLUTION.md +196 -196
  340. package/scripts/crypto/README.md +113 -113
  341. package/scripts/crypto/demo-crypto-stability.js +120 -120
  342. package/scripts/crypto/stress-test-crypto.js +379 -379
  343. package/scripts/run-coverage-tests.js +24 -24
  344. package/spec/support/helpers/ts-node-helper.js +9 -9
  345. package/spec/support/jasmine.coverage.json +23 -23
  346. package/spec/support/jasmine.json +24 -24
  347. package/src/_collections/constants/data-sizes.const.ts +40 -40
  348. package/src/_collections/constants/error-defaults.const.ts +20 -20
  349. package/src/_collections/constants/global-settings.const.ts +24 -24
  350. package/src/_collections/constants/numbers.const.ts +40 -40
  351. package/src/_collections/constants/times.const.ts +45 -45
  352. package/src/_collections/utils/array.util.spec.ts +306 -306
  353. package/src/_collections/utils/array.util.ts +813 -813
  354. package/src/_collections/utils/async.util.spec.ts +354 -354
  355. package/src/_collections/utils/async.util.ts +197 -197
  356. package/src/_collections/utils/data.util.spec.ts +345 -345
  357. package/src/_collections/utils/data.util.ts +226 -226
  358. package/src/_collections/utils/json-error-helper.util.spec.ts +521 -521
  359. package/src/_collections/utils/json-error-helper.util.ts +301 -301
  360. package/src/_collections/utils/log.util.spec.ts +975 -975
  361. package/src/_collections/utils/log.util.ts +665 -665
  362. package/src/_collections/utils/math/box-bounds.spec.ts +73 -73
  363. package/src/_collections/utils/math/box-bounds.util.ts +183 -183
  364. package/src/_collections/utils/math/math.util.spec.ts +94 -94
  365. package/src/_collections/utils/math/math.util.ts +141 -141
  366. package/src/_collections/utils/math/random.util.spec.ts +82 -82
  367. package/src/_collections/utils/math/random.util.ts +139 -139
  368. package/src/_collections/utils/math/trigonometry.util.spec.ts +57 -57
  369. package/src/_collections/utils/math/trigonometry.util.ts +102 -102
  370. package/src/_collections/utils/math/vector2.util.spec.ts +94 -94
  371. package/src/_collections/utils/math/vector2.util.ts +653 -653
  372. package/src/_collections/utils/object.util.spec.ts +646 -646
  373. package/src/_collections/utils/regex/password-regex.util.spec.ts +51 -51
  374. package/src/_collections/utils/regex/password-regex.util.ts +65 -65
  375. package/src/_collections/utils/regex/regex.util.spec.ts +42 -42
  376. package/src/_collections/utils/regex/regex.util.ts +6 -6
  377. package/src/_collections/utils/regex/username-regex.util.spec.ts +61 -61
  378. package/src/_collections/utils/regex/username-regex.util.ts +35 -35
  379. package/src/_collections/utils/round-list.util.spec.ts +79 -79
  380. package/src/_collections/utils/round-list.util.ts +162 -162
  381. package/src/_collections/utils/stack.util.spec.ts +372 -372
  382. package/src/_collections/utils/stack.util.ts +164 -164
  383. package/src/_collections/utils/string-case.util.spec.ts +441 -441
  384. package/src/_collections/utils/string-case.util.ts +362 -362
  385. package/src/_collections/utils/string.util.spec.ts +975 -975
  386. package/src/_collections/utils/string.util.ts +449 -449
  387. package/src/_collections/utils/time.util.spec.ts +50 -50
  388. package/src/_collections/utils/time.util.ts +481 -481
  389. package/src/_collections/utils/type-cloning-facility.util.spec.ts +51 -51
  390. package/src/_collections/utils/type-cloning-facility.util.ts +168 -168
  391. package/src/_collections/utils/utilities.util.spec.ts +201 -201
  392. package/src/_collections/utils/utilities.util.ts +68 -68
  393. package/src/_collections/utils/uuid.util.spec.ts +30 -30
  394. package/src/_collections/utils/uuid.util.ts +50 -50
  395. package/src/_enums/basic-property-type.enum.ts +20 -20
  396. package/src/_enums/data-model-type.enum.ts +29 -29
  397. package/src/_enums/environment-flag.enum.ts +28 -28
  398. package/src/_enums/error-level.enum.ts +43 -28
  399. package/src/_enums/http/http-call-type.enum.ts +43 -43
  400. package/src/_enums/http/http-event-type.enum.ts +40 -40
  401. package/src/_enums/http/http-response-type.enum.ts +18 -18
  402. package/src/_enums/log-style.enum.ts +44 -44
  403. package/src/_enums/server-connection-status.enum.ts +6 -6
  404. package/src/_enums/time/day-of-week.enum.ts +55 -55
  405. package/src/_enums/time/month.enum.ts +25 -25
  406. package/src/_enums/time/relative-date.enum.ts +24 -24
  407. package/src/_models/control-models/data-model-params.control-model.spec.ts +85 -85
  408. package/src/_models/control-models/data-model-params.control-model.ts +300 -300
  409. package/src/_models/control-models/data-property-params.control-model.spec.ts +93 -93
  410. package/src/_models/control-models/data-property-params.control-model.ts +201 -201
  411. package/src/_models/control-models/error.control-model.spec.ts +912 -912
  412. package/src/_models/control-models/error.control-model.ts +1215 -1215
  413. package/src/_models/control-models/http/http-error-response.control-model.spec.ts +116 -116
  414. package/src/_models/control-models/http/http-error-response.control-model.ts +52 -52
  415. package/src/_models/control-models/http/http-headers.control-model.spec.ts +25 -25
  416. package/src/_models/control-models/http/http-headers.control-model.ts +124 -124
  417. package/src/_models/control-models/http/http-response.model-base.spec.ts +46 -46
  418. package/src/_models/control-models/http/http-response.model-base.ts +57 -57
  419. package/src/_models/control-models/poll.control-model.spec.ts +63 -63
  420. package/src/_models/control-models/poll.control-model.ts +151 -151
  421. package/src/_models/control-models/range-value.control-model.spec.ts +187 -187
  422. package/src/_models/control-models/range-value.control-model.ts +289 -289
  423. package/src/_models/control-models/server-status.control-model.spec.ts +66 -66
  424. package/src/_models/control-models/server-status.control-model.ts +85 -85
  425. package/src/_models/control-models/service-endpoint-settings-base.control-model.spec.ts +145 -145
  426. package/src/_models/control-models/service-endpoint-settings-base.control-model.ts +186 -186
  427. package/src/_models/data-models/errors.data-model.spec.ts +71 -71
  428. package/src/_models/data-models/errors.data-model.ts +158 -148
  429. package/src/_models/data-models/metadata.data-model.spec.ts +184 -184
  430. package/src/_models/data-models/metadata.data-model.ts +128 -128
  431. package/src/_models/interfaces/box-bounds.interface.ts +7 -7
  432. package/src/_models/interfaces/environment/global-log-settings.interface.ts +86 -86
  433. package/src/_models/interfaces/environment/global-settings.interface.ts +47 -47
  434. package/src/_models/interfaces/error-defaults.interface.ts +11 -11
  435. package/src/_models/interfaces/paged.interface.ts +12 -12
  436. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  437. package/src/_models/interfaces/route-settings.interface.ts +15 -15
  438. package/src/_models/interfaces/search-query.interface.ts +23 -23
  439. package/src/_models/interfaces/search-result.interface.ts +5 -5
  440. package/src/_models/interfaces/server-error-statistics.interface.ts +24 -24
  441. package/src/_models/interfaces/vector2.interface.ts +20 -20
  442. package/src/_models/types/db-filter.type.ts +110 -110
  443. package/src/_models/types/db-sort.type.ts +4 -4
  444. package/src/_models/types/ds-filter.type.ts +68 -68
  445. package/src/_models/types/ds-sort.type.ts +21 -21
  446. package/src/_modules/ai/_collections/ai-model-ref.util.ts +88 -88
  447. package/src/_modules/ai/_collections/ai-model-registry.util.spec.ts +37 -37
  448. package/src/_modules/ai/_collections/ai-model-registry.util.ts +30 -30
  449. package/src/_modules/ai/_enums/ai-message-role.enum.ts +7 -7
  450. package/src/_modules/ai/_enums/ai-model-type.enum.ts +7 -7
  451. package/src/_modules/ai/_enums/ai-provider.enum.ts +7 -7
  452. package/src/_modules/ai/_models/ai-call-settings.interface.ts +84 -84
  453. package/src/_modules/ai/_models/ai-embedding-request.interface.ts +20 -20
  454. package/src/_modules/ai/_models/ai-embedding-response.interface.ts +26 -26
  455. package/src/_modules/ai/_models/ai-llm-request.interface.ts +24 -24
  456. package/src/_modules/ai/_models/ai-llm-response.interface.ts +30 -30
  457. package/src/_modules/ai/_models/ai-message.interface.ts +12 -12
  458. package/src/_modules/ai/_models/ai-model-capabilities.interface.ts +35 -35
  459. package/src/_modules/ai/_models/ai-model-info.interface.ts +63 -63
  460. package/src/_modules/ai/_models/ai-model-settings-schema.interface.ts +52 -52
  461. package/src/_modules/ai/_models/ai-provider-capabilities.interface.ts +28 -28
  462. package/src/_modules/ai/_models/ai-settings.interface.ts +17 -17
  463. package/src/_modules/ai/_models/ai-tool-call.interface.ts +18 -18
  464. package/src/_modules/ai/_models/ai-tool-handler.type.ts +11 -11
  465. package/src/_modules/ai/_models/ai-tool-result.interface.ts +16 -16
  466. package/src/_modules/ai/_models/ai-tool.interface.ts +16 -16
  467. package/src/_modules/ai/_models/ai-user-provider-config.control-model.ts +29 -29
  468. package/src/_modules/ai/_modules/anthropic/_collections/aai-models.const.ts +81 -81
  469. package/src/_modules/ai/_modules/anthropic/_enums/aai-model.enum.ts +19 -19
  470. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.spec.ts +28 -28
  471. package/src/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.ts +23 -23
  472. package/src/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.ts +10 -10
  473. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.spec.ts +22 -22
  474. package/src/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.ts +27 -27
  475. package/src/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.ts +20 -20
  476. package/src/_modules/ai/_modules/anthropic/index.ts +14 -14
  477. package/src/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.ts +12 -12
  478. package/src/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.ts +22 -22
  479. package/src/_modules/ai/_modules/document-ai/index.ts +4 -4
  480. package/src/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.ts +34 -34
  481. package/src/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.ts +6 -6
  482. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.ts +19 -19
  483. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.ts +11 -11
  484. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.ts +24 -24
  485. package/src/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.ts +20 -20
  486. package/src/_modules/ai/_modules/fdp-ai/index.ts +11 -11
  487. package/src/_modules/ai/_modules/google-ai/_collections/gai-models.const.ts +99 -99
  488. package/src/_modules/ai/_modules/google-ai/_enums/gai-model.enum.ts +16 -16
  489. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.spec.ts +28 -28
  490. package/src/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.ts +21 -21
  491. package/src/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.ts +8 -8
  492. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.spec.ts +22 -22
  493. package/src/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.ts +25 -25
  494. package/src/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.ts +20 -20
  495. package/src/_modules/ai/_modules/google-ai/index.ts +14 -14
  496. package/src/_modules/ai/_modules/local-ai/_collections/lai-models.const.ts +53 -53
  497. package/src/_modules/ai/_modules/local-ai/_enums/lai-model.enum.ts +6 -6
  498. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.spec.ts +28 -28
  499. package/src/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.ts +18 -18
  500. package/src/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.ts +9 -9
  501. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.spec.ts +22 -22
  502. package/src/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.ts +23 -23
  503. package/src/_modules/ai/_modules/local-ai/index.ts +14 -14
  504. package/src/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.ts +7 -7
  505. package/src/_modules/ai/_modules/open-ai/_collections/oai-models.const.ts +252 -252
  506. package/src/_modules/ai/_modules/open-ai/_enums/oai-model.enum.ts +179 -179
  507. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.spec.ts +28 -28
  508. package/src/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.ts +21 -21
  509. package/src/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.ts +81 -81
  510. package/src/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.ts +13 -13
  511. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.spec.ts +22 -22
  512. package/src/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.ts +25 -25
  513. package/src/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.ts +21 -21
  514. package/src/_modules/ai/_modules/open-ai/index.ts +28 -28
  515. package/src/_modules/ai/index.ts +27 -27
  516. package/src/_modules/ci-tools/_enums/cit-ci-result-code.enum.ts +11 -11
  517. package/src/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.ts +9 -9
  518. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.spec.ts +58 -58
  519. package/src/_modules/ci-tools/_models/cit-ci-result-info.data-models.ts +77 -77
  520. package/src/_modules/ci-tools/_models/cit-ci-step-result.interface.ts +12 -12
  521. package/src/_modules/ci-tools/index.ts +8 -8
  522. package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +512 -512
  523. package/src/_modules/crypto/index.ts +13 -13
  524. package/src/_modules/custom-data/_collections/cud-module-settings.const.ts +21 -21
  525. package/src/_modules/custom-data/_models/cud.data-model.spec.ts +38 -38
  526. package/src/_modules/custom-data/_models/cud.data-model.ts +39 -39
  527. package/src/_modules/custom-data/index.ts +10 -10
  528. package/src/_modules/data-handler/_models/data-handler-settings.control-model.spec.ts +110 -110
  529. package/src/_modules/data-handler/_models/data-handler-settings.control-model.ts +110 -110
  530. package/src/_modules/data-handler/_models/data-handler.control-model.spec.ts +445 -445
  531. package/src/_modules/data-handler/_models/data-handler.control-model.ts +459 -459
  532. package/src/_modules/data-handler/_models/data-list-handler.control-model.spec.ts +263 -263
  533. package/src/_modules/data-handler/_models/data-list-handler.control-model.ts +252 -252
  534. package/src/_modules/data-handler/_models/data-search-handler.control-model.spec.ts +417 -417
  535. package/src/_modules/data-handler/_models/data-search-handler.control-model.ts +390 -390
  536. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.spec.ts +374 -374
  537. package/src/_modules/data-handler/_models/list-collector-data-handler.control-model.ts +274 -274
  538. package/src/_modules/data-handler/index.ts +6 -6
  539. package/src/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -3239
  540. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19035 -19035
  541. package/src/_modules/location/_collections/assets/country-divisions-ISO-3166.json +4993 -4993
  542. package/src/_modules/location/_collections/assets/country-phone-codes.json +1203 -1203
  543. package/src/_modules/location/_collections/assets/country-subdivisions/afghanistan.json +137 -137
  544. package/src/_modules/location/_collections/assets/country-subdivisions/albania.json +49 -49
  545. package/src/_modules/location/_collections/assets/country-subdivisions/algeria.json +193 -193
  546. package/src/_modules/location/_collections/assets/country-subdivisions/andorra.json +29 -29
  547. package/src/_modules/location/_collections/assets/country-subdivisions/angola.json +73 -73
  548. package/src/_modules/location/_collections/assets/country-subdivisions/antigua-and-barbuda.json +33 -33
  549. package/src/_modules/location/_collections/assets/country-subdivisions/argentina.json +97 -97
  550. package/src/_modules/location/_collections/assets/country-subdivisions/armenia.json +45 -45
  551. package/src/_modules/location/_collections/assets/country-subdivisions/australia.json +33 -33
  552. package/src/_modules/location/_collections/assets/country-subdivisions/austria.json +37 -37
  553. package/src/_modules/location/_collections/assets/country-subdivisions/azerbaijan.json +5 -5
  554. package/src/_modules/location/_collections/assets/country-subdivisions/bahamas.json +125 -125
  555. package/src/_modules/location/_collections/assets/country-subdivisions/bahrain.json +21 -21
  556. package/src/_modules/location/_collections/assets/country-subdivisions/bangladesh.json +29 -29
  557. package/src/_modules/location/_collections/assets/country-subdivisions/barbados.json +45 -45
  558. package/src/_modules/location/_collections/assets/country-subdivisions/belarus.json +29 -29
  559. package/src/_modules/location/_collections/assets/country-subdivisions/belgium.json +13 -13
  560. package/src/_modules/location/_collections/assets/country-subdivisions/belize.json +25 -25
  561. package/src/_modules/location/_collections/assets/country-subdivisions/benin.json +49 -49
  562. package/src/_modules/location/_collections/assets/country-subdivisions/bhutan.json +81 -81
  563. package/src/_modules/location/_collections/assets/country-subdivisions/bolivia.json +37 -37
  564. package/src/_modules/location/_collections/assets/country-subdivisions/bosnia-and-herzegovina.json +13 -13
  565. package/src/_modules/location/_collections/assets/country-subdivisions/botswana.json +65 -65
  566. package/src/_modules/location/_collections/assets/country-subdivisions/brazil.json +109 -109
  567. package/src/_modules/location/_collections/assets/country-subdivisions/brunei-darussalam.json +17 -17
  568. package/src/_modules/location/_collections/assets/country-subdivisions/bulgaria.json +113 -113
  569. package/src/_modules/location/_collections/assets/country-subdivisions/burkina-faso.json +53 -53
  570. package/src/_modules/location/_collections/assets/country-subdivisions/burundi.json +69 -69
  571. package/src/_modules/location/_collections/assets/country-subdivisions/cambodia.json +97 -97
  572. package/src/_modules/location/_collections/assets/country-subdivisions/cameroon.json +41 -41
  573. package/src/_modules/location/_collections/assets/country-subdivisions/canada.json +79 -79
  574. package/src/_modules/location/_collections/assets/country-subdivisions/cape-verde.json +9 -9
  575. package/src/_modules/location/_collections/assets/country-subdivisions/central-african-republic.json +69 -69
  576. package/src/_modules/location/_collections/assets/country-subdivisions/chad.json +89 -89
  577. package/src/_modules/location/_collections/assets/country-subdivisions/chile.json +61 -61
  578. package/src/_modules/location/_collections/assets/country-subdivisions/china.json +205 -205
  579. package/src/_modules/location/_collections/assets/country-subdivisions/colombia.json +133 -133
  580. package/src/_modules/location/_collections/assets/country-subdivisions/comoros.json +13 -13
  581. package/src/_modules/location/_collections/assets/country-subdivisions/congo-the-democratic-republic-of-the.json +45 -45
  582. package/src/_modules/location/_collections/assets/country-subdivisions/congo.json +49 -49
  583. package/src/_modules/location/_collections/assets/country-subdivisions/costa-rica.json +29 -29
  584. package/src/_modules/location/_collections/assets/country-subdivisions/cote-d-ivoire-republic-of.json +77 -77
  585. package/src/_modules/location/_collections/assets/country-subdivisions/croatia.json +85 -85
  586. package/src/_modules/location/_collections/assets/country-subdivisions/cuba.json +65 -65
  587. package/src/_modules/location/_collections/assets/country-subdivisions/cyprus.json +25 -25
  588. package/src/_modules/location/_collections/assets/country-subdivisions/czech-republic.json +57 -57
  589. package/src/_modules/location/_collections/assets/country-subdivisions/denmark.json +21 -21
  590. package/src/_modules/location/_collections/assets/country-subdivisions/djibouti.json +25 -25
  591. package/src/_modules/location/_collections/assets/country-subdivisions/dominica.json +41 -41
  592. package/src/_modules/location/_collections/assets/country-subdivisions/dominican-republic.json +41 -41
  593. package/src/_modules/location/_collections/assets/country-subdivisions/ecuador.json +97 -97
  594. package/src/_modules/location/_collections/assets/country-subdivisions/egypt.json +117 -117
  595. package/src/_modules/location/_collections/assets/country-subdivisions/el-salvador.json +57 -57
  596. package/src/_modules/location/_collections/assets/country-subdivisions/equatorial-guinea.json +9 -9
  597. package/src/_modules/location/_collections/assets/country-subdivisions/eritrea.json +25 -25
  598. package/src/_modules/location/_collections/assets/country-subdivisions/estonia.json +61 -61
  599. package/src/_modules/location/_collections/assets/country-subdivisions/ethiopia.json +45 -45
  600. package/src/_modules/location/_collections/assets/country-subdivisions/fiji.json +21 -21
  601. package/src/_modules/location/_collections/assets/country-subdivisions/finland.json +77 -77
  602. package/src/_modules/location/_collections/assets/country-subdivisions/france.json +133 -133
  603. package/src/_modules/location/_collections/assets/country-subdivisions/gabon.json +37 -37
  604. package/src/_modules/location/_collections/assets/country-subdivisions/gambia.json +25 -25
  605. package/src/_modules/location/_collections/assets/country-subdivisions/georgia.json +49 -49
  606. package/src/_modules/location/_collections/assets/country-subdivisions/germany.json +65 -65
  607. package/src/_modules/location/_collections/assets/country-subdivisions/ghana.json +41 -41
  608. package/src/_modules/location/_collections/assets/country-subdivisions/greece.json +53 -53
  609. package/src/_modules/location/_collections/assets/country-subdivisions/greenland.json +17 -17
  610. package/src/_modules/location/_collections/assets/country-subdivisions/grenada.json +29 -29
  611. package/src/_modules/location/_collections/assets/country-subdivisions/guatemala.json +89 -89
  612. package/src/_modules/location/_collections/assets/country-subdivisions/guinea-bissau.json +13 -13
  613. package/src/_modules/location/_collections/assets/country-subdivisions/guinea.json +33 -33
  614. package/src/_modules/location/_collections/assets/country-subdivisions/guyana.json +41 -41
  615. package/src/_modules/location/_collections/assets/country-subdivisions/haiti.json +41 -41
  616. package/src/_modules/location/_collections/assets/country-subdivisions/honduras.json +73 -73
  617. package/src/_modules/location/_collections/assets/country-subdivisions/hong-kong.json +4 -4
  618. package/src/_modules/location/_collections/assets/country-subdivisions/hungary.json +173 -173
  619. package/src/_modules/location/_collections/assets/country-subdivisions/iceland.json +37 -37
  620. package/src/_modules/location/_collections/assets/country-subdivisions/india.json +181 -181
  621. package/src/_modules/location/_collections/assets/country-subdivisions/indonesia.json +29 -29
  622. package/src/_modules/location/_collections/assets/country-subdivisions/iran-islamic-republic-of.json +125 -125
  623. package/src/_modules/location/_collections/assets/country-subdivisions/iraq.json +73 -73
  624. package/src/_modules/location/_collections/assets/country-subdivisions/ireland.json +17 -17
  625. package/src/_modules/location/_collections/assets/country-subdivisions/israel.json +25 -25
  626. package/src/_modules/location/_collections/assets/country-subdivisions/italy.json +81 -81
  627. package/src/_modules/location/_collections/assets/country-subdivisions/jamaica.json +57 -57
  628. package/src/_modules/location/_collections/assets/country-subdivisions/japan.json +189 -189
  629. package/src/_modules/location/_collections/assets/country-subdivisions/jordan.json +49 -49
  630. package/src/_modules/location/_collections/assets/country-subdivisions/kazakhstan.json +65 -65
  631. package/src/_modules/location/_collections/assets/country-subdivisions/kenya.json +33 -33
  632. package/src/_modules/location/_collections/assets/country-subdivisions/kiribati.json +13 -13
  633. package/src/_modules/location/_collections/assets/country-subdivisions/korea-democratic-people-s-republic-of.json +45 -45
  634. package/src/_modules/location/_collections/assets/country-subdivisions/korea-republic-of.json +69 -69
  635. package/src/_modules/location/_collections/assets/country-subdivisions/kuwait.json +25 -25
  636. package/src/_modules/location/_collections/assets/country-subdivisions/kyrgyzstan.json +33 -33
  637. package/src/_modules/location/_collections/assets/country-subdivisions/lao-people-s-democratic-republic.json +73 -73
  638. package/src/_modules/location/_collections/assets/country-subdivisions/latvia.json +477 -477
  639. package/src/_modules/location/_collections/assets/country-subdivisions/lebanon.json +33 -33
  640. package/src/_modules/location/_collections/assets/country-subdivisions/lesotho.json +41 -41
  641. package/src/_modules/location/_collections/assets/country-subdivisions/liberia.json +61 -61
  642. package/src/_modules/location/_collections/assets/country-subdivisions/libyan-arab-jamahiriya.json +89 -89
  643. package/src/_modules/location/_collections/assets/country-subdivisions/liechtenstein.json +45 -45
  644. package/src/_modules/location/_collections/assets/country-subdivisions/lithuania.json +41 -41
  645. package/src/_modules/location/_collections/assets/country-subdivisions/luxembourg.json +13 -13
  646. package/src/_modules/location/_collections/assets/country-subdivisions/macedonia-the-former-yugoslav-republic-of.json +337 -337
  647. package/src/_modules/location/_collections/assets/country-subdivisions/madagascar.json +25 -25
  648. package/src/_modules/location/_collections/assets/country-subdivisions/malawi.json +13 -13
  649. package/src/_modules/location/_collections/assets/country-subdivisions/malaysia.json +81 -81
  650. package/src/_modules/location/_collections/assets/country-subdivisions/maldives.json +33 -33
  651. package/src/_modules/location/_collections/assets/country-subdivisions/mali.json +37 -37
  652. package/src/_modules/location/_collections/assets/country-subdivisions/malta.json +273 -273
  653. package/src/_modules/location/_collections/assets/country-subdivisions/marshall-islands.json +9 -9
  654. package/src/_modules/location/_collections/assets/country-subdivisions/mauritania.json +53 -53
  655. package/src/_modules/location/_collections/assets/country-subdivisions/mauritius.json +69 -69
  656. package/src/_modules/location/_collections/assets/country-subdivisions/mexico.json +161 -161
  657. package/src/_modules/location/_collections/assets/country-subdivisions/micronesia-federated-states-of.json +17 -17
  658. package/src/_modules/location/_collections/assets/country-subdivisions/moldova-republic-of.json +149 -149
  659. package/src/_modules/location/_collections/assets/country-subdivisions/monaco.json +69 -69
  660. package/src/_modules/location/_collections/assets/country-subdivisions/mongolia.json +89 -89
  661. package/src/_modules/location/_collections/assets/country-subdivisions/montenegro.json +93 -93
  662. package/src/_modules/location/_collections/assets/country-subdivisions/morocco.json +65 -65
  663. package/src/_modules/location/_collections/assets/country-subdivisions/mozambique.json +45 -45
  664. package/src/_modules/location/_collections/assets/country-subdivisions/myanmar.json +57 -57
  665. package/src/_modules/location/_collections/assets/country-subdivisions/namibia.json +57 -57
  666. package/src/_modules/location/_collections/assets/country-subdivisions/nauru.json +57 -57
  667. package/src/_modules/location/_collections/assets/country-subdivisions/nepal.json +21 -21
  668. package/src/_modules/location/_collections/assets/country-subdivisions/netherlands.json +91 -91
  669. package/src/_modules/location/_collections/assets/country-subdivisions/new-zealand.json +111 -111
  670. package/src/_modules/location/_collections/assets/country-subdivisions/nicaragua.json +69 -69
  671. package/src/_modules/location/_collections/assets/country-subdivisions/niger.json +33 -33
  672. package/src/_modules/location/_collections/assets/country-subdivisions/nigeria.json +149 -149
  673. package/src/_modules/location/_collections/assets/country-subdivisions/norway.json +85 -85
  674. package/src/_modules/location/_collections/assets/country-subdivisions/oman.json +37 -37
  675. package/src/_modules/location/_collections/assets/country-subdivisions/pakistan.json +33 -33
  676. package/src/_modules/location/_collections/assets/country-subdivisions/palau.json +65 -65
  677. package/src/_modules/location/_collections/assets/country-subdivisions/palestinian-territory-occupied.json +65 -65
  678. package/src/_modules/location/_collections/assets/country-subdivisions/panama.json +53 -53
  679. package/src/_modules/location/_collections/assets/country-subdivisions/papua-new-guinea.json +81 -81
  680. package/src/_modules/location/_collections/assets/country-subdivisions/paraguay.json +73 -73
  681. package/src/_modules/location/_collections/assets/country-subdivisions/peru.json +105 -105
  682. package/src/_modules/location/_collections/assets/country-subdivisions/philippines.json +69 -69
  683. package/src/_modules/location/_collections/assets/country-subdivisions/poland.json +65 -65
  684. package/src/_modules/location/_collections/assets/country-subdivisions/portugal.json +81 -81
  685. package/src/_modules/location/_collections/assets/country-subdivisions/qatar.json +29 -29
  686. package/src/_modules/location/_collections/assets/country-subdivisions/romania.json +169 -169
  687. package/src/_modules/location/_collections/assets/country-subdivisions/russian-federation.json +499 -499
  688. package/src/_modules/location/_collections/assets/country-subdivisions/rwanda.json +21 -21
  689. package/src/_modules/location/_collections/assets/country-subdivisions/saint-helena-ascension-and-tristan-da-cunha.json +13 -13
  690. package/src/_modules/location/_collections/assets/country-subdivisions/saint-kitts-and-nevis.json +9 -9
  691. package/src/_modules/location/_collections/assets/country-subdivisions/saint-lucia.json +45 -45
  692. package/src/_modules/location/_collections/assets/country-subdivisions/saint-vincent-and-the-grenadines.json +25 -25
  693. package/src/_modules/location/_collections/assets/country-subdivisions/samoa.json +45 -45
  694. package/src/_modules/location/_collections/assets/country-subdivisions/san-marino.json +37 -37
  695. package/src/_modules/location/_collections/assets/country-subdivisions/sao-tome-and-principe.json +9 -9
  696. package/src/_modules/location/_collections/assets/country-subdivisions/saudi-arabia.json +53 -53
  697. package/src/_modules/location/_collections/assets/country-subdivisions/senegal.json +57 -57
  698. package/src/_modules/location/_collections/assets/country-subdivisions/serbia.json +9 -9
  699. package/src/_modules/location/_collections/assets/country-subdivisions/seychelles.json +101 -101
  700. package/src/_modules/location/_collections/assets/country-subdivisions/sierra-leone.json +17 -17
  701. package/src/_modules/location/_collections/assets/country-subdivisions/singapore.json +21 -21
  702. package/src/_modules/location/_collections/assets/country-subdivisions/slovakia.json +33 -33
  703. package/src/_modules/location/_collections/assets/country-subdivisions/slovenia.json +841 -841
  704. package/src/_modules/location/_collections/assets/country-subdivisions/solomon-islands.json +41 -41
  705. package/src/_modules/location/_collections/assets/country-subdivisions/somalia.json +73 -73
  706. package/src/_modules/location/_collections/assets/country-subdivisions/south-africa.json +37 -37
  707. package/src/_modules/location/_collections/assets/country-subdivisions/south-sudan.json +41 -41
  708. package/src/_modules/location/_collections/assets/country-subdivisions/spain.json +346 -346
  709. package/src/_modules/location/_collections/assets/country-subdivisions/sri-lanka.json +37 -37
  710. package/src/_modules/location/_collections/assets/country-subdivisions/sudan.json +69 -69
  711. package/src/_modules/location/_collections/assets/country-subdivisions/suriname.json +41 -41
  712. package/src/_modules/location/_collections/assets/country-subdivisions/swaziland.json +17 -17
  713. package/src/_modules/location/_collections/assets/country-subdivisions/sweden.json +85 -85
  714. package/src/_modules/location/_collections/assets/country-subdivisions/switzerland.json +105 -105
  715. package/src/_modules/location/_collections/assets/country-subdivisions/syrian-arab-republic.json +57 -57
  716. package/src/_modules/location/_collections/assets/country-subdivisions/taiwan-province-of-china.json +93 -93
  717. package/src/_modules/location/_collections/assets/country-subdivisions/tajikistan.json +17 -17
  718. package/src/_modules/location/_collections/assets/country-subdivisions/tanzania-united-republic-of.json +105 -105
  719. package/src/_modules/location/_collections/assets/country-subdivisions/thailand.json +313 -313
  720. package/src/_modules/location/_collections/assets/country-subdivisions/timor-leste.json +53 -53
  721. package/src/_modules/location/_collections/assets/country-subdivisions/togo.json +21 -21
  722. package/src/_modules/location/_collections/assets/country-subdivisions/tonga.json +21 -21
  723. package/src/_modules/location/_collections/assets/country-subdivisions/trinidad-and-tobago.json +65 -65
  724. package/src/_modules/location/_collections/assets/country-subdivisions/tunisia.json +97 -97
  725. package/src/_modules/location/_collections/assets/country-subdivisions/turkey.json +325 -325
  726. package/src/_modules/location/_collections/assets/country-subdivisions/turkmenistan.json +25 -25
  727. package/src/_modules/location/_collections/assets/country-subdivisions/tuvalu.json +33 -33
  728. package/src/_modules/location/_collections/assets/country-subdivisions/uganda.json +17 -17
  729. package/src/_modules/location/_collections/assets/country-subdivisions/ukraine.json +109 -109
  730. package/src/_modules/location/_collections/assets/country-subdivisions/united-arab-emirates.json +29 -29
  731. package/src/_modules/location/_collections/assets/country-subdivisions/united-kingdom.json +1196 -1196
  732. package/src/_modules/location/_collections/assets/country-subdivisions/united-states-minor-outlying-islands.json +37 -37
  733. package/src/_modules/location/_collections/assets/country-subdivisions/united-states.json +286 -286
  734. package/src/_modules/location/_collections/assets/country-subdivisions/uruguay.json +77 -77
  735. package/src/_modules/location/_collections/assets/country-subdivisions/uzbekistan.json +57 -57
  736. package/src/_modules/location/_collections/assets/country-subdivisions/vanuatu.json +25 -25
  737. package/src/_modules/location/_collections/assets/country-subdivisions/venezuela.json +101 -101
  738. package/src/_modules/location/_collections/assets/country-subdivisions/viet-nam.json +257 -257
  739. package/src/_modules/location/_collections/assets/country-subdivisions/yemen.json +85 -85
  740. package/src/_modules/location/_collections/assets/country-subdivisions/zambia.json +37 -37
  741. package/src/_modules/location/_collections/assets/country-subdivisions/zimbabwe.json +41 -41
  742. package/src/_modules/location/_collections/loc-country-divisions.const.ts +10 -10
  743. package/src/_modules/location/_collections/loc-country-isos.const.ts +8 -8
  744. package/src/_modules/location/_collections/loc-regions.util.spec.ts +61 -61
  745. package/src/_modules/location/_collections/loc-regions.util.ts +137 -137
  746. package/src/_modules/location/_collections/loc.util.spec.ts +52 -52
  747. package/src/_modules/location/_collections/loc.util.ts +74 -74
  748. package/src/_modules/location/_enums/loc-region.enum.ts +14 -14
  749. package/src/_modules/location/_enums/loc-sub-region.enum.ts +31 -31
  750. package/src/_modules/location/_enums/loc-subdivision-region-type.enum.ts +47 -47
  751. package/src/_modules/location/_models/loc-coordinates.interface.ts +7 -7
  752. package/src/_modules/location/_models/loc-country-division.interface.ts +8 -8
  753. package/src/_modules/location/_models/loc-country-iso.interface.ts +23 -23
  754. package/src/_modules/location/_models/loc-country-phone-code.interface.ts +9 -9
  755. package/src/_modules/location/_models/loc-division-collection.interface.ts +12 -12
  756. package/src/_modules/location/_models/loc-division-region-data.interface.ts +9 -9
  757. package/src/_modules/location/_models/loc-geo-ip-location.interface.ts +27 -27
  758. package/src/_modules/location/index.ts +22 -22
  759. package/src/_modules/messaging/README.md +279 -279
  760. package/src/_modules/messaging/_collections/msg-module-settings.const.ts +46 -46
  761. package/src/_modules/messaging/_enums/msg-attachment-type.enum.ts +26 -26
  762. package/src/_modules/messaging/_enums/msg-delivery-status.enum.ts +17 -17
  763. package/src/_modules/messaging/_enums/msg-event-key.enum.ts +31 -31
  764. package/src/_modules/messaging/_enums/msg-participant-role.enum.ts +20 -20
  765. package/src/_modules/messaging/_enums/msg-provider-type.enum.ts +7 -7
  766. package/src/_modules/messaging/_enums/msg-type.enum.ts +23 -23
  767. package/src/_modules/messaging/_models/msg-attachment.interface.ts +46 -46
  768. package/src/_modules/messaging/_models/msg-conversation.data-model.spec.ts +69 -69
  769. package/src/_modules/messaging/_models/msg-conversation.data-model.ts +96 -96
  770. package/src/_modules/messaging/_models/msg-mention.interface.ts +29 -29
  771. package/src/_modules/messaging/_models/msg-message.data-model.spec.ts +79 -79
  772. package/src/_modules/messaging/_models/msg-message.data-model.ts +127 -127
  773. package/src/_modules/messaging/_models/msg-participant.interface.ts +46 -46
  774. package/src/_modules/messaging/_models/msg-reaction.interface.ts +20 -20
  775. package/src/_modules/messaging/_models/msg-thread-info.interface.ts +35 -35
  776. package/src/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.ts +35 -35
  777. package/src/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.ts +23 -23
  778. package/src/_modules/messaging/_modules/agent/_models/agt-process-step.interface.ts +55 -55
  779. package/src/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.ts +26 -26
  780. package/src/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.ts +37 -37
  781. package/src/_modules/messaging/_modules/agent/index.ts +8 -8
  782. package/src/_modules/messaging/index.ts +28 -28
  783. package/src/_modules/ngx-models/_collections/angular-placeholders.ts +35 -0
  784. package/src/_modules/ngx-models/_collections/button-new-style-settings-presets.const.ts +181 -0
  785. package/src/_modules/ngx-models/_collections/dynamo-global.settings.spec.ts +74 -0
  786. package/src/_modules/ngx-models/_collections/dynamo-global.settings.ts +103 -0
  787. package/src/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.ts +16 -0
  788. package/src/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.ts +14 -0
  789. package/src/_modules/ngx-models/_enums/button-new/button-new-size.enum.ts +16 -0
  790. package/src/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.ts +18 -0
  791. package/src/_modules/ngx-models/_enums/button-type.enum.ts +36 -0
  792. package/src/_modules/ngx-models/_enums/checkbox-label-position.enum.ts +8 -0
  793. package/src/_modules/ngx-models/_enums/container-type.enum.ts +11 -0
  794. package/src/_modules/ngx-models/_enums/errors/error-level.enum.ts +13 -0
  795. package/src/_modules/ngx-models/_enums/errors/error-notification-color.enum.ts +13 -0
  796. package/src/_modules/ngx-models/_enums/errors/error-ui-mode.enum.ts +13 -0
  797. package/src/_modules/ngx-models/_enums/field-appearance.enum.ts +14 -0
  798. package/src/_modules/ngx-models/_enums/field-type.enum.ts +52 -0
  799. package/src/_modules/ngx-models/_enums/file-type.enum.ts +12 -0
  800. package/src/_modules/ngx-models/_enums/flex/flex-layout-align.enum.ts +21 -0
  801. package/src/_modules/ngx-models/_enums/flex/flex-layout.enum.ts +5 -0
  802. package/src/_modules/ngx-models/_enums/form-access.enum.ts +9 -0
  803. package/src/_modules/ngx-models/_enums/form-reset-data.enum.ts +12 -0
  804. package/src/_modules/ngx-models/_enums/form-store-on.enum.ts +9 -0
  805. package/src/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.ts +20 -0
  806. package/src/_modules/ngx-models/_enums/frames/header-item-type.enum.ts +15 -0
  807. package/src/_modules/ngx-models/_enums/frames/header-position.enum.ts +10 -0
  808. package/src/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.ts +13 -0
  809. package/src/_modules/ngx-models/_enums/html/input-types.enum.ts +27 -0
  810. package/src/_modules/ngx-models/_enums/material-color.enum.ts +16 -0
  811. package/src/_modules/ngx-models/_enums/material-tooltip-position.enum.ts +17 -0
  812. package/src/_modules/ngx-models/_enums/preconfigured-field-type.enum.ts +8 -0
  813. package/src/_modules/ngx-models/_enums/storage-type.enum.ts +15 -0
  814. package/src/_modules/ngx-models/_enums/validator-type.enum.ts +9 -0
  815. package/src/_modules/ngx-models/_enums/voice/audio-mime-type.enum.ts +14 -0
  816. package/src/_modules/ngx-models/_enums/voice/voice-provider-type.enum.ts +26 -0
  817. package/src/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.ts +20 -0
  818. package/src/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.ts +37 -0
  819. package/src/_modules/ngx-models/_models/control-models/button-params.control-model.spec.ts +70 -0
  820. package/src/_modules/ngx-models/_models/control-models/button-params.control-model.ts +332 -0
  821. package/src/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.ts +28 -0
  822. package/src/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.spec.ts +91 -0
  823. package/src/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.ts +135 -0
  824. package/src/_modules/ngx-models/_models/control-models/data-handler.control-model.ts +498 -0
  825. package/src/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.ts +52 -0
  826. package/src/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.ts +34 -0
  827. package/src/_modules/ngx-models/_models/control-models/errors/errors-pojo.spec.ts +86 -0
  828. package/src/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.ts +52 -0
  829. package/src/_modules/ngx-models/_models/control-models/field-settings.control-model.spec.ts +109 -0
  830. package/src/_modules/ngx-models/_models/control-models/field-settings.control-model.ts +133 -0
  831. package/src/_modules/ngx-models/_models/control-models/form-settings.control-model.spec.ts +109 -0
  832. package/src/_modules/ngx-models/_models/control-models/form-settings.control-model.ts +160 -0
  833. package/src/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.ts +25 -0
  834. package/src/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.ts +26 -0
  835. package/src/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.ts +85 -0
  836. package/src/_modules/ngx-models/_models/control-models/forms-new/field-new-types.ts +24 -0
  837. package/src/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.ts +40 -0
  838. package/src/_modules/ngx-models/_models/control-models/forms-new/forms-new.spec.ts +179 -0
  839. package/src/_modules/ngx-models/_models/control-models/forms-new/index.ts +13 -0
  840. package/src/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.ts +27 -0
  841. package/src/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.ts +24 -0
  842. package/src/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.ts +46 -0
  843. package/src/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.ts +30 -0
  844. package/src/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.ts +22 -0
  845. package/src/_modules/ngx-models/_models/control-models/frames/frames-pojo.spec.ts +108 -0
  846. package/src/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.ts +52 -0
  847. package/src/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.ts +40 -0
  848. package/src/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.ts +55 -0
  849. package/src/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.ts +30 -0
  850. package/src/_modules/ngx-models/_models/control-models/select.control-model.spec.ts +45 -0
  851. package/src/_modules/ngx-models/_models/control-models/select.control-model.ts +28 -0
  852. package/src/_modules/ngx-models/_models/control-models/voice/voice-pojo.spec.ts +111 -0
  853. package/src/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.ts +74 -0
  854. package/src/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.ts +42 -0
  855. package/src/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.ts +37 -0
  856. package/src/_modules/ngx-models/_models/interfaces/button-new-settings.interface.ts +74 -0
  857. package/src/_modules/ngx-models/_models/interfaces/confirm-settings.interface.ts +20 -0
  858. package/src/_modules/ngx-models/_models/interfaces/global-settings.interface.ts +67 -0
  859. package/src/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.ts +40 -0
  860. package/src/_modules/ngx-models/_models/interfaces/storage.service.spec.ts +18 -0
  861. package/src/_modules/ngx-models/_models/interfaces/storage.service.ts +41 -0
  862. package/src/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.ts +19 -0
  863. package/src/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.ts +14 -0
  864. package/src/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.ts +14 -0
  865. package/src/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.ts +15 -0
  866. package/src/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.ts +18 -0
  867. package/src/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.ts +21 -0
  868. package/src/_modules/ngx-models/_utils/shared.service.spec.ts +7 -0
  869. package/src/_modules/ngx-models/_utils/shared.service.ts +541 -0
  870. package/src/_modules/ngx-models/index.ts +110 -0
  871. package/src/_modules/pipe/_collections/pip-transforms.const.ts +42 -42
  872. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.spec.ts +47 -47
  873. package/src/_modules/pipe/_collections/utils/pip-country-pipe.util.ts +41 -41
  874. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.spec.ts +39 -39
  875. package/src/_modules/pipe/_collections/utils/pip-custom-pipe.util.ts +30 -30
  876. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.spec.ts +41 -41
  877. package/src/_modules/pipe/_collections/utils/pip-division-pipe.util.ts +36 -36
  878. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.spec.ts +62 -62
  879. package/src/_modules/pipe/_collections/utils/pip-json-pipe.util.ts +17 -17
  880. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.spec.ts +34 -34
  881. package/src/_modules/pipe/_collections/utils/pip-list-pipe.util.ts +25 -25
  882. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.spec.ts +67 -67
  883. package/src/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.ts +226 -226
  884. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.spec.ts +28 -28
  885. package/src/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.ts +21 -21
  886. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.spec.ts +59 -59
  887. package/src/_modules/pipe/_collections/utils/pip-range-pipe.util.ts +106 -106
  888. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.spec.ts +31 -31
  889. package/src/_modules/pipe/_collections/utils/pip-region-pipe.util.ts +35 -35
  890. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.spec.ts +44 -44
  891. package/src/_modules/pipe/_collections/utils/pip-replace-pipe.util.ts +23 -23
  892. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.spec.ts +21 -21
  893. package/src/_modules/pipe/_collections/utils/pip-slider-pipe.util.ts +33 -33
  894. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.spec.ts +62 -62
  895. package/src/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.ts +80 -80
  896. package/src/_modules/pipe/_enums/pip-range-pipe-setting.enum.ts +15 -15
  897. package/src/_modules/pipe/_enums/pip.enum.ts +65 -65
  898. package/src/_modules/pipe/_models/pip-multi-pipe-settings.type.ts +8 -8
  899. package/src/_modules/pipe/_models/pip-transforms.interface.ts +30 -30
  900. package/src/_modules/pipe/index.ts +30 -30
  901. package/src/_modules/socket/_enums/sck-event-key.enum.ts +21 -21
  902. package/src/_modules/socket/_models/sck-client-params.control-model.spec.ts +67 -67
  903. package/src/_modules/socket/_models/sck-client-params.control-model.ts +50 -50
  904. package/src/_modules/socket/_models/sck-socket-event.control-model.spec.ts +66 -66
  905. package/src/_modules/socket/_models/sck-socket-event.control-model.ts +172 -172
  906. package/src/_modules/socket/_services/sck-client.service-base.spec.ts +99 -99
  907. package/src/_modules/socket/_services/sck-client.service-base.ts +353 -353
  908. package/src/_modules/socket/index.ts +14 -14
  909. package/src/_modules/test/_collections/tst-module-settings.const.ts +67 -67
  910. package/src/_modules/test/index.ts +5 -5
  911. package/src/_modules/usage/_collections/usg-module-settings.const.ts +33 -33
  912. package/src/_modules/usage/_models/usg-action.control-model.spec.ts +27 -27
  913. package/src/_modules/usage/_models/usg-action.control-model.ts +28 -28
  914. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.spec.ts +36 -36
  915. package/src/_modules/usage/_models/usg-daily-usage-data.control-model.ts +35 -35
  916. package/src/_modules/usage/_models/usg-data.control-model.spec.ts +41 -41
  917. package/src/_modules/usage/_models/usg-data.control-model.ts +35 -35
  918. package/src/_modules/usage/_models/usg-session.data-model.spec.ts +97 -97
  919. package/src/_modules/usage/_models/usg-session.data-model.ts +72 -72
  920. package/src/_modules/usage/index.ts +11 -11
  921. package/src/index.ts +102 -102
  922. package/tsconfig.app.json +12 -12
  923. package/tsconfig.json +31 -31
  924. package/tsconfig.test.json +16 -16
  925. package/tslint.json +153 -153
@@ -1,513 +1,513 @@
1
- import { DyFM_Crypto } from './crypto.util';
2
-
3
- describe('| DyFM_Crypto basic tests', () => {
4
- const testKey = 'test-secret-key-123';
5
- const testData = { id: 1, name: 'test' };
6
-
7
- describe('| encrypt', () => {
8
- it('| should successfully encrypt data', () => {
9
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
10
-
11
- expect(encrypted).toBeDefined();
12
- expect(typeof encrypted).toBe('string');
13
- expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
14
- });
15
-
16
- it('| should encrypt different data with different results', () => {
17
- const data1 = { id: 1 };
18
- const data2 = { id: 2 };
19
-
20
- const encrypted1 = DyFM_Crypto.encrypt(data1, testKey);
21
- const encrypted2 = DyFM_Crypto.encrypt(data2, testKey);
22
-
23
- expect(encrypted1).not.toEqual(encrypted2);
24
- });
25
-
26
- it('| should throw DyFM_Error when encryption fails', () => {
27
- // @ts-ignore - Testing invalid input
28
- expect(() => DyFM_Crypto.encrypt(undefined, testKey)).toThrow();
29
- });
30
-
31
- it('| should handle complex objects', () => {
32
- const complexData = {
33
- id: 1,
34
- name: 'test',
35
- nested: {
36
- value: 'nested-value',
37
- array: [1, 2, 3]
38
- }
39
- };
40
-
41
- const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
42
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
43
-
44
- expect(decrypted).toEqual(complexData);
45
- });
46
-
47
- it('| should get the same result with the same input', () => {
48
- const complexData = {
49
- id: 2,
50
- name: 'test',
51
- nested: {
52
- value: 'nested-value',
53
- array: [1, 2, 3]
54
- }
55
- };
56
- const expectedResult = JSON.stringify(complexData);
57
-
58
- const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
59
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
60
-
61
- const result = JSON.stringify(decrypted);
62
- expect(result).toBe(expectedResult);
63
- });
64
-
65
- it('| should not effect the original object', () => {
66
- const complexData = {
67
- id: 1,
68
- name: 'test',
69
- nested: { value: 'nested-value', array: [1, 2, 3] }
70
- };
71
- const originalData = JSON.stringify(complexData);
72
-
73
- const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
74
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
75
-
76
- const result = JSON.stringify(decrypted);
77
- expect(result).toBe(originalData);
78
- });
79
-
80
- it('| should handle arrays', () => {
81
- const arrayData = [1, 'test', { nested: true }];
82
- const encrypted = DyFM_Crypto.encrypt(arrayData, testKey);
83
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
84
-
85
- expect(decrypted).toEqual(arrayData);
86
- });
87
-
88
- it('| should handle primitive values', () => {
89
- const stringData = 'test string';
90
- const numberData = 42;
91
- const booleanData = true;
92
-
93
- const encryptedString = DyFM_Crypto.encrypt(stringData, testKey);
94
- const encryptedNumber = DyFM_Crypto.encrypt(numberData, testKey);
95
- const encryptedBoolean = DyFM_Crypto.encrypt(booleanData, testKey);
96
-
97
- expect(DyFM_Crypto.decrypt(encryptedString, testKey)).toBe(stringData);
98
- expect(DyFM_Crypto.decrypt(encryptedNumber, testKey)).toBe(numberData);
99
- expect(DyFM_Crypto.decrypt(encryptedBoolean, testKey)).toBe(booleanData);
100
- });
101
- });
102
-
103
- describe('| decrypt', () => {
104
- it('| should successfully decrypt encrypted data', () => {
105
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
106
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
107
-
108
- expect(decrypted).toEqual(testData);
109
- });
110
-
111
- it('| should throw DyFM_Error when decryption fails', () => {
112
- expect(() => DyFM_Crypto.decrypt('invalid-encrypted-data', testKey)).toThrow();
113
- });
114
-
115
- it('| should throw DyFM_Error when using wrong key', () => {
116
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
117
- expect(() => DyFM_Crypto.decrypt(encrypted, 'wrong-key')).toThrow();
118
- });
119
-
120
- it('| should throw DyFM_Error when encrypted data is modified', () => {
121
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
122
- const modified = encrypted.slice(0, -1) + 'A';
123
- expect(() => DyFM_Crypto.decrypt(modified, testKey)).toThrow();
124
- });
125
- });
126
-
127
- describe('| URL-safe encryption', () => {
128
- it('| should produce URL-safe strings', () => {
129
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
130
- expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
131
- });
132
-
133
- it('| should work in HTTP headers', () => {
134
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
135
- const header = `Bearer ${encrypted}`;
136
- const extracted = header.split(' ')[1];
137
- const decrypted = DyFM_Crypto.decrypt(extracted, testKey);
138
- expect(decrypted).toEqual(testData);
139
- });
140
-
141
- it('| should work in URLs', () => {
142
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
143
- const url = `https://example.com/api?token=${encrypted}`;
144
- const params = new URLSearchParams(url.split('?')[1]);
145
- const extracted = params.get('token');
146
- const decrypted = DyFM_Crypto.decrypt(extracted!, testKey);
147
- expect(decrypted).toEqual(testData);
148
- });
149
- });
150
-
151
- describe('| LONG-TERM STABILITY TESTS - Cross-platform compatibility', () => {
152
- describe('| Deterministic encryption consistency', () => {
153
- it('| should produce identical encrypted output for identical input across multiple calls', () => {
154
- const testData = { id: 1, name: 'test', timestamp: '2024-01-01T00:00:00Z' };
155
- const key = 'stable-test-key-123';
156
-
157
- // Multiple encryption calls should produce identical results
158
- const encrypted1 = DyFM_Crypto.encrypt(testData, key);
159
- const encrypted2 = DyFM_Crypto.encrypt(testData, key);
160
- const encrypted3 = DyFM_Crypto.encrypt(testData, key);
161
-
162
- expect(encrypted1).toBe(encrypted2);
163
- expect(encrypted2).toBe(encrypted3);
164
- expect(encrypted1).toBe(encrypted3);
165
-
166
- // All should decrypt to the same data
167
- const decrypted1 = DyFM_Crypto.decrypt(encrypted1, key);
168
- const decrypted2 = DyFM_Crypto.decrypt(encrypted2, key);
169
- const decrypted3 = DyFM_Crypto.decrypt(encrypted3, key);
170
-
171
- expect(decrypted1).toEqual(decrypted2);
172
- expect(decrypted2).toEqual(decrypted3);
173
- expect(decrypted1).toEqual(testData);
174
- });
175
-
176
- it('| should maintain consistency with different data types and structures', () => {
177
- const testCases = [
178
- { data: { id: 1, name: 'simple' }, key: 'key1' },
179
- { data: 'plain string', key: 'key2' },
180
- { data: [1, 2, 3, 'array'], key: 'key3' },
181
- { data: { nested: { deep: { value: true } } }, key: 'key4' },
182
- { data: { empty: {}, null: null }, key: 'key5' } // Removed undefined as it gets filtered out
183
- ];
184
-
185
- testCases.forEach(({ data, key }) => {
186
- const encrypted1 = DyFM_Crypto.encrypt(data, key);
187
- const encrypted2 = DyFM_Crypto.encrypt(data, key);
188
- expect(encrypted1).toBe(encrypted2);
189
-
190
- const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
191
- expect(decrypted).toEqual(data);
192
- });
193
- });
194
-
195
- it('| should handle edge cases consistently', () => {
196
- const edgeCases = [
197
- { data: 'non-empty', key: 'non-empty-string-key' },
198
- { data: 0, key: 'zero-number-key' },
199
- { data: false, key: 'false-boolean-key' },
200
- { data: { a: 0, b: false, c: 'non-empty' }, key: 'mixed-edge-key' }
201
- ];
202
-
203
- edgeCases.forEach(({ data, key }) => {
204
- const encrypted1 = DyFM_Crypto.encrypt(data, key);
205
- const encrypted2 = DyFM_Crypto.encrypt(data, key);
206
- expect(encrypted1).toBe(encrypted2);
207
-
208
- const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
209
- expect(decrypted).toEqual(data);
210
- });
211
- });
212
- });
213
-
214
- describe('| Cross-version compatibility simulation', () => {
215
- it('| should handle data encrypted with different configurations consistently', () => {
216
- const testData = { id: 1, name: 'config-test' };
217
- const key = 'config-test-key';
218
-
219
- // Test with default config
220
- const defaultEncrypted = DyFM_Crypto.encrypt(testData, key);
221
- const defaultDecrypted = DyFM_Crypto.decrypt(defaultEncrypted, key);
222
- expect(defaultDecrypted).toEqual(testData);
223
-
224
- // Test with custom config
225
- const customConfig = { keyIterations: 500, keySize: 6 };
226
- const customEncrypted = DyFM_Crypto.encrypt(testData, key, customConfig);
227
- const customDecrypted = DyFM_Crypto.decrypt(customEncrypted, key, customConfig);
228
- expect(customDecrypted).toEqual(testData);
229
-
230
- // Test that different configs produce different encrypted results
231
- expect(defaultEncrypted).not.toBe(customEncrypted);
232
- });
233
-
234
- it('| should maintain backward compatibility with existing encrypted data', () => {
235
- // Simulate data that was encrypted with previous version
236
- const legacyData = { id: 1, name: 'legacy-test', version: '1.0' };
237
- const key = 'legacy-key';
238
-
239
- // Encrypt with current implementation
240
- const encrypted = DyFM_Crypto.encrypt(legacyData, key);
241
-
242
- // Simulate system restart/reload
243
- const decrypted = DyFM_Crypto.decrypt(encrypted, key);
244
- expect(decrypted).toEqual(legacyData);
245
-
246
- // Re-encrypt should produce same result
247
- const reEncrypted = DyFM_Crypto.encrypt(decrypted, key);
248
- expect(reEncrypted).toBe(encrypted);
249
- });
250
- });
251
-
252
- describe('| Platform independence tests', () => {
253
- it('| should handle different character encodings consistently', () => {
254
- const unicodeData = {
255
- hungarian: 'árvíztűrő tükörfúrógép',
256
- chinese: '你好世界',
257
- emoji: '🚀💻🔒',
258
- special: '!@#$%^&*()_+-=[]{}|;:,.<>?'
259
- };
260
- const key = 'unicode-test-key';
261
-
262
- const encrypted = DyFM_Crypto.encrypt(unicodeData, key);
263
- const decrypted = DyFM_Crypto.decrypt(encrypted, key);
264
- expect(decrypted).toEqual(unicodeData);
265
-
266
- // Multiple encryptions should be identical
267
- const encrypted2 = DyFM_Crypto.encrypt(unicodeData, key);
268
- expect(encrypted).toBe(encrypted2);
269
- });
270
-
271
- it('| should handle large data objects consistently', () => {
272
- // Create a large object with many properties
273
- const largeData: any = { id: 1 };
274
- for (let i = 0; i < 100; i++) {
275
- largeData[`prop${i}`] = `value${i}`;
276
- }
277
- const key = 'large-data-key';
278
-
279
- const encrypted1 = DyFM_Crypto.encrypt(largeData, key);
280
- const encrypted2 = DyFM_Crypto.encrypt(largeData, key);
281
- expect(encrypted1).toBe(encrypted2);
282
-
283
- const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
284
- expect(decrypted).toEqual(largeData);
285
- });
286
-
287
- it('| should handle nested circular references gracefully', () => {
288
- const circularData: any = { id: 1, name: 'circular' };
289
- circularData.self = circularData;
290
- const key = 'circular-key';
291
-
292
- // Should handle circular references without crashing
293
- expect(() => {
294
- const encrypted = DyFM_Crypto.encrypt(circularData, key);
295
- // Note: JSON.stringify will fail on circular refs, so this test ensures graceful handling
296
- }).toThrow(); // Expected to throw due to circular reference
297
- });
298
- });
299
-
300
- describe('| Time-based stability tests', () => {
301
- it('| should maintain consistency across time-based operations', () => {
302
- const timeData = {
303
- timestamp: new Date().toISOString(),
304
- id: 1,
305
- name: 'time-test'
306
- };
307
- const key = 'time-test-key';
308
-
309
- // Encrypt same data multiple times
310
- const encrypted1 = DyFM_Crypto.encrypt(timeData, key);
311
-
312
- // Simulate time passing
313
- setTimeout(() => {
314
- const encrypted2 = DyFM_Crypto.encrypt(timeData, key);
315
- expect(encrypted1).toBe(encrypted2);
316
- }, 100);
317
- });
318
-
319
- it('| should handle date objects consistently', () => {
320
- const dateData = {
321
- created: new Date('2024-01-01T00:00:00Z'),
322
- updated: new Date('2024-12-31T23:59:59Z'),
323
- id: 1
324
- };
325
- const key = 'date-test-key';
326
-
327
- const encrypted1 = DyFM_Crypto.encrypt(dateData, key);
328
- const encrypted2 = DyFM_Crypto.encrypt(dateData, key);
329
- expect(encrypted1).toBe(encrypted2);
330
-
331
- const decrypted = DyFM_Crypto.decrypt(encrypted1, key) as any;
332
- // Compare ISO strings since JSON serialization converts dates to strings
333
- expect(decrypted.created).toEqual(dateData.created.toISOString());
334
- expect(decrypted.updated).toEqual(dateData.updated.toISOString());
335
- expect(decrypted.id).toBe(dateData.id);
336
- });
337
- });
338
-
339
- describe('| Memory and performance stability', () => {
340
- it('| should handle multiple encryption/decryption cycles without memory leaks', () => {
341
- const testData = { id: 1, name: 'memory-test' };
342
- const key = 'memory-test-key';
343
-
344
- // Perform many encryption/decryption cycles
345
- for (let i = 0; i < 1000; i++) {
346
- const encrypted = DyFM_Crypto.encrypt(testData, key);
347
- const decrypted = DyFM_Crypto.decrypt(encrypted, key);
348
- expect(decrypted).toEqual(testData);
349
- }
350
- });
351
-
352
- it('| should maintain consistent performance across multiple operations', () => {
353
- const testData = { id: 1, name: 'performance-test' };
354
- const key = 'performance-test-key';
355
-
356
- const startTime = Date.now();
357
-
358
- // Perform multiple operations
359
- for (let i = 0; i < 100; i++) {
360
- const encrypted = DyFM_Crypto.encrypt(testData, key);
361
- const decrypted = DyFM_Crypto.decrypt(encrypted, key);
362
- expect(decrypted).toEqual(testData);
363
- }
364
-
365
- const endTime = Date.now();
366
- const duration = endTime - startTime;
367
-
368
- // Should complete within reasonable time (adjust threshold as needed)
369
- expect(duration).toBeLessThan(6000); // 6 seconds max
370
- });
371
- });
372
- });
373
-
374
- describe('| URL-safe base64 transmission edge cases', () => {
375
- it('| should handle encrypted data that loses padding during URL transmission', () => {
376
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
377
- // Simulate padding loss during URL transmission
378
- // Encrypted data already has no padding (removed in encrypt), so this tests normal behavior
379
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
380
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
381
- expect(decrypted).toEqual(testData);
382
- });
383
-
384
- it('| should handle encrypted data with 0 padding characters (normal case)', () => {
385
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
386
- // Encrypted data has no padding (removed by .replace(/=+$/, ''))
387
- expect(encrypted).not.toContain('=');
388
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
389
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
390
- expect(decrypted).toEqual(testData);
391
- });
392
-
393
- it('| should handle encrypted data that would need 1 padding character', () => {
394
- // Create a scenario where base64 would need 1 padding char
395
- // This is tested by encrypting and verifying it works without padding
396
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
397
- // If the encrypted string length % 4 === 3, it would need 1 padding char
398
- // But since padding is removed, we verify it still works
399
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
400
- });
401
-
402
- it('| should handle encrypted data that would need 2 padding characters', () => {
403
- // Create a scenario where base64 would need 2 padding chars
404
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
405
- // If the encrypted string length % 4 === 2, it would need 2 padding chars
406
- // Verify it works without explicit padding
407
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
408
- });
409
-
410
- it('| should handle encrypted data that would need 3 padding characters', () => {
411
- // Create a scenario where base64 would need 3 padding chars
412
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
413
- // If the encrypted string length % 4 === 1, it would need 3 padding chars
414
- // Verify it works without explicit padding
415
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
416
- });
417
-
418
- it('| should handle base64 strings that are valid but too short after parsing', () => {
419
- // Create a valid URL-safe base64 string that's too short
420
- const validButShort = 'ABCDEFGHIJKLMNOPQRSTUVWXY'; // 25 chars, valid format but too short
421
- expect(() => DyFM_Crypto.decrypt(validButShort, testKey)).toThrow();
422
- });
423
-
424
- it('| should handle round-trip encryption/decryption with padding edge cases', () => {
425
- // Test that encryption/decryption works correctly even when padding is removed
426
- const testCases = [
427
- { id: 1, name: 'test' },
428
- { id: 2, data: 'short' },
429
- { id: 3, data: 'A'.repeat(100) }, // Longer data
430
- { id: 4, nested: { value: true } }
431
- ];
432
-
433
- testCases.forEach(testCase => {
434
- const encrypted = DyFM_Crypto.encrypt(testCase, testKey);
435
- // Verify no padding in encrypted string
436
- expect(encrypted).not.toContain('=');
437
- // Verify round-trip works
438
- const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
439
- expect(decrypted).toEqual(testCase);
440
- });
441
- });
442
-
443
- it('| should handle URL-safe base64 conversion correctly', () => {
444
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
445
- // Verify it's URL-safe (no +, /, or =)
446
- expect(encrypted).not.toContain('+');
447
- expect(encrypted).not.toContain('/');
448
- expect(encrypted).not.toContain('=');
449
- // Verify it can be decrypted
450
- expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
451
- });
452
-
453
- it('| should handle base64 strings with various padding scenarios in transmission', () => {
454
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
455
-
456
- // Simulate different padding scenarios that might occur during transmission
457
- // Even though encrypted data has no padding, test that decryption handles it
458
- const scenarios = [
459
- encrypted, // No padding (normal)
460
- encrypted + '=', // 1 padding char added
461
- encrypted + '==', // 2 padding chars added
462
- encrypted + '===' // 3 padding chars added
463
- ];
464
-
465
- // The first one should work (no padding)
466
- expect(() => DyFM_Crypto.decrypt(scenarios[0], testKey)).not.toThrow();
467
-
468
- // Others might work or fail depending on base64 parsing
469
- scenarios.slice(1).forEach((scenario, index) => {
470
- // These might work if CryptoJS handles padding, or fail if data is corrupted
471
- try {
472
- const decrypted = DyFM_Crypto.decrypt(scenario, testKey);
473
- expect(decrypted).toEqual(testData);
474
- } catch {
475
- // If it fails, that's also acceptable as extra padding shouldn't be there
476
- expect(() => DyFM_Crypto.decrypt(scenario, testKey)).toThrow();
477
- }
478
- });
479
- });
480
-
481
- it('| should handle URL encoding/decoding edge cases', () => {
482
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
483
-
484
- // Simulate URL encoding (though encrypted data should already be URL-safe)
485
- // Test that the encrypted string works in URL contexts
486
- const urlEncoded = encodeURIComponent(encrypted);
487
- const urlDecoded = decodeURIComponent(urlEncoded);
488
-
489
- // Should be able to decrypt after URL encoding/decoding
490
- expect(() => DyFM_Crypto.decrypt(urlDecoded, testKey)).not.toThrow();
491
- const decrypted = DyFM_Crypto.decrypt(urlDecoded, testKey);
492
- expect(decrypted).toEqual(testData);
493
- });
494
-
495
- it('| should handle base64 strings that are valid format but truncated', () => {
496
- const encrypted = DyFM_Crypto.encrypt(testData, testKey);
497
- // Truncate to various lengths that are still valid base64 format
498
- const truncationPoints = [
499
- Math.floor(encrypted.length * 0.5),
500
- Math.floor(encrypted.length * 0.75),
501
- encrypted.length - 5,
502
- encrypted.length - 10
503
- ];
504
-
505
- truncationPoints.forEach(point => {
506
- const truncated = encrypted.substring(0, point);
507
- // Should throw error for truncated data
508
- expect(() => DyFM_Crypto.decrypt(truncated, testKey)).toThrow();
509
- });
510
- });
511
- });
512
-
1
+ import { DyFM_Crypto } from './crypto.util';
2
+
3
+ describe('| DyFM_Crypto basic tests', () => {
4
+ const testKey = 'test-secret-key-123';
5
+ const testData = { id: 1, name: 'test' };
6
+
7
+ describe('| encrypt', () => {
8
+ it('| should successfully encrypt data', () => {
9
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
10
+
11
+ expect(encrypted).toBeDefined();
12
+ expect(typeof encrypted).toBe('string');
13
+ expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
14
+ });
15
+
16
+ it('| should encrypt different data with different results', () => {
17
+ const data1 = { id: 1 };
18
+ const data2 = { id: 2 };
19
+
20
+ const encrypted1 = DyFM_Crypto.encrypt(data1, testKey);
21
+ const encrypted2 = DyFM_Crypto.encrypt(data2, testKey);
22
+
23
+ expect(encrypted1).not.toEqual(encrypted2);
24
+ });
25
+
26
+ it('| should throw DyFM_Error when encryption fails', () => {
27
+ // @ts-ignore - Testing invalid input
28
+ expect(() => DyFM_Crypto.encrypt(undefined, testKey)).toThrow();
29
+ });
30
+
31
+ it('| should handle complex objects', () => {
32
+ const complexData = {
33
+ id: 1,
34
+ name: 'test',
35
+ nested: {
36
+ value: 'nested-value',
37
+ array: [1, 2, 3]
38
+ }
39
+ };
40
+
41
+ const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
42
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
43
+
44
+ expect(decrypted).toEqual(complexData);
45
+ });
46
+
47
+ it('| should get the same result with the same input', () => {
48
+ const complexData = {
49
+ id: 2,
50
+ name: 'test',
51
+ nested: {
52
+ value: 'nested-value',
53
+ array: [1, 2, 3]
54
+ }
55
+ };
56
+ const expectedResult = JSON.stringify(complexData);
57
+
58
+ const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
59
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
60
+
61
+ const result = JSON.stringify(decrypted);
62
+ expect(result).toBe(expectedResult);
63
+ });
64
+
65
+ it('| should not effect the original object', () => {
66
+ const complexData = {
67
+ id: 1,
68
+ name: 'test',
69
+ nested: { value: 'nested-value', array: [1, 2, 3] }
70
+ };
71
+ const originalData = JSON.stringify(complexData);
72
+
73
+ const encrypted = DyFM_Crypto.encrypt(complexData, testKey);
74
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
75
+
76
+ const result = JSON.stringify(decrypted);
77
+ expect(result).toBe(originalData);
78
+ });
79
+
80
+ it('| should handle arrays', () => {
81
+ const arrayData = [1, 'test', { nested: true }];
82
+ const encrypted = DyFM_Crypto.encrypt(arrayData, testKey);
83
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
84
+
85
+ expect(decrypted).toEqual(arrayData);
86
+ });
87
+
88
+ it('| should handle primitive values', () => {
89
+ const stringData = 'test string';
90
+ const numberData = 42;
91
+ const booleanData = true;
92
+
93
+ const encryptedString = DyFM_Crypto.encrypt(stringData, testKey);
94
+ const encryptedNumber = DyFM_Crypto.encrypt(numberData, testKey);
95
+ const encryptedBoolean = DyFM_Crypto.encrypt(booleanData, testKey);
96
+
97
+ expect(DyFM_Crypto.decrypt(encryptedString, testKey)).toBe(stringData);
98
+ expect(DyFM_Crypto.decrypt(encryptedNumber, testKey)).toBe(numberData);
99
+ expect(DyFM_Crypto.decrypt(encryptedBoolean, testKey)).toBe(booleanData);
100
+ });
101
+ });
102
+
103
+ describe('| decrypt', () => {
104
+ it('| should successfully decrypt encrypted data', () => {
105
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
106
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
107
+
108
+ expect(decrypted).toEqual(testData);
109
+ });
110
+
111
+ it('| should throw DyFM_Error when decryption fails', () => {
112
+ expect(() => DyFM_Crypto.decrypt('invalid-encrypted-data', testKey)).toThrow();
113
+ });
114
+
115
+ it('| should throw DyFM_Error when using wrong key', () => {
116
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
117
+ expect(() => DyFM_Crypto.decrypt(encrypted, 'wrong-key')).toThrow();
118
+ });
119
+
120
+ it('| should throw DyFM_Error when encrypted data is modified', () => {
121
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
122
+ const modified = encrypted.slice(0, -1) + 'A';
123
+ expect(() => DyFM_Crypto.decrypt(modified, testKey)).toThrow();
124
+ });
125
+ });
126
+
127
+ describe('| URL-safe encryption', () => {
128
+ it('| should produce URL-safe strings', () => {
129
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
130
+ expect(encrypted).toMatch(/^[A-Za-z0-9\-_]+$/);
131
+ });
132
+
133
+ it('| should work in HTTP headers', () => {
134
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
135
+ const header = `Bearer ${encrypted}`;
136
+ const extracted = header.split(' ')[1];
137
+ const decrypted = DyFM_Crypto.decrypt(extracted, testKey);
138
+ expect(decrypted).toEqual(testData);
139
+ });
140
+
141
+ it('| should work in URLs', () => {
142
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
143
+ const url = `https://example.com/api?token=${encrypted}`;
144
+ const params = new URLSearchParams(url.split('?')[1]);
145
+ const extracted = params.get('token');
146
+ const decrypted = DyFM_Crypto.decrypt(extracted!, testKey);
147
+ expect(decrypted).toEqual(testData);
148
+ });
149
+ });
150
+
151
+ describe('| LONG-TERM STABILITY TESTS - Cross-platform compatibility', () => {
152
+ describe('| Deterministic encryption consistency', () => {
153
+ it('| should produce identical encrypted output for identical input across multiple calls', () => {
154
+ const testData = { id: 1, name: 'test', timestamp: '2024-01-01T00:00:00Z' };
155
+ const key = 'stable-test-key-123';
156
+
157
+ // Multiple encryption calls should produce identical results
158
+ const encrypted1 = DyFM_Crypto.encrypt(testData, key);
159
+ const encrypted2 = DyFM_Crypto.encrypt(testData, key);
160
+ const encrypted3 = DyFM_Crypto.encrypt(testData, key);
161
+
162
+ expect(encrypted1).toBe(encrypted2);
163
+ expect(encrypted2).toBe(encrypted3);
164
+ expect(encrypted1).toBe(encrypted3);
165
+
166
+ // All should decrypt to the same data
167
+ const decrypted1 = DyFM_Crypto.decrypt(encrypted1, key);
168
+ const decrypted2 = DyFM_Crypto.decrypt(encrypted2, key);
169
+ const decrypted3 = DyFM_Crypto.decrypt(encrypted3, key);
170
+
171
+ expect(decrypted1).toEqual(decrypted2);
172
+ expect(decrypted2).toEqual(decrypted3);
173
+ expect(decrypted1).toEqual(testData);
174
+ });
175
+
176
+ it('| should maintain consistency with different data types and structures', () => {
177
+ const testCases = [
178
+ { data: { id: 1, name: 'simple' }, key: 'key1' },
179
+ { data: 'plain string', key: 'key2' },
180
+ { data: [1, 2, 3, 'array'], key: 'key3' },
181
+ { data: { nested: { deep: { value: true } } }, key: 'key4' },
182
+ { data: { empty: {}, null: null }, key: 'key5' } // Removed undefined as it gets filtered out
183
+ ];
184
+
185
+ testCases.forEach(({ data, key }) => {
186
+ const encrypted1 = DyFM_Crypto.encrypt(data, key);
187
+ const encrypted2 = DyFM_Crypto.encrypt(data, key);
188
+ expect(encrypted1).toBe(encrypted2);
189
+
190
+ const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
191
+ expect(decrypted).toEqual(data);
192
+ });
193
+ });
194
+
195
+ it('| should handle edge cases consistently', () => {
196
+ const edgeCases = [
197
+ { data: 'non-empty', key: 'non-empty-string-key' },
198
+ { data: 0, key: 'zero-number-key' },
199
+ { data: false, key: 'false-boolean-key' },
200
+ { data: { a: 0, b: false, c: 'non-empty' }, key: 'mixed-edge-key' }
201
+ ];
202
+
203
+ edgeCases.forEach(({ data, key }) => {
204
+ const encrypted1 = DyFM_Crypto.encrypt(data, key);
205
+ const encrypted2 = DyFM_Crypto.encrypt(data, key);
206
+ expect(encrypted1).toBe(encrypted2);
207
+
208
+ const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
209
+ expect(decrypted).toEqual(data);
210
+ });
211
+ });
212
+ });
213
+
214
+ describe('| Cross-version compatibility simulation', () => {
215
+ it('| should handle data encrypted with different configurations consistently', () => {
216
+ const testData = { id: 1, name: 'config-test' };
217
+ const key = 'config-test-key';
218
+
219
+ // Test with default config
220
+ const defaultEncrypted = DyFM_Crypto.encrypt(testData, key);
221
+ const defaultDecrypted = DyFM_Crypto.decrypt(defaultEncrypted, key);
222
+ expect(defaultDecrypted).toEqual(testData);
223
+
224
+ // Test with custom config
225
+ const customConfig = { keyIterations: 500, keySize: 6 };
226
+ const customEncrypted = DyFM_Crypto.encrypt(testData, key, customConfig);
227
+ const customDecrypted = DyFM_Crypto.decrypt(customEncrypted, key, customConfig);
228
+ expect(customDecrypted).toEqual(testData);
229
+
230
+ // Test that different configs produce different encrypted results
231
+ expect(defaultEncrypted).not.toBe(customEncrypted);
232
+ });
233
+
234
+ it('| should maintain backward compatibility with existing encrypted data', () => {
235
+ // Simulate data that was encrypted with previous version
236
+ const legacyData = { id: 1, name: 'legacy-test', version: '1.0' };
237
+ const key = 'legacy-key';
238
+
239
+ // Encrypt with current implementation
240
+ const encrypted = DyFM_Crypto.encrypt(legacyData, key);
241
+
242
+ // Simulate system restart/reload
243
+ const decrypted = DyFM_Crypto.decrypt(encrypted, key);
244
+ expect(decrypted).toEqual(legacyData);
245
+
246
+ // Re-encrypt should produce same result
247
+ const reEncrypted = DyFM_Crypto.encrypt(decrypted, key);
248
+ expect(reEncrypted).toBe(encrypted);
249
+ });
250
+ });
251
+
252
+ describe('| Platform independence tests', () => {
253
+ it('| should handle different character encodings consistently', () => {
254
+ const unicodeData = {
255
+ hungarian: 'árvíztűrő tükörfúrógép',
256
+ chinese: '你好世界',
257
+ emoji: '🚀💻🔒',
258
+ special: '!@#$%^&*()_+-=[]{}|;:,.<>?'
259
+ };
260
+ const key = 'unicode-test-key';
261
+
262
+ const encrypted = DyFM_Crypto.encrypt(unicodeData, key);
263
+ const decrypted = DyFM_Crypto.decrypt(encrypted, key);
264
+ expect(decrypted).toEqual(unicodeData);
265
+
266
+ // Multiple encryptions should be identical
267
+ const encrypted2 = DyFM_Crypto.encrypt(unicodeData, key);
268
+ expect(encrypted).toBe(encrypted2);
269
+ });
270
+
271
+ it('| should handle large data objects consistently', () => {
272
+ // Create a large object with many properties
273
+ const largeData: any = { id: 1 };
274
+ for (let i = 0; i < 100; i++) {
275
+ largeData[`prop${i}`] = `value${i}`;
276
+ }
277
+ const key = 'large-data-key';
278
+
279
+ const encrypted1 = DyFM_Crypto.encrypt(largeData, key);
280
+ const encrypted2 = DyFM_Crypto.encrypt(largeData, key);
281
+ expect(encrypted1).toBe(encrypted2);
282
+
283
+ const decrypted = DyFM_Crypto.decrypt(encrypted1, key);
284
+ expect(decrypted).toEqual(largeData);
285
+ });
286
+
287
+ it('| should handle nested circular references gracefully', () => {
288
+ const circularData: any = { id: 1, name: 'circular' };
289
+ circularData.self = circularData;
290
+ const key = 'circular-key';
291
+
292
+ // Should handle circular references without crashing
293
+ expect(() => {
294
+ const encrypted = DyFM_Crypto.encrypt(circularData, key);
295
+ // Note: JSON.stringify will fail on circular refs, so this test ensures graceful handling
296
+ }).toThrow(); // Expected to throw due to circular reference
297
+ });
298
+ });
299
+
300
+ describe('| Time-based stability tests', () => {
301
+ it('| should maintain consistency across time-based operations', () => {
302
+ const timeData = {
303
+ timestamp: new Date().toISOString(),
304
+ id: 1,
305
+ name: 'time-test'
306
+ };
307
+ const key = 'time-test-key';
308
+
309
+ // Encrypt same data multiple times
310
+ const encrypted1 = DyFM_Crypto.encrypt(timeData, key);
311
+
312
+ // Simulate time passing
313
+ setTimeout(() => {
314
+ const encrypted2 = DyFM_Crypto.encrypt(timeData, key);
315
+ expect(encrypted1).toBe(encrypted2);
316
+ }, 100);
317
+ });
318
+
319
+ it('| should handle date objects consistently', () => {
320
+ const dateData = {
321
+ created: new Date('2024-01-01T00:00:00Z'),
322
+ updated: new Date('2024-12-31T23:59:59Z'),
323
+ id: 1
324
+ };
325
+ const key = 'date-test-key';
326
+
327
+ const encrypted1 = DyFM_Crypto.encrypt(dateData, key);
328
+ const encrypted2 = DyFM_Crypto.encrypt(dateData, key);
329
+ expect(encrypted1).toBe(encrypted2);
330
+
331
+ const decrypted = DyFM_Crypto.decrypt(encrypted1, key) as any;
332
+ // Compare ISO strings since JSON serialization converts dates to strings
333
+ expect(decrypted.created).toEqual(dateData.created.toISOString());
334
+ expect(decrypted.updated).toEqual(dateData.updated.toISOString());
335
+ expect(decrypted.id).toBe(dateData.id);
336
+ });
337
+ });
338
+
339
+ describe('| Memory and performance stability', () => {
340
+ it('| should handle multiple encryption/decryption cycles without memory leaks', () => {
341
+ const testData = { id: 1, name: 'memory-test' };
342
+ const key = 'memory-test-key';
343
+
344
+ // Perform many encryption/decryption cycles
345
+ for (let i = 0; i < 1000; i++) {
346
+ const encrypted = DyFM_Crypto.encrypt(testData, key);
347
+ const decrypted = DyFM_Crypto.decrypt(encrypted, key);
348
+ expect(decrypted).toEqual(testData);
349
+ }
350
+ });
351
+
352
+ it('| should maintain consistent performance across multiple operations', () => {
353
+ const testData = { id: 1, name: 'performance-test' };
354
+ const key = 'performance-test-key';
355
+
356
+ const startTime = Date.now();
357
+
358
+ // Perform multiple operations
359
+ for (let i = 0; i < 100; i++) {
360
+ const encrypted = DyFM_Crypto.encrypt(testData, key);
361
+ const decrypted = DyFM_Crypto.decrypt(encrypted, key);
362
+ expect(decrypted).toEqual(testData);
363
+ }
364
+
365
+ const endTime = Date.now();
366
+ const duration = endTime - startTime;
367
+
368
+ // Should complete within reasonable time (adjust threshold as needed)
369
+ expect(duration).toBeLessThan(6000); // 6 seconds max
370
+ });
371
+ });
372
+ });
373
+
374
+ describe('| URL-safe base64 transmission edge cases', () => {
375
+ it('| should handle encrypted data that loses padding during URL transmission', () => {
376
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
377
+ // Simulate padding loss during URL transmission
378
+ // Encrypted data already has no padding (removed in encrypt), so this tests normal behavior
379
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
380
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
381
+ expect(decrypted).toEqual(testData);
382
+ });
383
+
384
+ it('| should handle encrypted data with 0 padding characters (normal case)', () => {
385
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
386
+ // Encrypted data has no padding (removed by .replace(/=+$/, ''))
387
+ expect(encrypted).not.toContain('=');
388
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
389
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
390
+ expect(decrypted).toEqual(testData);
391
+ });
392
+
393
+ it('| should handle encrypted data that would need 1 padding character', () => {
394
+ // Create a scenario where base64 would need 1 padding char
395
+ // This is tested by encrypting and verifying it works without padding
396
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
397
+ // If the encrypted string length % 4 === 3, it would need 1 padding char
398
+ // But since padding is removed, we verify it still works
399
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
400
+ });
401
+
402
+ it('| should handle encrypted data that would need 2 padding characters', () => {
403
+ // Create a scenario where base64 would need 2 padding chars
404
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
405
+ // If the encrypted string length % 4 === 2, it would need 2 padding chars
406
+ // Verify it works without explicit padding
407
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
408
+ });
409
+
410
+ it('| should handle encrypted data that would need 3 padding characters', () => {
411
+ // Create a scenario where base64 would need 3 padding chars
412
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
413
+ // If the encrypted string length % 4 === 1, it would need 3 padding chars
414
+ // Verify it works without explicit padding
415
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
416
+ });
417
+
418
+ it('| should handle base64 strings that are valid but too short after parsing', () => {
419
+ // Create a valid URL-safe base64 string that's too short
420
+ const validButShort = 'ABCDEFGHIJKLMNOPQRSTUVWXY'; // 25 chars, valid format but too short
421
+ expect(() => DyFM_Crypto.decrypt(validButShort, testKey)).toThrow();
422
+ });
423
+
424
+ it('| should handle round-trip encryption/decryption with padding edge cases', () => {
425
+ // Test that encryption/decryption works correctly even when padding is removed
426
+ const testCases = [
427
+ { id: 1, name: 'test' },
428
+ { id: 2, data: 'short' },
429
+ { id: 3, data: 'A'.repeat(100) }, // Longer data
430
+ { id: 4, nested: { value: true } }
431
+ ];
432
+
433
+ testCases.forEach(testCase => {
434
+ const encrypted = DyFM_Crypto.encrypt(testCase, testKey);
435
+ // Verify no padding in encrypted string
436
+ expect(encrypted).not.toContain('=');
437
+ // Verify round-trip works
438
+ const decrypted = DyFM_Crypto.decrypt(encrypted, testKey);
439
+ expect(decrypted).toEqual(testCase);
440
+ });
441
+ });
442
+
443
+ it('| should handle URL-safe base64 conversion correctly', () => {
444
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
445
+ // Verify it's URL-safe (no +, /, or =)
446
+ expect(encrypted).not.toContain('+');
447
+ expect(encrypted).not.toContain('/');
448
+ expect(encrypted).not.toContain('=');
449
+ // Verify it can be decrypted
450
+ expect(() => DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
451
+ });
452
+
453
+ it('| should handle base64 strings with various padding scenarios in transmission', () => {
454
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
455
+
456
+ // Simulate different padding scenarios that might occur during transmission
457
+ // Even though encrypted data has no padding, test that decryption handles it
458
+ const scenarios = [
459
+ encrypted, // No padding (normal)
460
+ encrypted + '=', // 1 padding char added
461
+ encrypted + '==', // 2 padding chars added
462
+ encrypted + '===' // 3 padding chars added
463
+ ];
464
+
465
+ // The first one should work (no padding)
466
+ expect(() => DyFM_Crypto.decrypt(scenarios[0], testKey)).not.toThrow();
467
+
468
+ // Others might work or fail depending on base64 parsing
469
+ scenarios.slice(1).forEach((scenario, index) => {
470
+ // These might work if CryptoJS handles padding, or fail if data is corrupted
471
+ try {
472
+ const decrypted = DyFM_Crypto.decrypt(scenario, testKey);
473
+ expect(decrypted).toEqual(testData);
474
+ } catch {
475
+ // If it fails, that's also acceptable as extra padding shouldn't be there
476
+ expect(() => DyFM_Crypto.decrypt(scenario, testKey)).toThrow();
477
+ }
478
+ });
479
+ });
480
+
481
+ it('| should handle URL encoding/decoding edge cases', () => {
482
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
483
+
484
+ // Simulate URL encoding (though encrypted data should already be URL-safe)
485
+ // Test that the encrypted string works in URL contexts
486
+ const urlEncoded = encodeURIComponent(encrypted);
487
+ const urlDecoded = decodeURIComponent(urlEncoded);
488
+
489
+ // Should be able to decrypt after URL encoding/decoding
490
+ expect(() => DyFM_Crypto.decrypt(urlDecoded, testKey)).not.toThrow();
491
+ const decrypted = DyFM_Crypto.decrypt(urlDecoded, testKey);
492
+ expect(decrypted).toEqual(testData);
493
+ });
494
+
495
+ it('| should handle base64 strings that are valid format but truncated', () => {
496
+ const encrypted = DyFM_Crypto.encrypt(testData, testKey);
497
+ // Truncate to various lengths that are still valid base64 format
498
+ const truncationPoints = [
499
+ Math.floor(encrypted.length * 0.5),
500
+ Math.floor(encrypted.length * 0.75),
501
+ encrypted.length - 5,
502
+ encrypted.length - 10
503
+ ];
504
+
505
+ truncationPoints.forEach(point => {
506
+ const truncated = encrypted.substring(0, point);
507
+ // Should throw error for truncated data
508
+ expect(() => DyFM_Crypto.decrypt(truncated, testKey)).toThrow();
509
+ });
510
+ });
511
+ });
512
+
513
513
  });