@infosel-sdk/widgets 1.0.1

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 (291) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/README.md +966 -0
  3. package/package.json +39 -0
  4. package/src/__tests__/__mocks__/apis/charts-api.mock.d.ts +106 -0
  5. package/src/__tests__/__mocks__/apis/charts-api.mock.js +110 -0
  6. package/src/__tests__/__mocks__/apis/charts-api.mock.js.map +1 -0
  7. package/src/__tests__/__mocks__/apis/markets-api.mock.d.ts +148 -0
  8. package/src/__tests__/__mocks__/apis/markets-api.mock.js +121 -0
  9. package/src/__tests__/__mocks__/apis/markets-api.mock.js.map +1 -0
  10. package/src/__tests__/__mocks__/core/auth-provider.mock.d.ts +63 -0
  11. package/src/__tests__/__mocks__/core/auth-provider.mock.js +50 -0
  12. package/src/__tests__/__mocks__/core/auth-provider.mock.js.map +1 -0
  13. package/src/__tests__/__mocks__/core/graphql-client.mock.d.ts +36 -0
  14. package/src/__tests__/__mocks__/core/graphql-client.mock.js +60 -0
  15. package/src/__tests__/__mocks__/core/graphql-client.mock.js.map +1 -0
  16. package/src/__tests__/__mocks__/core/http-client.mock.d.ts +43 -0
  17. package/src/__tests__/__mocks__/core/http-client.mock.js +40 -0
  18. package/src/__tests__/__mocks__/core/http-client.mock.js.map +1 -0
  19. package/src/__tests__/__mocks__/core/sdk-manager.mock.d.ts +116 -0
  20. package/src/__tests__/__mocks__/core/sdk-manager.mock.js +58 -0
  21. package/src/__tests__/__mocks__/core/sdk-manager.mock.js.map +1 -0
  22. package/src/__tests__/__mocks__/core/storage.mock.d.ts +32 -0
  23. package/src/__tests__/__mocks__/core/storage.mock.js +35 -0
  24. package/src/__tests__/__mocks__/core/storage.mock.js.map +1 -0
  25. package/src/__tests__/setup.d.ts +16 -0
  26. package/src/__tests__/setup.js +34 -0
  27. package/src/__tests__/setup.js.map +1 -0
  28. package/src/__tests__/utils/mock-datasource.d.ts +5 -0
  29. package/src/__tests__/utils/mock-datasource.js +39 -0
  30. package/src/__tests__/utils/mock-datasource.js.map +1 -0
  31. package/src/__tests__/utils/mock-factories.d.ts +547 -0
  32. package/src/__tests__/utils/mock-factories.js +226 -0
  33. package/src/__tests__/utils/mock-factories.js.map +1 -0
  34. package/src/__tests__/utils/mock-repository.d.ts +22 -0
  35. package/src/__tests__/utils/mock-repository.js +73 -0
  36. package/src/__tests__/utils/mock-repository.js.map +1 -0
  37. package/src/__tests__/utils/test-helpers.d.ts +52 -0
  38. package/src/__tests__/utils/test-helpers.js +169 -0
  39. package/src/__tests__/utils/test-helpers.js.map +1 -0
  40. package/src/data/datasources/widgets_datasource_impl.d.ts +57 -0
  41. package/src/data/datasources/widgets_datasource_impl.js +997 -0
  42. package/src/data/datasources/widgets_datasource_impl.js.map +1 -0
  43. package/src/data/di/infosel_widgets_component.d.ts +68 -0
  44. package/src/data/di/infosel_widgets_component.js +170 -0
  45. package/src/data/di/infosel_widgets_component.js.map +1 -0
  46. package/src/data/di/infosel_widgets_module.d.ts +17 -0
  47. package/src/data/di/infosel_widgets_module.js +34 -0
  48. package/src/data/di/infosel_widgets_module.js.map +1 -0
  49. package/src/data/mappers/widgets_mapper.d.ts +52 -0
  50. package/src/data/mappers/widgets_mapper.js +294 -0
  51. package/src/data/mappers/widgets_mapper.js.map +1 -0
  52. package/src/data/models/delete_workspace_response_model.d.ts +5 -0
  53. package/src/data/models/delete_workspace_response_model.js +3 -0
  54. package/src/data/models/delete_workspace_response_model.js.map +1 -0
  55. package/src/data/models/get_user_workspaces_response_model.d.ts +15 -0
  56. package/src/data/models/get_user_workspaces_response_model.js +3 -0
  57. package/src/data/models/get_user_workspaces_response_model.js.map +1 -0
  58. package/src/data/models/instrument_fields_model.d.ts +84 -0
  59. package/src/data/models/instrument_fields_model.js +3 -0
  60. package/src/data/models/instrument_fields_model.js.map +1 -0
  61. package/src/data/models/instrument_model.d.ts +5 -0
  62. package/src/data/models/instrument_model.js +3 -0
  63. package/src/data/models/instrument_model.js.map +1 -0
  64. package/src/data/models/project_model.d.ts +12 -0
  65. package/src/data/models/project_model.js +3 -0
  66. package/src/data/models/project_model.js.map +1 -0
  67. package/src/data/models/project_widgets_response_model.d.ts +8 -0
  68. package/src/data/models/project_widgets_response_model.js +3 -0
  69. package/src/data/models/project_widgets_response_model.js.map +1 -0
  70. package/src/data/models/user_model.d.ts +7 -0
  71. package/src/data/models/user_model.js +3 -0
  72. package/src/data/models/user_model.js.map +1 -0
  73. package/src/data/models/user_widgets_response_model.d.ts +7 -0
  74. package/src/data/models/user_widgets_response_model.js +3 -0
  75. package/src/data/models/user_widgets_response_model.js.map +1 -0
  76. package/src/data/models/widget_brokerage_concentration_configuration.d.ts +4 -0
  77. package/src/data/models/widget_brokerage_concentration_configuration.js +3 -0
  78. package/src/data/models/widget_brokerage_concentration_configuration.js.map +1 -0
  79. package/src/data/models/widget_brokerage_participation_configuration.d.ts +10 -0
  80. package/src/data/models/widget_brokerage_participation_configuration.js +3 -0
  81. package/src/data/models/widget_brokerage_participation_configuration.js.map +1 -0
  82. package/src/data/models/widget_brokerage_trades_configuration.d.ts +11 -0
  83. package/src/data/models/widget_brokerage_trades_configuration.js +3 -0
  84. package/src/data/models/widget_brokerage_trades_configuration.js.map +1 -0
  85. package/src/data/models/widget_chart_configuration_model.d.ts +4 -0
  86. package/src/data/models/widget_chart_configuration_model.js +3 -0
  87. package/src/data/models/widget_chart_configuration_model.js.map +1 -0
  88. package/src/data/models/widget_decreed_search_configuration.d.ts +10 -0
  89. package/src/data/models/widget_decreed_search_configuration.js +3 -0
  90. package/src/data/models/widget_decreed_search_configuration.js.map +1 -0
  91. package/src/data/models/widget_dynamic_table_configuration.d.ts +14 -0
  92. package/src/data/models/widget_dynamic_table_configuration.js +3 -0
  93. package/src/data/models/widget_dynamic_table_configuration.js.map +1 -0
  94. package/src/data/models/widget_indices_components_configuration.d.ts +7 -0
  95. package/src/data/models/widget_indices_components_configuration.js +3 -0
  96. package/src/data/models/widget_indices_components_configuration.js.map +1 -0
  97. package/src/data/models/widget_layout_model.d.ts +6 -0
  98. package/src/data/models/widget_layout_model.js +3 -0
  99. package/src/data/models/widget_layout_model.js.map +1 -0
  100. package/src/data/models/widget_market_total_configuration.d.ts +4 -0
  101. package/src/data/models/widget_market_total_configuration.js +3 -0
  102. package/src/data/models/widget_market_total_configuration.js.map +1 -0
  103. package/src/data/models/widget_model.d.ts +33 -0
  104. package/src/data/models/widget_model.js +3 -0
  105. package/src/data/models/widget_model.js.map +1 -0
  106. package/src/data/models/widget_size_model.d.ts +14 -0
  107. package/src/data/models/widget_size_model.js +3 -0
  108. package/src/data/models/widget_size_model.js.map +1 -0
  109. package/src/data/models/widget_table_column_format_model.d.ts +6 -0
  110. package/src/data/models/widget_table_column_format_model.js +3 -0
  111. package/src/data/models/widget_table_column_format_model.js.map +1 -0
  112. package/src/data/models/widget_table_column_model.d.ts +8 -0
  113. package/src/data/models/widget_table_column_model.js +3 -0
  114. package/src/data/models/widget_table_column_model.js.map +1 -0
  115. package/src/data/models/widget_ticker_configuration.d.ts +7 -0
  116. package/src/data/models/widget_ticker_configuration.js +3 -0
  117. package/src/data/models/widget_ticker_configuration.js.map +1 -0
  118. package/src/data/models/widget_traded_packages_configuration.d.ts +4 -0
  119. package/src/data/models/widget_traded_packages_configuration.js +3 -0
  120. package/src/data/models/widget_traded_packages_configuration.js.map +1 -0
  121. package/src/data/models/workspace_model.d.ts +6 -0
  122. package/src/data/models/workspace_model.js +3 -0
  123. package/src/data/models/workspace_model.js.map +1 -0
  124. package/src/data/repositories/widgets_repository_impl.d.ts +46 -0
  125. package/src/data/repositories/widgets_repository_impl.js +66 -0
  126. package/src/data/repositories/widgets_repository_impl.js.map +1 -0
  127. package/src/domain/datasources/widgets_datasource.d.ts +41 -0
  128. package/src/domain/datasources/widgets_datasource.js +3 -0
  129. package/src/domain/datasources/widgets_datasource.js.map +1 -0
  130. package/src/domain/di/widgets_component.d.ts +42 -0
  131. package/src/domain/di/widgets_component.js +3 -0
  132. package/src/domain/di/widgets_component.js.map +1 -0
  133. package/src/domain/di/widgets_module.d.ts +8 -0
  134. package/src/domain/di/widgets_module.js +3 -0
  135. package/src/domain/di/widgets_module.js.map +1 -0
  136. package/src/domain/entities/chart_configuration.d.ts +5 -0
  137. package/src/domain/entities/chart_configuration.js +3 -0
  138. package/src/domain/entities/chart_configuration.js.map +1 -0
  139. package/src/domain/entities/create_instrument_request.d.ts +5 -0
  140. package/src/domain/entities/create_instrument_request.js +3 -0
  141. package/src/domain/entities/create_instrument_request.js.map +1 -0
  142. package/src/domain/entities/create_widget_request.d.ts +36 -0
  143. package/src/domain/entities/create_widget_request.js +3 -0
  144. package/src/domain/entities/create_widget_request.js.map +1 -0
  145. package/src/domain/entities/create_workspace_request.d.ts +5 -0
  146. package/src/domain/entities/create_workspace_request.js +3 -0
  147. package/src/domain/entities/create_workspace_request.js.map +1 -0
  148. package/src/domain/entities/delete_workspace_request.d.ts +3 -0
  149. package/src/domain/entities/delete_workspace_request.js +3 -0
  150. package/src/domain/entities/delete_workspace_request.js.map +1 -0
  151. package/src/domain/entities/duplicate_widget_request.d.ts +5 -0
  152. package/src/domain/entities/duplicate_widget_request.js +3 -0
  153. package/src/domain/entities/duplicate_widget_request.js.map +1 -0
  154. package/src/domain/entities/duplicate_workspace_request.d.ts +5 -0
  155. package/src/domain/entities/duplicate_workspace_request.js +3 -0
  156. package/src/domain/entities/duplicate_workspace_request.js.map +1 -0
  157. package/src/domain/entities/get_instruments_request.d.ts +12 -0
  158. package/src/domain/entities/get_instruments_request.js +3 -0
  159. package/src/domain/entities/get_instruments_request.js.map +1 -0
  160. package/src/domain/entities/get_project_widgets_request.d.ts +12 -0
  161. package/src/domain/entities/get_project_widgets_request.js +3 -0
  162. package/src/domain/entities/get_project_widgets_request.js.map +1 -0
  163. package/src/domain/entities/get_user_widgets_request.d.ts +3 -0
  164. package/src/domain/entities/get_user_widgets_request.js +3 -0
  165. package/src/domain/entities/get_user_widgets_request.js.map +1 -0
  166. package/src/domain/entities/get_user_workspaces_request.d.ts +4 -0
  167. package/src/domain/entities/get_user_workspaces_request.js +3 -0
  168. package/src/domain/entities/get_user_workspaces_request.js.map +1 -0
  169. package/src/domain/entities/get_workspace_request.d.ts +3 -0
  170. package/src/domain/entities/get_workspace_request.js +3 -0
  171. package/src/domain/entities/get_workspace_request.js.map +1 -0
  172. package/src/domain/entities/get_workspaces_by_user_request.d.ts +12 -0
  173. package/src/domain/entities/get_workspaces_by_user_request.js +3 -0
  174. package/src/domain/entities/get_workspaces_by_user_request.js.map +1 -0
  175. package/src/domain/entities/get_workspaces_request.d.ts +12 -0
  176. package/src/domain/entities/get_workspaces_request.js +3 -0
  177. package/src/domain/entities/get_workspaces_request.js.map +1 -0
  178. package/src/domain/entities/index.d.ts +30 -0
  179. package/src/domain/entities/index.js +34 -0
  180. package/src/domain/entities/index.js.map +1 -0
  181. package/src/domain/entities/instrument.d.ts +4 -0
  182. package/src/domain/entities/instrument.js +3 -0
  183. package/src/domain/entities/instrument.js.map +1 -0
  184. package/src/domain/entities/instrument_fields.d.ts +86 -0
  185. package/src/domain/entities/instrument_fields.js +3 -0
  186. package/src/domain/entities/instrument_fields.js.map +1 -0
  187. package/src/domain/entities/instruments_response.d.ts +6 -0
  188. package/src/domain/entities/instruments_response.js +3 -0
  189. package/src/domain/entities/instruments_response.js.map +1 -0
  190. package/src/domain/entities/news_configuration.d.ts +8 -0
  191. package/src/domain/entities/news_configuration.js +3 -0
  192. package/src/domain/entities/news_configuration.js.map +1 -0
  193. package/src/domain/entities/project_widgets_container.d.ts +8 -0
  194. package/src/domain/entities/project_widgets_container.js +3 -0
  195. package/src/domain/entities/project_widgets_container.js.map +1 -0
  196. package/src/domain/entities/update_widget_chart_request.d.ts +4 -0
  197. package/src/domain/entities/update_widget_chart_request.js +3 -0
  198. package/src/domain/entities/update_widget_chart_request.js.map +1 -0
  199. package/src/domain/entities/update_widget_instruments_reques.d.ts +11 -0
  200. package/src/domain/entities/update_widget_instruments_reques.js +3 -0
  201. package/src/domain/entities/update_widget_instruments_reques.js.map +1 -0
  202. package/src/domain/entities/update_workspace_request.d.ts +19 -0
  203. package/src/domain/entities/update_workspace_request.js +3 -0
  204. package/src/domain/entities/update_workspace_request.js.map +1 -0
  205. package/src/domain/entities/user_widgets.d.ts +5 -0
  206. package/src/domain/entities/user_widgets.js +3 -0
  207. package/src/domain/entities/user_widgets.js.map +1 -0
  208. package/src/domain/entities/user_workspaces.d.ts +8 -0
  209. package/src/domain/entities/user_workspaces.js +3 -0
  210. package/src/domain/entities/user_workspaces.js.map +1 -0
  211. package/src/domain/entities/widget.d.ts +129 -0
  212. package/src/domain/entities/widget.js +3 -0
  213. package/src/domain/entities/widget.js.map +1 -0
  214. package/src/domain/entities/widget_layout_config.d.ts +15 -0
  215. package/src/domain/entities/widget_layout_config.js +3 -0
  216. package/src/domain/entities/widget_layout_config.js.map +1 -0
  217. package/src/domain/entities/widget_size_config.d.ts +6 -0
  218. package/src/domain/entities/widget_size_config.js +3 -0
  219. package/src/domain/entities/widget_size_config.js.map +1 -0
  220. package/src/domain/entities/workspace.d.ts +13 -0
  221. package/src/domain/entities/workspace.js +3 -0
  222. package/src/domain/entities/workspace.js.map +1 -0
  223. package/src/domain/entities/workspace_widgets.d.ts +6 -0
  224. package/src/domain/entities/workspace_widgets.js +3 -0
  225. package/src/domain/entities/workspace_widgets.js.map +1 -0
  226. package/src/domain/entities/workspaces_container.d.ts +18 -0
  227. package/src/domain/entities/workspaces_container.js +3 -0
  228. package/src/domain/entities/workspaces_container.js.map +1 -0
  229. package/src/domain/repositories/widgets_repository.d.ts +42 -0
  230. package/src/domain/repositories/widgets_repository.js +3 -0
  231. package/src/domain/repositories/widgets_repository.js.map +1 -0
  232. package/src/domain/use_cases/create_instrument_use_case.d.ts +9 -0
  233. package/src/domain/use_cases/create_instrument_use_case.js +22 -0
  234. package/src/domain/use_cases/create_instrument_use_case.js.map +1 -0
  235. package/src/domain/use_cases/create_widget_use_case.d.ts +9 -0
  236. package/src/domain/use_cases/create_widget_use_case.js +32 -0
  237. package/src/domain/use_cases/create_widget_use_case.js.map +1 -0
  238. package/src/domain/use_cases/create_workspace_use_case.d.ts +9 -0
  239. package/src/domain/use_cases/create_workspace_use_case.js +22 -0
  240. package/src/domain/use_cases/create_workspace_use_case.js.map +1 -0
  241. package/src/domain/use_cases/delete_instrument_use_case.d.ts +7 -0
  242. package/src/domain/use_cases/delete_instrument_use_case.js +19 -0
  243. package/src/domain/use_cases/delete_instrument_use_case.js.map +1 -0
  244. package/src/domain/use_cases/delete_widget_use_case.d.ts +7 -0
  245. package/src/domain/use_cases/delete_widget_use_case.js +19 -0
  246. package/src/domain/use_cases/delete_widget_use_case.js.map +1 -0
  247. package/src/domain/use_cases/delete_workspace_use_case.d.ts +8 -0
  248. package/src/domain/use_cases/delete_workspace_use_case.js +22 -0
  249. package/src/domain/use_cases/delete_workspace_use_case.js.map +1 -0
  250. package/src/domain/use_cases/duplicate_widget_use_case.d.ts +8 -0
  251. package/src/domain/use_cases/duplicate_widget_use_case.js +15 -0
  252. package/src/domain/use_cases/duplicate_widget_use_case.js.map +1 -0
  253. package/src/domain/use_cases/duplicate_workspace_use_case.d.ts +8 -0
  254. package/src/domain/use_cases/duplicate_workspace_use_case.js +15 -0
  255. package/src/domain/use_cases/duplicate_workspace_use_case.js.map +1 -0
  256. package/src/domain/use_cases/get_instruments_use_case.d.ts +9 -0
  257. package/src/domain/use_cases/get_instruments_use_case.js +16 -0
  258. package/src/domain/use_cases/get_instruments_use_case.js.map +1 -0
  259. package/src/domain/use_cases/get_project_widgets_use_case.d.ts +9 -0
  260. package/src/domain/use_cases/get_project_widgets_use_case.js +19 -0
  261. package/src/domain/use_cases/get_project_widgets_use_case.js.map +1 -0
  262. package/src/domain/use_cases/get_user_widgets_use_case.d.ts +9 -0
  263. package/src/domain/use_cases/get_user_widgets_use_case.js +22 -0
  264. package/src/domain/use_cases/get_user_widgets_use_case.js.map +1 -0
  265. package/src/domain/use_cases/get_user_workspace_use_case.d.ts +9 -0
  266. package/src/domain/use_cases/get_user_workspace_use_case.js +22 -0
  267. package/src/domain/use_cases/get_user_workspace_use_case.js.map +1 -0
  268. package/src/domain/use_cases/get_workspace_use_case.d.ts +9 -0
  269. package/src/domain/use_cases/get_workspace_use_case.js +19 -0
  270. package/src/domain/use_cases/get_workspace_use_case.js.map +1 -0
  271. package/src/domain/use_cases/get_workspaces_by_project_id_use_case.d.ts +9 -0
  272. package/src/domain/use_cases/get_workspaces_by_project_id_use_case.js +19 -0
  273. package/src/domain/use_cases/get_workspaces_by_project_id_use_case.js.map +1 -0
  274. package/src/domain/use_cases/get_workspaces_by_user_use_case.d.ts +9 -0
  275. package/src/domain/use_cases/get_workspaces_by_user_use_case.js +19 -0
  276. package/src/domain/use_cases/get_workspaces_by_user_use_case.js.map +1 -0
  277. package/src/domain/use_cases/get_workspaces_use_case.d.ts +9 -0
  278. package/src/domain/use_cases/get_workspaces_use_case.js +19 -0
  279. package/src/domain/use_cases/get_workspaces_use_case.js.map +1 -0
  280. package/src/domain/use_cases/update_widget_chart_use_case.d.ts +7 -0
  281. package/src/domain/use_cases/update_widget_chart_use_case.js +15 -0
  282. package/src/domain/use_cases/update_widget_chart_use_case.js.map +1 -0
  283. package/src/domain/use_cases/update_widget_instruments_use_case.d.ts +9 -0
  284. package/src/domain/use_cases/update_widget_instruments_use_case.js +22 -0
  285. package/src/domain/use_cases/update_widget_instruments_use_case.js.map +1 -0
  286. package/src/domain/use_cases/update_workspace_use_case.d.ts +8 -0
  287. package/src/domain/use_cases/update_workspace_use_case.js +15 -0
  288. package/src/domain/use_cases/update_workspace_use_case.js.map +1 -0
  289. package/src/index.d.ts +6 -0
  290. package/src/index.js +10 -0
  291. package/src/index.js.map +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,167 @@
1
+ # Changelog
2
+
3
+ Todos los cambios notables en este proyecto serán documentados en este archivo.
4
+
5
+ El formato está basado en [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ y este proyecto adhiere al [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.1] - 2025-01-XX
9
+
10
+ ### Fixed
11
+
12
+ - 🐛 **createWidget response ahora incluye chartConfiguration**: Se agregaron los campos `chartConfiguration { id, globalConfiguration }` a la respuesta de la mutación `createWidget` para que la respuesta incluya la configuración del gráfico cuando se crea un widget de tipo CHART. Esto asegura que el widget creado retorne todos sus datos completos incluyendo la configuración del gráfico.
13
+
14
+ ## [1.0.0] - 2025-01-06
15
+
16
+ ### Added
17
+
18
+ - 🎉 **Lanzamiento inicial del SDK de Widgets** - Primer release del paquete independiente `@infosel-sdk/widgets` dedicado exclusivamente a la gestión de widgets, workspaces e instrumentos financieros.
19
+
20
+ - 📦 **Migración completa desde @infosel-sdk/markets** - Se migraron 19 casos de uso, todas las entidades relacionadas, repositorios, datasources, mappers y tests desde el paquete markets para crear una arquitectura limpia y enfocada.
21
+
22
+ #### Casos de Uso de Widgets (5 métodos)
23
+
24
+ - 🎨 **createWidget(request: CreateWidgetRequest)**: Crea nuevos widgets con configuraciones personalizadas. Soporta 15 tipos de widgets incluyendo CHART, DYNAMIC_TABLE, NEWS_LIST, TICKER_TAPE, FINANCIAL_STATEMENTS, MARKET_TOTAL, BROKERAGE_TRADES y más. Valida que se proporcione exactamente un target (userId XOR workspaceId). Permite configurar instrumentos, layout (x, y, draggable, resizable), size (width, height, min/max constraints), y configuraciones específicas por tipo como newsConfiguration, chartConfiguration, dynamicTableConfiguration.
25
+
26
+ - 🔄 **duplicateWidget(request: DuplicateWidgetRequest)**: Duplica widgets existentes incluyendo todas sus configuraciones, instrumentos asociados y propiedades. Permite especificar un nuevo workspaceId destino y nombre opcional.
27
+
28
+ - 🔧 **updateWidgetInstruments(request: UpdateWidgetInstrumentsRequest)**: Actualiza los instrumentos asociados a un widget mediante un array de keys. Retorna la lista actualizada de instrumentos con sus propiedades (instrumentKey, symbol).
29
+
30
+ - 📊 **updateWidgetChart(request: UpdateWidgetChartRequest)**: Actualiza la configuración de gráficos en widgets tipo CHART. Permite modificar chartConfiguration con id y globalConfiguration (JSON stringificado).
31
+
32
+ - 🗑️ **deleteWidget(widgetId: string)**: Elimina widgets del sistema. Retorna el ID del widget eliminado como confirmación.
33
+
34
+ #### Casos de Uso de Workspaces (9 métodos)
35
+
36
+ - 🏢 **createWorkspace(request: CreateWorkspaceRequest)**: Crea nuevos espacios de trabajo con validación de parámetros. Soporta creación por userId o projectId (mutuamente excluyentes). Requiere name, opcionalmente description, userId o projectId.
37
+
38
+ - 🔄 **duplicateWorkspace(request: DuplicateWorkspaceRequest)**: Duplica workspaces existentes incluyendo todos sus widgets asociados y configuraciones. Permite especificar un nuevo name para el workspace duplicado.
39
+
40
+ - 🔧 **updateWorkspace(request: UpdateWorkspaceRequest)**: Actualiza información de workspaces (name, description). Requiere id del workspace y campos a actualizar.
41
+
42
+ - 🗑️ **deleteWorkspace(request: DeleteWorkspaceRequest)**: Elimina workspaces del sistema. Requiere id del workspace. Retorna el ID eliminado como confirmación.
43
+
44
+ - 📋 **getWorkspace(request: GetWorkspaceRequest)**: Obtiene un workspace individual con todos sus widgets asociados, instrumentos y configuraciones. Retorna WorkspaceWidgets con estructura completa.
45
+
46
+ - 📚 **getWorkspaces(request: GetWorkspacesRequest)**: Obtiene lista de workspaces de un proyecto con filtros opcionales. Requiere projectId. Retorna WorkspacesContainer con estructura organizada por workspace.
47
+
48
+ - 👤 **getWorkspacesByUser(request: GetWorkspacesByUserRequest)**: Obtiene workspaces asociados a un usuario específico. Requiere userId. Retorna WorkspacesContainer.
49
+
50
+ - 🏗️ **getWorkspacesByProjectId(request: GetWorkspacesRequest)**: Obtiene workspaces asociados a un proyecto por ID. Requiere projectId. Retorna WorkspacesContainer.
51
+
52
+ - 👥 **getUserWorkspaces(request: GetUserWorkspacesRequest)**: Obtiene workspaces de un usuario por connectionId y projectId. Retorna UserWorkspaces con información del usuario, workspaces y widgets asociados.
53
+
54
+ #### Casos de Uso de Instruments (4 métodos)
55
+
56
+ - ➕ **createInstrument(request: CreateInstrumentRequest)**: Crea nuevos instrumentos asociados a widgets. Valida que symbol y uniqueKey sean requeridos y no vacíos. Requiere widgetId válido. Retorna Instrument con instrumentKey formateado como `{uniqueKey}/{symbol}`.
57
+
58
+ - 🗑️ **deleteInstrument(instrumentId: string)**: Elimina instrumentos de widgets. Retorna el ID del instrumento eliminado como confirmación.
59
+
60
+ - 📊 **getInstruments(request: GetInstrumentsRequest)**: Obtiene instrumentos asociados a widgets de un workspace. Requiere workspaceId. Retorna InstrumentsResponse con total, fields (InstrumentFieldsContainer) organizados por workspace.
61
+
62
+ - 📦 **getProjectWidgets(request: GetProjectWidgetsRequest)**: Obtiene todos los widgets de un proyecto con sus instrumentos asociados. Requiere projectId. Retorna ProjectWidgetsContainer con estructura organizada por workspace.
63
+
64
+ - 👤 **getUserWidgets(request: GetUserWidgetsRequest)**: Obtiene todos los widgets de un usuario. Requiere id del usuario. Retorna UserWidgets con lista completa de widgets del usuario.
65
+
66
+ #### Arquitectura y Estructura
67
+
68
+ - 🏗️ **Capa de Dominio Completa**: 19 casos de uso implementados (18 migrados + 1 adicional). Interfaces `WidgetsRepository` con 18 métodos y `WidgetsDatasource` con 18 métodos correspondientes. 31 entidades de dominio incluyendo Widget, Workspace, Instrument y todas sus request/response entities. Módulo DI `WidgetsModule` interface para inyección de dependencias con getter para repository.
69
+
70
+ - 📡 **Capa de Datos Completa**: `WidgetsDatasourceImpl` con implementación GraphQL completa usando GraphQlClient para todas las operaciones (mutations y queries). `WidgetsRepositoryImpl` que delega todas las llamadas al datasource. `WidgetsMapper` con 8 métodos de mapeo: mapWorkspaces, mapWidgets, mapWidget, mapWidgetsContainer, mapInstrumentsContainer, mapInstruments, mapTableColumns. 20+ modelos de datos para todas las configuraciones de widgets incluyendo WidgetModel, WorkspaceModel, InstrumentModel y configuraciones específicas.
71
+
72
+ - 🔌 **Módulo de Inicialización**: `InfoselWidgetsModule` con configuración simplificada que solo requiere `widgetsUrl` (no necesita marketsUrl ni securitiesUrl). Inicializa GraphQlClient con widgetsUrl para cada ambiente. `InfoselWidgets` component como punto de entrada principal con método estático `init({ sdkManager })`. Soporte para 3 ambientes: qa (https://api-qa.infosel.com/widgets/graphql), preprod (https://api-pre.infosel.com/widgets/graphql), prod (https://api.infosel.com/widgets/graphql). Inicialización lazy de casos de uso (se crean bajo demanda) para optimización de memoria y rendimiento.
73
+
74
+ #### Entidades de Dominio (31 entidades)
75
+
76
+ - **Widget**: Entidad principal con id, name, type (15 tipos soportados), layout (WidgetLayoutConfig con x, y, draggable, resizable), size (WidgetSizeConfig con width, height, min/max constraints), tickerConfiguration, tableColumns (WidgetTableColumn[]), instruments (Instrument[]), y configuraciones específicas por tipo.
77
+
78
+ - **Workspace**: Entidad con id, name, description, y relaciones con widgets.
79
+
80
+ - **Instrument**: Entidad con instrumentKey (formato `{uniqueKey}/{symbol}`) y symbol.
81
+
82
+ - **Request Entities (9)**: CreateWidgetRequest, CreateWorkspaceRequest, CreateInstrumentRequest, UpdateWidgetChartRequest, UpdateWidgetInstrumentsRequest, UpdateWorkspaceRequest, DuplicateWidgetRequest, DuplicateWorkspaceRequest, DeleteWorkspaceRequest.
83
+
84
+ - **Response Entities (6)**: WorkspaceWidgets (workspace con widgets), WorkspacesContainer (objeto con workspaces por ID), UserWorkspaces (usuario con workspaces y widgets), UserWidgets (usuario con lista de widgets), ProjectWidgetsContainer (proyecto con workspaces y widgets), InstrumentsResponse (total y fields organizados).
85
+
86
+ #### Configuraciones de Widgets (9 tipos)
87
+
88
+ - 📐 **WidgetLayoutConfig**: x, y (coordenadas), draggable, resizable (booleanos).
89
+
90
+ - 📏 **WidgetSizeConfig**: width, height, minWidth, minHeight, maxWidth, maxHeight, x, y, draggable, resizable.
91
+
92
+ - 🎨 **WidgetDynamicTableConfiguration**: period, instrumentLimit, field, condition, marketTypeId, valueTypeIds[], exchangeId, scope, hasActivity, isFiltered, operatingCompany, isYields.
93
+
94
+ - 📊 **WidgetChartConfiguration**: id, globalConfiguration (JSON string).
95
+
96
+ - 📈 **WidgetMarketTotalConfiguration**: id, scope.
97
+
98
+ - 🏢 **WidgetBrokerageTradesConfiguration**: id, scope, broker, symbol, concertationType, limit, offset, operationType, order.
99
+
100
+ - 🏢 **WidgetBrokerageConcentrationConfiguration**: id, scope.
101
+
102
+ - 🏢 **WidgetBrokerageParticipationConfiguration**: id, broker, instrumentType, crosses, purchases, sales, totals, symbol.
103
+
104
+ - 📦 **WidgetTradedPackagesConfiguration**: id, scope.
105
+
106
+ - 🔍 **WidgetDecreedRightsSearcherConfiguration**: id, scope, endDate, issuer, limit, offset, startDate, type.
107
+
108
+ - 📋 **WidgetIndicesComponentsConfiguration**: id, scope, component, sector, type.
109
+
110
+ - 📰 **NewsConfiguration**: period, listType, limit, offset, sourcesId, newsTypeId.
111
+
112
+ ### Changed
113
+
114
+ - 🔄 **Separación de responsabilidades**: Funcionalidades de widgets completamente separadas de @infosel-sdk/markets. Markets ahora se enfoca exclusivamente en búsqueda de instrumentos (searchInstruments), obtención de campos (getInstrumentFields, getInstrumentMultipleFields) y detalles financieros (getInstrumentDetailProfile, getInstrumentDetailFinancialReasons, etc.). Widgets se enfoca exclusivamente en gestión de widgets, workspaces e instruments. Esta separación mejora la mantenibilidad, reduce acoplamiento y permite evolución independiente de cada paquete.
115
+
116
+ - ⚙️ **Configuración simplificada**: El módulo ahora solo requiere `widgetsUrl` para GraphQL (eliminado marketsUrl y securitiesUrl). Configuración más simple y enfocada que reduce complejidad y errores de configuración. URLs predefinidas para cada ambiente (qa, preprod, prod) eliminando necesidad de configuración manual.
117
+
118
+ ### Technical Details
119
+
120
+ - **GraphQL Client**: Todas las 18 operaciones utilizan GraphQL exclusivamente a través de widgetsUrl. Mutations para create/update/delete operations. Queries para get operations. Sin dependencia de HTTP client para operaciones de widgets.
121
+
122
+ - **Arquitectura Clean**: Separación clara entre capas: Domain (use cases, entities, repositories interfaces), Data (datasource implementations, repository implementations, mappers, models). Dependency Inversion: domain no depende de data layer.
123
+
124
+ - **Type Safety**: TypeScript completo con interfaces estrictas, tipos union para WidgetType, tipos opcionales marcados explícitamente, validación de tipos en tiempo de compilación.
125
+
126
+ - **Dependency Injection**: Sistema modular con interfaces WidgetsModule y WidgetsComponent. Inicialización lazy de casos de uso (se crean solo cuando se usan). Facilita testing con mocks.
127
+
128
+ - **Lazy Loading**: Casos de uso se inicializan bajo demanda (lazy initialization) para optimización de memoria. Cada método verifica si el caso de uso existe, si no lo crea y lo cachea.
129
+
130
+ ### Developer Experience
131
+
132
+ - 📖 **Documentación completa**: README.md con 900+ líneas incluyendo ejemplos de uso, API reference completa, ejemplos prácticos (Dashboard completo, Gestor de Widgets, Gestor de Workspaces), guía de instalación y configuración.
133
+
134
+ - 🧪 **Tests comprehensivos**: 13 test suites con 66 tests pasando. Cobertura completa de casos de uso (19 archivos .spec.ts), entidades (2 archivos), repositorios y datasources. Mocks y factories para facilitar testing.
135
+
136
+ - 🔍 **TypeScript**: Tipado completo con interfaces exportadas, tipos estrictos, IntelliSense completo en IDEs. Mejora experiencia de desarrollo con autocompletado y detección temprana de errores.
137
+
138
+ - 📦 **NPM Package**: Configuración correcta de package.json con exports, dependencies (@infosel-sdk/core ^0.0.5, dayjs), scripts de test y build. Listo para publicación en NPM registry.
139
+
140
+ ### Migration Notes
141
+
142
+ - ⚠️ **Breaking Change desde @infosel-sdk/markets**: Si estás usando funcionalidades de widgets, workspaces o instruments desde @infosel-sdk/markets v0.x, deberás migrar a @infosel-sdk/widgets v1.0.0. Los métodos relacionados con widgets han sido removidos de markets.
143
+
144
+ - 🔄 **Compatibilidad de API**: Las entidades y métodos mantienen la misma estructura y nombres para facilitar la migración. Los request/response objects tienen la misma estructura. Solo cambia el import: `import InfoselWidgets from '@infosel-sdk/widgets'` en lugar de `import InfoselMarkets from '@infosel-sdk/markets'`.
145
+
146
+ - 📚 **Guía de Migración**: Consulta el README.md para ejemplos detallados de migración. El patrón de inicialización es idéntico: `InfoselWidgets.init({ sdkManager })`. Los métodos tienen los mismos nombres y parámetros.
147
+
148
+ ---
149
+
150
+ ## Tipos de Cambios
151
+
152
+ - **Added**: Nuevas funcionalidades
153
+ - **Changed**: Cambios en funcionalidades existentes
154
+ - **Deprecated**: Funcionalidades que serán removidas
155
+ - **Removed**: Funcionalidades removidas
156
+ - **Fixed**: Correcciones de bugs
157
+ - **Security**: Mejoras de seguridad
158
+ - **Developer Experience**: Mejoras en el proceso de desarrollo y publicación
159
+
160
+ ## Convenciones
161
+
162
+ - Usar emojis para categorizar cambios
163
+ - Mantener formato consistente
164
+ - Incluir fechas de lanzamiento
165
+ - Documentar breaking changes claramente
166
+ - Agrupar cambios por tipo
167
+ - Especificar compatibilidad con @infosel-sdk/core