@finatic/client 0.0.141 → 0.9.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/dist/custom/FinaticConnect.d.ts +19 -0
- package/dist/custom/FinaticConnect.d.ts.map +1 -0
- package/dist/custom/FinaticConnect.js +24 -0
- package/dist/custom/FinaticConnect.js.map +1 -0
- package/dist/custom/index.d.ts +8 -0
- package/dist/custom/index.d.ts.map +1 -0
- package/dist/custom/index.js +20 -0
- package/dist/custom/index.js.map +1 -0
- package/dist/custom/utils/logger-patch.d.ts +13 -0
- package/dist/custom/utils/logger-patch.d.ts.map +1 -0
- package/dist/custom/utils/logger-patch.js +72 -0
- package/dist/custom/utils/logger-patch.js.map +1 -0
- package/dist/custom/wrappers/brokers.d.ts +17 -0
- package/dist/custom/wrappers/brokers.d.ts.map +1 -0
- package/dist/custom/wrappers/brokers.js +22 -0
- package/dist/custom/wrappers/brokers.js.map +1 -0
- package/dist/custom/wrappers/market-data.d.ts +13 -0
- package/dist/custom/wrappers/market-data.d.ts.map +1 -0
- package/dist/custom/wrappers/market-data.js +19 -0
- package/dist/custom/wrappers/market-data.js.map +1 -0
- package/dist/custom/wrappers/session.d.ts +16 -0
- package/dist/custom/wrappers/session.d.ts.map +1 -0
- package/dist/custom/wrappers/session.js +21 -0
- package/dist/custom/wrappers/session.js.map +1 -0
- package/dist/generated/FinaticConnect.d.ts +282 -0
- package/dist/generated/FinaticConnect.d.ts.map +1 -0
- package/dist/generated/FinaticConnect.js +890 -0
- package/dist/generated/FinaticConnect.js.map +1 -0
- package/dist/generated/api/brokers-api.d.ts +1126 -0
- package/dist/generated/api/brokers-api.d.ts.map +1 -0
- package/dist/generated/api/brokers-api.js +1430 -0
- package/dist/generated/api/brokers-api.js.map +1 -0
- package/dist/generated/api/market-data-api.d.ts +118 -0
- package/dist/generated/api/market-data-api.d.ts.map +1 -0
- package/dist/generated/api/market-data-api.js +155 -0
- package/dist/generated/api/market-data-api.js.map +1 -0
- package/dist/generated/api/session-api.d.ts +395 -0
- package/dist/generated/api/session-api.d.ts.map +1 -0
- package/dist/generated/api/session-api.js +577 -0
- package/dist/generated/api/session-api.js.map +1 -0
- package/dist/generated/api.d.ts +14 -0
- package/dist/generated/api.d.ts.map +1 -0
- package/dist/generated/api.js +31 -0
- package/dist/generated/api.js.map +1 -0
- package/dist/generated/base.d.ts +43 -0
- package/dist/generated/base.d.ts.map +1 -0
- package/dist/generated/base.js +48 -0
- package/dist/generated/base.js.map +1 -0
- package/dist/generated/common.d.ts +29 -0
- package/dist/generated/common.d.ts.map +1 -0
- package/dist/generated/common.js +110 -0
- package/dist/generated/common.js.map +1 -0
- package/dist/generated/config.d.ts +89 -0
- package/dist/generated/config.d.ts.map +1 -0
- package/dist/generated/config.js +85 -0
- package/dist/generated/config.js.map +1 -0
- package/dist/generated/configuration.d.ts +99 -0
- package/dist/generated/configuration.d.ts.map +1 -0
- package/dist/generated/configuration.js +50 -0
- package/dist/generated/configuration.js.map +1 -0
- package/dist/generated/models/account-status.d.ts +16 -0
- package/dist/generated/models/account-status.d.ts.map +1 -0
- package/dist/generated/models/account-status.js +22 -0
- package/dist/generated/models/account-status.js.map +1 -0
- package/dist/generated/models/account-type.d.ts +19 -0
- package/dist/generated/models/account-type.d.ts.map +1 -0
- package/dist/generated/models/account-type.js +25 -0
- package/dist/generated/models/account-type.js.map +1 -0
- package/dist/generated/models/accountnumber.d.ts +14 -0
- package/dist/generated/models/accountnumber.d.ts.map +1 -0
- package/dist/generated/models/accountnumber.js +16 -0
- package/dist/generated/models/accountnumber.js.map +1 -0
- package/dist/generated/models/accounts.d.ts +34 -0
- package/dist/generated/models/accounts.d.ts.map +1 -0
- package/dist/generated/models/accounts.js +16 -0
- package/dist/generated/models/accounts.js.map +1 -0
- package/dist/generated/models/asset-type.d.ts +18 -0
- package/dist/generated/models/asset-type.d.ts.map +1 -0
- package/dist/generated/models/asset-type.js +24 -0
- package/dist/generated/models/asset-type.js.map +1 -0
- package/dist/generated/models/balances.d.ts +28 -0
- package/dist/generated/models/balances.d.ts.map +1 -0
- package/dist/generated/models/balances.js +16 -0
- package/dist/generated/models/balances.js.map +1 -0
- package/dist/generated/models/broker-connection-request.d.ts +24 -0
- package/dist/generated/models/broker-connection-request.d.ts.map +1 -0
- package/dist/generated/models/broker-connection-request.js +16 -0
- package/dist/generated/models/broker-connection-request.js.map +1 -0
- package/dist/generated/models/broker-connection-update-request.d.ts +22 -0
- package/dist/generated/models/broker-connection-update-request.d.ts.map +1 -0
- package/dist/generated/models/broker-connection-update-request.js +16 -0
- package/dist/generated/models/broker-connection-update-request.js.map +1 -0
- package/dist/generated/models/broker-info.d.ts +29 -0
- package/dist/generated/models/broker-info.d.ts.map +1 -0
- package/dist/generated/models/broker-info.js +16 -0
- package/dist/generated/models/broker-info.js.map +1 -0
- package/dist/generated/models/broker-permissions.d.ts +25 -0
- package/dist/generated/models/broker-permissions.d.ts.map +1 -0
- package/dist/generated/models/broker-permissions.js +16 -0
- package/dist/generated/models/broker-permissions.js.map +1 -0
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.d.ts +26 -0
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.d.ts.map +1 -0
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.js +16 -0
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.js.map +1 -0
- package/dist/generated/models/day-tif.d.ts +21 -0
- package/dist/generated/models/day-tif.d.ts.map +1 -0
- package/dist/generated/models/day-tif.js +21 -0
- package/dist/generated/models/day-tif.js.map +1 -0
- package/dist/generated/models/direct-auth-request.d.ts +25 -0
- package/dist/generated/models/direct-auth-request.d.ts.map +1 -0
- package/dist/generated/models/direct-auth-request.js +16 -0
- package/dist/generated/models/direct-auth-request.js.map +1 -0
- package/dist/generated/models/disconnect-action-result.d.ts +20 -0
- package/dist/generated/models/disconnect-action-result.d.ts.map +1 -0
- package/dist/generated/models/disconnect-action-result.js +16 -0
- package/dist/generated/models/disconnect-action-result.js.map +1 -0
- package/dist/generated/models/finatic-apiwarning.d.ts +24 -0
- package/dist/generated/models/finatic-apiwarning.d.ts.map +1 -0
- package/dist/generated/models/finatic-apiwarning.js +16 -0
- package/dist/generated/models/finatic-apiwarning.js.map +1 -0
- package/dist/generated/models/finatic-error.d.ts +26 -0
- package/dist/generated/models/finatic-error.d.ts.map +1 -0
- package/dist/generated/models/finatic-error.js +16 -0
- package/dist/generated/models/finatic-error.js.map +1 -0
- package/dist/generated/models/finatic-response-disconnect-action-result.d.ts +38 -0
- package/dist/generated/models/finatic-response-disconnect-action-result.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-disconnect-action-result.js +16 -0
- package/dist/generated/models/finatic-response-disconnect-action-result.js.map +1 -0
- package/dist/generated/models/finatic-response-list-accounts.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-accounts.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-accounts.js +16 -0
- package/dist/generated/models/finatic-response-list-accounts.js.map +1 -0
- package/dist/generated/models/finatic-response-list-balances.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-balances.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-balances.js +16 -0
- package/dist/generated/models/finatic-response-list-balances.js.map +1 -0
- package/dist/generated/models/finatic-response-list-broker-info.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-broker-info.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-broker-info.js +16 -0
- package/dist/generated/models/finatic-response-list-broker-info.js.map +1 -0
- package/dist/generated/models/finatic-response-list-dict.d.ts +41 -0
- package/dist/generated/models/finatic-response-list-dict.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-dict.js +16 -0
- package/dist/generated/models/finatic-response-list-dict.js.map +1 -0
- package/dist/generated/models/finatic-response-list-futures-historical-row.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-futures-historical-row.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-futures-historical-row.js +16 -0
- package/dist/generated/models/finatic-response-list-futures-historical-row.js.map +1 -0
- package/dist/generated/models/finatic-response-list-order-event-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-order-event-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-order-event-response.js +16 -0
- package/dist/generated/models/finatic-response-list-order-event-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-order-fill-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-order-fill-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-order-fill-response.js +16 -0
- package/dist/generated/models/finatic-response-list-order-fill-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-order-group-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-order-group-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-order-group-response.js +16 -0
- package/dist/generated/models/finatic-response-list-order-group-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-order-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-order-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-order-response.js +16 -0
- package/dist/generated/models/finatic-response-list-order-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.js +16 -0
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-position-lot-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-position-lot-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-position-lot-response.js +16 -0
- package/dist/generated/models/finatic-response-list-position-lot-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-position-response.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-position-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-position-response.js +16 -0
- package/dist/generated/models/finatic-response-list-position-response.js.map +1 -0
- package/dist/generated/models/finatic-response-list-user-broker-connections.d.ts +38 -0
- package/dist/generated/models/finatic-response-list-user-broker-connections.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-list-user-broker-connections.js +16 -0
- package/dist/generated/models/finatic-response-list-user-broker-connections.js.map +1 -0
- package/dist/generated/models/finatic-response-order-action-result.d.ts +38 -0
- package/dist/generated/models/finatic-response-order-action-result.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-order-action-result.js +16 -0
- package/dist/generated/models/finatic-response-order-action-result.js.map +1 -0
- package/dist/generated/models/finatic-response-portal-url-response.d.ts +18 -0
- package/dist/generated/models/finatic-response-portal-url-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-portal-url-response.js +16 -0
- package/dist/generated/models/finatic-response-portal-url-response.js.map +1 -0
- package/dist/generated/models/finatic-response-session-response-data.d.ts +18 -0
- package/dist/generated/models/finatic-response-session-response-data.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-session-response-data.js +16 -0
- package/dist/generated/models/finatic-response-session-response-data.js.map +1 -0
- package/dist/generated/models/finatic-response-session-user-response.d.ts +18 -0
- package/dist/generated/models/finatic-response-session-user-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-session-user-response.js +16 -0
- package/dist/generated/models/finatic-response-session-user-response.js.map +1 -0
- package/dist/generated/models/finatic-response-test-webhook-response.d.ts +18 -0
- package/dist/generated/models/finatic-response-test-webhook-response.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-test-webhook-response.js +16 -0
- package/dist/generated/models/finatic-response-test-webhook-response.js.map +1 -0
- package/dist/generated/models/finatic-response-token-data.d.ts +18 -0
- package/dist/generated/models/finatic-response-token-data.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-token-data.js +16 -0
- package/dist/generated/models/finatic-response-token-data.js.map +1 -0
- package/dist/generated/models/finatic-response-token-response-data.d.ts +18 -0
- package/dist/generated/models/finatic-response-token-response-data.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-token-response-data.js +16 -0
- package/dist/generated/models/finatic-response-token-response-data.js.map +1 -0
- package/dist/generated/models/finatic-response-user-broker-connections.d.ts +34 -0
- package/dist/generated/models/finatic-response-user-broker-connections.d.ts.map +1 -0
- package/dist/generated/models/finatic-response-user-broker-connections.js +16 -0
- package/dist/generated/models/finatic-response-user-broker-connections.js.map +1 -0
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.d.ts +24 -0
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.d.ts.map +1 -0
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.js +16 -0
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.js.map +1 -0
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.d.ts +40 -0
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.d.ts.map +1 -0
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.js +16 -0
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.js.map +1 -0
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.d.ts +20 -0
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.d.ts.map +1 -0
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.js +16 -0
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.js.map +1 -0
- package/dist/generated/models/foktif.d.ts +21 -0
- package/dist/generated/models/foktif.d.ts.map +1 -0
- package/dist/generated/models/foktif.js +21 -0
- package/dist/generated/models/foktif.js.map +1 -0
- package/dist/generated/models/futures-historical-row.d.ts +27 -0
- package/dist/generated/models/futures-historical-row.d.ts.map +1 -0
- package/dist/generated/models/futures-historical-row.js +16 -0
- package/dist/generated/models/futures-historical-row.js.map +1 -0
- package/dist/generated/models/gtctif.d.ts +21 -0
- package/dist/generated/models/gtctif.d.ts.map +1 -0
- package/dist/generated/models/gtctif.js +21 -0
- package/dist/generated/models/gtctif.js.map +1 -0
- package/dist/generated/models/gtdtif.d.ts +25 -0
- package/dist/generated/models/gtdtif.d.ts.map +1 -0
- package/dist/generated/models/gtdtif.js +21 -0
- package/dist/generated/models/gtdtif.js.map +1 -0
- package/dist/generated/models/httpvalidation-error.d.ts +16 -0
- package/dist/generated/models/httpvalidation-error.d.ts.map +1 -0
- package/dist/generated/models/httpvalidation-error.js +16 -0
- package/dist/generated/models/httpvalidation-error.js.map +1 -0
- package/dist/generated/models/index.d.ts +108 -0
- package/dist/generated/models/index.d.ts.map +1 -0
- package/dist/generated/models/index.js +125 -0
- package/dist/generated/models/index.js.map +1 -0
- package/dist/generated/models/ioctif.d.ts +21 -0
- package/dist/generated/models/ioctif.d.ts.map +1 -0
- package/dist/generated/models/ioctif.js +21 -0
- package/dist/generated/models/ioctif.js.map +1 -0
- package/dist/generated/models/limit-order-modify-query-params.d.ts +32 -0
- package/dist/generated/models/limit-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/limit-order-modify-query-params.js +21 -0
- package/dist/generated/models/limit-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/market-order-modify-query-params.d.ts +31 -0
- package/dist/generated/models/market-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/market-order-modify-query-params.js +21 -0
- package/dist/generated/models/market-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.d.ts +26 -0
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.d.ts.map +1 -0
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.js +16 -0
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.js.map +1 -0
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.js +21 -0
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.d.ts +44 -0
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.js +30 -0
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.d.ts +37 -0
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.js +21 -0
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-market-order-place-query-params.d.ts +43 -0
- package/dist/generated/models/ninja-trader-market-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-market-order-place-query-params.js +30 -0
- package/dist/generated/models/ninja-trader-market-order-place-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-order-cancel-query-params.d.ts +26 -0
- package/dist/generated/models/ninja-trader-order-cancel-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-order-cancel-query-params.js +16 -0
- package/dist/generated/models/ninja-trader-order-cancel-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-order-cancel-request.d.ts +21 -0
- package/dist/generated/models/ninja-trader-order-cancel-request.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-order-cancel-request.js +21 -0
- package/dist/generated/models/ninja-trader-order-cancel-request.js.map +1 -0
- package/dist/generated/models/ninja-trader-order-modify-request.d.ts +21 -0
- package/dist/generated/models/ninja-trader-order-modify-request.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-order-modify-request.js +21 -0
- package/dist/generated/models/ninja-trader-order-modify-request.js.map +1 -0
- package/dist/generated/models/ninja-trader-order-place-request.d.ts +24 -0
- package/dist/generated/models/ninja-trader-order-place-request.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-order-place-request.js +21 -0
- package/dist/generated/models/ninja-trader-order-place-request.js.map +1 -0
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.d.ts +44 -0
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.js +30 -0
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.d.ts +44 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.js +30 -0
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/order-action-result.d.ts +21 -0
- package/dist/generated/models/order-action-result.d.ts.map +1 -0
- package/dist/generated/models/order-action-result.js +16 -0
- package/dist/generated/models/order-action-result.js.map +1 -0
- package/dist/generated/models/order-cancel-query-params.d.ts +22 -0
- package/dist/generated/models/order-cancel-query-params.d.ts.map +1 -0
- package/dist/generated/models/order-cancel-query-params.js +16 -0
- package/dist/generated/models/order-cancel-query-params.js.map +1 -0
- package/dist/generated/models/order-event-response.d.ts +25 -0
- package/dist/generated/models/order-event-response.d.ts.map +1 -0
- package/dist/generated/models/order-event-response.js +16 -0
- package/dist/generated/models/order-event-response.js.map +1 -0
- package/dist/generated/models/order-fill-response.d.ts +24 -0
- package/dist/generated/models/order-fill-response.d.ts.map +1 -0
- package/dist/generated/models/order-fill-response.js +16 -0
- package/dist/generated/models/order-fill-response.js.map +1 -0
- package/dist/generated/models/order-group-order.d.ts +24 -0
- package/dist/generated/models/order-group-order.d.ts.map +1 -0
- package/dist/generated/models/order-group-order.js +16 -0
- package/dist/generated/models/order-group-order.js.map +1 -0
- package/dist/generated/models/order-group-response.d.ts +24 -0
- package/dist/generated/models/order-group-response.d.ts.map +1 -0
- package/dist/generated/models/order-group-response.js +16 -0
- package/dist/generated/models/order-group-response.js.map +1 -0
- package/dist/generated/models/order-leg.d.ts +22 -0
- package/dist/generated/models/order-leg.d.ts.map +1 -0
- package/dist/generated/models/order-leg.js +16 -0
- package/dist/generated/models/order-leg.js.map +1 -0
- package/dist/generated/models/order-response.d.ts +27 -0
- package/dist/generated/models/order-response.d.ts.map +1 -0
- package/dist/generated/models/order-response.js +16 -0
- package/dist/generated/models/order-response.js.map +1 -0
- package/dist/generated/models/order-side.d.ts +16 -0
- package/dist/generated/models/order-side.d.ts.map +1 -0
- package/dist/generated/models/order-side.js +22 -0
- package/dist/generated/models/order-side.js.map +1 -0
- package/dist/generated/models/order-status.d.ts +23 -0
- package/dist/generated/models/order-status.d.ts.map +1 -0
- package/dist/generated/models/order-status.js +29 -0
- package/dist/generated/models/order-status.js.map +1 -0
- package/dist/generated/models/order.d.ts +28 -0
- package/dist/generated/models/order.d.ts.map +1 -0
- package/dist/generated/models/order.js +16 -0
- package/dist/generated/models/order.js.map +1 -0
- package/dist/generated/models/order1.d.ts +28 -0
- package/dist/generated/models/order1.d.ts.map +1 -0
- package/dist/generated/models/order1.js +16 -0
- package/dist/generated/models/order1.js.map +1 -0
- package/dist/generated/models/order2.d.ts +28 -0
- package/dist/generated/models/order2.d.ts.map +1 -0
- package/dist/generated/models/order2.js +16 -0
- package/dist/generated/models/order2.js.map +1 -0
- package/dist/generated/models/order3.d.ts +28 -0
- package/dist/generated/models/order3.d.ts.map +1 -0
- package/dist/generated/models/order3.js +16 -0
- package/dist/generated/models/order3.js.map +1 -0
- package/dist/generated/models/order4.d.ts +28 -0
- package/dist/generated/models/order4.d.ts.map +1 -0
- package/dist/generated/models/order4.js +16 -0
- package/dist/generated/models/order4.js.map +1 -0
- package/dist/generated/models/order5.d.ts +28 -0
- package/dist/generated/models/order5.d.ts.map +1 -0
- package/dist/generated/models/order5.js +16 -0
- package/dist/generated/models/order5.js.map +1 -0
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.d.ts +26 -0
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.d.ts.map +1 -0
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.js +16 -0
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.js.map +1 -0
- package/dist/generated/models/portal-url-response.d.ts +21 -0
- package/dist/generated/models/portal-url-response.d.ts.map +1 -0
- package/dist/generated/models/portal-url-response.js +16 -0
- package/dist/generated/models/portal-url-response.js.map +1 -0
- package/dist/generated/models/position-lot-fill-response.d.ts +23 -0
- package/dist/generated/models/position-lot-fill-response.d.ts.map +1 -0
- package/dist/generated/models/position-lot-fill-response.js +16 -0
- package/dist/generated/models/position-lot-fill-response.js.map +1 -0
- package/dist/generated/models/position-lot-response.d.ts +27 -0
- package/dist/generated/models/position-lot-response.d.ts.map +1 -0
- package/dist/generated/models/position-lot-response.js +16 -0
- package/dist/generated/models/position-lot-response.js.map +1 -0
- package/dist/generated/models/position-response.d.ts +62 -0
- package/dist/generated/models/position-response.d.ts.map +1 -0
- package/dist/generated/models/position-response.js +16 -0
- package/dist/generated/models/position-response.js.map +1 -0
- package/dist/generated/models/position-status.d.ts +16 -0
- package/dist/generated/models/position-status.d.ts.map +1 -0
- package/dist/generated/models/position-status.js +22 -0
- package/dist/generated/models/position-status.js.map +1 -0
- package/dist/generated/models/public-account-type-enum.d.ts +17 -0
- package/dist/generated/models/public-account-type-enum.d.ts.map +1 -0
- package/dist/generated/models/public-account-type-enum.js +23 -0
- package/dist/generated/models/public-account-type-enum.js.map +1 -0
- package/dist/generated/models/public-asset-type-enum.d.ts +20 -0
- package/dist/generated/models/public-asset-type-enum.d.ts.map +1 -0
- package/dist/generated/models/public-asset-type-enum.js +26 -0
- package/dist/generated/models/public-asset-type-enum.js.map +1 -0
- package/dist/generated/models/public-connection-status-enum.d.ts +20 -0
- package/dist/generated/models/public-connection-status-enum.d.ts.map +1 -0
- package/dist/generated/models/public-connection-status-enum.js +26 -0
- package/dist/generated/models/public-connection-status-enum.js.map +1 -0
- package/dist/generated/models/public-order-side-enum.d.ts +16 -0
- package/dist/generated/models/public-order-side-enum.d.ts.map +1 -0
- package/dist/generated/models/public-order-side-enum.js +22 -0
- package/dist/generated/models/public-order-side-enum.js.map +1 -0
- package/dist/generated/models/public-order-status-enum.d.ts +24 -0
- package/dist/generated/models/public-order-status-enum.d.ts.map +1 -0
- package/dist/generated/models/public-order-status-enum.js +30 -0
- package/dist/generated/models/public-order-status-enum.js.map +1 -0
- package/dist/generated/models/public-position-status-enum.d.ts +17 -0
- package/dist/generated/models/public-position-status-enum.d.ts.map +1 -0
- package/dist/generated/models/public-position-status-enum.js +23 -0
- package/dist/generated/models/public-position-status-enum.js.map +1 -0
- package/dist/generated/models/robinhood-limit-order-place-query-params.d.ts +37 -0
- package/dist/generated/models/robinhood-limit-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/robinhood-limit-order-place-query-params.js +30 -0
- package/dist/generated/models/robinhood-limit-order-place-query-params.js.map +1 -0
- package/dist/generated/models/robinhood-market-order-place-query-params.d.ts +36 -0
- package/dist/generated/models/robinhood-market-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/robinhood-market-order-place-query-params.js +30 -0
- package/dist/generated/models/robinhood-market-order-place-query-params.js.map +1 -0
- package/dist/generated/models/robinhood-order-cancel-request.d.ts +21 -0
- package/dist/generated/models/robinhood-order-cancel-request.d.ts.map +1 -0
- package/dist/generated/models/robinhood-order-cancel-request.js +21 -0
- package/dist/generated/models/robinhood-order-cancel-request.js.map +1 -0
- package/dist/generated/models/robinhood-order-modify-request.d.ts +21 -0
- package/dist/generated/models/robinhood-order-modify-request.d.ts.map +1 -0
- package/dist/generated/models/robinhood-order-modify-request.js +21 -0
- package/dist/generated/models/robinhood-order-modify-request.js.map +1 -0
- package/dist/generated/models/robinhood-order-place-request.d.ts +24 -0
- package/dist/generated/models/robinhood-order-place-request.d.ts.map +1 -0
- package/dist/generated/models/robinhood-order-place-request.js +21 -0
- package/dist/generated/models/robinhood-order-place-request.js.map +1 -0
- package/dist/generated/models/robinhood-stop-order-place-query-params.d.ts +37 -0
- package/dist/generated/models/robinhood-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/robinhood-stop-order-place-query-params.js +30 -0
- package/dist/generated/models/robinhood-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.d.ts +37 -0
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.js +30 -0
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/session-link-request.d.ts +19 -0
- package/dist/generated/models/session-link-request.d.ts.map +1 -0
- package/dist/generated/models/session-link-request.js +16 -0
- package/dist/generated/models/session-link-request.js.map +1 -0
- package/dist/generated/models/session-response-data.d.ts +39 -0
- package/dist/generated/models/session-response-data.d.ts.map +1 -0
- package/dist/generated/models/session-response-data.js +16 -0
- package/dist/generated/models/session-response-data.js.map +1 -0
- package/dist/generated/models/session-start-request.d.ts +18 -0
- package/dist/generated/models/session-start-request.d.ts.map +1 -0
- package/dist/generated/models/session-start-request.js +16 -0
- package/dist/generated/models/session-start-request.js.map +1 -0
- package/dist/generated/models/session-status.d.ts +22 -0
- package/dist/generated/models/session-status.d.ts.map +1 -0
- package/dist/generated/models/session-status.js +28 -0
- package/dist/generated/models/session-status.js.map +1 -0
- package/dist/generated/models/session-user-response.d.ts +45 -0
- package/dist/generated/models/session-user-response.d.ts.map +1 -0
- package/dist/generated/models/session-user-response.js +16 -0
- package/dist/generated/models/session-user-response.js.map +1 -0
- package/dist/generated/models/stop-order-modify-query-params.d.ts +32 -0
- package/dist/generated/models/stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.js +21 -0
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.d.ts +55 -0
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.js +40 -0
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.d.ts +37 -0
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.js +21 -0
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-market-order-place-query-params.d.ts +54 -0
- package/dist/generated/models/tasty-trade-market-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-market-order-place-query-params.js +40 -0
- package/dist/generated/models/tasty-trade-market-order-place-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-order-cancel-query-params.d.ts +26 -0
- package/dist/generated/models/tasty-trade-order-cancel-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-order-cancel-query-params.js +16 -0
- package/dist/generated/models/tasty-trade-order-cancel-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-order-cancel-request.d.ts +21 -0
- package/dist/generated/models/tasty-trade-order-cancel-request.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-order-cancel-request.js +21 -0
- package/dist/generated/models/tasty-trade-order-cancel-request.js.map +1 -0
- package/dist/generated/models/tasty-trade-order-modify-request.d.ts +21 -0
- package/dist/generated/models/tasty-trade-order-modify-request.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-order-modify-request.js +21 -0
- package/dist/generated/models/tasty-trade-order-modify-request.js.map +1 -0
- package/dist/generated/models/tasty-trade-order-place-request.d.ts +24 -0
- package/dist/generated/models/tasty-trade-order-place-request.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-order-place-request.js +21 -0
- package/dist/generated/models/tasty-trade-order-place-request.js.map +1 -0
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.d.ts +55 -0
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.js +40 -0
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.d.ts +38 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.d.ts +55 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.d.ts.map +1 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.js +40 -0
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.js.map +1 -0
- package/dist/generated/models/test-webhook-response.d.ts +35 -0
- package/dist/generated/models/test-webhook-response.d.ts.map +1 -0
- package/dist/generated/models/test-webhook-response.js +16 -0
- package/dist/generated/models/test-webhook-response.js.map +1 -0
- package/dist/generated/models/timeinforce.d.ts +31 -0
- package/dist/generated/models/timeinforce.d.ts.map +1 -0
- package/dist/generated/models/timeinforce.js +16 -0
- package/dist/generated/models/timeinforce.js.map +1 -0
- package/dist/generated/models/token-data.d.ts +45 -0
- package/dist/generated/models/token-data.d.ts.map +1 -0
- package/dist/generated/models/token-data.js +16 -0
- package/dist/generated/models/token-data.js.map +1 -0
- package/dist/generated/models/token-response-data.d.ts +25 -0
- package/dist/generated/models/token-response-data.d.ts.map +1 -0
- package/dist/generated/models/token-response-data.js +16 -0
- package/dist/generated/models/token-response-data.js.map +1 -0
- package/dist/generated/models/trailing-stop-order-modify-query-params.d.ts +32 -0
- package/dist/generated/models/trailing-stop-order-modify-query-params.d.ts.map +1 -0
- package/dist/generated/models/trailing-stop-order-modify-query-params.js +21 -0
- package/dist/generated/models/trailing-stop-order-modify-query-params.js.map +1 -0
- package/dist/generated/models/user-broker-connections.d.ts +28 -0
- package/dist/generated/models/user-broker-connections.d.ts.map +1 -0
- package/dist/generated/models/user-broker-connections.js +16 -0
- package/dist/generated/models/user-broker-connections.js.map +1 -0
- package/dist/generated/models/validation-error-loc-inner.d.ts +14 -0
- package/dist/generated/models/validation-error-loc-inner.d.ts.map +1 -0
- package/dist/generated/models/validation-error-loc-inner.js +16 -0
- package/dist/generated/models/validation-error-loc-inner.js.map +1 -0
- package/dist/generated/models/validation-error.d.ts +18 -0
- package/dist/generated/models/validation-error.d.ts.map +1 -0
- package/dist/generated/models/validation-error.js +16 -0
- package/dist/generated/models/validation-error.js.map +1 -0
- package/dist/generated/portal/PortalUI.d.ts +28 -0
- package/dist/generated/portal/PortalUI.d.ts.map +1 -0
- package/dist/generated/portal/PortalUI.js +139 -0
- package/dist/generated/portal/PortalUI.js.map +1 -0
- package/dist/generated/utils/cache.d.ts +16 -0
- package/dist/generated/utils/cache.d.ts.map +1 -0
- package/dist/generated/utils/cache.js +56 -0
- package/dist/generated/utils/cache.js.map +1 -0
- package/dist/generated/utils/enum-coercion.d.ts +24 -0
- package/dist/generated/utils/enum-coercion.d.ts.map +1 -0
- package/dist/generated/utils/enum-coercion.js +49 -0
- package/dist/generated/utils/enum-coercion.js.map +1 -0
- package/dist/generated/utils/error-handling.d.ts +35 -0
- package/dist/generated/utils/error-handling.d.ts.map +1 -0
- package/dist/generated/utils/error-handling.js +75 -0
- package/dist/generated/utils/error-handling.js.map +1 -0
- package/dist/generated/utils/events.d.ts +18 -0
- package/dist/generated/utils/events.d.ts.map +1 -0
- package/dist/generated/utils/events.js +60 -0
- package/dist/generated/utils/events.js.map +1 -0
- package/dist/generated/utils/index.d.ts +17 -0
- package/dist/generated/utils/index.d.ts.map +1 -0
- package/dist/generated/utils/index.js +33 -0
- package/dist/generated/utils/index.js.map +1 -0
- package/dist/generated/utils/interceptors.d.ts +40 -0
- package/dist/generated/utils/interceptors.d.ts.map +1 -0
- package/dist/generated/utils/interceptors.js +76 -0
- package/dist/generated/utils/interceptors.js.map +1 -0
- package/dist/generated/utils/logger.d.ts +21 -0
- package/dist/generated/utils/logger.d.ts.map +1 -0
- package/dist/generated/utils/logger.js +292 -0
- package/dist/generated/utils/logger.js.map +1 -0
- package/dist/generated/utils/plain-object.d.ts +22 -0
- package/dist/generated/utils/plain-object.d.ts.map +1 -0
- package/dist/generated/utils/plain-object.js +51 -0
- package/dist/generated/utils/plain-object.js.map +1 -0
- package/dist/generated/utils/request-id.d.ts +10 -0
- package/dist/generated/utils/request-id.d.ts.map +1 -0
- package/dist/generated/utils/request-id.js +24 -0
- package/dist/generated/utils/request-id.js.map +1 -0
- package/dist/generated/utils/retry.d.ts +20 -0
- package/dist/generated/utils/retry.d.ts.map +1 -0
- package/dist/generated/utils/retry.js +83 -0
- package/dist/generated/utils/retry.js.map +1 -0
- package/dist/generated/utils/url-utils.d.ts +23 -0
- package/dist/generated/utils/url-utils.d.ts.map +1 -0
- package/dist/generated/utils/url-utils.js +64 -0
- package/dist/generated/utils/url-utils.js.map +1 -0
- package/dist/generated/utils/validation.d.ts +20 -0
- package/dist/generated/utils/validation.d.ts.map +1 -0
- package/dist/generated/utils/validation.js +103 -0
- package/dist/generated/utils/validation.js.map +1 -0
- package/dist/generated/wrappers/brokers.d.ts +1107 -0
- package/dist/generated/wrappers/brokers.d.ts.map +1 -0
- package/dist/generated/wrappers/brokers.js +3076 -0
- package/dist/generated/wrappers/brokers.js.map +1 -0
- package/dist/generated/wrappers/index.d.ts +8 -0
- package/dist/generated/wrappers/index.d.ts.map +1 -0
- package/dist/generated/wrappers/index.js +13 -0
- package/dist/generated/wrappers/index.js.map +1 -0
- package/dist/generated/wrappers/market-data.d.ts +37 -0
- package/dist/generated/wrappers/market-data.d.ts.map +1 -0
- package/dist/generated/wrappers/market-data.js +134 -0
- package/dist/generated/wrappers/market-data.js.map +1 -0
- package/dist/generated/wrappers/session.d.ts +394 -0
- package/dist/generated/wrappers/session.d.ts.map +1 -0
- package/dist/generated/wrappers/session.js +1232 -0
- package/dist/generated/wrappers/session.js.map +1 -0
- package/dist/index.d.ts +39 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +555 -94
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +552 -95
- package/dist/index.mjs.map +1 -1
- package/dist/types/core/client/ApiClient.d.ts +2 -0
- package/dist/types/core/client/FinaticConnect.d.ts +2 -0
- package/dist/types/core/portal/PortalUI.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/lib/logger/index.d.ts +2 -0
- package/dist/types/lib/logger/logger.d.ts +4 -0
- package/dist/types/lib/logger/logger.types.d.ts +28 -0
- package/dist/types/mocks/MockApiClient.d.ts +2 -0
- package/package.json +1 -1
- package/src/core/client/ApiClient.ts +45 -19
- package/src/core/client/FinaticConnect.ts +79 -30
- package/src/core/portal/PortalUI.ts +58 -23
- package/src/index.ts +1 -0
- package/src/lib/logger/index.ts +3 -0
- package/src/lib/logger/logger.ts +332 -0
- package/src/lib/logger/logger.types.ts +34 -0
- package/src/mocks/MockApiClient.ts +43 -17
- package/src/types/common/pagination.ts +31 -5
- package/src/utils/brokerUtils.ts +21 -2
- package/src/utils/events.ts +13 -1
- package/src/utils/themeUtils.ts +23 -4
package/dist/index.js
CHANGED
|
@@ -2,9 +2,287 @@
|
|
|
2
2
|
|
|
3
3
|
var uuid = require('uuid');
|
|
4
4
|
|
|
5
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
|
+
const LOG_LEVEL_ORDER = {
|
|
7
|
+
error: 0,
|
|
8
|
+
warn: 1,
|
|
9
|
+
info: 2,
|
|
10
|
+
debug: 3,
|
|
11
|
+
};
|
|
12
|
+
const LEVEL_TO_CONSOLE = {
|
|
13
|
+
error: 'error',
|
|
14
|
+
warn: 'warn',
|
|
15
|
+
info: 'info',
|
|
16
|
+
debug: 'debug',
|
|
17
|
+
};
|
|
18
|
+
const DEFAULT_LOGGER_NAME = 'FinaticLogger';
|
|
19
|
+
const parseLogLevel = (value, fallback) => {
|
|
20
|
+
if (typeof value !== 'string') {
|
|
21
|
+
return fallback;
|
|
22
|
+
}
|
|
23
|
+
const normalized = value.toLowerCase().trim();
|
|
24
|
+
if (normalized === 'silent' || normalized === 'error' || normalized === 'warn' || normalized === 'info' || normalized === 'debug') {
|
|
25
|
+
return normalized;
|
|
26
|
+
}
|
|
27
|
+
return fallback;
|
|
28
|
+
};
|
|
29
|
+
const parseVerbosity = (value, fallback) => {
|
|
30
|
+
if (typeof value !== 'string' && typeof value !== 'number') {
|
|
31
|
+
return fallback;
|
|
32
|
+
}
|
|
33
|
+
const numeric = typeof value === 'number' ? value : Number.parseInt(value, 10);
|
|
34
|
+
if (Number.isNaN(numeric)) {
|
|
35
|
+
return fallback;
|
|
36
|
+
}
|
|
37
|
+
if (numeric <= 0) {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
if (numeric >= 3) {
|
|
41
|
+
return 3;
|
|
42
|
+
}
|
|
43
|
+
return numeric;
|
|
44
|
+
};
|
|
45
|
+
const resolveEnv = (key) => {
|
|
46
|
+
try {
|
|
47
|
+
if (typeof process !== 'undefined' && process.env && typeof process.env[key] === 'string') {
|
|
48
|
+
return process.env[key];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
56
|
+
const metaEnv = typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)) }) !== 'undefined' ? undefined : undefined;
|
|
57
|
+
if (metaEnv && typeof metaEnv[key] === 'string') {
|
|
58
|
+
return metaEnv[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// ignore
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
if (typeof globalThis !== 'undefined') {
|
|
66
|
+
const value = globalThis[key];
|
|
67
|
+
if (typeof value === 'string') {
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// ignore
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
};
|
|
77
|
+
const resolveDefaultLogLevel = (explicitLevel) => {
|
|
78
|
+
if (explicitLevel) {
|
|
79
|
+
return explicitLevel;
|
|
80
|
+
}
|
|
81
|
+
const envLevel = resolveEnv('FINATIC_LOG_LEVEL') ||
|
|
82
|
+
resolveEnv('VITE_FINATIC_LOG_LEVEL') ||
|
|
83
|
+
resolveEnv('NEXT_PUBLIC_FINATIC_LOG_LEVEL') ||
|
|
84
|
+
resolveEnv('NEXT_FINATIC_LOG_LEVEL') ||
|
|
85
|
+
resolveEnv('REACT_APP_FINATIC_LOG_LEVEL') ||
|
|
86
|
+
resolveEnv('NUXT_PUBLIC_FINATIC_LOG_LEVEL') ||
|
|
87
|
+
resolveEnv('NX_FINATIC_LOG_LEVEL');
|
|
88
|
+
if (envLevel) {
|
|
89
|
+
return parseLogLevel(envLevel, 'silent');
|
|
90
|
+
}
|
|
91
|
+
return 'silent';
|
|
92
|
+
};
|
|
93
|
+
const resolveVerbosity = () => {
|
|
94
|
+
const envVerbosity = resolveEnv('FINATIC_LOG_VERBOSITY') ||
|
|
95
|
+
resolveEnv('VITE_FINATIC_LOG_VERBOSITY') ||
|
|
96
|
+
resolveEnv('NEXT_PUBLIC_FINATIC_LOG_VERBOSITY') ||
|
|
97
|
+
resolveEnv('NEXT_FINATIC_LOG_VERBOSITY') ||
|
|
98
|
+
resolveEnv('REACT_APP_FINATIC_LOG_VERBOSITY') ||
|
|
99
|
+
resolveEnv('NUXT_PUBLIC_FINATIC_LOG_VERBOSITY') ||
|
|
100
|
+
resolveEnv('NX_FINATIC_LOG_VERBOSITY');
|
|
101
|
+
if (envVerbosity) {
|
|
102
|
+
return parseVerbosity(envVerbosity, 1);
|
|
103
|
+
}
|
|
104
|
+
return 1;
|
|
105
|
+
};
|
|
106
|
+
const resolveBaseMetadata = () => {
|
|
107
|
+
const base = {
|
|
108
|
+
timestamp: new Date().toISOString(),
|
|
109
|
+
};
|
|
110
|
+
try {
|
|
111
|
+
if (typeof globalThis !== 'undefined') {
|
|
112
|
+
if (typeof globalThis.location !== 'undefined') {
|
|
113
|
+
base.host = globalThis.location.hostname;
|
|
114
|
+
}
|
|
115
|
+
if (typeof globalThis.navigator !== 'undefined') {
|
|
116
|
+
base.user_agent = globalThis.navigator.userAgent;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// ignore
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
if (typeof process !== 'undefined') {
|
|
125
|
+
base.pid = process.pid;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// ignore
|
|
130
|
+
}
|
|
131
|
+
return base;
|
|
132
|
+
};
|
|
133
|
+
const normalizeError = (error) => {
|
|
134
|
+
if (!error) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
if (error instanceof Error) {
|
|
138
|
+
return {
|
|
139
|
+
type: error.name,
|
|
140
|
+
message: error.message,
|
|
141
|
+
stacktrace: error.stack,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (typeof error === 'object') {
|
|
145
|
+
return { ...error };
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
type: 'Error',
|
|
149
|
+
message: String(error),
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
const shouldLog = (requestedLevel, currentLevel) => {
|
|
153
|
+
if (currentLevel === 'silent') {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const currentOrder = LOG_LEVEL_ORDER[currentLevel];
|
|
157
|
+
const requestedOrder = LOG_LEVEL_ORDER[requestedLevel];
|
|
158
|
+
return requestedOrder <= currentOrder;
|
|
159
|
+
};
|
|
160
|
+
const buildPayload = (name, level, message, defaultMetadata, extra, verbosity) => {
|
|
161
|
+
const payload = {
|
|
162
|
+
timestamp: new Date().toISOString(),
|
|
163
|
+
message,
|
|
164
|
+
};
|
|
165
|
+
if (verbosity >= 1 && extra) {
|
|
166
|
+
if (extra.module) {
|
|
167
|
+
payload.module = extra.module;
|
|
168
|
+
}
|
|
169
|
+
if (extra.function) {
|
|
170
|
+
payload.function = extra.function;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (verbosity >= 2) {
|
|
174
|
+
if (extra?.duration_ms !== undefined) {
|
|
175
|
+
payload.duration_ms = extra.duration_ms;
|
|
176
|
+
}
|
|
177
|
+
if (extra?.event) {
|
|
178
|
+
payload.event = extra.event;
|
|
179
|
+
}
|
|
180
|
+
if (extra?.error) {
|
|
181
|
+
payload.error = normalizeError(extra.error);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (verbosity >= 3) {
|
|
185
|
+
payload.level = level.toUpperCase();
|
|
186
|
+
payload.name = name;
|
|
187
|
+
const baseMetadata = resolveBaseMetadata();
|
|
188
|
+
const mergedMetadata = {
|
|
189
|
+
...baseMetadata,
|
|
190
|
+
...(defaultMetadata || {}),
|
|
191
|
+
...(extra?.metadata || {}),
|
|
192
|
+
};
|
|
193
|
+
if (Object.keys(mergedMetadata).length > 0) {
|
|
194
|
+
payload.metadata = mergedMetadata;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
const restKeys = ['module', 'function', 'event', 'duration_ms', 'error', 'metadata'];
|
|
198
|
+
if (extra) {
|
|
199
|
+
Object.entries(extra).forEach(([key, value]) => {
|
|
200
|
+
if (!restKeys.includes(key) && value !== undefined) {
|
|
201
|
+
payload[key] = value;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return payload;
|
|
206
|
+
};
|
|
207
|
+
const consoleWrite = (consoleLevel, name, level, message, payload) => {
|
|
208
|
+
if (typeof console === 'undefined' || typeof console[consoleLevel] !== 'function') {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const prefix = `${level.toUpperCase()}: ${name} || ${message}`;
|
|
212
|
+
console[consoleLevel](prefix, payload);
|
|
213
|
+
};
|
|
214
|
+
const setupLogger = (nameOrOptions, level, defaultMetadata) => {
|
|
215
|
+
const options = typeof nameOrOptions === 'string'
|
|
216
|
+
? {
|
|
217
|
+
name: nameOrOptions,
|
|
218
|
+
level,
|
|
219
|
+
defaultMetadata,
|
|
220
|
+
}
|
|
221
|
+
: nameOrOptions;
|
|
222
|
+
const loggerName = options.name || DEFAULT_LOGGER_NAME;
|
|
223
|
+
let currentLevel = resolveDefaultLogLevel(options.level);
|
|
224
|
+
const loggerDefaultMetadata = options.defaultMetadata;
|
|
225
|
+
const verbosity = resolveVerbosity();
|
|
226
|
+
const log = (requestedLevel, message, extra) => {
|
|
227
|
+
if (!shouldLog(requestedLevel, currentLevel)) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const payload = buildPayload(loggerName, requestedLevel, message, loggerDefaultMetadata, extra, verbosity);
|
|
231
|
+
consoleWrite(LEVEL_TO_CONSOLE[requestedLevel], loggerName, requestedLevel, message, payload);
|
|
232
|
+
};
|
|
233
|
+
return {
|
|
234
|
+
getLevel: () => currentLevel,
|
|
235
|
+
setLevel: (nextLevel) => {
|
|
236
|
+
currentLevel = nextLevel;
|
|
237
|
+
},
|
|
238
|
+
debug: (message, extra) => log('debug', message, extra),
|
|
239
|
+
info: (message, extra) => log('info', message, extra),
|
|
240
|
+
warn: (message, extra) => log('warn', message, extra),
|
|
241
|
+
error: (message, extra) => log('error', message, extra),
|
|
242
|
+
exception: (message, error, extra) => {
|
|
243
|
+
log('error', message, {
|
|
244
|
+
...extra,
|
|
245
|
+
error,
|
|
246
|
+
event: extra?.event || 'exception',
|
|
247
|
+
});
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
const buildLoggerExtra = (metadata) => ({
|
|
252
|
+
metadata,
|
|
253
|
+
});
|
|
254
|
+
const logStartEnd = (logger) => (fn) => async (...args) => {
|
|
255
|
+
const start = Date.now();
|
|
256
|
+
const functionName = fn.name || 'anonymous';
|
|
257
|
+
logger.debug('START', { module: 'logStartEnd', function: functionName, event: 'start' });
|
|
258
|
+
try {
|
|
259
|
+
const result = await fn(...args);
|
|
260
|
+
const duration = Date.now() - start;
|
|
261
|
+
logger.info('END', { module: 'logStartEnd', function: functionName, event: 'end', duration_ms: duration });
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
const duration = Date.now() - start;
|
|
266
|
+
logger.exception('EXCEPTION', error, {
|
|
267
|
+
module: 'logStartEnd',
|
|
268
|
+
function: functionName,
|
|
269
|
+
duration_ms: duration,
|
|
270
|
+
});
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
|
|
5
275
|
/**
|
|
6
276
|
* Pagination-related types and classes
|
|
7
277
|
*/
|
|
278
|
+
const paginationLogger = setupLogger('FinaticClientSDK.Pagination', undefined, {
|
|
279
|
+
codebase: 'FinaticClientSDK',
|
|
280
|
+
});
|
|
281
|
+
const buildPaginationExtra = (functionName, metadata) => ({
|
|
282
|
+
module: 'PaginatedResult',
|
|
283
|
+
function: functionName,
|
|
284
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
285
|
+
});
|
|
8
286
|
class PaginatedResult {
|
|
9
287
|
constructor(data, paginationInfo, navigationCallback) {
|
|
10
288
|
this.data = data;
|
|
@@ -36,7 +314,10 @@ class PaginatedResult {
|
|
|
36
314
|
return await this.navigationCallback(this.metadata.nextOffset, this.metadata.limit);
|
|
37
315
|
}
|
|
38
316
|
catch (error) {
|
|
39
|
-
|
|
317
|
+
paginationLogger.exception('Error fetching next page', error, buildPaginationExtra('nextPage', {
|
|
318
|
+
next_offset: this.metadata.nextOffset,
|
|
319
|
+
limit: this.metadata.limit,
|
|
320
|
+
}));
|
|
40
321
|
return null;
|
|
41
322
|
}
|
|
42
323
|
}
|
|
@@ -49,7 +330,10 @@ class PaginatedResult {
|
|
|
49
330
|
return await this.navigationCallback(previousOffset, this.metadata.limit);
|
|
50
331
|
}
|
|
51
332
|
catch (error) {
|
|
52
|
-
|
|
333
|
+
paginationLogger.exception('Error fetching previous page', error, buildPaginationExtra('previousPage', {
|
|
334
|
+
previous_offset: previousOffset,
|
|
335
|
+
limit: this.metadata.limit,
|
|
336
|
+
}));
|
|
53
337
|
return null;
|
|
54
338
|
}
|
|
55
339
|
}
|
|
@@ -62,7 +346,11 @@ class PaginatedResult {
|
|
|
62
346
|
return await this.navigationCallback(offset, this.metadata.limit);
|
|
63
347
|
}
|
|
64
348
|
catch (error) {
|
|
65
|
-
|
|
349
|
+
paginationLogger.exception('Error fetching page', error, buildPaginationExtra('goToPage', {
|
|
350
|
+
page_number: pageNumber,
|
|
351
|
+
offset,
|
|
352
|
+
limit: this.metadata.limit,
|
|
353
|
+
}));
|
|
66
354
|
return null;
|
|
67
355
|
}
|
|
68
356
|
}
|
|
@@ -74,7 +362,9 @@ class PaginatedResult {
|
|
|
74
362
|
return await this.navigationCallback(0, this.metadata.limit);
|
|
75
363
|
}
|
|
76
364
|
catch (error) {
|
|
77
|
-
|
|
365
|
+
paginationLogger.exception('Error fetching first page', error, buildPaginationExtra('firstPage', {
|
|
366
|
+
limit: this.metadata.limit,
|
|
367
|
+
}));
|
|
78
368
|
return null;
|
|
79
369
|
}
|
|
80
370
|
}
|
|
@@ -96,7 +386,9 @@ class PaginatedResult {
|
|
|
96
386
|
return await findLast(this);
|
|
97
387
|
}
|
|
98
388
|
catch (error) {
|
|
99
|
-
|
|
389
|
+
paginationLogger.exception('Error fetching last page', error, buildPaginationExtra('lastPage', {
|
|
390
|
+
limit: this.metadata.limit,
|
|
391
|
+
}));
|
|
100
392
|
return null;
|
|
101
393
|
}
|
|
102
394
|
}
|
|
@@ -207,6 +499,13 @@ class TradingNotEnabledError extends ApiError {
|
|
|
207
499
|
|
|
208
500
|
// Supabase import removed - SDK no longer depends on Supabase
|
|
209
501
|
class ApiClient {
|
|
502
|
+
buildLoggerExtra(functionName, metadata) {
|
|
503
|
+
return {
|
|
504
|
+
module: 'ApiClient',
|
|
505
|
+
function: functionName,
|
|
506
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
507
|
+
};
|
|
508
|
+
}
|
|
210
509
|
constructor(baseUrl, deviceInfo) {
|
|
211
510
|
this.currentSessionState = null;
|
|
212
511
|
this.currentSessionId = null;
|
|
@@ -215,6 +514,9 @@ class ApiClient {
|
|
|
215
514
|
// Session and company context
|
|
216
515
|
this.companyId = null;
|
|
217
516
|
this.csrfToken = null;
|
|
517
|
+
this.logger = setupLogger('FinaticClientSDK.ApiClient', undefined, {
|
|
518
|
+
codebase: 'FinaticClientSDK',
|
|
519
|
+
});
|
|
218
520
|
this.baseUrl = baseUrl;
|
|
219
521
|
this.deviceInfo = deviceInfo;
|
|
220
522
|
// Ensure baseUrl doesn't end with a slash
|
|
@@ -335,29 +637,28 @@ class ApiClient {
|
|
|
335
637
|
safariSafeHeaders[normalizedKey] = normalizedValue;
|
|
336
638
|
}
|
|
337
639
|
});
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
console.log('Session ID:', this.currentSessionId);
|
|
344
|
-
console.log('Company ID:', this.companyId);
|
|
345
|
-
console.log('CSRF Token:', this.csrfToken);
|
|
346
|
-
}
|
|
640
|
+
this.logger.debug('Dispatching API request', this.buildLoggerExtra('request', {
|
|
641
|
+
url: url.toString(),
|
|
642
|
+
method: options.method,
|
|
643
|
+
has_body: Boolean(options.body),
|
|
644
|
+
}));
|
|
347
645
|
const response = await fetch(url.toString(), {
|
|
348
646
|
method: options.method,
|
|
349
647
|
headers: safariSafeHeaders,
|
|
350
648
|
body: options.body ? JSON.stringify(options.body) : undefined,
|
|
351
649
|
});
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
console.log('Request was made with headers:', safariSafeHeaders);
|
|
357
|
-
}
|
|
650
|
+
this.logger.debug('Received API response', this.buildLoggerExtra('request', {
|
|
651
|
+
url: url.toString(),
|
|
652
|
+
status: response.status,
|
|
653
|
+
}));
|
|
358
654
|
if (!response.ok) {
|
|
359
655
|
const error = await response.json();
|
|
360
|
-
|
|
656
|
+
const apiError = this.handleError(response.status, error);
|
|
657
|
+
this.logger.exception('API request failed', apiError, this.buildLoggerExtra('request', {
|
|
658
|
+
url: url.toString(),
|
|
659
|
+
status: response.status,
|
|
660
|
+
}));
|
|
661
|
+
throw apiError;
|
|
361
662
|
}
|
|
362
663
|
const data = await response.json();
|
|
363
664
|
// Check if the response has a success field and it's false
|
|
@@ -368,11 +669,21 @@ class ApiClient {
|
|
|
368
669
|
// Add context that this is an order-related error
|
|
369
670
|
data._isOrderError = true;
|
|
370
671
|
}
|
|
371
|
-
|
|
672
|
+
const apiError = this.handleError(data.status_code || 500, data);
|
|
673
|
+
this.logger.exception('API response indicated failure', apiError, this.buildLoggerExtra('request', {
|
|
674
|
+
url: url.toString(),
|
|
675
|
+
status: data.status_code || 500,
|
|
676
|
+
}));
|
|
677
|
+
throw apiError;
|
|
372
678
|
}
|
|
373
679
|
// Check if the response has a status_code field indicating an error (4xx or 5xx)
|
|
374
680
|
if (data && typeof data === 'object' && 'status_code' in data && data.status_code >= 400) {
|
|
375
|
-
|
|
681
|
+
const apiError = this.handleError(data.status_code, data);
|
|
682
|
+
this.logger.exception('API status code error', apiError, this.buildLoggerExtra('request', {
|
|
683
|
+
url: url.toString(),
|
|
684
|
+
status: data.status_code,
|
|
685
|
+
}));
|
|
686
|
+
throw apiError;
|
|
376
687
|
}
|
|
377
688
|
// Check if the response has errors field with content
|
|
378
689
|
if (data &&
|
|
@@ -381,7 +692,12 @@ class ApiClient {
|
|
|
381
692
|
data.errors &&
|
|
382
693
|
Array.isArray(data.errors) &&
|
|
383
694
|
data.errors.length > 0) {
|
|
384
|
-
|
|
695
|
+
const apiError = this.handleError(data.status_code || 500, data);
|
|
696
|
+
this.logger.exception('API response contained errors', apiError, this.buildLoggerExtra('request', {
|
|
697
|
+
url: url.toString(),
|
|
698
|
+
status: data.status_code || 500,
|
|
699
|
+
}));
|
|
700
|
+
throw apiError;
|
|
385
701
|
}
|
|
386
702
|
return data;
|
|
387
703
|
}
|
|
@@ -1562,6 +1878,9 @@ class ApiClient {
|
|
|
1562
1878
|
}
|
|
1563
1879
|
}
|
|
1564
1880
|
|
|
1881
|
+
const eventsLogger = setupLogger('FinaticClientSDK.Events', undefined, {
|
|
1882
|
+
codebase: 'FinaticClientSDK',
|
|
1883
|
+
});
|
|
1565
1884
|
class EventEmitter {
|
|
1566
1885
|
constructor() {
|
|
1567
1886
|
this.events = new Map();
|
|
@@ -1591,7 +1910,13 @@ class EventEmitter {
|
|
|
1591
1910
|
callback(...args);
|
|
1592
1911
|
}
|
|
1593
1912
|
catch (error) {
|
|
1594
|
-
|
|
1913
|
+
eventsLogger.exception('Error in event handler', error, {
|
|
1914
|
+
module: 'EventEmitter',
|
|
1915
|
+
function: 'emit',
|
|
1916
|
+
...buildLoggerExtra({
|
|
1917
|
+
event_name: event,
|
|
1918
|
+
}),
|
|
1919
|
+
});
|
|
1595
1920
|
}
|
|
1596
1921
|
});
|
|
1597
1922
|
}
|
|
@@ -1612,6 +1937,9 @@ class EventEmitter {
|
|
|
1612
1937
|
}
|
|
1613
1938
|
}
|
|
1614
1939
|
|
|
1940
|
+
const portalLogger = setupLogger('FinaticClientSDK.PortalUI', undefined, {
|
|
1941
|
+
codebase: 'FinaticClientSDK',
|
|
1942
|
+
});
|
|
1615
1943
|
class PortalUI {
|
|
1616
1944
|
constructor(portalUrl) {
|
|
1617
1945
|
this.iframe = null;
|
|
@@ -1620,10 +1948,18 @@ class PortalUI {
|
|
|
1620
1948
|
this.sessionId = null;
|
|
1621
1949
|
this.portalOrigin = null;
|
|
1622
1950
|
this.originalBodyStyle = null;
|
|
1951
|
+
this.logger = portalLogger;
|
|
1623
1952
|
this.createContainer();
|
|
1624
1953
|
}
|
|
1954
|
+
buildLoggerExtra(functionName, metadata) {
|
|
1955
|
+
return {
|
|
1956
|
+
module: 'PortalUI',
|
|
1957
|
+
function: functionName,
|
|
1958
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
1959
|
+
};
|
|
1960
|
+
}
|
|
1625
1961
|
createContainer() {
|
|
1626
|
-
|
|
1962
|
+
this.logger.debug('Creating portal container and iframe', this.buildLoggerExtra('createContainer'));
|
|
1627
1963
|
this.container = document.createElement('div');
|
|
1628
1964
|
this.container.style.cssText = `
|
|
1629
1965
|
position: fixed;
|
|
@@ -1670,7 +2006,7 @@ class PortalUI {
|
|
|
1670
2006
|
this.iframe.contentDocument?.head.appendChild(meta);
|
|
1671
2007
|
this.container.appendChild(this.iframe);
|
|
1672
2008
|
document.body.appendChild(this.container);
|
|
1673
|
-
|
|
2009
|
+
this.logger.debug('Portal container and iframe created successfully', this.buildLoggerExtra('createContainer'));
|
|
1674
2010
|
}
|
|
1675
2011
|
/**
|
|
1676
2012
|
* Lock background scrolling by setting overflow: hidden on body
|
|
@@ -1684,7 +2020,7 @@ class PortalUI {
|
|
|
1684
2020
|
document.body.style.position = 'fixed';
|
|
1685
2021
|
document.body.style.width = '100%';
|
|
1686
2022
|
document.body.style.top = `-${window.scrollY}px`;
|
|
1687
|
-
|
|
2023
|
+
this.logger.debug('Background scroll locked', this.buildLoggerExtra('lockScroll'));
|
|
1688
2024
|
}
|
|
1689
2025
|
}
|
|
1690
2026
|
/**
|
|
@@ -1700,7 +2036,7 @@ class PortalUI {
|
|
|
1700
2036
|
document.body.style.top = '';
|
|
1701
2037
|
window.scrollTo(0, parseInt(scrollY || '0') * -1);
|
|
1702
2038
|
this.originalBodyStyle = null;
|
|
1703
|
-
|
|
2039
|
+
this.logger.debug('Background scroll unlocked', this.buildLoggerExtra('unlockScroll'));
|
|
1704
2040
|
}
|
|
1705
2041
|
}
|
|
1706
2042
|
show(url, sessionId, options = {}) {
|
|
@@ -1742,11 +2078,17 @@ class PortalUI {
|
|
|
1742
2078
|
handleMessage(event) {
|
|
1743
2079
|
// Verify origin matches the portal URL
|
|
1744
2080
|
if (!this.portalOrigin || event.origin !== this.portalOrigin) {
|
|
1745
|
-
|
|
2081
|
+
this.logger.warn('Received message from unauthorized origin', this.buildLoggerExtra('handleMessage', {
|
|
2082
|
+
received_origin: event.origin,
|
|
2083
|
+
expected_origin: this.portalOrigin || 'unknown',
|
|
2084
|
+
}));
|
|
1746
2085
|
return;
|
|
1747
2086
|
}
|
|
1748
2087
|
const { type, userId, access_token, refresh_token, error, height, data } = event.data;
|
|
1749
|
-
|
|
2088
|
+
this.logger.debug('Received portal message', this.buildLoggerExtra('handleMessage', {
|
|
2089
|
+
message_type: type,
|
|
2090
|
+
has_data: Boolean(data),
|
|
2091
|
+
}));
|
|
1750
2092
|
switch (type) {
|
|
1751
2093
|
case 'portal-success': {
|
|
1752
2094
|
// Handle both direct userId and data.userId formats
|
|
@@ -1784,36 +2126,50 @@ class PortalUI {
|
|
|
1784
2126
|
this.handleClose();
|
|
1785
2127
|
break;
|
|
1786
2128
|
default:
|
|
1787
|
-
|
|
2129
|
+
this.logger.warn('Received unhandled message type', this.buildLoggerExtra('handleMessage', {
|
|
2130
|
+
message_type: type,
|
|
2131
|
+
}));
|
|
1788
2132
|
}
|
|
1789
2133
|
}
|
|
1790
2134
|
handlePortalSuccess(userId, tokens) {
|
|
1791
2135
|
if (!userId) {
|
|
1792
|
-
|
|
2136
|
+
this.logger.error('Missing userId in portal-success message', this.buildLoggerExtra('handlePortalSuccess'));
|
|
1793
2137
|
return;
|
|
1794
2138
|
}
|
|
1795
|
-
|
|
2139
|
+
this.logger.info('Portal success - user connected', this.buildLoggerExtra('handlePortalSuccess', {
|
|
2140
|
+
user_id_present: Boolean(userId),
|
|
2141
|
+
tokens_provided: Boolean(tokens?.access_token && tokens?.refresh_token),
|
|
2142
|
+
}));
|
|
1796
2143
|
if (tokens?.access_token && tokens?.refresh_token) {
|
|
1797
|
-
|
|
2144
|
+
this.logger.debug('Tokens received for user', this.buildLoggerExtra('handlePortalSuccess', {
|
|
2145
|
+
tokens_provided: true,
|
|
2146
|
+
}));
|
|
1798
2147
|
}
|
|
1799
2148
|
// Pass userId to parent (SDK will handle tokens internally)
|
|
1800
2149
|
this.options?.onSuccess?.(userId, tokens);
|
|
1801
2150
|
}
|
|
1802
2151
|
handlePortalError(error) {
|
|
1803
|
-
|
|
2152
|
+
this.logger.error('Portal error received', this.buildLoggerExtra('handlePortalError', {
|
|
2153
|
+
error_message: error,
|
|
2154
|
+
}));
|
|
1804
2155
|
this.options?.onError?.(new Error(error || 'Unknown portal error'));
|
|
1805
2156
|
}
|
|
1806
2157
|
handlePortalClose() {
|
|
1807
|
-
|
|
2158
|
+
this.logger.info('Portal closed by user', this.buildLoggerExtra('handlePortalClose'));
|
|
1808
2159
|
this.options?.onClose?.();
|
|
1809
2160
|
this.hide();
|
|
1810
2161
|
}
|
|
1811
2162
|
handleGenericEvent(data) {
|
|
1812
2163
|
if (!data || !data.type) {
|
|
1813
|
-
|
|
2164
|
+
this.logger.warn('Invalid event data received', this.buildLoggerExtra('handleGenericEvent', {
|
|
2165
|
+
has_type: Boolean(data?.type),
|
|
2166
|
+
}));
|
|
1814
2167
|
return;
|
|
1815
2168
|
}
|
|
1816
|
-
|
|
2169
|
+
this.logger.debug('Generic event received', this.buildLoggerExtra('handleGenericEvent', {
|
|
2170
|
+
event_type: data.type,
|
|
2171
|
+
payload_present: Boolean(data.data),
|
|
2172
|
+
}));
|
|
1817
2173
|
// Emit the event to be handled by the SDK
|
|
1818
2174
|
// This will be implemented in FinaticConnect
|
|
1819
2175
|
if (this.options?.onEvent) {
|
|
@@ -1822,24 +2178,28 @@ class PortalUI {
|
|
|
1822
2178
|
}
|
|
1823
2179
|
handleSuccess(userId) {
|
|
1824
2180
|
if (!userId) {
|
|
1825
|
-
|
|
2181
|
+
this.logger.error('Missing required fields in success message', this.buildLoggerExtra('handleSuccess'));
|
|
1826
2182
|
return;
|
|
1827
2183
|
}
|
|
1828
2184
|
// Pass userId to parent
|
|
1829
2185
|
this.options?.onSuccess?.(userId);
|
|
1830
2186
|
}
|
|
1831
2187
|
handleError(error) {
|
|
1832
|
-
|
|
2188
|
+
this.logger.error('Received portal error message', this.buildLoggerExtra('handleError', {
|
|
2189
|
+
error_message: error,
|
|
2190
|
+
}));
|
|
1833
2191
|
this.options?.onError?.(new Error(error || 'Unknown error'));
|
|
1834
2192
|
}
|
|
1835
2193
|
handleClose() {
|
|
1836
|
-
|
|
2194
|
+
this.logger.debug('Received close message', this.buildLoggerExtra('handleClose'));
|
|
1837
2195
|
this.options?.onClose?.();
|
|
1838
2196
|
this.hide();
|
|
1839
2197
|
}
|
|
1840
2198
|
handleResize(height) {
|
|
1841
2199
|
if (height && this.iframe) {
|
|
1842
|
-
|
|
2200
|
+
this.logger.debug('Received resize message', this.buildLoggerExtra('handleResize', {
|
|
2201
|
+
height,
|
|
2202
|
+
}));
|
|
1843
2203
|
this.iframe.style.height = `${height}px`;
|
|
1844
2204
|
}
|
|
1845
2205
|
}
|
|
@@ -2667,11 +3027,21 @@ class MockDataProvider {
|
|
|
2667
3027
|
}
|
|
2668
3028
|
}
|
|
2669
3029
|
|
|
3030
|
+
const mockApiLogger = setupLogger('FinaticClientSDK.MockApiClient', undefined, {
|
|
3031
|
+
codebase: 'FinaticClientSDK',
|
|
3032
|
+
});
|
|
2670
3033
|
/**
|
|
2671
3034
|
* Mock API Client that implements the same interface as the real ApiClient
|
|
2672
3035
|
* but returns mock data instead of making HTTP requests
|
|
2673
3036
|
*/
|
|
2674
3037
|
class MockApiClient {
|
|
3038
|
+
buildLoggerExtra(functionName, metadata) {
|
|
3039
|
+
return {
|
|
3040
|
+
module: 'MockApiClient',
|
|
3041
|
+
function: functionName,
|
|
3042
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
3043
|
+
};
|
|
3044
|
+
}
|
|
2675
3045
|
constructor(baseUrl, deviceInfo, mockConfig) {
|
|
2676
3046
|
this.currentSessionState = null;
|
|
2677
3047
|
this.currentSessionId = null;
|
|
@@ -2683,16 +3053,21 @@ class MockApiClient {
|
|
|
2683
3053
|
// Session and company context
|
|
2684
3054
|
this.companyId = null;
|
|
2685
3055
|
this.csrfToken = null;
|
|
3056
|
+
this.logger = mockApiLogger;
|
|
2686
3057
|
this.baseUrl = baseUrl;
|
|
2687
3058
|
this.deviceInfo = deviceInfo;
|
|
2688
3059
|
this.mockApiOnly = mockConfig?.mockApiOnly || false;
|
|
2689
3060
|
this.mockDataProvider = new MockDataProvider(mockConfig);
|
|
2690
3061
|
// Log that mocks are being used
|
|
2691
3062
|
if (this.mockApiOnly) {
|
|
2692
|
-
|
|
3063
|
+
this.logger.info('Using mock API client (API only, real portal)', this.buildLoggerExtra('constructor', {
|
|
3064
|
+
mock_api_only: true,
|
|
3065
|
+
}));
|
|
2693
3066
|
}
|
|
2694
3067
|
else {
|
|
2695
|
-
|
|
3068
|
+
this.logger.info('Using mock API client', this.buildLoggerExtra('constructor', {
|
|
3069
|
+
mock_api_only: false,
|
|
3070
|
+
}));
|
|
2696
3071
|
}
|
|
2697
3072
|
}
|
|
2698
3073
|
/**
|
|
@@ -2886,14 +3261,12 @@ class MockApiClient {
|
|
|
2886
3261
|
async placeBrokerOrder(params, extras = {}, connection_id) {
|
|
2887
3262
|
await this.getValidAccessToken();
|
|
2888
3263
|
// Debug logging
|
|
2889
|
-
|
|
2890
|
-
params,
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
contextAccountNumber: this.tradingContext.accountNumber,
|
|
2896
|
-
});
|
|
3264
|
+
this.logger.debug('placeBrokerOrder parameters', this.buildLoggerExtra('placeBrokerOrder', {
|
|
3265
|
+
has_params_broker: Boolean(params.broker),
|
|
3266
|
+
has_context_broker: Boolean(this.tradingContext.broker),
|
|
3267
|
+
has_params_account: Boolean(params.accountNumber),
|
|
3268
|
+
has_context_account: Boolean(this.tradingContext.accountNumber),
|
|
3269
|
+
}));
|
|
2897
3270
|
const fullParams = {
|
|
2898
3271
|
broker: (params.broker || this.tradingContext.broker) ||
|
|
2899
3272
|
(() => {
|
|
@@ -2914,7 +3287,13 @@ class MockApiClient {
|
|
|
2914
3287
|
stopPrice: params.stopPrice,
|
|
2915
3288
|
order_id: params.order_id,
|
|
2916
3289
|
};
|
|
2917
|
-
|
|
3290
|
+
this.logger.debug('placeBrokerOrder normalized parameters', this.buildLoggerExtra('placeBrokerOrder', {
|
|
3291
|
+
broker: fullParams.broker,
|
|
3292
|
+
account_number_present: Boolean(fullParams.accountNumber),
|
|
3293
|
+
symbol: fullParams.symbol,
|
|
3294
|
+
order_type: fullParams.orderType,
|
|
3295
|
+
asset_type: fullParams.assetType,
|
|
3296
|
+
}));
|
|
2918
3297
|
return this.mockDataProvider.mockPlaceOrder(fullParams);
|
|
2919
3298
|
}
|
|
2920
3299
|
async cancelBrokerOrder(orderId, broker, extras = {}, connection_id) {
|
|
@@ -2952,14 +3331,18 @@ class MockApiClient {
|
|
|
2952
3331
|
this.tradingContext.accountId = undefined;
|
|
2953
3332
|
}
|
|
2954
3333
|
setAccount(accountNumber, accountId) {
|
|
2955
|
-
|
|
2956
|
-
accountNumber,
|
|
2957
|
-
accountId,
|
|
2958
|
-
|
|
2959
|
-
});
|
|
3334
|
+
this.logger.debug('setAccount invoked', this.buildLoggerExtra('setAccount', {
|
|
3335
|
+
account_number: accountNumber,
|
|
3336
|
+
account_id_present: Boolean(accountId),
|
|
3337
|
+
had_existing_account: Boolean(this.tradingContext.accountNumber),
|
|
3338
|
+
}));
|
|
2960
3339
|
this.tradingContext.accountNumber = accountNumber;
|
|
2961
3340
|
this.tradingContext.accountId = accountId;
|
|
2962
|
-
|
|
3341
|
+
this.logger.debug('setAccount updated context', this.buildLoggerExtra('setAccount', {
|
|
3342
|
+
broker: this.tradingContext.broker,
|
|
3343
|
+
account_number_present: Boolean(this.tradingContext.accountNumber),
|
|
3344
|
+
account_id_present: Boolean(this.tradingContext.accountId),
|
|
3345
|
+
}));
|
|
2963
3346
|
}
|
|
2964
3347
|
// Stock convenience methods
|
|
2965
3348
|
async placeStockMarketOrder(symbol, orderQty, action, broker, accountNumber, extras = {}) {
|
|
@@ -4741,6 +5124,14 @@ const portalThemePresets = {
|
|
|
4741
5124
|
stockAlgos: stockAlgosTheme,
|
|
4742
5125
|
};
|
|
4743
5126
|
|
|
5127
|
+
const themeLogger = setupLogger('FinaticClientSDK.ThemeUtils', undefined, {
|
|
5128
|
+
codebase: 'FinaticClientSDK',
|
|
5129
|
+
});
|
|
5130
|
+
const buildThemeExtra = (functionName, metadata) => ({
|
|
5131
|
+
module: 'ThemeUtils',
|
|
5132
|
+
function: functionName,
|
|
5133
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
5134
|
+
});
|
|
4744
5135
|
/**
|
|
4745
5136
|
* Generate a portal URL with theme parameters
|
|
4746
5137
|
* @param baseUrl The base portal URL
|
|
@@ -4766,7 +5157,10 @@ function generatePortalThemeURL(baseUrl, theme) {
|
|
|
4766
5157
|
return url.toString();
|
|
4767
5158
|
}
|
|
4768
5159
|
catch (error) {
|
|
4769
|
-
|
|
5160
|
+
themeLogger.exception('Failed to generate theme URL', error, buildThemeExtra('generatePortalThemeURL', {
|
|
5161
|
+
base_url: baseUrl,
|
|
5162
|
+
has_theme: Boolean(theme),
|
|
5163
|
+
}));
|
|
4770
5164
|
return baseUrl;
|
|
4771
5165
|
}
|
|
4772
5166
|
}
|
|
@@ -4795,7 +5189,10 @@ function appendThemeToURL(baseUrl, theme) {
|
|
|
4795
5189
|
return url.toString();
|
|
4796
5190
|
}
|
|
4797
5191
|
catch (error) {
|
|
4798
|
-
|
|
5192
|
+
themeLogger.exception('Failed to append theme to URL', error, buildThemeExtra('appendThemeToURL', {
|
|
5193
|
+
base_url: baseUrl,
|
|
5194
|
+
has_theme: Boolean(theme),
|
|
5195
|
+
}));
|
|
4799
5196
|
return baseUrl;
|
|
4800
5197
|
}
|
|
4801
5198
|
}
|
|
@@ -4850,7 +5247,7 @@ function validateCustomTheme(theme) {
|
|
|
4850
5247
|
return true;
|
|
4851
5248
|
}
|
|
4852
5249
|
catch (error) {
|
|
4853
|
-
|
|
5250
|
+
themeLogger.exception('Theme validation error', error, buildThemeExtra('validateCustomTheme'));
|
|
4854
5251
|
return false;
|
|
4855
5252
|
}
|
|
4856
5253
|
}
|
|
@@ -4863,7 +5260,9 @@ function validateCustomTheme(theme) {
|
|
|
4863
5260
|
function createCustomThemeFromPreset(preset, modifications) {
|
|
4864
5261
|
const baseTheme = getThemePreset(preset);
|
|
4865
5262
|
if (!baseTheme) {
|
|
4866
|
-
|
|
5263
|
+
themeLogger.warn('Preset theme not found', buildThemeExtra('createCustomThemeFromPreset', {
|
|
5264
|
+
preset,
|
|
5265
|
+
}));
|
|
4867
5266
|
return null;
|
|
4868
5267
|
}
|
|
4869
5268
|
return {
|
|
@@ -4875,6 +5274,14 @@ function createCustomThemeFromPreset(preset, modifications) {
|
|
|
4875
5274
|
/**
|
|
4876
5275
|
* Broker filtering utility functions
|
|
4877
5276
|
*/
|
|
5277
|
+
const brokerLogger = setupLogger('FinaticClientSDK.BrokerUtils', undefined, {
|
|
5278
|
+
codebase: 'FinaticClientSDK',
|
|
5279
|
+
});
|
|
5280
|
+
const buildBrokerExtra = (functionName, metadata) => ({
|
|
5281
|
+
module: 'BrokerUtils',
|
|
5282
|
+
function: functionName,
|
|
5283
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
5284
|
+
});
|
|
4878
5285
|
// Supported broker names and their corresponding IDs (including aliases)
|
|
4879
5286
|
const SUPPORTED_BROKERS = {
|
|
4880
5287
|
'alpaca': 'alpaca',
|
|
@@ -4917,7 +5324,9 @@ function appendBrokerFilterToURL(baseUrl, brokerNames) {
|
|
|
4917
5324
|
const url = new URL(baseUrl);
|
|
4918
5325
|
const { brokerIds, warnings } = convertBrokerNamesToIds(brokerNames);
|
|
4919
5326
|
// Log warnings for unsupported broker names
|
|
4920
|
-
warnings.forEach(warning =>
|
|
5327
|
+
warnings.forEach(warning => brokerLogger.warn('Unsupported broker name provided', buildBrokerExtra('appendBrokerFilterToURL', {
|
|
5328
|
+
warning,
|
|
5329
|
+
})));
|
|
4921
5330
|
// Only add broker filter if we have valid broker IDs
|
|
4922
5331
|
if (brokerIds.length > 0) {
|
|
4923
5332
|
const encodedBrokers = btoa(JSON.stringify(brokerIds));
|
|
@@ -4926,12 +5335,30 @@ function appendBrokerFilterToURL(baseUrl, brokerNames) {
|
|
|
4926
5335
|
return url.toString();
|
|
4927
5336
|
}
|
|
4928
5337
|
catch (error) {
|
|
4929
|
-
|
|
5338
|
+
brokerLogger.exception('Failed to append broker filter to URL', error, buildBrokerExtra('appendBrokerFilterToURL', {
|
|
5339
|
+
base_url: baseUrl,
|
|
5340
|
+
brokers_count: brokerNames?.length ?? 0,
|
|
5341
|
+
}));
|
|
4930
5342
|
return baseUrl;
|
|
4931
5343
|
}
|
|
4932
5344
|
}
|
|
4933
5345
|
|
|
5346
|
+
const finaticConnectLogger = setupLogger('FinaticClientSDK.FinaticConnect', undefined, {
|
|
5347
|
+
codebase: 'FinaticClientSDK',
|
|
5348
|
+
});
|
|
5349
|
+
const makeFinaticConnectExtra = (functionName, metadata) => ({
|
|
5350
|
+
module: 'FinaticConnect',
|
|
5351
|
+
function: functionName,
|
|
5352
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
5353
|
+
});
|
|
4934
5354
|
class FinaticConnect extends EventEmitter {
|
|
5355
|
+
buildLoggerExtra(functionName, metadata) {
|
|
5356
|
+
return {
|
|
5357
|
+
module: 'FinaticConnect',
|
|
5358
|
+
function: functionName,
|
|
5359
|
+
...(metadata ? buildLoggerExtra(metadata) : {}),
|
|
5360
|
+
};
|
|
5361
|
+
}
|
|
4935
5362
|
constructor(options, deviceInfo) {
|
|
4936
5363
|
super();
|
|
4937
5364
|
this.userToken = null;
|
|
@@ -4946,6 +5373,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
4946
5373
|
this.SESSION_VALIDATION_TIMEOUT = 1000 * 30; // 30 seconds
|
|
4947
5374
|
this.SESSION_REFRESH_BUFFER_HOURS = 16; // Refresh session at 16 hours
|
|
4948
5375
|
this.sessionStartTime = null;
|
|
5376
|
+
this.logger = finaticConnectLogger;
|
|
4949
5377
|
this.options = options;
|
|
4950
5378
|
this.baseUrl = options.baseUrl || 'https://api.finatic.dev';
|
|
4951
5379
|
this.apiClient = MockFactory.createApiClient(this.baseUrl, deviceInfo);
|
|
@@ -4998,7 +5426,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
4998
5426
|
async linkUserToSession(userId) {
|
|
4999
5427
|
try {
|
|
5000
5428
|
if (!this.sessionId) {
|
|
5001
|
-
|
|
5429
|
+
this.logger.error('No session ID available for user linking', this.buildLoggerExtra('linkUserToSession'));
|
|
5002
5430
|
return false;
|
|
5003
5431
|
}
|
|
5004
5432
|
// Call API endpoint to authenticate user with session
|
|
@@ -5010,14 +5438,20 @@ class FinaticConnect extends EventEmitter {
|
|
|
5010
5438
|
},
|
|
5011
5439
|
});
|
|
5012
5440
|
if (response.error) {
|
|
5013
|
-
|
|
5441
|
+
this.logger.error('Failed to link user to session', {
|
|
5442
|
+
...this.buildLoggerExtra('linkUserToSession', {
|
|
5443
|
+
session_id: this.sessionId,
|
|
5444
|
+
user_id: userId,
|
|
5445
|
+
}),
|
|
5446
|
+
error: response.error,
|
|
5447
|
+
});
|
|
5014
5448
|
return false;
|
|
5015
5449
|
}
|
|
5016
|
-
|
|
5450
|
+
this.logger.info('User linked to session successfully', this.buildLoggerExtra('linkUserToSession', { session_id: this.sessionId, user_id: userId }));
|
|
5017
5451
|
return true;
|
|
5018
5452
|
}
|
|
5019
5453
|
catch (error) {
|
|
5020
|
-
|
|
5454
|
+
this.logger.exception('Error linking user to session', error, this.buildLoggerExtra('linkUserToSession', { session_id: this.sessionId, user_id: userId }));
|
|
5021
5455
|
return false;
|
|
5022
5456
|
}
|
|
5023
5457
|
}
|
|
@@ -5162,7 +5596,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5162
5596
|
// Safari-specific fix: Clear instance if it exists but has no valid session
|
|
5163
5597
|
// This prevents stale instances from interfering with new requests
|
|
5164
5598
|
if (FinaticConnect.instance && !FinaticConnect.instance.sessionId) {
|
|
5165
|
-
|
|
5599
|
+
finaticConnectLogger.debug('Clearing stale instance for Safari compatibility', makeFinaticConnectExtra('init'));
|
|
5166
5600
|
FinaticConnect.instance = null;
|
|
5167
5601
|
}
|
|
5168
5602
|
if (!FinaticConnect.instance) {
|
|
@@ -5214,7 +5648,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5214
5648
|
FinaticConnect.instance.emit('success', normalizedUserId);
|
|
5215
5649
|
}
|
|
5216
5650
|
else {
|
|
5217
|
-
|
|
5651
|
+
finaticConnectLogger.warn('Failed to link user to session during initialization', makeFinaticConnectExtra('init', { user_id: normalizedUserId }));
|
|
5218
5652
|
}
|
|
5219
5653
|
}
|
|
5220
5654
|
catch (error) {
|
|
@@ -5244,7 +5678,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5244
5678
|
// Try to link user to session
|
|
5245
5679
|
const linked = await this.linkUserToSession(userId);
|
|
5246
5680
|
if (!linked) {
|
|
5247
|
-
|
|
5681
|
+
this.logger.warn('Failed to link user to session during initialization', this.buildLoggerExtra('initializeWithUser', { user_id: userId }));
|
|
5248
5682
|
// Don't throw error, just continue without authentication
|
|
5249
5683
|
return;
|
|
5250
5684
|
}
|
|
@@ -5332,7 +5766,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5332
5766
|
// Try to link user to session via API
|
|
5333
5767
|
const linked = await this.linkUserToSession(userId);
|
|
5334
5768
|
if (!linked) {
|
|
5335
|
-
|
|
5769
|
+
this.logger.warn('Failed to link user to session, continuing with authentication', this.buildLoggerExtra('openPortal.onSuccess', { user_id: userId }));
|
|
5336
5770
|
}
|
|
5337
5771
|
// Emit portal success event
|
|
5338
5772
|
this.emit('portal:success', userId);
|
|
@@ -5366,7 +5800,13 @@ class FinaticConnect extends EventEmitter {
|
|
|
5366
5800
|
options?.onClose?.();
|
|
5367
5801
|
},
|
|
5368
5802
|
onEvent: (type, data) => {
|
|
5369
|
-
|
|
5803
|
+
this.logger.debug('Portal event received', {
|
|
5804
|
+
...this.buildLoggerExtra('openPortal.onEvent', {
|
|
5805
|
+
event_type: type,
|
|
5806
|
+
payload_present: Boolean(data),
|
|
5807
|
+
}),
|
|
5808
|
+
event: 'portal-event',
|
|
5809
|
+
});
|
|
5370
5810
|
// Emit generic event
|
|
5371
5811
|
this.emit('event', type, data);
|
|
5372
5812
|
// Call the event callback
|
|
@@ -5877,7 +6317,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5877
6317
|
this.sessionKeepAliveInterval = setInterval(() => {
|
|
5878
6318
|
this.validateSessionKeepAlive();
|
|
5879
6319
|
}, this.SESSION_KEEP_ALIVE_INTERVAL);
|
|
5880
|
-
|
|
6320
|
+
this.logger.debug('Session keep-alive started', this.buildLoggerExtra('startSessionKeepAlive', { interval_ms: this.SESSION_KEEP_ALIVE_INTERVAL }));
|
|
5881
6321
|
}
|
|
5882
6322
|
/**
|
|
5883
6323
|
* Stop the session keep-alive mechanism
|
|
@@ -5886,7 +6326,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5886
6326
|
if (this.sessionKeepAliveInterval) {
|
|
5887
6327
|
clearInterval(this.sessionKeepAliveInterval);
|
|
5888
6328
|
this.sessionKeepAliveInterval = null;
|
|
5889
|
-
|
|
6329
|
+
this.logger.debug('Session keep-alive stopped', this.buildLoggerExtra('stopSessionKeepAlive'));
|
|
5890
6330
|
}
|
|
5891
6331
|
}
|
|
5892
6332
|
/**
|
|
@@ -5894,22 +6334,22 @@ class FinaticConnect extends EventEmitter {
|
|
|
5894
6334
|
*/
|
|
5895
6335
|
async validateSessionKeepAlive() {
|
|
5896
6336
|
if (!this.sessionId || !(await this.isAuthenticated())) {
|
|
5897
|
-
|
|
6337
|
+
this.logger.debug('Session keep-alive skipped - no active session', this.buildLoggerExtra('validateSessionKeepAlive'));
|
|
5898
6338
|
return;
|
|
5899
6339
|
}
|
|
5900
6340
|
try {
|
|
5901
|
-
|
|
6341
|
+
this.logger.debug('Validating session for keep-alive', this.buildLoggerExtra('validateSessionKeepAlive', { session_id: this.sessionId }));
|
|
5902
6342
|
// Check if we need to refresh the session (at 16 hours)
|
|
5903
6343
|
if (this.shouldRefreshSession()) {
|
|
5904
6344
|
await this.refreshSessionAutomatically();
|
|
5905
6345
|
return;
|
|
5906
6346
|
}
|
|
5907
6347
|
// Session keep-alive - assume session is active if we have a session ID
|
|
5908
|
-
|
|
6348
|
+
this.logger.debug('Session keep-alive successful', this.buildLoggerExtra('validateSessionKeepAlive', { session_id: this.sessionId }));
|
|
5909
6349
|
this.currentSessionState = 'active';
|
|
5910
6350
|
}
|
|
5911
6351
|
catch (error) {
|
|
5912
|
-
|
|
6352
|
+
this.logger.exception('Session keep-alive error', error, this.buildLoggerExtra('validateSessionKeepAlive', { session_id: this.sessionId }));
|
|
5913
6353
|
// Don't throw errors during keep-alive - just log them
|
|
5914
6354
|
}
|
|
5915
6355
|
}
|
|
@@ -5923,12 +6363,16 @@ class FinaticConnect extends EventEmitter {
|
|
|
5923
6363
|
const sessionAgeHours = (Date.now() - this.sessionStartTime) / (1000 * 60 * 60);
|
|
5924
6364
|
const hoursUntilRefresh = this.SESSION_REFRESH_BUFFER_HOURS - sessionAgeHours;
|
|
5925
6365
|
if (hoursUntilRefresh <= 0) {
|
|
5926
|
-
|
|
6366
|
+
this.logger.info('Session age threshold exceeded - triggering refresh', this.buildLoggerExtra('shouldRefreshSession', {
|
|
6367
|
+
session_age_hours: Number(sessionAgeHours.toFixed(1)),
|
|
6368
|
+
}));
|
|
5927
6369
|
return true;
|
|
5928
6370
|
}
|
|
5929
6371
|
// Log when refresh will occur (every 5 minutes during keep-alive)
|
|
5930
6372
|
if (hoursUntilRefresh <= 1) {
|
|
5931
|
-
|
|
6373
|
+
this.logger.debug('Session refresh scheduled', this.buildLoggerExtra('shouldRefreshSession', {
|
|
6374
|
+
hours_until_refresh: Number(hoursUntilRefresh.toFixed(1)),
|
|
6375
|
+
}));
|
|
5932
6376
|
}
|
|
5933
6377
|
return false;
|
|
5934
6378
|
}
|
|
@@ -5937,25 +6381,34 @@ class FinaticConnect extends EventEmitter {
|
|
|
5937
6381
|
*/
|
|
5938
6382
|
async refreshSessionAutomatically() {
|
|
5939
6383
|
if (!this.sessionId) {
|
|
5940
|
-
|
|
6384
|
+
this.logger.warn('Cannot refresh session - missing session ID', this.buildLoggerExtra('refreshSessionAutomatically'));
|
|
5941
6385
|
return;
|
|
5942
6386
|
}
|
|
5943
6387
|
try {
|
|
5944
|
-
|
|
6388
|
+
this.logger.info('Automatically refreshing session', this.buildLoggerExtra('refreshSessionAutomatically', {
|
|
6389
|
+
session_id: this.sessionId,
|
|
6390
|
+
}));
|
|
5945
6391
|
const response = await this.apiClient.refreshSession();
|
|
5946
6392
|
if (response.success) {
|
|
5947
|
-
|
|
5948
|
-
|
|
6393
|
+
this.logger.info('Session automatically refreshed successfully', this.buildLoggerExtra('refreshSessionAutomatically', {
|
|
6394
|
+
session_id: this.sessionId,
|
|
6395
|
+
status: response.response_data.status,
|
|
6396
|
+
expires_at: response.response_data.expires_at,
|
|
6397
|
+
}));
|
|
5949
6398
|
this.currentSessionState = response.response_data.status;
|
|
5950
6399
|
// Update session start time to prevent immediate re-refresh
|
|
5951
6400
|
this.sessionStartTime = Date.now();
|
|
5952
6401
|
}
|
|
5953
6402
|
else {
|
|
5954
|
-
|
|
6403
|
+
this.logger.warn('Automatic session refresh failed', this.buildLoggerExtra('refreshSessionAutomatically', {
|
|
6404
|
+
session_id: this.sessionId,
|
|
6405
|
+
}));
|
|
5955
6406
|
}
|
|
5956
6407
|
}
|
|
5957
6408
|
catch (error) {
|
|
5958
|
-
|
|
6409
|
+
this.logger.exception('Automatic session refresh error', error, this.buildLoggerExtra('refreshSessionAutomatically', {
|
|
6410
|
+
session_id: this.sessionId,
|
|
6411
|
+
}));
|
|
5959
6412
|
// Don't throw errors during automatic refresh - just log them
|
|
5960
6413
|
}
|
|
5961
6414
|
}
|
|
@@ -5975,7 +6428,9 @@ class FinaticConnect extends EventEmitter {
|
|
|
5975
6428
|
async handleVisibilityChange() {
|
|
5976
6429
|
// For 24-hour sessions, we don't want to complete sessions on visibility changes
|
|
5977
6430
|
// This prevents sessions from being closed when users switch tabs or apps
|
|
5978
|
-
|
|
6431
|
+
this.logger.debug('Page visibility changed', this.buildLoggerExtra('handleVisibilityChange', {
|
|
6432
|
+
visibility_state: document.visibilityState,
|
|
6433
|
+
}));
|
|
5979
6434
|
// Only pause keep-alive when hidden, but don't complete the session
|
|
5980
6435
|
if (document.visibilityState === 'hidden') {
|
|
5981
6436
|
this.stopSessionKeepAlive();
|
|
@@ -5997,7 +6452,7 @@ class FinaticConnect extends EventEmitter {
|
|
|
5997
6452
|
this.apiClient.isMockClient();
|
|
5998
6453
|
if (isMockMode) {
|
|
5999
6454
|
// Mock the completion response
|
|
6000
|
-
|
|
6455
|
+
this.logger.debug('Mock session completion', this.buildLoggerExtra('completeSession', { session_id: sessionId }));
|
|
6001
6456
|
return;
|
|
6002
6457
|
}
|
|
6003
6458
|
// Real API call
|
|
@@ -6008,15 +6463,18 @@ class FinaticConnect extends EventEmitter {
|
|
|
6008
6463
|
},
|
|
6009
6464
|
});
|
|
6010
6465
|
if (response.ok) {
|
|
6011
|
-
|
|
6466
|
+
this.logger.info('Session completed successfully', this.buildLoggerExtra('completeSession', { session_id: sessionId }));
|
|
6012
6467
|
}
|
|
6013
6468
|
else {
|
|
6014
|
-
|
|
6469
|
+
this.logger.warn('Failed to complete session', this.buildLoggerExtra('completeSession', {
|
|
6470
|
+
session_id: sessionId,
|
|
6471
|
+
response_status: response.status,
|
|
6472
|
+
}));
|
|
6015
6473
|
}
|
|
6016
6474
|
}
|
|
6017
6475
|
catch (error) {
|
|
6018
6476
|
// Silent failure - don't throw errors during cleanup
|
|
6019
|
-
|
|
6477
|
+
this.logger.exception('Session cleanup failed', error, this.buildLoggerExtra('completeSession', { session_id: sessionId }));
|
|
6020
6478
|
}
|
|
6021
6479
|
}
|
|
6022
6480
|
/**
|
|
@@ -6119,9 +6577,12 @@ exports.TokenError = TokenError;
|
|
|
6119
6577
|
exports.TradingNotEnabledError = TradingNotEnabledError;
|
|
6120
6578
|
exports.ValidationError = ValidationError;
|
|
6121
6579
|
exports.appendThemeToURL = appendThemeToURL;
|
|
6580
|
+
exports.buildLoggerExtra = buildLoggerExtra;
|
|
6122
6581
|
exports.createCustomThemeFromPreset = createCustomThemeFromPreset;
|
|
6123
6582
|
exports.generatePortalThemeURL = generatePortalThemeURL;
|
|
6124
6583
|
exports.getThemePreset = getThemePreset;
|
|
6584
|
+
exports.logStartEnd = logStartEnd;
|
|
6125
6585
|
exports.portalThemePresets = portalThemePresets;
|
|
6586
|
+
exports.setupLogger = setupLogger;
|
|
6126
6587
|
exports.validateCustomTheme = validateCustomTheme;
|
|
6127
6588
|
//# sourceMappingURL=index.js.map
|