@infosel-sdk/markets 1.2.0
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.
- package/CHANGELOG.md +90 -0
- package/README.md +996 -0
- package/package.json +52 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.d.ts +106 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.js +110 -0
- package/src/__tests__/__mocks__/apis/charts-api.mock.js.map +1 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.d.ts +148 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.js +121 -0
- package/src/__tests__/__mocks__/apis/markets-api.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.d.ts +35 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.js +28 -0
- package/src/__tests__/__mocks__/core/auth-provider.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.d.ts +36 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.js +60 -0
- package/src/__tests__/__mocks__/core/graphql-client.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/http-client.mock.d.ts +43 -0
- package/src/__tests__/__mocks__/core/http-client.mock.js +40 -0
- package/src/__tests__/__mocks__/core/http-client.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.d.ts +64 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.js +46 -0
- package/src/__tests__/__mocks__/core/sdk-manager.mock.js.map +1 -0
- package/src/__tests__/__mocks__/core/storage.mock.d.ts +32 -0
- package/src/__tests__/__mocks__/core/storage.mock.js +35 -0
- package/src/__tests__/__mocks__/core/storage.mock.js.map +1 -0
- package/src/__tests__/__mocks__/index.d.ts +9 -0
- package/src/__tests__/__mocks__/index.js +16 -0
- package/src/__tests__/__mocks__/index.js.map +1 -0
- package/src/__tests__/e2e/config/auth.config.d.ts +44 -0
- package/src/__tests__/e2e/config/auth.config.js +217 -0
- package/src/__tests__/e2e/config/auth.config.js.map +1 -0
- package/src/__tests__/e2e/config/environment.config.d.ts +29 -0
- package/src/__tests__/e2e/config/environment.config.js +74 -0
- package/src/__tests__/e2e/config/environment.config.js.map +1 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.d.ts +176 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.js +181 -0
- package/src/__tests__/e2e/fixtures/test-scenarios.js.map +1 -0
- package/src/__tests__/e2e/helpers/assertion.helper.d.ts +68 -0
- package/src/__tests__/e2e/helpers/assertion.helper.js +181 -0
- package/src/__tests__/e2e/helpers/assertion.helper.js.map +1 -0
- package/src/__tests__/e2e/helpers/auth.helper.d.ts +56 -0
- package/src/__tests__/e2e/helpers/auth.helper.js +188 -0
- package/src/__tests__/e2e/helpers/auth.helper.js.map +1 -0
- package/src/__tests__/e2e/helpers/performance.helper.d.ts +85 -0
- package/src/__tests__/e2e/helpers/performance.helper.js +203 -0
- package/src/__tests__/e2e/helpers/performance.helper.js.map +1 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.d.ts +5 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.js +80 -0
- package/src/__tests__/e2e/setup/global-setup.e2e.js.map +1 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.d.ts +5 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.js +61 -0
- package/src/__tests__/e2e/setup/global-teardown.e2e.js.map +1 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.d.ts +7 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.js +58 -0
- package/src/__tests__/e2e/setup/jest.e2e.config.js.map +1 -0
- package/src/__tests__/e2e/setup/setup.e2e.d.ts +8 -0
- package/src/__tests__/e2e/setup/setup.e2e.js +61 -0
- package/src/__tests__/e2e/setup/setup.e2e.js.map +1 -0
- package/src/__tests__/setup.d.ts +16 -0
- package/src/__tests__/setup.js +34 -0
- package/src/__tests__/setup.js.map +1 -0
- package/src/__tests__/utils/mock-datasource.d.ts +5 -0
- package/src/__tests__/utils/mock-datasource.js +39 -0
- package/src/__tests__/utils/mock-datasource.js.map +1 -0
- package/src/__tests__/utils/mock-factories.d.ts +547 -0
- package/src/__tests__/utils/mock-factories.js +226 -0
- package/src/__tests__/utils/mock-factories.js.map +1 -0
- package/src/__tests__/utils/mock-repository.d.ts +21 -0
- package/src/__tests__/utils/mock-repository.js +75 -0
- package/src/__tests__/utils/mock-repository.js.map +1 -0
- package/src/__tests__/utils/test-helpers.d.ts +43 -0
- package/src/__tests__/utils/test-helpers.js +129 -0
- package/src/__tests__/utils/test-helpers.js.map +1 -0
- package/src/data/datasources/charts_datasource_impl.d.ts +11 -0
- package/src/data/datasources/charts_datasource_impl.js +52 -0
- package/src/data/datasources/charts_datasource_impl.js.map +1 -0
- package/src/data/datasources/markets_datasource_impl.d.ts +57 -0
- package/src/data/datasources/markets_datasource_impl.js +704 -0
- package/src/data/datasources/markets_datasource_impl.js.map +1 -0
- package/src/data/di/infosel_charts_module.d.ts +18 -0
- package/src/data/di/infosel_charts_module.js +34 -0
- package/src/data/di/infosel_charts_module.js.map +1 -0
- package/src/data/di/infosel_markets_component.d.ts +71 -0
- package/src/data/di/infosel_markets_component.js +196 -0
- package/src/data/di/infosel_markets_component.js.map +1 -0
- package/src/data/di/infosel_markets_module.d.ts +21 -0
- package/src/data/di/infosel_markets_module.js +40 -0
- package/src/data/di/infosel_markets_module.js.map +1 -0
- package/src/data/mappers/markets_mapper.d.ts +52 -0
- package/src/data/mappers/markets_mapper.js +195 -0
- package/src/data/mappers/markets_mapper.js.map +1 -0
- package/src/data/models/chart_item_model.d.ts +8 -0
- package/src/data/models/chart_item_model.js +3 -0
- package/src/data/models/chart_item_model.js.map +1 -0
- package/src/data/models/delete_workspace_response_model.d.ts +5 -0
- package/src/data/models/delete_workspace_response_model.js +3 -0
- package/src/data/models/delete_workspace_response_model.js.map +1 -0
- package/src/data/models/get_user_workspaces_response_model.d.ts +13 -0
- package/src/data/models/get_user_workspaces_response_model.js +3 -0
- package/src/data/models/get_user_workspaces_response_model.js.map +1 -0
- package/src/data/models/instrument_detail_financial_model.d.ts +8 -0
- package/src/data/models/instrument_detail_financial_model.js +3 -0
- package/src/data/models/instrument_detail_financial_model.js.map +1 -0
- package/src/data/models/instrument_detail_financial_reasons_model.d.ts +40 -0
- package/src/data/models/instrument_detail_financial_reasons_model.js +3 -0
- package/src/data/models/instrument_detail_financial_reasons_model.js.map +1 -0
- package/src/data/models/instrument_detail_profile_model.d.ts +25 -0
- package/src/data/models/instrument_detail_profile_model.js +3 -0
- package/src/data/models/instrument_detail_profile_model.js.map +1 -0
- package/src/data/models/instrument_fields_model.d.ts +67 -0
- package/src/data/models/instrument_fields_model.js +3 -0
- package/src/data/models/instrument_fields_model.js.map +1 -0
- package/src/data/models/instrument_model.d.ts +5 -0
- package/src/data/models/instrument_model.js +3 -0
- package/src/data/models/instrument_model.js.map +1 -0
- package/src/data/models/instrument_report_financial_reasons_model.d.ts +21 -0
- package/src/data/models/instrument_report_financial_reasons_model.js +3 -0
- package/src/data/models/instrument_report_financial_reasons_model.js.map +1 -0
- package/src/data/models/project_model.d.ts +12 -0
- package/src/data/models/project_model.js +3 -0
- package/src/data/models/project_model.js.map +1 -0
- package/src/data/models/project_widgets_response_model.d.ts +8 -0
- package/src/data/models/project_widgets_response_model.js +3 -0
- package/src/data/models/project_widgets_response_model.js.map +1 -0
- package/src/data/models/user_model.d.ts +7 -0
- package/src/data/models/user_model.js +3 -0
- package/src/data/models/user_model.js.map +1 -0
- package/src/data/models/widget_layout_model.d.ts +6 -0
- package/src/data/models/widget_layout_model.js +3 -0
- package/src/data/models/widget_layout_model.js.map +1 -0
- package/src/data/models/widget_model.d.ts +15 -0
- package/src/data/models/widget_model.js +3 -0
- package/src/data/models/widget_model.js.map +1 -0
- package/src/data/models/widget_size_model.d.ts +9 -0
- package/src/data/models/widget_size_model.js +3 -0
- package/src/data/models/widget_size_model.js.map +1 -0
- package/src/data/models/widget_table_column_format_model.d.ts +6 -0
- package/src/data/models/widget_table_column_format_model.js +3 -0
- package/src/data/models/widget_table_column_format_model.js.map +1 -0
- package/src/data/models/widget_table_column_model.d.ts +8 -0
- package/src/data/models/widget_table_column_model.js +3 -0
- package/src/data/models/widget_table_column_model.js.map +1 -0
- package/src/data/models/widget_ticker_configuration.d.ts +7 -0
- package/src/data/models/widget_ticker_configuration.js +3 -0
- package/src/data/models/widget_ticker_configuration.js.map +1 -0
- package/src/data/models/workspace_model.d.ts +6 -0
- package/src/data/models/workspace_model.js +3 -0
- package/src/data/models/workspace_model.js.map +1 -0
- package/src/data/repositories/charts_repository_impl.d.ts +9 -0
- package/src/data/repositories/charts_repository_impl.js +22 -0
- package/src/data/repositories/charts_repository_impl.js.map +1 -0
- package/src/data/repositories/markets_repository_impl.d.ts +50 -0
- package/src/data/repositories/markets_repository_impl.js +69 -0
- package/src/data/repositories/markets_repository_impl.js.map +1 -0
- package/src/domain/datasources/charts_datasource.d.ts +6 -0
- package/src/domain/datasources/charts_datasource.js +3 -0
- package/src/domain/datasources/charts_datasource.js.map +1 -0
- package/src/domain/datasources/markets_datasource.d.ts +45 -0
- package/src/domain/datasources/markets_datasource.js +3 -0
- package/src/domain/datasources/markets_datasource.js.map +1 -0
- package/src/domain/di/charts_module.d.ts +8 -0
- package/src/domain/di/charts_module.js +3 -0
- package/src/domain/di/charts_module.js.map +1 -0
- package/src/domain/di/markets_component.d.ts +34 -0
- package/src/domain/di/markets_component.js +3 -0
- package/src/domain/di/markets_component.js.map +1 -0
- package/src/domain/di/markets_module.d.ts +9 -0
- package/src/domain/di/markets_module.js +3 -0
- package/src/domain/di/markets_module.js.map +1 -0
- package/src/domain/entities/chart_item.d.ts +8 -0
- package/src/domain/entities/chart_item.js +3 -0
- package/src/domain/entities/chart_item.js.map +1 -0
- package/src/domain/entities/chart_period.d.ts +6 -0
- package/src/domain/entities/chart_period.js +3 -0
- package/src/domain/entities/chart_period.js.map +1 -0
- package/src/domain/entities/chart_request.d.ts +5 -0
- package/src/domain/entities/chart_request.js +3 -0
- package/src/domain/entities/chart_request.js.map +1 -0
- package/src/domain/entities/create_instrument_request.d.ts +5 -0
- package/src/domain/entities/create_instrument_request.js +3 -0
- package/src/domain/entities/create_instrument_request.js.map +1 -0
- package/src/domain/entities/create_widget_request.d.ts +10 -0
- package/src/domain/entities/create_widget_request.js +3 -0
- package/src/domain/entities/create_widget_request.js.map +1 -0
- package/src/domain/entities/create_workspace_request.d.ts +5 -0
- package/src/domain/entities/create_workspace_request.js +3 -0
- package/src/domain/entities/create_workspace_request.js.map +1 -0
- package/src/domain/entities/delete_workspace_request.d.ts +3 -0
- package/src/domain/entities/delete_workspace_request.js +3 -0
- package/src/domain/entities/delete_workspace_request.js.map +1 -0
- package/src/domain/entities/get_instruments_request.d.ts +12 -0
- package/src/domain/entities/get_instruments_request.js +3 -0
- package/src/domain/entities/get_instruments_request.js.map +1 -0
- package/src/domain/entities/get_project_widgets_request.d.ts +12 -0
- package/src/domain/entities/get_project_widgets_request.js +3 -0
- package/src/domain/entities/get_project_widgets_request.js.map +1 -0
- package/src/domain/entities/get_user_workspaces_request.d.ts +4 -0
- package/src/domain/entities/get_user_workspaces_request.js +3 -0
- package/src/domain/entities/get_user_workspaces_request.js.map +1 -0
- package/src/domain/entities/get_workspace_request.d.ts +3 -0
- package/src/domain/entities/get_workspace_request.js +3 -0
- package/src/domain/entities/get_workspace_request.js.map +1 -0
- package/src/domain/entities/get_workspaces_by_user_request.d.ts +12 -0
- package/src/domain/entities/get_workspaces_by_user_request.js +3 -0
- package/src/domain/entities/get_workspaces_by_user_request.js.map +1 -0
- package/src/domain/entities/get_workspaces_request.d.ts +12 -0
- package/src/domain/entities/get_workspaces_request.js +3 -0
- package/src/domain/entities/get_workspaces_request.js.map +1 -0
- package/src/domain/entities/index.d.ts +28 -0
- package/src/domain/entities/index.js +32 -0
- package/src/domain/entities/index.js.map +1 -0
- package/src/domain/entities/instrument.d.ts +4 -0
- package/src/domain/entities/instrument.js +3 -0
- package/src/domain/entities/instrument.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial.d.ts +8 -0
- package/src/domain/entities/instrument_detail_financial.js +3 -0
- package/src/domain/entities/instrument_detail_financial.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_annual_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_quarterly_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_reasons.d.ts +40 -0
- package/src/domain/entities/instrument_detail_financial_reasons.js +3 -0
- package/src/domain/entities/instrument_detail_financial_reasons.js.map +1 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.d.ts +5 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.js +3 -0
- package/src/domain/entities/instrument_detail_financial_reasons_request.js.map +1 -0
- package/src/domain/entities/instrument_detail_profile.d.ts +25 -0
- package/src/domain/entities/instrument_detail_profile.js +3 -0
- package/src/domain/entities/instrument_detail_profile.js.map +1 -0
- package/src/domain/entities/instrument_detail_profile_request.d.ts +3 -0
- package/src/domain/entities/instrument_detail_profile_request.js +3 -0
- package/src/domain/entities/instrument_detail_profile_request.js.map +1 -0
- package/src/domain/entities/instrument_fields.d.ts +69 -0
- package/src/domain/entities/instrument_fields.js +3 -0
- package/src/domain/entities/instrument_fields.js.map +1 -0
- package/src/domain/entities/instrument_report_financial_reasons.d.ts +21 -0
- package/src/domain/entities/instrument_report_financial_reasons.js +3 -0
- package/src/domain/entities/instrument_report_financial_reasons.js.map +1 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.d.ts +4 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.js +3 -0
- package/src/domain/entities/instrument_report_financial_reasons_request.js.map +1 -0
- package/src/domain/entities/instruments_response.d.ts +6 -0
- package/src/domain/entities/instruments_response.js +3 -0
- package/src/domain/entities/instruments_response.js.map +1 -0
- package/src/domain/entities/period_type.d.ts +1 -0
- package/src/domain/entities/period_type.js +3 -0
- package/src/domain/entities/period_type.js.map +1 -0
- package/src/domain/entities/project_widgets_container.d.ts +12 -0
- package/src/domain/entities/project_widgets_container.js +3 -0
- package/src/domain/entities/project_widgets_container.js.map +1 -0
- package/src/domain/entities/search_instruments_request.d.ts +7 -0
- package/src/domain/entities/search_instruments_request.js +3 -0
- package/src/domain/entities/search_instruments_request.js.map +1 -0
- package/src/domain/entities/search_result_item.d.ts +5 -0
- package/src/domain/entities/search_result_item.js +3 -0
- package/src/domain/entities/search_result_item.js.map +1 -0
- package/src/domain/entities/update_widget_instruments_reques.d.ts +11 -0
- package/src/domain/entities/update_widget_instruments_reques.js +3 -0
- package/src/domain/entities/update_widget_instruments_reques.js.map +1 -0
- package/src/domain/entities/user_workspaces.d.ts +8 -0
- package/src/domain/entities/user_workspaces.js +3 -0
- package/src/domain/entities/user_workspaces.js.map +1 -0
- package/src/domain/entities/widget.d.ts +46 -0
- package/src/domain/entities/widget.js +3 -0
- package/src/domain/entities/widget.js.map +1 -0
- package/src/domain/entities/workspace.d.ts +4 -0
- package/src/domain/entities/workspace.js +3 -0
- package/src/domain/entities/workspace.js.map +1 -0
- package/src/domain/entities/workspace_widgets.d.ts +6 -0
- package/src/domain/entities/workspace_widgets.js +3 -0
- package/src/domain/entities/workspace_widgets.js.map +1 -0
- package/src/domain/entities/workspaces_container.d.ts +18 -0
- package/src/domain/entities/workspaces_container.js +3 -0
- package/src/domain/entities/workspaces_container.js.map +1 -0
- package/src/domain/repositories/charts_repository.d.ts +5 -0
- package/src/domain/repositories/charts_repository.js +3 -0
- package/src/domain/repositories/charts_repository.js.map +1 -0
- package/src/domain/repositories/markets_repository.d.ts +41 -0
- package/src/domain/repositories/markets_repository.js +3 -0
- package/src/domain/repositories/markets_repository.js.map +1 -0
- package/src/domain/use_cases/create_instrument_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_instrument_use_case.js +22 -0
- package/src/domain/use_cases/create_instrument_use_case.js.map +1 -0
- package/src/domain/use_cases/create_widget_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_widget_use_case.js +22 -0
- package/src/domain/use_cases/create_widget_use_case.js.map +1 -0
- package/src/domain/use_cases/create_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/create_workspace_use_case.js +22 -0
- package/src/domain/use_cases/create_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_instrument_use_case.d.ts +7 -0
- package/src/domain/use_cases/delete_instrument_use_case.js +19 -0
- package/src/domain/use_cases/delete_instrument_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_widget_use_case.d.ts +7 -0
- package/src/domain/use_cases/delete_widget_use_case.js +19 -0
- package/src/domain/use_cases/delete_widget_use_case.js.map +1 -0
- package/src/domain/use_cases/delete_workspace_use_case.d.ts +8 -0
- package/src/domain/use_cases/delete_workspace_use_case.js +22 -0
- package/src/domain/use_cases/delete_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_chart_data_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_chart_data_use_case.js +16 -0
- package/src/domain/use_cases/get_chart_data_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_annual_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_quartely_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_financial_reasons_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.js +16 -0
- package/src/domain/use_cases/get_instrument_detail_profile_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.d.ts +8 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.js +19 -0
- package/src/domain/use_cases/get_instrument_fields_use_case.js.map +1 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.d.ts +9 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.js +16 -0
- package/src/domain/use_cases/get_instrument_report_financial_reasons.js.map +1 -0
- package/src/domain/use_cases/get_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_instruments_use_case.js +16 -0
- package/src/domain/use_cases/get_instruments_use_case.js.map +1 -0
- package/src/domain/use_cases/get_project_widgets_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_project_widgets_use_case.js +19 -0
- package/src/domain/use_cases/get_project_widgets_use_case.js.map +1 -0
- package/src/domain/use_cases/get_user_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_user_workspace_use_case.js +22 -0
- package/src/domain/use_cases/get_user_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspace_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspace_use_case.js +19 -0
- package/src/domain/use_cases/get_workspace_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.js +19 -0
- package/src/domain/use_cases/get_workspaces_by_user_use_case.js.map +1 -0
- package/src/domain/use_cases/get_workspaces_use_case.d.ts +9 -0
- package/src/domain/use_cases/get_workspaces_use_case.js +19 -0
- package/src/domain/use_cases/get_workspaces_use_case.js.map +1 -0
- package/src/domain/use_cases/search_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/search_instruments_use_case.js +25 -0
- package/src/domain/use_cases/search_instruments_use_case.js.map +1 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.d.ts +9 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.js +22 -0
- package/src/domain/use_cases/update_widget_instruments_use_case.js.map +1 -0
- package/src/index.d.ts +8 -0
- package/src/index.js +12 -0
- package/src/index.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,996 @@
|
|
|
1
|
+
# @infosel-sdk/markets
|
|
2
|
+
|
|
3
|
+
SDK de Mercados Financieros para la plataforma Infosel. Proporciona herramientas completas para acceder a datos de mercado, gestionar instrumentos, crear widgets y manejar espacios de trabajo para aplicaciones financieras.
|
|
4
|
+
|
|
5
|
+
## 🚀 Características
|
|
6
|
+
|
|
7
|
+
- **Acceso a Datos de Mercado**: Datos de mercado en tiempo real e históricos
|
|
8
|
+
- **Gestión de Instrumentos**: Buscar, crear y gestionar instrumentos financieros
|
|
9
|
+
- **Sistema de Widgets**: Crear y gestionar widgets financieros personalizables
|
|
10
|
+
- **Gestión de Espacios de Trabajo**: Organizar y gestionar espacios de trabajo de usuarios
|
|
11
|
+
- **Datos de Gráficos**: Acceder a datos de gráficos con múltiples marcos de tiempo
|
|
12
|
+
- **Reportes Financieros**: Acceder a datos financieros e informes de instrumentos
|
|
13
|
+
|
|
14
|
+
## 📦 Instalación
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @infosel-sdk/markets
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 🚀 Inicio Rápido
|
|
21
|
+
|
|
22
|
+
### ✨ Configuración Moderna (Recomendado)
|
|
23
|
+
|
|
24
|
+
La nueva API del core proporciona una configuración más limpia y validada:
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import InfoselMarkets from '@infosel-sdk/markets';
|
|
28
|
+
import { InfoselSdkManager, AuthConfigurationBuilder } from '@infosel-sdk/core';
|
|
29
|
+
|
|
30
|
+
// Configuración moderna con Builder Pattern
|
|
31
|
+
const authConfig = AuthConfigurationBuilder.keyCloak()
|
|
32
|
+
.withRealm('hub')
|
|
33
|
+
.withEnvironment('qa')
|
|
34
|
+
.withCredentials({
|
|
35
|
+
grant_type: 'client_credentials',
|
|
36
|
+
client_id: 'tu-client-id',
|
|
37
|
+
client_secret: 'tu-client-secret',
|
|
38
|
+
})
|
|
39
|
+
.build();
|
|
40
|
+
|
|
41
|
+
// Inicializar SDK Manager con configuración moderna
|
|
42
|
+
const sdkManager = InfoselSdkManager.initWithConfiguration({
|
|
43
|
+
authConfiguration: authConfig,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Inicializar SDK de Mercados
|
|
47
|
+
const marketsSDK = InfoselMarkets.init({ sdkManager });
|
|
48
|
+
|
|
49
|
+
// Usar el SDK
|
|
50
|
+
const searchResults = await marketsSDK.searchInstruments({
|
|
51
|
+
query: 'AAPL',
|
|
52
|
+
limit: 10,
|
|
53
|
+
offset: 0,
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Configuración con Token Existente
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import InfoselMarkets from '@infosel-sdk/markets';
|
|
61
|
+
import {
|
|
62
|
+
InfoselSdkManager,
|
|
63
|
+
AuthConfigurationBuilder,
|
|
64
|
+
Token,
|
|
65
|
+
} from '@infosel-sdk/core';
|
|
66
|
+
|
|
67
|
+
// Configuración con token existente
|
|
68
|
+
const token: Token = {
|
|
69
|
+
accessToken: 'tu-access-token',
|
|
70
|
+
refreshToken: 'tu-refresh-token',
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const authConfig = AuthConfigurationBuilder.existingToken()
|
|
74
|
+
.withRealm('hub')
|
|
75
|
+
.withEnvironment('prod')
|
|
76
|
+
.withClientId('hub-app')
|
|
77
|
+
.withToken(token)
|
|
78
|
+
.build();
|
|
79
|
+
|
|
80
|
+
const sdkManager = InfoselSdkManager.initWithConfiguration({
|
|
81
|
+
authConfiguration: authConfig,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const marketsSDK = InfoselMarkets.init({ sdkManager });
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## 🔍 Validación de Configuración
|
|
90
|
+
|
|
91
|
+
La nueva API incluye validaciones robustas:
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { AuthConfigurationBuilder } from '@infosel-sdk/core';
|
|
95
|
+
|
|
96
|
+
const builder = AuthConfigurationBuilder.keyCloak()
|
|
97
|
+
.withRealm('invalid@realm') // Caracteres inválidos
|
|
98
|
+
.withCredentials({
|
|
99
|
+
grant_type: 'client_credentials',
|
|
100
|
+
client_id: '', // Client ID vacío
|
|
101
|
+
client_secret: 'secret',
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// Validar antes de construir
|
|
105
|
+
const validation = builder.validate();
|
|
106
|
+
if (!validation.isValid) {
|
|
107
|
+
console.log('Errores:', validation.errors);
|
|
108
|
+
// ['Realm contains invalid characters...', 'Client ID is required...']
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// O validar automáticamente al construir
|
|
112
|
+
try {
|
|
113
|
+
const config = builder.build();
|
|
114
|
+
} catch (error) {
|
|
115
|
+
console.error(error.message); // Lista todos los errores de validación
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 📚 API Completa del SDK
|
|
120
|
+
|
|
121
|
+
### 🔍 Búsqueda y Gestión de Instrumentos
|
|
122
|
+
|
|
123
|
+
#### Buscar Instrumentos
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// Búsqueda básica
|
|
127
|
+
const searchResults = await marketsSDK.searchInstruments({
|
|
128
|
+
query: 'AAPL',
|
|
129
|
+
limit: 10,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Búsqueda con filtros avanzados
|
|
133
|
+
const filteredResults = await marketsSDK.searchInstruments({
|
|
134
|
+
query: 'TECH',
|
|
135
|
+
limit: 20,
|
|
136
|
+
marketTypeIds: [1, 2], // Tipos de mercado específicos
|
|
137
|
+
valueTypeIds: [1], // Tipos de valor específicos
|
|
138
|
+
exchangeIds: [1, 2], // Exchanges específicos
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
console.log('Instrumentos encontrados:', searchResults);
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### Obtener Lista de Instrumentos
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
const instruments = await marketsSDK.getInstruments({
|
|
148
|
+
// Parámetros de paginación y filtros
|
|
149
|
+
limit: 50,
|
|
150
|
+
offset: 0,
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
console.log('Total de instrumentos:', instruments.total);
|
|
154
|
+
console.log('Instrumentos:', instruments.instruments);
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### Crear Instrumento Personalizado
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
const newInstrument = await marketsSDK.createInstrument({
|
|
161
|
+
symbol: 'CUSTOM_STOCK',
|
|
162
|
+
uniqueKey: 'CUSTOM_001',
|
|
163
|
+
widgetId: 'widget-123',
|
|
164
|
+
// Otros campos del instrumento
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
console.log('Instrumento creado:', newInstrument);
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### Eliminar Instrumento
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
const result = await marketsSDK.deleteInstrument('instrument-id-123');
|
|
174
|
+
console.log('Resultado:', result); // Mensaje de confirmación
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Obtener Campos del Instrumento
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
const fields = await marketsSDK.getInstrumentFields('instrument-id-123');
|
|
181
|
+
console.log('Campos disponibles:', fields);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 📊 Detalles Financieros de Instrumentos
|
|
185
|
+
|
|
186
|
+
#### Perfil del Instrumento
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
const profile = await marketsSDK.getInstrumentDetailProfile({
|
|
190
|
+
instrumentId: 'AAPL_US',
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
console.log('Perfil del instrumento:', profile);
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### Datos Financieros Trimestrales
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
const quarterlyData = await marketsSDK.getInstrumentDetailFinancialQuartely({
|
|
200
|
+
instrumentId: 'AAPL_US',
|
|
201
|
+
period: 'QUARTERLY',
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
console.log('Datos trimestrales:', quarterlyData);
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### Datos Financieros Anuales
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
const annualData = await marketsSDK.getInstrumentDetailFinancialAnnual({
|
|
211
|
+
instrumentId: 'AAPL_US',
|
|
212
|
+
period: 'ANNUAL',
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
console.log('Datos anuales:', annualData);
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
#### Razones Financieras del Instrumento
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
const financialReasons = await marketsSDK.getInstrumentDetailFinancialReasons({
|
|
222
|
+
instrumentId: 'AAPL_US',
|
|
223
|
+
period: 'QUARTERLY',
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
console.log('Razones financieras:', financialReasons);
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### Reportes Financieros con Razones
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
const reportReasons = await marketsSDK.getInstrumentReportFinancialReasons({
|
|
233
|
+
instrumentId: 'AAPL_US',
|
|
234
|
+
period: 'QUARTERLY',
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
console.log('Reporte con razones:', reportReasons);
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 🎯 Gestión de Widgets
|
|
241
|
+
|
|
242
|
+
#### Crear Widget
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
// Widget de gráfico
|
|
246
|
+
const chartWidget = await marketsSDK.createWidget({
|
|
247
|
+
workspaceId: 'workspace-123',
|
|
248
|
+
type: 'CHART',
|
|
249
|
+
name: 'Gráfico de AAPL',
|
|
250
|
+
instruments: [
|
|
251
|
+
{
|
|
252
|
+
uniqueKey: 'AAPL_US',
|
|
253
|
+
symbol: 'AAPL',
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// Widget de tabla
|
|
259
|
+
const tableWidget = await marketsSDK.createWidget({
|
|
260
|
+
workspaceId: 'workspace-123',
|
|
261
|
+
type: 'DYNAMIC_TABLE',
|
|
262
|
+
name: 'Tabla de Precios',
|
|
263
|
+
instruments: [
|
|
264
|
+
{
|
|
265
|
+
uniqueKey: 'AAPL_US',
|
|
266
|
+
symbol: 'AAPL',
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
uniqueKey: 'MSFT_US',
|
|
270
|
+
symbol: 'MSFT',
|
|
271
|
+
},
|
|
272
|
+
],
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
console.log('Widget creado:', chartWidget);
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
#### Tipos de Widgets Disponibles
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
// Tipos soportados:
|
|
282
|
+
// - 'DYNAMIC_TABLE': Tabla dinámica
|
|
283
|
+
// - 'PREDEFINED_TABLE': Tabla predefinida
|
|
284
|
+
// - 'CUSTOM_TABLE': Tabla personalizada
|
|
285
|
+
// - 'NEWS_LIST': Lista de noticias
|
|
286
|
+
// - 'TICKER_TAPE': Cinta de ticker
|
|
287
|
+
// - 'CHART': Gráfico
|
|
288
|
+
// - 'UNKNOWN': Tipo desconocido
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### Actualizar Instrumentos del Widget
|
|
292
|
+
|
|
293
|
+
```typescript
|
|
294
|
+
const updatedInstruments = await marketsSDK.updateWidgetInstruments({
|
|
295
|
+
widgetId: 'widget-123',
|
|
296
|
+
instruments: {
|
|
297
|
+
keys: ['AAPL_US', 'MSFT_US', 'GOOGL_US'],
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
console.log('Instrumentos actualizados:', updatedInstruments);
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
#### Eliminar Widget
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
const result = await marketsSDK.deleteWidget('widget-123');
|
|
308
|
+
console.log('Resultado:', result);
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
#### Obtener Widgets del Proyecto
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
const projectWidgets = await marketsSDK.getProjectWidgets({
|
|
315
|
+
projectId: 'project-123',
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
console.log('Widgets del proyecto:', projectWidgets);
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### 🏢 Gestión de Espacios de Trabajo
|
|
322
|
+
|
|
323
|
+
#### Crear Espacio de Trabajo
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
const workspace = await marketsSDK.createWorkspace({
|
|
327
|
+
name: 'Mi Dashboard de Trading',
|
|
328
|
+
description: 'Espacio de trabajo personal para análisis de mercado',
|
|
329
|
+
userId: 'user-123', // Opcional: asociar a usuario específico
|
|
330
|
+
projectId: 'project-123', // Opcional: asociar a proyecto específico
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
console.log('Espacio de trabajo creado:', workspace);
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
#### Obtener Espacios de Trabajo
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
// Obtener todos los espacios de trabajo
|
|
340
|
+
const allWorkspaces = await marketsSDK.getWorkspaces({
|
|
341
|
+
projectId: 'project-123', // ID del proyecto requerido
|
|
342
|
+
params: {
|
|
343
|
+
instruments: {
|
|
344
|
+
options: {
|
|
345
|
+
limit: 100,
|
|
346
|
+
offset: 0,
|
|
347
|
+
sort: { field: 'name', direction: 'asc' }, // Ordenar por nombre ascendente
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
// Obtener espacios de trabajo por usuario
|
|
354
|
+
const userWorkspaces = await marketsSDK.getWorkspacesByUser({
|
|
355
|
+
userId: 'user-123',
|
|
356
|
+
params: {
|
|
357
|
+
instruments: {
|
|
358
|
+
options: {
|
|
359
|
+
limit: 50,
|
|
360
|
+
offset: 0,
|
|
361
|
+
sort: { field: 'createdAt', direction: 'desc' }, // Ordenar por fecha de creación descendente
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
// Obtener espacios de trabajo específicos del usuario
|
|
368
|
+
const specificUserWorkspaces = await marketsSDK.getUserWorkspaces({
|
|
369
|
+
connectionId: 'connection-123',
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
console.log('Espacios de trabajo:', allWorkspaces);
|
|
373
|
+
|
|
374
|
+
**Nota importante**: Los métodos `getWorkspaces()` y `getWorkspacesByUser()` requieren un `projectId` o `userId` respectivamente, y los parámetros de paginación (`limit`, `offset`) y ordenamiento (`sort`) deben estar anidados dentro de `params.instruments.options`.
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### Obtener Detalles del Espacio de Trabajo
|
|
378
|
+
|
|
379
|
+
```typescript
|
|
380
|
+
const workspaceDetails = await marketsSDK.getWorkspace({
|
|
381
|
+
workspaceId: 'workspace-123',
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
console.log('Detalles del workspace:', workspaceDetails);
|
|
385
|
+
console.log('Widgets en el workspace:', workspaceDetails.widgets);
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### Eliminar Espacio de Trabajo
|
|
389
|
+
|
|
390
|
+
```typescript
|
|
391
|
+
const result = await marketsSDK.deleteWorkspace({
|
|
392
|
+
id: 'workspace-123',
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
console.log('Resultado:', result);
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### 📈 Datos de Gráficos
|
|
399
|
+
|
|
400
|
+
#### Obtener Datos de Gráfico
|
|
401
|
+
|
|
402
|
+
```typescript
|
|
403
|
+
// Gráfico diario
|
|
404
|
+
const dailyChart = await marketsSDK.getChartData({
|
|
405
|
+
instrumentKey: 'AAPL_US',
|
|
406
|
+
period: {
|
|
407
|
+
type: 'day',
|
|
408
|
+
value: 1,
|
|
409
|
+
interval: 1,
|
|
410
|
+
},
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
// Gráfico semanal
|
|
414
|
+
const weeklyChart = await marketsSDK.getChartData({
|
|
415
|
+
instrumentKey: 'AAPL_US',
|
|
416
|
+
period: {
|
|
417
|
+
type: 'week',
|
|
418
|
+
value: 4,
|
|
419
|
+
interval: 1,
|
|
420
|
+
},
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
// Gráfico mensual
|
|
424
|
+
const monthlyChart = await marketsSDK.getChartData({
|
|
425
|
+
instrumentKey: 'AAPL_US',
|
|
426
|
+
period: {
|
|
427
|
+
type: 'month',
|
|
428
|
+
value: 12,
|
|
429
|
+
interval: 1,
|
|
430
|
+
},
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
console.log('Datos del gráfico diario:', dailyChart);
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
#### Tipos de Períodos Disponibles
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
// Tipos de período soportados:
|
|
440
|
+
// - 'day': Períodos diarios
|
|
441
|
+
// - 'week': Períodos semanales
|
|
442
|
+
// - 'month': Períodos mensuales
|
|
443
|
+
// - 'year': Períodos anuales
|
|
444
|
+
|
|
445
|
+
// Ejemplos de configuración:
|
|
446
|
+
const periods = {
|
|
447
|
+
// 1 día con intervalos de 1 hora
|
|
448
|
+
daily: { type: 'day', value: 1, interval: 1 },
|
|
449
|
+
|
|
450
|
+
// 5 días con intervalos de 1 día
|
|
451
|
+
week: { type: 'day', value: 5, interval: 1 },
|
|
452
|
+
|
|
453
|
+
// 4 semanas con intervalos de 1 semana
|
|
454
|
+
monthly: { type: 'week', value: 4, interval: 1 },
|
|
455
|
+
|
|
456
|
+
// 12 meses con intervalos de 1 mes
|
|
457
|
+
yearly: { type: 'month', value: 12, interval: 1 },
|
|
458
|
+
};
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
## 🔧 Ejemplos Prácticos Completos
|
|
462
|
+
|
|
463
|
+
### 📱 Dashboard de Trading Completo
|
|
464
|
+
|
|
465
|
+
```typescript
|
|
466
|
+
import InfoselMarkets from '@infosel-sdk/markets';
|
|
467
|
+
import { InfoselSdkManager, AuthConfigurationBuilder } from '@infosel-sdk/core';
|
|
468
|
+
|
|
469
|
+
class TradingDashboard {
|
|
470
|
+
private marketsSDK: InfoselMarkets;
|
|
471
|
+
|
|
472
|
+
constructor() {
|
|
473
|
+
this.initializeSDK();
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
private async initializeSDK() {
|
|
477
|
+
const authConfig = AuthConfigurationBuilder.keyCloak()
|
|
478
|
+
.withRealm('hub')
|
|
479
|
+
.withEnvironment('qa')
|
|
480
|
+
.withCredentials({
|
|
481
|
+
grant_type: 'client_credentials',
|
|
482
|
+
client_id: process.env.KEYCLOAK_CLIENT_ID!,
|
|
483
|
+
client_secret: process.env.KEYCLOAK_CLIENT_SECRET!,
|
|
484
|
+
})
|
|
485
|
+
.build();
|
|
486
|
+
|
|
487
|
+
const sdkManager = InfoselSdkManager.initWithConfiguration({
|
|
488
|
+
authConfiguration: authConfig,
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
this.marketsSDK = InfoselMarkets.init({ sdkManager });
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
// Crear dashboard completo
|
|
495
|
+
async createCompleteDashboard(userId: string) {
|
|
496
|
+
try {
|
|
497
|
+
// 1. Crear espacio de trabajo
|
|
498
|
+
const workspace = await this.marketsSDK.createWorkspace({
|
|
499
|
+
name: 'Dashboard de Trading',
|
|
500
|
+
description: 'Dashboard completo para análisis de mercado',
|
|
501
|
+
userId,
|
|
502
|
+
// Nota: userId y projectId son mutuamente excluyentes
|
|
503
|
+
// Si se proporciona userId, no se debe incluir projectId
|
|
504
|
+
});
|
|
505
|
+
|
|
506
|
+
// 2. Crear widget de gráfico para AAPL
|
|
507
|
+
const chartWidget = await this.marketsSDK.createWidget({
|
|
508
|
+
workspaceId: workspace.id,
|
|
509
|
+
type: 'CHART',
|
|
510
|
+
name: 'Gráfico AAPL',
|
|
511
|
+
instruments: [{ uniqueKey: 'AAPL_US', symbol: 'AAPL' }],
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// 3. Crear widget de tabla para múltiples instrumentos
|
|
515
|
+
const tableWidget = await this.marketsSDK.createWidget({
|
|
516
|
+
workspaceId: workspace.id,
|
|
517
|
+
type: 'DYNAMIC_TABLE',
|
|
518
|
+
name: 'Portafolio',
|
|
519
|
+
instruments: [
|
|
520
|
+
{ uniqueKey: 'AAPL_US', symbol: 'AAPL' },
|
|
521
|
+
{ uniqueKey: 'MSFT_US', symbol: 'MSFT' },
|
|
522
|
+
{ uniqueKey: 'GOOGL_US', symbol: 'GOOGL' },
|
|
523
|
+
],
|
|
524
|
+
});
|
|
525
|
+
|
|
526
|
+
// 4. Obtener datos del gráfico
|
|
527
|
+
const chartData = await this.marketsSDK.getChartData({
|
|
528
|
+
instrumentKey: 'AAPL_US',
|
|
529
|
+
period: { type: 'day', value: 30, interval: 1 },
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
// 5. Obtener perfil del instrumento
|
|
533
|
+
const profile = await this.marketsSDK.getInstrumentDetailProfile({
|
|
534
|
+
instrumentId: 'AAPL_US',
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
return {
|
|
538
|
+
workspace,
|
|
539
|
+
widgets: [chartWidget, tableWidget],
|
|
540
|
+
chartData,
|
|
541
|
+
profile,
|
|
542
|
+
};
|
|
543
|
+
} catch (error) {
|
|
544
|
+
console.error('Error creando dashboard:', error);
|
|
545
|
+
throw error;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// Buscar instrumentos
|
|
550
|
+
async searchInstruments(query: string, limit: number = 10) {
|
|
551
|
+
try {
|
|
552
|
+
const results = await this.marketsSDK.searchInstruments({
|
|
553
|
+
query,
|
|
554
|
+
limit,
|
|
555
|
+
});
|
|
556
|
+
return results;
|
|
557
|
+
} catch (error) {
|
|
558
|
+
console.error('Error buscando instrumentos:', error);
|
|
559
|
+
throw error;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// Obtener datos financieros
|
|
564
|
+
async getFinancialData(instrumentId: string) {
|
|
565
|
+
try {
|
|
566
|
+
const [quarterly, annual, profile] = await Promise.all([
|
|
567
|
+
this.marketsSDK.getInstrumentDetailFinancialQuartely({
|
|
568
|
+
instrumentId,
|
|
569
|
+
period: 'QUARTERLY',
|
|
570
|
+
}),
|
|
571
|
+
this.marketsSDK.getInstrumentDetailFinancialAnnual({
|
|
572
|
+
instrumentId,
|
|
573
|
+
period: 'ANNUAL',
|
|
574
|
+
}),
|
|
575
|
+
this.marketsSDK.getInstrumentDetailProfile({
|
|
576
|
+
instrumentId,
|
|
577
|
+
}),
|
|
578
|
+
]);
|
|
579
|
+
|
|
580
|
+
return { quarterly, annual, profile };
|
|
581
|
+
} catch (error) {
|
|
582
|
+
console.error('Error obteniendo datos financieros:', error);
|
|
583
|
+
throw error;
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// Uso del dashboard
|
|
589
|
+
async function main() {
|
|
590
|
+
const dashboard = new TradingDashboard();
|
|
591
|
+
|
|
592
|
+
try {
|
|
593
|
+
// Crear dashboard completo
|
|
594
|
+
const result = await dashboard.createCompleteDashboard('user-123');
|
|
595
|
+
console.log('Dashboard creado:', result);
|
|
596
|
+
|
|
597
|
+
// Buscar instrumentos
|
|
598
|
+
const searchResults = await dashboard.searchInstruments('TECH', 5);
|
|
599
|
+
console.log('Resultados de búsqueda:', searchResults);
|
|
600
|
+
|
|
601
|
+
// Obtener datos financieros
|
|
602
|
+
const financialData = await dashboard.getFinancialData('AAPL_US');
|
|
603
|
+
console.log('Datos financieros:', financialData);
|
|
604
|
+
} catch (error) {
|
|
605
|
+
console.error('Error en main:', error);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
main();
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
### 🔍 Sistema de Búsqueda Avanzada
|
|
613
|
+
|
|
614
|
+
```typescript
|
|
615
|
+
class AdvancedInstrumentSearch {
|
|
616
|
+
private marketsSDK: InfoselMarkets;
|
|
617
|
+
|
|
618
|
+
constructor(marketsSDK: InfoselMarkets) {
|
|
619
|
+
this.marketsSDK = marketsSDK;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
// Búsqueda con múltiples filtros
|
|
623
|
+
async searchWithFilters(options: {
|
|
624
|
+
query: string;
|
|
625
|
+
marketTypes?: number[]; // Tipos de mercado (ej: [1, 2] para Acciones y Bonos)
|
|
626
|
+
valueTypes?: number[]; // Tipos de valor (ej: [1] para Equity)
|
|
627
|
+
exchanges?: number[]; // Exchanges (ej: [1, 2] para NYSE y NASDAQ)
|
|
628
|
+
limit?: number;
|
|
629
|
+
}) {
|
|
630
|
+
try {
|
|
631
|
+
const results = await this.marketsSDK.searchInstruments({
|
|
632
|
+
query: options.query,
|
|
633
|
+
limit: options.limit || 20,
|
|
634
|
+
marketTypeIds: options.marketTypes,
|
|
635
|
+
valueTypeIds: options.valueTypes,
|
|
636
|
+
exchangeIds: options.exchanges,
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
return results;
|
|
640
|
+
} catch (error) {
|
|
641
|
+
console.error('Error en búsqueda avanzada:', error);
|
|
642
|
+
throw error;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
// Búsqueda por sector (filtra solo acciones)
|
|
647
|
+
async searchBySector(sector: string, limit: number = 15) {
|
|
648
|
+
return this.searchWithFilters({
|
|
649
|
+
query: sector,
|
|
650
|
+
limit,
|
|
651
|
+
marketTypes: [1], // 1 = Mercado de acciones
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// Búsqueda por exchange específico
|
|
656
|
+
async searchByExchange(exchange: string, limit: number = 15) {
|
|
657
|
+
return this.searchWithFilters({
|
|
658
|
+
query: exchange,
|
|
659
|
+
limit,
|
|
660
|
+
exchanges: [1, 2], // 1 = NYSE, 2 = NASDAQ
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
// Uso del sistema de búsqueda
|
|
666
|
+
const searchSystem = new AdvancedInstrumentSearch(marketsSDK);
|
|
667
|
+
|
|
668
|
+
// Búsqueda por sector
|
|
669
|
+
const techStocks = await searchSystem.searchBySector('TECHNOLOGY');
|
|
670
|
+
console.log('Acciones de tecnología:', techStocks);
|
|
671
|
+
|
|
672
|
+
// Búsqueda por exchange
|
|
673
|
+
const nasdaqStocks = await searchSystem.searchByExchange('NASDAQ');
|
|
674
|
+
console.log('Acciones del NASDAQ:', nasdaqStocks);
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
### 📊 Gestor de Widgets
|
|
678
|
+
|
|
679
|
+
```typescript
|
|
680
|
+
class WidgetManager {
|
|
681
|
+
private marketsSDK: InfoselMarkets;
|
|
682
|
+
|
|
683
|
+
constructor(marketsSDK: InfoselMarkets) {
|
|
684
|
+
this.marketsSDK = marketsSDK;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
// Crear widget de gráfico
|
|
688
|
+
async createChartWidget(workspaceId: string, instrument: string, name: string) {
|
|
689
|
+
try {
|
|
690
|
+
const widget = await this.marketsSDK.createWidget({
|
|
691
|
+
workspaceId,
|
|
692
|
+
type: 'CHART',
|
|
693
|
+
name,
|
|
694
|
+
instruments: [{ uniqueKey: instrument, symbol: instrument }],
|
|
695
|
+
});
|
|
696
|
+
|
|
697
|
+
return widget;
|
|
698
|
+
} catch (error) {
|
|
699
|
+
console.error('Error creando widget de gráfico:', error);
|
|
700
|
+
throw error;
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
// Crear widget de tabla
|
|
705
|
+
async createTableWidget(
|
|
706
|
+
workspaceId: string,
|
|
707
|
+
instruments: string[],
|
|
708
|
+
name: string
|
|
709
|
+
) {
|
|
710
|
+
try {
|
|
711
|
+
const widget = await this.marketsSDK.createWidget({
|
|
712
|
+
workspaceId,
|
|
713
|
+
type: 'DYNAMIC_TABLE',
|
|
714
|
+
name,
|
|
715
|
+
instruments: instruments.map(instrument => ({
|
|
716
|
+
uniqueKey: instrument,
|
|
717
|
+
symbol: instrument,
|
|
718
|
+
})),
|
|
719
|
+
});
|
|
720
|
+
|
|
721
|
+
return widget;
|
|
722
|
+
} catch (error) {
|
|
723
|
+
console.error('Error creando widget de tabla:', error);
|
|
724
|
+
throw error;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
// Actualizar instrumentos de un widget
|
|
729
|
+
async updateWidgetInstruments(widgetId: string, instruments: string[]) {
|
|
730
|
+
try {
|
|
731
|
+
const updatedInstruments = await this.marketsSDK.updateWidgetInstruments({
|
|
732
|
+
widgetId,
|
|
733
|
+
instruments: { keys: instruments },
|
|
734
|
+
});
|
|
735
|
+
|
|
736
|
+
return updatedInstruments;
|
|
737
|
+
} catch (error) {
|
|
738
|
+
console.error('Error actualizando instrumentos:', error);
|
|
739
|
+
throw error;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// Eliminar widget
|
|
744
|
+
async deleteWidget(widgetId: string) {
|
|
745
|
+
try {
|
|
746
|
+
const result = await this.marketsSDK.deleteWidget(widgetId);
|
|
747
|
+
return result;
|
|
748
|
+
} catch (error) {
|
|
749
|
+
console.error('Error eliminando widget:', error);
|
|
750
|
+
throw error;
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
// Uso del gestor de widgets
|
|
756
|
+
const widgetManager = new WidgetManager(marketsSDK);
|
|
757
|
+
|
|
758
|
+
// Crear widgets en un workspace
|
|
759
|
+
async function setupWorkspaceWidgets(workspaceId: string) {
|
|
760
|
+
try {
|
|
761
|
+
// Widget de gráfico para AAPL
|
|
762
|
+
const chartWidget = await widgetManager.createChartWidget(
|
|
763
|
+
workspaceId,
|
|
764
|
+
'AAPL_US',
|
|
765
|
+
'Gráfico de Apple'
|
|
766
|
+
);
|
|
767
|
+
|
|
768
|
+
// Widget de tabla para portafolio
|
|
769
|
+
const tableWidget = await widgetManager.createTableWidget(
|
|
770
|
+
workspaceId,
|
|
771
|
+
['AAPL_US', 'MSFT_US', 'GOOGL_US'],
|
|
772
|
+
'Portafolio Principal'
|
|
773
|
+
);
|
|
774
|
+
|
|
775
|
+
console.log('Widgets creados:', { chartWidget, tableWidget });
|
|
776
|
+
return { chartWidget, tableWidget };
|
|
777
|
+
} catch (error) {
|
|
778
|
+
console.error('Error configurando widgets:', error);
|
|
779
|
+
throw error;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
## 📚 Referencia de API
|
|
785
|
+
|
|
786
|
+
### Clases Principales
|
|
787
|
+
|
|
788
|
+
#### `InfoselMarkets`
|
|
789
|
+
|
|
790
|
+
Punto de entrada principal para el SDK de Mercados. Se inicializa usando el método estático `init()` que recibe el `InfoselSdkManager`.
|
|
791
|
+
|
|
792
|
+
#### `InfoselSdkManager`
|
|
793
|
+
|
|
794
|
+
Gestor central del SDK que maneja la configuración, autenticación y modo de operación. Se inicializa usando el método estático `initWithConfiguration()` con configuración moderna o `init()` con configuración legacy.
|
|
795
|
+
|
|
796
|
+
#### `AuthConfigurationBuilder`
|
|
797
|
+
|
|
798
|
+
Builder para crear configuraciones de autenticación validadas y centralizadas. Proporciona una API fluida para configurar autenticación KeyCloak y basada en tokens.
|
|
799
|
+
|
|
800
|
+
#### `MarketsMapper`
|
|
801
|
+
|
|
802
|
+
Mapeador de datos para convertir entre modelos de API y dominio.
|
|
803
|
+
|
|
804
|
+
### Métodos Disponibles
|
|
805
|
+
|
|
806
|
+
#### 🔍 Gestión de Instrumentos
|
|
807
|
+
|
|
808
|
+
| Método | Descripción | Parámetros |
|
|
809
|
+
|--------|-------------|------------|
|
|
810
|
+
| `searchInstruments()` | Buscar instrumentos financieros | `SearchInstrumentRequest` |
|
|
811
|
+
| `getInstruments()` | Obtener lista de instrumentos | `GetInstrumentsRequest` |
|
|
812
|
+
| `createInstrument()` | Crear nuevo instrumento | `CreateInstrumentRequest` |
|
|
813
|
+
| `deleteInstrument()` | Eliminar instrumento | `string` (ID) |
|
|
814
|
+
| `getInstrumentFields()` | Obtener campos del instrumento | `string` (ID) |
|
|
815
|
+
|
|
816
|
+
#### 📊 Detalles de Instrumentos
|
|
817
|
+
|
|
818
|
+
| Método | Descripción | Parámetros |
|
|
819
|
+
|--------|-------------|------------|
|
|
820
|
+
| `getInstrumentDetailProfile()` | Obtener perfil del instrumento | `InstrumentDetailProfileRequest` |
|
|
821
|
+
| `getInstrumentDetailFinancialQuartely()` | Datos financieros trimestrales | `InstrumentDetailFinancialQuarterlyRequest` |
|
|
822
|
+
| `getInstrumentDetailFinancialAnnual()` | Datos financieros anuales | `InstrumentDetailFinancialAnnualRequest` |
|
|
823
|
+
| `getInstrumentDetailFinancialReasons()` | Razones financieras | `InstrumentDetailFinancialReasonsRequest` |
|
|
824
|
+
| `getInstrumentReportFinancialReasons()` | Reportes financieros con razones | `InstrumentReportFinancialReasonsRequest` |
|
|
825
|
+
|
|
826
|
+
#### 🎯 Gestión de Widgets
|
|
827
|
+
|
|
828
|
+
| Método | Descripción | Parámetros |
|
|
829
|
+
|--------|-------------|------------|
|
|
830
|
+
| `createWidget()` | Crear nuevo widget | `CreateWidgetRequest` |
|
|
831
|
+
| `deleteWidget()` | Eliminar widget | `string` (ID) |
|
|
832
|
+
| `updateWidgetInstruments()` | Actualizar instrumentos del widget | `UpdateWidgetInstrumentsRequest` |
|
|
833
|
+
| `getProjectWidgets()` | Obtener widgets del proyecto | `GetProjectWidgetsRequest` |
|
|
834
|
+
|
|
835
|
+
#### 🏢 Gestión de Espacios de Trabajo
|
|
836
|
+
|
|
837
|
+
| Método | Descripción | Parámetros |
|
|
838
|
+
|--------|-------------|------------|
|
|
839
|
+
| `createWorkspace()` | Crear nuevo espacio de trabajo | `CreateWorkspaceRequest` |
|
|
840
|
+
| `getWorkspaces()` | Obtener espacios de trabajo | `GetWorkspacesRequest` |
|
|
841
|
+
| `getWorkspacesByUser()` | Obtener espacios de trabajo del usuario | `GetWorkspacesByUserRequest` |
|
|
842
|
+
| `getUserWorkspaces()` | Obtener espacios de trabajo específicos del usuario | `GetUserWorkspaceRequest` |
|
|
843
|
+
| `getWorkspace()` | Obtener detalles del workspace | `GetWorkspaceRequest` |
|
|
844
|
+
| `deleteWorkspace()` | Eliminar espacio de trabajo | `DeleteWorkspaceRequest` |
|
|
845
|
+
|
|
846
|
+
#### 📈 Datos de Gráficos
|
|
847
|
+
|
|
848
|
+
| Método | Descripción | Parámetros |
|
|
849
|
+
|--------|-------------|------------|
|
|
850
|
+
| `getChartData()` | Obtener datos de gráficos | `ChartRequest` |
|
|
851
|
+
|
|
852
|
+
### Entidades
|
|
853
|
+
|
|
854
|
+
#### Entidades Principales
|
|
855
|
+
|
|
856
|
+
- `Instrument`: Representación de instrumento financiero
|
|
857
|
+
- `Widget`: Configuración y datos del widget
|
|
858
|
+
- `Workspace`: Espacio de trabajo del usuario
|
|
859
|
+
- `ChartItem`: Punto de datos del gráfico
|
|
860
|
+
- `SearchResultItem`: Elemento de resultado de búsqueda
|
|
861
|
+
|
|
862
|
+
#### Entidades de Solicitud/Respuesta
|
|
863
|
+
|
|
864
|
+
- `SearchInstrumentsRequest`: Parámetros de búsqueda
|
|
865
|
+
- `CreateWidgetRequest`: Parámetros de creación de widget
|
|
866
|
+
- `CreateWorkspaceRequest`: Parámetros de creación de espacio de trabajo
|
|
867
|
+
- `ChartRequest`: Parámetros de solicitud de datos de gráfico
|
|
868
|
+
|
|
869
|
+
#### Tipos de Widgets
|
|
870
|
+
|
|
871
|
+
- `DYNAMIC_TABLE`: Tabla dinámica con datos en tiempo real
|
|
872
|
+
- `PREDEFINED_TABLE`: Tabla predefinida con estructura fija
|
|
873
|
+
- `CUSTOM_TABLE`: Tabla personalizable
|
|
874
|
+
- `NEWS_LIST`: Lista de noticias financieras
|
|
875
|
+
- `TICKER_TAPE`: Cinta de ticker con precios
|
|
876
|
+
- `CHART`: Gráfico de precios y volúmenes
|
|
877
|
+
|
|
878
|
+
#### Tipos de Períodos de Gráficos
|
|
879
|
+
|
|
880
|
+
- `day`: Períodos diarios
|
|
881
|
+
- `week`: Períodos semanales
|
|
882
|
+
- `month`: Períodos mensuales
|
|
883
|
+
- `year`: Períodos anuales
|
|
884
|
+
|
|
885
|
+
## 🔗 Dependencias
|
|
886
|
+
|
|
887
|
+
- `@infosel-sdk/core`: Funcionalidad core del SDK (versión ^0.0.4)
|
|
888
|
+
- `axios`: Cliente HTTP
|
|
889
|
+
- `tslib`: Biblioteca runtime de TypeScript
|
|
890
|
+
|
|
891
|
+
## 🆕 Novedades en Core v0.0.4
|
|
892
|
+
|
|
893
|
+
### ✨ Configuration Builder Pattern
|
|
894
|
+
|
|
895
|
+
- **Nueva API fluida** para configuración sin duplicaciones
|
|
896
|
+
- **Validaciones centralizadas** con mensajes de error descriptivos
|
|
897
|
+
- **Single source of truth** para configuración de realm
|
|
898
|
+
- **Compatibilidad hacia atrás** mantenida
|
|
899
|
+
|
|
900
|
+
### 🔧 Mejoras en Configuración
|
|
901
|
+
|
|
902
|
+
- **Configuración dinámica de realm** para múltiples ambientes
|
|
903
|
+
- **Validación de formatos** de realm, client_id y credenciales
|
|
904
|
+
- **Valores por defecto inteligentes** basados en el tipo de autenticación
|
|
905
|
+
- **Type safety mejorado** con TypeScript
|
|
906
|
+
|
|
907
|
+
## 🧪 Testing
|
|
908
|
+
|
|
909
|
+
### Pruebas Unitarias
|
|
910
|
+
|
|
911
|
+
```bash
|
|
912
|
+
# Ejecutar tests unitarios
|
|
913
|
+
npm test
|
|
914
|
+
|
|
915
|
+
# Ejecutar tests con cobertura
|
|
916
|
+
npm run test:coverage
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
### Pruebas E2E (End-to-End)
|
|
920
|
+
|
|
921
|
+
Las pruebas e2e utilizan información real y autenticación con Keycloak para verificar el funcionamiento completo del SDK.
|
|
922
|
+
|
|
923
|
+
#### Configuración
|
|
924
|
+
|
|
925
|
+
```bash
|
|
926
|
+
# Variables de entorno requeridas
|
|
927
|
+
KEYCLOAK_CLIENT_ID=
|
|
928
|
+
KEYCLOAK_CLIENT_SECRET=
|
|
929
|
+
TEST_ENV=qa # qa, prod, preprod
|
|
930
|
+
TEST_TIMEOUT=30000 # Timeout en milisegundos
|
|
931
|
+
DEBUG_E2E=true # Habilitar logs de debug
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
#### Ejecución
|
|
935
|
+
|
|
936
|
+
```bash
|
|
937
|
+
# Ejecutar todas las pruebas e2e
|
|
938
|
+
npm run test:e2e
|
|
939
|
+
|
|
940
|
+
# Ejecutar con debug habilitado
|
|
941
|
+
npm run test:e2e:debug
|
|
942
|
+
|
|
943
|
+
# Usando el script de utilidad
|
|
944
|
+
./src/__tests__/e2e/run-e2e.sh
|
|
945
|
+
|
|
946
|
+
# Con opciones personalizadas
|
|
947
|
+
./src/__tests__/e2e/run-e2e.sh -d -e prod -t 60000
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
#### Script de Utilidad
|
|
951
|
+
|
|
952
|
+
El script `run-e2e.sh` proporciona una interfaz fácil para ejecutar pruebas e2e:
|
|
953
|
+
|
|
954
|
+
```bash
|
|
955
|
+
# Mostrar ayuda
|
|
956
|
+
./src/__tests__/e2e/run-e2e.sh --help
|
|
957
|
+
|
|
958
|
+
# Ejecutar con configuración por defecto
|
|
959
|
+
./src/__tests__/e2e/run-e2e.sh
|
|
960
|
+
|
|
961
|
+
# Ejecutar en entorno de producción con debug
|
|
962
|
+
./src/__tests__/e2e/run-e2e.sh -d -e prod
|
|
963
|
+
|
|
964
|
+
# Ejecutar con credenciales personalizadas
|
|
965
|
+
./src/__tests__/e2e/run-e2e.sh -c my-client -s my-secret
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
#### Pruebas Incluidas
|
|
969
|
+
|
|
970
|
+
- **SDK Core Configuration**: Verificación de inicialización y autenticación
|
|
971
|
+
- **Markets API Integration**: Conexión real a la API de markets
|
|
972
|
+
- **Workspace Operations**: Operaciones de workspace con datos reales
|
|
973
|
+
- **Performance and Reliability**: Verificación de tiempos de respuesta y concurrencia
|
|
974
|
+
|
|
975
|
+
#### Notas Importantes
|
|
976
|
+
|
|
977
|
+
- Las pruebas e2e requieren conectividad a internet
|
|
978
|
+
- Utilizan servicios reales, no mocks
|
|
979
|
+
- Los timeouts son más largos que en pruebas unitarias
|
|
980
|
+
- Se ejecutan secuencialmente para evitar conflictos
|
|
981
|
+
- No se incluyen en el coverage report
|
|
982
|
+
|
|
983
|
+
Para más detalles, consulta el [README de pruebas e2e](src/__tests__/e2e/README.md).
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
## 📞 Soporte
|
|
987
|
+
|
|
988
|
+
Para soporte y preguntas, por favor contacta al equipo de desarrollo de Infosel.
|
|
989
|
+
|
|
990
|
+
## 🔗 Paquetes Relacionados
|
|
991
|
+
|
|
992
|
+
- `@infosel-sdk/core`: Funcionalidad core del SDK (versión ^0.0.4)
|
|
993
|
+
- `@infosel-sdk/news`: SDK de noticias y contenido
|
|
994
|
+
- `@infosel-sdk/securities`: SDK de valores y trading
|
|
995
|
+
|
|
996
|
+
---
|