@futdevpro/fsm-dynamo 1.20.92 → 1.20.94

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 (437) hide show
  1. package/build/_models/control-models/data-model-params.control-model.d.ts +0 -1
  2. package/build/_models/control-models/data-model-params.control-model.d.ts.map +1 -1
  3. package/build/_models/control-models/data-model-params.control-model.js +1 -4
  4. package/build/_models/control-models/data-model-params.control-model.js.map +1 -1
  5. package/build/_models/control-models/data-property-params.control-model.d.ts +0 -1
  6. package/build/_models/control-models/data-property-params.control-model.d.ts.map +1 -1
  7. package/build/_models/control-models/data-property-params.control-model.js +1 -4
  8. package/build/_models/control-models/data-property-params.control-model.js.map +1 -1
  9. package/build/_models/control-models/service-endpoint-settings-base.control-model.d.ts +0 -1
  10. package/build/_models/control-models/service-endpoint-settings-base.control-model.d.ts.map +1 -1
  11. package/build/_models/control-models/service-endpoint-settings-base.control-model.js +4 -4
  12. package/build/_models/control-models/service-endpoint-settings-base.control-model.js.map +1 -1
  13. package/build/_modules/data-handler/_models/data-handler-settings.control-model.d.ts +0 -3
  14. package/build/_modules/data-handler/_models/data-handler-settings.control-model.d.ts.map +1 -1
  15. package/build/_modules/data-handler/_models/data-handler-settings.control-model.js +4 -10
  16. package/build/_modules/data-handler/_models/data-handler-settings.control-model.js.map +1 -1
  17. package/build/_modules/data-handler/_models/data-list-handler.control-model.d.ts +1 -1
  18. package/build/_modules/data-handler/_models/data-list-handler.control-model.d.ts.map +1 -1
  19. package/build/_modules/data-handler/_models/data-search-handler.control-model.d.ts +1 -1
  20. package/build/_modules/data-handler/_models/data-search-handler.control-model.d.ts.map +1 -1
  21. package/build/_modules/data-handler/_models/list-collector-data-handler.control-model.d.ts +1 -1
  22. package/build/_modules/data-handler/_models/list-collector-data-handler.control-model.d.ts.map +1 -1
  23. package/build/_modules/data-handler/index.d.ts +3 -0
  24. package/build/_modules/data-handler/index.d.ts.map +1 -1
  25. package/build/_modules/data-handler/index.js +3 -0
  26. package/build/_modules/data-handler/index.js.map +1 -1
  27. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts +0 -3
  28. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.d.ts.map +1 -1
  29. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js +4 -10
  30. package/build/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js.map +1 -1
  31. package/build/_modules/ngx-models/index.d.ts +3 -0
  32. package/build/_modules/ngx-models/index.d.ts.map +1 -1
  33. package/build/_modules/ngx-models/index.js +3 -0
  34. package/build/_modules/ngx-models/index.js.map +1 -1
  35. package/build/index.d.ts +3 -0
  36. package/build/index.d.ts.map +1 -1
  37. package/build/index.js +3 -0
  38. package/build/index.js.map +1 -1
  39. package/build-esm/_collections/constants/data-sizes.const.js +37 -0
  40. package/build-esm/_collections/constants/error-defaults.const.js +17 -0
  41. package/build-esm/_collections/constants/global-settings.const.js +17 -0
  42. package/build-esm/_collections/constants/numbers.const.js +36 -0
  43. package/build-esm/_collections/constants/times.const.js +38 -0
  44. package/build-esm/_collections/utils/array.util.js +632 -0
  45. package/build-esm/_collections/utils/async.util.js +183 -0
  46. package/build-esm/_collections/utils/data.util.js +203 -0
  47. package/build-esm/_collections/utils/extract-error-message.util.js +183 -0
  48. package/build-esm/_collections/utils/json-error-helper.util.js +251 -0
  49. package/build-esm/_collections/utils/log.util.js +555 -0
  50. package/build-esm/_collections/utils/math/box-bounds.util.js +159 -0
  51. package/build-esm/_collections/utils/math/math.util.js +183 -0
  52. package/build-esm/_collections/utils/math/random.util.js +117 -0
  53. package/build-esm/_collections/utils/math/trigonometry.util.js +89 -0
  54. package/build-esm/_collections/utils/math/vector2.util.js +587 -0
  55. package/build-esm/_collections/utils/object.util.js +591 -0
  56. package/build-esm/_collections/utils/operation-authz.util.js +136 -0
  57. package/build-esm/_collections/utils/operation-guardrails.util.js +220 -0
  58. package/build-esm/_collections/utils/operation-run.util.js +81 -0
  59. package/build-esm/_collections/utils/operation-schema.util.js +159 -0
  60. package/build-esm/_collections/utils/regex/password-regex.util.js +56 -0
  61. package/build-esm/_collections/utils/regex/regex.util.js +1 -0
  62. package/build-esm/_collections/utils/regex/username-regex.util.js +28 -0
  63. package/build-esm/_collections/utils/require-env.util.js +90 -0
  64. package/build-esm/_collections/utils/round-list.util.js +108 -0
  65. package/build-esm/_collections/utils/secret-mask.util.js +219 -0
  66. package/build-esm/_collections/utils/stack.util.js +126 -0
  67. package/build-esm/_collections/utils/string-case.util.js +332 -0
  68. package/build-esm/_collections/utils/string.util.js +366 -0
  69. package/build-esm/_collections/utils/time.util.js +431 -0
  70. package/build-esm/_collections/utils/type-cloning-facility.util.js +122 -0
  71. package/build-esm/_collections/utils/utilities.util.js +61 -0
  72. package/build-esm/_collections/utils/uuid.util.js +33 -0
  73. package/build-esm/_enums/basic-property-type.enum.js +18 -0
  74. package/build-esm/_enums/data-model-type.enum.js +24 -0
  75. package/build-esm/_enums/environment-flag.enum.js +26 -0
  76. package/build-esm/_enums/error-level.enum.js +35 -0
  77. package/build-esm/_enums/error-status.enum.js +28 -0
  78. package/build-esm/_enums/http/http-call-type.enum.js +42 -0
  79. package/build-esm/_enums/http/http-event-type.enum.js +39 -0
  80. package/build-esm/_enums/http/http-response-type.enum.js +18 -0
  81. package/build-esm/_enums/log-style.enum.js +38 -0
  82. package/build-esm/_enums/operation-auth.type-enum.js +19 -0
  83. package/build-esm/_enums/operation-if-match.type-enum.js +17 -0
  84. package/build-esm/_enums/operation-patch-field.type-enum.js +40 -0
  85. package/build-esm/_enums/server-connection-status.enum.js +5 -0
  86. package/build-esm/_enums/time/day-of-week.enum.js +47 -0
  87. package/build-esm/_enums/time/month.enum.js +23 -0
  88. package/build-esm/_enums/time/relative-date.enum.js +19 -0
  89. package/build-esm/_models/control-models/data-model-params.control-model.js +259 -0
  90. package/build-esm/_models/control-models/data-model-settings.control-model.js +63 -0
  91. package/build-esm/_models/control-models/data-property-params.control-model.js +101 -0
  92. package/build-esm/_models/control-models/data-property-settings.control-model.js +61 -0
  93. package/build-esm/_models/control-models/error.control-model.js +787 -0
  94. package/build-esm/_models/control-models/http/http-error-response.control-model.js +48 -0
  95. package/build-esm/_models/control-models/http/http-headers.control-model.js +43 -0
  96. package/build-esm/_models/control-models/http/http-response.model-base.js +62 -0
  97. package/build-esm/_models/control-models/operation-context.control-model.js +110 -0
  98. package/build-esm/_models/control-models/operation-settings.control-model.js +184 -0
  99. package/build-esm/_models/control-models/poll.control-model.js +202 -0
  100. package/build-esm/_models/control-models/range-value.control-model.js +247 -0
  101. package/build-esm/_models/control-models/server-route-settings-base.control-model.js +19 -0
  102. package/build-esm/_models/control-models/server-status.control-model.js +73 -0
  103. package/build-esm/_models/control-models/service-endpoint-settings-base.control-model.js +110 -0
  104. package/build-esm/_models/data-models/errors.data-model.js +156 -0
  105. package/build-esm/_models/data-models/metadata.data-model.js +120 -0
  106. package/build-esm/_models/interfaces/box-bounds.interface.js +1 -0
  107. package/build-esm/_models/interfaces/environment/global-log-settings.interface.js +1 -0
  108. package/build-esm/_models/interfaces/environment/global-settings.interface.js +1 -0
  109. package/build-esm/_models/interfaces/error-defaults.interface.js +1 -0
  110. package/build-esm/_models/interfaces/operation-authz-result.interface.js +1 -0
  111. package/build-esm/_models/interfaces/operation-authz.interface.js +1 -0
  112. package/build-esm/_models/interfaces/operation-exposure.interface.js +1 -0
  113. package/build-esm/_models/interfaces/operation-guardrails.interface.js +1 -0
  114. package/build-esm/_models/interfaces/operation-input-settings.interface.js +1 -0
  115. package/build-esm/_models/interfaces/operation-json-schema.interface.js +1 -0
  116. package/build-esm/_models/interfaces/operation-patch-field.interface.js +1 -0
  117. package/build-esm/_models/interfaces/operation-patch-result.interface.js +1 -0
  118. package/build-esm/_models/interfaces/operation-patch-violation.interface.js +1 -0
  119. package/build-esm/_models/interfaces/operation-run-result.interface.js +1 -0
  120. package/build-esm/_models/interfaces/paged.interface.js +1 -0
  121. package/build-esm/_models/interfaces/poll-handle.interface.js +1 -0
  122. package/build-esm/_models/interfaces/random-weight.interface.js +1 -0
  123. package/build-esm/_models/interfaces/route-settings.interface.js +1 -0
  124. package/build-esm/_models/interfaces/search-query.interface.js +1 -0
  125. package/build-esm/_models/interfaces/search-result.interface.js +1 -0
  126. package/build-esm/_models/interfaces/server-error-statistics.interface.js +1 -0
  127. package/build-esm/_models/interfaces/vector2.interface.js +1 -0
  128. package/build-esm/_models/types/db-filter.type.js +1 -0
  129. package/build-esm/_models/types/db-sort.type.js +1 -0
  130. package/build-esm/_models/types/deprecated-boolean-alias.type.js +1 -0
  131. package/build-esm/_models/types/ds-filter.type.js +15 -0
  132. package/build-esm/_models/types/ds-sort.type.js +1 -0
  133. package/build-esm/_modules/ai/_collections/ai-media-provenance.util.js +24 -0
  134. package/build-esm/_modules/ai/_collections/ai-model-ref.util.js +70 -0
  135. package/build-esm/_modules/ai/_collections/ai-model-registry.util.js +37 -0
  136. package/build-esm/_modules/ai/_enums/ai-message-role.enum.js +8 -0
  137. package/build-esm/_modules/ai/_enums/ai-model-type.enum.js +8 -0
  138. package/build-esm/_modules/ai/_enums/ai-provider.enum.js +8 -0
  139. package/build-esm/_modules/ai/_models/ai-call-settings.interface.js +88 -0
  140. package/build-esm/_modules/ai/_models/ai-config.interface.js +1 -0
  141. package/build-esm/_modules/ai/_models/ai-embedding-request.interface.js +1 -0
  142. package/build-esm/_modules/ai/_models/ai-embedding-response.interface.js +1 -0
  143. package/build-esm/_modules/ai/_models/ai-image-request.interface.js +1 -0
  144. package/build-esm/_modules/ai/_models/ai-image-response.interface.js +1 -0
  145. package/build-esm/_modules/ai/_models/ai-llm-request.interface.js +1 -0
  146. package/build-esm/_modules/ai/_models/ai-llm-response.interface.js +1 -0
  147. package/build-esm/_modules/ai/_models/ai-media-file.interface.js +1 -0
  148. package/build-esm/_modules/ai/_models/ai-media-provenance.interface.js +1 -0
  149. package/build-esm/_modules/ai/_models/ai-message.interface.js +1 -0
  150. package/build-esm/_modules/ai/_models/ai-model-capabilities.interface.js +1 -0
  151. package/build-esm/_modules/ai/_models/ai-model-info.interface.js +1 -0
  152. package/build-esm/_modules/ai/_models/ai-model-settings-schema.interface.js +1 -0
  153. package/build-esm/_modules/ai/_models/ai-model3d-request.interface.js +1 -0
  154. package/build-esm/_modules/ai/_models/ai-model3d-response.interface.js +1 -0
  155. package/build-esm/_modules/ai/_models/ai-provider-capabilities.interface.js +1 -0
  156. package/build-esm/_modules/ai/_models/ai-settings.interface.js +10 -0
  157. package/build-esm/_modules/ai/_models/ai-speech-request.interface.js +1 -0
  158. package/build-esm/_modules/ai/_models/ai-speech-response.interface.js +1 -0
  159. package/build-esm/_modules/ai/_models/ai-tool-call.interface.js +1 -0
  160. package/build-esm/_modules/ai/_models/ai-tool-handler.type.js +1 -0
  161. package/build-esm/_modules/ai/_models/ai-tool-result.interface.js +1 -0
  162. package/build-esm/_modules/ai/_models/ai-tool.interface.js +1 -0
  163. package/build-esm/_modules/ai/_models/ai-user-provider-config.control-model.js +31 -0
  164. package/build-esm/_modules/ai/_modules/anthropic/_collections/aai-models.const.js +130 -0
  165. package/build-esm/_modules/ai/_modules/anthropic/_enums/aai-model.enum.js +17 -0
  166. package/build-esm/_modules/ai/_modules/anthropic/_models/aai-call-settings.control-model.js +23 -0
  167. package/build-esm/_modules/ai/_modules/anthropic/_models/aai-client-options.interface.js +1 -0
  168. package/build-esm/_modules/ai/_modules/anthropic/_models/aai-settings.control-model.js +25 -0
  169. package/build-esm/_modules/ai/_modules/anthropic/_models/aai-user-provider-config.control-model.js +22 -0
  170. package/build-esm/_modules/ai/_modules/anthropic/index.js +9 -0
  171. package/build-esm/_modules/ai/_modules/document-ai/_models/dai-embedding-info.interface.js +1 -0
  172. package/build-esm/_modules/ai/_modules/document-ai/_models/dai-vector-search-params.interface.js +1 -0
  173. package/build-esm/_modules/ai/_modules/document-ai/index.js +3 -0
  174. package/build-esm/_modules/ai/_modules/fdp-ai/_collections/fdpai-models.const.js +38 -0
  175. package/build-esm/_modules/ai/_modules/fdp-ai/_enums/fdpai-model.enum.js +7 -0
  176. package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-call-settings.control-model.js +21 -0
  177. package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-client-options.interface.js +1 -0
  178. package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-settings.control-model.js +24 -0
  179. package/build-esm/_modules/ai/_modules/fdp-ai/_models/fdpai-user-provider-config.control-model.js +22 -0
  180. package/build-esm/_modules/ai/_modules/fdp-ai/index.js +9 -0
  181. package/build-esm/_modules/ai/_modules/google-ai/_collections/gai-models.const.js +155 -0
  182. package/build-esm/_modules/ai/_modules/google-ai/_enums/gai-model.enum.js +14 -0
  183. package/build-esm/_modules/ai/_modules/google-ai/_models/gai-call-settings.control-model.js +23 -0
  184. package/build-esm/_modules/ai/_modules/google-ai/_models/gai-client-options.interface.js +1 -0
  185. package/build-esm/_modules/ai/_modules/google-ai/_models/gai-settings.control-model.js +25 -0
  186. package/build-esm/_modules/ai/_modules/google-ai/_models/gai-user-provider-config.control-model.js +22 -0
  187. package/build-esm/_modules/ai/_modules/google-ai/index.js +9 -0
  188. package/build-esm/_modules/ai/_modules/local-ai/_collections/lai-models.const.js +57 -0
  189. package/build-esm/_modules/ai/_modules/local-ai/_enums/lai-model.enum.js +5 -0
  190. package/build-esm/_modules/ai/_modules/local-ai/_models/lai-call-settings.control-model.js +19 -0
  191. package/build-esm/_modules/ai/_modules/local-ai/_models/lai-client-options.interface.js +1 -0
  192. package/build-esm/_modules/ai/_modules/local-ai/_models/lai-settings.control-model.js +22 -0
  193. package/build-esm/_modules/ai/_modules/local-ai/index.js +8 -0
  194. package/build-esm/_modules/ai/_modules/open-ai/_collections/oai-embedding-model-dimensions.const.js +6 -0
  195. package/build-esm/_modules/ai/_modules/open-ai/_collections/oai-models.const.js +455 -0
  196. package/build-esm/_modules/ai/_modules/open-ai/_enums/oai-model.enum.js +146 -0
  197. package/build-esm/_modules/ai/_modules/open-ai/_models/oai-call-settings.control-model.js +23 -0
  198. package/build-esm/_modules/ai/_modules/open-ai/_models/oai-client-options.interface.js +1 -0
  199. package/build-esm/_modules/ai/_modules/open-ai/_models/oai-embedding-info.interface.js +1 -0
  200. package/build-esm/_modules/ai/_modules/open-ai/_models/oai-settings.control-model.js +25 -0
  201. package/build-esm/_modules/ai/_modules/open-ai/_models/oai-user-provider-config.control-model.js +23 -0
  202. package/build-esm/_modules/ai/_modules/open-ai/index.js +19 -0
  203. package/build-esm/_modules/ai/index.js +34 -0
  204. package/build-esm/_modules/application-alert/_collections/application-alert-envelope.util.js +267 -0
  205. package/build-esm/_modules/application-alert/_enums/application-alert-evaluation-state.type-enum.js +6 -0
  206. package/build-esm/_modules/application-alert/_enums/application-alert-severity.type-enum.js +8 -0
  207. package/build-esm/_modules/application-alert/_models/application-alert.interface.js +1 -0
  208. package/build-esm/_modules/application-alert/index.js +4 -0
  209. package/build-esm/_modules/ci-tools/_enums/cit-ci-result-code.enum.js +9 -0
  210. package/build-esm/_modules/ci-tools/_enums/cit-ci-step-result-code.enum.js +9 -0
  211. package/build-esm/_modules/ci-tools/_models/cit-ci-result-info.data-models.js +63 -0
  212. package/build-esm/_modules/ci-tools/_models/cit-ci-step-result.interface.js +1 -0
  213. package/build-esm/_modules/ci-tools/index.js +6 -0
  214. package/build-esm/_modules/crypto/_collections/crypto-v1.util.js +199 -0
  215. package/build-esm/_modules/crypto/_collections/crypto-v2.util.js +273 -0
  216. package/build-esm/_modules/crypto/_collections/crypto-v4.util.js +605 -0
  217. package/build-esm/_modules/crypto/_collections/crypto.util.js +651 -0
  218. package/build-esm/_modules/crypto/_models/artifact-signature.interface.js +1 -0
  219. package/build-esm/_modules/crypto/_services/artifact-signature.control-service.js +276 -0
  220. package/build-esm/_modules/crypto/index.js +11 -0
  221. package/build-esm/_modules/custom-data/_collections/cud-module-settings.const.js +18 -0
  222. package/build-esm/_modules/custom-data/_models/cud.data-model.js +30 -0
  223. package/build-esm/_modules/custom-data/index.js +4 -0
  224. package/build-esm/_modules/data-handler/_models/data-handler-settings.control-model.js +78 -0
  225. package/build-esm/_modules/data-handler/_models/data-handler.control-model.js +386 -0
  226. package/build-esm/_modules/data-handler/_models/data-list-handler-settings.control-model.js +11 -0
  227. package/build-esm/_modules/data-handler/_models/data-list-handler.control-model.js +222 -0
  228. package/build-esm/_modules/data-handler/_models/data-search-handler-settings.control-model.js +25 -0
  229. package/build-esm/_modules/data-handler/_models/data-search-handler.control-model.js +334 -0
  230. package/build-esm/_modules/data-handler/_models/list-collector-data-handler-settings.control-model.js +12 -0
  231. package/build-esm/_modules/data-handler/_models/list-collector-data-handler.control-model.js +243 -0
  232. package/build-esm/_modules/data-handler/index.js +9 -0
  233. package/build-esm/_modules/deployment/_collections/atomic-rollback-manifest.util.js +348 -0
  234. package/build-esm/_modules/deployment/_models/atomic-rollback-manifest.interface.js +1 -0
  235. package/build-esm/_modules/deployment/index.js +2 -0
  236. package/build-esm/_modules/game/_collections/audio-mixer.util.js +109 -0
  237. package/build-esm/_modules/game/_collections/audio-scale.util.js +100 -0
  238. package/build-esm/_modules/game/_enums/audio-channel.enum.js +21 -0
  239. package/build-esm/_modules/game/_models/audio-mixer-config.interface.js +1 -0
  240. package/build-esm/_modules/game/_models/audio-mixer-settings.interface.js +1 -0
  241. package/build-esm/_modules/game/_models/audio-mixer-state.interface.js +1 -0
  242. package/build-esm/_modules/game/_models/audio-mixer.control-model.js +337 -0
  243. package/build-esm/_modules/game/_models/audio-scale.interface.js +1 -0
  244. package/build-esm/_modules/game/_models/flying-effect.control-model.js +212 -0
  245. package/build-esm/_modules/game/_models/flying-effect.interface.js +1 -0
  246. package/build-esm/_modules/game/_models/seeded-random-registry.control-model.js +124 -0
  247. package/build-esm/_modules/game/_models/seeded-random-registry.interface.js +1 -0
  248. package/build-esm/_modules/game/_models/seeded-random-state.interface.js +1 -0
  249. package/build-esm/_modules/game/_models/seeded-random.control-model.js +261 -0
  250. package/build-esm/_modules/game/index.js +17 -0
  251. package/build-esm/_modules/location/_collections/assets/country-codes-ISO-3166.json +3239 -0
  252. package/build-esm/_modules/location/_collections/assets/country-divisions-ISO-3166-all-list.json +19036 -0
  253. package/build-esm/_modules/location/_collections/assets/country-phone-codes.json +1202 -0
  254. package/build-esm/_modules/location/_collections/loc-country-divisions.const.js +3 -0
  255. package/build-esm/_modules/location/_collections/loc-country-isos.const.js +2 -0
  256. package/build-esm/_modules/location/_collections/loc-regions.util.js +107 -0
  257. package/build-esm/_modules/location/_collections/loc.util.js +56 -0
  258. package/build-esm/_modules/location/_enums/loc-region.enum.js +11 -0
  259. package/build-esm/_modules/location/_enums/loc-sub-region.enum.js +23 -0
  260. package/build-esm/_modules/location/_enums/loc-subdivision-region-type.enum.js +45 -0
  261. package/build-esm/_modules/location/_models/loc-coordinates.interface.js +1 -0
  262. package/build-esm/_modules/location/_models/loc-country-division.interface.js +1 -0
  263. package/build-esm/_modules/location/_models/loc-country-iso.interface.js +1 -0
  264. package/build-esm/_modules/location/_models/loc-country-phone-code.interface.js +1 -0
  265. package/build-esm/_modules/location/_models/loc-division-collection.interface.js +1 -0
  266. package/build-esm/_modules/location/_models/loc-division-region-data.interface.js +1 -0
  267. package/build-esm/_modules/location/_models/loc-geo-ip-location.interface.js +1 -0
  268. package/build-esm/_modules/location/index.js +17 -0
  269. package/build-esm/_modules/messaging/_collections/msg-module-settings.const.js +44 -0
  270. package/build-esm/_modules/messaging/_enums/msg-attachment-type.enum.js +21 -0
  271. package/build-esm/_modules/messaging/_enums/msg-conversation-type.enum.js +17 -0
  272. package/build-esm/_modules/messaging/_enums/msg-delivery-status.enum.js +15 -0
  273. package/build-esm/_modules/messaging/_enums/msg-event-key.enum.js +28 -0
  274. package/build-esm/_modules/messaging/_enums/msg-participant-role.enum.js +17 -0
  275. package/build-esm/_modules/messaging/_enums/msg-provider-type.enum.js +8 -0
  276. package/build-esm/_modules/messaging/_enums/msg-status.enum.js +21 -0
  277. package/build-esm/_modules/messaging/_enums/msg-type.enum.js +19 -0
  278. package/build-esm/_modules/messaging/_models/msg-attachment.interface.js +1 -0
  279. package/build-esm/_modules/messaging/_models/msg-conversation.data-model.js +80 -0
  280. package/build-esm/_modules/messaging/_models/msg-mention.interface.js +1 -0
  281. package/build-esm/_modules/messaging/_models/msg-message.data-model.js +102 -0
  282. package/build-esm/_modules/messaging/_models/msg-participant.interface.js +1 -0
  283. package/build-esm/_modules/messaging/_models/msg-reaction.interface.js +1 -0
  284. package/build-esm/_modules/messaging/_models/msg-thread-info.interface.js +1 -0
  285. package/build-esm/_modules/messaging/_modules/agent/_enums/agt-process-step-type.enum.js +27 -0
  286. package/build-esm/_modules/messaging/_modules/agent/_enums/agt-tool-status.enum.js +19 -0
  287. package/build-esm/_modules/messaging/_modules/agent/_models/agt-process-step.interface.js +1 -0
  288. package/build-esm/_modules/messaging/_modules/agent/_models/agt-reasoning-info.interface.js +1 -0
  289. package/build-esm/_modules/messaging/_modules/agent/_models/agt-tool-usage.interface.js +1 -0
  290. package/build-esm/_modules/messaging/_modules/agent/index.js +7 -0
  291. package/build-esm/_modules/messaging/index.js +25 -0
  292. package/build-esm/_modules/ngx-models/_collections/angular-placeholders.js +1 -0
  293. package/build-esm/_modules/ngx-models/_collections/button-new-style-settings-presets.const.js +170 -0
  294. package/build-esm/_modules/ngx-models/_collections/dynamo-global.settings.js +88 -0
  295. package/build-esm/_modules/ngx-models/_enums/button-new/button-new-border-radius.enum.js +14 -0
  296. package/build-esm/_modules/ngx-models/_enums/button-new/button-new-icon-style-type.enum.js +12 -0
  297. package/build-esm/_modules/ngx-models/_enums/button-new/button-new-size.enum.js +15 -0
  298. package/build-esm/_modules/ngx-models/_enums/button-new/button-new-style-type.enum.js +17 -0
  299. package/build-esm/_modules/ngx-models/_enums/button-type.enum.js +35 -0
  300. package/build-esm/_modules/ngx-models/_enums/checkbox-label-position.enum.js +8 -0
  301. package/build-esm/_modules/ngx-models/_enums/container-type.enum.js +11 -0
  302. package/build-esm/_modules/ngx-models/_enums/errors/error-level.enum.js +14 -0
  303. package/build-esm/_modules/ngx-models/_enums/errors/error-notification-color.enum.js +14 -0
  304. package/build-esm/_modules/ngx-models/_enums/errors/error-ui-mode.enum.js +14 -0
  305. package/build-esm/_modules/ngx-models/_enums/field-appearance.enum.js +13 -0
  306. package/build-esm/_modules/ngx-models/_enums/field-type.enum.js +49 -0
  307. package/build-esm/_modules/ngx-models/_enums/file-type.enum.js +12 -0
  308. package/build-esm/_modules/ngx-models/_enums/flex/flex-layout-align.enum.js +21 -0
  309. package/build-esm/_modules/ngx-models/_enums/flex/flex-layout.enum.js +6 -0
  310. package/build-esm/_modules/ngx-models/_enums/form-access.enum.js +9 -0
  311. package/build-esm/_modules/ngx-models/_enums/form-reset-data.enum.js +12 -0
  312. package/build-esm/_modules/ngx-models/_enums/form-store-on.enum.js +8 -0
  313. package/build-esm/_modules/ngx-models/_enums/forms-new/field-new-validator-type.enum.js +21 -0
  314. package/build-esm/_modules/ngx-models/_enums/frames/header-item-type.enum.js +16 -0
  315. package/build-esm/_modules/ngx-models/_enums/frames/header-position.enum.js +11 -0
  316. package/build-esm/_modules/ngx-models/_enums/frames/side-nav-badge-color.enum.js +14 -0
  317. package/build-esm/_modules/ngx-models/_enums/html/input-types.enum.js +26 -0
  318. package/build-esm/_modules/ngx-models/_enums/material-color.enum.js +14 -0
  319. package/build-esm/_modules/ngx-models/_enums/material-tooltip-position.enum.js +13 -0
  320. package/build-esm/_modules/ngx-models/_enums/preconfigured-field-type.enum.js +8 -0
  321. package/build-esm/_modules/ngx-models/_enums/storage-type.enum.js +13 -0
  322. package/build-esm/_modules/ngx-models/_enums/validator-type.enum.js +7 -0
  323. package/build-esm/_modules/ngx-models/_enums/voice/audio-mime-type.enum.js +15 -0
  324. package/build-esm/_modules/ngx-models/_enums/voice/voice-provider-type.enum.js +32 -0
  325. package/build-esm/_modules/ngx-models/_enums/voice/voice-recorder-state.enum.js +21 -0
  326. package/build-esm/_modules/ngx-models/_models/control-models/button-new-style-settings.control-model.js +44 -0
  327. package/build-esm/_modules/ngx-models/_models/control-models/button-params.control-model.js +304 -0
  328. package/build-esm/_modules/ngx-models/_models/control-models/chat/chat-column-layout-settings.control-model.js +59 -0
  329. package/build-esm/_modules/ngx-models/_models/control-models/data-handler-settings.control-model.js +94 -0
  330. package/build-esm/_modules/ngx-models/_models/control-models/data-handler.control-model.js +407 -0
  331. package/build-esm/_modules/ngx-models/_models/control-models/errors/error-notification.control-model.js +43 -0
  332. package/build-esm/_modules/ngx-models/_models/control-models/errors/error-settings.control-model.js +64 -0
  333. package/build-esm/_modules/ngx-models/_models/control-models/errors/errors-settings.control-model.js +52 -0
  334. package/build-esm/_modules/ngx-models/_models/control-models/field-settings.control-model.js +207 -0
  335. package/build-esm/_modules/ngx-models/_models/control-models/form-settings.control-model.js +275 -0
  336. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/checkbox-field-new-settings.control-model.js +29 -0
  337. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/color-picker-field-new-settings.control-model.js +36 -0
  338. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/date-field-new-settings.control-model.js +31 -0
  339. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/date-range-field-new-settings.control-model.js +46 -0
  340. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/datetime-field-new-settings.control-model.js +38 -0
  341. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/datetime-range-field-new-settings.control-model.js +48 -0
  342. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/emoji-picker-field-new-settings.control-model.js +21 -0
  343. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/field-new-settings.control-model.js +91 -0
  344. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/field-new-types.js +1 -0
  345. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/form-new-settings.control-model.js +39 -0
  346. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/icon-picker-field-new-settings.control-model.js +39 -0
  347. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/index.js +23 -0
  348. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/multiselect-field-new-settings.control-model.js +31 -0
  349. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/number-field-new-settings.control-model.js +29 -0
  350. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/password-field-new-settings.control-model.js +51 -0
  351. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/picker-field-new-option.interface.js +1 -0
  352. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/radio-select-field-new-settings.control-model.js +38 -0
  353. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/select-field-new-settings.control-model.js +35 -0
  354. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/slider-field-new-settings.control-model.js +50 -0
  355. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/slider-range-field-new-settings.control-model.js +47 -0
  356. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/text-field-new-settings.control-model.js +35 -0
  357. package/build-esm/_modules/ngx-models/_models/control-models/forms-new/textarea-field-new-settings.control-model.js +27 -0
  358. package/build-esm/_modules/ngx-models/_models/control-models/frames/header-item-settings.control-model.js +44 -0
  359. package/build-esm/_modules/ngx-models/_models/control-models/frames/main-frame-settings.control-model.js +56 -0
  360. package/build-esm/_modules/ngx-models/_models/control-models/frames/side-nav-item-settings.control-model.js +58 -0
  361. package/build-esm/_modules/ngx-models/_models/control-models/frames/side-nav-settings.control-model.js +38 -0
  362. package/build-esm/_modules/ngx-models/_models/control-models/select.control-model.js +27 -0
  363. package/build-esm/_modules/ngx-models/_models/control-models/signal-data-list-handler-settings.control-model.js +23 -0
  364. package/build-esm/_modules/ngx-models/_models/control-models/signal-data-search-handler-settings.control-model.js +25 -0
  365. package/build-esm/_modules/ngx-models/_models/control-models/signal-list-collector-data-handler-settings.control-model.js +12 -0
  366. package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-providers-settings.control-model.js +22 -0
  367. package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-record-button-settings.control-model.js +91 -0
  368. package/build-esm/_modules/ngx-models/_models/control-models/voice/voice-recorder-settings.control-model.js +42 -0
  369. package/build-esm/_modules/ngx-models/_models/interfaces/button-new-settings.interface.js +1 -0
  370. package/build-esm/_modules/ngx-models/_models/interfaces/confirm-settings.interface.js +1 -0
  371. package/build-esm/_modules/ngx-models/_models/interfaces/global-settings.interface.js +1 -0
  372. package/build-esm/_modules/ngx-models/_models/interfaces/select-options-custom-constructor.interface.js +1 -0
  373. package/build-esm/_modules/ngx-models/_models/interfaces/storage.service.js +40 -0
  374. package/build-esm/_modules/ngx-models/_models/interfaces/voice/speak-options.interface.js +1 -0
  375. package/build-esm/_modules/ngx-models/_models/interfaces/voice/speak-result.interface.js +1 -0
  376. package/build-esm/_modules/ngx-models/_models/interfaces/voice/transcribe-options.interface.js +1 -0
  377. package/build-esm/_modules/ngx-models/_models/interfaces/voice/transcribe-result.interface.js +1 -0
  378. package/build-esm/_modules/ngx-models/_models/interfaces/voice/voice-profile.interface.js +1 -0
  379. package/build-esm/_modules/ngx-models/_models/interfaces/voice/voice-provider-init.interface.js +1 -0
  380. package/build-esm/_modules/ngx-models/_utils/shared.service.js +407 -0
  381. package/build-esm/_modules/ngx-models/index.js +89 -0
  382. package/build-esm/_modules/operation-control/_collections/operation-lease.util.js +323 -0
  383. package/build-esm/_modules/operation-control/_enums/operation-decision-code.type-enum.js +22 -0
  384. package/build-esm/_modules/operation-control/_enums/operation-state.type-enum.js +9 -0
  385. package/build-esm/_modules/operation-control/_models/operation-lease.interface.js +1 -0
  386. package/build-esm/_modules/operation-control/index.js +4 -0
  387. package/build-esm/_modules/pipe/_collections/pip-transforms.const.js +32 -0
  388. package/build-esm/_modules/pipe/_collections/utils/pip-country-pipe.util.js +29 -0
  389. package/build-esm/_modules/pipe/_collections/utils/pip-custom-pipe.util.js +22 -0
  390. package/build-esm/_modules/pipe/_collections/utils/pip-division-pipe.util.js +21 -0
  391. package/build-esm/_modules/pipe/_collections/utils/pip-json-pipe.util.js +18 -0
  392. package/build-esm/_modules/pipe/_collections/utils/pip-list-pipe.util.js +19 -0
  393. package/build-esm/_modules/pipe/_collections/utils/pip-multi-pipe-pipe.util.js +164 -0
  394. package/build-esm/_modules/pipe/_collections/utils/pip-obj-key-pipe.util.js +16 -0
  395. package/build-esm/_modules/pipe/_collections/utils/pip-range-pipe.util.js +64 -0
  396. package/build-esm/_modules/pipe/_collections/utils/pip-region-pipe.util.js +22 -0
  397. package/build-esm/_modules/pipe/_collections/utils/pip-replace-pipe.util.js +15 -0
  398. package/build-esm/_modules/pipe/_collections/utils/pip-slider-pipe.util.js +26 -0
  399. package/build-esm/_modules/pipe/_collections/utils/pip-smart-replace-pipe.util.js +40 -0
  400. package/build-esm/_modules/pipe/_enums/pip-range-pipe-setting.enum.js +14 -0
  401. package/build-esm/_modules/pipe/_enums/pip.enum.js +48 -0
  402. package/build-esm/_modules/pipe/_models/pip-multi-pipe-settings.type.js +1 -0
  403. package/build-esm/_modules/pipe/_models/pip-transforms.interface.js +1 -0
  404. package/build-esm/_modules/pipe/index.js +22 -0
  405. package/build-esm/_modules/request-safety/_collections/request-safety-inspector.util.js +317 -0
  406. package/build-esm/_modules/request-safety/_enums/request-safety-finding.type-enum.js +39 -0
  407. package/build-esm/_modules/request-safety/_models/request-safety.interface.js +1 -0
  408. package/build-esm/_modules/request-safety/index.js +3 -0
  409. package/build-esm/_modules/sandbox-runtime/_collections/zero-egress-receipt.util.js +154 -0
  410. package/build-esm/_modules/sandbox-runtime/_collections/zero-egress-result-code.const.js +36 -0
  411. package/build-esm/_modules/sandbox-runtime/_enums/zero-egress-outcome.type-enum.js +11 -0
  412. package/build-esm/_modules/sandbox-runtime/_models/zero-egress-receipt.interface.js +1 -0
  413. package/build-esm/_modules/sandbox-runtime/index.js +4 -0
  414. package/build-esm/_modules/security/_collections/stored-secret.util.js +68 -0
  415. package/build-esm/_modules/security/_models/stored-secret.control-model.js +52 -0
  416. package/build-esm/_modules/security/index.js +7 -0
  417. package/build-esm/_modules/socket/_enums/sck-event-key.enum.js +18 -0
  418. package/build-esm/_modules/socket/_models/sck-client-params.control-model.js +47 -0
  419. package/build-esm/_modules/socket/_models/sck-socket-event.control-model.js +133 -0
  420. package/build-esm/_modules/socket/_services/sck-client.service-base.js +314 -0
  421. package/build-esm/_modules/socket/index.js +7 -0
  422. package/build-esm/_modules/state-machine/_models/state-machine-config.interface.js +1 -0
  423. package/build-esm/_modules/state-machine/_models/state-machine-event.interface.js +1 -0
  424. package/build-esm/_modules/state-machine/_models/state-machine.control-model.js +262 -0
  425. package/build-esm/_modules/state-machine/_models/state-transition-result.interface.js +1 -0
  426. package/build-esm/_modules/state-machine/_models/state-transition.interface.js +1 -0
  427. package/build-esm/_modules/state-machine/index.js +6 -0
  428. package/build-esm/_modules/test/_collections/tst-module-settings.const.js +38 -0
  429. package/build-esm/_modules/test/index.js +2 -0
  430. package/build-esm/_modules/usage/_collections/usg-module-settings.const.js +16 -0
  431. package/build-esm/_modules/usage/_models/usg-action.control-model.js +25 -0
  432. package/build-esm/_modules/usage/_models/usg-daily-usage-data.control-model.js +30 -0
  433. package/build-esm/_modules/usage/_models/usg-data.control-model.js +30 -0
  434. package/build-esm/_modules/usage/_models/usg-session.data-model.js +60 -0
  435. package/build-esm/_modules/usage/index.js +7 -0
  436. package/build-esm/index.js +108 -0
  437. package/package.json +114 -85
@@ -0,0 +1,6 @@
1
+ // ENUMS
2
+ export * from './_enums/cit-ci-result-code.enum';
3
+ export * from './_enums/cit-ci-step-result-code.enum';
4
+ // MODELS
5
+ export * from './_models/cit-ci-result-info.data-models';
6
+ export * from './_models/cit-ci-step-result.interface';
@@ -0,0 +1,199 @@
1
+ import * as CryptoJS from 'crypto-js';
2
+ import { DyFM_Object } from '../../../_collections/utils/object.util';
3
+ import { DyFM_Error } from '../../../_models/control-models/error.control-model';
4
+ /**
5
+ * A utility class for secure encryption and decryption of data
6
+ * Uses AES-256-CBC with deterministic IV and salt for consistent results
7
+ */
8
+ export class DyFM_Crypto {
9
+ static defaultErrorUserMsg = `We encountered an unhandled Authentication Error, ` +
10
+ `\nplease contact the responsible development team.`;
11
+ /**
12
+ * Validates the encryption key
13
+ */
14
+ static validateKey(key) {
15
+ if (!key || typeof key !== 'string') {
16
+ throw new DyFM_Error({
17
+ status: 401,
18
+ message: 'Encryption key is required and must be a string',
19
+ errorCode: 'DyFM-CRY-KEY-REQ'
20
+ });
21
+ }
22
+ if (key.trim().length === 0) {
23
+ throw new DyFM_Error({
24
+ status: 401,
25
+ message: 'Encryption key cannot be empty or whitespace-only',
26
+ errorCode: 'DyFM-CRY-KEY-EMPTY'
27
+ });
28
+ }
29
+ }
30
+ /**
31
+ * Safely serializes data to JSON
32
+ */
33
+ static safeSerialize(data) {
34
+ try {
35
+ return JSON.stringify(data);
36
+ }
37
+ catch (error) {
38
+ throw new DyFM_Error({
39
+ ...this.getDefaultErrorSettings('safeSerialize', error),
40
+ errorCode: 'DyFM-CRY-SER',
41
+ message: 'Failed to serialize data'
42
+ });
43
+ }
44
+ }
45
+ /**
46
+ * Safely deserializes JSON data
47
+ */
48
+ static safeDeserialize(data) {
49
+ try {
50
+ let parsed = DyFM_Object.failableSafeParseJSON(data);
51
+ // Handle double-stringified JSON
52
+ if (typeof parsed === 'string') {
53
+ try {
54
+ parsed = DyFM_Object.failableSafeParseJSON(parsed);
55
+ }
56
+ catch {
57
+ // If second parse fails, return the string as is
58
+ return parsed;
59
+ }
60
+ }
61
+ // Handle primitive values
62
+ if (typeof parsed === 'string' || typeof parsed === 'number' || typeof parsed === 'boolean') {
63
+ return parsed;
64
+ }
65
+ return parsed;
66
+ }
67
+ catch (error) {
68
+ throw new DyFM_Error({
69
+ ...this.getDefaultErrorSettings('safeDeserialize', error),
70
+ errorCode: 'DyFM-CRY-DES',
71
+ message: 'Failed to deserialize data'
72
+ });
73
+ }
74
+ }
75
+ /**
76
+ * Derives a 256-bit key from the passphrase using SHA256
77
+ */
78
+ static deriveKey(key) {
79
+ return CryptoJS.SHA256(key);
80
+ }
81
+ /**
82
+ * Creates a deterministic IV from the key only
83
+ */
84
+ static createDeterministicIV(key) {
85
+ const hash = CryptoJS.SHA256(key + ':iv');
86
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4)); // Use first 16 bytes (128 bits)
87
+ }
88
+ /**
89
+ * Encrypts data using AES-256-CBC with deterministic key and IV
90
+ * @param data The data to encrypt
91
+ * @param key The encryption key
92
+ * @returns URL-safe encrypted string
93
+ * @throws {DyFM_Error} if encryption fails
94
+ */
95
+ static encrypt(data, key) {
96
+ try {
97
+ // Validate key
98
+ this.validateKey(key);
99
+ // Validate data
100
+ if (data === undefined || data === null) {
101
+ throw new DyFM_Error({
102
+ status: 401,
103
+ message: 'Data cannot be undefined or null',
104
+ errorCode: 'DyFM-CRY-DATA-NULL'
105
+ });
106
+ }
107
+ // Convert data to string
108
+ const dataStr = this.safeSerialize(data);
109
+ // Derive key and IV
110
+ const aesKey = this.deriveKey(key);
111
+ const iv = this.createDeterministicIV(key);
112
+ // Encrypt the data with deterministic key and IV
113
+ const encrypted = CryptoJS.AES.encrypt(dataStr, aesKey, {
114
+ iv: iv,
115
+ mode: CryptoJS.mode.CBC,
116
+ padding: CryptoJS.pad.Pkcs7
117
+ });
118
+ // Convert to URL-safe base64
119
+ const base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
120
+ return base64
121
+ .replace(/\+/g, '-')
122
+ .replace(/\//g, '_')
123
+ .replace(/=+$/, '');
124
+ }
125
+ catch (error) {
126
+ throw new DyFM_Error({
127
+ ...this.getDefaultErrorSettings('encrypt', error),
128
+ errorCode: 'DyFM-CRY-ENC',
129
+ });
130
+ }
131
+ }
132
+ /**
133
+ * Decrypts data that was encrypted using encrypt()
134
+ * @param encryptedData The encrypted data
135
+ * @param key The decryption key
136
+ * @returns The decrypted data
137
+ * @throws {DyFM_Error} if decryption fails
138
+ */
139
+ static decrypt(encryptedData, key) {
140
+ try {
141
+ // Validate key
142
+ this.validateKey(key);
143
+ // Validate encrypted data
144
+ if (!encryptedData || typeof encryptedData !== 'string') {
145
+ throw new DyFM_Error({
146
+ status: 401,
147
+ message: 'Encrypted data is required and must be a string',
148
+ errorCode: 'DyFM-CRY-DATA-REQ'
149
+ });
150
+ }
151
+ // Convert from URL-safe base64
152
+ let base64 = encryptedData
153
+ .replace(/-/g, '+')
154
+ .replace(/_/g, '/');
155
+ // Add padding if needed
156
+ const padLength = 4 - (base64.length % 4);
157
+ if (padLength < 4) {
158
+ base64 += '='.repeat(padLength);
159
+ }
160
+ // Derive key and IV
161
+ const aesKey = this.deriveKey(key);
162
+ const iv = this.createDeterministicIV(key);
163
+ // Decrypt the data
164
+ const encryptedWA = CryptoJS.enc.Base64.parse(base64);
165
+ const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedWA }, aesKey, {
166
+ iv: iv,
167
+ mode: CryptoJS.mode.CBC,
168
+ padding: CryptoJS.pad.Pkcs7
169
+ });
170
+ // Parse JSON
171
+ const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
172
+ if (!decryptedStr) {
173
+ throw new DyFM_Error({
174
+ status: 401,
175
+ message: 'Failed to decrypt data - invalid key or corrupted data',
176
+ errorCode: 'DyFM-CRY-DEC-FAIL'
177
+ });
178
+ }
179
+ return this.safeDeserialize(decryptedStr);
180
+ }
181
+ catch (error) {
182
+ throw new DyFM_Error({
183
+ ...this.getDefaultErrorSettings('decrypt', error),
184
+ errorCode: 'DyFM-CRY-DRY',
185
+ });
186
+ }
187
+ }
188
+ /**
189
+ * Gets default error settings
190
+ */
191
+ static getDefaultErrorSettings(operation, error) {
192
+ return {
193
+ status: error?.___status ?? error?.status ?? 401,
194
+ message: `Crypto operation "${operation}" failed; ` + DyFM_Error.getAnyMessage(error),
195
+ error: error,
196
+ errorCode: 'DyFM-CRY-ERR'
197
+ };
198
+ }
199
+ }
@@ -0,0 +1,273 @@
1
+ import * as CryptoJS from 'crypto-js';
2
+ import { DyFM_Error } from '../../../_models/control-models/error.control-model';
3
+ import { DyFM_Object } from '../../../_collections/utils/object.util';
4
+ // Compact: about 60–80 character tokens, not 200+
5
+ // Non-standard: hard to reverse-engineer
6
+ // Usable in cookies, headers, URLs
7
+ /**
8
+ * A utility class for stable encryption and decryption of data
9
+ * Uses AES-256-CBC with deterministic IV and salt for consistent results across systems
10
+ * Prioritizes reliability and cross-platform compatibility over security
11
+ *
12
+ * @important DETERMINISTIC ENCRYPTION: This implementation produces identical encrypted
13
+ * output for identical input data and key across different systems and multiple calls.
14
+ * The same input will ALWAYS generate the same encrypted string on any platform.
15
+ *
16
+ * @warning SECURITY NOTICE: This deterministic behavior is intentional for cross-platform
17
+ * compatibility but reduces security. Identical inputs produce identical outputs, which
18
+ * can be exploited for pattern analysis attacks. Use only when consistency across
19
+ * systems is more important than cryptographic security.
20
+ */
21
+ export class DyFM_Crypto {
22
+ static DEFAULT_CONFIG = {
23
+ ivLength: 16, // 128 bits
24
+ saltLength: 16, // 128 bits
25
+ keyIterations: 1000, // Reduced for better performance and stability
26
+ keySize: 8, // 256 bits (8 * 32)
27
+ };
28
+ static defaultErrorUserMsg = `We encountered an unhandled Authentication Error, ` +
29
+ `\nplease contact the responsible development team.`;
30
+ /**
31
+ * Validates the input data and key
32
+ * @throws {DyFM_Error} if validation fails
33
+ */
34
+ static validateInput(data, key) {
35
+ if (!key || typeof key !== 'string' || key.trim().length === 0) {
36
+ throw new DyFM_Error({
37
+ ...this.getDefaultErrorSettings('validateInput'),
38
+ errorCode: 'DyFM-CRY-IKY',
39
+ message: 'Invalid encryption key',
40
+ });
41
+ }
42
+ // Allow null values but not undefined
43
+ if (data === undefined) {
44
+ throw new DyFM_Error({
45
+ ...this.getDefaultErrorSettings('validateInput'),
46
+ errorCode: 'DyFM-CRY-IDT',
47
+ message: `Invalid data to encrypt/decrypt (is "${data}")`,
48
+ });
49
+ }
50
+ }
51
+ /**
52
+ * Generates a deterministic IV based on the input data and key
53
+ * Uses MD5 for better stability across different CryptoJS versions
54
+ *
55
+ * @important DETERMINISTIC: Same data + key will ALWAYS produce the same IV
56
+ * across all systems and CryptoJS versions for consistent encryption results
57
+ */
58
+ static generateIV(data, key, config) {
59
+ // Use MD5 for better stability - simpler hash algorithm, more consistent across versions
60
+ const combined = data + key;
61
+ const hash = CryptoJS.MD5(combined);
62
+ // Use slice(0, 4) for 16 bytes - more stable than division operations
63
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4));
64
+ }
65
+ /**
66
+ * Generates a deterministic salt based on the input data and key
67
+ * Uses MD5 for better stability across different CryptoJS versions
68
+ *
69
+ * @important DETERMINISTIC: Same data + key will ALWAYS produce the same salt
70
+ * across all systems and CryptoJS versions for consistent encryption results
71
+ */
72
+ static generateSalt(data, key, config) {
73
+ // Use MD5 for better stability - simpler hash algorithm, more consistent across versions
74
+ const combined = key + data;
75
+ const hash = CryptoJS.MD5(combined);
76
+ // Use slice(0, 4) for 16 bytes - more stable than division operations
77
+ return CryptoJS.lib.WordArray.create(hash.words.slice(0, 4));
78
+ }
79
+ /**
80
+ * Derives a key using PBKDF2 with reduced iterations for stability
81
+ */
82
+ static deriveKey(key, salt, config) {
83
+ return CryptoJS.PBKDF2(key, salt, {
84
+ keySize: config.keySize,
85
+ iterations: config.keyIterations,
86
+ });
87
+ }
88
+ /**
89
+ * Safely serializes data to JSON
90
+ */
91
+ static safeSerialize(data) {
92
+ try {
93
+ // Always use JSON.stringify to ensure proper serialization/deserialization
94
+ return JSON.stringify(data);
95
+ }
96
+ catch (error) {
97
+ throw new DyFM_Error({
98
+ ...this.getDefaultErrorSettings('safeSerialize', error),
99
+ errorCode: 'DyFM-CRY-SER',
100
+ message: 'Failed to serialize data',
101
+ });
102
+ }
103
+ }
104
+ /**
105
+ * Safely deserializes JSON data
106
+ */
107
+ static safeDeserialize(data) {
108
+ try {
109
+ //let parsed = JSON.parse(data);
110
+ let parsed = DyFM_Object.failableSafeParseJSON(data);
111
+ // Handle double-stringified JSON (or more levels of stringification)
112
+ let maxAttempts = 3; // Prevent infinite loops
113
+ while (typeof parsed === 'string' && maxAttempts > 0) {
114
+ try {
115
+ //const nextParsed = JSON.parse(parsed);
116
+ const nextParsed = DyFM_Object.failableSafeParseJSON(parsed);
117
+ // Only continue if parsing actually changed the result
118
+ if (nextParsed !== parsed) {
119
+ parsed = nextParsed;
120
+ maxAttempts--;
121
+ }
122
+ else {
123
+ break;
124
+ }
125
+ }
126
+ catch {
127
+ // If parse fails, return current state
128
+ break;
129
+ }
130
+ }
131
+ // Handle primitive values
132
+ /* if (typeof parsed === 'string' || typeof parsed === 'number' || typeof parsed === 'boolean') {
133
+ return parsed as T;
134
+ } */
135
+ return parsed;
136
+ }
137
+ catch (error) {
138
+ throw new DyFM_Error({
139
+ ...this.getDefaultErrorSettings('safeDeserialize', error),
140
+ errorCode: 'DyFM-CRY-DES',
141
+ message: 'Failed to deserialize data',
142
+ });
143
+ }
144
+ }
145
+ /**
146
+ * Encrypts data using AES-256-CBC with deterministic IV and salt
147
+ *
148
+ * @important DETERMINISTIC BEHAVIOR: This method will produce identical encrypted
149
+ * output for identical input parameters across different systems, Node.js versions,
150
+ * and multiple function calls. The same data + key combination will ALWAYS generate
151
+ * the same encrypted string.
152
+ *
153
+ * @param data The data to encrypt
154
+ * @param key The encryption key
155
+ * @param config Optional configuration
156
+ * @returns URL-safe encrypted string that is identical across systems for same input
157
+ * @throws {DyFM_Error} if encryption fails
158
+ *
159
+ * @example
160
+ * // These will produce identical results on any system:
161
+ * const result1 = DyFM_Crypto.encrypt({id: 1}, "mykey");
162
+ * const result2 = DyFM_Crypto.encrypt({id: 1}, "mykey");
163
+ * console.log(result1 === result2); // Always true
164
+ */
165
+ static encrypt(data, key, config) {
166
+ try {
167
+ this.validateInput(data, key);
168
+ const finalConfig = { ...this.DEFAULT_CONFIG, ...config };
169
+ // Convert data to string
170
+ const dataStr = this.safeSerialize(data);
171
+ // Generate deterministic IV and salt based on data and key
172
+ const iv = this.generateIV(dataStr, key, finalConfig);
173
+ const salt = this.generateSalt(dataStr, key, finalConfig);
174
+ // Derive key using PBKDF2
175
+ const derivedKey = this.deriveKey(key, salt, finalConfig);
176
+ // Encrypt the data
177
+ const encrypted = CryptoJS.AES.encrypt(dataStr, derivedKey, {
178
+ iv: iv,
179
+ mode: CryptoJS.mode.CBC,
180
+ padding: CryptoJS.pad.Pkcs7,
181
+ });
182
+ // Combine IV + Salt + Ciphertext
183
+ const combined = iv.concat(salt).concat(encrypted.ciphertext);
184
+ // Convert to URL-safe base64
185
+ return CryptoJS.enc.Base64.stringify(combined)
186
+ .replace(/\+/g, '-')
187
+ .replace(/\//g, '_')
188
+ .replace(/=+$/, '');
189
+ }
190
+ catch (error) {
191
+ throw new DyFM_Error({
192
+ ...this.getDefaultErrorSettings('encrypt', error),
193
+ errorCode: 'DyFM-CRY-ENC',
194
+ });
195
+ }
196
+ }
197
+ /**
198
+ * Decrypts data that was encrypted using encrypt()
199
+ * @param encryptedData The encrypted data
200
+ * @param key The decryption key
201
+ * @param config Optional configuration
202
+ * @returns The decrypted data
203
+ * @throws {DyFM_Error} if decryption fails
204
+ */
205
+ static decrypt(encryptedData, key, config) {
206
+ try {
207
+ this.validateInput(encryptedData, key);
208
+ const finalConfig = { ...this.DEFAULT_CONFIG, ...config };
209
+ // Convert from URL-safe base64
210
+ const base64 = encryptedData
211
+ .replace(/-/g, '+')
212
+ .replace(/_/g, '/');
213
+ // Parse the combined data
214
+ const combined = CryptoJS.enc.Base64.parse(base64);
215
+ // Validate minimum length (IV + Salt + minimum ciphertext)
216
+ const minLength = (finalConfig.ivLength + finalConfig.saltLength + 16) / 4; // 16 bytes minimum for ciphertext
217
+ if (combined.words.length < minLength) {
218
+ throw new Error('Invalid encrypted data length');
219
+ }
220
+ // Extract IV, salt, and ciphertext
221
+ const iv = CryptoJS.lib.WordArray.create(combined.words.slice(0, finalConfig.ivLength / 4));
222
+ const salt = CryptoJS.lib.WordArray.create(combined.words.slice(finalConfig.ivLength / 4, (finalConfig.ivLength + finalConfig.saltLength) / 4));
223
+ const ciphertext = CryptoJS.lib.WordArray.create(combined.words.slice((finalConfig.ivLength + finalConfig.saltLength) / 4));
224
+ // Derive key using PBKDF2
225
+ const derivedKey = this.deriveKey(key, salt, finalConfig);
226
+ // Decrypt the data
227
+ const decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, derivedKey, {
228
+ iv: iv,
229
+ mode: CryptoJS.mode.CBC,
230
+ padding: CryptoJS.pad.Pkcs7,
231
+ });
232
+ // Parse JSON
233
+ const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
234
+ return this.safeDeserialize(decryptedStr);
235
+ }
236
+ catch (error) {
237
+ throw new DyFM_Error({
238
+ ...this.getDefaultErrorSettings('decrypt', error),
239
+ errorCode: 'DyFM-CRY-DRY',
240
+ });
241
+ }
242
+ }
243
+ /**
244
+ * Generates a secure random key
245
+ * @param length Length of the key in bytes (default: 32)
246
+ * @returns A secure random key
247
+ */
248
+ static generateKey(length = 32) {
249
+ return CryptoJS.lib.WordArray.random(length).toString();
250
+ }
251
+ /**
252
+ * Validates if a string is a valid encrypted data
253
+ * @param encryptedData The data to validate
254
+ * @returns true if the data appears to be valid encrypted data
255
+ */
256
+ static isValidEncryptedData(encryptedData) {
257
+ if (!encryptedData || typeof encryptedData !== 'string') {
258
+ return false;
259
+ }
260
+ return /^[A-Za-z0-9\-_]+$/.test(encryptedData);
261
+ }
262
+ /**
263
+ * Gets default error settings
264
+ */
265
+ static getDefaultErrorSettings(operation, error) {
266
+ return {
267
+ status: error?.___status ?? error?.status ?? 401,
268
+ message: `Crypto operation "${operation}" failed`,
269
+ error: error,
270
+ errorCode: 'DyFM-CRY-ERR',
271
+ };
272
+ }
273
+ }